--定义接口表字段
create table CUX_INV_VENDOR_8MIMPORT
(
group_id NUMBER not null,
vendor_name VARCHAR2(360),
vendor_type VARCHAR2(30),
tax_reference VARCHAR2(30),
vendor_site_code VARCHAR2(80),
city VARCHAR2(80),
address VARCHAR2(360),
person_name VARCHAR2(240),
phone_number VARCHAR2(240),
email_address VARCHAR2(240),
bank_name VARCHAR2(240),
bank_branch_name VARCHAR2(240),
bank_account_num VARCHAR2(240),
bank_account_name VARCHAR2(240),
status_code VARCHAR2(1) default 'N' not null,
return_msg VARCHAR2(2400),
creation_date DATE,
attribute_category VARCHAR2(30),
attribute1 VARCHAR2(240),
attribute2 VARCHAR2(240),
attribute3 VARCHAR2(240),
attribute4 VARCHAR2(240),
attribute5 VARCHAR2(240),
attribute6 VARCHAR2(240),
attribute7 VARCHAR2(240),
attribute8 VARCHAR2(240),
attribute9 VARCHAR2(240),
attribute10 VARCHAR2(240),
attribute11 VARCHAR2(240),
attribute12 VARCHAR2(240),
attribute13 VARCHAR2(240),
attribute14 VARCHAR2(240),
attribute15 VARCHAR2(240)
)
CREATE OR REPLACE PACKAGE cux_inv_vendor_8mimport_pkg IS
/*===============================================
/*==================================================
* PROCEDURE NAME
* main
* DESCRIPTION:
*
* HISTORY:
* 1.00 2018-01-24 jin.he Creation
* ==================================================*/
PROCEDURE main(errbuf OUT VARCHAR2
,retcode OUT VARCHAR2);
END cux_inv_vendor_8mimport_pkg;
/
CREATE OR REPLACE PACKAGE BODY cux_inv_vendor_8mimport_pkg IS
/*===============================================
================================================*/
--GLOBAL VARIABLES
g_pkg_name CONSTANT VARCHAR2(30) := 'CUX_INV_VENDOR_8MIMPORT_PKG';
g_debug VARCHAR2(1) := nvl(fnd_profile.value('AFLOG_ENABLED')
,'N');
------------------------------------------------
--LOG
------------------------------------------------
PROCEDURE log(p_msg VARCHAR2) IS
BEGIN
-- IF g_debug = 'Y' THEN
cux_conc_utl.log_msg(p_msg);
-- END IF;
END log;
------------------------------------------------
--update_status
------------------------------------------------
PROCEDURE update_status(p_group_id IN NUMBER
,p_status_code IN VARCHAR2
,p_return_msg IN VARCHAR2) IS
--PRAGMA AUTONOMOUS_TRANSACTION;
l_count NUMBER;
BEGIN
SELECT COUNT(1)
INTO l_count
FROM cux_inv_vendor_8mimport t
WHERE t.return_msg LIKE ('%' || p_return_msg || '%')
AND t.group_id = p_group_id;
IF l_count = 0 THEN
UPDATE cux_inv_vendor_8mimport
SET status_code = p_status_code
,return_msg = substr(return_msg || ',' || p_return_msg
,2)
WHERE group_id = p_group_id;
--COMMIT;
END IF;
EXCEPTION
WHEN OTHERS THEN
log(dbms_utility.format_error_stack || ' ' || dbms_utility.format_error_backtrace);
END update_status;
FUNCTION get_category_id(p_structure_id NUMBER
,p_categ_name VARCHAR2) RETURN NUMBER IS
v_cate_id NUMBER;
BEGIN
SELECT mck.category_id
INTO v_cate_id
FROM mtl_categories_kfv mck
WHERE mck.concatenated_segments = p_categ_name
AND mck.structure_id = p_structure_id;
RETURN v_cate_id;
EXCEPTION
WHEN OTHERS THEN
RETURN - 1;
END get_category_id;
------------------------------------------------
--GET_LOOKUP_MEANING
------------------------------------------------
FUNCTION get_lookup_meaning(p_lookup_type IN VARCHAR2
,p_lookup_code IN VARCHAR2) RETURN VARCHAR2 IS
l_meaning VARCHAR2(240);
BEGIN
SELECT flv.meaning
INTO l_meaning
FROM fnd_lookup_values_vl flv
WHERE flv.lookup_type = p_lookup_type
AND flv.lookup_code = p_lookup_code
AND flv.enabled_flag = 'Y';
RETURN l_meaning;
EXCEPTION
WHEN no_data_found THEN
RETURN NULL;
WHEN OTHERS THEN
fnd_msg_pub.add_exc_msg(p_pkg_name => g_pkg_name
,p_procedure_name => 'GET_LOOKUP_MEANING'
,p_error_text => p_lookup_code || substrb(SQLERRM
,1
,240));
RAISE fnd_api.g_exc_error;
END get_lookup_meaning;
PROCEDURE create_vendor(p_group_id IN NUMBER
,p_vendor_name IN VARCHAR2
,p_vendor_type IN VARCHAR2
,p_tax_reference IN VARCHAR2
,x_vendor_id OUT NUMBER
,x_party_id OUT NUMBER) IS
l_vendor_rec ap_vendor_pub_pkg.r_vendor_rec_type;
l_return_status VARCHAR2(10);
l_msg_count NUMBER;
l_msg_data VARCHAR2(1000);
l_vendor_id NUMBER;
l_party_id NUMBER;
l_vendor_type_lookup_code VARCHAR2(30);
BEGIN
BEGIN
SELECT pov.vendor_id
,pov.party_id
INTO l_vendor_id
,l_party_id
FROM po_vendors pov
WHERE pov.vendor_name = p_vendor_name;
EXCEPTION
WHEN OTHERS THEN
l_vendor_id := NULL;
l_party_id := NULL;
END;
BEGIN
SELECT flv.lookup_code
INTO l_vendor_type_lookup_code
FROM fnd_lookup_values flv
WHERE flv.lookup_type = 'VENDOR TYPE'
AND flv.meaning = p_vendor_type
AND flv.language = 'ZHS'
AND flv.enabled_flag = 'Y';
EXCEPTION
WHEN OTHERS THEN
l_vendor_type_lookup_code := NULL;
END;
IF l_vendor_id IS NULL THEN
IF l_vendor_type_lookup_code IS NULL THEN
update_status(p_group_id => p_group_id
,p_status_code => 'E'
,p_return_msg => '供应商类型无效');
ELSE
l_vendor_rec.vendor_name := p_vendor_name;
l_vendor_rec.vendor_name_alt := p_vendor_name;
l_vendor_rec.tax_reference := p_tax_reference;
l_vendor_rec.vendor_type_lookup_code := l_vendor_type_lookup_code;
l_vendor_rec.start_date_active := SYSDATE - 1;
pos_vendor_pub_pkg.create_vendor(p_vendor_rec => l_vendor_rec
,x_return_status => l_return_status
,x_msg_count => l_msg_count
,x_msg_data => l_msg_data
,x_vendor_id => l_vendor_id
,x_party_id => l_party_id);
x_vendor_id := l_vendor_id;
x_party_id := l_party_id;
COMMIT;
END IF;
ELSE
x_vendor_id := l_vendor_id;
x_party_id := l_party_id;
END IF;
END create_vendor;
/* ---------------------------------------------------------------------------------
create_vendor_site
------------------------------------------------------------------*/
PROCEDURE create_vendor_site(p_vendor_id IN NUMBER
,p_vendor_site_code IN VARCHAR2
,p_address IN VARCHAR2
,x_vendor_site_id OUT NUMBER) IS
l_vendor_site_rec ap_vendor_pub_pkg.r_vendor_site_rec_type;
l_return_status VARCHAR2(10);
l_msg_count NUMBER;
l_msg_data VARCHAR2(1000);
l_party_site_id NUMBER;
l_location_id NUMBER;
CURSOR cur_main IS
SELECT hr.organization_id
FROM hr_operating_units hr;
BEGIN
FOR rec IN cur_main LOOP
l_vendor_site_rec.vendor_id := p_vendor_id;
l_vendor_site_rec.vendor_site_code := p_vendor_site_code;
l_vendor_site_rec.address_line1 := p_address;
l_vendor_site_rec.purchasing_site_flag := 'Y';
l_vendor_site_rec.pay_site_flag := 'Y';
l_vendor_site_rec.country := 'CN';
l_vendor_site_rec.org_id := rec.organization_id; --是否所有
pos_vendor_pub_pkg.create_vendor_site(p_vendor_site_rec => l_vendor_site_rec
,x_return_status => l_return_status
,x_msg_count => l_msg_count
,x_msg_data => l_msg_data
,x_vendor_site_id => x_vendor_site_id
,x_party_site_id => l_party_site_id
,x_location_id => l_location_id);
END LOOP;
COMMIT;
END create_vendor_site;
/* --------------------------------------------------------------------------------
create_vendor_contact
------------------------------------------------------------------*/
PROCEDURE create_vendor_contact(p_vendor_id IN NUMBER
,p_person_name IN VARCHAR2
,p_phone_number IN VARCHAR2
,p_email_address IN VARCHAR2
,x_org_contact_id OUT NUMBER) IS
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_party_site_id NUMBER;
BEGIN
l_vendor_contact_rec.vendor_id := p_vendor_id;
l_vendor_contact_rec.person_last_name := p_person_name;
l_vendor_contact_rec.phone := p_phone_number;
l_vendor_contact_rec.email_address := p_email_address;
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 => x_org_contact_id
,x_party_site_id => l_party_site_id);
END create_vendor_contact;
PROCEDURE create_ext_bank(p_bank_name IN VARCHAR2
,x_bank_id OUT NUMBER) IS
v_error_reason VARCHAR2(2000);
v_msg_data VARCHAR2(1000);
v_msg_count NUMBER;
v_return_status VARCHAR2(100);
v_extbank_rec_type iby_ext_bankacct_pub.extbank_rec_type;
x_response iby_fndcpt_common_pub.result_rec_type;
BEGIN
BEGIN
SELECT iv.bank_party_id
INTO x_bank_id
FROM iby_ext_banks_v iv
WHERE iv.bank_name = p_bank_name;
EXCEPTION
WHEN OTHERS THEN
x_bank_id := NULL;
END;
IF x_bank_id IS NULL THEN
v_error_reason := NULL;
v_return_status := NULL;
v_msg_count := NULL;
v_msg_data := NULL;
v_extbank_rec_type.object_version_number := 1.0;
v_extbank_rec_type.bank_name := p_bank_name;
v_extbank_rec_type.institution_type := 'BANK';
v_extbank_rec_type.country_code := 'CN';
iby_ext_bankacct_pub.create_ext_bank(p_api_version => 1.0
,p_init_msg_list => fnd_api.g_true
,p_ext_bank_rec => v_extbank_rec_type
,x_bank_id => x_bank_id
,x_return_status => v_return_status
,x_msg_count => v_msg_count
,x_msg_data => v_msg_data
,x_response => x_response);
IF v_return_status <> fnd_api.g_ret_sts_success THEN
IF v_msg_count >= 1 THEN
FOR i IN 1 .. v_msg_count LOOP
IF v_error_reason IS NULL THEN
v_error_reason := substr(fnd_msg_pub.get(p_encoded => fnd_api.g_false)
,1
,255);
ELSE
v_error_reason := v_error_reason || ' ,' || substr(fnd_msg_pub.get(p_encoded => fnd_api.g_false)
,1
,255);
END IF;
log('BANK API ERROR-' || v_error_reason);
END LOOP;
END IF;
END IF;
END IF;
END create_ext_bank;
PROCEDURE create_ext_bank_branch(p_branch_name IN VARCHAR2
,p_bank_id IN NUMBER
,x_branch_id OUT NUMBER) IS
p_api_version NUMBER := 1.0;
p_init_msg_list VARCHAR2(1) := 'F';
x_return_status VARCHAR2(2000);
x_msg_count NUMBER(5);
x_msg_data VARCHAR2(2000);
x_response iby_fndcpt_common_pub.result_rec_type;
p_ext_bank_branch_rec iby_ext_bankacct_pub.extbankbranch_rec_type;
p_count NUMBER;
BEGIN
BEGIN
SELECT iv.branch_party_id
INTO x_branch_id
FROM iby_ext_bank_branches_v iv
WHERE iv.bank_branch_name = p_branch_name
AND iv.bank_party_id = p_bank_id;
EXCEPTION
WHEN OTHERS THEN
x_branch_id := NULL;
END;
IF x_branch_id IS NULL THEN
p_ext_bank_branch_rec.bch_object_version_number := 1.0;
p_ext_bank_branch_rec.branch_name := p_branch_name;
p_ext_bank_branch_rec.branch_type := 'ABA';
p_ext_bank_branch_rec.bank_party_id := p_bank_id;
iby_ext_bankacct_pub.create_ext_bank_branch(p_api_version => p_api_version
,p_init_msg_list => p_init_msg_list
,p_ext_bank_branch_rec => p_ext_bank_branch_rec
,x_branch_id => x_branch_id
,x_return_status => x_return_status
,x_msg_count => x_msg_count
,x_msg_data => x_msg_data
,x_response => x_response);
IF x_msg_count = 1 THEN
log('x_msg_data ' || x_msg_data);
ELSIF x_msg_count > 1 THEN
LOOP
p_count := p_count + 1;
x_msg_data := fnd_msg_pub.get(fnd_msg_pub.g_next
,fnd_api.g_false);
IF x_msg_data IS NULL THEN
EXIT;
END IF;
log('Message' || p_count || ' ---' || x_msg_data);
END LOOP;
END IF;
END IF;
END create_ext_bank_branch;
PROCEDURE create_ext_bank_acct(p_bank_account_name IN VARCHAR2
,p_bank_account_num IN VARCHAR2
,p_party_id IN NUMBER
,p_bank_id IN NUMBER
,p_bank_branch_id IN NUMBER
,x_acct_id OUT NUMBER) IS
p_api_version NUMBER := 1.0;
p_init_msg_list VARCHAR2(1) := 'F';
x_return_status VARCHAR2(2000);
x_msg_count NUMBER(5);
x_msg_data VARCHAR2(2000);
x_response iby_fndcpt_common_pub.result_rec_type;
p_ext_bank_acct_rec iby_ext_bankacct_pub.extbankacct_rec_type;
p_count NUMBER;
BEGIN
p_ext_bank_acct_rec.object_version_number := 1.0;
p_ext_bank_acct_rec.acct_owner_party_id := p_party_id;
p_ext_bank_acct_rec.bank_account_name := p_bank_account_name;
p_ext_bank_acct_rec.bank_account_num := p_bank_account_num;
p_ext_bank_acct_rec.alternate_acct_name := p_bank_account_name;
p_ext_bank_acct_rec.bank_id := p_bank_id;
p_ext_bank_acct_rec.branch_id := p_bank_branch_id;
p_ext_bank_acct_rec.start_date := SYSDATE;
p_ext_bank_acct_rec.country_code := 'CN';
p_ext_bank_acct_rec.currency := 'CNY';
p_ext_bank_acct_rec.foreign_payment_use_flag := 'Y';
p_ext_bank_acct_rec.payment_factor_flag := 'N';
iby_ext_bankacct_pub.create_ext_bank_acct(p_api_version => p_api_version
,p_init_msg_list => p_init_msg_list
,p_ext_bank_acct_rec => p_ext_bank_acct_rec
,x_acct_id => x_acct_id
,x_return_status => x_return_status
,x_msg_count => x_msg_count
,x_msg_data => x_msg_data
,x_response => x_response);
IF x_msg_count = 1 THEN
log('x_msg_data ' || x_msg_data);
ELSIF x_msg_count > 1 THEN
LOOP
p_count := p_count + 1;
x_msg_data := fnd_msg_pub.get(fnd_msg_pub.g_next
,fnd_api.g_false);
IF x_msg_data IS NULL THEN
EXIT;
END IF;
log('Message' || p_count || ' ---' || x_msg_data);
END LOOP;
END IF;
END create_ext_bank_acct;
PROCEDURE set_payee_instr_assignment(p_bank_account_id IN NUMBER
,p_party_id IN NUMBER) IS
p_payee iby_disbursement_setup_pub.payeecontext_rec_type;
p_assignment_attribs iby_fndcpt_setup_pub.pmtinstrassignment_rec_type;
x_response iby_fndcpt_common_pub.result_rec_type;
x_return_status VARCHAR2(10);
x_msg_count NUMBER;
x_assign_id NUMBER;
x_msg_data VARCHAR2(2000);
BEGIN
p_assignment_attribs.instrument.instrument_type := 'BANKACCOUNT';
p_assignment_attribs.instrument.instrument_id := p_bank_account_id;
p_payee.party_id := p_party_id;
p_payee.payment_function := 'PAYABLES_DISB';
iby_disbursement_setup_pub.set_payee_instr_assignment(p_api_version => 1.0
,p_init_msg_list => fnd_api.g_true
,p_commit => fnd_api.g_false
,x_return_status => x_return_status
,x_msg_count => x_msg_count
,x_msg_data => x_msg_data
,p_payee => p_payee
,p_assignment_attribs => p_assignment_attribs
,x_assign_id => x_assign_id
,x_response => x_response);
IF x_return_status <> fnd_api.g_ret_sts_success THEN
IF x_msg_count >= 1 THEN
FOR i IN 1 .. x_msg_count LOOP
IF x_msg_data IS NULL THEN
x_msg_data := substr(fnd_msg_pub.get(p_encoded => fnd_api.g_false)
,1
,255);
ELSE
x_msg_data := x_msg_data || ' ,' || substr(fnd_msg_pub.get(p_encoded => fnd_api.g_false)
,1
,255);
END IF;
log('BANK API ERROR-' || x_msg_data);
END LOOP;
END IF;
END IF;
END set_payee_instr_assignment;
------------------------------------------------
--PROCESS_REQUEST
------------------------------------------------
PROCEDURE process_request(p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false
,p_commit IN VARCHAR2 DEFAULT fnd_api.g_false
,x_return_status OUT NOCOPY VARCHAR2
,x_msg_count OUT NOCOPY NUMBER
,x_msg_data OUT NOCOPY VARCHAR2) IS
l_api_version NUMBER := 1;
l_api_name VARCHAR2(30) := 'PROCESS_REQUEST';
l_savepoint_name VARCHAR2(50) := NULL;
l_party_id NUMBER;
l_vendor_id NUMBER;
l_bank_id NUMBER;
l_branch_id NUMBER;
l_acct_id NUMBER;
l_vendor_site_id NUMBER;
l_vendor_site_count NUMBER;
l_org_contact_id NUMBER;
l_count NUMBER;
l_org_contact_count NUMBER;
CURSOR cur_main IS
SELECT group_id
,vendor_name
,vendor_type
,tax_reference
,vendor_site_code
,city
,address
,person_name
,phone_number
,email_address
,bank_name
,bank_branch_name
,bank_account_num
,bank_account_name
,status_code
,return_msg
,creation_date
FROM cux_inv_vendor_8mimport
WHERE status_code = 'N';
BEGIN
x_return_status := cux_api.start_activity(p_pkg_name => g_pkg_name
,p_api_name => l_api_name
,p_savepoint_name => l_savepoint_name
,p_init_msg_list => p_init_msg_list
,p_api_version => l_api_version);
IF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
RAISE fnd_api.g_exc_unexpected_error;
ELSIF (x_return_status = fnd_api.g_ret_sts_error) THEN
RAISE fnd_api.g_exc_error;
END IF;
FOR rec IN cur_main LOOP
--创建供应商
create_vendor(p_group_id => rec.group_id
,p_vendor_name => rec.vendor_name
,p_vendor_type => rec.vendor_type
,p_tax_reference => rec.tax_reference
,x_vendor_id => l_vendor_id
,x_party_id => l_party_id);
IF l_vendor_id IS NOT NULL THEN
log('创建供应商成功');
ELSE
log('创建供应商失败');
END IF;
IF l_vendor_id IS NOT NULL THEN
--创建供应商地点
create_vendor_site(p_vendor_id => l_vendor_id
,p_vendor_site_code => rec.vendor_site_code
,p_address => rec.address
,x_vendor_site_id => l_vendor_site_id);
SELECT COUNT(pvs.vendor_site_id)
INTO l_vendor_site_count
FROM po_vendor_sites_all pvs
,hr_operating_units hr
WHERE pvs.vendor_id = l_vendor_id
AND pvs.org_id = hr.organization_id;
IF l_vendor_site_count > 0 THEN
log('创建供应商地点成功');
ELSE
log('创建供应商地点失败');
update_status(p_group_id => rec.group_id
,p_status_code => 'E'
,p_return_msg => '创建供应商地点失败');
END IF;
IF l_vendor_site_count > 0 THEN
--创建地点联系人
create_vendor_contact(p_vendor_id => l_vendor_id
,p_person_name => rec.person_name
,p_phone_number => rec.phone_number
,p_email_address => rec.email_address
,x_org_contact_id => l_org_contact_id);
BEGIN
SELECT COUNT(1)
INTO l_org_contact_count
FROM hz_relationships hzr
WHERE hzr.relationship_type = 'CONTACT'
AND hzr.relationship_code = 'CONTACT_OF'
AND hzr.subject_type = 'PERSON'
AND hzr.object_type = 'ORGANIZATION'
AND hzr.object_id = l_party_id;
END;
IF l_org_contact_count > 0 THEN
log('创建创建地点联系人成功');
ELSE
log('创建创建地点联系人失败');
update_status(p_group_id => rec.group_id
,p_status_code => 'E'
,p_return_msg => '创建创建地点联系人失败');
END IF;
IF l_org_contact_count > 0 THEN
--创建银行
create_ext_bank(p_bank_name => rec.bank_name
,x_bank_id => l_bank_id);
IF l_bank_id IS NOT NULL THEN
log('创建银行成功');
ELSE
log('创建银行失败');
update_status(p_group_id => rec.group_id
,p_status_code => 'E'
,p_return_msg => '创建银行失败');
END IF;
IF l_bank_id IS NOT NULL THEN
--创建支行
create_ext_bank_branch(p_branch_name => rec.bank_branch_name
,p_bank_id => l_bank_id
,x_branch_id => l_branch_id);
IF l_branch_id IS NOT NULL THEN
log('创建支行成功');
ELSE
log('创建支行失败');
update_status(p_group_id => rec.group_id
,p_status_code => 'E'
,p_return_msg => '创建支行失败');
END IF;
IF l_branch_id IS NOT NULL THEN
--创建银行账户
create_ext_bank_acct(p_bank_account_name => rec.bank_account_name
,p_bank_account_num => rec.bank_account_num
,p_party_id => l_party_id
,p_bank_id => l_bank_id
,p_bank_branch_id => l_branch_id
,x_acct_id => l_acct_id);
IF l_acct_id IS NOT NULL THEN
log('创建银行账户成功');
ELSE
log('创建银行账户失败');
update_status(p_group_id => rec.group_id
,p_status_code => 'E'
,p_return_msg => '创建银行账户失败');
END IF;
IF l_acct_id IS NOT NULL THEN
--分配账户到供应商
set_payee_instr_assignment(p_bank_account_id => l_acct_id
,p_party_id => l_party_id);
SELECT COUNT(1)
INTO l_count
FROM iby_pmt_instr_uses_all t
WHERE t.instrument_id = l_acct_id;
IF l_count > 0 THEN
log('分配账户到供应商成功');
update_status(p_group_id => rec.group_id
,p_status_code => 'Y'
,p_return_msg => '成功');
ELSE
log('分配账户到供应商失败');
update_status(p_group_id => rec.group_id
,p_status_code => 'E'
,p_return_msg => '分配账户到供应商失败');
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END IF;
END LOOP;
x_return_status := cux_api.end_activity(p_pkg_name => g_pkg_name
,p_api_name => l_api_name
,p_commit => p_commit
,x_msg_count => x_msg_count
,x_msg_data => x_msg_data);
EXCEPTION
WHEN fnd_api.g_exc_error THEN
cux_conc_utl.log_msg(dbms_utility.format_error_stack || ' ' || dbms_utility.format_error_backtrace);
x_return_status := cux_api.handle_exceptions(p_pkg_name => g_pkg_name
,p_api_name => l_api_name
,p_exc_name => cux_api.g_exc_name_error
,x_msg_count => x_msg_count
,x_msg_data => x_msg_data);
WHEN fnd_api.g_exc_unexpected_error THEN
cux_conc_utl.log_msg(dbms_utility.format_error_stack || ' ' || dbms_utility.format_error_backtrace);
x_return_status := cux_api.handle_exceptions(p_pkg_name => g_pkg_name
,p_api_name => l_api_name
,p_exc_name => cux_api.g_exc_name_unexp
,x_msg_count => x_msg_count
,x_msg_data => x_msg_data);
WHEN OTHERS THEN
cux_conc_utl.log_msg(dbms_utility.format_error_stack || ' ' || dbms_utility.format_error_backtrace);
x_return_status := cux_api.handle_exceptions(p_pkg_name => g_pkg_name
,p_api_name => l_api_name
,p_exc_name => cux_api.g_exc_name_others
,x_msg_count => x_msg_count
,x_msg_data => x_msg_data);
END process_request;
------------------------------------------------
--MAIN
------------------------------------------------
PROCEDURE main(errbuf OUT VARCHAR2
,retcode OUT VARCHAR2) IS
l_return_status VARCHAR2(30);
l_msg_data VARCHAR2(2000);
l_msg_count NUMBER;
BEGIN
retcode := '0';
-- concurrent header log
cux_conc_utl.log_header;
--Call process_request
process_request(p_init_msg_list => fnd_api.g_true
,p_commit => fnd_api.g_false
,x_return_status => l_return_status
,x_msg_count => l_msg_count
,x_msg_data => l_msg_data);
IF l_return_status = fnd_api.g_ret_sts_error THEN
RAISE fnd_api.g_exc_error;
ELSIF l_return_status = fnd_api.g_ret_sts_unexp_error THEN
RAISE fnd_api.g_exc_unexpected_error;
END IF;
cux_conc_utl.log_footer;
EXCEPTION
WHEN fnd_api.g_exc_error THEN
cux_conc_utl.log_message_list;
retcode := '1';
fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false
,p_count => l_msg_count
,p_data => l_msg_data);
IF l_msg_count > 1 THEN
l_msg_data := fnd_msg_pub.get_detail(p_msg_index => fnd_msg_pub.g_first
,p_encoded => fnd_api.g_false);
END IF;
errbuf := l_msg_data;
WHEN fnd_api.g_exc_unexpected_error THEN
cux_conc_utl.log_message_list;
retcode := '2';
fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false
,p_count => l_msg_count
,p_data => l_msg_data);
IF l_msg_count > 1 THEN
l_msg_data := fnd_msg_pub.get_detail(p_msg_index => fnd_msg_pub.g_first
,p_encoded => fnd_api.g_false);
END IF;
errbuf := l_msg_data;
WHEN OTHERS THEN
fnd_msg_pub.add_exc_msg(p_pkg_name => g_pkg_name
,p_procedure_name => 'MAIN'
,p_error_text => substrb(SQLERRM
,1
,240));
cux_conc_utl.log_message_list;
retcode := '2';
errbuf := SQLERRM;
END main;
END cux_inv_vendor_8mimport_pkg;
/