CREATE OR REPLACE PACKAGE APPS.xxit_ap_payment_pkg AUTHID CURRENT_USER AS PROCEDURE ap_pay_invoice_in_full (p_payment_type_flag IN VARCHAR2, p_internal_bank_acct_name IN VARCHAR2, p_vendor_name IN VARCHAR2, p_vendor_site_name IN VARCHAR2, p_pay_amount IN NUMBER, p_pay_currency IN VARCHAR2, p_payment_method_code IN VARCHAR2, p_invoice_num IN VARCHAR2, p_inv_amount IN NUMBER, p_inv_currency IN VARCHAR2, p_check_date IN DATE ); END xxit_ap_payment_pkg; / CREATE OR REPLACE PACKAGE BODY APPS.xxit_ap_payment_pkg AS g_pkg_name CONSTANT VARCHAR2 (30) := 'AP_PAY_SINGLE_INVOICE_PKG'; g_msg_uerror CONSTANT NUMBER := fnd_msg_pub.g_msg_lvl_unexp_error; g_msg_error CONSTANT NUMBER := fnd_msg_pub.g_msg_lvl_error; g_msg_success CONSTANT NUMBER := fnd_msg_pub.g_msg_lvl_success; g_msg_high CONSTANT NUMBER := fnd_msg_pub.g_msg_lvl_debug_high; g_msg_medium CONSTANT NUMBER := fnd_msg_pub.g_msg_lvl_debug_medium; g_msg_low CONSTANT NUMBER := fnd_msg_pub.g_msg_lvl_debug_low; g_lines_per_fetch CONSTANT NUMBER := 1000; g_current_runtime_level CONSTANT NUMBER := 1; g_level_unexpected CONSTANT NUMBER := fnd_log.level_unexpected; g_level_error CONSTANT NUMBER := fnd_log.level_error; g_level_exception CONSTANT NUMBER := fnd_log.level_exception; g_level_event CONSTANT NUMBER := fnd_log.level_event; g_level_procedure CONSTANT NUMBER := 2; g_level_statement CONSTANT NUMBER := fnd_log.level_statement; g_module_name CONSTANT VARCHAR2 (100) := 'AP.PLSQL.AP_PAY_SINGLE_INVOICE_PKG' ; ln_ce_bank_acct_use_id NUMBER := NULL; PROCEDURE ap_pay_invoice_in_full (p_payment_type_flag IN VARCHAR2, p_internal_bank_acct_name IN VARCHAR2, p_vendor_name IN VARCHAR2, p_vendor_site_name IN VARCHAR2, p_pay_amount IN NUMBER, p_pay_currency IN VARCHAR2, p_payment_method_code IN VARCHAR2, p_invoice_num IN VARCHAR2, p_inv_amount IN NUMBER, p_inv_currency IN VARCHAR2, p_check_date IN DATE ) IS l_amount NUMBER; l_base_amount NUMBER; l_num_invs_sel_for_pmt NUMBER; l_return_code NUMBER; l_application_id NUMBER; l_name VARCHAR2 (80); l_dummy_rowid VARCHAR2 (18); l_seq_num_profile VARCHAR2 (80); l_hold_all_payments_flag ap_suppliers.hold_all_payments_flag%TYPE; l_active_pay_sites ap_supplier_sites_all.pay_site_flag%TYPE; l_accounting_event_id NUMBER (38); l_quick_check_id ap_checks.checkrun_name%TYPE; l_next_check_number ap_checks.check_number%TYPE; l_check_number ap_checks.check_number%TYPE; l_period_name gl_period_statuses.period_name%TYPE; l_debug_info VARCHAR2 (100); l_curr_calling_sequence VARCHAR2 (2000); l_doc_category_code VARCHAR2 (30); l_seqval NUMBER; l_dbseqid NUMBER; l_docseq_id NUMBER; l_docseq_type VARCHAR (1); l_docseq_name VARCHAR2 (30); l_db_seq_name VARCHAR2 (30); l_seq_ass_id NUMBER; l_prd_tab_name VARCHAR2 (30); l_aud_tab_name VARCHAR2 (30); l_msg_flag VARCHAR (1); l_valid_sequence_exists VARCHAR2 (30); x_return_status VARCHAR2 (100); x_msg_count NUMBER; x_msg_data VARCHAR2 (100); x_errorids iby_disburse_single_pmt_pkg.trxnerroridstab; l_payment_type_flag ap_checks.payment_type_flag%TYPE; -- bug3343314 l_creation_date ap_checks.creation_date%TYPE; -- bug3343314 l_created_by ap_checks.created_by%TYPE; -- bug3343314 l_last_update_date ap_checks.last_update_date%TYPE; -- bug3343314 l_last_updated_by ap_checks.last_updated_by%TYPE; -- bug3343314 l_last_update_login ap_checks.last_update_login%TYPE; -- bug3343314 l_org_id NUMBER; l_bank_account_id ce_bank_acct_uses_all.bank_acct_use_id%TYPE; l_bank_account_name ce_bank_accounts.bank_account_name%TYPE; l_processing_type iby_payment_profiles.processing_type%TYPE; l_print_instr_immed_flag iby_payment_profiles.print_instruction_immed_flag%TYPE; l_default_printer iby_payment_profiles.default_printer%TYPE; l_payment_document_id ce_payment_documents.payment_document_id%TYPE; l_bills_payable iby_payment_methods_vl.support_bills_payable_flag%TYPE; l_maturity_date_offset_days iby_payment_methods_vl.maturity_date_offset_days%TYPE; l_maturity_date ap_checks.future_pay_due_date%TYPE; l_vendor_type_lookup_code ap_suppliers.vendor_type_lookup_code%TYPE; l_return_status VARCHAR2 (100); l_return_message VARCHAR2 (3000); l_msg_count NUMBER; l_msg_data VARCHAR2 (3000); l_temp_status VARCHAR2 (1); l_is_duplicate BOOLEAN := TRUE; l_module_name VARCHAR2 (200) := g_pkg_name || '.ap_pay_invoice_in_full' ; l_api_version CONSTANT NUMBER := 1.0; l_api_name CONSTANT VARCHAR2 (30) := 'ap_pay_invoice_in_full'; l_errbuf VARCHAR2 (5000); l_retcode VARCHAR2 (2000); l_transaction_type ap_payment_history_all.transaction_type%TYPE; TYPE r_ap_system_param_info IS RECORD ( auto_calc_int_flag ap_system_parameters_all.auto_calculate_interest_flag%TYPE, base_currency_code ap_system_parameters_all.base_currency_code%TYPE, pay_doc_override ap_system_parameters_all.pay_doc_category_override%TYPE, make_rate_mandatory_flag ap_system_parameters_all.make_rate_mandatory_flag%TYPE, set_of_books_id ap_system_parameters_all.set_of_books_id%TYPE, default_exchange_rate_type ap_system_parameters_all.default_exchange_rate_type%TYPE, multi_currency_flag ap_system_parameters_all.multi_currency_flag%TYPE, xrate_type ap_system_parameters_all.default_exchange_rate_type%TYPE ); TYPE r_check_info IS RECORD ( xrate ap_checks_all.exchange_rate%TYPE, xrate_date ap_checks_all.exchange_date%TYPE, xrate_type ap_checks_all.exchange_rate_type%TYPE, check_id ap_checks_all.check_id%TYPE, checkrun_name ap_checks_all.checkrun_name%TYPE, internal_bank_acct_id ce_bank_acct_uses_all.bank_acct_use_id%TYPE, bank_account_name ce_bank_accounts.bank_account_name%TYPE, bank_account_num ce_bank_accounts.bank_account_num%TYPE, bank_account_type ce_bank_accounts.account_classification%TYPE, bank_num ce_bank_branches_v.branch_number%TYPE, legal_entity_id ce_bank_accounts.account_owner_org_id%TYPE, status_lookup_code ap_checks_all.status_lookup_code%TYPE ); TYPE r_ap_ven_sites_info IS RECORD ( address_line1 hz_locations.address1%TYPE, address_line2 hz_locations.address2%TYPE, address_line3 hz_locations.address3%TYPE, city hz_locations.city%TYPE, country hz_locations.country%TYPE, vendor_site_code ap_supplier_sites_all.vendor_site_code%TYPE, zip hz_locations.postal_code%TYPE, province hz_locations.province%TYPE, state hz_locations.state%TYPE, address_line4 hz_locations.address4%TYPE, county hz_locations.country%TYPE, address_style hz_locations.address_style%TYPE, vendor_id ap_suppliers.vendor_id%TYPE, vendor_site_id ap_supplier_sites_all.vendor_site_id%TYPE, pay_site_flag ap_supplier_sites_all.pay_site_flag%TYPE, primary_pay_site ap_supplier_sites_all.primary_pay_site_flag%TYPE ); TYPE r_vendor_info IS RECORD ( auto_calc_int_flag ap_suppliers.auto_calculate_interest_flag%TYPE, vendor_name ap_suppliers.vendor_name%TYPE ); TYPE r_apinv_info IS RECORD ( vendor_id ap_invoices_all.vendor_id%TYPE, vendor_site_id ap_invoices_all.vendor_site_id%TYPE, party_id ap_invoices_all.party_id%TYPE, party_site_id ap_invoices_all.party_site_id%TYPE, external_bank_account_id ap_payment_schedules_all.external_bank_account_id%TYPE, pmt_currency_code ap_invoices_all.payment_currency_code%TYPE, payment_method ap_invoices_all.payment_method_code%TYPE, inv_currency_code ap_invoices_all.invoice_currency_code%TYPE, org_id ap_invoices_all.org_id%TYPE, payment_function ap_invoices_all.payment_function%TYPE, pay_proc_trxn_type_code ap_invoices_all.pay_proc_trxn_type_code%TYPE ); l_vendor_rec r_vendor_info; l_inv_rec r_apinv_info; l_apvs_rec r_ap_ven_sites_info; l_check_rec r_check_info; l_asp_rec r_ap_system_param_info; l_manual_payment_flag VARCHAR2 (1); l_num_printed_docs NUMBER; l_paper_doc_num iby_payments_all.paper_document_number%TYPE; l_pmt_ref_num iby_payments_all.payment_reference_number%TYPE; l_errorids iby_disburse_single_pmt_pkg.trxnerroridstab; l_msg_index_out NUMBER; l_payment_id NUMBER; l_error_msg VARCHAR2 (2000); g_user_id NUMBER := fnd_profile.VALUE ('USER_ID'); g_resp_appl_id NUMBER := fnd_global.resp_appl_id; g_resp_id NUMBER := fnd_global.resp_id; g_org_id NUMBER := fnd_profile.VALUE ('ORG_ID'); g_sob_id NUMBER := fnd_profile.VALUE ('GL_SET_OF_BKS_ID') ; l_invoice_id NUMBER; l_inv_hold_cnt NUMBER; l_internal_bank_acct_id NUMBER; l_payment_method_lookup_code VARCHAR2 (100); l_invoice_currency_code VARCHAR2 (100); l_payment_currency_code VARCHAR2 (100); l_invoice_amount VARCHAR2 (100); l_vendor_id VARCHAR2 (100); l_vendor_site_id VARCHAR2 (100); v_vendor_id NUMBER; v_vendor_site_id NUMBER; l_pay_type_flag VARCHAR2 (100); p_api_version NUMBER; p_init_msg_list VARCHAR2 (100); -- p_check_date date; p_exchange_rate_type VARCHAR2 (100); p_exchange_rate VARCHAR2 (100); p_exchange_date DATE; p_payment_profile_id NUMBER; p_payment_document_id VARCHAR2 (100); p_doc_category_code VARCHAR2 (100); p_take_discount VARCHAR2 (100); l_period_status VARCHAR2 (1); l_start_date DATE; l_end_date DATE; ve_exception exception; vl_error_message VARCHAR2 (2000); BEGIN mo_global.set_policy_context ('S', fnd_profile.VALUE ('ORG_ID')); fnd_global.apps_initialize (g_user_id, g_resp_id, g_resp_appl_id); DBMS_OUTPUT.put_line ('Start-1'); --mo_global.set_policy_context ('S', 1127); --fnd_global.apps_initialize (62345, 55895, 200); l_invoice_id := NULL; l_internal_bank_acct_id := NULL; l_payment_method_lookup_code := NULL; l_invoice_currency_code := NULL; l_payment_currency_code := NULL; l_invoice_amount := NULL; l_vendor_id := NULL; l_vendor_site_id := NULL; v_vendor_id := NULL; v_vendor_site_id := NULL; l_pay_type_flag := NULL; p_api_version := 1.0; p_init_msg_list := 'T'; -- p_check_date := trunc (sysdate); p_exchange_rate_type := NULL; p_exchange_rate := NULL; p_exchange_date := NULL; p_payment_profile_id := 381; p_payment_document_id := NULL; p_doc_category_code := NULL; p_take_discount := 'N'; l_period_status := NULL; l_start_date := NULL; l_end_date := NULL; -- validaton for invoice number DBMS_OUTPUT.put_line ('Start'); BEGIN SELECT invoice_id INTO l_invoice_id FROM ap_invoices_all aia WHERE invoice_num = (TRIM (p_invoice_num)) AND org_id = fnd_profile.VALUE ('ORG_ID'); EXCEPTION WHEN OTHERS THEN vl_error_message := 'Invoice Number entered does not exist. Please Check.'; RAISE ve_exception; END; -- validation for invoice having any holds BEGIN SELECT COUNT (1) INTO l_inv_hold_cnt FROM ap_holds_all aha WHERE aha.release_lookup_code IS NULL AND invoice_id = l_invoice_id; IF (l_inv_hold_cnt > 0) THEN vl_error_message := 'Invoice Number having Holds. Please Check.'; RAISE ve_exception; END IF; EXCEPTION WHEN OTHERS THEN vl_error_message := 'Invoice Number having Holds. Please Check.'; RAISE ve_exception; END; -- validation for bank account BEGIN SELECT bank_account_id INTO l_internal_bank_acct_id FROM ce_bank_accounts WHERE bank_account_name = p_internal_bank_acct_name; EXCEPTION WHEN OTHERS THEN vl_error_message := 'Bank Account Name does not Exists. Please Check.'; RAISE ve_exception; END; -- validation for payment type BEGIN SELECT payment_method_lookup_code, invoice_currency_code, payment_currency_code, invoice_amount, vendor_id, vendor_site_id INTO l_payment_method_lookup_code, l_invoice_currency_code, l_payment_currency_code, l_invoice_amount, l_vendor_id, l_vendor_site_id FROM ap_invoices_all WHERE invoice_id = l_invoice_id AND org_id = fnd_profile.VALUE ('ORG_ID'); EXCEPTION WHEN OTHERS THEN vl_error_message := 'Vendor Information not fetchinh. Please Check.'; RAISE ve_exception; END; DBMS_OUTPUT.put_line ('Start-1'); BEGIN SELECT closing_status, start_date, end_date INTO l_period_status, l_start_date, l_end_date FROM gl_period_statuses WHERE application_id = 200 AND TRUNC (p_check_date) BETWEEN TRUNC (start_date) AND TRUNC (end_date) AND set_of_books_id = fnd_profile.VALUE ('GL_SET_OF_BKS_ID') AND adjustment_period_flag = 'N'; IF l_period_status <> 'O' THEN vl_error_message := 'Period is not open. Please Check.'; DBMS_OUTPUT.put_line (vl_error_message); RAISE ve_exception; END IF; EXCEPTION WHEN OTHERS THEN vl_error_message := 'Period is not open. Please Check.'; RAISE ve_exception; END; begin select count(vendor_id) into v_vendor_id from ap_suppliers where vendor_name = p_vendor_name and nvl (end_date_active, trunc(sysdate)) >= trunc (sysdate); if v_vendor_id < 1 then --<> l_vendor_id then vl_error_message := 'vendor name does not exists. please check.'; raise ve_exception; end if; exception when others then vl_error_message := 'vendor name does not exists. please check.'; raise ve_exception; end; begin select count(vendor_site_id) into v_vendor_site_id from ap_supplier_sites_all where vendor_site_code = p_vendor_site_name and nvl(inactive_date, trunc(sysdate)) >= trunc(sysdate); --and vendor_id=v_vendor_id; if v_vendor_site_id < 1 then -- <> l_vendor_site_id then vl_error_message := 'vendor site name does not exists. please check.'; raise ve_exception; end if; exception when others then vl_error_message := 'vendor site name does not exists. please check.'; raise ve_exception; end; IF l_invoice_currency_code <> p_inv_currency THEN vl_error_message := 'Invoice Currency Code does not matching with Invoice Vendor Site Name. Please Check.'; RAISE ve_exception; ELSIF l_payment_method_lookup_code <> p_payment_method_code THEN vl_error_message := 'Payment Method Code not matching with Invoice Payment method code. Please Check.'; RAISE ve_exception; ELSIF l_invoice_amount <> p_pay_amount THEN vl_error_message := 'Payment Amount Should match with Invoice Amount. Please Check.'; RAISE ve_exception; ELSIF l_payment_currency_code <> p_pay_currency THEN vl_error_message := 'Payment currency should match with invoice payment currency. Please Check.'; RAISE ve_exception; ELSIF l_invoice_amount <> p_inv_amount THEN vl_error_message := 'Invoice Amount does not match with invoice. Please Check.'; RAISE ve_exception; ELSIF p_payment_type_flag NOT IN ('Manual', 'Quick', 'Refund') THEN vl_error_message := 'Payment Type Flag entered Wrongly. Please Check.'; RAISE ve_exception; END IF; DBMS_OUTPUT.put_line ('Start-3'); IF p_payment_type_flag = 'Manual' THEN l_pay_type_flag := 'M'; ELSIF p_payment_type_flag = 'Quick' THEN l_pay_type_flag := 'Q'; ELSIF p_payment_type_flag = 'Refund' THEN l_pay_type_flag := 'R'; END IF; DBMS_OUTPUT.put_line ('Start-4'); BEGIN -- mo_global.set_policy_context ('S', 1127); -- fnd_global.apps_initialize (62345, 55895, 200); mo_global.set_policy_context ('S', fnd_profile.VALUE ('ORG_ID')); fnd_global.apps_initialize (g_user_id, g_resp_id, g_resp_appl_id); BEGIN SELECT apiv.vendor_id, apiv.vendor_site_id, apiv.party_id, apiv.party_site_id, apiv.external_bank_account_id, ai.payment_currency_code, ai.invoice_currency_code, ai.payment_method_code, ai.org_id, NVL (ai.payment_function, 'PAYABLES_DISB'), NVL (ai.pay_proc_trxn_type_code, 'PAYABLES_DOC') INTO l_inv_rec.vendor_id, l_inv_rec.vendor_site_id, l_inv_rec.party_id, l_inv_rec.party_site_id, l_inv_rec.external_bank_account_id, l_inv_rec.pmt_currency_code, l_inv_rec.inv_currency_code, l_inv_rec.payment_method, l_inv_rec.org_id, l_inv_rec.payment_function, l_inv_rec.pay_proc_trxn_type_code FROM ap_invoices_ready_to_pay_v apiv, ap_invoices_all ai WHERE apiv.invoice_id = ai.invoice_id AND apiv.invoice_id = l_invoice_id AND apiv.payment_method_code = NVL (p_payment_method_code, apiv.payment_method_code) GROUP BY apiv.vendor_id, apiv.vendor_site_id, apiv.party_id, apiv.party_site_id, apiv.external_bank_account_id, ai.payment_currency_code, ai.invoice_currency_code, ai.payment_method_code, ai.org_id, ai.payment_function, ai.pay_proc_trxn_type_code; EXCEPTION WHEN OTHERS THEN vl_error_message := '100 -- Invoice Id value not fetching. Please Check.'; DBMS_OUTPUT.put_line (vl_error_message); RAISE ve_exception; END; DBMS_OUTPUT.put_line ('Start-5'); BEGIN SELECT NVL (asp.auto_calculate_interest_flag, 'N'), asp.base_currency_code, NVL (asp.pay_doc_category_override, 'N'), NVL (make_rate_mandatory_flag, 'N'), set_of_books_id, NVL (default_exchange_rate_type, 'User'), NVL (multi_currency_flag, 'N') INTO l_asp_rec.auto_calc_int_flag, l_asp_rec.base_currency_code, l_asp_rec.pay_doc_override, l_asp_rec.make_rate_mandatory_flag, l_asp_rec.set_of_books_id, l_asp_rec.xrate_type, l_asp_rec.multi_currency_flag FROM ap_system_parameters_all asp WHERE org_id = l_inv_rec.org_id; EXCEPTION WHEN OTHERS THEN vl_error_message := '101 -- Org Id value not fetching. Please Check.'; RAISE ve_exception; END; DBMS_OUTPUT.put_line ('Start-6'); -- in the payment work bench user has the option to to change the -- payment date, so here we check to see if what they have passed -- or the current date is within an open period. l_period_name := ap_utilities_pkg.get_current_gl_date (p_check_date, l_inv_rec.org_id); DBMS_OUTPUT.put_line ('Start-7'); IF l_period_name IS NULL THEN vl_error_message := '102 -- Period Exception. Please Check.'; RAISE ve_exception; END IF; DBMS_OUTPUT.put_line ('Start-8'); BEGIN SELECT ba.account_owner_org_id legal_entity_id, ba.bank_account_name, ba.bank_account_num, ba.account_classification, cbb.branch_number INTO l_check_rec.legal_entity_id, l_check_rec.bank_account_name, l_check_rec.bank_account_num, l_check_rec.bank_account_type, l_check_rec.bank_num FROM ce_bank_accounts ba, ce_bank_branches_v cbb, ce_bank_acct_uses_ou_v cbau WHERE cbau.bank_account_id = ba.bank_account_id AND cbb.branch_party_id = ba.bank_branch_id AND SYSDATE < NVL (ba.end_date, SYSDATE + 1) AND ba.account_classification = 'INTERNAL' AND cbau.ap_use_enable_flag = 'Y' AND cbau.org_id = l_inv_rec.org_id AND cbau.bank_account_id = l_internal_bank_acct_id; EXCEPTION WHEN NO_DATA_FOUND THEN vl_error_message := '103 --Internal Bank Account Exception. Please Check.'; RAISE ve_exception; END; DBMS_OUTPUT.put_line ('Start-9'); IF (l_inv_rec.pmt_currency_code <> l_asp_rec.base_currency_code) THEN l_check_rec.xrate_type := NVL (p_exchange_rate_type, l_asp_rec.xrate_type); IF (l_check_rec.xrate_type = 'User') THEN IF (p_exchange_rate IS NULL) THEN vl_error_message := '104 -- Exchange Rate Exception. Please Check.'; RAISE ve_exception; ELSE l_check_rec.xrate := p_exchange_rate; END IF; ELSE l_check_rec.xrate_date := NVL (TRUNC (p_exchange_date), TRUNC (SYSDATE)); l_check_rec.xrate := ap_utilities_pkg.get_exchange_rate ( l_inv_rec.pmt_currency_code, l_asp_rec.base_currency_code, l_check_rec.xrate_type, l_check_rec.xrate_date, 'APAYFULB' ); IF (l_check_rec.xrate IS NULL AND l_asp_rec.make_rate_mandatory_flag = 'Y') THEN vl_error_message := '105 -- Exchange Rate Exception. Please Check.'; RAISE ve_exception; END IF; END IF; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN vl_error_message := '106 -- No Data Found. Please Check.'; RAISE ve_exception; WHEN TOO_MANY_ROWS THEN vl_error_message := '107 -- Too Many Rows Exception. Please Check.'; RAISE ve_exception; END; DBMS_OUTPUT.put_line ('Start-10'); SELECT COUNT ( * ) INTO l_num_invs_sel_for_pmt FROM ap_selected_invoices_all WHERE invoice_id = l_invoice_id; DBMS_OUTPUT.put_line ('Start-11'); IF (l_num_invs_sel_for_pmt > 0) THEN vl_error_message := '108 -- ap_selected_invoices_all invoice count is > 0. Please Check.'; RAISE ve_exception; END IF; DBMS_OUTPUT.put_line ('Start-12'); BEGIN SELECT NVL (asup.hold_all_payments_flag, 'N'), NVL (assp.pay_site_flag, 'N'), asup.vendor_type_lookup_code INTO l_hold_all_payments_flag, l_active_pay_sites, l_vendor_type_lookup_code FROM ap_suppliers asup, ap_supplier_sites_all assp WHERE asup.vendor_id = l_inv_rec.vendor_id AND asup.vendor_id = assp.vendor_id AND assp.vendor_site_id = l_inv_rec.vendor_site_id; IF (l_hold_all_payments_flag = 'Y' OR l_active_pay_sites = 'N') THEN RAISE NO_DATA_FOUND; ELSE IF l_vendor_type_lookup_code <> 'EMPLOYEE' THEN SELECT hzl.address1, hzl.address2, hzl.address3, hzl.city, hzl.country, hzl.postal_code, hzl.province, hzl.state, hzl.address4, hzl.county, hzl.address_style, asus.vendor_id, asus.vendor_site_id, asus.vendor_site_code, NVL (asus.pay_site_flag, 'N'), NVL (asus.primary_pay_site_flag, 'N') INTO l_apvs_rec.address_line1, l_apvs_rec.address_line2, l_apvs_rec.address_line3, l_apvs_rec.city, l_apvs_rec.country, l_apvs_rec.zip, l_apvs_rec.province, l_apvs_rec.state, l_apvs_rec.address_line4, l_apvs_rec.county, l_apvs_rec.address_style, l_apvs_rec.vendor_id, l_apvs_rec.vendor_site_id, l_apvs_rec.vendor_site_code, l_apvs_rec.pay_site_flag, l_apvs_rec.primary_pay_site FROM ap_supplier_sites_all asus, hz_locations hzl WHERE asus.vendor_site_id = l_inv_rec.vendor_site_id AND asus.location_id = hzl.location_id AND NVL (TRUNC (asus.inactive_date), SYSDATE + 1) > TRUNC (SYSDATE); IF l_apvs_rec.pay_site_flag = 'N' THEN BEGIN SELECT hzl.address1, hzl.address2, hzl.address3, hzl.city, hzl.country, hzl.postal_code, hzl.province, hzl.state, hzl.address4, hzl.county, hzl.address_style, asus.vendor_id, asus.vendor_site_id, asus.vendor_site_code, NVL (asus.pay_site_flag, 'N'), NVL (asus.primary_pay_site_flag, 'N') INTO l_apvs_rec.address_line1, l_apvs_rec.address_line2, l_apvs_rec.address_line3, l_apvs_rec.city, l_apvs_rec.country, l_apvs_rec.zip, l_apvs_rec.province, l_apvs_rec.state, l_apvs_rec.address_line4, l_apvs_rec.county, l_apvs_rec.address_style, l_apvs_rec.vendor_id, l_apvs_rec.vendor_site_id, l_apvs_rec.vendor_site_code, l_apvs_rec.pay_site_flag, l_apvs_rec.primary_pay_site FROM ap_supplier_sites_all asus, hz_locations hzl WHERE asus.vendor_site_id = l_inv_rec.vendor_site_id AND asus.location_id = hzl.location_id AND NVL (TRUNC (asus.inactive_date), SYSDATE + 1) > TRUNC (SYSDATE) AND NVL (asus.primary_pay_site_flag, 'N') = 'Y'; EXCEPTION WHEN NO_DATA_FOUND THEN BEGIN SELECT hzl.address1, hzl.address2, hzl.address3, hzl.city, hzl.country, hzl.postal_code, hzl.province, hzl.state, hzl.address4, hzl.county, hzl.address_style, asus.vendor_id, asus.vendor_site_id, asus.vendor_site_code, NVL (asus.pay_site_flag, 'N'), NVL (asus.primary_pay_site_flag, 'N') INTO l_apvs_rec.address_line1, l_apvs_rec.address_line2, l_apvs_rec.address_line3, l_apvs_rec.city, l_apvs_rec.country, l_apvs_rec.zip, l_apvs_rec.province, l_apvs_rec.state, l_apvs_rec.address_line4, l_apvs_rec.county, l_apvs_rec.address_style, l_apvs_rec.vendor_id, l_apvs_rec.vendor_site_id, l_apvs_rec.vendor_site_code, l_apvs_rec.pay_site_flag, l_apvs_rec.primary_pay_site FROM ap_supplier_sites_all asus, hz_locations hzl WHERE asus.vendor_site_id = l_inv_rec.vendor_site_id AND asus.location_id = hzl.location_id AND NVL (TRUNC (asus.inactive_date), SYSDATE + 1) > TRUNC (SYSDATE) AND NVL (asus.pay_site_flag, 'N') = 'Y' AND ROWNUM = 1; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END; END; END IF; END IF; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN vl_error_message := '109 -- Exception no_data_found. Please Check.'; RAISE ve_exception; END; DBMS_OUTPUT.put_line ('Start-13'); BEGIN SELECT processing_type, print_instruction_immed_flag, default_printer INTO l_processing_type, l_print_instr_immed_flag, l_default_printer FROM iby_payment_profiles WHERE payment_profile_id = p_payment_profile_id; EXCEPTION WHEN NO_DATA_FOUND THEN vl_error_message := '110 -- Invalid Payment Profile Id Exception. Please Check.'; RAISE ve_exception; END; DBMS_OUTPUT.put_line ('Start-14'); IF l_processing_type = 'PRINTED' THEN IF p_payment_document_id IS NULL THEN vl_error_message := '111 -- Exception in p_payment_document_id. Please Check.'; RAISE ve_exception; END IF; END IF; DBMS_OUTPUT.put_line ('Start-15'); IF p_payment_document_id IS NOT NULL THEN BEGIN SELECT payment_document_id INTO l_payment_document_id FROM ce_payment_documents WHERE payment_document_id = p_payment_document_id AND internal_bank_account_id = l_internal_bank_acct_id AND payment_instruction_id IS NULL; iby_disburse_ui_api_pub_pkg.validate_paper_doc_number ( p_api_version => 1.0, p_init_msg_list => p_init_msg_list, p_payment_doc_id => p_payment_document_id, x_paper_doc_num => l_next_check_number, x_return_status => l_return_status, x_msg_count => x_msg_count, x_msg_data => x_msg_data, show_warn_msgs_flag => 'T' ); IF l_return_status <> fnd_api.g_ret_sts_success THEN vl_error_message := '112 -- Exception in IBY_DISBURSE_UI_API_PUB_PKG.Validate_Paper_Doc_Number. Please Check.'; RAISE ve_exception; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN vl_error_message := '113 -- Exception in Validate_Paper_Doc_Number. Please Check.'; RAISE ve_exception; END; END IF; DBMS_OUTPUT.put_line ('Start-16'); BEGIN SELECT asup.auto_calculate_interest_flag, hp.party_name INTO l_vendor_rec.auto_calc_int_flag, l_vendor_rec.vendor_name FROM ap_suppliers asup, hz_parties hp WHERE asup.vendor_id = l_inv_rec.vendor_id AND asup.party_id = hp.party_id; EXCEPTION WHEN NO_DATA_FOUND THEN vl_error_message := '114 -- Exception in Supplier Party Name. Please Check.'; RAISE ve_exception; END; DBMS_OUTPUT.put_line ('Start-17'); ap_invoices_pkg.lock_row (l_invoice_id, l_curr_calling_sequence); DBMS_OUTPUT.put_line ('Start-18'); BEGIN SELECT support_bills_payable_flag, maturity_date_offset_days INTO l_bills_payable, l_maturity_date_offset_days FROM iby_payment_methods_vl WHERE payment_method_code = l_inv_rec.payment_method; IF l_bills_payable = 'Y' THEN l_check_rec.status_lookup_code := 'ISSUED'; l_maturity_date := NVL (TRUNC (p_check_date), TRUNC (SYSDATE)) + NVL (l_maturity_date_offset_days, 0); ELSE l_check_rec.status_lookup_code := 'NEGOTIABLE'; END IF; EXCEPTION WHEN NO_DATA_FOUND THEN vl_error_message := '115 -- Exception in Payment Method Bills Payable enabled. Please Check.'; RAISE ve_exception; END; DBMS_OUTPUT.put_line ('Start-19'); fnd_profile.get ('UNIQUE:SEQ_NUMBERS', l_seq_num_profile); l_doc_category_code := p_doc_category_code; DBMS_OUTPUT.put_line ('Start-20'); IF l_seq_num_profile IN ('P', 'A') THEN IF l_doc_category_code IS NOT NULL THEN BEGIN SELECT 'row exists' INTO l_valid_sequence_exists FROM fnd_doc_sequence_categories WHERE code = l_doc_category_code AND table_name IN ('AP_CHECKS', 'AP_CHECKS_ALL'); EXCEPTION WHEN NO_DATA_FOUND THEN vl_error_message := '116 -- Exception in l_doc_category_code. Please Check.'; RAISE ve_exception; RETURN; END; ELSE ce_bank_and_account_validation.get_pay_doc_cat ( p_payment_document_id, p_payment_method_code, l_internal_bank_acct_id, l_doc_category_code ); END IF; DBMS_OUTPUT.put_line ('Start-21'); IF l_doc_category_code = '-1' AND l_seq_num_profile = 'A' THEN vl_error_message := '117 -- Exception in l_doc_category_code. Please Check.'; RAISE ve_exception; END IF; DBMS_OUTPUT.put_line ('Start-22'); IF l_doc_category_code <> '-1' AND l_asp_rec.pay_doc_override <> 'Y' AND l_doc_category_code <> p_doc_category_code THEN vl_error_message := '118 -- Exception in l_doc_category_code. Please Check.'; RAISE ve_exception; END IF; DBMS_OUTPUT.put_line ('Start-23'); IF l_doc_category_code <> '-1' THEN l_return_code := fnd_seqnum.get_seq_info ( app_id => 200, cat_code => l_doc_category_code, sob_id => l_asp_rec.set_of_books_id, met_code => 'A', trx_date => NVL (TRUNC (p_check_date), TRUNC (SYSDATE)), docseq_id => l_docseq_id, docseq_type => l_docseq_type, docseq_name => l_docseq_name, db_seq_name => l_db_seq_name, seq_ass_id => l_seq_ass_id, prd_tab_name => l_prd_tab_name, aud_tab_name => l_aud_tab_name, msg_flag => l_msg_flag ); IF (l_return_code <> 0 OR l_docseq_type = 'M') AND l_seq_num_profile = 'A' THEN vl_error_message := '119 -- Exception in seq number. Please Check.'; RAISE ve_exception; ELSIF l_return_code = 0 AND l_docseq_type = 'A' THEN --get seq value l_return_code := fnd_seqnum.get_seq_val ( 200, l_doc_category_code, l_asp_rec.set_of_books_id, 'A', NVL (TRUNC (p_check_date), TRUNC (SYSDATE)), l_seqval, l_dbseqid, 'N', 'N' ); IF l_return_code <> 0 AND l_seq_num_profile = 'A' THEN vl_error_message := '119 -- Exception in l_return_code <> 0 and l_seq_num_profile. Please Check.'; RAISE ve_exception; END IF; END IF; END IF; END IF; DBMS_OUTPUT.put_line ('Start-24'); l_amount := ap_pay_in_full_pkg.ap_get_check_amount ( TO_CHAR (l_invoice_id), NULL, l_pay_type_flag, SYSDATE, l_inv_rec.pmt_currency_code, p_take_discount, l_asp_rec.auto_calc_int_flag, l_vendor_rec.auto_calc_int_flag, 'APAYFULB' ); DBMS_OUTPUT.put_line ('Start-25'); IF (l_inv_rec.pmt_currency_code <> l_asp_rec.base_currency_code) THEN IF (l_check_rec.xrate_type = 'User') THEN DBMS_OUTPUT.put_line ('Start-25-1'); l_base_amount := ap_utilities_pkg.ap_round_currency ( (l_amount * l_check_rec.xrate), l_asp_rec.base_currency_code ); DBMS_OUTPUT.put_line ('Start-25-2'); ELSE DBMS_OUTPUT.put_line ('Start-25-3'); DBMS_OUTPUT.put_line (l_inv_rec.pmt_currency_code||'---'||l_asp_rec.base_currency_code||'---'||l_check_rec.xrate_date||'---'||l_check_rec.xrate_type ||'---'||l_amount); l_base_amount := gl_currency_api.convert_amount (l_inv_rec.pmt_currency_code, l_asp_rec.base_currency_code, l_check_rec.xrate_date, l_check_rec.xrate_type, l_amount); DBMS_OUTPUT.put_line ('Start-25-4'); END IF; END IF; DBMS_OUTPUT.put_line ('Start-26'); SELECT ap_checks_s.NEXTVAL INTO l_check_rec.check_id FROM sys.DUAL; DBMS_OUTPUT.put_line ('Start-27'); IF l_next_check_number IS NULL THEN --and l_seq_num_profile in ('p') and p_doc_category_code is null then l_next_check_number := ap_checks_s.NEXTVAL; END IF; IF l_internal_bank_acct_id IS NOT NULL THEN SELECT bank_acct_use_id INTO ln_ce_bank_acct_use_id FROM ce_bank_acct_uses_all WHERE bank_account_id = l_internal_bank_acct_id AND ap_use_enable_flag = 'Y'; END IF; DBMS_OUTPUT.put_line ('Start-288'); IF (l_pay_type_flag = 'Q') THEN SELECT alc1.displayed_field INTO l_quick_check_id FROM ap_lookup_codes alc1 WHERE alc1.lookup_type = 'NLS TRANSLATION' AND alc1.lookup_code = 'QUICKCHECK ID'; l_check_rec.checkrun_name := SUBSTRB (l_quick_check_id, 1, 30 - NVL (LENGTHB (TO_CHAR (l_check_rec.check_id)), 0)) || TO_CHAR (l_check_rec.check_id); END IF; DBMS_OUTPUT.put_line ('Start-29'); ap_checks_pkg.insert_row ( x_rowid => l_dummy_rowid, x_amount => l_amount, x_ce_bank_acct_use_id => ln_ce_bank_acct_use_id, x_bank_account_name => l_check_rec.bank_account_name, x_check_date => NVL (TRUNC (p_check_date), TRUNC (SYSDATE)), x_check_id => l_check_rec.check_id, x_check_number => l_next_check_number, x_currency_code => l_inv_rec.pmt_currency_code, x_last_updated_by => fnd_global.user_id, x_last_update_date => SYSDATE, x_payment_type_flag => l_pay_type_flag, x_address_line1 => l_apvs_rec.address_line1, x_address_line2 => l_apvs_rec.address_line2, x_address_line3 => l_apvs_rec.address_line3, x_checkrun_name => l_check_rec.checkrun_name, x_check_format_id => NULL, x_check_stock_id => NULL, x_city => l_apvs_rec.city, x_country => l_apvs_rec.country, x_created_by => fnd_global.user_id, x_creation_date => SYSDATE, x_last_update_login => fnd_global.user_id, x_status_lookup_code => l_check_rec.status_lookup_code, x_vendor_name => l_vendor_rec.vendor_name, x_vendor_site_code => l_apvs_rec.vendor_site_code, x_external_bank_account_id => l_inv_rec.external_bank_account_id, x_zip => l_apvs_rec.zip, x_bank_account_num => '*********0600', -- for electronic pmts x_bank_account_type => NULL, -- for electronic pmts x_bank_num => NULL, -- for electronic pmts x_check_voucher_num => NULL, x_cleared_amount => NULL, x_cleared_date => NULL, x_doc_category_code => NULL, --l_doc_category_code, x_doc_sequence_id => l_dbseqid, -- seq num x_doc_sequence_value => l_seqval, -- seq num x_province => l_apvs_rec.province, -- po_vendors x_released_date => NULL, x_released_by => NULL, x_state => l_apvs_rec.state, x_stopped_date => NULL, x_stopped_by => NULL, x_void_date => NULL, x_attribute1 => NULL, x_attribute10 => NULL, x_attribute11 => NULL, x_attribute12 => NULL, x_attribute13 => NULL, x_attribute14 => NULL, x_attribute15 => NULL, x_attribute2 => NULL, x_attribute3 => NULL, x_attribute4 => NULL, x_attribute5 => NULL, x_attribute6 => NULL, x_attribute7 => NULL, x_attribute8 => NULL, x_attribute9 => NULL, x_attribute_category => NULL, x_future_pay_due_date => l_maturity_date, x_treasury_pay_date => NULL, x_treasury_pay_number => NULL, x_withholding_status_lkup_code => NULL, x_reconciliation_batch_id => NULL, x_cleared_base_amount => NULL, x_cleared_exchange_rate => NULL, x_cleared_exchange_date => NULL, x_cleared_exchange_rate_type => NULL, x_address_line4 => l_apvs_rec.address_line4, x_county => l_apvs_rec.county, x_address_style => l_apvs_rec.address_style, x_org_id => l_inv_rec.org_id, x_vendor_id => l_inv_rec.vendor_id, x_vendor_site_id => l_inv_rec.vendor_site_id, --l_apvs_rec.vendor_site_id, x_exchange_rate => l_check_rec.xrate, x_exchange_date => l_check_rec.xrate_date, x_exchange_rate_type => l_check_rec.xrate_type, x_base_amount => l_base_amount, x_checkrun_id => NULL, x_calling_sequence => 'APAYFULB.PLS', x_global_attribute_category => NULL, x_global_attribute1 => NULL, x_global_attribute2 => NULL, x_global_attribute3 => NULL, x_global_attribute4 => NULL, x_global_attribute5 => NULL, x_global_attribute6 => NULL, x_global_attribute7 => NULL, x_global_attribute8 => NULL, x_global_attribute9 => NULL, x_global_attribute10 => NULL, x_global_attribute11 => NULL, x_global_attribute12 => NULL, x_global_attribute13 => NULL, x_global_attribute14 => NULL, x_global_attribute15 => NULL, x_global_attribute16 => NULL, x_global_attribute17 => NULL, x_global_attribute18 => NULL, x_global_attribute19 => NULL, x_global_attribute20 => NULL, x_transfer_priority => NULL, x_maturity_exchange_rate_type => NULL, x_maturity_exchange_date => NULL, x_maturity_exchange_rate => NULL, x_description => NULL, x_anticipated_value_date => NULL, x_actual_value_date => NULL, x_payment_profile_id => p_payment_profile_id, x_bank_charge_bearer => NULL, x_settlement_priority => NULL, x_payment_method_code => l_inv_rec.payment_method, x_payment_document_id => p_payment_document_id, x_party_id => l_inv_rec.party_id, x_party_site_id => l_inv_rec.party_site_id, x_legal_entity_id => l_check_rec.legal_entity_id, x_payment_id => NULL ); IF (l_pay_type_flag = 'R') THEN l_transaction_type := 'REFUND RECORDED'; ELSE l_transaction_type := 'PAYMENT CREATED'; END IF; DBMS_OUTPUT.put_line ('Start-30'); -- bug3343314 ap_reconciliation_pkg.insert_payment_history ( x_check_id => l_check_rec.check_id, x_transaction_type => l_transaction_type, x_accounting_date => NVL (TRUNC (p_check_date), TRUNC (SYSDATE)), x_trx_bank_amount => NULL, x_errors_bank_amount => NULL, x_charges_bank_amount => NULL, x_bank_currency_code => NULL, x_bank_to_base_xrate_type => NULL, x_bank_to_base_xrate_date => NULL, x_bank_to_base_xrate => NULL, x_trx_pmt_amount => l_amount, x_errors_pmt_amount => NULL, x_charges_pmt_amount => NULL, x_pmt_currency_code => l_inv_rec.pmt_currency_code, x_pmt_to_base_xrate_type => l_check_rec.xrate_type, x_pmt_to_base_xrate_date => l_check_rec.xrate_date, x_pmt_to_base_xrate => l_check_rec.xrate, x_trx_base_amount => l_base_amount, x_errors_base_amount => NULL, x_charges_base_amount => NULL, x_matched_flag => NULL, x_rev_pmt_hist_id => NULL, x_org_id => l_inv_rec.org_id, x_creation_date => SYSDATE, x_created_by => fnd_global.user_id, x_last_update_date => SYSDATE, x_last_updated_by => fnd_global.user_id, x_last_update_login => fnd_global.user_id, x_program_update_date => NULL, x_program_application_id => NULL, x_program_id => NULL, x_request_id => NULL, x_calling_sequence => l_curr_calling_sequence, x_accounting_event_id => l_accounting_event_id ); SELECT accounting_event_id INTO l_accounting_event_id FROM ap_payment_history_all WHERE check_id = l_check_rec.check_id AND transaction_type = l_transaction_type; ap_pay_in_full_pkg.ap_create_payments ( TO_CHAR (l_invoice_id), NULL, l_check_rec.check_id, l_pay_type_flag, l_inv_rec.payment_method, l_internal_bank_acct_id, NULL, -- bank_account_num NULL, -- bank_account_type, NULL, -- bank_num, NVL (TRUNC (p_check_date), TRUNC (SYSDATE)), l_period_name, l_inv_rec.pmt_currency_code, l_asp_rec.base_currency_code, l_check_rec.checkrun_name, l_seqval, l_dbseqid, l_check_rec.xrate, l_check_rec.xrate_type, l_check_rec.xrate_date, p_take_discount, -- pay in full take discount l_asp_rec.auto_calc_int_flag, l_vendor_rec.auto_calc_int_flag, l_asp_rec.set_of_books_id, NULL, -- future_pay_code_combination_id fnd_global.user_id, fnd_global.user_id, 'APXPAWKB', l_seq_num_profile, l_accounting_event_id, l_inv_rec.org_id ); IF l_temp_status <> 'E' THEN IF l_pay_type_flag IN ('Q', 'M') THEN IF l_pay_type_flag = 'Q' THEN l_manual_payment_flag := 'N'; --bug 5982788 SELECT checkrun_name INTO l_check_rec.checkrun_name FROM ap_checks_all WHERE check_id = l_check_rec.check_id; ELSIF l_pay_type_flag = 'M' THEN l_manual_payment_flag := 'Y'; --bug 5982788 UPDATE ap_checks_all SET checkrun_name = l_check_rec.check_id WHERE check_id = l_check_rec.check_id; SELECT checkrun_name INTO l_check_rec.checkrun_name FROM ap_checks_all WHERE check_id = l_check_rec.check_id; END IF; DBMS_OUTPUT.put_line ('End'); --bug 5982788 iby_disburse_single_pmt_pkg.submit_single_payment ( p_api_version => 1.0, p_init_msg_list => p_init_msg_list, p_calling_app_id => 200, p_calling_app_payreq_cd => l_check_rec.checkrun_name, p_is_manual_payment_flag => l_manual_payment_flag, p_payment_function => l_inv_rec.payment_function, p_internal_bank_account_id => l_internal_bank_acct_id, p_pay_process_profile_id => p_payment_profile_id, p_payment_method_cd => l_inv_rec.payment_method, p_legal_entity_id => l_check_rec.legal_entity_id, p_organization_id => l_inv_rec.org_id, p_organization_type => 'OPERATING_UNIT', p_payment_date => NVL (TRUNC (p_check_date), TRUNC (SYSDATE)), p_payment_amount => l_amount, p_payment_currency => l_inv_rec.pmt_currency_code, p_payee_party_id => l_inv_rec.party_id, p_payee_party_site_id => l_inv_rec.party_site_id, p_supplier_site_id => l_inv_rec.vendor_site_id, p_payee_bank_account_id => l_inv_rec.external_bank_account_id, p_override_pmt_complete_pt => 'Y', p_bill_payable_flag => NVL (l_bills_payable, 'N'), p_anticipated_value_date => NULL, p_maturity_date => l_maturity_date, p_payment_document_id => p_payment_document_id, p_paper_document_number => l_next_check_number, p_printer_name => l_default_printer, p_print_immediate_flag => l_print_instr_immed_flag, p_transmit_immediate_flag => NULL, p_payee_address_line1 => l_apvs_rec.address_line1, p_payee_address_line2 => l_apvs_rec.address_line2, p_payee_address_line3 => l_apvs_rec.address_line3, p_payee_address_line4 => l_apvs_rec.address_line4, p_payee_address_city => l_apvs_rec.city, p_payee_address_county => l_apvs_rec.county, p_payee_address_state => l_apvs_rec.state, p_payee_address_zip => l_apvs_rec.zip, p_payee_address_country => l_apvs_rec.country, p_attribute_category => NULL, p_attribute1 => NULL, p_attribute2 => NULL, p_attribute3 => NULL, p_attribute4 => NULL, p_attribute5 => NULL, p_attribute6 => NULL, p_attribute7 => NULL, p_attribute8 => NULL, p_attribute9 => NULL, p_attribute10 => NULL, p_attribute11 => NULL, p_attribute12 => NULL, p_attribute13 => NULL, p_attribute14 => NULL, p_attribute15 => NULL, x_num_printed_docs => l_num_printed_docs, x_payment_id => l_payment_id, x_paper_doc_num => l_paper_doc_num, x_pmt_ref_num => l_pmt_ref_num, x_return_status => l_return_status, x_error_ids_tab => x_errorids, x_msg_count => x_msg_count, x_msg_data => x_msg_data ); IF (l_return_status = 'U') THEN --fnd_api.g_ret_sts_success) then UPDATE ap_checks_all SET payment_id = l_payment_id WHERE check_id = l_check_rec.check_id; IF l_pay_type_flag <> 'M' THEN IF l_paper_doc_num IS NOT NULL THEN l_check_number := l_paper_doc_num; ELSE l_check_number := l_pmt_ref_num; END IF; IF l_next_check_number <> l_check_number THEN UPDATE ap_checks_all SET check_number = l_check_number WHERE check_id = l_check_rec.check_id; END IF; END IF; x_return_status := l_return_status; ELSE x_return_status := l_return_status; END IF; END IF; -- p_payment_type_flag ELSE x_return_status := fnd_api.g_ret_sts_unexp_error; END IF; -- l_temp_status EXCEPTION WHEN OTHERS THEN vl_error_message := '120 -- Exception in Main. Please Check.'; RAISE ve_exception; RETURN; END ap_pay_invoice_in_full; END xxit_ap_payment_pkg; /