用户需求:由于公司没有OA系统,但是又想对新建的供应商有一个审批的功能,以致可以很好的
对新供应商进行有效管理,收集供应商数据,审厂审批,部门经理审批等流程。
做法:客制Form界面,用户界面中录入供应商相关资料,然后workflow送审到相关人员,
最后部门主管审批时,系统调用api导入供应商
供应商导入api code如下:
procedure new_vendor_api(p_vendor_id number,p_flag out varchar2) is--供应商导入api
--新建供应商部分
p_api_version number;
p_init_msg_list varchar2(200);
p_commit varchar2(200);
p_validation_level number;
x_return_status varchar2(200);
x_msg_count number;
x_msg_data varchar2(200);
l_msg varchar2(200);
lr_vend apps.ap_vendor_pub_pkg.r_vendor_rec_type;
lr_ex_vend ap_suppliers%rowtype;
x_vendor_id number;
x_party_id number;
pin_copy_vendor_id number;
--新建供应商地点部分
l_vendor_site_rec ap_vendor_pub_pkg.r_vendor_site_rec_type;
lc_return_status VARCHAR2(10);
ln_msg_count NUMBER;
lc_msg_data VARCHAR2(1000);
ln_vendor_site_id NUMBER;
ln_party_site_id NUMBER;
ln_location_id NUMBER;
--新建联系人部分
l_vendor_contact_rec ap_vendor_pub_pkg.r_vendor_contact_rec_type;
l_return_status VARCHAR2(10);
l_msg_count NUMBER;
l_msg_data VARCHAR2(1000);
l_vendor_contact_id NUMBER;
l_per_party_id NUMBER;
l_rel_party_id NUMBER;
l_rel_id NUMBER;
l_org_contact_id NUMBER;
l_party_site_id NUMBER;
l_vendor jw_vendor_t%rowtype;
cursor ou1 is
select o.ou_id,o.vat_code
from jw_vendor_org_t o
where o.jw_vendor_id = p_vendor_id
and o.flag = 'Y';
begin
select * into l_vendor from jw_vendor_t t where t.jw_vendor_id = p_vendor_id;
fnd_global.apps_initialize(l_vendor.created_by,
50643,
201);
mo_global.init('SQLAP');
p_api_version := 1.0;
p_init_msg_list := fnd_api.g_true;
p_commit := fnd_api.g_true;
p_validation_level := fnd_api.g_valid_level_full;
lr_vend.hold_flag := null;
lr_vend.purchasing_hold_reason := null;
lr_vend.hold_by := null;
lr_vend.hold_date := null;
begin
if l_vendor.attribute9 is not null then
lr_vend.END_DATE_ACTIVE := sysdate + l_vendor.attribute9;--增加临时厂商的有效期天数
end if;
exception
when others then
null;
end;
lr_vend.vendor_id := null;
lr_vend.vendor_name := l_vendor.vendor_name; --供应商名字
lr_vend.start_date_active := sysdate;
ap_vendor_pub_pkg.create_vendor(p_api_version => p_api_version,
p_init_msg_list => p_init_msg_list,
p_commit => p_commit,
p_validation_level => p_validation_level,
x_return_status => x_return_status,
x_msg_count => x_msg_count,
x_msg_data => x_msg_data,
p_vendor_rec => lr_vend,
x_vendor_id => x_vendor_id,
x_party_id => x_party_id);
commit;
IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN --失败
p_flag := 'E';
else--成功后新建供应商地点
p_flag := 'Y';
for org1 in ou1 loop
l_vendor_site_rec.vendor_id := x_vendor_id;--vendor_id
l_vendor_site_rec.vendor_site_code := l_vendor.vendor_site_code;
l_vendor_site_rec.address_line1 := l_vendor.vendor_site_address;
--l_vendor_site_rec.city := 'New York';
l_vendor_site_rec.country := 'CN';
l_vendor_site_rec.org_id := org1.ou_id;
l_vendor_site_rec.terms_id := l_vendor.attribute1;--付款条件
l_vendor_site_rec.purchasing_site_flag :='Y';
l_vendor_site_rec.pay_site_flag :='Y';
l_vendor_site_rec.rfq_only_site_flag :='N';
l_vendor_site_rec.vat_code := org1.vat_code;
l_vendor_site_rec.payment_currenCY_code := l_vendor.attribute4;
l_vendor_site_rec.INVOICE_currenCY_code := l_vendor.attribute4;
pos_vendor_pub_pkg.create_vendor_site
(
-- ------------------------------
-- Input data elements
-- ------------------------------
p_vendor_site_rec => l_vendor_site_rec,
-- ---------------------------------
-- Output data elements
-- ---------------------------------
x_return_status => lc_return_status,
x_msg_count => ln_msg_count,
x_msg_data => lc_msg_data,
x_vendor_site_id => ln_vendor_site_id,
x_party_site_id => ln_party_site_id,
x_location_id => ln_location_id
);
commit;
IF (lc_return_status <> FND_API.G_RET_STS_SUCCESS) THEN --失败
p_flag :='E';
else
p_flag := 'Y';
end if;
end loop;
if p_flag = 'Y' then
if l_vendor.vendor_contact is not null then--有联系人时才调用此api
l_vendor_contact_rec.vendor_id := x_vendor_id;
-- l_vendor_contact_rec.org_id := org1.ou_id;
l_vendor_contact_rec.person_last_name := l_vendor.vendor_contact;
l_vendor_contact_rec.phone := l_vendor.vendor_contact_tel;
l_vendor_contact_rec.org_party_site_id := ln_party_site_id;
pos_vendor_pub_pkg.create_vendor_contact(
p_vendor_contact_rec => l_vendor_contact_rec,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
x_vendor_contact_id => l_vendor_contact_id,
x_per_party_id => l_per_party_id,
x_rel_party_id => l_rel_party_id,
x_rel_id => l_rel_id,
x_org_contact_id => l_org_contact_id,
x_party_site_id => l_party_site_id);
COMMIT;
IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
p_flag :='E';
else
p_flag := 'Y';
end if;
end if;
end if;
end if;
null;
end;
ps:以上api包括导入供应商名字,地点,联系人,没有银行等数据,系统版本R12.1.3