api to create customer bank account in r12
In this post , We will discuss about the api to create customer bank account in r12. With the help of this API we can do customer bank accounts conversion. We can say Customer Bank accounts are the External Bank accounts because we are creating for our customers. Here in case , I am assuming we have create the Bank and Branches in the system and I will be create the customer bank account in this post. Here below is the script using api to create customer bank account in r12.
Sample Script of api to create customer bank account in r12
DECLARE
x_bank_rec iby_ext_bankacct_pub.extbank_rec_type;
x_bank_id NUMBER;
x_return_status VARCHAR2 (10);
x_msg_count NUMBER;
x_msg_data VARCHAR2 (256);
x_response_rec iby_fndcpt_common_pub.result_rec_type;
x_bank_branch_rec iby_ext_bankacct_pub.extbankbranch_rec_type;
x_branch_id NUMBER;
x_acct_id NUMBER;
x_bank_acct_rec iby_ext_bankacct_pub.extbankacct_rec_type;
p_ext_payee_tab iby_disbursement_setup_pub.external_payee_tab_type;
x_ext_payee_id_tab iby_disbursement_setup_pub.ext_payee_id_tab_type;
x_ext_payee_status_tab iby_disbursement_setup_pub.ext_payee_create_tab_type;
l_ext_payee_rec iby_disbursement_setup_pub.external_payee_rec_type;
l_ext_payee_id_rec_type iby_disbursement_setup_pub.ext_payee_id_rec_type;
p_payee iby_disbursement_setup_pub.payeecontext_rec_type;
p_assignment_attribs iby_fndcpt_setup_pub.pmtinstrassignment_rec_type;
p_instrument iby_fndcpt_setup_pub.pmtinstrument_rec_type;
x_assign_id NUMBER;
v_bank_party_id NUMBER;
v_branch_party_id NUMBER;
v_vendor_id NUMBER;
v_vendor_site_id NUMBER;
v_party_site_id NUMBER;
V_EXT_BANK_ACCOUNT_ID NUMBER;
v_bank_creation_flag VARCHAR2 (40);
v_error_flag VARCHAR2 (40);
v_error_message VARCHAR2 (4000);
v_party_id number;
v_TERRITORY_CODE VARCHAR2(400);
x_joint_owner_id number;
CURSOR supplier_bank
IS
SELECT ROWID, xrs.*
FROM XXAP_SUPP_BANK_ACCOUNT_STG xrs
WHERE processed_flag = 'N';
BEGIN
DBMS_OUTPUT.put_line ('Start of procedure.');
fnd_global.apps_initialize (fnd_global.user_id,
fnd_global.resp_id,
fnd_global.resp_appl_id
);
DBMS_OUTPUT.put_line ('Procedure initializad.');
FOR i IN supplier_bank
LOOP
v_bank_creation_flag := 'N';
v_error_flag := 'N';
v_error_message := NULL;
v_bank_party_id:=NULL;
V_branch_party_id:=NULL;
v_ext_bank_account_id:=NULL;
v_vendor_id:=NULL;
v_party_id:=NULL;
v_vendor_site_id:=NULL;
v_party_site_id:=NULL;
v_TERRITORY_CODE:=NULL;
begin select TERRITORY_CODE into v_TERRITORY_CODE from fnd_territories
where UPPER(TERRITORY_CODE)=UPPER(i.COUNTRY);
exception when others then
V_ERROR_FLAG:='Y';
V_ERROR_MESSAGE:=V_ERROR_MESSAGE||'Bank country not exsist';
end;
BEGIN
SELECT bank_party_id
INTO v_bank_party_id
FROM ce_banks_v
WHERE UPPER(bank_name)= UPPER(i.bank_name)
and upper(HOME_COUNTRY)=UPPER(I.COUNTRY)
AND ROWNUM=1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error_flag := 'Y';
v_error_message := 'BANK IS NOT EXIST IN THE SYSTEM';
END;
BEGIN
SELECT branch_party_id
INTO v_branch_party_id
FROM ce_bank_branches_v
where UPPER(BANK_BRANCH_NAME)=UPPER(I.BRANCH_NAME)
AND UPPER(bank_name)=UPPER(I.BANK_NAME)
AND UPPER(BANK_HOME_COUNTRY)=UPPER(I.COUNTRY)
AND ROWNUM=1;
EXCEPTION
WHEN OTHERS
THEN
v_error_flag := 'Y';
v_error_message :=
v_error_message || 'BRANCH IS NOT EXIST IN THE SYSTEM';
END;
BEGIN
SELECT ext_bank_account_id
INTO v_ext_bank_account_id
FROM iby_ext_bank_accounts
WHERE bank_id = v_bank_party_id
AND branch_id = v_branch_party_id
AND bank_account_num = i.bank_account_number
AND UPPER(bank_account_name) = UPPER(i.bank_account_name);
EXCEPTION
WHEN no_data_found
THEN
v_ext_bank_account_id:=null;
when others then
v_error_flag := 'Y';
v_error_message :=
v_error_message || 'ERROR IN THE SYSTEM BANK ACCOUNT NUMBER FETCH';
END;
BEGIN
SELECT vendor_id
INTO v_vendor_id
FROM po_vendors
WHERE upper(vendor_name) = upper(i.vendor_name)
and segment1=I.ATTRIBUTE1;
EXCEPTION
WHEN OTHERS
THEN
v_error_flag := 'Y';
v_error_message :=
v_error_message || 'VENDOR NOT EXIST IN THE SYSTEM';
END;
BEGIN
SELECT party_id
INTO v_party_id
FROM po_vendors
WHERE upper(vendor_name) =upper(i.vendor_name)
and segment1=I.ATTRIBUTE1;
EXCEPTION
WHEN OTHERS
THEN
v_error_flag := 'Y';
v_error_message :=
v_error_message || 'VENDOR NOT EXIST IN THE SYSTEM';
END;
IF i.vendor_site_code IS NOT NULL THEN
BEGIN
SELECT vendor_site_id,party_site_id
INTO v_vendor_site_id,v_party_site_id
FROM ap_supplier_sites_all
WHERE UPPER(vendor_site_code) = UPPER(i.vendor_site_code)
AND ORG_ID=p_operating_unit
AND vendor_id = v_vendor_id;
EXCEPTION
WHEN OTHERS
THEN
v_error_flag := 'Y';
v_error_message :=
v_error_message || 'VENDOR SITE NOT EXIST IN THE SYSTEM';
END;
END IF;
IF v_error_flag = 'N' AND v_ext_bank_account_id IS NULL
THEN
x_bank_acct_rec.country_code := I.COUNTRY ;
x_bank_acct_rec.branch_id := v_branch_party_id;
x_bank_acct_rec.bank_id := v_bank_party_id;
x_bank_acct_rec.acct_owner_party_id := v_party_id;
--supplier party id
x_bank_acct_rec.iban := i.iban;
x_bank_acct_rec.currency := i.currency;
x_bank_acct_rec.bank_account_name := i.bank_account_name;
x_bank_acct_rec.bank_account_num := i.bank_account_number;
x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
iby_ext_bankacct_pub.create_ext_bank_acct
(p_api_version => 1.0,
p_init_msg_list => fnd_api.g_true,
p_ext_bank_acct_rec => x_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_rec
);
IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('External bank account created.');
DBMS_OUTPUT.put_line ('x_acct_id' || x_acct_id);
DBMS_OUTPUT.put_line ('x_return_status' || x_return_status);
DBMS_OUTPUT.put_line ('x_msg_count.' || x_msg_count);
DBMS_OUTPUT.put_line ('x_msg_data.' || x_msg_data);
ELSE
DBMS_OUTPUT.put_line
( 'Creation of BANK ACCCOUNT failed:'
|| x_msg_data );
ROLLBACK;
v_error_flag := 'Y';
v_error_message :=
v_error_message || 'Creation of BANK ACCCOUNT failed:'
|| x_msg_data;
END IF;
l_ext_payee_rec.payee_party_site_id := v_party_site_id;
l_ext_payee_rec.payee_party_id := v_party_id;
l_ext_payee_rec.payment_function := 'PAYABLES_DISB';
IF i.vendor_site_code IS NOT NULL THEN
l_ext_payee_rec.payer_org_id := p_operating_unit;
l_ext_payee_rec.payer_org_type := 'OPERATING_UNIT';
ELSE
l_ext_payee_rec.payer_org_id := NULL;
l_ext_payee_rec.payer_org_type := NULL;
END IF;
l_ext_payee_rec.exclusive_pay_flag := 'N';
l_ext_payee_rec.default_pmt_method :=
NVL ('CHECK', i.payment_method);
l_ext_payee_rec.supplier_site_id := v_vendor_site_id;
x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
p_ext_payee_tab (0) := l_ext_payee_rec;
iby_disbursement_setup_pub.create_external_payee
(p_api_version => 1.0,
p_init_msg_list => fnd_api.g_true,
p_ext_payee_tab => p_ext_payee_tab,
x_return_status => x_return_status,
x_msg_count => x_msg_count,
x_msg_data => x_msg_data,
x_ext_payee_id_tab => x_ext_payee_id_tab,
x_ext_payee_status_tab => x_ext_payee_status_tab
);
IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('External Payee created.');
DBMS_OUTPUT.put_line ('x_return_status: ' || x_return_status
);
DBMS_OUTPUT.put_line ('x_msg_count. ' || x_msg_count);
DBMS_OUTPUT.put_line ('x_msg_data. ' || x_msg_data);
ELSE
DBMS_OUTPUT.put_line ( 'Creation of payee failed:'
|| x_msg_data );
v_error_message :=
v_error_message || 'Creation of payee failed:'
|| x_msg_data;
ROLLBACK;
v_error_flag := 'Y';
END IF;
p_payee.supplier_site_id := v_vendor_site_id;
p_payee.party_id :=v_party_id;
p_payee.party_site_id := v_party_site_id;
p_payee.payment_function := 'PAYABLES_DISB';
IF i.vendor_site_code IS NOT NULL THEN
p_payee.org_id := p_operating_unit;
p_payee.org_type := 'OPERATING_UNIT';
ELSE
p_payee.org_id := NULL;
p_payee.org_type := NULL;
END IF;
l_ext_payee_id_rec_type := x_ext_payee_id_tab (0);
p_instrument.instrument_id := x_acct_id;
p_instrument.instrument_type := 'BANKACCOUNT';
p_assignment_attribs.priority := 1;
p_assignment_attribs.instrument := p_instrument;
x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
x_response_rec := NULL;
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_true,
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_rec
);
IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('Payee_Instr_Assignment.');
DBMS_OUTPUT.put_line ('x_assign_id' || x_assign_id);
DBMS_OUTPUT.put_line ('x_return_status' || x_return_status);
DBMS_OUTPUT.put_line ('x_msg_count.' || x_msg_count);
DBMS_OUTPUT.put_line ('x_msg_data.' || x_msg_data);
ELSE
DBMS_OUTPUT.put_line
( 'Creation of Payee_Instr_Assignment failed:'
|| x_msg_data );
v_error_message:=
v_error_message||'Creation of Payee_Instr_Assignment failed:'
|| x_msg_data;
ROLLBACK;
v_error_flag := 'Y';
END IF;
END IF;
IF v_error_flag = 'N' AND v_ext_bank_account_id IS NOT NULL
THEN
DBMS_OUTPUT.put_line ('CHECKING THAT VENDOR IS THE OWNER OF THIS ACCOUNT'||x_return_status);
BEGIN x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
x_response_rec := NULL;
IBY_EXT_BANKACCT_PUB.check_bank_acct_owner
(p_api_version => 1.0,
p_init_msg_list => FND_API.G_FALSE,
p_bank_acct_id => v_ext_bank_account_id,
p_acct_owner_party_id =>v_party_id,
x_return_status => x_return_status,
x_msg_count => x_msg_count,
x_msg_data => x_msg_data,
x_response => x_response_rec
); EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.put_line ('ERROR IN CHECKING VENDOR IS THE OWNER OF THIS ACCOUNT'||x_return_status);
END; IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('already owner');
p_payee.supplier_site_id := v_vendor_site_id;
p_payee.party_id :=v_party_id;
p_payee.party_site_id := v_party_site_id;
p_payee.payment_function := 'PAYABLES_DISB';
IF i.vendor_site_code IS NOT NULL THEN
p_payee.org_id := p_operating_unit;
p_payee.org_type := 'OPERATING_UNIT';
ELSE
p_payee.org_id := NULL;
p_payee.org_type := NULL;
END IF;
p_assignment_attribs.Instrument.instrument_id := v_ext_bank_account_id;
p_assignment_attribs.Instrument.instrument_type := 'BANKACCOUNT';
p_assignment_attribs.priority := 1;
-- p_assignment_attribs.instrument := p_instrument;
x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
x_response_rec := NULL;
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_true,
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_rec
);
IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('Payee_Instr_Assignment.');
DBMS_OUTPUT.put_line ('x_assign_id' || x_assign_id);
DBMS_OUTPUT.put_line ('x_return_status' || x_return_status);
else
DBMS_OUTPUT.put_line
( 'Creation of Payee_Instr_Assignment failed:'
|| x_msg_data );
v_error_message:=
v_error_message||'Creation of Payee_Instr_Assignment failed:'
|| x_msg_data;
ROLLBACK;
v_error_flag := 'Y';
end if;
ELSE
DBMS_OUTPUT.put_line
( 'Creation of joint bank acct owner'
);
x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
x_response_rec := NULL;
IBY_EXT_BANKACCT_PUB.add_joint_account_owner
( p_api_version => 1.0,
p_init_msg_list => fnd_api.g_true,
p_bank_account_id => v_ext_bank_account_id,
p_acct_owner_party_id => v_party_id,
x_joint_acct_owner_id =>x_joint_owner_id,
x_return_status => x_return_status,
x_msg_count => x_msg_count,
x_msg_data =>x_msg_data,
x_response=> x_response_rec);
IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('joint acct created');
p_payee.supplier_site_id := v_vendor_site_id;
p_payee.party_id :=v_party_id;
p_payee.party_site_id := v_party_site_id;
p_payee.payment_function := 'PAYABLES_DISB';
IF i.vendor_site_code IS NOT NULL THEN
p_payee.org_id := p_operating_unit;
p_payee.org_type := 'OPERATING_UNIT';
ELSE
p_payee.org_id := NULL;
p_payee.org_type := NULL;
END IF;
p_assignment_attribs.Instrument.instrument_id := v_ext_bank_account_id;
p_assignment_attribs.Instrument.instrument_type := 'BANKACCOUNT';
p_assignment_attribs.priority := 1;
x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
x_response_rec := NULL;
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_true,
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_rec
);
IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('Payee_Instr_Assignment.');
DBMS_OUTPUT.put_line ('x_assign_id' || x_assign_id);
DBMS_OUTPUT.put_line ('x_return_status' || x_return_status);
else
DBMS_OUTPUT.put_line
( 'Creation of Payee_Instr_Assignment failed:'
|| x_msg_data );
v_error_message:=
v_error_message||'Creation of Payee_Instr_Assignment failed:'
|| x_msg_data;
ROLLBACK;
v_error_flag := 'Y';
end if;
else
DBMS_OUTPUT.put_line
( 'Creation of joint account owner failed'
|| x_msg_data );
v_error_message:=
v_error_message||'Creation of joint account owner failed'
|| x_msg_data;
ROLLBACK;
v_error_flag := 'Y';
end if;
end if;
end if;
IF v_error_flag = 'Y'
THEN
ROLLBACK;
UPDATE XXAP_SUPP_BANK_ACCOUNT_STG
SET processed_flag = 'N',
error_description = v_error_message
WHERE ROWID = i.ROWID;
COMMIT;
ELSE
UPDATE XXAP_SUPP_BANK_ACCOUNT_STG
SET processed_flag = 'Y'
WHERE ROWID = i.ROWID;
COMMIT;
END IF;
END LOOP;
END;
x_bank_rec iby_ext_bankacct_pub.extbank_rec_type;
x_bank_id NUMBER;
x_return_status VARCHAR2 (10);
x_msg_count NUMBER;
x_msg_data VARCHAR2 (256);
x_response_rec iby_fndcpt_common_pub.result_rec_type;
x_bank_branch_rec iby_ext_bankacct_pub.extbankbranch_rec_type;
x_branch_id NUMBER;
x_acct_id NUMBER;
x_bank_acct_rec iby_ext_bankacct_pub.extbankacct_rec_type;
p_ext_payee_tab iby_disbursement_setup_pub.external_payee_tab_type;
x_ext_payee_id_tab iby_disbursement_setup_pub.ext_payee_id_tab_type;
x_ext_payee_status_tab iby_disbursement_setup_pub.ext_payee_create_tab_type;
l_ext_payee_rec iby_disbursement_setup_pub.external_payee_rec_type;
l_ext_payee_id_rec_type iby_disbursement_setup_pub.ext_payee_id_rec_type;
p_payee iby_disbursement_setup_pub.payeecontext_rec_type;
p_assignment_attribs iby_fndcpt_setup_pub.pmtinstrassignment_rec_type;
p_instrument iby_fndcpt_setup_pub.pmtinstrument_rec_type;
x_assign_id NUMBER;
v_bank_party_id NUMBER;
v_branch_party_id NUMBER;
v_vendor_id NUMBER;
v_vendor_site_id NUMBER;
v_party_site_id NUMBER;
V_EXT_BANK_ACCOUNT_ID NUMBER;
v_bank_creation_flag VARCHAR2 (40);
v_error_flag VARCHAR2 (40);
v_error_message VARCHAR2 (4000);
v_party_id number;
v_TERRITORY_CODE VARCHAR2(400);
x_joint_owner_id number;
CURSOR supplier_bank
IS
SELECT ROWID, xrs.*
FROM XXAP_SUPP_BANK_ACCOUNT_STG xrs
WHERE processed_flag = 'N';
BEGIN
DBMS_OUTPUT.put_line ('Start of procedure.');
fnd_global.apps_initialize (fnd_global.user_id,
fnd_global.resp_id,
fnd_global.resp_appl_id
);
DBMS_OUTPUT.put_line ('Procedure initializad.');
FOR i IN supplier_bank
LOOP
v_bank_creation_flag := 'N';
v_error_flag := 'N';
v_error_message := NULL;
v_bank_party_id:=NULL;
V_branch_party_id:=NULL;
v_ext_bank_account_id:=NULL;
v_vendor_id:=NULL;
v_party_id:=NULL;
v_vendor_site_id:=NULL;
v_party_site_id:=NULL;
v_TERRITORY_CODE:=NULL;
begin select TERRITORY_CODE into v_TERRITORY_CODE from fnd_territories
where UPPER(TERRITORY_CODE)=UPPER(i.COUNTRY);
exception when others then
V_ERROR_FLAG:='Y';
V_ERROR_MESSAGE:=V_ERROR_MESSAGE||'Bank country not exsist';
end;
BEGIN
SELECT bank_party_id
INTO v_bank_party_id
FROM ce_banks_v
WHERE UPPER(bank_name)= UPPER(i.bank_name)
and upper(HOME_COUNTRY)=UPPER(I.COUNTRY)
AND ROWNUM=1;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_error_flag := 'Y';
v_error_message := 'BANK IS NOT EXIST IN THE SYSTEM';
END;
BEGIN
SELECT branch_party_id
INTO v_branch_party_id
FROM ce_bank_branches_v
where UPPER(BANK_BRANCH_NAME)=UPPER(I.BRANCH_NAME)
AND UPPER(bank_name)=UPPER(I.BANK_NAME)
AND UPPER(BANK_HOME_COUNTRY)=UPPER(I.COUNTRY)
AND ROWNUM=1;
EXCEPTION
WHEN OTHERS
THEN
v_error_flag := 'Y';
v_error_message :=
v_error_message || 'BRANCH IS NOT EXIST IN THE SYSTEM';
END;
BEGIN
SELECT ext_bank_account_id
INTO v_ext_bank_account_id
FROM iby_ext_bank_accounts
WHERE bank_id = v_bank_party_id
AND branch_id = v_branch_party_id
AND bank_account_num = i.bank_account_number
AND UPPER(bank_account_name) = UPPER(i.bank_account_name);
EXCEPTION
WHEN no_data_found
THEN
v_ext_bank_account_id:=null;
when others then
v_error_flag := 'Y';
v_error_message :=
v_error_message || 'ERROR IN THE SYSTEM BANK ACCOUNT NUMBER FETCH';
END;
BEGIN
SELECT vendor_id
INTO v_vendor_id
FROM po_vendors
WHERE upper(vendor_name) = upper(i.vendor_name)
and segment1=I.ATTRIBUTE1;
EXCEPTION
WHEN OTHERS
THEN
v_error_flag := 'Y';
v_error_message :=
v_error_message || 'VENDOR NOT EXIST IN THE SYSTEM';
END;
BEGIN
SELECT party_id
INTO v_party_id
FROM po_vendors
WHERE upper(vendor_name) =upper(i.vendor_name)
and segment1=I.ATTRIBUTE1;
EXCEPTION
WHEN OTHERS
THEN
v_error_flag := 'Y';
v_error_message :=
v_error_message || 'VENDOR NOT EXIST IN THE SYSTEM';
END;
IF i.vendor_site_code IS NOT NULL THEN
BEGIN
SELECT vendor_site_id,party_site_id
INTO v_vendor_site_id,v_party_site_id
FROM ap_supplier_sites_all
WHERE UPPER(vendor_site_code) = UPPER(i.vendor_site_code)
AND ORG_ID=p_operating_unit
AND vendor_id = v_vendor_id;
EXCEPTION
WHEN OTHERS
THEN
v_error_flag := 'Y';
v_error_message :=
v_error_message || 'VENDOR SITE NOT EXIST IN THE SYSTEM';
END;
END IF;
IF v_error_flag = 'N' AND v_ext_bank_account_id IS NULL
THEN
x_bank_acct_rec.country_code := I.COUNTRY ;
x_bank_acct_rec.branch_id := v_branch_party_id;
x_bank_acct_rec.bank_id := v_bank_party_id;
x_bank_acct_rec.acct_owner_party_id := v_party_id;
--supplier party id
x_bank_acct_rec.iban := i.iban;
x_bank_acct_rec.currency := i.currency;
x_bank_acct_rec.bank_account_name := i.bank_account_name;
x_bank_acct_rec.bank_account_num := i.bank_account_number;
x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
iby_ext_bankacct_pub.create_ext_bank_acct
(p_api_version => 1.0,
p_init_msg_list => fnd_api.g_true,
p_ext_bank_acct_rec => x_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_rec
);
IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('External bank account created.');
DBMS_OUTPUT.put_line ('x_acct_id' || x_acct_id);
DBMS_OUTPUT.put_line ('x_return_status' || x_return_status);
DBMS_OUTPUT.put_line ('x_msg_count.' || x_msg_count);
DBMS_OUTPUT.put_line ('x_msg_data.' || x_msg_data);
ELSE
DBMS_OUTPUT.put_line
( 'Creation of BANK ACCCOUNT failed:'
|| x_msg_data );
ROLLBACK;
v_error_flag := 'Y';
v_error_message :=
v_error_message || 'Creation of BANK ACCCOUNT failed:'
|| x_msg_data;
END IF;
l_ext_payee_rec.payee_party_site_id := v_party_site_id;
l_ext_payee_rec.payee_party_id := v_party_id;
l_ext_payee_rec.payment_function := 'PAYABLES_DISB';
IF i.vendor_site_code IS NOT NULL THEN
l_ext_payee_rec.payer_org_id := p_operating_unit;
l_ext_payee_rec.payer_org_type := 'OPERATING_UNIT';
ELSE
l_ext_payee_rec.payer_org_id := NULL;
l_ext_payee_rec.payer_org_type := NULL;
END IF;
l_ext_payee_rec.exclusive_pay_flag := 'N';
l_ext_payee_rec.default_pmt_method :=
NVL ('CHECK', i.payment_method);
l_ext_payee_rec.supplier_site_id := v_vendor_site_id;
x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
p_ext_payee_tab (0) := l_ext_payee_rec;
iby_disbursement_setup_pub.create_external_payee
(p_api_version => 1.0,
p_init_msg_list => fnd_api.g_true,
p_ext_payee_tab => p_ext_payee_tab,
x_return_status => x_return_status,
x_msg_count => x_msg_count,
x_msg_data => x_msg_data,
x_ext_payee_id_tab => x_ext_payee_id_tab,
x_ext_payee_status_tab => x_ext_payee_status_tab
);
IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('External Payee created.');
DBMS_OUTPUT.put_line ('x_return_status: ' || x_return_status
);
DBMS_OUTPUT.put_line ('x_msg_count. ' || x_msg_count);
DBMS_OUTPUT.put_line ('x_msg_data. ' || x_msg_data);
ELSE
DBMS_OUTPUT.put_line ( 'Creation of payee failed:'
|| x_msg_data );
v_error_message :=
v_error_message || 'Creation of payee failed:'
|| x_msg_data;
ROLLBACK;
v_error_flag := 'Y';
END IF;
p_payee.supplier_site_id := v_vendor_site_id;
p_payee.party_id :=v_party_id;
p_payee.party_site_id := v_party_site_id;
p_payee.payment_function := 'PAYABLES_DISB';
IF i.vendor_site_code IS NOT NULL THEN
p_payee.org_id := p_operating_unit;
p_payee.org_type := 'OPERATING_UNIT';
ELSE
p_payee.org_id := NULL;
p_payee.org_type := NULL;
END IF;
l_ext_payee_id_rec_type := x_ext_payee_id_tab (0);
p_instrument.instrument_id := x_acct_id;
p_instrument.instrument_type := 'BANKACCOUNT';
p_assignment_attribs.priority := 1;
p_assignment_attribs.instrument := p_instrument;
x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
x_response_rec := NULL;
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_true,
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_rec
);
IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('Payee_Instr_Assignment.');
DBMS_OUTPUT.put_line ('x_assign_id' || x_assign_id);
DBMS_OUTPUT.put_line ('x_return_status' || x_return_status);
DBMS_OUTPUT.put_line ('x_msg_count.' || x_msg_count);
DBMS_OUTPUT.put_line ('x_msg_data.' || x_msg_data);
ELSE
DBMS_OUTPUT.put_line
( 'Creation of Payee_Instr_Assignment failed:'
|| x_msg_data );
v_error_message:=
v_error_message||'Creation of Payee_Instr_Assignment failed:'
|| x_msg_data;
ROLLBACK;
v_error_flag := 'Y';
END IF;
END IF;
IF v_error_flag = 'N' AND v_ext_bank_account_id IS NOT NULL
THEN
DBMS_OUTPUT.put_line ('CHECKING THAT VENDOR IS THE OWNER OF THIS ACCOUNT'||x_return_status);
BEGIN x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
x_response_rec := NULL;
IBY_EXT_BANKACCT_PUB.check_bank_acct_owner
(p_api_version => 1.0,
p_init_msg_list => FND_API.G_FALSE,
p_bank_acct_id => v_ext_bank_account_id,
p_acct_owner_party_id =>v_party_id,
x_return_status => x_return_status,
x_msg_count => x_msg_count,
x_msg_data => x_msg_data,
x_response => x_response_rec
); EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.put_line ('ERROR IN CHECKING VENDOR IS THE OWNER OF THIS ACCOUNT'||x_return_status);
END; IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('already owner');
p_payee.supplier_site_id := v_vendor_site_id;
p_payee.party_id :=v_party_id;
p_payee.party_site_id := v_party_site_id;
p_payee.payment_function := 'PAYABLES_DISB';
IF i.vendor_site_code IS NOT NULL THEN
p_payee.org_id := p_operating_unit;
p_payee.org_type := 'OPERATING_UNIT';
ELSE
p_payee.org_id := NULL;
p_payee.org_type := NULL;
END IF;
p_assignment_attribs.Instrument.instrument_id := v_ext_bank_account_id;
p_assignment_attribs.Instrument.instrument_type := 'BANKACCOUNT';
p_assignment_attribs.priority := 1;
-- p_assignment_attribs.instrument := p_instrument;
x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
x_response_rec := NULL;
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_true,
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_rec
);
IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('Payee_Instr_Assignment.');
DBMS_OUTPUT.put_line ('x_assign_id' || x_assign_id);
DBMS_OUTPUT.put_line ('x_return_status' || x_return_status);
else
DBMS_OUTPUT.put_line
( 'Creation of Payee_Instr_Assignment failed:'
|| x_msg_data );
v_error_message:=
v_error_message||'Creation of Payee_Instr_Assignment failed:'
|| x_msg_data;
ROLLBACK;
v_error_flag := 'Y';
end if;
ELSE
DBMS_OUTPUT.put_line
( 'Creation of joint bank acct owner'
);
x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
x_response_rec := NULL;
IBY_EXT_BANKACCT_PUB.add_joint_account_owner
( p_api_version => 1.0,
p_init_msg_list => fnd_api.g_true,
p_bank_account_id => v_ext_bank_account_id,
p_acct_owner_party_id => v_party_id,
x_joint_acct_owner_id =>x_joint_owner_id,
x_return_status => x_return_status,
x_msg_count => x_msg_count,
x_msg_data =>x_msg_data,
x_response=> x_response_rec);
IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('joint acct created');
p_payee.supplier_site_id := v_vendor_site_id;
p_payee.party_id :=v_party_id;
p_payee.party_site_id := v_party_site_id;
p_payee.payment_function := 'PAYABLES_DISB';
IF i.vendor_site_code IS NOT NULL THEN
p_payee.org_id := p_operating_unit;
p_payee.org_type := 'OPERATING_UNIT';
ELSE
p_payee.org_id := NULL;
p_payee.org_type := NULL;
END IF;
p_assignment_attribs.Instrument.instrument_id := v_ext_bank_account_id;
p_assignment_attribs.Instrument.instrument_type := 'BANKACCOUNT';
p_assignment_attribs.priority := 1;
x_msg_count := 0;
x_msg_data := NULL;
x_return_status := NULL;
x_response_rec := NULL;
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_true,
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_rec
);
IF x_return_status = fnd_api.g_ret_sts_success
THEN
DBMS_OUTPUT.put_line ('Payee_Instr_Assignment.');
DBMS_OUTPUT.put_line ('x_assign_id' || x_assign_id);
DBMS_OUTPUT.put_line ('x_return_status' || x_return_status);
else
DBMS_OUTPUT.put_line
( 'Creation of Payee_Instr_Assignment failed:'
|| x_msg_data );
v_error_message:=
v_error_message||'Creation of Payee_Instr_Assignment failed:'
|| x_msg_data;
ROLLBACK;
v_error_flag := 'Y';
end if;
else
DBMS_OUTPUT.put_line
( 'Creation of joint account owner failed'
|| x_msg_data );
v_error_message:=
v_error_message||'Creation of joint account owner failed'
|| x_msg_data;
ROLLBACK;
v_error_flag := 'Y';
end if;
end if;
end if;
IF v_error_flag = 'Y'
THEN
ROLLBACK;
UPDATE XXAP_SUPP_BANK_ACCOUNT_STG
SET processed_flag = 'N',
error_description = v_error_message
WHERE ROWID = i.ROWID;
COMMIT;
ELSE
UPDATE XXAP_SUPP_BANK_ACCOUNT_STG
SET processed_flag = 'Y'
WHERE ROWID = i.ROWID;
COMMIT;
END IF;
END LOOP;
END;
1 comments:
Post a Comment