Sunteți pe pagina 1din 131

CREATE OR REPLACE PACKAGE BODY APPS.Xhl_Ar_Recv_Integration_Pkg AS --$Header: /HMS/HL Production/OMAR/PLSQL/cr_xhl_ar_recv_integration_pkg_pkb.

sql 10 2010-05-03 19:03:03-07:00 senthilr $ /******************************************************************************* ************* * PROCEDURE : create_receipt_request * * * * INPUT PARAMETERS : IN_num_cust_account_id * * * * OUTPUT PARAMETERS : OUT_chr_errbuf * * OUT_chr_retcode * * * * PURPOSE : To generate receipts for APF payment lines * * which are eligible for receipt generation. * * * * Author Date Ver Description * * --------------- --- --------------------------------------* * Infosys 01-SEP-2004 1.00 Created * * Infosys 25-AUG-2005 19.00 MOdified by Bhavin to resolve TD#2904 * * * * Infosys 01-SEP-2005 22.00 Modified by Shailesh Shashi * * TD# 2982 : rounding off issue in inv * * to DM matching * * Infosys 03-SEP-2005 23.00 Modified by Bhavana Priya for TD#3228 * * Invoice, DM to Receipt matching fails * * Infosys 03-SEP-2005 24.00 Modified by Shailesh Shashi for * * TD#3228 * * Invoice, DM to Receipt matching fails * * headerID not getting initialized * * * * Infosys 06-MAR-2007 4.00 Proj#51744 Modified by Balaji * * SM#302815: Modified by Viswa * * Misc receipts query modification

* * * Infosys * * Infosys * * * * * Herbalife 06-Aug-08 7.00 Modified to block receipt generation * * of Order Payment for THIRD PARTY * * COUNTRIES for SAM. Modified by EUGINEG * * Infosys 12-Nov-08 8.00 INC49020 - Matching Issue for Argentina * * Bala 03-Feb-09 9.00 CI_REF_CUR - Ref cursor is used in the * * invoice matching program to avoid * * full table scan on hz_cust_accounts * * Srinivas 16-Apr-09 10.00 Added as per MD50 Revenue/Cost accruals * * process change to store local time * * instead OF SYSDATE * * SenthilR 13-JUL-09 11.00 Convert GMT time to local time based * * on the g_chr_conv_date_to_local flag * * Suresh 10-Aug-11 12.00 Comment the line Status_code = 'O' * * for the table gl_daily_rates * * Arun D 09-Jul-12 13.00 CMR# 14404 - GL and REC Date Issue when IVR Paye ment * * implemented for Korea * ******************************************************************************** *************/ PROCEDURE create_receipt_request( out_chr_errbuff , out_chr_retcode , in_chr_debug_flag FAULT g_chr_no , in_chr_payment_source IPTS_INTERIM.payment_source%TYPE , in_num_source_line_ref IPTS_INTERIM.source_line_reference%TYPE , in_num_source_hdr_ref IPTS_INTERIM.source_header_reference%TYPE , in_num_cust_account_id IPTS_INTERIM.cust_account_id%TYPE OUT VARCHAR2 OUT VARCHAR2 IN VARCHAR2 DE IN XHL_AR_RECE IN XHL_AR_RECE IN XHL_AR_RECE IN XHL_AR_RECE * 04-FEB-08 * 6.00 * 01-JUN-2007 5.00 * SM#310794: Full table scan. Modified by Viswa ITG#52825 - Changes for the 11.5.10 project

, in_dte_transaction_date IPTS_INTERIM.receipt_date%TYPE , in_num_amount IPTS_INTERIM.amount_received%TYPE , in_chr_currency IPTS_INTERIM.currency%TYPE , in_dte_conversion_date tes.conversion_date%TYPE , in_chr_conversion_type tes.conversion_type%TYPE , in_chr_check_wire_number IPTS_INTERIM.check_number%TYPE , in_dte_check_date IPTS_INTERIM.check_date%TYPE , in_chr_cust_bank_account_no IPTS_INTERIM.bank_account_number%TYPE , in_chr_comments IPTS_INTERIM.comments%TYPE , in_chr_process_flag IPTS_INTERIM.process_flag%TYPE , in_chr_void_flag IPTS_INTERIM.void_flag%TYPE , in_num_receipt_method IPTS_INTERIM.receipt_method_id%TYPE , in_num_exchange_rate IPTS_INTERIM.exchange_rate%TYPE , in_num_org_id IPTS_INTERIM.org_id%TYPE)IS ---

IN XHL_AR_RECE IN XHL_AR_RECE IN XHL_AR_RECE IN gl_daily_ra IN gl_daily_ra IN XHL_AR_RECE IN XHL_AR_RECE IN XHL_AR_RECE IN XHL_AR_RECE IN XHL_AR_RECE IN XHL_AR_RECE IN XHL_AR_RECE IN XHL_AR_RECE IN XHL_AR_RECE

l_num_interim_line_id XHL_AR_RECEIPTS_INTERIM.interim_line_id%TYPE; l_dte_conversion_date DATE; l_chr_country VARCHAR2 (10); l_dte_transaction_date DATE; NULL_EXCP EXCEPTION; DONOTHING_EXCP EXCEPTION; BEGIN

--In case null value has been passed for any of the 'IN' parameters whic h are are not null then set error msg -- and raise exception IF in_chr_payment_source IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Payment source must be entered.',1,100); RAISE NULL_EXCP; ELSE IF in_chr_payment_source NOT IN ('APF','ACCOUNTINGWB','ORDERPAY') THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Payment source must be valid.',1,100); RAISE NULL_EXCP; END IF; END IF; IF in_num_source_line_ref IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Payment line id must be entered.',1,100); RAISE NULL_EXCP; END IF; IF in_num_cust_account_id IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Customer account id must be entered.',1,10 0);

RAISE NULL_EXCP; END IF; IF in_dte_transaction_date IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Transaction date must be entered.',1,100); RAISE NULL_EXCP; END IF; IF in_dte_conversion_date IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Conversion date must be entered.',1,100); RAISE NULL_EXCP; END IF; IF in_num_amount IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Amount must be entered.',1,100); RAISE NULL_EXCP; END IF; IF in_chr_currency IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Currency must be entered.',1,100); RAISE NULL_EXCP; END IF; IF in_chr_process_flag IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Process flag must be entered.',1,100); RAISE NULL_EXCP; ELSE IF in_chr_process_flag NOT IN (g_chr_process_flag_unprocsd,g_chr_proc ess_flag_success, g_chr_process_flag_failure) THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Process flag must be entered.',1,100); RAISE NULL_EXCP; END IF; END IF; IF in_num_org_id IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Org id must be entered.',1,100); RAISE NULL_EXCP; END IF; IF in_num_receipt_method IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Receipt method id must be entered.',1,100) ; RAISE NULL_EXCP; END IF; -- to stop receipt generation for third party countries - SAM IF in_num_receipt_method = 0 THEN out_chr_retcode := '0'; RAISE DONOTHING_EXCP; END IF; BEGIN SELECT xhl_ar_receipts_interim_s.NEXTVAL INTO l_num_interim_line_id FROM dual; EXCEPTION WHEN OTHERS THEN out_chr_retcode := '2';

out_chr_errbuff := SUBSTR('Interim line id sequence not found.',1, 100); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'Error while generating receipt seq eunce number.'); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLE RRM,1,200)); RAISE NULL_EXCP; END; IF in_chr_comments = 'IVR Payment' THEN g_chr_conv_date_to_local := 'N'; END IF; -- CMR# 14404 - GL and Receipt Date issue - Arun; ----IF g_chr_conv_date_to_local = 'Y' THEN l_dte_transaction_date := xhl_gmt_to_local_time(in_dte_transaction_dat e); ELSE l_dte_transaction_date := in_dte_transaction_date; END IF; ------If above criterion has been satisfied then insert record INSERT INTO XHL_AR_RECEIPTS_INTERIM( interim_line_id , payment_source , source_line_reference , source_header_reference , cust_account_id , currency , amount_received , receipt_date , receipt_method_id , check_number , check_date , conversion_date , bank_account_number , exchange_rate , process_flag , void_flag , comments , created_by , creation_date , last_updated_by , last_update_date , org_id ) VALUES( l_num_interim_line_id , in_chr_payment_source , in_num_source_line_ref , in_num_source_hdr_ref , in_num_cust_account_id , in_chr_currency --, in_num_amount --TD# 2982.o , ROUND(in_num_amount,2) --TD# 2982.n --, in_dte_transaction_date , l_dte_transaction_date , in_num_receipt_method

, in_chr_check_wire_number , in_dte_check_date , in_dte_conversion_date , in_chr_cust_bank_account_no , in_num_exchange_rate , in_chr_process_flag , in_chr_void_flag , in_chr_comments , g_num_user_id , SYSDATE , g_num_user_id , SYSDATE , in_num_org_id ); out_chr_retcode := '0'; COMMIT; EXCEPTION WHEN NULL_EXCP THEN NULL; --this is exeception is to do nothing,its a valid exeception to block re ceipt generation process WHEN DONOTHING_EXCP THEN NULL; WHEN OTHERS THEN out_chr_retcode := '2'; out_chr_errbuff := 'SQL error message : '||SUBSTR(SQLERRM,1,100); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM ,1,200)); END create_receipt_request; /********************************************************************* * PROCEDURE : update_receipt_request * * * * INPUT PARAMETERS : IN_num_cust_account_id * * * * OUTPUT PARAMETERS : OUT_chr_errbuf * * OUT_chr_retcode * * * * PURPOSE : To generate receipts for APF payment lines * * which are eligible for receipt generation. * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 01/09/2004 1.00 Created * *SenthilR 13-JUL-09 2.00 Convert GMT time to local time based * * on the g_chr_conv_date_to_local flag * * *********************************************************************/ PROCEDURE update_receipt_request( , , EFAULT g_chr_no , out_chr_errbuff out_chr_retcode in_chr_debug_flag in_chr_payment_source OUT VARCHAR2 OUT VARCHAR2 IN VARCHAR2 D IN XHL_AR_RECE

IPTS_INTERIM.payment_source%TYPE , in_num_source_line_ref IN XHL_AR_RECE IPTS_INTERIM.source_line_reference%TYPE , in_num_source_hdr_ref IN XHL_AR_RECE IPTS_INTERIM.source_header_reference%TYPE , in_num_cust_account_id IN XHL_AR_RECE IPTS_INTERIM.cust_account_id%TYPE , in_dte_transaction_date IN XHL_AR_RECE IPTS_INTERIM.receipt_date%TYPE , in_dte_conversion_date IN gl_daily_ra tes.conversion_date%TYPE , in_num_amount IN XHL_AR_RECE IPTS_INTERIM.amount_received%TYPE , in_chr_currency IN XHL_AR_RECE IPTS_INTERIM.currency%TYPE , in_chr_check_wire_number IN XHL_AR_RECE IPTS_INTERIM.check_number%TYPE , in_dte_check_date IN XHL_AR_RECE IPTS_INTERIM.check_date%TYPE , in_chr_cust_bank_account_no IN XHL_AR_RECE IPTS_INTERIM.bank_account_number%TYPE , in_chr_comments IN XHL_AR_RECE IPTS_INTERIM.comments%TYPE , in_chr_process_flag IN XHL_AR_RECE IPTS_INTERIM.process_flag%TYPE , in_chr_void_flag IN XHL_AR_RECE IPTS_INTERIM.void_flag%TYPE , in_num_receipt_method IN XHL_AR_RECE IPTS_INTERIM.receipt_method_id%TYPE , in_num_receipt_id IN XHL_AR_RECE IPTS_INTERIM.receipt_id%TYPE , in_num_exchange_rate IN XHL_AR_RECE IPTS_INTERIM.exchange_rate%TYPE , in_num_org_id IN XHL_AR_RECE IPTS_INTERIM.org_id%TYPE)IS l_num_receipt_line XHL_AR_RECEIPTS_INTERIM.interim_line_id%TYPE; l_num_interim_line_id XHL_AR_RECEIPTS_INTERIM.interim_line_id%TYPE; l_num_dummy_variable NUMBER := 0; l_chr_dummy_variable VARCHAR2(1) := NULL; l_dte_transaction_date DATE; NULL_EXCP EXCEPTION; DONOTHING_EXCP EXCEPTION; -BEGIN --In case null value has been passed for any of the 'IN' parameters whic h are are not null then set error msg -- and raise exception IF in_chr_payment_source IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Payment source must be entered.',1,100); RAISE NULL_EXCP; END IF; IF in_num_source_line_ref IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Payment line id must be entered.',1,100); RAISE NULL_EXCP; END IF; IF in_num_cust_account_id IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Customer account id must be entered.',1,10 0);

RAISE NULL_EXCP; END IF; IF in_dte_transaction_date IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Transaction date must be entered.',1,100); RAISE NULL_EXCP; END IF; IF in_dte_conversion_date IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Conversion date must be entered.',1,100); RAISE NULL_EXCP; END IF; IF in_num_amount IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Amount must be entered.',1,100); RAISE NULL_EXCP; END IF; IF in_chr_currency IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Currency must be entered.',1,100); RAISE NULL_EXCP; END IF; IF in_chr_process_flag IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Process flag must be entered.',1,100); RAISE NULL_EXCP; END IF; IF in_num_receipt_method IS NULL THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Receipt method id must be entered.',1,100) ; RAISE NULL_EXCP; END IF; -- to stop receipt generation for third party countries - SAM 10-jun-20 09 IF in_num_receipt_method = 0 THEN out_chr_retcode := '0'; RAISE DONOTHING_EXCP; END IF; ----IF g_chr_conv_date_to_local = 'Y' THEN l_dte_transaction_date := xhl_gmt_to_local_time(in_dte_transaction_dat e); ELSE l_dte_transaction_date := in_dte_transaction_date; END IF; ----BEGIN SELECT 1 INTO l_num_receipt_line FROM XHL_AR_RECEIPTS_INTERIM WHERE payment_source = in_chr_payment_source AND source_line_reference = in_num_source_line_ref; EXCEPTION WHEN NO_DATA_FOUND THEN BEGIN SELECT xhl_ar_receipts_interim_s.NEXTVAL INTO l_num_interim_line_id

FROM dual; EXCEPTION WHEN OTHERS THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Interim line id sequence not foun d.',1,100); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'Error while generating recei pt seqeunce number.'); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCO DE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBST R(SQLERRM,1,200)); RAISE NULL_EXCP; END; INSERT INTO XHL_AR_RECEIPTS_INTERIM( interim_line_id , payment_source , source_line_reference , source_header_reference , cust_account_id , currency , amount_received , receipt_date , receipt_method_id , exchange_rate , process_flag , void_flag , receipt_id , check_number , check_date , conversion_date , bank_account_number , comments , created_by , creation_date , last_updated_by , last_update_date , org_id ) VALUES( l_num_interim_line_id , in_chr_payment_source , in_num_source_line_ref , in_num_source_hdr_ref , in_num_cust_account_id , in_chr_currency --, in_num_amount --TD# 2982.o , ROUND(in_num_amount,2) --TD# 2982.n --, in_dte_transaction_date , l_dte_transaction_date , in_num_receipt_method , in_num_exchange_rate , in_chr_process_flag , in_chr_void_flag , in_num_receipt_id , in_chr_check_wire_number

, in_dte_check_date , in_dte_conversion_date , in_chr_cust_bank_account_no , in_chr_comments , g_num_user_id , SYSDATE , g_num_user_id , SYSDATE , in_num_org_id ); WHEN OTHERS THEN out_chr_retcode := '2'; out_chr_errbuff := 'Unknown error while retreiving record informat ion from XHL_AR_RECEIPTS_INTERIM.'; out_chr_errbuff := out_chr_errbuff ||'.' || 'SQL error message : ' ||SUBSTR(SQLERRM,1,100); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLE RRM,1,200)); END; IF l_num_receipt_line = 1 THEN UPDATE XHL_AR_RECEIPTS_INTERIM SET cust_account_id = in_num_cust_account_id , currency = in_chr_currency , check_number = in_chr_check_wire_number --, amount_received = in_num_amount --TD# 2982.o , amount_received = ROUND(in_num_amount,2) --TD# 2982.n --, receipt_date = in_dte_transaction_date , receipt_date = l_dte_transaction_date , exchange_rate = in_num_exchange_rate , conversion_date = in_dte_conversion_date , check_date = in_dte_check_date , bank_account_number = in_chr_cust_bank_account_no , comments = in_chr_comments , process_flag = in_chr_process_flag , void_flag = in_chr_void_flag , receipt_method_id = in_num_receipt_method , last_updated_by = g_num_user_id , last_update_date = SYSDATE , last_update_login = g_num_login_id WHERE payment_source = in_chr_payment_source AND source_line_reference = in_num_source_line_ref; IF SQL%ROWCOUNT=0 THEN out_chr_retcode := '2'; out_chr_errbuff := SUBSTR('Update in interim table failed for payme nt line id : '||in_num_source_line_ref,1,100); ELSE out_chr_retcode := '0'; END IF; END IF; COMMIT; EXCEPTION WHEN NULL_EXCP THEN NULL;

WHEN DONOTHING_EXCP THEN NULL; WHEN OTHERS THEN out_chr_retcode := '2'; out_chr_errbuff := 'Updation in interim table failed for payment line id : '||in_num_source_line_ref; out_chr_errbuff := out_chr_errbuff ||'.' || 'SQL error message : '||S UBSTR(SQLERRM,1,100); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM ,1,200)); END update_receipt_request;

/********************************************************************* * PROCEDURE : update_apf_base * * * * INPUT PARAMETERS : in_rec_receipt_creation * * in_num_receipt_id * * in_num_receipt_number * * in_chr_process_status * * * * OUTPUT PARAMETERS : * * * * PURPOSE : To update ar base table based on receipt * * creation api output for APF * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 01/09/2004 1.00 Created * * * *********************************************************************/ PROCEDURE update_apf_base(in_rec_receipt_creation IN cur_create_receipts%ROWT YPE ,in_num_receipt_id L.transaction_ref_number%TYPE ,in_chr_receipt_number _ALL.receipt_number%TYPE ,in_chr_process_status L.process_flag%TYPE) IS IN XHL_AR_DS_COLLEC_DTLS_AL IN XHL_OM_ORDER_RECEIPT_REF IN XHL_AR_DS_COLLEC_DTLS_AL

BEGIN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'In procedure update_apf_base. Proc ess variables : '); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_num_receipt_id : '|| in_num _receipt_id); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_chr_receipt_number : '|| in_chr _receipt_number); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_chr_process_status : '|| in_chr _process_status); Fnd_File.PUT_LINE(Fnd_File.LOG , 'and cursor record.'); END IF; --If the process status is 'PROCESSED' then update the base table with

the relevant details IF in_chr_process_status = g_chr_process_flag_success THEN UPDATE XHL_AR_DS_COLLEC_DTLS_ALL SET process_flag = in_chr_process_status , error_description = NULL , transaction_ref_number = in_num_receipt_id , last_updated_by = g_num_user_id , last_update_login = g_num_login_id , last_update_date = SYSDATE WHERE collection_id = in_rec_receipt_creation.source_line_reference ; --If the process status is 'ERRORED' then update the base table with th e relevant details ELSE UPDATE XHL_AR_DS_COLLEC_DTLS_ALL SET process_flag = in_chr_process_status , error_description = g_chr_exception_description , last_updated_by = g_num_user_id , last_update_login = g_num_login_id , last_update_date = SYSDATE WHERE collection_id = in_rec_receipt_creation.source_line_reference ; END IF; IF SQL%ROWCOUNT = 0 THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'update_apf_base failed. '); END IF; RAISE g_exc_base_tab_update_failure; END IF; EXCEPTION WHEN g_exc_base_tab_update_failure THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'update_apf_base failed. '); END IF; RAISE g_exc_base_tab_update_failure; WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'XHL_AR_DS_COLLEC_DTLS_ALL updat ion failed. '); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERR M,1,200)); RAISE g_exc_base_tab_update_failure; END update_apf_base; --End procedure update_apf_base /********************************************************************* * PROCEDURE : update_accountingwb_base * * * * INPUT PARAMETERS : in_rec_receipt_creation * * in_num_receipt_id * * in_num_receipt_number * * in_chr_process_status * * * * OUTPUT PARAMETERS : * * * * *

* PURPOSE : To update ar base table based on receipt * * creation api output * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 01/09/2004 1.00 Created * * * *********************************************************************/ PROCEDURE update_accountingwb_base(in_rec_receipt_creation ipts%ROWTYPE ,in_num_receipt_id C_DTLS_ALL.transaction_ref_number%TYPE ,in_chr_receipt_number CEIPT_REF_ALL.receipt_number%TYPE ,in_chr_process_status C_DTLS_ALL.process_flag%TYPE) IS IN cur_create_rece IN XHL_AR_DS_COLLE IN XHL_OM_ORDER_RE IN XHL_AR_DS_COLLE

BEGIN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'In procedure update_accountingwb_b ase. Process variables : '); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_num_receipt_id : '|| in_num _receipt_id); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_chr_receipt_number : '|| in_chr _receipt_number); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_chr_process_status : '|| in_chr _process_status); Fnd_File.PUT_LINE(Fnd_File.LOG , 'and cursor record.'); END IF; --If the process status is 'PROCESSED' then update the base table with the relevant details IF in_chr_process_status = g_chr_process_flag_success THEN UPDATE XHL_AR_DS_COLLEC_DTLS_ALL SET process_flag = in_chr_process_status , error_description = NULL , transaction_ref_number = in_num_receipt_id , last_updated_by = g_num_user_id , last_update_login = g_num_login_id , last_update_date = SYSDATE WHERE collection_id = in_rec_receipt_creation.source_line_reference ; --If the process status is 'ERRORED' then update the base table with th e relevant details ELSE UPDATE XHL_AR_DS_COLLEC_DTLS_ALL SET process_flag = in_chr_process_status , error_description = g_chr_exception_description , last_updated_by = g_num_user_id , last_update_login = g_num_login_id , last_update_date = SYSDATE WHERE collection_id = in_rec_receipt_creation.source_line_reference ; END IF; IF SQL%ROWCOUNT = 0 THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'XHL_AR_DS_COLLEC_DTLS_ALL updat ion failed. ');

END IF; RAISE g_exc_base_tab_update_failure; END IF; EXCEPTION WHEN g_exc_base_tab_update_failure THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'update_accountingwb_base failed . '); END IF; RAISE g_exc_base_tab_update_failure; WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'update_accountingwb_base failed . '); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERR M,1,200)); RAISE g_exc_base_tab_update_failure; END update_accountingwb_base;--End of procedure update_accwb_base /********************************************************************* * PROCEDURE : update_orpay_base * * * * INPUT PARAMETERS : in_rec_receipt_creation * * in_num_receipt_id * * in_num_receipt_number * * in_num_order_number * * in_num_header_id * * in_chr_process_status * * * * OUTPUT PARAMETERS : * * * * * * PURPOSE : To update order payment base table based on * * receipt creation api output * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 01/09/2004 1.00 Created * * * *********************************************************************/ PROCEDURE update_orderpay_base(in_rec_receipt_creation %ROWTYPE ,in_num_receipt_id S_ALL.cash_receipt_id%TYPE ,in_chr_receipt_number T_REF_ALL.receipt_number%TYPE ,in_num_order_number l.order_number%TYPE ,in_num_header_id l.header_id%TYPE ,in_chr_process_status S_ALL.process_flag%TYPE) IS PE; IN cur_create_receipts IN XHL_OM_PAYMENT_LINE IN XHL_OM_ORDER_RECEIP IN oe_order_headers_al IN oe_order_headers_al IN XHL_OM_PAYMENT_LINE

l_num_receipt_ref_id XHL_OM_ORDER_RECEIPT_REF_ALL.order_receipt_ref_id%TY

BEGIN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'In procedure update_orderpay_base. Process variables : '); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_num_receipt_id : '|| in_num _receipt_id); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_chr_receipt_number : '|| in_chr _receipt_number); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_num_order_number : '|| in_num _order_number); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_num_header_id : '|| in_num _header_id); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_chr_process_status : '|| in_chr _process_status); Fnd_File.PUT_LINE(Fnd_File.LOG , 'and cursor record.'); END IF; --If the process status is 'PROCESSED' then update the base table with the relevant details IF in_chr_process_status = g_chr_process_flag_success THEN UPDATE XHL_OM_PAYMENT_LINES_ALL SET process_flag = in_chr_process_status , error_description = NULL , cash_receipt_id = in_num_receipt_id , last_updated_by = g_num_user_id , last_update_login = g_num_login_id , last_update_date = SYSDATE WHERE payment_line_id = in_rec_receipt_creation.source_line_referen ce; IF SQL%ROWCOUNT = 0 THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'XHL_OM_PAYMENT_LINES_ALL upd ation failed. '); END IF; RAISE g_exc_base_tab_update_failure; END IF; BEGIN --Get the receipt referene id from the sequence SELECT xhl_om_ord_rcpt_ref_id_s.NEXTVAL INTO l_num_receipt_ref_id FROM dual; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'l_num_receipt_ref_id : '|| l _num_receipt_ref_id); END IF; EXCEPTION WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'XHL_OM_PAYMENT_LINES_ALL updation failed. '); END IF; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE ); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(

SQLERRM,1,200)); RAISE g_exc_base_tab_update_failure; END; --On successful updation of order payment base table, a reference is inserted into order receipt reference BEGIN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'Inserting into XHL_OM_ORDER_ RECEIPT_REF_ALL.'); END IF; INSERT INTO XHL_OM_ORDER_RECEIPT_REF_ALL( order_receipt_ref_id , last_updated_date , last_updated_by , creation_date , created_by , last_update_login , cash_receipt_id , receipt_number , order_header_id , order_number , payment_line_id , receipt_status , org_id , applied_amount_on_order , invoice_matched_amount) VALUES( l_num_receipt_ref_id , SYSDATE , g_num_user_id , SYSDATE , g_num_user_id , g_num_login_id , in_num_receipt_id , in_chr_receipt_number , in_num_header_id , in_num_order_number , in_rec_receipt_creation .source_line_reference , g_chr_unapp_status , in_rec_receipt_creation .org_id , in_rec_receipt_creation .amount_received , 0); EXCEPTION WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'Insertion in XHL_OM_ORDER _RECEIPT_REF_ALL failed.'); Fnd_File.PUT_LINE(Fnd_File.LOG ,'In when NO_DATA_FOUND: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE ); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR( SQLERRM,1,200)); RAISE g_exc_base_tab_update_failure; END; --If the process status is 'ERRORED' then update the base table with th

e relevant details ELSE UPDATE SET , , , , WHERE ce;

XHL_OM_PAYMENT_LINES_ALL process_flag = in_chr_process_status error_description = g_chr_exception_description last_updated_by = g_num_user_id last_update_login = g_num_login_id last_update_date = SYSDATE payment_line_id = in_rec_receipt_creation.source_line_referen

IF SQL%ROWCOUNT = 0 THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'Updation of XHL_OM_PAYMENT_L INES_ALL failed. '); END IF; RAISE g_exc_base_tab_update_failure; END IF; END IF; EXCEPTION WHEN g_exc_base_tab_update_failure THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'update_orderpay_base failed. ') ; END IF; RAISE g_exc_base_tab_update_failure; WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG, 'update_orderpay_base failed. '); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERR M,1,200)); RAISE g_exc_base_tab_update_failure; END update_orderpay_base; --End of procedure update_orpay_base /********************************************************************* * PROCEDURE : update_rcpt_creation * * * * INPUT PARAMETERS : in_rec_receipt_creation * * in_num_receipt_id * * in_num_receipt_number * * in_num_order_number * * in_num_header_id * * OUTPUT PARAMETERS : NONE * * * * * * PURPOSE : To call the procedures to update the relevant * * base tables on receipt creation * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 01/09/2004 1.00 Created * * * *********************************************************************/ PROCEDURE update_rcpt_creation( in_rec_receipt_creation IN cur_create_receipt s%ROWTYPE

, in_num_receipt_id PT_REF_ALL.cash_receipt_id%TYPE , in_chr_receipt_number PT_REF_ALL.receipt_number%TYPE , in_num_order_number ll.order_number%TYPE

IN XHL_OM_ORDER_RECEI IN XHL_OM_ORDER_RECEI IN oe_order_headers_a

, in_num_header_id IN oe_order_headers_a ll.header_id%TYPE) IS UNDEFINED_APP_SOURCE_EXCP EXCEPTION; BEGIN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'In update_rcpt_creation procedure. Process Variables :'|| create_receipts_rec.payment_source); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_num_receipt_id : '|| in_num _receipt_id); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_chr_receipt_number : '|| in_chr _receipt_number); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_num_order_number : '|| in_num _order_number); Fnd_File.PUT_LINE(Fnd_File.LOG , 'in_num_header_id : '|| in_num _header_id); Fnd_File.PUT_LINE(Fnd_File.LOG , 'and cursor record. '); END IF; --If the application source relevant procedure to update the base table based on the application source IF in_rec_receipt_creation.payment_source = 'APF' THEN update_apf_base( in_rec_receipt_creation , in_num_receipt_id , in_chr_receipt_number , g_chr_process_flag_success); ELSIF in_rec_receipt_creation.payment_source = 'ORDERPAY' THEN update_orderpay_base( in_rec_receipt_creation , in_num_receipt_id , in_chr_receipt_number , in_num_order_number , in_num_header_id , g_chr_process_flag_success); ELSIF in_rec_receipt_creation.payment_source = 'ACCOUNTINGWB' THEN update_accountingwb_base( in_rec_receipt_creation , in_num_receipt_id , in_chr_receipt_number , g_chr_process_flag_success); ELSE --If application source is undefined then raise application source undefine d exception RAISE UNDEFINED_APP_SOURCE_EXCP; END IF; BEGIN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'Deleting the record from XHL_AR_RECEIP TS_INTERIM, payment source : '|| in_rec_receipt_creation.payment_source); Fnd_File.PUT_LINE(Fnd_File.LOG , 'Source line reference : '|| in_ rec_receipt_creation.source_line_reference); END IF;

--Delete the record from interim table after process flag is updated in the base table DELETE FROM XHL_AR_RECEIPTS_INTERIM WHERE payment_source = in_rec_receipt_creation.payment_source AND source_line_reference = in_rec_receipt_creation.source_line_r eference; COMMIT; EXCEPTION WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM ,1,200)); END;--End of deletion from interim table EXCEPTION WHEN g_exc_base_tab_update_failure THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'Base table updation failed. Upd ating XHL_AR_RECEIPTS_INTERIM'); END IF; UPDATE SET , , , , WHERE XHL_AR_RECEIPTS_INTERIM process_flag = g_chr_process_flag_success error_description = g_chr_exception_description last_updated_by = g_num_user_id last_update_login = g_num_login_id last_update_date = SYSDATE interim_line_id = in_rec_receipt_creation.interim_line_id;

g_chr_exception_description := ' '; IF SQL%ROWCOUNT = 0 THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'XHL_AR_RECEIPTS_INTERIM updation failed.'); END IF; END IF; COMMIT; WHEN UNDEFINED_APP_SOURCE_EXCP THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'ERROR while calling the base ta ble updating procedure for payment source: '|| in_rec_receipt_creation.payment_s ource); Fnd_File.PUT_LINE(Fnd_File.LOG , 'Source line reference: '|| in_r ec_receipt_creation.source_line_reference); END IF; WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'ERROR while calling the base ta ble updating procedure for payment source: '|| in_rec_receipt_creation.payment_s ource); Fnd_File.PUT_LINE(Fnd_File.LOG , 'Source line reference: '|| in_r

ec_receipt_creation.source_line_reference); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERR M,1,200)); END update_rcpt_creation; --End of procedure update_rcpt_creation /********************************************************************* * PROCEDURE : update_rcpt_failure * * * * INPUT PARAMETERS : in_rec_receipt_creation * * in_num_receipt_number * * * * OUTPUT PARAMETERS : None * * * * PURPOSE : To call the procedures to update the relevant * * base tables on when receipt creation api * * fails to generate receipt * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 01/09/2004 1.00 Created * * * *********************************************************************/ PROCEDURE update_rcpt_failure( %ROWTYPE , T_REF_ALL.receipt_number%TYPE , l.order_number%TYPE , l.header_id%TYPE ) IS in_rec_receipt_creation IN cur_create_receipts in_chr_receipt_number in_num_order_number in_num_primary_id IN XHL_OM_ORDER_RECEIP IN oe_order_headers_al IN oe_order_headers_al

l_num_dummy_value NUMBER :=0; UNDEFINED_APP_SOURCE_EXCP EXCEPTION; BEGIN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'In procedure update_rcpt_failure.' ); END IF; --If the application source relevant procedure to update the base table based on the application source IF in_rec_receipt_creation.payment_source = 'APF' THEN update_apf_base( in_rec_receipt_creation , l_num_dummy_value , in_chr_receipt_number , g_chr_process_flag_failure); ELSIF in_rec_receipt_creation.payment_source = 'ORDERPAY' THEN update_orderpay_base( in_rec_receipt_creation , l_num_dummy_value , in_chr_receipt_number , in_num_order_number , in_num_primary_id , g_chr_process_flag_failure); ELSIF in_rec_receipt_creation.payment_source = 'ACCOUNTINGWB' THEN update_accountingwb_base( in_rec_receipt_creation , l_num_dummy_value

, in_chr_receipt_number , g_chr_process_flag_failure); ELSE --If the application source is not defined then raise user defined exceptio n application source undefined RAISE UNDEFINED_APP_SOURCE_EXCP; END IF; BEGIN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'Updating the record in interim table, payment source '|| in_rec_receipt_creation.payment_source); Fnd_File.PUT_LINE(Fnd_File.LOG , 'Source line reference: '|| in_r ec_receipt_creation.source_line_reference); END IF; --Update the interim table with errored record when receipt creation api fa ils UPDATE XHL_AR_RECEIPTS_INTERIM SET process_flag = g_chr_process_flag_failure , error_description = g_chr_exception_description , last_updated_by = g_num_user_id , last_update_login = g_num_login_id , last_update_date = SYSDATE WHERE interim_line_id = in_rec_receipt_creation.interim_line_id; g_chr_exception_description := ' '; IF SQL%ROWCOUNT = 0 THEN Fnd_File.PUT_LINE(Fnd_File.LOG , 'Updation of record in XHL_AR_RE CEIPTS_INTERIM table for source_line_reference '|| in_rec_receipt_creation.sourc e_line_reference); END IF; COMMIT; EXCEPTION WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG, 'Error while updating the reco rd in XHL_AR_RECEIPTS_INTERIM table, payment source '|| in_rec_receipt_creation. payment_source); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQL ERRM,1,200)); END;--End of updation of record in interim table EXCEPTION WHEN g_exc_base_tab_update_failure THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG, 'Error in updating base table for payment source: '|| in_rec_receipt_creation.payment_source); Fnd_File.PUT_LINE(Fnd_File.LOG, 'Source line reference: '|| i n_rec_receipt_creation.source_line_reference); END IF; WHEN UNDEFINED_APP_SOURCE_EXCP THEN IF g_chr_debug_flag = g_chr_yes THEN

Fnd_File.PUT_LINE(Fnd_File.LOG, 'Error while calling the base table updating procedure for payment source: '|| in_rec_receipt_creation.paymen t_source); Fnd_File.PUT_LINE(Fnd_File.LOG, 'Source line reference: '|| i n_rec_receipt_creation.source_line_reference); END IF; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error: Payment source not def ined/handled.'); WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG, 'Error while calling the base table updating procedure for payment source: '|| in_rec_receipt_creation.paymen t_source); Fnd_File.PUT_LINE(Fnd_File.LOG, 'Source line reference : '|| in_rec_receipt_creation.source_line_reference); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when NO_DATA_FOUND: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQL ERRM,1,200)); END update_rcpt_failure;--End of procedure update_rcpt_failure /********************************************************************* * PROCEDURE : create_receipts_in_ar * * * * INPUT PARAMETERS : in_rec_receipt_creation * * * * OUTPUT PARAMETERS : out_chr_errbuf * * out_chr_retcode * * out_num_receipt_id * * * * PURPOSE : To generate receipts for payment and collection* * lines,which are eligible for receipt generation* * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 01-SEP-2004 1.00 Created * *Infosys 15-APR-2005 14.00 Bhavana Priya - CR#72 - Logic modified* * include "Check to be introduced if the* * GL date is in closed period and in case* * it is in closed period then this needs* * to be changed to sysdate". * *SenthilR 26-MAR-2009 15.00 Modified for EMEA-FM-111 * *SenthilR 22-APR-2009 15.00 Modified for Defect# 8233 * *SenthilR 26-JUN-2009 15.00 Modified for Defect# 9035 * *SenthilR 13-JUL-2009 15.01 Reverted changed done for Defect# 9035* *********************************************************************/ PROCEDURE create_receipts_in_ar( out_chr_errbuf , out_chr_retcode , in_chr_debug_flag AULT g_chr_no , in_chr_process_status PTS_INTERIM.process_flag%TYPE , in_chr_payment_source PTS_INTERIM.payment_source%TYPE , in_num_from_source_hdr_ref PTS_INTERIM.source_header_reference%TYPE OUT VARCHAR2 OUT VARCHAR2 IN VARCHAR2 DEF IN XHL_AR_RECEI IN XHL_AR_RECEI IN XHL_AR_RECEI

, in_num_to_source_hdr_ref PTS_INTERIM.source_header_reference%TYPE , in_chr_from_distributor unts.account_number%TYPE , in_chr_to_distributor unts.account_number%TYPE) IS

IN XHL_AR_RECEI IN hz_cust_acco IN hz_cust_acco

--Start of declaration l_num_api_version NUMBER := 1.0; -- API version l_num_msg_count NUMBER := 0; --To store the number of err or messages API has encountered l_chr_msg_data VARCHAR2(2000) := NULL; --To store the error me ssage text l_chr_return_status VARCHAR2(1) := NULL; --To store the execution stat us of the called procedure l_num_receipt_number NUMBER := 0; -- To hold the receipt number as numb er datatype l_num_defer_time NUMBER := 0; -- To store the receipt creation defe r time from the profile option l_num_receipt_count NUMBER := -1; l_num_receipt_created NUMBER := 0; l_num_receipt_failed NUMBER := 0; /*IT#977.so*//* l_chr_start_time VARCHAR2(50) := NULL; l_chr_end_time VARCHAR2(50) := NULL;*//*IT#977.eo*/ l_attribute_rec Ar_Receipt_Api_Pub.attribute_rec_type;--To setthe DFF l_num_order_number oe_order_headers_all.order_number%TYPE; l_chr_order_number VARCHAR2(30) := NULL; l_chr_attribute1 XHL_OM_PAYMENT_LINES_ALL.attribute1%TYPE; -- Added for EMEA-FM-111 -- SenthilR - 26-MAR-2009 l_num_receipt_id XHL_OM_PAYMENT_LINES_ALL.cash_receipt_id%TYPE; -To hold the receipt id l_chr_receipt_number ar_cash_receipts_all.receipt_number%TYPE; -- To ho ld the receipt number as character data type l_num_primary_id oe_order_headers_all.header_id%TYPE; l_chr_receipt_context fnd_flex_values .attribute2%TYPE; l_chr_func_currency gl_sets_of_books.currency_code%TYPE := NULL; l_num_cust_acct_site_id hz_cust_acct_sites_all.cust_acct_site_id%TYPE := N ULL; l_num_party_site_id hz_cust_acct_sites_all.cust_acct_site_id%TYPE := N ULL; l_num_location hz_cust_site_uses_all.LOCATION%TYPE := NULL; l_num_party_id hz_party_sites.party_id%TYPE := NULL; p_cust_acct_site_rec Hz_Cust_Account_Site_V2pub.cust_acct_site_rec_type ; p_cust_site_use_rec Hz_Cust_Account_Site_V2pub.cust_site_use_rec_type; p_customer_profile_rec Hz_Customer_Profile_V2pub.customer_profile_rec_typ e; x_return_status VARCHAR2(2000); x_msg_data VARCHAR2(2000); x_msg_count NUMBER; x_cust_acct_site_id NUMBER; x_site_use_id NUMBER; -- lc_ar_period_status VARCHAR2(1); -- Added for Defect# 9035 --Senthi lR - 26-MAR-2009 -- l_dte_receipt_date_local XHL_AR_RECEIPTS_INTERIM.receipt_date%TYPE := NU LL; -- Added for Defect# 9035 --SenthilR - 26-MAR-2009 l_dte_gl_period_open --CR#72.n XHL_AR_RECEIPTS_INTERIM.receipt_date%TYPE := NULL;

SEQ_NOT_FOUND_EXCP EXCEPTION;--Exception when sequence XHL_AR_RCPT_NU M_S is not found ORD_NUM_NOT_FOUND_EXCP EXCEPTION;--Exception when the order number passed to fetch receipts is not found CONTEXT_NOT_FOUND_EXCP EXCEPTION; --Exception when the country is not fou nd UNKNOWN_EXCP EXCEPTION; SITE_EXCP EXCEPTION; NO_OPEN_PERIOD_EXCP EXCEPTION; --TD#XXXX.n --End of declaration BEGIN Fnd_File.PUT_LINE( Fnd_File.LOG , '************************************ ********************'); Fnd_File.PUT_LINE( Fnd_File.LOG , ' Receipt Creation '); Fnd_File.PUT_LINE( Fnd_File.LOG , '************************************ ********************'); /*IT#977.so*//* SELECT TO_CHAR(SYSDATE,'DD-MON-RRRR HH:MM:SS') INTO l_chr_start_time FROM dual;*//*IT#977.eo*/ -- Set the global debug variable g_chr_debug_flag := in_chr_debug_flag; out_chr_retcode := '0'; out_chr_errbuf := 'Procedure completed successfully.'; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Process input variables Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_chr_process_status in_chr_process_status); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_chr_payment_source in_chr_payment_source); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_num_from_source_hdr_ref in_num_from_source_hdr_ref); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_num_to_source_hdr_ref in_num_to_source_hdr_ref); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_chr_from_distributor in_chr_from_distributor); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_chr_to_distributor in_chr_to_distributor); END IF;

:'); : ' | : ' | : ' | : ' | : ' | : ' |

| | | | | |

IF Fnd_Profile.DEFINED('XHL_AR_RCPT_TIME_LIMIT_IN_MINS') THEN l_num_defer_time := TO_NUMBER(Fnd_Profile.VALUE('XHL_AR_RCPT_TIME_LI MIT_IN_MINS')); l_num_defer_time := l_num_defer_time/(60*24); ELSE l_num_defer_time := 0; END IF; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_defer_time : ' || l_num_def er_time); END IF; -- To get the functional Currency BEGIN SELECT currency_code

INTO l_chr_func_currency FROM gl_sets_of_books WHERE set_of_books_id = TO_NUMBER(Fnd_Profile.VALUE('GL_SET_OF_BKS_ ID')); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_chr_func_currency :' ||l_chr _func_currency ); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '2'; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while retreiving functio nal currency from GL_SET_OF_BOOKS '); RAISE UNKNOWN_EXCP; WHEN OTHERS THEN out_chr_retcode := '2'; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while retreiving functio nal currency from GL_SET_OF_BOOKS '); RAISE UNKNOWN_EXCP; END; --Open the cursor IF in_chr_from_distributor IS OPEN cur_create_receipts1( , , , , ELSE OPEN cur_create_receipts( , , , , , , END IF; LOOP l_num_receipt_count :=

NULL THEN in_chr_process_status in_chr_payment_source in_num_from_source_hdr_ref in_num_to_source_hdr_ref l_num_defer_time); in_chr_process_status in_chr_payment_source in_num_from_source_hdr_ref in_num_to_source_hdr_ref in_chr_from_distributor in_chr_to_distributor l_num_defer_time); l_num_receipt_count + 1;

IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In cur_create_receipts.'); END IF; IF in_chr_from_distributor IS NULL THEN FETCH cur_create_receipts1 INTO create_receipts_rec; ELSE FETCH cur_create_receipts INTO create_receipts_rec; END IF; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In cur_create_receipts. Cur sor variables:'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts_rec.source_ line_reference : '||create_receipts_rec.source_line_reference); Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts_rec.check_n umber : '||create_receipts_rec.check_number);

received y e_rate _date count_id count_number

_method_id _id _source

Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts_rec.amount_ : '||create_receipts_rec.amount_received); Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts_rec.currenc : '||create_receipts_rec.currency); Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts_rec.exchang : '||create_receipts_rec.exchange_rate); Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts_rec.receipt : '||create_receipts_rec.receipt_date); Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts_rec.cust_ac : '||create_receipts_rec.cust_account_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts_rec.bank_ac : '||create_receipts_rec.bank_account_number); Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts_rec.org_id : '||create_receipts_rec.org_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts_rec.receipt : '||create_receipts_rec.receipt_method_id ); Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts_rec.receipt : '||create_receipts_rec.receipt_id ); Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts_rec.payment : '||create_receipts_rec.payment_source); END IF; IF in_chr_from_distributor IS NULL THEN EXIT WHEN cur_create_receipts1%NOTFOUND; ELSE EXIT WHEN cur_create_receipts%NOTFOUND; END IF;

l_chr_order_number := NULL; IF in_chr_process_status = g_chr_process_flag_success THEN BEGIN IF create_receipts_rec.payment_source = 'ORDERPAY' THEN BEGIN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts _rec.payment_source : '|| create_receipts_rec.payment_source); END IF; --Get the order number and header id to insert a new rec ord into xhl_om_order_receipt_ref_all SELECT ooha.order_number , ooha.header_id , xopla.attribute1 -- Added for EMEA-FM-111 -- S enthilR - 26-MAR-2009 INTO l_num_order_number , l_num_primary_id , l_chr_attribute1 -- Added for EMEA-FM-111 -- S enthilR - 26-MAR-2009 FROM XHL_OM_PAYMENT_LINES_ALL xopla , XHL_OM_PAYMENT_HEADERS_ALL xopha --TD#2904.o, oe_order_headers ooha , oe_order_headers_all ooha --TD#2904.n WHERE ooha.header_id = xopha.order_header_id AND xopha.payment_id = xopla.payment_id AND xopla.payment_line_id = create_receipts_rec.so urce_line_reference; l_chr_order_number := TO_CHAR(l_num_order_number); IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_order_num

ber : '|| l_num_order_number); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_primary_i d : '|| l_num_primary_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_chr_order_num ber : '|| l_chr_order_number); END IF; EXCEPTION WHEN OTHERS THEN out_chr_retcode:= '1'; --If order number not found for the receipt in interim table, then raise a user defined exception IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when othe rs : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Messa ge : '||SUBSTR(SQLERRM,1,200)); RAISE ORD_NUM_NOT_FOUND_EXCP; END; ELSE l_num_primary_id := create_receipts_rec.source_line_refe rence; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_primary_id : '|| l_num_primary_id); END IF; END IF; SELECT INTO FROM WHERE receipt_number l_chr_receipt_number ar_cash_receipts cash_receipt_id = create_receipts_rec.receipt_id;

l_num_receipt_id := create_receipts_rec.receipt_id; update_rcpt_creation( create_receipts_rec , l_num_receipt_id , l_chr_receipt_number , l_num_order_number , l_num_primary_id); EXCEPTION WHEN ORD_NUM_NOT_FOUND_EXCP THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while fetching the order number.'); out_chr_errbuf := SUBSTR(SQLERRM,1,100); WHEN OTHERS THEN out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Unknown error while p rocessing receipt number : ' || l_chr_receipt_number); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 1: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||S QLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||S UBSTR(SQLERRM,1,200));

END; ELSE BEGIN --Get the receipt number from the sequence BEGIN SELECT xhl_ar_rcpt_num_s.NEXTVAL INTO l_num_receipt_number FROM dual; EXCEPTION WHEN OTHERS THEN out_chr_retcode:= '2'; --If receipt number generation sequence not found, ra ise a user defined exception IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 2: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : ' ||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : ' ||SUBSTR(SQLERRM,1,200)); RAISE SEQ_NOT_FOUND_EXCP; END; l_num_order_number := 0; l_num_primary_id := 0; IF create_receipts_rec.payment_source = 'ORDERPAY' THEN BEGIN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'create_receipts _rec.payment_source : '|| create_receipts_rec.payment_source); END IF; --Get the order number and header id to insert a new rec ord into xhl_om_order_receipt_ref_all SELECT ooha.order_number , ooha.header_id , xopla.attribute1 -- Added for EMEA-FM-111 -- S enthilR - 26-MAR-2009 INTO l_num_order_number , l_num_primary_id , l_chr_attribute1 -- Added for EMEA-FM-111 -- S enthilR - 26-MAR-2009 FROM XHL_OM_PAYMENT_LINES_ALL xopla , XHL_OM_PAYMENT_HEADERS_ALL xopha , oe_order_headers_all ooha WHERE ooha.header_id = xopha.order_header_id AND xopha.payment_id = xopla.payment_id AND xopla.payment_line_id = create_receipts_rec.so urce_line_reference; l_chr_order_number := TO_CHAR(l_num_order_number); IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_order_num ber : '|| l_num_order_number); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_primary_i d : '|| l_num_primary_id); END IF; EXCEPTION

WHEN OTHERS THEN out_chr_retcode:= '1'; --If order number not found for the receipt in interim table, then raise a user defined exception IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 3: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); RAISE ORD_NUM_NOT_FOUND_EXCP; END; ELSE l_num_primary_id := create_receipts_rec.source_line_refe rence; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_primary_id : '|| l_num_primary_id); END IF; END IF; l_chr_receipt_number := TO_CHAR(l_num_receipt_number); BEGIN IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Fetching DFF conte xt from value set XHL_AR_COUNTRIES.'); END IF; SELECT ffv.attribute2 INTO l_chr_receipt_context FROM fnd_flex_values ffv, fnd_flex_value_sets ffvs WHERE ffv.attribute1 = TO_CHAR(create_receipts_rec.org_ id) /*IT#1028.sn*/ AND NVL(ffv.start_date_active, SYSDATE) <= SYSDATE AND NVL(ffv.end_date_active, SYSDATE) >= SYSDATE AND ffv.enabled_flag = g_chr_yes /*IT#1028.en*/ AND ffv.flex_value_set_id = ffvs.flex_value_set_id AND ffvs.flex_value_set_name = 'XHL_AR_COUNTRIES'; IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_chr_receipt_co ntext : '|| l_chr_receipt_context); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when NO_DATA_FO UND: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code ||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : ' : '

||SUBSTR(SQLERRM,1,200)); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt country co ntext not found.'); RAISE CONTEXT_NOT_FOUND_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 4: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code ||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : ' ||SUBSTR(SQLERRM,1,200)); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt country co ntext not found.'); RAISE CONTEXT_NOT_FOUND_EXCP; END; --To set the DFF l_attribute_rec.attribute_category := l_chr_receipt_context ; l_attribute_rec.attribute1 Added for EMEA-FM-111 -- SenthilR - 26-MAR-2009 l_attribute_rec.attribute5 _id); l_attribute_rec.attribute11 heck_number; l_attribute_rec.attribute12 l_attribute_rec.attribute13 l_attribute_rec.attribute14 ayment_source; := l_chr_attribute1; -:= TO_CHAR(l_num_primary := create_receipts_rec.c := g_chr_yes; := TO_CHAR(0); := create_receipts_rec.p : '

: '|| : '|| : '|| bute1 : '|| 26-MAR-2009

IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_primary_id l_num_primary_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_number l_num_receipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_chr_receipt_number l_chr_receipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_attribute_rec.attri l_attribute_rec.attribute1); -- Added for EMEA-FM-111 -- SenthilR Fnd_File.LOG , 'l_attribute_rec.attri Fnd_File.LOG , 'l_attribute_rec.attri Fnd_File.LOG , 'l_attribute_rec.attri Fnd_File.LOG , 'l_attribute_rec.attri Fnd_File.LOG , 'Calling receipt creat

Fnd_File.PUT_LINE( bute5 : '|| l_attribute_rec.attribute5); Fnd_File.PUT_LINE( bute11 : '|| l_attribute_rec.attribute11); Fnd_File.PUT_LINE( bute12 : '|| l_attribute_rec.attribute12); Fnd_File.PUT_LINE( bute13 : '|| l_attribute_rec.attribute13); Fnd_File.PUT_LINE( ion API'); END IF;

IF create_receipts_rec.currency = l_chr_func_currency THEN create_receipts_rec.conversion_date := NULL; END IF;

--To verify is the distributor has a primary bill to id --The cust_acct_site_id is for the primary bill to picked u p from the table, HZ_CUST_ACCT_SITES_ALL --If there are multiple rows then the first address is fetc hed --If there are no rows at all then any bill-to address for the customer is looked into --If that is unavailable then the same is created. IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Starting Primary addr ess verification.'); END IF; create_primary_bill_to(create_receipts_rec.cust_account_id, g_chr_debug_flag, l_num_cust_acct_site_id, l_num_location); BEGIN SELECT create_receipts_rec.receipt_date INTO l_dte_gl_period_open FROM gl_period_statuses gps, fnd_application fa, hr_operating_units hou WHERE gps.application_id = fa.application_id AND hou.set_of_books_id = gps.set_of_books_id AND fa.application_short_name = 'AR' AND hou.organization_id = create_receipts_rec.org_i d AND gps.closing_status = 'O' --Used dates instead of period name -- Defect# 8233 -- SenthilR --AND UPPER(gps.period_name) = UPPER(TO_CHAR(create _receipts_rec.receipt_date, 'Mon-YY')) AND gps.start_date <= trunc(create_receipts_rec.rec eipt_date) AND gps.end_date >= trunc(create_receipts_rec.recei pt_date) AND gps.adjustment_period_flag = 'N'; SELECT create_receipts_rec.receipt_date INTO l_dte_gl_period_open FROM gl_period_statuses gps, fnd_application fa, hr_operating_units hou WHERE gps.application_id = fa.application_id AND hou.set_of_books_id = gps.set_of_books_id AND fa.application_short_name = 'SQLGL' AND hou.organization_id = create_receipts_rec.org_i d AND gps.closing_status IN ('O', 'F') --Used dates instead of period name -- Defect# 8233 -- SenthilR --AND UPPER(gps.period_name) = UPPER(TO_CHAR(create _receipts_rec.receipt_date, 'Mon-YY')) AND gps.start_date <= trunc(create_receipts_rec.rec eipt_date) AND gps.end_date >= trunc(create_receipts_rec.recei pt_date) AND gps.adjustment_period_flag = 'N';

EXCEPTION WHEN OTHERS THEN /*If the date "create_receipts_rec.re ceipt_date" is not in an open period then, enter sysdate"*/ --SELECT MAX(TO_DATE(glp.period_name,'Mon-YY')) SELECT MAX(glp.start_date) INTO l_dte_gl_period_open FROM gl_period_statuses glp, gl_period_statuses arp, fnd_application gla, fnd_application ara, hr_operating_units hou WHERE glp.application_id = gla.application_id AND arp.application_id = ara.application_id AND hou.set_of_books_id = glp.set_of_books_id AND hou.set_of_books_id = arp.set_of_books_id AND gla.application_short_name = 'SQLGL' AND ara.application_short_name = 'AR' AND hou.organization_id = create_receipts_rec.o rg_id AND glp.period_name = arp.period_name AND glp.closing_status IN ('O', 'F') AND arp.closing_status = 'O' --Used start date instead of period name -- Def ect# 8233 -- SenthilR --AND TO_DATE(glp.period_name,'Mon-YY') > creat e_receipts_rec.receipt_date AND glp.start_date > trunc(create_receipts_rec. receipt_date) AND glp.adjustment_period_flag = 'N'; IF l_dte_gl_period_open IS NULL THEN l_num_receipt_failed := l_num_receipt_failed + 1; update_rcpt_failure( , , , create_receipts_rec l_chr_receipt_number l_num_order_number l_num_primary_id);

RAISE NO_OPEN_PERIOD_EXCP; END IF; /*TD#XXXX.en*/ --Fnd_File.PUT_LINE( Fnd_File.LOG , 'As the receip t date: '||create_receipts_rec.receipt_date||'--> is not in an OPEN GL Period, G L DATE will be defaulted as SYSDTAE: '||l_dte_gl_period_open); END; --CR#72.en Ar_Receipt_Api_Pub.create_cash(p_api_version => l_num_api_version ,p_init_msg_list => Fnd_Api.G_TRUE ,p_commit => Fnd_Api.G_FALSE ,p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL ,p_currency_code

=> create_receipts_rec.currency ,p_amount => create_receipts_rec.amount_received ,p_receipt_date => create_receipts_rec.receipt_date ,p_exchange_rate_date => create_receipts_rec.conversion_date ,p_gl_date => l_dte_gl_period_open --CR#72.n ,p_maturity_date => create_receipts_rec.receipt_date ,p_deposit_date => create_receipts_rec.receipt_date ,p_customer_id => create_receipts_rec.cust_account_id ,p_customer_bank_account_num => create_receipts_rec.bank_account_number ,p_customer_receipt_reference => l_chr_order_number ,p_location => l_num_location ,p_receipt_method_id => create_receipts_rec.receipt_method_id ,p_receipt_number => l_chr_receipt_number ,p_attribute_rec => l_attribute_rec ,x_return_status => l_chr_return_status ,x_msg_count => l_num_msg_count ,x_msg_data => l_chr_msg_data ,p_cr_id => l_num_receipt_id ); IF l_chr_return_status = Fnd_Api.G_RET_STS_SUCCESS THEN l_num_receipt_created := l_num_receipt_created + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt Number '|| l_chr_receipt_number || ' created successfully'); IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_i d : '|| l_num_receipt_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_c reated : '|| l_num_receipt_created); END IF; update_rcpt_creation( , , , , create_receipts_rec l_num_receipt_id l_chr_receipt_number l_num_order_number l_num_primary_id);

ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_ERROR THEN l_num_receipt_failed := l_num_receipt_failed + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt Number '|| l_chr_receipt_number || ' failed creation'); IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_E RROR occurred.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_f ailed : '||l_num_receipt_failed); END IF; g_chr_exception_description := ' '; FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG,Fnd_Msg_Pub.GET(i, 'F')); g_chr_exception_description := g_chr_exception_des cription || SUBSTR(Fnd_Msg_Pub.GET(i, 'F'),1,200); out_chr_errbuf := SUBSTR(Fnd_Msg_Pub.GET(i, 'F'),1 ,100); END LOOP; out_chr_retcode := '1'; update_rcpt_failure( create_receipts_rec , l_chr_receipt_number , l_num_order_number , l_num_primary_id); ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_UNEXP_ERRO R THEN l_num_receipt_failed := l_num_receipt_failed + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt Number '|| l_chr_receipt_number || ' failed creation'); IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_U NEXPECTED_ERROR occurred.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_f ailed : '||l_num_receipt_failed); END IF; g_chr_exception_description := ' '; FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG,Fnd_Msg_Pub.GET(i, 'F')); g_chr_exception_description := g_chr_exception_des cription || SUBSTR(Fnd_Msg_Pub.GET(i, 'F'),1,200); out_chr_errbuf := SUBSTR(Fnd_Msg_Pub.GET(i, 'F'),1 ,100); END LOOP; out_chr_retcode := '1'; update_rcpt_failure( create_receipts_rec , l_chr_receipt_number , l_num_order_number , l_num_primary_id); END IF; EXCEPTION WHEN ORD_NUM_NOT_FOUND_EXCP THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while fetchi ng the order number.'); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when ORD_NUM_NO T_FOUND_EXCP : ');

END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code ||SQLCODE); ||SUBSTR(SQLERRM,1,200)); out_chr_errbuf := SUBSTR(SQLERRM,1,100); WHEN CONTEXT_NOT_FOUND_EXCP THEN NULL;

: '

Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '

/*TD#XXXX.sn*/ WHEN NO_OPEN_PERIOD_EXCP THEN out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Unable to derive GL date correspondi ng to receipt date: ' || create_receipts_rec.receipt_date|| '. There is no open period for both AR and GL.'); /*TD#XXXX.en*/ WHEN OTHERS THEN out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Unknown error whil e creating receipt.'); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 5: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code ||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : ' ||SUBSTR(SQLERRM,1,200)); out_chr_errbuf := SUBSTR(SQLERRM,1,100); END; END IF; END LOOP; IF in_chr_from_distributor IS NULL THEN CLOSE cur_create_receipts1; ELSE CLOSE cur_create_receipts; END IF; /*IT#977.so*//* SELECT TO_CHAR(SYSDATE,'DD-MON-RRRR HH:MM:SS') INTO l_chr_end_time FROM dual;*//*IT#977.eo*/ IF l_num_receipt_count = -1 THEN l_num_receipt_count := 0 ; END IF; Fnd_File.PUT_LINE( Fnd_File.LOG , ********************'); Fnd_File.PUT_LINE( Fnd_File.LOG , y '); Fnd_File.PUT_LINE( Fnd_File.LOG , ********************'); /*IT#977.so*//* Fnd_File.PUT_LINE( r_start_time); Fnd_File.PUT_LINE( Fnd_File.LOG , *IT#977.eo*/ Fnd_File.PUT_LINE( Fnd_File.LOG , : ' || l_num_receipt_count); Fnd_File.PUT_LINE( Fnd_File.LOG , '************************************ ' Receipt Creation Summar : '

'************************************ Fnd_File.LOG , 'Start Time: ' || l_ch ' End Time: ' || l_chr_end_time);*// 'Number of records processed 'Number of receipt created successful

ly : ' || l_num_receipt_created); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Number of receipt creation failures : ' || l_num_receipt_failed); EXCEPTION WHEN UNKNOWN_EXCP THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Unexpected error occured while re treiving functional currency'); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when UNKNOWN_EXCP: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERR M,1,200)); out_chr_errbuf := SUBSTR(SQLERRM,1,100); WHEN SEQ_NOT_FOUND_EXCP THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Unexpected error occured while cr eating receipt for the record with payment source'|| create_receipts_rec.payment _source); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when SEQ_NOT_FOUND_EXCP : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERR M,1,200)); out_chr_errbuf := SUBSTR(SQLERRM,1,100); WHEN OTHERS THEN out_chr_retcode := '2'; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Unknown error occured while execu ting receipt creation program.'); IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 6: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERR M,1,200)); out_chr_errbuf := SUBSTR(SQLERRM,1,100); END create_receipts_in_ar; /********************************************************************* * PROCEDURE : match_receipts_in_ar * * * * INPUT PARAMETERS : in_chr_debug * * in_chr_order_number * * * * OUTPUT PARAMETERS : out_chr_errbuf * * out_chr_retcode * * * * PURPOSE : To apply unapplied receipts to open invoices * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 08/09/2004 1.00 Created * *Infosys 26-AUG-2005 20.00 Modified by Bhavana Priya * * SM#228554 * * TD#2982 * *Infosys 26-AUG-2005 21.00 Modified by Bhavana Priya * * IT#1428 *

*Infosys 11-SEP-2005 26.00 Modified by Bhavana Priya for TD#3494 * * One ISS Type Order (HP Order#6000021651, * Oracle Order#6040003220) has been * * created in HLFIT from Japan to Canada.* * While matching the Invoice (#10000000646) * with the intercompany CM (#50000000169) * , system has created an zero amount * * receipt (#23824) in JPY and which * * matching there is difference of 0.52 * * exchange difference * * Bala 03-Feb-09 9.00 CI_REF_CUR - Ref cursor is used in the* * invoice matching program to avoid * * full table scan on hz_cust_accounts * *SenthilR 22-APR-2009 Modified for Defect# 8233 * *SenthilR 28-JUL-2009 Modified for Defect# 9432 * *SenthilR 05-NOV-2009 Modified for INC# 126650 * *SenthilR 08-FEB-2010 Modified for INC# 152448 * *SenthilR 07-JUN-2010 Commented ISO,IEO filter in IF block * * for INC# 173295 * ***********************************************************************/ PROCEDURE match_receipts_in_ar ( out_chr_errbuf OUT VARCHAR2 , out_chr_retcode OUT VARCHAR2 , in_chr_debug IN VARCHAR2 DEF AULT g_chr_no , in_chr_application_source IN ra_customer_ trx_all.interface_header_attribute5%TYPE -, in_chr_from_order_number IN ra_custome r_trx_all.interface_header_attribute1%TYPE -, in_chr_to_order_number IN ra_custome r_trx_all.interface_header_attribute1%TYPE , in_num_from_order_number IN oe_order_hea ders_all.order_number%TYPE , in_num_to_order_number IN oe_order_hea ders_all.order_number%TYPE , in_chr_from_distributor IN hz_cust_acco unts.account_number%TYPE , in_chr_to_distributor IN hz_cust_acco unts.account_number%TYPE) IS --Start of declaration l_num_api_version NUMBER := 1.0; -- API version l_num_msg_count NUMBER := 0; --To store the number of error messages API has encountered l_chr_msg_data VARCHAR2(2000) := NULL; --To store the error message text l_chr_return_status VARCHAR2(1) := NULL; --To store the executio n status of the called procedure l_chr_conversion_type gl_daily_rates.conversion_type%TYPE; l_num_di_amount ar_payment_schedules_all.amount_due_remainin g%TYPE := 0; l_num_di_amt_func ar_payment_schedules_all.amount_due_remainin g%TYPE := 0; l_num_actual_unapplied_amount ar_receivable_applications_all.amount_applie d%TYPE := 0; l_chr_receipt_number ar_cash_receipts_all.receipt_number%TYPE := NULL; l_num_receipt_amount XHL_OM_ORDER_RECEIPT_REF_ALL.applied_amount_ on_order%TYPE := 0; --To store unapplied amount available on a receipt l_num_invoice_matched_amount XHL_OM_ORDER_RECEIPT_REF_ALL.invoice_matched

_amount%TYPE := 0; --To store invice matched amount on a receipt l_num_receipt_amt_func XHL_OM_ORDER_RECEIPT_REF_ALL.applied_amount_ on_order%TYPE := 0; -- To store the receipt amount in functional currency l_num_receipt_amt_applied XHL_OM_ORDER_RECEIPT_REF_ALL.applied_amount_ on_order%TYPE := 0; -- To store the receipt amount applied in receipt currency l_num_amt_applied XHL_OM_ORDER_RECEIPT_REF_ALL.applied_amount_ on_order%TYPE := 0; -- To store the receipt amount to be applied l_num_di_exc_rate gl_daily_rates.conversion_rate%TYPE := 0 ; -- To store the open invoice exhange rate l_num_receipt_exc_rate gl_daily_rates.conversion_rate%TYPE := 0 ; -- To store the payment currency conversion rate -l_num_trans_to_rcpt_exc_rate gl_daily_rates.conversion_rate%TYPE := 0 ; -- To store the invoice to payment currency conversion rate l_dte_receipt_date ar_cash_receipts_all.receipt_date%TYPE := NU LL; --To store receipt creation date l_dte_conversion_date ar_cash_receipts_all.exchange_date%TYPE := N ULL; --To store the conversion date for the receipt l_chr_payment_currency XHL_OM_PAYMENT_LINES_ALL.payment_line_curren cy%TYPE := NULL; -- To store the payment line currency l_chr_functional_currency gl_sets_of_books.currency_code%TYPE := NULL; -- To store the functional currency l_num_cash_receipt_id XHL_OM_ORDER_RECEIPT_REF_ALL.cash_receipt_id %TYPE := 0; -- To store the receipt Id l_num_header_id oe_order_headers_all.header_id%TYPE := NULL; --To store the order header id l_num_adjustment_id XHL_AR_APPLICATIONS_INTERIM.debit_line_refer ence%TYPE := NULL; l_num_collection_id XHL_AR_APPLICATIONS_INTERIM.credit_line_refe rence%TYPE := NULL; l_chr_collection_id ar_cash_receipts_all.attribute5%TYPE := NULL ; l_num_match_success NUMBER := 0; --To store number of records ma tched successfully l_num_match_failed NUMBER := 0;--To store the number of records that failed matching l_num_process_fail_count NUMBER := 0; --To store the number of records that matched but failed futher processing l_num_failure_count NUMBER := 0;--To store the number of records that failed processing /*IT#977.so*//* l_chr_start_time VARCHAR2(50) := NULL; l_chr_end_time VARCHAR2(50) := NULL;*//*IT#977.eo*/ l_chr_accountingwb VARCHAR2(15) := 'ACCOUNTINGWB'; l_chr_orderadj VARCHAR2(15) := 'ORDERADJ'; l_num_collec_rec_found l_chr_check_number 1428.n l_chr_proc_country l_chr_ship_country l_chr_err_position l_skip_rcpt_inv_matching VARCHAR2(5) := 'XX'; VARCHAR2(5) := 'XX'; VARCHAR2(500); BOOLEAN := FALSE; NUMBER := 0;--SM#228554.n ar_cash_receipts_all.attribute11%TYPE; --IT#

--TD#3494.sn l_chr_iss_user_conv_type pe%TYPE := 'HP3000 Monthly'; l_chr_iss_type2 l_chr_order_category NULL; l_chr_default_conv_type --TD#3494.en -- SM#232684.sn l_dte_rcpt_apply_gl_date l_dte_rcpt_apply_trx_date l_num_org_id l_dte_sysdate NO_OPEN_PERIOD_EXCP -- SM#232684.en UNKNOWN_EXCP SKIP_RCPT_EXCP SKIP_DI_EXCP SKIP_MISC_RCPT_EXCP --Proj#51744.sn l_chr_iss_category

gl_daily_conversion_types.user_conversion_ty VARCHAR2(10) := 'ISO-TT'; oe_transaction_types_all.attribute8%TYPE := gl_daily_rates.conversion_type%TYPE;

DATE; DATE; NUMBER := FND_PROFILE.VALUE('ORG_ID'); DATE := SYSDATE; EXCEPTION; EXCEPTION; EXCEPTION; EXCEPTION; EXCEPTION; FND_FLEX_VALUES.attribute6%TYPE;

TYPE iss_category_tab_t IS TABLE OF FND_FLEX_VALUES.attribute6%TYPE INDEX BY FND_FLEX_VALUES.flex_value%TYPE; l_tab_iss_category iss_category_tab_t; CURSOR cur_iss_category IS SELECT flex_value order_type_code, attribute6 iss_category FROM fnd_flex_values WHERE flex_value_set_id = (SELECT flex_value_set_id FROM fnd_flex_value_sets WHERE flex_value_set_name = 'XHL_OM_ORDER_TYP ES'); --Proj#51744.en -- CI_REF_CUR sn /* --Cursor to pick all the open invoices and debit memos in RA_CUSTOMER_TRX_ ALL CURSOR cur_open_dis IS SELECT rct.interface_header_context CONTEXT , rct.interface_header_attribute5 application_source , rct.attribute1 header_id , rct.interface_header_attribute15 inv_header_id , rct.interface_header_attribute2 attribute2 , rct.interface_header_attribute1 order_number , rct.customer_trx_id customer_trx_id , rct.trx_number di_number , rct.org_id org_id , rct.trx_date di_date , rct.invoice_currency_code di_currency , aps.amount_due_remaining di_amount FROM hz_cust_accounts hca , ra_customer_trx rct , ar_payment_schedules aps WHERE aps.amount_due_original > 0 --AND aps.amount_due_remaining > 0 --SM#310794.o

AND SIGN(aps.amount_due_remaining) = 1 --SM#310794.n AND aps.CLASS IN (g_chr_inv_class, g_chr_dm_class) AND aps.status = g_chr_open_status AND rct.customer_trx_id = aps.customer_trx_id AND rct.bill_to_customer_id = hca.cust_account_id AND NVL(hca.account_number, 100) BETWEEN NVL(NVL(in_chr_from_distrib utor, hca.account_number),100) AND NVL(NVL(in_chr_to_distributor, hca.account_nu mber),100) AND NVL(rct.interface_header_attribute15, 100) BETWEEN NVL(NVL(TO_CH AR(in_num_from_order_number), rct.interface_header_attribute15),100) AND NVL(NVL (TO_CHAR(in_num_to_order_number), rct.interface_header_attribute15),100) AND NVL(rct.interface_header_attribute5, 'A') = NVL(NVL(DECODE(in_ch r_application_source,'ORDERPAY',rct.interface_header_attribute5,in_chr_applicati on_source), rct.interface_header_attribute5),'A') -- Added on 09-Sep-05 as converted invoices are not getting matched with receipt s - Start -AND rct.interface_header_context IN (g_chr_ordent_header_context, g_chr_dm_header_context) AND rct.interface_header_context IN (g_chr_ordent_header_context, g_ chr_dm_header_context, g_chr_convord_header_context) -- Added on 09-Sep-05 as converted invoices are not getting matched with receipt s - End ORDER BY rct.trx_number, rct.trx_date; */ --Cursor to pick all the open invoices and debit memos in RA_CUSTOMER_TRX_ ALL TYPE cur_open_dis_type IS REF CURSOR; cur_open_dis cur_open_dis_type; TYPE open_dis_rec_type IS RECORD ( context ra_customer_trx.interface_header_context%TYPE, application_source ra_customer_trx.interface_header_attribute5%TYPE, header_id ra_customer_trx.attribute1%TYPE, inv_header_id ra_customer_trx.interface_header_attribute15%TYPE, attribute2 ra_customer_trx.interface_header_attribute2%TYPE, order_number ra_customer_trx.interface_header_attribute1%TYPE, customer_trx_id ra_customer_trx.customer_trx_id%TYPE, di_number ra_customer_trx.trx_number%TYPE, org_id ra_customer_trx.org_id%TYPE, di_date ra_customer_trx.trx_date%TYPE, di_currency ra_customer_trx.invoice_currency_code%TYPE, di_amount ar_payment_schedules.amount_due_remaining%TYPE, pay_class ar_payment_schedules.class%TYPE ); open_dis_rec open_dis_rec_type; l_chr_DS_ID_query VARCHAR2(4000) := 'SELECT rct.interface_header_context , rct.interface_header_attribute5 , rct.attribute1 , rct.interface_header_attribute15 , rct.interface_header_attribute2 , rct.interface_header_attribute1 , rct.customer_trx_id , rct.trx_number , rct.org_id CONTEXT application_source header_id inv_header_id attribute2 order_number customer_trx_id di_number org_id

, rct.trx_date di_date , rct.invoice_currency_code di_currency , aps.amount_due_remaining di_amount , aps.CLASS pay_class FROM hz_cust_accounts hca, ra_customer_trx rct, ar_payment_schedules aps WHERE aps.amount_due_original > 0 AND SIGN(aps.amount_due_remaining) = 1' || ' AND aps.CLASS IN ( ''' ||g_chr_inv_class || ''' , '''||g_chr_dm_cla ss||''')' || ' AND aps.status = '''||g_chr_open_status||'''' || ' AND rct.customer_trx_id = aps.customer_trx_id' || ' AND rct.bill_to_customer_id = hca.cust_account_id' || ' AND hca.account_number BETWEEN '''||in_chr_from_distributor||''' AN D '''||in_chr_to_distributor||'''' || ' AND NVL(rct.interface_header_attribute15, 100) BETWEEN NVL(NVL(TO_C HAR( '''||in_num_from_order_number||'''), rct.interface_header_attribute15),100) AND NVL(NVL(TO_CHAR('''||in_num_to_order_number||'''), rct.interface_header_att ribute15),100)' || ' AND NVL(rct.interface_header_attribute5, ''A'') = NVL(NVL(DECODE('' '||in_chr_application_source||''',''ORDERPAY'',rct.interface_header_attribute5,' ''||in_chr_application_source||'''), rct.interface_header_attribute5),''A'')' || ' AND rct.interface_header_context IN ('''||g_chr_ordent_header_conte xt||''', '''||g_chr_dm_header_context||''', '''||g_chr_convord_header_context||' '')' ||' ORDER BY rct.trx_number, rct.trx_date'; l_chr_no_DS_ID_query VARCHAR2(4000) := 'SELECT rct.interface_header_context CONTEXT , rct.interface_header_attribute5 application_source , rct.attribute1 header_id , rct.interface_header_attribute15 inv_header_id , rct.interface_header_attribute2 attribute2 , rct.interface_header_attribute1 order_number , rct.customer_trx_id customer_trx_id , rct.trx_number di_number , rct.org_id org_id , rct.trx_date di_date , rct.invoice_currency_code di_currency , aps.amount_due_remaining di_amount , aps.CLASS pay_class FROM ra_customer_trx rct, ar_payment_schedules aps WHERE aps.amount_due_original > 0 AND SIGN(aps.amount_due_remaining) = 1' || ' AND aps.CLASS IN ( ''' ||g_chr_inv_class || ''' , '''||g_chr_dm_cla ss||''')' || ' AND aps.status = '''||g_chr_open_status||'''' || ' AND rct.customer_trx_id = aps.customer_trx_id' || ' AND NVL(rct.interface_header_attribute15, 100) BETWEEN NVL(NVL(TO_C HAR( '''||in_num_from_order_number||'''), rct.interface_header_attribute15),100) AND NVL(NVL(TO_CHAR('''||in_num_to_order_number||'''), rct.interface_header_att ribute15),100)' || ' AND NVL(rct.interface_header_attribute5, ''A'') = NVL(NVL(DECODE('' '||in_chr_application_source||''',''ORDERPAY'',rct.interface_header_attribute5,' ''||in_chr_application_source||'''), rct.interface_header_attribute5),''A'')' || ' AND rct.interface_header_context IN ('''||g_chr_ordent_header_conte xt||''', '''||g_chr_dm_header_context||''', '''||g_chr_convord_header_context||' '')'

||' ORDER BY rct.trx_number, rct.trx_date'; -- CI_REF_CUR en --Cursor to pick all the unapplied receipts from XHL_OM_ORDER_RECEIPT_REF_ ALL CURSOR cur_unapplied_receipts( in_num_order_header_id oe_order_headers_all .header_id%TYPE , in_num_org_id ra_customer_trx_all. org_id%TYPE) IS SELECT order_receipt_ref_id , cash_receipt_id , receipt_number , payment_line_id , applied_amount_on_order , invoice_matched_amount FROM XHL_OM_ORDER_RECEIPT_REF_ALL WHERE applied_amount_on_order - invoice_matched_amount > 0 AND receipt_status = g_chr_unapp_status AND org_id = in_num_org_id AND order_header_id = in_num_order_header_id; --End of declaration --Cursor to pick all the collection ids from XHL_AR_APPLICATIONS_INTERIM CURSOR cur_unapplied_misc_rcpts( in_num_adjustment_id XHL_AR_APPLICATIONS_ INTERIM.debit_line_reference%TYPE , in_num_org_id ra_customer_trx_all. org_id%TYPE , in_chr_payment_source XHL_AR_APPLICATIONS_INTERIM.debit_payment_sour ce%TYPE) IS SELECT credit_line_reference collection_id , amount_to_apply receipt_amount FROM XHL_AR_APPLICATIONS_INTERIM WHERE credit_line_type = g_chr_receipt_type AND org_id = in_num_org_id AND debit_line_reference = in_num_adjustment_id AND debit_payment_source = in_chr_payment_source; --End of declaration BEGIN Fnd_File.PUT_LINE( Fnd_File.LOG , '************************************ ********************'); Fnd_File.PUT_LINE( Fnd_File.LOG , ' Receipt Matching to Deb it Items '); Fnd_File.PUT_LINE( Fnd_File.LOG , '************************************ ********************'); /*IT#977.so*//* SELECT TO_CHAR(SYSDATE,'DD-MON-RRRR HH:MM:SS') INTO l_chr_start_time FROM dual;*//*IT#977.eo*/

out_chr_retcode := '0'; out_chr_errbuf := 'Procedure completed successfully.'; --To get the conversion type from the profile option IF Fnd_Profile.DEFINED('AR_DEFAULT_EXCHANGE_RATE_TYPE') THEN l_chr_conversion_type := Fnd_Profile.VALUE('AR_DEFAULT_EXCHANGE_RATE _TYPE');

l_chr_default_conv_type := l_chr_conversion_type; --TD#3494 END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_chr_conversion_type :' ||l_chr_ conversion_type ); END IF; IF l_chr_conversion_type IS NULL THEN out_chr_retcode := '2'; RAISE UNKNOWN_EXCP; END IF; -- To get BEGIN SELECT INTO FROM WHERE ID')); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_chr_functional_currency :' | |l_chr_functional_currency ); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '2'; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while retreiving functio nal currency from GL_SET_OF_BOOKS '); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 7: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQL ERRM,1,200)); RAISE UNKNOWN_EXCP; WHEN OTHERS THEN out_chr_retcode := '2'; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while retreiving functio nal currency from GL_SET_OF_BOOKS '); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 8: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQL ERRM,1,200)); RAISE UNKNOWN_EXCP; END; --Proj#51744.sn FOR rec_iss_category IN cur_iss_category LOOP l_tab_iss_category(rec_iss_category.order_type_code) := nvl(rec_iss_ category.iss_category, '0'); END LOOP; --Proj#51744.en the functional Currency currency_code l_chr_functional_currency gl_sets_of_books set_of_books_id = TO_NUMBER(Fnd_Profile.VALUE('GL_SET_OF_BKS_

-- CI_REF_CUR sn -- Applying the receipts on the open debit items --FOR open_dis_rec IN cur_open_dis IF in_chr_from_distributor IS NOT NULL AND in_chr_to_distributor IS NOT NULL THEN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Cursor for open invoices: ') ; Fnd_File.PUT_LINE( Fnd_File.LOG , l_chr_DS_ID_query); END IF; OPEN cur_open_dis FOR l_chr_DS_ID_query; ELSE IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Cursor for open invoices: ') ; Fnd_File.PUT_LINE( Fnd_File.LOG , l_chr_no_DS_ID_query); END IF; OPEN cur_open_dis FOR l_chr_no_DS_ID_query; END IF; LOOP FETCH cur_open_dis INTO open_dis_rec; EXIT WHEN cur_open_dis%NOTFOUND; l_skip_rcpt_inv_matching := FALSE; BEGIN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In cur_open_dis. Cursor v ariables:'); Fnd_File.PUT_LINE( Fnd_File.LOG : '||open_dis_rec.order_number); Fnd_File.PUT_LINE( Fnd_File.LOG _id : '||open_dis_rec.customer_trx_id); Fnd_File.PUT_LINE( Fnd_File.LOG : '||open_dis_rec.di_number); Fnd_File.PUT_LINE( Fnd_File.LOG : '||open_dis_rec.di_date); Fnd_File.PUT_LINE( Fnd_File.LOG : '||open_dis_rec.di_currency); Fnd_File.PUT_LINE( Fnd_File.LOG : '||open_dis_rec.org_id); Fnd_File.PUT_LINE( Fnd_File.LOG : '||open_dis_rec.header_id); Fnd_File.PUT_LINE( Fnd_File.LOG : '||open_dis_rec.di_amount); END IF; , 'open_dis_rec.order_number , 'open_dis_rec.customer_trx , 'open_dis_rec.di_number , 'open_dis_rec.di_date , 'open_dis_rec.di_currency , 'open_dis_rec.org_id , 'open_dis_rec.header_id , 'open_dis_rec.di_amount

IF open_dis_rec.di_currency IS NULL THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Currency not found on the

Debit Memo.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Debit item number : ' || open_dis_rec.di_number); RAISE SKIP_DI_EXCP; END IF; IF open_dis_rec.di_date IS NULL THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Debit item creation date not found.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Debit item number : '|| o pen_dis_rec.di_number); RAISE SKIP_DI_EXCP; END IF; l_num_di_amount := open_dis_rec.di_amount; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In debit items loop, l_num _di_amount : '|| l_num_di_amount); END IF; --TD#3228.sn IF open_dis_rec.application_source = 'ORDERADJ' AND open_dis_rec .CONTEXT = g_chr_dm_header_context THEN l_num_header_id := TO_NUMBER(open_dis_rec.header_id); /* Added on 09-Sep-05 as converted invoices are not getting m atched with receipts - Start */ -ELSIF open_dis_rec.CONTEXT = g_chr_ordent_header_context THEN ELSIF open_dis_rec.CONTEXT IN (g_chr_ordent_header_context, g_ch r_convord_header_context) THEN /* Added on 09-Sep-05 as converted invoices are not getting m atched with receipts - End */ --Change for 'CHO' l_num_header_id := TO_NUMBER(open_dis_rec.inv_header_id); END IF; --TD#3228.en --TD#3494.sn IF l_num_header_id IS NOT NULL THEN BEGIN SELECT otta.attribute8 INTO l_chr_order_category FROM oe_transaction_types_all otta, oe_order_headers_all ooha WHERE ooha.order_type_id = otta.transaction_type_id AND ooha.header_id = l_num_header_id; EXCEPTION WHEN OTHERS THEN l_chr_order_category := '-XXX'; END; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Order Category Code: '||l_ chr_order_category); --Proj#51744.sn BEGIN l_chr_iss_category := l_tab_iss_category(NVL(l_chr_order_c

ategory, 'XXX')); EXCEPTION WHEN OTHERS THEN l_chr_iss_category := '0'; END; IF l_chr_iss_category = '2' THEN --IF l_chr_order_category = l_chr_iss_type2 THEN --Proj#51744.en BEGIN SELECT gdct.conversion_type INTO l_chr_conversion_type FROM gl_daily_conversion_types gdct WHERE gdct.user_conversion_type = l_chr_iss_user_conv_ type; EXCEPTION WHEN OTHERS THEN l_chr_conversion_type := NULL; END; IF l_chr_conversion_type IS NULL THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error occurred while fetching the conversion type for the ISS type II Order.'); out_chr_retcode := '2'; RAISE UNKNOWN_EXCP; END IF; ELSE l_chr_conversion_type := l_chr_default_conv_type; --TD#349 4.n END IF; END IF; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Conversion Type: '||l_chr_con version_type); --TD#3494.en IF open_dis_rec.org_id = 166 AND l_chr_order_category IN ('ISO','IEO') AND open_dis_rec.pay_class = g_chr_inv_class THEN BEGIN l_chr_err_position := 'Fetching processing country code from primary key: ' || open_dis_rec.inv_header_id; SELECT oa.attribute5 INTO l_chr_proc_country FROM apps.oe_agreements oa, apps.oe_order_headers_all oha WHERE oa.agreement_id = oha.agreement_id AND oha.header_id = open_dis_rec.inv_header_id; l_chr_err_position := 'Fetching shipping country code from p rimary key: ' || open_dis_rec.inv_header_id; SELECT hl.country INTO l_chr_ship_country FROM apps.hz_cust_site_uses_all hcsu, apps.hz_cust_acct_sites_all hcas, apps.hz_party_sites hps, apps.hz_locations hl, apps.oe_order_headers_all ooh WHERE hcsu.cust_acct_site_id = hcas.cust_acct_site_id AND hcas.party_site_id = hps.party_site_id

AND hps.location_id = hl.location_id AND ooh.ship_to_org_id = hcsu.site_use_id AND ooh.header_id = open_dis_rec.inv_header_id; IF (l_chr_proc_country IN ('GB') IN ('IE','IS')) OR (l_chr_proc_country IN ('IE','IS') AND l_chr_ship_country IN ('GB')) OR (l_chr_proc_country IN ('IE') IN ('IS')) OR (l_chr_proc_country IN ('IS') IN ('IE')) THEN l_skip_rcpt_inv_matching := TRUE; ELSE l_skip_rcpt_inv_matching := FALSE; END IF; EXCEPTION WHEN OTHERS THEN out_chr_retcode := '2'; out_chr_errbuf := 'Error while '||l_chr_err_position; Fnd_File.PUT_LINE(Fnd_File.LOG,out_chr_errbuf); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQ LCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SU BSTR(SQLERRM,1,200)); l_skip_rcpt_inv_matching := FALSE; Fnd_File.PUT_LINE(Fnd_File.LOG,'Skipping receipt(s) to In voice matching for order# '||open_dis_rec.order_number); RAISE SKIP_DI_EXCP; END; ELSE l_skip_rcpt_inv_matching := FALSE; END IF; IF NOT l_skip_rcpt_inv_matching THEN IF open_dis_rec.application_source = 'ACCOUNTINGWB' AND open_d is_rec.CONTEXT = g_chr_dm_header_context THEN --miscpayments l_num_adjustment_id := TO_NUMBER(open_dis_rec.attribute2); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_adjustment_id : '||l_num_adjustment_id); END IF; FOR unapplied_misc_rcpts_rec IN cur_unapplied_misc_rcpts( l_ num_adjustment_id , op en_dis_rec.org_id , l_ chr_accountingwb) LOOP BEGIN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In cur_unapplied_ misc_rcpts. Cursor variables:'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_misc_rc pts_rec.collection_id : '||unapplied_misc_rcpts_rec.collection_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_misc_rc pts_rec.receipt_amount : '||unapplied_misc_rcpts_rec.receipt_amount); AND l_chr_ship_country AND l_chr_ship_country AND l_chr_ship_country

END IF; -- exit when no more matched amount in the open invoice EXIT WHEN l_num_di_amount <= 0; l_chr_collection_id := TO_CHAR(unapplied_misc_rcpts_rec .collection_id); --To get the receipt against the collection BEGIN --SM#302815.sn SELECT transaction_ref_number INTO l_num_cash_receipt_id FROM xhl_ar_ds_collec_dtls_all WHERE collection_id = unapplied_misc_rcpts_rec.coll ection_id; --SM#302815.en SELECT , , , , INTO , , , , FROM WHERE 15.o cash_receipt_id = l_num_cash_receipt_id; --SM #302815.n IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG '||l_num_cash_receipt_id); Fnd_File.PUT_LINE( Fnd_File.LOG '||l_chr_payment_currency); Fnd_File.PUT_LINE( Fnd_File.LOG '||l_dte_receipt_date); Fnd_File.PUT_LINE( Fnd_File.LOG '||l_chr_receipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG '||l_dte_conversion_date); END IF; , 'l_num_cash_rec , 'l_chr_payment_ , 'l_dte_receipt_ , 'l_chr_receipt_ , 'l_dte_conversi cash_receipt_id currency_code receipt_date receipt_number exchange_date l_num_cash_receipt_id l_chr_payment_currency l_dte_receipt_date l_chr_receipt_number l_dte_conversion_date ar_cash_receipts --attribute5 = l_chr_collection_id; --SM#3028

eipt_id : currency : date number : :

on_date :

EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while re treiving receipt from AR_CASH_RECEIPTS'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 9: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message

: '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_MISC_RCPT_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while re treiving receipt from AR_CASH_RECEIPTS'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 10: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_MISC_RCPT_EXCP; END; /* THEN ency THEN l_dte_conversion_date := open_dis_rec.di_date; END IF; IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE( FND_FILE.LOG , 'l_dte_conve rsion_date : '||l_dte_conversion_date); END IF; SELECT conversion_rate INTO l_num_trans_to_rcpt_exc_rate FROM gl_daily_rates WHERE status_code = 'O' AND from_currency = open_dis_rec.di_currency AND to_currency = l_chr_payment_currency AND conversion_type = l_chr_conversion_type AND conversion_date = TO_DATE(l_dte_conversion _date,'DD-MON-RRRR'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE( FND_FILE.LOG , 'l_num_trans _to_rcpt_exc_rate : '||l_num_trans_to_rcpt_exc_rate); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1 ; FND_FILE.PUT_LINE( FND_FILE.LOG , 'Error while retreiving conversion rate from debit memo currency to payemtn currency.'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE(FND_FILE.LOG,'In when NO_ DATA_FOUND: '); END IF; FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Code : '||SQLCODE); FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); IF open_dis_rec.di_currency <> l_chr_payment_currency BEGIN IF l_chr_payment_currency = l_chr_functional_curr

RAISE SKIP_MISC_RCPT_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1 ; FND_FILE.PUT_LINE( FND_FILE.LOG , 'Error while retreiving conversion rate from debit memo currency to payemtn currency.'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE(FND_FILE.LOG,'In when oth ers: '); END IF; FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Code : '||SQLCODE); FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_MISC_RCPT_EXCP; END; ELSE l_num_trans_to_rcpt_exc_rate := NULL; END IF; IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE( FND_FILE.LOG , 'l_num_trans_to_rc pt_exc_rate : '||l_num_trans_to_rcpt_exc_rate); END IF;*/ -- To get the actual unapplied amount of the current re ceipt BEGIN SELECT INTO FROM WHERE AND SUM(amount_applied) l_num_actual_unapplied_amount ar_receivable_applications status = g_chr_unapp_status cash_receipt_id = l_num_cash_receipt_id;

IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_actual_un applied_amount : '|| l_num_actual_unapplied_amount); END IF; EXCEPTION WHEN OTHERS THEN l_num_failure_count := l_num_failure_count + 1; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error when rece ipt amount from AR_RECEIVABLE_APPLICATIONS.'); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Receipt number : '||l_chr_receipt_number); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 11: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_MISC_RCPT_EXCP; END; IF l_num_actual_unapplied_amount < unapplied_misc_rcpts _rec.receipt_amount THEN

l_num_receipt_amount := ROUND(l_num_actual_unapplied _amount,2); ELSE l_num_receipt_amount := ROUND(unapplied_misc_rcpts_r ec.receipt_amount,2); END IF; --To set the exchange rate for cross currency matching IF open_dis_rec.di_currency <> l_chr_functional_currenc y THEN BEGIN SELECT INTO FROM WHERE y AND conversion_type = l_chr_conversion_type AND conversion_date = TO_DATE(open_dis_rec.di_ date,'DD-MON-RRRR'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_di_exc _rate : '|| l_num_di_exc_rate); END IF; l_num_di_amt_func := ROUND(l_num_di_amount * l_nu m_di_exc_rate,2); EXCEPTION WHEN NO_DATA_FOUND THEN l_num_failure_count := l_num_failure_count + 1 ; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when NO_ DATA_FOUND: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_DI_EXCP; WHEN OTHERS THEN l_num_failure_count := l_num_failure_count + 1 ; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when oth ers 12: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_DI_EXCP; conversion_rate l_num_di_exc_rate gl_daily_rates --status_code = 'O' AND from_currency = open_dis_rec.di_currency AND to_currency = l_chr_functional_currenc

END; ELSE l_num_di_amt_func := ROUND(l_num_di_amount,2); l_num_di_exc_rate := NULL; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_di_amt_func : '|| l_num_di_amt_func); END IF; IF l_chr_payment_currency <> l_chr_functional_currency THEN BEGIN SELECT INTO FROM WHERE y AND conversion_type = l_chr_conversion_type AND conversion_date = TO_DATE(l_dte_conversion _date,'DD-MON-RRRR'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_receip t_exc_rate : '|| l_num_receipt_exc_rate); END IF; l_num_receipt_amt_func := ROUND(l_num_receipt_amo unt * l_num_receipt_exc_rate,2); EXCEPTION WHEN NO_DATA_FOUND THEN l_num_failure_count := l_num_failure_count + 1 ; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when NO_ DATA_FOUND: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_MISC_RCPT_EXCP; WHEN OTHERS THEN l_num_failure_count := l_num_failure_count + 1 ; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when oth ers 13: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); conversion_rate l_num_receipt_exc_rate gl_daily_rates --status_code = 'O' AND from_currency = l_chr_payment_currency AND to_currency = l_chr_functional_currenc

Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_MISC_RCPT_EXCP; END; ELSE l_num_receipt_amt_func := ROUND(l_num_receipt_amount ,2); l_num_receipt_exc_rate := NULL; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_receipt_amt_ func : '|| l_num_receipt_amt_func); END IF; IF l_num_di_amt_func >= l_num_receipt_amt_func THEN l_num_amt_applied := l_num_receipt_amt_func; ELSE l_num_amt_applied := l_num_di_amt_func; IF l_chr_payment_currency <> l_chr_functional_curren cy THEN l_num_receipt_amount := ROUND(l_num_amt_applied / l_num_receipt_exc_rate,2); ELSE l_num_receipt_amount := ROUND(l_num_amt_applied,2 ); END IF; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_amt_applied : '|| l_num_amt_applied); END IF; IF open_dis_rec.di_currency <> l_chr_functional_currenc y THEN l_num_amt_applied := ROUND((l_num_amt_applied/l_num_ di_exc_rate),2); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit memo curr ency is not equal to functional currency.'); Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_amt_appli ed : '|| l_num_amt_applied); END IF; END IF; IF open_dis_rec.di_currency = l_chr_payment_currency TH EN l_num_receipt_amount := NULL; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit memo curr ency is equal to payment currency.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_ amount : ' || l_num_receipt_amount); END IF; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_amt_applied : ' || l_num_amt_applied);

Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_amo unt : ' || l_num_receipt_amount); END IF; -- SM#232684.sn BEGIN SELECT MAX(gl_date) INTO l_dte_rcpt_apply_gl_date FROM ar_payment_schedules WHERE cash_receipt_id = l_num_cash_receipt_id OR customer_trx_id = open_dis_rec.customer_trx_id; EXCEPTION WHEN OTHERS THEN l_dte_rcpt_apply_gl_date := SYSDATE; END; /**********************INC49020 - Changed on 12-Nov-08************ **********/ BEGIN SELECT MAX(trx_date) INTO l_dte_rcpt_apply_trx_date FROM ar_payment_schedules WHERE cash_receipt_id = l_num_cash_receipt_id OR customer_trx_id = open_dis_rec.customer_trx_id; EXCEPTION WHEN OTHERS THEN l_dte_rcpt_apply_trx_date := SYSDATE; END; IF l_dte_rcpt_apply_trx_date > l_dte_rcpt_apply_gl_date THEN l_dte_rcpt_apply_gl_date := l_dte_rcpt_apply_trx_date; END IF; /****************************************************************** *********/ BEGIN SELECT l_dte_rcpt_apply_gl_date INTO l_dte_rcpt_apply_gl_date FROM gl_period_statuses gps, fnd_application fa, hr_operating_units hou WHERE gps.application_id = fa.application_id AND hou.set_of_books_id = gps.set_of_books_id AND fa.application_short_name = 'AR' AND hou.organization_id = l_num_org_id AND gps.closing_status = 'O' --Used dates instead of period name -- Defect# 82 33 -- SenthilR --AND UPPER(gps.period_name) = UPPER(TO_CHAR(l_dt e_rcpt_apply_gl_date, 'Mon-YY')) AND gps.start_date <= trunc(l_dte_rcpt_apply_gl_d ate) AND gps.end_date >= trunc(l_dte_rcpt_apply_gl_dat e) AND gps.adjustment_period_flag = 'N';

SELECT l_dte_rcpt_apply_gl_date INTO l_dte_rcpt_apply_gl_date FROM gl_period_statuses gps, fnd_application fa, hr_operating_units hou WHERE gps.application_id = fa.application_id AND hou.set_of_books_id = gps.set_of_books_id AND fa.application_short_name = 'SQLGL' AND hou.organization_id = l_num_org_id AND gps.closing_status IN ('O', 'F') --Used dates instead of period name -- Defect# 82 33 -- SenthilR --AND UPPER(gps.period_name) = UPPER(TO_CHAR(l_dt e_rcpt_apply_gl_date, 'Mon-YY')); AND gps.start_date <= trunc(l_dte_rcpt_apply_gl_d ate) AND gps.end_date >= trunc(l_dte_rcpt_apply_gl_dat e) AND gps.adjustment_period_flag = 'N'; EXCEPTION WHEN NO_DATA_FOUND THEN --Used dates instead of period name -- Defect# 8233 - SenthilR --SELECT MIN(TO_DATE(glp.period_name,'Mon-YY')) SELECT MIN(glp.start_date) INTO l_dte_rcpt_apply_gl_date FROM gl_period_statuses glp, gl_period_statuses arp, fnd_application gla, fnd_application ara, hr_operating_units hou WHERE glp.application_id = gla.application_id AND arp.application_id = ara.application_id AND hou.set_of_books_id = glp.set_of_books_id AND hou.set_of_books_id = arp.set_of_books_id AND gla.application_short_name = 'SQLGL' AND ara.application_short_name = 'AR' AND hou.organization_id = l_num_org_id AND glp.period_name = arp.period_name AND glp.closing_status IN ('O', 'F') AND arp.closing_status = 'O'; IF l_dte_rcpt_apply_gl_date IS NULL THEN RAISE NO_OPEN_PERIOD_EXCP; END IF; END; -- SM#232684.en --Call the standard apply procedure Ar_Receipt_Api_Pub.APPLY( p_api_version => l_num_api_version , p_init_msg_list => Fnd_Api.G_TRUE , p_commit => Fnd_Api.G_FALSE , p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL , p_cash_receipt_id

=> l_num_cash_receipt_id , p_customer_trx_id => open_dis_rec.customer_trx_id , p_amount_applied => l_num_amt_applied --, p_trans_to_receipt_rate => l_num_trans_to_rcpt_exc_rate -- SM#232684.so --, p_apply_date => SYSDATE --, p_apply_gl_date => SYSDATE -- SM#232684.eo -- SM#232684.sn , p_apply_date => l_dte_rcpt_apply_gl_date , p_apply_gl_date => l_dte_rcpt_apply_gl_date -- SM#232684.en , p_show_closed_invoices => g_chr_no , p_trx_number => NULL , p_receipt_number => NULL , p_installment => NULL , p_applied_payment_schedule_id => NULL , p_amount_applied_from => l_num_receipt_amount , p_discount => NULL , p_ussgl_transaction_code => NULL , p_customer_trx_line_id => NULL , p_line_number => NULL , p_called_from => NULL , p_move_deferred_tax => NULL , p_link_to_trx_hist_id => NULL , p_attribute_rec => NULL , p_global_attribute_rec => NULL , p_comments => NULL , p_payment_set_id => NULL , p_application_ref_type => NULL , p_application_ref_id => NULL , p_application_ref_num => NULL , p_secondary_application_ref_i

d => NULL , p_application_ref_reason => NULL , p_customer_reference => NULL , x_return_status => l_chr_return_status , x_msg_count => l_num_msg_count , x_msg_data => l_chr_msg_data); --On successful matching, update the collections table IF l_chr_return_status = Fnd_Api.G_RET_STS_SUCCESS THEN l_num_di_amount := l_num_di_amount - l_num_amt_appli ed; /*IF l_num_trans_to_rcpt_exc_rate IS NOT NULL THEN l_num_receipt_amt_applied := l_num_amt_applied * l_num_trans_to_rcpt_exc_rate; ELSE IF l_num_receipt_exc_rate IS NOT NULL THEN l_num_receipt_amt_applied := l_num_amt_applie d / l_num_receipt_exc_rate; ELSE l_num_receipt_amt_applied := l_num_amt_applie d; END IF; END IF;*/ IF l_num_receipt_amount IS NULL THEN l_num_receipt_amt_applied := l_num_amt_applied; ELSE l_num_receipt_amt_applied := l_num_receipt_amoun t; END IF; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt applic ation successful.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Debit amount o pen = l_num_di_amount : ' || l_num_di_amount); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_ amt_applied : ' || l_num_receipt_amt_applied); END IF; BEGIN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Updating ar _cash_receipts_all'); END IF; --Maintain the applied amount on attribute13 in A R_CASH_RECEIPTS_ALL UPDATE ar_cash_receipts_all SET attribute13 = TO_CHAR(NVL(TO_NUMBER( attribute13),0) + l_num_receipt_amt_applied) , last_updated_by = g_num_user_id , last_update_date = SYSDATE , last_update_login = g_num_login_id WHERE cash_receipt_id = l_num_cash_receipt_id;

IF SQL%ROWCOUNT = 0 THEN out_chr_retcode := '1'; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error whi le updating the AR_CASH_RECEIPTS_ALL'); END IF; END IF; /*SM#228554.so UPDATE XHL_AR_DS_COLLEC_DTLS_ALL SET applied_amount = NVL(applied_amoun t,0) + l_num_receipt_amt_applied , last_updated_by = g_num_user_id , last_update_login = g_num_login_id , last_update_date = SYSDATE WHERE collection_id = TO_NUMBER(unapplied_misc_r cpts_rec.collection_id); IF SQL%ROWCOUNT = 0 THEN l_num_process_fail_count := l_num_process_fail _count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error whi le updating the XHL_AR_DS_COLLEC_DTLS_ALL'); Fnd_File.PUT_LINE( Fnd_File.LOG ,'SQL error code : ' ||SQLCODE ); Fnd_File.PUT_LINE( Fnd_File.LOG ,'SQL error message : ' ||SQLERRM ); END IF; ELSE l_num_match_success := l_num_match_success + 1 ; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit Memo ' || open_dis_rec.di_number||' matched succesfully to Receipt Number '|| l_chr_rec eipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Amount match ed : ' || l_num_amt_applied || open_dis_rec.di_currency); BEGIN DELETE FROM XHL_AR_APPLICATIONS_INTERIM WHERE credit_line_reference = l_num_collec tion_id; EXCEPTION WHEN OTHERS THEN out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100) ; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Deleti on from interim table failed for credit line : ' ||l_num_collection_id); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In wh en others 14: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Erro r Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Erro r Message : '||SUBSTR(SQLERRM,1,200)); END; END IF;

SM#228554.eo*/ --SM#228554.sn BEGIN SELECT 1 INTO l_num_collec_rec_found FROM dual WHERE EXISTS (SELECT 1 FROM XHL_AR_DS_COLLEC_DTLS_AL L WHERE collection_id = TO_NUMBE R(unapplied_misc_rcpts_rec.collection_id)); EXCEPTION WHEN TOO_MANY_ROWS THEN l_num_collec_rec_found := 1; WHEN OTHERS THEN l_num_collec_rec_found := 0; END; IF l_num_collec_rec_found = 0 THEN l_num_process_fail_count := l_num_process_fail _count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error whi le updating the XHL_AR_DS_COLLEC_DTLS_ALL'); Fnd_File.PUT_LINE( Fnd_File.LOG ,'SQL error code : ' ||SQLCODE ); Fnd_File.PUT_LINE( Fnd_File.LOG ,'SQL error message : ' ||SQLERRM ); END IF; ELSE l_num_match_success := l_num_match_success + 1 ; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit Memo ' || open_dis_rec.di_number||' matched succesfully to Receipt Number '|| l_chr_rec eipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Amount match ed : ' || l_num_amt_applied || open_dis_rec.di_currency); BEGIN DELETE FROM XHL_AR_APPLICATIONS_INTERIM --TD#2982.o WHERE credit_line_reference = l_num_collection_id; The variable 'l_num_collection_id' is null and hence lines are not being deleted. WHERE credit_line_reference = TO_NUMBER(un applied_misc_rcpts_rec.collection_id)--TD#2982.n AND debit_line_reference = l_num_adjustm ent_id; --SM#232556 IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'Credit l ine delete from interim table '); END IF; EXCEPTION WHEN OTHERS THEN out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100) ; --TD#XXX.o Fnd_File.PUT_LINE( Fnd_File.L OG ,'Deletion from interim table failed for credit line : ' ||l_num_collection_i d);

Fnd_File.PUT_LINE( Fnd_File.LOG ,'Deleti on from interim table failed for credit line : ' ||unapplied_misc_rcpts_rec.coll ection_id);--TD#XXX.n IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In wh en others 14: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Erro r Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Erro r Message : '||SUBSTR(SQLERRM,1,200)); END; END IF; --SM#228554.en EXCEPTION WHEN OTHERS THEN l_num_process_fail_count := l_num_process_fail _count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF IN_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'Error while updating the XHL_AR_DS_COLLEC_DTLS_ALL'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when oth ers 15: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); END; COMMIT; --If there is an error then log the message ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_ERROR THE N l_num_match_failed := l_num_match_failed + 1; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit Memo '|| ope n_dis_rec.di_number||' matching to Receipt Number '|| l_chr_receipt_number||' fa iled'); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Amount on receipt : ' || l_num_amt_applied || l_chr_payment_currency); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_ ERROR while applying receipt ' || l_num_ca sh_receipt_id); END IF; FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG ,Fnd_Msg_Pub.Get( i,'F')); out_chr_errbuf := SUBSTR(Fnd_Msg_Pub.Get(i,'F'),1 ,100); END LOOP; --If there is an unexpected error then log the message

ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_UNEXP_ERR OR THEN l_num_match_failed := l_num_match_failed + 1; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit Memo '|| ope n_dis_rec.di_number||' matching to Receipt Number '|| l_chr_receipt_number||' fa iled'); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Amount on receipt : ' || l_num_amt_applied || l_chr_payment_currency); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_ UNEXPECTED_ERROR while applying receipt ' ||l_num_ cash_receipt_id); END IF; FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG ,Fnd_Msg_Pub.Get( i,'F')); out_chr_errbuf := SUBSTR(Fnd_Msg_Pub.Get(i,'F'),1 ,100); END LOOP; END IF; EXCEPTION -- SM#232684.sn WHEN NO_OPEN_PERIOD_EXCP THEN out_chr_retcode := '1'; out_chr_errbuf := 'Unable to derive GL date correspo nding to current date: ' || '. Matching failed as there is no open period for both AR and GL.'; Fnd_File.PUT_LINE( Fnd_File.LOG , out_chr_errbuf); -- SM#232684.en WHEN SKIP_MISC_RCPT_EXCP THEN out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when SKIP_MISC _RCPT_EXCP : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); WHEN OTHERS THEN l_num_failure_count := l_num_failure_count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Unknown error occured while applying some/all receipts.'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 16 : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); END; :

END LOOP; --$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$--added by shailesh on 28/12/2004 /*TD#3228.so The program will never go inside the following IF or ELSIF as it is already inside an IF condition for ACCOUNTINGWB, and hence it will never r einitialize the l_num_header_id. Also the cur_unapplied_receipts Cursor loop following this IF co ndition is totally unnecessary if no header id is getting passed. If at all there is a header id being passed to this cursor, that will be the one belonging to the previous record's header i d, and will fail while applying IF open_dis_rec.application_source = 'ORDERADJ' AND open_di s_rec.CONTEXT = g_chr_dm_header_context THEN l_num_header_id := TO_NUMBER(open_dis_rec.header_id); ELSIF open_dis_rec.CONTEXT = g_chr_ordent_header_context TH EN --Change for 'CHO' l_num_header_id := TO_NUMBER(open_dis_rec.inv_header_id) ; END IF; TD#3228.eo*/ --TD# 3228.sn IF open_dis_rec.application_source = 'ORDERADJ' AND open_di s_rec.CONTEXT = g_chr_dm_header_context THEN l_num_header_id := TO_NUMBER(open_dis_rec.header_id); /* Added on 09-Sep-05 as converted invoices are not getting matched with rec eipts - Start */ -ELSIF open_dis_rec.CONTEXT = g_chr_ordent_header_context THEN ELSIF open_dis_rec.CONTEXT IN (g_chr_ordent_header_context, g_chr_convord_header_context) THEN /* Added on 09-Sep-05 as converted invoices are not getting matched with rec eipts - End */ --Change for 'CHO' l_num_header_id := TO_NUMBER(open_dis_rec.inv_header_id); ELSE l_num_header_id := -1; END IF; --TD# 3228.en FOR unapplied_receipts_rec IN cur_unapplied_receipts( l_num _header_id , open_ dis_rec.org_id) LOOP IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In cur_unapplied_r eceipts. Cursor variables:'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_receipts _rec.order_receipt_ref_id : '||unapplied_receipts_rec.order_receipt_ref_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_receipts _rec.cash_receipt_id : '||unapplied_receipts_rec.cash_receipt_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_receipts _rec.receipt_number : '||unapplied_receipts_rec.receipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_receipts _rec.payment_line_id : '||unapplied_receipts_rec.payment_line_id);

Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_receipts _rec.applied_amount_on_order : '||unapplied_receipts_rec.applied_amount_on_order ); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_receipts _rec.invoice_matched_amount : '||unapplied_receipts_rec.invoice_matched_amount) ; END IF; BEGIN -- exit when no more matched amount in the open invoi ce EXIT WHEN l_num_di_amount <= 0; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In receipt loop , l_num_di_amount : '|| l_num_di_amount); END IF; -- To get BEGIN SELECT , , , , INTO , , , , FROM WHERE sh_receipt_id; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_chr_payment_ currency : ' || l_chr_payment_currency ); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_dte_receipt_ date : ' || l_dte_receipt_date); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_chr_receipt_ number : ' || l_chr_receipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_dte_conversi on_date : ' || l_dte_conversion_date); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while re treiving receipt from AR_CASH_RECEIPTS'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when NO_DAT A_FOUND: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; the exchange rate of the payment line currency_code receipt_date receipt_number exchange_date attribute11--IT#1428.n l_chr_payment_currency l_dte_receipt_date l_chr_receipt_number l_dte_conversion_date l_chr_check_number --IT#1428.n ar_cash_receipts cash_receipt_id = unapplied_receipts_rec.ca

l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while re treiving receipt from AR_CASH_RECEIPTS'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 17: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; END; /* THEN ency THEN BEGIN SELECT booked_date INTO l_dte_conversion_date FROM --TD#2904oe_order_headers oe_order_headers_all --TD#2904 WHERE header_id = l_num_header_id; EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_cou nt + 1; FND_FILE.PUT_LINE( FND_FILE.LOG , 'Error while retreiving conversion date for the order.'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE(FND_FILE.LOG,'In wh en NO_DATA_FOUND: '); END IF; FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Erro r Code : '||SQLCODE); FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Erro r Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_cou nt + 1; FND_FILE.PUT_LINE( FND_FILE.LOG , 'Error while retreiving conversion date for the order.'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE(FND_FILE.LOG,'In wh en others: '); END IF; FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Erro r Code : '||SQLCODE); FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Erro r Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; END; END IF; IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE( FND_FILE.LOG , 'l_dte_conve IF open_dis_rec.di_currency <> l_chr_payment_currency BEGIN IF l_chr_payment_currency = l_chr_functional_curr

rsion_date : ' || l_dte_conversion_date); END IF; SELECT conversion_rate INTO l_num_trans_to_rcpt_exc_rate FROM gl_daily_rates WHERE status_code = 'O' AND from_currency = open_dis_rec.di_currency AND to_currency = l_chr_payment_currency AND conversion_type = l_chr_conversion_type AND conversion_date = TO_DATE(l_dte_conversion _date,'DD-MON-RRRR'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE( FND_FILE.LOG , 'l_num_trans _to_rcpt_exc_rate : ' || l_num_trans_to_rcpt_exc_rate); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1 ; FND_FILE.PUT_LINE( FND_FILE.LOG , 'Error while retreiving conversion rate from invoice currency to payment currency'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE(FND_FILE.LOG,'In when NO_D ATA_FOUND: '); END IF; FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Code : '||SQLCODE); FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1 ; FND_FILE.PUT_LINE( FND_FILE.LOG , 'Error while retreiving conversion rate from invoice currency to payment currency'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE(FND_FILE.LOG,'In when oth ers: '); END IF; FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Code : '||SQLCODE); FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; END; ELSE l_num_trans_to_rcpt_exc_rate := NULL; END IF;*/ l_num_receipt_amount := ROUND((unapplied_receipts_rec.a pplied_amount_on_order - unapplied_receipts_rec.invoice_matched_amount), 2); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_amo unt : ' || l_num_receipt_amount); END IF;

-- To get the actual unapplied amount of the current re ceipt BEGIN SELECT INTO FROM WHERE AND _receipt_id; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_actual_u napplied_amount : ' || l_num_actual_unapplied_amount); END IF; EXCEPTION WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error when rece ipt amount from AR_RECEIVABLE_APPLICATIONS.'); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Receipt number : '||l_chr_receipt_number); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 18: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; END; IF l_num_actual_unapplied_amount < l_num_receipt_amount THEN l_num_receipt_amount := ROUND(l_num_actual_unapplied _amount,2); END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt amount af ter comparison between receipt amount and actual unapplied amount.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_amo unt : ' || l_num_receipt_amount); END IF; --To convert the invoice and receipt currency to functi onal currency IF open_dis_rec.di_currency <> l_chr_functional_currenc y THEN BEGIN SELECT INTO FROM WHERE cy AND to_currency y = l_chr_functional_currenc conversion_rate l_num_di_exc_rate gl_daily_rates --status_code = 'O' AND from_currency = open_dis_rec.di_curren SUM(amount_applied) l_num_actual_unapplied_amount ar_receivable_applications status = g_chr_unapp_status cash_receipt_id = unapplied_receipts_rec.cash

AND conversion_type = l_chr_conversion_type AND conversion_date = TO_DATE(open_dis_rec.di_ date,'DD-MON-RRRR'); l_num_di_amt_func := ROUND(l_num_di_amount * l_nu m_di_exc_rate,2); EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1 ; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when NO_ DATA_FOUND: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_DI_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1 ; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when oth ers 19: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_DI_EXCP; END; ELSE l_num_di_amt_func := ROUND(l_num_di_amount,2); l_num_di_exc_rate := NULL; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_di_amt_func : ' || l_num_di_amt_func); END IF; IF l_chr_payment_currency <> l_chr_functional_currency THEN BEGIN SELECT conversion_rate INTO l_num_receipt_exc_rate FROM gl_daily_rates WHERE --status_code = 'O' AND from_currency = l_chr_payment_currency AND to_currency = l_chr_functional_currenc y AND conversion_type = l_chr_conversion_type

AND conversion_date = TO_DATE(l_dte_conversion _date,'DD-MON-RRRR'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_recei pt_exc_rate : ' || l_num_receipt_exc_rate); END IF; l_num_receipt_amt_func := ROUND(l_num_receipt_amo unt * l_num_receipt_exc_rate,2); EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1 ; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when NO_ DATA_FOUND : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1 ; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when oth ers 20: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; END; ELSE l_num_receipt_amt_func := ROUND(l_num_receipt_amount ,2); l_num_receipt_exc_rate := NULL; END IF; IF l_num_di_amt_func >= l_num_receipt_amt_func THEN l_num_amt_applied := l_num_receipt_amt_func; ELSE l_num_amt_applied := l_num_di_amt_func; IF l_chr_payment_currency <> l_chr_functional_curren cy THEN l_num_receipt_amount := ROUND(l_num_amt_applied / l_num_receipt_exc_rate,2); ELSE l_num_receipt_amount := ROUND(l_num_amt_applied,2 );

END IF; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_amt _func : ' || l_num_receipt_amt_func); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_amt_applied : ' || l_num_amt_applied); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_amo unt : ' || l_num_receipt_amount); END IF; IF open_dis_rec.di_currency <> l_chr_functional_currenc y THEN l_num_amt_applied := l_num_amt_applied / l_num_di_ex c_rate; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Debit item cur rency not equal to functional currency. '); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_amt_appl ied : ' || l_num_amt_applied); END IF; END IF; IF open_dis_rec.di_currency = l_chr_payment_currency TH EN l_num_receipt_amount := NULL; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit item curr ency is equal to payment currency.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_ amount : ' || l_num_receipt_amount); END IF; END IF; l_num_amt_applied := ROUND(l_num_amt_applied,2); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_amt_applied : ' || l_num_amt_applied); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_amo unt : ' || l_num_receipt_amount); END IF; -- SM#232684.sn BEGIN SELECT MAX(gl_date) INTO l_dte_rcpt_apply_gl_date FROM ar_payment_schedules WHERE cash_receipt_id = unapplied_receipts_rec.cash_recei pt_id OR customer_trx_id = open_dis_rec.customer_trx_id; EXCEPTION WHEN OTHERS THEN l_dte_rcpt_apply_gl_date := SYSDATE; END; /**********************INC49020 - Changed on 12-Nov-08************** ********/

BEGIN SELECT INTO FROM WHERE eipt_id

MAX(trx_date) l_dte_rcpt_apply_trx_date ar_payment_schedules cash_receipt_id = unapplied_receipts_rec.cash_rec

OR customer_trx_id = open_dis_rec.customer_trx_id; EXCEPTION WHEN OTHERS THEN l_dte_rcpt_apply_trx_date := SYSDATE; END; IF l_dte_rcpt_apply_trx_date > l_dte_rcpt_apply_gl_date THEN l_dte_rcpt_apply_gl_date := l_dte_rcpt_apply_trx_date; END IF; /****************************************************************** *********/ BEGIN SELECT l_dte_rcpt_apply_gl_date INTO l_dte_rcpt_apply_gl_date FROM gl_period_statuses gps, fnd_application fa, hr_operating_units hou WHERE gps.application_id = fa.application_id AND hou.set_of_books_id = gps.set_of_books_id AND fa.application_short_name = 'AR' AND hou.organization_id = l_num_org_id AND gps.closing_status = 'O' --AND UPPER(gps.period_name) = UPPER(TO_CHAR(l_dt e_rcpt_apply_gl_date, 'Mon-YY')) --Used dates instead of period name -- Defect# 82 33 -- SenthilR AND gps.start_date <= trunc(l_dte_rcpt_apply_gl_d ate) AND gps.end_date >= trunc(l_dte_rcpt_apply_gl_dat e) AND gps.adjustment_period_flag = 'N'; SELECT l_dte_rcpt_apply_gl_date INTO l_dte_rcpt_apply_gl_date FROM gl_period_statuses gps, fnd_application fa, hr_operating_units hou WHERE gps.application_id = fa.application_id AND hou.set_of_books_id = gps.set_of_books_id AND fa.application_short_name = 'SQLGL' AND hou.organization_id = l_num_org_id AND gps.closing_status IN ('O', 'F') --AND UPPER(gps.period_name) = UPPER(TO_CHAR(l_dt e_rcpt_apply_gl_date, 'Mon-YY')) --Used dates instead of period name -- Defect# 82 33 -- SenthilR AND gps.start_date <= trunc(l_dte_rcpt_apply_gl_d ate)

AND gps.end_date >= trunc(l_dte_rcpt_apply_gl_dat e) AND gps.adjustment_period_flag = 'N'; EXCEPTION WHEN NO_DATA_FOUND THEN --SELECT MIN(TO_DATE(glp.period_name,'Mon-YY')) --Used dates instead of period name -- Defect# 823 3 -- SenthilR SELECT MIN(glp.start_date) INTO l_dte_rcpt_apply_gl_date FROM gl_period_statuses glp, gl_period_statuses arp, fnd_application gla, fnd_application ara, hr_operating_units hou WHERE glp.application_id = gla.application_id AND arp.application_id = ara.application_id AND hou.set_of_books_id = glp.set_of_books_id AND hou.set_of_books_id = arp.set_of_books_id AND gla.application_short_name = 'SQLGL' AND ara.application_short_name = 'AR' AND hou.organization_id = l_num_org_id AND glp.period_name = arp.period_name AND glp.closing_status IN ('O', 'F') AND arp.closing_status = 'O'; IF l_dte_rcpt_apply_gl_date IS NULL THEN RAISE NO_OPEN_PERIOD_EXCP; END IF; END; -- SM#232684.en --Call the standard apply procedure Ar_Receipt_Api_Pub.APPLY( p_api_version => l_num_api_version , p_init_msg_list => Fnd_Api.G_TRUE , p_commit => Fnd_Api.G_FALSE , p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL , p_cash_receipt_id => unapplied_receipts_rec.cash_receipt_id , p_customer_trx_id => open_dis_rec.customer_trx_id , p_amount_applied => l_num_amt_applied -=> l_num_trans_to_rcpt_exc_rate => SYSDATE --, p_apply_gl_date => SYSDATE -- SM#232684.eo -- SM#232684.sn , p_apply_date => l_dte_rcpt_apply_gl_date , p_apply_gl_date , p_trans_to_receipt_rate -- SM#232684.so --, p_apply_date

=> l_dte_rcpt_apply_gl_date -- SM#232684.en , p_show_closed_invoices => g_chr_no , p_trx_number => NULL , p_receipt_number => NULL , p_installment => NULL , p_applied_payment_schedule_id => NULL , p_amount_applied_from => l_num_receipt_amount , p_discount => NULL , p_ussgl_transaction_code => NULL , p_customer_trx_line_id => NULL , p_line_number => NULL , p_called_from => NULL , p_move_deferred_tax => NULL , p_link_to_trx_hist_id => NULL , p_attribute_rec => NULL , p_global_attribute_rec => NULL , p_comments => NULL , p_payment_set_id => NULL , p_application_ref_type => NULL , p_application_ref_id => NULL , p_application_ref_num => NULL , p_secondary_application_ref_i d => NULL , p_application_ref_reason => NULL , p_customer_reference => NULL , x_return_status => l_chr_return_status , x_msg_count => l_num_msg_count , x_msg_data => l_chr_msg_data); --On successful matching, update the order receipt refe rence table IF l_chr_return_status = Fnd_Api.G_RET_STS_SUCCESS THE N l_num_di_amount := l_num_di_amount - l_num_amt_appl

ied; /* IF l_num_trans_to_rcpt_exc_rate IS NOT NULL THEN l_num_receipt_amt_applied := l_num_amt_applied * l_num_trans_to_rcpt_exc_rate; ELSE IF l_num_receipt_exc_rate IS NOT NULL THEN l_num_receipt_amt_applied := l_num_amt_appli ed / l_num_receipt_exc_rate; ELSE l_num_receipt_amt_applied := l_num_amt_appli ed; END IF; END IF;*/ IF l_num_receipt_amount IS NULL THEN l_num_receipt_amt_applied := l_num_amt_applied; ELSE l_num_receipt_amt_applied := l_num_receipt_amoun t; END IF; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt appli cation successful.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Debit item am ount open = l_num_di_amount : ' || l_num_di_amount); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt _amt_applied : ' || l_num_receipt_amt_applied); END IF; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Updating ar_c ash_receipts_all'); END IF; --Maintain the applied amount on attribute13 in AR_ CASH_RECEIPTS_ALL IF NVL(l_chr_check_number, '-XXX') <> 'APF' THEN -IT#1428.n For APF references through Order --Payments, this field will be updated in Payment f orm itself. UPDATE ar_cash_receipts_all SET attribute13 = TO_CHAR(NVL(TO_NUMBER (attribute13),0) + l_num_receipt_amt_applied) , last_updated_by = g_num_user_id , last_update_date = SYSDATE , last_update_login = g_num_login_id WHERE cash_receipt_id = unapplied_receipts_rec. cash_receipt_id; IF SQL%ROWCOUNT = 0 THEN out_chr_retcode := '1'; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error wh ile updating the AR_CASH_RECEIPTS_ALL'); END IF; END IF; END IF;--IT#1428.n -- To update the order-receipt reference record for

invoice matched amount and receipt status l_num_invoice_matched_amount := unapplied_receipts_ rec.invoice_matched_amount + l_num_receipt_amt_ applied; --If there is unapplied amount remaining on the rec eipt update only invoice matched amount IF (unapplied_receipts_rec.applied_amount_on_order - l_num_invoice_matched_amount) > 0 THEN BEGIN UPDATE XHL_OM_ORDER_RECEIPT_REF_ALL SET invoice_matched_amount = l_num_invoice _matched_amount , last_updated_by = g_num_user_id , last_update_login = g_num_login_i d , last_updated_date = SYSDATE WHERE order_receipt_ref_id = unapplied_recei pts_rec.order_receipt_ref_id; IF SQL%ROWCOUNT = 0 THEN out_chr_retcode := '1'; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Erro r while updating the XHL_OM_ORDER_RECEIPT_REF'); l_num_process_fail_count := l_num_proc ess_fail_count + 1; END IF; ELSE l_num_match_success := l_num_match_succes s + 1; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit I tem '|| open_dis_rec.di_number||' matched succesfully to Receipt Number '|| l_ch r_receipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Amount matched : ' || l_num_amt_applied || open_dis_rec.di_currency); END IF; EXCEPTION WHEN OTHERS THEN l_num_process_fail_count := l_num_process_ fail_count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while updating the XHL_OM_ORDER_RECEIPT_REF'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 21: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); END; ELSE --Else update both receipt status and invoice ma tched amount BEGIN UPDATE XHL_OM_ORDER_RECEIPT_REF_ALL

SET invoice_matched_amount = l_num_invoice _matched_amount , receipt_status tus , last_updated_by , last_update_login d , last_updated_date = SYSDATE WHERE order_receipt_ref_id = unapplied_recei pts_rec.order_receipt_ref_id; IF SQL%ROWCOUNT = 0 THEN l_num_process_fail_count := l_num_process _fail_count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Erro r while updating the XHL_OM_ORDER_RECEIPT_REF'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In whe n others 22: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); ELSE l_num_match_success := l_num_match_succes s + 1; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit I tem '|| open_dis_rec.di_number||'matched succesfully to Receipt Number '|| l_chr _receipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Amount matched : ' || l_num_amt_applied || open_dis_rec.di_currency); END IF; EXCEPTION WHEN OTHERS THEN l_num_process_fail_count := l_num_process_ fail_count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while updating the xhl_om_order_receipt_ref table'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 23: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); END; END IF; COMMIT; --If there is an error then log the message ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_ERROR THE N out_chr_retcode := '1'; = g_num_user_id = g_num_login_i = g_chr_app_sta

l_num_match_failed := l_num_match_failed + 1; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit Item '|| ope n_dis_rec.di_number||' matching to Receipt Number '|| l_chr_receipt_number||' fa iled'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_ ERROR while applying receipt ' || unapplie d_receipts_rec.cash_receipt_id); END IF; FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG ,Fnd_Msg_Pub.Get( i,'F')); out_chr_errbuf := SUBSTR(Fnd_Msg_Pub.Get(i,'F'),1 ,100); END LOOP; --If there is an unexpected error then log the message ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_UNEXP_ERR OR THEN out_chr_retcode := '1'; l_num_match_failed := l_num_match_failed + 1; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_ UNEXPECTED_ERROR while applying receipt ' ||unappl ied_receipts_rec.cash_receipt_id); END IF; FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG ,Fnd_Msg_Pub.Get( i,'F')); out_chr_errbuf := SUBSTR(Fnd_Msg_Pub.Get(i,'F'),1 ,100); END LOOP; END IF; EXCEPTION -- SM#232684.sn WHEN NO_OPEN_PERIOD_EXCP THEN out_chr_retcode := '1'; out_chr_errbuf := 'Unable to derive GL date correspo nding to current date: ' || '. Matching failed as there is no open period for both AR and GL.'; Fnd_File.PUT_LINE( Fnd_File.LOG , out_chr_errbuf); -- SM#232684.en WHEN SKIP_RCPT_EXCP THEN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when SKIP_RCPT_ EXCP : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code ||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : ' ||SUBSTR(SQLERRM,1,200)); out_chr_errbuf := SUBSTR(SQLERRM,1,100); WHEN OTHERS THEN l_num_failure_count := l_num_failure_count + 1; out_chr_retcode := '1'; : '

out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 24: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code ||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : ' ||SUBSTR(SQLERRM,1,200)); END; END LOOP; --$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ --miscpayments ELSE IF open_dis_rec.application_source = 'ORDERADJ' AND open_di s_rec.CONTEXT = g_chr_dm_header_context THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'open_dis_rec.header_i d:'||open_dis_rec.header_id); l_num_header_id := TO_NUMBER(open_dis_rec.header_id); /* Added on 09-Sep-05 as converted invoices are not getting matched with rec eipts - Start */ -ELSIF open_dis_rec.CONTEXT = g_chr_ordent_header_context THEN ELSIF open_dis_rec.CONTEXT IN (g_chr_ordent_header_context, g_chr_convord_header_context) THEN /* Added on 09-Sep-05 as converted invoices are not getting matched with rec eipts - End */ --Change for 'CHO' Fnd_File.PUT_LINE( Fnd_File.LOG , 'open_dis_rec.inv_head er_id:'||open_dis_rec.inv_header_id); l_num_header_id := TO_NUMBER(open_dis_rec.inv_header_id) ; /* BEGIN SELECT ooh.header_id INTO l_num_header_id FROM oe_transaction_types_vl ottv, oe_order_headers_all ooh --TD#2904.n WHERE open_dis_rec.attribute2 = ottv.name AND ottv.transaction_type_id = ooh.order_type_id AND ooh.order_number = TO_NUMBER(open_dis_ rec.order_number); EXCEPTION WHEN OTHERS THEN out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE( FND_FILE.LOG , 'Order header id not found for order number : '|| open_dis_rec.order_number); END IF; FND_FILE.PUT_LINE( FND_FILE.LOG , 'Order number '| | open_dis_rec.order_number || 'skipped as validation failed.'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE(FND_FILE.LOG,'In when others: '); END IF; : '

FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Code : '||SQLCODE); FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_DI_EXCP; END;*/ END IF; FOR unapplied_receipts_rec IN cur_unapplied_receipts( l_num _header_id , open_ dis_rec.org_id) LOOP IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In cur_unapplied_r eceipts. Cursor variables:'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_receipts _rec.order_receipt_ref_id : '||unapplied_receipts_rec.order_receipt_ref_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_receipts _rec.cash_receipt_id : '||unapplied_receipts_rec.cash_receipt_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_receipts _rec.receipt_number : '||unapplied_receipts_rec.receipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_receipts _rec.payment_line_id : '||unapplied_receipts_rec.payment_line_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_receipts _rec.applied_amount_on_order : '||unapplied_receipts_rec.applied_amount_on_order ); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_receipts _rec.invoice_matched_amount : '||unapplied_receipts_rec.invoice_matched_amount) ; END IF; BEGIN -- exit when no more matched amount in the open invoi ce EXIT WHEN l_num_di_amount <= 0; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In receipt loop , l_num_di_amount : '|| l_num_di_amount); END IF; -- To get BEGIN SELECT , , , , INTO , , , , FROM WHERE sh_receipt_id; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_chr_payment_ currency : ' || l_chr_payment_currency ); the exchange rate of the payment line currency_code receipt_date receipt_number exchange_date attribute11 --IT#1428.n l_chr_payment_currency l_dte_receipt_date l_chr_receipt_number l_dte_conversion_date l_chr_check_number --IT#1428.n ar_cash_receipts cash_receipt_id = unapplied_receipts_rec.ca

Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_dte_receipt_ : ' || l_dte_receipt_date); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_chr_receipt_ number : ' || l_chr_receipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_dte_conversi on_date : ' || l_dte_conversion_date); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while re treiving receipt from AR_CASH_RECEIPTS'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when NO_DAT A_FOUND: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while re treiving receipt from AR_CASH_RECEIPTS'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 17: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; END; date /* THEN ency THEN BEGIN SELECT booked_date INTO l_dte_conversion_date FROM --TD#2904.o oe_order_headers oe_order_headers_all --TD#2904.n WHERE header_id = l_num_header_id; EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_cou nt + 1; FND_FILE.PUT_LINE( FND_FILE.LOG , 'Error while retreiving conversion date for the order.'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE(FND_FILE.LOG,'In wh en NO_DATA_FOUND: '); END IF; IF open_dis_rec.di_currency <> l_chr_payment_currency BEGIN IF l_chr_payment_currency = l_chr_functional_curr

FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Erro r Code : '||SQLCODE); FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Erro r Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_cou nt + 1; FND_FILE.PUT_LINE( FND_FILE.LOG , 'Error while retreiving conversion date for the order.'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE(FND_FILE.LOG,'In wh en others: '); END IF; FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Erro r Code : '||SQLCODE); FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Erro r Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; END; END IF; IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE( FND_FILE.LOG , 'l_dte_conve rsion_date : ' || l_dte_conversion_date); END IF; SELECT conversion_rate INTO l_num_trans_to_rcpt_exc_rate FROM gl_daily_rates WHERE status_code = 'O' AND from_currency = open_dis_rec.di_currency AND to_currency = l_chr_payment_currency AND conversion_type = l_chr_conversion_type AND conversion_date = TO_DATE(l_dte_conversion _date,'DD-MON-RRRR'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE( FND_FILE.LOG , 'l_num_trans _to_rcpt_exc_rate : ' || l_num_trans_to_rcpt_exc_rate); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1 ; FND_FILE.PUT_LINE( FND_FILE.LOG , 'Error while retreiving conversion rate from invoice currency to payment currency'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE(FND_FILE.LOG,'In when NO_D ATA_FOUND: '); END IF; FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Code : '||SQLCODE); FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1

; FND_FILE.PUT_LINE( FND_FILE.LOG , 'Error while retreiving conversion rate from invoice currency to payment currency'); IF in_chr_debug = g_chr_yes THEN FND_FILE.PUT_LINE(FND_FILE.LOG,'In when oth ers: '); END IF; FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Code : '||SQLCODE); FND_FILE.PUT_LINE(FND_FILE.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; END; ELSE l_num_trans_to_rcpt_exc_rate := NULL; END IF;*/ l_num_receipt_amount := ROUND((unapplied_receipts_rec.a pplied_amount_on_order - unapplied_receipts_rec.invoice_matched_amount), 2); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_amo unt : ' || l_num_receipt_amount); END IF; -- To get the actual unapplied amount of the current re ceipt BEGIN SELECT INTO FROM WHERE AND _receipt_id; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_actual_u napplied_amount : ' || l_num_actual_unapplied_amount); END IF; EXCEPTION WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error when rece ipt amount from AR_RECEIVABLE_APPLICATIONS.'); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Receipt number : '||l_chr_receipt_number); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 18: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; END; IF l_num_actual_unapplied_amount < l_num_receipt_amount THEN SUM(amount_applied) l_num_actual_unapplied_amount ar_receivable_applications status = g_chr_unapp_status cash_receipt_id = unapplied_receipts_rec.cash

l_num_receipt_amount := ROUND(l_num_actual_unapplied _amount,2); END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt amount af ter comparison between receipt amount and actual unapplied amount.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_amo unt : ' || l_num_receipt_amount); END IF; /* Start for changes related to INC# 126650 */ IF open_dis_rec.org_id = 166 AND --l_chr_order_category NOT IN ('ISO','IEO') AND -- c ommented for INC# 173295 --open_dis_rec.pay_class = g_chr_inv_class AND open_dis_rec.di_currency = l_chr_payment_currency AN D open_dis_rec.di_currency <> l_chr_functional_currenc y THEN l_num_di_amt_func := ROUND(l_num_di_amount,2); l_num_di_exc_rate := NULL; l_num_receipt_amt_func := ROUND(l_num_receipt_amount ,2); l_num_receipt_exc_rate := NULL; IF l_num_di_amount >= l_num_receipt_amount THEN --l_num_amt_applied := FLOOR(l_num_receipt_amount) ; -- \* INC# 152448 *\ SELECT DECODE(open_dis_rec.di_currency,'ISK',DECOD E(MOD(l_num_receipt_amount,1),0, l_num_receipt_amount,FLOOR(l_num_receipt_amount )),l_num_receipt_amount) INTO l_num_amt_applied FROM DUAL; ELSE --l_num_amt_applied := FLOOR(l_num_di_amount); -- \* INC# 152448 *\ SELECT DECODE(open_dis_rec.di_currency,'ISK',DECOD E(MOD(l_num_di_amount,1),0, l_num_di_amount,FLOOR(l_num_di_amount)),l_num_di_amo unt) INTO l_num_amt_applied FROM DUAL; END IF; IF unapplied_receipts_rec.invoice_matched_amount = 0 THEN l_num_receipt_amount := NULL; END IF; /* End of changes related to INC# 126650 */ ELSE --To convert the invoice and receipt currency to func tional currency IF open_dis_rec.di_currency <> l_chr_functional_curre ncy THEN BEGIN SELECT INTO FROM WHERE conversion_rate l_num_di_exc_rate gl_daily_rates --status_code = 'O' AND from_currency = open_dis_rec.di_curren

cy AND to_currency ncy AND conversion_type = l_chr_conversion_type AND conversion_date = TO_DATE(open_dis_rec.d i_date,'DD-MON-RRRR'); l_num_di_amt_func := ROUND(l_num_di_amount * l_ num_di_exc_rate,2); EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error whil e retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when N O_DATA_FOUND: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Co de : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Me ssage : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_DI_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error whil e retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when o thers 19: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Co de : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Me ssage : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_DI_EXCP; END; ELSE l_num_di_amt_func := ROUND(l_num_di_amount,2); l_num_di_exc_rate := NULL; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_di_amt_fu nc : ' || l_num_di_amt_func); END IF; IF l_chr_payment_currency <> l_chr_functional_currenc y THEN BEGIN SELECT INTO FROM WHERE conversion_rate l_num_receipt_exc_rate gl_daily_rates --status_code = 'O' AND from_currency = l_chr_payment_currency = l_chr_functional_curre

AND to_currency ncy

= l_chr_functional_curre

AND conversion_type = l_chr_conversion_type AND conversion_date = TO_DATE(l_dte_conversi on_date,'DD-MON-RRRR'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_rec eipt_exc_rate : ' || l_num_receipt_exc_rate); END IF; l_num_receipt_amt_func := ROUND(l_num_receipt_a mount * l_num_receipt_exc_rate,2); EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error whil e retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when N O_DATA_FOUND : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Co de : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Me ssage : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error whil e retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when o thers 20: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Co de : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Me ssage : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_RCPT_EXCP; END; ELSE l_num_receipt_amt_func := ROUND(l_num_receipt_amou nt,2); l_num_receipt_exc_rate := NULL; END IF; IF l_num_di_amt_func >= l_num_receipt_amt_func THEN l_num_amt_applied := l_num_receipt_amt_func; ELSE l_num_amt_applied := l_num_di_amt_func; IF l_chr_payment_currency <> l_chr_functional_curr ency THEN l_num_receipt_amount := ROUND(l_num_amt_applied / l_num_receipt_exc_rate,2);

ELSE l_num_receipt_amount := ROUND(l_num_amt_applied ,2); END IF; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_a mt_func : ' || l_num_receipt_amt_func); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_amt_appli ed : ' || l_num_amt_applied); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_a mount : ' || l_num_receipt_amount); END IF; IF open_dis_rec.di_currency <> l_chr_functional_curre ncy THEN l_num_amt_applied := l_num_amt_applied / l_num_di_ exc_rate; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Debit item c urrency not equal to functional currency. '); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_amt_ap plied : ' || l_num_amt_applied); END IF; END IF; END IF; IF open_dis_rec.di_currency = l_chr_payment_currency TH EN l_num_receipt_amount := NULL; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit item curr ency is equal to payment currency.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_ amount : ' || l_num_receipt_amount); END IF; END IF; l_num_amt_applied := ROUND(l_num_amt_applied,2); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_amt_applied : ' || l_num_amt_applied); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_amo unt : ' || l_num_receipt_amount); END IF; -- SM#232684.sn BEGIN SELECT MAX(gl_date) INTO l_dte_rcpt_apply_gl_date FROM ar_payment_schedules WHERE cash_receipt_id = unapplied_receipts_rec.cash_r eceipt_id OR customer_trx_id = open_dis_rec.customer_trx_id; EXCEPTION WHEN OTHERS THEN l_dte_rcpt_apply_gl_date := SYSDATE; END;

/**********************INC49020 - Changed on 12-Nov-08********* *************/ BEGIN SELECT INTO FROM WHERE _receipt_id OR customer_trx_id = open_dis_rec.customer_trx_i d; EXCEPTION WHEN OTHERS THEN l_dte_rcpt_apply_trx_date := SYSDATE; END; IF l_dte_rcpt_apply_trx_date > l_dte_rcpt_apply_gl_date THEN l_dte_rcpt_apply_gl_date := l_dte_rcpt_apply_trx_date; END IF; /****************************************************************** *********/ BEGIN SELECT l_dte_rcpt_apply_gl_date INTO l_dte_rcpt_apply_gl_date FROM gl_period_statuses gps, fnd_application fa, hr_operating_units hou WHERE gps.application_id = fa.application_id AND hou.set_of_books_id = gps.set_of_books_id AND fa.application_short_name = 'AR' AND hou.organization_id = l_num_org_id AND gps.closing_status = 'O' --AND UPPER(gps.period_name) = UPPER(TO_CHAR(l_dt e_rcpt_apply_gl_date, 'Mon-YY')) --Used dates instead of period name -- Defect# 82 33 -- SenthilR AND gps.start_date <= trunc(l_dte_rcpt_apply_gl_d ate) AND gps.end_date >= trunc(l_dte_rcpt_apply_gl_dat e) AND gps.adjustment_period_flag = 'N'; SELECT l_dte_rcpt_apply_gl_date INTO l_dte_rcpt_apply_gl_date FROM gl_period_statuses gps, fnd_application fa, hr_operating_units hou WHERE gps.application_id = fa.application_id AND hou.set_of_books_id = gps.set_of_books_id AND fa.application_short_name = 'SQLGL' AND hou.organization_id = l_num_org_id AND gps.closing_status IN ('O', 'F') MAX(trx_date) l_dte_rcpt_apply_trx_date ar_payment_schedules cash_receipt_id = unapplied_receipts_rec.cash

--AND UPPER(gps.period_name) = UPPER(TO_CHAR(l_dt e_rcpt_apply_gl_date, 'Mon-YY')) --Used dates instead of period name -- Defect# 82 33 -- SenthilR AND gps.start_date <= trunc(l_dte_rcpt_apply_gl_d ate) AND gps.end_date >= trunc(l_dte_rcpt_apply_gl_dat e) AND gps.adjustment_period_flag = 'N'; EXCEPTION WHEN NO_DATA_FOUND THEN --SELECT MIN(TO_DATE(glp.period_name,'Mon-YY')) --Used dates instead of period name -- Defect# 823 3 -- SenthilR SELECT MIN(glp.start_date) INTO l_dte_rcpt_apply_gl_date FROM gl_period_statuses glp, gl_period_statuses arp, fnd_application gla, fnd_application ara, hr_operating_units hou WHERE glp.application_id = gla.application_id AND arp.application_id = ara.application_id AND hou.set_of_books_id = glp.set_of_books_id AND hou.set_of_books_id = arp.set_of_books_id AND gla.application_short_name = 'SQLGL' AND ara.application_short_name = 'AR' AND hou.organization_id = l_num_org_id AND glp.period_name = arp.period_name AND glp.closing_status IN ('O', 'F') AND arp.closing_status = 'O'; IF l_dte_rcpt_apply_gl_date IS NULL THEN RAISE NO_OPEN_PERIOD_EXCP; END IF; END; -- SM#232684.en --Call the standard apply procedure Ar_Receipt_Api_Pub.APPLY( p_api_version => l_num_api_version , p_init_msg_list => Fnd_Api.G_TRUE , p_commit => Fnd_Api.G_FALSE , p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL , p_cash_receipt_id => unapplied_receipts_rec.cash_receipt_id , p_customer_trx_id => open_dis_rec.customer_trx_id , p_amount_applied => l_num_amt_applied -=> l_num_trans_to_rcpt_exc_rate => SYSDATE --, p_apply_gl_date , p_trans_to_receipt_rate -- SM#232684.so --, p_apply_date

=> SYSDATE -- SM#232684.eo -- SM#232684.sn , p_apply_date => l_dte_rcpt_apply_gl_date , p_apply_gl_date => l_dte_rcpt_apply_gl_date -- SM#232684.en , p_show_closed_invoices => g_chr_no , p_trx_number => NULL , p_receipt_number => NULL , p_installment => NULL , p_applied_payment_schedule_id => NULL , p_amount_applied_from => l_num_receipt_amount , p_discount => NULL , p_ussgl_transaction_code => NULL , p_customer_trx_line_id => NULL , p_line_number => NULL , p_called_from => NULL , p_move_deferred_tax => NULL , p_link_to_trx_hist_id => NULL , p_attribute_rec => NULL , p_global_attribute_rec => NULL , p_comments => NULL , p_payment_set_id => NULL , p_application_ref_type => NULL , p_application_ref_id => NULL , p_application_ref_num => NULL , p_secondary_application_ref_i d => NULL , p_application_ref_reason => NULL , p_customer_reference => NULL , x_return_status => l_chr_return_status , x_msg_count => l_num_msg_count , x_msg_data => l_chr_msg_data);

--On successful matching, update the order receipt refe rence table IF l_chr_return_status = Fnd_Api.G_RET_STS_SUCCESS THE N l_num_di_amount := l_num_di_amount - l_num_amt_appl ied; /* IF l_num_trans_to_rcpt_exc_rate IS NOT NULL THEN l_num_receipt_amt_applied := l_num_amt_applied * l_num_trans_to_rcpt_exc_rate; ELSE IF l_num_receipt_exc_rate IS NOT NULL THEN l_num_receipt_amt_applied := l_num_amt_appli ed / l_num_receipt_exc_rate; ELSE l_num_receipt_amt_applied := l_num_amt_appli ed; END IF; END IF;*/ IF l_num_receipt_amount IS NULL THEN l_num_receipt_amt_applied := l_num_amt_applied; ELSE l_num_receipt_amt_applied := l_num_receipt_amoun t; END IF; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt appli cation successful.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Debit item am ount open = l_num_di_amount : ' || l_num_di_amount); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt _amt_applied : ' || l_num_receipt_amt_applied); END IF; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Updating ar_c ash_receipts_all'); END IF; --Maintain the applied amount on attribute13 in AR_ CASH_RECEIPTS_ALL IF NVL(l_chr_check_number, '-XXX') <> 'APF' THEN -IT#1428.n For APF references through Order --Payments, this field will be updated in Payment f orm itself. UPDATE ar_cash_receipts_all SET attribute13 = TO_CHAR(NVL(TO_NUMBER (attribute13),0) + l_num_receipt_amt_applied) , last_updated_by = g_num_user_id , last_update_date = SYSDATE , last_update_login = g_num_login_id WHERE cash_receipt_id = unapplied_receipts_rec. cash_receipt_id; IF SQL%ROWCOUNT = 0 THEN out_chr_retcode := '1'; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error wh

ile updating the AR_CASH_RECEIPTS_ALL'); END IF; END IF; END IF;--IT#1428.n -- To update the order-receipt reference record for invoice matched amount and receipt status l_num_invoice_matched_amount := unapplied_receipts_ rec.invoice_matched_amount + l_num_receipt_amt_ applied; --If there is unapplied amount remaining on the rec eipt update only invoice matched amount IF (unapplied_receipts_rec.applied_amount_on_order - l_num_invoice_matched_amount) > 0 THEN BEGIN UPDATE XHL_OM_ORDER_RECEIPT_REF_ALL SET invoice_matched_amount = l_num_invoice _matched_amount , last_updated_by = g_num_user_id , last_update_login = g_num_login_i d , last_updated_date = SYSDATE WHERE order_receipt_ref_id = unapplied_recei pts_rec.order_receipt_ref_id; IF SQL%ROWCOUNT = 0 THEN out_chr_retcode := '1'; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Erro r while updating the XHL_OM_ORDER_RECEIPT_REF'); l_num_process_fail_count := l_num_proc ess_fail_count + 1; END IF; ELSE l_num_match_success := l_num_match_succes s + 1; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit I tem '|| open_dis_rec.di_number||' matched succesfully to Receipt Number '|| l_ch r_receipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Amount matched : ' || l_num_amt_applied || open_dis_rec.di_currency); END IF; EXCEPTION WHEN OTHERS THEN l_num_process_fail_count := l_num_process_ fail_count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while updating the XHL_OM_ORDER_RECEIPT_REF'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 21: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200));

END; ELSE --Else update both receipt status and invoice ma tched amount BEGIN UPDATE XHL_OM_ORDER_RECEIPT_REF_ALL SET invoice_matched_amount = l_num_invoice _matched_amount , receipt_status tus , last_updated_by , last_update_login d , last_updated_date = SYSDATE WHERE order_receipt_ref_id = unapplied_recei pts_rec.order_receipt_ref_id; IF SQL%ROWCOUNT = 0 THEN l_num_process_fail_count := l_num_process _fail_count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Erro r while updating the XHL_OM_ORDER_RECEIPT_REF'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In whe n others 22: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); ELSE l_num_match_success := l_num_match_succes s + 1; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit I tem '|| open_dis_rec.di_number||'matched succesfully to Receipt Number '|| l_chr _receipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Amount matched : ' || l_num_amt_applied || open_dis_rec.di_currency); END IF; EXCEPTION WHEN OTHERS THEN l_num_process_fail_count := l_num_process_ fail_count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while updating the xhl_om_order_receipt_ref table'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 23: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); END; END IF; = g_num_user_id = g_num_login_i = g_chr_app_sta

COMMIT; --If there is an error then log the message ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_ERROR THE N out_chr_retcode := '1'; l_num_match_failed := l_num_match_failed + 1; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit Item '|| ope n_dis_rec.di_number||' matching to Receipt Number '|| l_chr_receipt_number||' fa iled'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_ ERROR while applying receipt ' || unapplie d_receipts_rec.cash_receipt_id); END IF; FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG ,Fnd_Msg_Pub.Get( i,'F')); out_chr_errbuf := SUBSTR(Fnd_Msg_Pub.Get(i,'F'),1 ,100); END LOOP; --If there is an unexpected error then log the message ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_UNEXP_ERR OR THEN out_chr_retcode := '1'; l_num_match_failed := l_num_match_failed + 1; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_ UNEXPECTED_ERROR while applying receipt ' ||unappl ied_receipts_rec.cash_receipt_id); END IF; FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG ,Fnd_Msg_Pub.Get( i,'F')); out_chr_errbuf := SUBSTR(Fnd_Msg_Pub.Get(i,'F'),1 ,100); END LOOP; END IF; EXCEPTION -- SM#232684.sn WHEN NO_OPEN_PERIOD_EXCP THEN out_chr_retcode := '1'; out_chr_errbuf := 'Unable to derive GL date correspo nding to current date: ' || '. Matching failed as there is no open period for both AR and GL.'; Fnd_File.PUT_LINE( Fnd_File.LOG , out_chr_errbuf); -- SM#232684.en WHEN SKIP_RCPT_EXCP THEN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when SKIP_RCPT_ EXCP : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code ||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : ' : '

||SUBSTR(SQLERRM,1,200)); out_chr_errbuf := SUBSTR(SQLERRM,1,100); WHEN OTHERS THEN l_num_failure_count := l_num_failure_count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 24: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code ||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : ' ||SUBSTR(SQLERRM,1,200)); END; END LOOP; ---&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&--added by shailesh on 28/12/2004 Fnd_File.PUT_LINE( Fnd_File.LOG , 'open_dis_rec.inv_header_i d:'||open_dis_rec.inv_header_id); l_num_adjustment_id := TO_NUMBER(open_dis_rec.inv_header_id) ; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_adjustment_id : '||l_num_adjustment_id); END IF; FOR unapplied_misc_rcpts_rec IN cur_unapplied_misc_rcpts( l_ num_adjustment_id , op en_dis_rec.org_id , l_ chr_orderadj) LOOP BEGIN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In cur_unapplied_ receipts. Cursor variables:'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_misc_rc pts_rec.collection_id : '||unapplied_misc_rcpts_rec.collection_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'unapplied_misc_rc pts_rec.receipt_amount : '||unapplied_misc_rcpts_rec.receipt_amount); END IF; -- exit when no more matched amount in the open invoice EXIT WHEN l_num_di_amount <= 0; l_chr_collection_id := TO_CHAR(unapplied_misc_rcpts_rec .collection_id); --To get the receipt against the collection BEGIN --SM#302815.sn SELECT transaction_ref_number INTO l_num_cash_receipt_id FROM xhl_ar_ds_collec_dtls_all WHERE collection_id = unapplied_misc_rcpts_rec.coll ection_id; --SM#302815.en : '

SELECT , , , , INTO , , , , FROM WHERE 15.o #302815.n

cash_receipt_id currency_code receipt_date receipt_number exchange_date l_num_cash_receipt_id l_chr_payment_currency l_dte_receipt_date l_chr_receipt_number l_dte_conversion_date ar_cash_receipts --attribute5 = l_chr_collection_id; --SM#3028 cash_receipt_id = l_num_cash_receipt_id; --SM

eipt_id : currency : date number : :

on_date :

IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG '||l_num_cash_receipt_id); Fnd_File.PUT_LINE( Fnd_File.LOG '||l_chr_payment_currency); Fnd_File.PUT_LINE( Fnd_File.LOG '||l_dte_receipt_date); Fnd_File.PUT_LINE( Fnd_File.LOG '||l_chr_receipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG '||l_dte_conversion_date); END IF;

, 'l_num_cash_rec , 'l_chr_payment_ , 'l_dte_receipt_ , 'l_chr_receipt_ , 'l_dte_conversi

EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while re treiving receipt from AR_CASH_RECEIPTS'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 9: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_MISC_RCPT_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; l_num_failure_count := l_num_failure_count + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Error while re treiving receipt from AR_CASH_RECEIPTS'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 10: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_MISC_RCPT_EXCP; END;

-- To get the actual unapplied amount of the current re ceipt BEGIN SELECT INTO FROM WHERE AND SUM(amount_applied) l_num_actual_unapplied_amount ar_receivable_applications status = g_chr_unapp_status cash_receipt_id = l_num_cash_receipt_id;

IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_actual_un applied_amount : '|| l_num_actual_unapplied_amount); END IF; EXCEPTION WHEN OTHERS THEN l_num_failure_count := l_num_failure_count + 1; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error when rece ipt amount from AR_RECEIVABLE_APPLICATIONS.'); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Receipt number : '||l_chr_receipt_number); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 11: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_MISC_RCPT_EXCP; END; IF l_num_actual_unapplied_amount < unapplied_misc_rcpts _rec.receipt_amount THEN l_num_receipt_amount := ROUND(l_num_actual_unapplied _amount,2); ELSE l_num_receipt_amount := ROUND(unapplied_misc_rcpts_r ec.receipt_amount,2); END IF; --To set the exchange rate for cross currency matching IF open_dis_rec.di_currency <> l_chr_functional_currenc y THEN BEGIN SELECT INTO FROM WHERE y AND conversion_type = l_chr_conversion_type AND conversion_date = TO_DATE(open_dis_rec.di_ date,'DD-MON-RRRR'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_di_exc _rate : '|| l_num_di_exc_rate); conversion_rate l_num_di_exc_rate gl_daily_rates --status_code = 'O' AND from_currency = open_dis_rec.di_currency AND to_currency = l_chr_functional_currenc

END IF; l_num_di_amt_func := ROUND(l_num_di_amount * l_nu m_di_exc_rate,2); EXCEPTION WHEN NO_DATA_FOUND THEN l_num_failure_count := l_num_failure_count + 1 ; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when NO_ DATA_FOUND: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_DI_EXCP; WHEN OTHERS THEN l_num_failure_count := l_num_failure_count + 1 ; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when oth ers 12: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_DI_EXCP; END; ELSE l_num_di_amt_func := ROUND(l_num_di_amount,2); l_num_di_exc_rate := NULL; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_di_amt_func : '|| l_num_di_amt_func); END IF; IF l_chr_payment_currency <> l_chr_functional_currency THEN BEGIN SELECT INTO FROM WHERE y AND conversion_type = l_chr_conversion_type AND conversion_date = TO_DATE(l_dte_conversion _date,'DD-MON-RRRR'); conversion_rate l_num_receipt_exc_rate gl_daily_rates --status_code = 'O' AND from_currency = l_chr_payment_currency AND to_currency = l_chr_functional_currenc

IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_receip t_exc_rate : '|| l_num_receipt_exc_rate); END IF; l_num_receipt_amt_func := ROUND(l_num_receipt_amo unt * l_num_receipt_exc_rate,2); EXCEPTION WHEN NO_DATA_FOUND THEN l_num_failure_count := l_num_failure_count + 1 ; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when NO_ DATA_FOUND: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_MISC_RCPT_EXCP; WHEN OTHERS THEN l_num_failure_count := l_num_failure_count + 1 ; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while retreiving exchange rate from GL_DAILY_RATES.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when oth ers 13: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200)); RAISE SKIP_MISC_RCPT_EXCP; END; ELSE l_num_receipt_amt_func := ROUND(l_num_receipt_amount ,2); l_num_receipt_exc_rate := NULL; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_receipt_amt_ func : '|| l_num_receipt_amt_func); END IF; IF l_num_di_amt_func >= l_num_receipt_amt_func THEN l_num_amt_applied := l_num_receipt_amt_func; ELSE l_num_amt_applied := l_num_di_amt_func; IF l_chr_payment_currency <> l_chr_functional_curren cy THEN l_num_receipt_amount := ROUND(l_num_amt_applied / l_num_receipt_exc_rate,2); ELSE l_num_receipt_amount := ROUND(l_num_amt_applied,2

); END IF; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_amt_applied : '|| l_num_amt_applied); END IF; IF open_dis_rec.di_currency <> l_chr_functional_currenc y THEN l_num_amt_applied := ROUND((l_num_amt_applied/l_num_ di_exc_rate),2); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit memo curr ency is not equal to functional currency.'); Fnd_File.PUT_LINE( Fnd_File.LOG ,'l_num_amt_appli ed : '|| l_num_amt_applied); END IF; END IF; IF open_dis_rec.di_currency = l_chr_payment_currency TH EN l_num_receipt_amount := NULL; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit memo curr ency is equal to payment currency.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_ amount : ' || l_num_receipt_amount); END IF; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_amt_applied : ' || l_num_amt_applied); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_amo unt : ' || l_num_receipt_amount); END IF; -- SM#232684.sn BEGIN SELECT MAX(gl_date) INTO l_dte_rcpt_apply_gl_date FROM ar_payment_schedules WHERE cash_receipt_id = l_num_cash_receipt_id OR customer_trx_id = open_dis_rec.customer_trx_id; EXCEPTION WHEN OTHERS THEN l_dte_rcpt_apply_gl_date := SYSDATE; END; /**********************INC49020 - Changed on 12-Nov-08************* *********/ BEGIN SELECT INTO FROM WHERE OR MAX(trx_date) l_dte_rcpt_apply_trx_date ar_payment_schedules cash_receipt_id = l_num_cash_receipt_id customer_trx_id = open_dis_rec.customer_trx_id;

EXCEPTION WHEN OTHERS THEN l_dte_rcpt_apply_trx_date := SYSDATE; END; IF l_dte_rcpt_apply_trx_date > l_dte_rcpt_apply_gl_date THEN l_dte_rcpt_apply_gl_date := l_dte_rcpt_apply_trx_date; END IF; /****************************************************************** *********/ BEGIN SELECT l_dte_rcpt_apply_gl_date INTO l_dte_rcpt_apply_gl_date FROM gl_period_statuses gps, fnd_application fa, hr_operating_units hou WHERE gps.application_id = fa.application_id AND hou.set_of_books_id = gps.set_of_books_id AND fa.application_short_name = 'AR' AND hou.organization_id = l_num_org_id AND gps.closing_status = 'O' --AND UPPER(gps.period_name) = UPPER(TO_CHAR(l_dt e_rcpt_apply_gl_date, 'Mon-YY')) --Used dates instead of period name -- Defect# 82 33 -- SenthilR AND gps.start_date <= trunc(l_dte_rcpt_apply_gl_d ate) AND gps.end_date >= trunc(l_dte_rcpt_apply_gl_dat e) AND gps.adjustment_period_flag = 'N'; SELECT l_dte_rcpt_apply_gl_date INTO l_dte_rcpt_apply_gl_date FROM gl_period_statuses gps, fnd_application fa, hr_operating_units hou WHERE gps.application_id = fa.application_id AND hou.set_of_books_id = gps.set_of_books_id AND fa.application_short_name = 'SQLGL' AND hou.organization_id = l_num_org_id AND gps.closing_status IN ('O', 'F') --AND UPPER(gps.period_name) = UPPER(TO_CHAR(l_dt e_rcpt_apply_gl_date, 'Mon-YY')) --Used dates instead of period name -- Defect# 82 33 -- SenthilR AND gps.start_date <= trunc(l_dte_rcpt_apply_gl_d ate) AND gps.end_date >= trunc(l_dte_rcpt_apply_gl_dat e) AND gps.adjustment_period_flag = 'N'; EXCEPTION WHEN NO_DATA_FOUND THEN --SELECT MIN(TO_DATE(glp.period_name,'Mon-YY')) --Used dates instead of period name -- Defect# 823

3 -- SenthilR SELECT MIN(glp.start_date) INTO l_dte_rcpt_apply_gl_date FROM gl_period_statuses glp, gl_period_statuses arp, fnd_application gla, fnd_application ara, hr_operating_units hou WHERE glp.application_id = gla.application_id AND arp.application_id = ara.application_id AND hou.set_of_books_id = glp.set_of_books_id AND hou.set_of_books_id = arp.set_of_books_id AND gla.application_short_name = 'SQLGL' AND ara.application_short_name = 'AR' AND hou.organization_id = l_num_org_id AND glp.period_name = arp.period_name AND glp.closing_status IN ('O', 'F') AND arp.closing_status = 'O'; IF l_dte_rcpt_apply_gl_date IS NULL THEN RAISE NO_OPEN_PERIOD_EXCP; END IF; END; -- SM#232684.en --Call the standard apply procedure Ar_Receipt_Api_Pub.APPLY( p_api_version => l_num_api_version , p_init_msg_list => Fnd_Api.G_TRUE , p_commit => Fnd_Api.G_FALSE , p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL , p_cash_receipt_id => l_num_cash_receipt_id , p_customer_trx_id => open_dis_rec.customer_trx_id , p_amount_applied => l_num_amt_applied -=> l_num_trans_to_rcpt_exc_rate => SYSDATE --, p_apply_gl_date => SYSDATE -- SM#232684.eo -- SM#232684.sn , p_apply_date => l_dte_rcpt_apply_gl_date , p_apply_gl_date => l_dte_rcpt_apply_gl_date -- SM#232684.en , p_show_closed_invoices => g_chr_no , p_trx_number => NULL , p_receipt_number => NULL , p_trans_to_receipt_rate -- SM#232684.so --, p_apply_date

, p_installment => NULL , p_applied_payment_schedule_id => NULL , p_amount_applied_from => l_num_receipt_amount , p_discount => NULL , p_ussgl_transaction_code => NULL , p_customer_trx_line_id => NULL , p_line_number => NULL , p_called_from => NULL , p_move_deferred_tax => NULL , p_link_to_trx_hist_id => NULL , p_attribute_rec => NULL , p_global_attribute_rec => NULL , p_comments => NULL , p_payment_set_id => NULL , p_application_ref_type => NULL , p_application_ref_id => NULL , p_application_ref_num => NULL , p_secondary_application_ref_i d => NULL , p_application_ref_reason => NULL , p_customer_reference => NULL , x_return_status => l_chr_return_status , x_msg_count => l_num_msg_count , x_msg_data => l_chr_msg_data); --On successful matching, update the collections table IF l_chr_return_status = Fnd_Api.G_RET_STS_SUCCESS THEN l_num_di_amount := l_num_di_amount - l_num_amt_appli ed; /* IF l_num_trans_to_rcpt_exc_rate IS NOT NULL THEN l_num_receipt_amt_applied := l_num_amt_applied * l_num_trans_to_rcpt_exc_rate; ELSE IF l_num_receipt_exc_rate IS NOT NULL THEN l_num_receipt_amt_applied := l_num_amt_applie d / l_num_receipt_exc_rate; ELSE l_num_receipt_amt_applied := l_num_amt_applie

d; END IF; END IF;*/ IF l_num_receipt_amount IS NULL THEN l_num_receipt_amt_applied := l_num_amt_applied; ELSE l_num_receipt_amt_applied := l_num_receipt_amoun t; END IF; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt applic ation successful.'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Debit amount o pen = l_num_di_amount : ' || l_num_di_amount); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receipt_ amt_applied : ' || l_num_receipt_amt_applied); END IF; BEGIN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Updating ar _cash_receipts_all'); END IF; --Maintain the applied amount on attribute13 in A R_CASH_RECEIPTS_ALL UPDATE ar_cash_receipts_all SET attribute13 = TO_CHAR(NVL(TO_NUMBER( attribute13),0) + l_num_receipt_amt_applied) , last_updated_by = g_num_user_id , last_update_date = SYSDATE , last_update_login = g_num_login_id WHERE cash_receipt_id = l_num_cash_receipt_id; IF SQL%ROWCOUNT = 0 THEN out_chr_retcode := '1'; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error whi le updating the AR_CASH_RECEIPTS_ALL'); END IF; END IF; UPDATE SET t,0) + l_num_receipt_amt_applied , , , WHERE cpts_rec.collection_id); XHL_AR_DS_COLLEC_DTLS_ALL applied_amount = NVL(applied_amoun last_updated_by = g_num_user_id last_update_login = g_num_login_id last_update_date = SYSDATE collection_id = TO_NUMBER(unapplied_misc_r

IF SQL%ROWCOUNT = 0 THEN l_num_process_fail_count := l_num_process_fail _count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error whi le updating the XHL_AR_DS_COLLEC_DTLS_ALL');

Fnd_File.PUT_LINE( Fnd_File.LOG ,'SQL error code : ' ||SQLCODE ); Fnd_File.PUT_LINE( Fnd_File.LOG ,'SQL error message : ' ||SQLERRM ); END IF; ELSE l_num_match_success := l_num_match_success + 1 ; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit Memo ' || open_dis_rec.di_number||' matched succesfully to Receipt Number '|| l_chr_rec eipt_number); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Amount match ed : ' || l_num_amt_applied || open_dis_rec.di_currency); BEGIN DELETE FROM XHL_AR_APPLICATIONS_INTERIM --TD#2982.o WHERE credit_line_reference = l_num_collection_id; WHERE credit_line_reference = TO_NUMBER(un applied_misc_rcpts_rec.collection_id)--TD#2982.n AND debit_line_reference = l_num_adjustm ent_id; --SM#232556 EXCEPTION WHEN OTHERS THEN out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100) ; --TD#2982.o Fnd_File.PUT_LINE( Fnd_File. LOG ,'Deletion from interim table failed for credit line : ' ||l_num_collection_ id); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Deleti on from interim table failed for credit line : ' ||unapplied_misc_rcpts_rec.coll ection_id);--TD#2982.n IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In wh en others 14: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Erro r Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Erro r Message : '||SUBSTR(SQLERRM,1,200)); END; END IF; EXCEPTION WHEN OTHERS THEN l_num_process_fail_count := l_num_process_fail _count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF IN_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'Error while updating the XHL_AR_DS_COLLEC_DTLS_ALL'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when oth ers 15: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Mess age : '||SUBSTR(SQLERRM,1,200));

END; COMMIT; --If there is an error then log the message ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_ERROR THE N l_num_match_failed := l_num_match_failed + 1; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit Memo '|| ope n_dis_rec.di_number||' matching to Receipt Number '|| l_chr_receipt_number||' fa iled'); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Amount on receipt : ' || l_num_amt_applied || l_chr_payment_currency); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_ ERROR while applying receipt ' || l_num_ca sh_receipt_id); END IF; FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG ,Fnd_Msg_Pub.Get( i,'F')); out_chr_errbuf := SUBSTR(Fnd_Msg_Pub.Get(i,'F'),1 ,100); END LOOP; --If there is an unexpected error then log the message ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_UNEXP_ERR OR THEN l_num_match_failed := l_num_match_failed + 1; out_chr_retcode := '1'; Fnd_File.PUT_LINE( Fnd_File.LOG ,'Debit Memo '|| ope n_dis_rec.di_number||' matching to Receipt Number '|| l_chr_receipt_number||' fa iled'); Fnd_File.PUT_LINE( Fnd_File.LOG ,'Amount on receipt : ' || l_num_amt_applied || l_chr_payment_currency); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_ UNEXPECTED_ERROR while applying receipt ' ||l_num_ cash_receipt_id); END IF; FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG ,Fnd_Msg_Pub.Get( i,'F')); out_chr_errbuf := SUBSTR(Fnd_Msg_Pub.Get(i,'F'),1 ,100); END LOOP; END IF; EXCEPTION -- SM#232684.sn WHEN NO_OPEN_PERIOD_EXCP THEN out_chr_retcode := '1'; out_chr_errbuf := 'Unable to derive GL date correspo nding to current date: ' || '. Matching failed as there is no open period for both AR and GL.'; Fnd_File.PUT_LINE( Fnd_File.LOG , out_chr_errbuf);

-- SM#232684.en WHEN SKIP_MISC_RCPT_EXCP THEN out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when SKIP_MISC _RCPT_EXCP : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); WHEN OTHERS THEN l_num_failure_count := l_num_failure_count + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Unknown error occured while applying some/all receipts.'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 16 : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERRM,1,200)); END; END LOOP; ---&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& END IF; END IF; -- End of IF NOT l_skip_rcpt_inv_matching EXCEPTION WHEN SKIP_DI_EXCP THEN out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 25: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCO DE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBST R(SQLERRM,1,200)); WHEN OTHERS THEN out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Unknown error occured while applying receipts.'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 26: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCO DE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBST R(SQLERRM,1,200)); END; :

END LOOP; CLOSE cur_open_dis; /*IT#977.so*//* SELECT TO_CHAR(SYSDATE,'DD-MON-RRRR HH:MM:SS') INTO l_chr_end_time FROM dual;*//*IT#977.so*/ Fnd_File.PUT_LINE( Fnd_File.LOG , '************************************ ********************'); Fnd_File.PUT_LINE( Fnd_File.LOG , ' Receipt Matching Summar y '); Fnd_File.PUT_LINE( Fnd_File.LOG , '************************************ ********************'); /*IT#977.so*//* Fnd_File.PUT_LINE( Fnd_File.LOG , 'Start Time: ' || l_ch r_start_time); Fnd_File.PUT_LINE( Fnd_File.LOG , ' End Time: ' || l_chr_end_time);*// *IT#977.eo*/ Fnd_File.PUT_LINE( Fnd_File.LOG , 'Records successfully matched : ' || l_num_match_success); Fnd_File.PUT_LINE( Fnd_File.LOG , ' Records failed : ' || l_num_match_failed); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt matched but further processi ng failed for : ' || l_num_process_fail_count); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Records errored : ' || l_num_failure _count); EXCEPTION WHEN UNKNOWN_EXCP THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Conversion Type / Processing Coun try Currency not found.' ); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when UNKNOWN_EXCP: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERR M,1,200)); out_chr_errbuf := SUBSTR(SQLERRM,1,100); WHEN OTHERS THEN out_chr_retcode := '2'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Unknown error occured while ap plying receipt'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 27: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERR M,1,200)); END match_receipts_in_ar; -- End of procedure match_receipts_in_ar /********************************************************************* * PROCEDURE : interim_line_del_on_rev * * * * INPUT PARAMETERS : in_num_source_line_reference * * * * OUTPUT PARAMETERS : out_num_ret_status * * * * PURPOSE : To delete a line from XHL_AR_RECEIPTS_INTERIM *

* When succesful set return status = 0 else to 2 * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 08/09/2004 1.00 Created * * * *********************************************************************/ PROCEDURE interim_line_del_on_rev( out_num_ret_status OUT NUMBER , in_num_interim_line_id IN XHL_AR_RECEIPTS _INTERIM.interim_line_id%TYPE) IS BEGIN --Delete the line from interim table IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In procedure interim_line_del_on_ rev. Process variables : '); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_num_interim_line_id : '|| in_n um_interim_line_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Deleting line from XHL_AR_RECEIPT S_INTERIM'); END IF; DELETE FROM XHL_AR_RECEIPTS_INTERIM WHERE interim_line_id = in_num_interim_line_id; out_num_ret_status := 0; EXCEPTION WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'interim_line_del_on_rev failed '); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 28: '); END IF; out_num_ret_status := 2; g_chr_err_code := SQLCODE; g_chr_exception_description := SUBSTR(SQLERRM,1,200); END interim_line_del_on_rev;--End of procedure interim_line_del_on_rev /********************************************************************* * PROCEDURE : update_order_ref_on_rev * * * * INPUT PARAMETERS : in_num_order_header_id * * in_num_cash_receipt_id * * * * OUTPUT PARAMETERS : out_num_ret_status * * * * PURPOSE : To update receipt status to reverse on * * successful call to the reversal api or unapply * * api. On successful,update return staus to 0, * * else return 2 * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 08/09/2004 1.00 Created * * * *********************************************************************/ PROCEDURE update_order_ref_on_rev( out_num_ret_status OUT NUMBER

, in_num_order_header_id IN XHL_OM_ORDER_RE CEIPT_REF_ALL.order_header_id%TYPE , in_num_cash_receipt_id IN XHL_OM_ORDER_RE CEIPT_REF_ALL.cash_receipt_id%TYPE) IS BEGIN--Begin procedure update_order_ref_on_rev IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In procedure update_order_ref_on_ rev. Process variables : '); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_num_order_header_id : '|| in_n um_order_header_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_num_cash_receipt_id : '|| in_n um_cash_receipt_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Updating XHL_OM_ORDER_RECEIPT_REF _ALL'); END IF; UPDATE SET , , , WHERE AND XHL_OM_ORDER_RECEIPT_REF_ALL receipt_status = g_chr_rev_status last_updated_by = g_num_user_id last_updated_date = SYSDATE last_update_login = g_num_login_id order_header_id = in_num_order_header_id cash_receipt_id = in_num_cash_receipt_id;

out_num_ret_status := 0; IF SQL%ROWCOUNT = 0 THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'XHL_OM_ORDER_RECEIPT_REF_ALL u pdation failed'); END IF; out_num_ret_status := 2; g_chr_err_code := SQLCODE; g_chr_exception_description := SUBSTR(SQLERRM,1,200); END IF; EXCEPTION WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'update_order_ref_on_rev failed '); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 29: '); END IF; out_num_ret_status := 2; g_chr_err_code := SQLCODE; g_chr_exception_description := SUBSTR(SQLERRM,1,200); END update_order_ref_on_rev; --End of procedure update_order_ref_on_rev /********************************************************************* * PROCEDURE : orderpay_base_reverse_receipt * * * * INPUT PARAMETERS : in_chr_reset_flag * * in_num_source_line_reference * * * * OUTPUT PARAMETERS : out_num_ret_status * * out_num_order_header_id * * * * PURPOSE : To update receipt status and error description * * based on the reset flag in order payment base * * table. On successful,update return staus to 0, *

* else return 2 . The procedure also returns the * * order_header_id * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 08/09/2004 1.00 Created * * * *********************************************************************/ PROCEDURE orderpay_base_reverse_receipt( out_num_ret_status BER , in_num_source_line_reference IN XHL_AR_RECEIPTS_INT ERIM.source_line_reference%TYPE) IS BEGIN --Begin procedure orderpay_base_reverse_receipt --update error description in payment lines IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In procedure orderpay_base_revers e_receipt. Process variables : '); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_num_source_line_reference : '| | in_num_source_line_reference); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Updating XHL_OM_PAYMENT_LINES_ALL '); END IF; UPDATE SET , , , WHERE XHL_OM_PAYMENT_LINES_ALL error_description = NULL last_updated_by = g_num_user_id last_update_date = SYSDATE last_update_login = g_num_login_id payment_line_id = in_num_source_line_reference; g_chr_yes THEN Fnd_File.LOG , 'XHL_OM_PAYMENT_LINES_ALL updat 2; 0; OUT NUM

IF SQL%ROWCOUNT = 0 THEN IF g_chr_debug_flag = Fnd_File.PUT_LINE( ion failed'); END IF; out_num_ret_status := ELSE out_num_ret_status := END IF;

EXCEPTION WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'orderpay_base_reverse_receipt failed.'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 30: '); END IF; out_num_ret_status := 2; g_chr_err_code := SQLCODE; g_chr_exception_description := SUBSTR(SQLERRM,1,200); END orderpay_base_reverse_receipt; --End of procedure orderpay_base_revers e_receipt /********************************************************************* * PROCEDURE : account_base_reverse_receipt * * * * INPUT PARAMETERS : in_chr_reset_flag *

* in_num_source_line_reference * * * * OUTPUT PARAMETERS : out_num_ret_status * * * * PURPOSE : To update receipt status and error description * * based on the reset flag in AR base table. On * * successful,update return staus to 0,else return* * 2 . * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 08/09/2004 1.00 Created * * * *********************************************************************/ PROCEDURE account_base_reverse_receipt( out_num_ret_status ER , in_num_source_line_reference IN XHL_AR_RECEIPTS _INTERIM.source_line_reference%TYPE) IS BEGIN--Begin procedure account_base_reverse_receipt IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In procedure account_base_reverse _receipt. Process variables : '); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_num_source_line_reference : '| | in_num_source_line_reference); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Updating XHL_AR_DS_COLLEC_DTLS_AL L'); END IF; UPDATE SET , , , WHERE XHL_AR_DS_COLLEC_DTLS_ALL error_description = NULL last_updated_by = g_num_user_id last_update_date = SYSDATE last_update_login = g_num_login_id collection_id = in_num_source_line_reference; OUT NUMB

out_num_ret_status := 0; IF SQL%ROWCOUNT = 0 THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'XHL_AR_DS_COLLEC_DTLS_ALL upda tion failed.'); END IF; out_num_ret_status := 2; END IF; EXCEPTION WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'account_base_reverse_receipt f ailed.'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 31: '); END IF; out_num_ret_status := 2; g_chr_err_code := SQLCODE; g_chr_exception_description := SUBSTR(SQLERRM,1,200); END account_base_reverse_receipt; --End of account_base_reverse_receipt

/********************************************************************* * PROCEDURE : ar_base_reverse_receipt * * * * INPUT PARAMETERS : in_chr_reset_flag * * in_num_source_line_reference * * * * OUTPUT PARAMETERS : out_num_ret_status * * * * PURPOSE : To update receipt status and error description * * based on the reset flag in AR base table. On * * successful,update return staus to 0,else return* * 2 . * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 08/09/2004 1.00 Created * * * *********************************************************************/ PROCEDURE ar_base_reverse_receipt( out_num_ret_status OUT NUMBER , in_num_source_line_reference IN XHL_AR_RECEIPTS_INT ERIM.source_line_reference%TYPE) IS BEGIN--Begin procedure ar_base_reverse_receipt IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In procedure ar_base_reverse_rece ipt. Process variables : '); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_num_source_line_reference : '| | in_num_source_line_reference); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Updating XHL_AR_DS_COLLEC_DTLS_AL L'); END IF; UPDATE XHL_AR_DS_COLLEC_DTLS_ALL SET error_description = NULL , last_updated_by = g_num_user_id , last_update_date = SYSDATE , last_update_login = g_num_login_id WHERE collection_id = in_num_source_line_reference; out_num_ret_status := 0; IF SQL%ROWCOUNT = 0 THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'XHL_AR_DS_COLLEC_DTLS_ALL upda tion failed.'); END IF; out_num_ret_status := 2; END IF; EXCEPTION WHEN OTHERS THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'ar_base_reverse_receipt failed .'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 32: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERR M,1,200)); out_num_ret_status := 2;

g_chr_err_code := SQLCODE; g_chr_exception_description := SUBSTR(SQLERRM,1,200); END ar_base_reverse_receipt; --End of procedure ar_base_reverse_receipt /********************************************************************* * PROCEDURE : unapply_orderpay_receipt * * * * INPUT PARAMETERS : in_chr_debug * * in_num_cash_receipt_id * * in_num_order_number * * * * OUTPUT PARAMETERS : out_num_ret_status * * * * PURPOSE : The procedure fetches all the invoices to which* * the given receipt id has been applied. The * * standard unapply api is then called to unapply * * these receipts.On successful,update return * * status to 0,else return 2. * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 08/09/2004 1.00 Created * * * *********************************************************************/ PROCEDURE unapply_orderpay_receipt( out_num_ret_status OUT NUMBER , in_num_cash_receipt_id IN ar_receivable_ applications_all.cash_receipt_id%TYPE , in_num_order_number IN oe_order_heade rs_all.order_number%TYPE , in_chr_debug IN VARCHAR2 DEFAU LT g_chr_no) IS --Start declaration l_chr_order_number VARCHAR2(30); --Order number is stored as a character datatype in RA_CUSTOMER_TRX_ALL l_num_api_version NUMBER := 1.0; -- API version l_num_msg_count NUMBER := 0; --To store the number of e rror messages API has encountered l_chr_msg_data VARCHAR2(2000) := NULL; --To store the error me ssage text l_chr_return_status VARCHAR2(1) := NULL; --To store the execution s tatus of the called procedure l_num_cash_receipt_id ar_receivable_applications_all.cash_receipt_id%TYP E; l_num_cust_trx_id ar_receivable_applications_all.applied_customer_tr x_id%TYPE; l_num_receivable_app_id ar_receivable_applications_all.receivable_applicat ion_id%TYPE; l_num_amount_applied ar_receivable_applications_all.amount_applied%TYPE ; BEGIN -- Begin procedure l_chr_order_number := IF g_chr_debug_flag = Fnd_File.PUT_LINE( t. Process Variables : '); Fnd_File.PUT_LINE( _cash_receipt_id); Fnd_File.PUT_LINE( unapply_orderpay_receipt TO_CHAR(in_num_order_number); g_chr_yes THEN Fnd_File.LOG , 'In procedure unapply_orderpay_receip Fnd_File.LOG , 'in_num_cash_receipt_id : ' || in_num Fnd_File.LOG , 'in_num_order_number : ' || in_num

_order_number); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_chr_order_number order_number); END IF;

: ' || l_chr_

--To fetch all the invoices to which the receipt has been applied BEGIN SELECT araa.cash_receipt_id , araa.applied_customer_trx_id , MAX (araa.receivable_application_id) , SUM (amount_applied) INTO l_num_cash_receipt_id , l_num_cust_trx_id , l_num_receivable_app_id , l_num_amount_applied FROM ar_receivable_applications araa, ra_customer_trx rcta WHERE araa.status = g_chr_app_status AND araa.applied_customer_trx_id = rcta.customer_trx_id AND araa.cash_receipt_id = in_num_cash_receipt_id AND rcta.interface_header_attribute1 = l_chr_order_number /* Added on 09-Sep-05 as converted invoices are not getting matched with receipt s - Start */ -AND rcta.interface_header_context = g_chr_ordent_header_context AND rcta.interface_header_context IN ( g_chr_ordent_header_contex t, g_chr_convord_header_context) /* Added on 09-Sep-05 as converted invoices are not getting matched with receipt s - End */ GROUP BY araa.cash_receipt_id, araa.applied_customer_trx_id HAVING SUM (amount_applied) > 0; EXCEPTION WHEN NO_DATA_FOUND THEN out_num_ret_status := 2; g_chr_err_code := SQLCODE; g_chr_exception_description := SUBSTR(SQLERRM,1,200); IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'No_data_found in ar_receivable _applications, ra_customer_trx.'); END IF; WHEN OTHERS THEN out_num_ret_status := 2; g_chr_err_code := SQLCODE; g_chr_exception_description := SUBSTR(SQLERRM,1,200); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 33: '); END IF; END; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_cash_receipt_id : ' || l_num _cash_receipt_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_cust_trx_id : ' || l_num _cust_trx_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_receivable_app_id : ' || l_num _receivable_app_id); END IF; --Call standard unapply api

Ar_Receipt_Api_Pub.unapply( p_api_version ion , p_init_msg_list , p_commit E , p_validation_level D_LEVEL_FULL , p_receipt_number , p_cash_receipt_id eipt_id , p_customer_trx_id _id le_app_id , , , , , , , tatus , x_msg_count t , x_msg_data );

=> l_num_api_vers => Fnd_Api.G_TRUE => Fnd_Api.G_FALS => Fnd_Api.G_VALI => NULL => l_num_cash_rec => l_num_cust_trx

, p_receivable_application_id => l_num_receivab p_trx_number => p_installment => p_applied_payment_schedule_id=> p_reversal_gl_date => p_called_from => p_cancel_claim_flag => x_return_status => NULL NULL NULL SYSDATE NULL g_chr_yes l_chr_return_s

=> l_num_msg_coun => l_chr_msg_data

--If successful set the return status to 0 IF l_chr_return_status = Fnd_Api.G_RET_STS_SUCCESS THEN out_num_ret_status := 0; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Updating ar_cash_receipts_all'); END IF; --Update the applied amount maintained in attribute 13 of ar_cash_recei pts_all UPDATE ar_cash_receipts_all SET attribute13 = TO_CHAR( TO_NUMBER(NVL(attribute13,'0')) - l _num_amount_applied) , last_updated_by = g_num_user_id , last_update_date = SYSDATE , last_update_login = g_num_login_id WHERE cash_receipt_id = l_num_cash_receipt_id; IF SQL%ROWCOUNT = 0 THEN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while updating the AR_CAS H_RECEIPTS_ALL'); END IF; END IF; --Else set the return status to 2 ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_ERROR THEN out_num_ret_status := 2; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_ERROR while unapply ing receipt '|| l_num_cash_receipt_id); g_chr_err_code := 'UNKNOWN'; g_chr_exception_description := 'Description logged already as FND_AP I.G_EXC_ERROR.'; END IF;

FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG ,Fnd_Msg_Pub.Get(i,'F')); END LOOP; --If there is an unexpected error then log the message ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_UNEXP_ERROR THEN out_num_ret_status := 2; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_UNEXPECTED_ERROR wh ile unapplying receipt '||l_num_cash_receipt_id); g_chr_err_code := 'UNKNOWN'; g_chr_exception_description := 'Description logged already as FND_AP I.G_EXC_UNEXPECTED_ERROR.'; END IF; FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG ,Fnd_Msg_Pub.Get(i,'F')); END LOOP; END IF; EXCEPTION WHEN OTHERS THEN out_num_ret_status := 2; g_chr_err_code := SQLCODE; g_chr_exception_description := SUBSTR(SQLERRM,1,200); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 34: '); END IF; END unapply_orderpay_receipt;--End of procedure unapply_orderpay_receipt /********************************************************************* * PROCEDURE : reverse_receipts_in_ar * * * * INPUT PARAMETERS : in_chr_debug * * in_chr_reversal_category_code * * in_chr_reversal_reason_code * * * * OUTPUT PARAMETERS : out_chr_errbuf * * out_chr_retcode * * * * PURPOSE : The procedure fetches all the void-ed receipts * * from the interim table. If it has been * * generated by the payment receivables program, * * then it reverses the same. else it unapplies it* * through standard oracle api's. On successful, * * reversal return code is set to 0,else return 2.* * In case of warning returns, 1 * * * * Author Date Ver Description * * --------------- --- ---------------------------------------* *Infosys 08/09/2004 1.00 Created * * * *********************************************************************/ PROCEDURE reverse_receipts_in_ar( , , DEFAULT g_chr_no , CEIPTS_INTERIM.payment_source%TYPE , eceipts_all.reversal_category%TYPE out_chr_errbuf out_chr_retcode in_chr_debug in_chr_payment_source OUT VARCHAR2 OUT VARCHAR2 IN VARCHAR2 IN XHL_AR_RE

in_chr_reversal_category_code IN ar_cash_r

, in_chr_reversal_reason_code eceipts_all.reversal_reason_code%TYPE , in_num_from_source_hdr_ref CEIPTS_INTERIM.source_header_reference%TYPE , in_num_to_source_hdr_ref CEIPTS_INTERIM.source_header_reference%TYPE , in_chr_from_distributor ccounts.account_number%TYPE , in_chr_to_distributor ccounts.account_number%TYPE) IS --Start declaration l_num_ret_status ernal procedures called l_chr_source_flag Y if the receipt was applied

IN ar_cash_r IN XHL_AR_RE IN XHL_AR_RE IN hz_cust_a IN hz_cust_a

NUMBER := 0;--holds the return status from int ar_cash_receipts_all.attribute12%TYPE;--Holds

--through p ayment receivables program l_chr_amount_received ar_cash_receipts_all.attribute13%TYPE;--Holds amount received l_num_order_header_id XHL_OM_PAYMENT_HEADERS_ALL.order_header_id%TYP E; l_num_order_number oe_order_headers_all.order_number%TYPE; l_chr_receipt_number ar_cash_receipts_all.receipt_number%TYPE; l_attribute_rec Ar_Receipt_Api_Pub.attribute_rec_type; l_num_api_version NUMBER := 1.0; -- API version l_num_msg_count NUMBER := 0; --To store the number of error messages API has encountered l_chr_msg_data VARCHAR2(2000) := NULL; --To store the erro r message text l_chr_return_status VARCHAR2(1) := NULL; --To store the execution status of the called procedure l_num_amount_received NUMBER := 0; l_num_record_count NUMBER := 0; l_num_rev_success NUMBER := 0; l_num_rev_failure NUMBER := 0; /*IT#977.so*//* l_chr_start_time VARCHAR2(50) := NULL; l_chr_end_time VARCHAR2(50) := NULL;*//*IT#977.eo*/ CASH_RECEIPT_NOT_FOUND_EXCP EXCEPTION; UNDEFINED_SOURCE_EXCP EXCEPTION; ORDER_NOT_FOUND_EXCP EXCEPTION; --Cursor to fetch all the void-ed records from the interim table CURSOR cur_reverse_receipts IS SELECT interim_line_id , process_flag , payment_source , source_line_reference , amount_received , receipt_id , xari.comments FROM hz_cust_accounts hca , XHL_AR_RECEIPTS_INTERIM xari WHERE NVL(xari.void_flag, g_chr_no) = g_chr_yes AND xari.cust_account_id = hca.cust_account_id AND hca.account_number BETWEEN NVL(in_chr_from_distributor, hca.acco unt_number) AND NVL(in_chr_to_distributor, hca.account_number) AND xari.payment_source = NVL(in_chr_payment_source, xari.payment_s ource) AND NVL(xari.source_header_reference, 100) BETWEEN NVL(in_num_from_s

ource_hdr_ref, NVL(xari.source_header_reference, 100)) AND NVL(in_num_to_source_ hdr_ref, NVL(xari.source_header_reference, 100)) AND NVL(xari.org_id,NVL(TO_NUMBER(DECODE( SUBSTRB(USERENV('CLIENT_IN FO'),1,1),' ', NULL, SUBSTRB(USERENV('CLIENT_INFO'),1,10))),-99)) = NVL(TO_NUMBE R(DECODE( SUBSTRB(USERENV('CLIENT_INFO'),1,1),' ',NULL, SUBSTRB(USERENV('CLIENT_ INFO'),1,10))),-99); BEGIN--Begin procedure reverse_receipts_in_ar Fnd_File.PUT_LINE( Fnd_File.LOG , '************************************ ********************'); Fnd_File.PUT_LINE( Fnd_File.LOG , ' Receipt Reversing '); Fnd_File.PUT_LINE( Fnd_File.LOG , '************************************ ********************'); out_chr_retcode := '0'; out_chr_errbuf := 'Procedure completed successfully.'; /*IT#977.so*//* SELECT TO_CHAR(SYSDATE,'DD-MON-RRRR HH:MM:SS') INTO l_chr_start_time FROM dual;*//*IT#977.eo*/ g_chr_debug_flag := in_chr_debug; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Process variables : '); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_chr_reversal_category_code : ' || in_chr_reversal_category_code); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_chr_reversal_reason_code : ' || in_chr_reversal_reason_code); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_num_from_source_hdr_ref : ' || in_num_from_source_hdr_ref); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_num_to_source_hdr_ref : ' || in_num_to_source_hdr_ref); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_chr_from_distributor : ' || in_chr_from_distributor); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_chr_to_distributor : ' || in_chr_to_distributor); Fnd_File.PUT_LINE( Fnd_File.LOG , 'in_chr_payment_source : ' || in_chr_payment_source); END IF; FOR reverse_receipts_rec IN cur_reverse_receipts LOOP--Loop for each void-ed receipt l_num_record_count := l_num_record_count + 1; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'In cur_reverse_receipts. Curso r variables : '); Fnd_File.PUT_LINE( Fnd_File.LOG , 'reverse_receipts_rec.process_f lag : ' || reverse_receipts_rec.process_flag); Fnd_File.PUT_LINE( Fnd_File.LOG , 'reverse_receipts_rec.payment_s ource : ' || reverse_receipts_rec.payment_source); Fnd_File.PUT_LINE( Fnd_File.LOG , 'reverse_receipts_rec.source_li ne_reference : ' || reverse_receipts_rec.source_line_reference); Fnd_File.PUT_LINE( Fnd_File.LOG , 'reverse_receipts_rec.amount_re ceived : ' || reverse_receipts_rec.amount_received); Fnd_File.PUT_LINE( Fnd_File.LOG , 'reverse_receipts_rec.receipt_i d : ' || reverse_receipts_rec.receipt_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'reverse_receipts_rec.comments : ' || reverse_receipts_rec.comments); END IF; BEGIN IF reverse_receipts_rec.payment_source = 'ORDERPAY' THEN

BEGIN SELECT ooha.header_id , ooha.order_number INTO l_num_order_header_id , l_num_order_number FROM --TD#2904.o oe_order_headers ooha oe_order_headers_all ooha --TD#2904.n , XHL_OM_PAYMENT_HEADERS_ALL xopha , XHL_OM_PAYMENT_LINES_ALL xopla WHERE ooha.header_id = xopha.order_header_id AND xopha.payment_id = xopla.payment_id AND xopla.payment_line_id = reverse_receipts_rec.source_ line_reference; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_order_header_id : '||l_num_order_header_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_order_number : '|| l_num_order_number); END IF; EXCEPTION WHEN OTHERS THEN out_chr_retcode := '1'; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 35: ') ; END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code QLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||S UBSTR(SQLERRM,1,200)); RAISE ORDER_NOT_FOUND_EXCP; END; END IF; --If the process flag on the record is unprocessed, delete the en try only from the interim table IF reverse_receipts_rec.process_flag = g_chr_process_flag_unprocs d THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling interim_line_del _on_rev'); END IF; interim_line_del_on_rev( l_num_ret_status , reverse_receipts_rec.interim_line_id) ; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Unprocessed receipt reverse d successfully.'); l_num_rev_success := l_num_rev_success + 1; --If the process flag is errored, then set the reset flag to 'Y', so that the base table updation --procedure called, resets the error description and updated the applied status ELSIF reverse_receipts_rec.process_flag = g_chr_process_flag_fail ure THEN IF reverse_receipts_rec.payment_source = 'APF' THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling ar_base_rever se_receipt'); : '||S

END IF; ar_base_reverse_receipt( l_num_ret_status , reverse_receipts_rec.source_line_r eference); ELSIF reverse_receipts_rec.payment_source = 'ORDERPAY' THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling orderpay_base _reverse_receipt'); END IF; orderpay_base_reverse_receipt( l_num_ret_status , reverse_receipts_rec.source_ line_reference); ELSIF reverse_receipts_rec.payment_source = 'ACCOUNTINGWB' THE N IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling account_base_ reverse_receipt'); END IF; account_base_reverse_receipt( l_num_ret_status , reverse_receipts_rec.source_l ine_reference); ELSE --If payment source is handled, then raise user exception out_chr_retcode := '1'; RAISE UNDEFINED_SOURCE_EXCP; END IF; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_ret_status'); END IF; --If the entry in the base table has been successfully updated th en, delete the line from interim table. IF l_num_ret_status = 0 THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling interim_line_ del_on_rev'); END IF; interim_line_del_on_rev( l_num_ret_status , reverse_receipts_rec.interim_line_ id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Reversal of an errored r eceipt record successful.'); l_num_rev_success := l_num_rev_success + 1; ELSE l_num_rev_failure := l_num_rev_failure + 1; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(g_chr_exception_description,1,1 00); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Reversal of an errored r eceipt record was unsuccessful.'); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG, 'SQL Error Code : '|| g_chr_err_code); Fnd_File.PUT_LINE(Fnd_File.LOG, 'SQL Error Message : '|| g_chr_exception_description);

END IF; END IF; --If the process flag is 'processed', then check if it has been gen erated by payments receivables program ELSIF reverse_receipts_rec.process_flag = g_chr_process_flag_succ ess THEN BEGIN --Fetch the value for receipt creation source from the DFF -- Added attribute columns for Defect# 8873 SELECT attribute12 , attribute13 , receipt_number , attribute_category , attribute1 , attribute2 , attribute3 , attribute4 , attribute5 , attribute6 , attribute7 , attribute8 , attribute9 , attribute10 , attribute11 , attribute12 , attribute13 , attribute14 , attribute15 INTO l_chr_source_flag , l_chr_amount_received , l_chr_receipt_number , l_attribute_rec.attribute_category , l_attribute_rec.attribute1 , l_attribute_rec.attribute2 , l_attribute_rec.attribute3 , l_attribute_rec.attribute4 , l_attribute_rec.attribute5 , l_attribute_rec.attribute6 , l_attribute_rec.attribute7 , l_attribute_rec.attribute8 , l_attribute_rec.attribute9 , l_attribute_rec.attribute10 , l_attribute_rec.attribute11 , l_attribute_rec.attribute12 , l_attribute_rec.attribute13 , l_attribute_rec.attribute14 , l_attribute_rec.attribute15 FROM ar_cash_receipts WHERE cash_receipt_id = reverse_receipts_rec.receipt_id; IF g_chr_debug_flag = Fnd_File.PUT_LINE( : ' || l_chr_source_flag); Fnd_File.PUT_LINE( : ' || l_chr_amount_received ); Fnd_File.PUT_LINE( : ' || l_chr_receipt_number ); END IF; g_chr_yes THEN Fnd_File.LOG , 'l_chr_source_flag Fnd_File.LOG , 'l_chr_amount_received Fnd_File.LOG , 'l_chr_receipt_number

EXCEPTION WHEN NO_DATA_FOUND THEN out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when NO_DATA_FOUND : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code QLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||S UBSTR(SQLERRM,1,200)); RAISE CASH_RECEIPT_NOT_FOUND_EXCP; WHEN OTHERS THEN out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG,'Unknown error occure d while retreiving record from AR_CASH_RECEIPTS'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 36: ') ; END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||S QLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||S UBSTR(SQLERRM,1,200)); END; --If the source (= Y) is generated by the payment receivables integration program then reverse it. IF NVL(l_chr_source_flag, g_chr_no) = g_chr_yes THEN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG,'Calling reverse API'); END IF; Ar_Receipt_Api_Pub.REVERSE( p_api_version => l_ num_api_version , p_init_msg_list => Fn d_Api.G_TRUE , p_commit => Fn d_Api.G_FALSE , p_validation_level => Fn d_Api.G_VALID_LEVEL_FULL , p_cash_receipt_id => re verse_receipts_rec.receipt_id , p_reversal_comments => re verse_receipts_rec.comments , p_reversal_category_code => in _chr_reversal_category_code , p_reversal_reason_code => in _chr_reversal_reason_code , p_attribute_rec => l_ attribute_rec , p_cancel_claims_flag => g_ chr_yes , p_reversal_gl_date => SY SDATE , p_reversal_date => SY SDATE , p_receipt_number => NU : '||S

LL , p_reversal_category_name => NU LL , p_reversal_reason_name LL , p_called_from LL , p_global_attribute_rec LL , x_return_status chr_return_status , x_msg_count num_msg_count , x_msg_data chr_msg_data ); --Set the reset flag to N, so that the error description fi eld is not reset but only the status IF l_chr_return_status = Fnd_Api.G_RET_STS_SUCCESS THEN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG,'Updating AR_CASH_REC EIPTS_ALL'); END IF; UPDATE SET , , , WHERE ; IF SQL%ROWCOUNT = 0 THEN out_chr_retcode := '1'; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG ,'Error while upda ting the AR_CASH_RECEIPTS_ALL'); END IF; END IF; IF reverse_receipts_rec.payment_source = 'APF' THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling ar_base _reverse_receipt'); END IF; ar_base_reverse_receipt( l_num_ret_status , reverse_receipts_rec.source_ line_reference); ELSIF reverse_receipts_rec.payment_source = 'ORDERPAY' T HEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling orderpa y_base_reverse_receipt'); END IF; orderpay_base_reverse_receipt( l_num_ret_status , reverse_receipts_rec.s ource_line_reference); IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_ret_statu s : '||l_num_ret_status); ar_cash_receipts_all attribute13 = TO_CHAR(0) last_updated_by = g_num_user_id last_update_date = SYSDATE last_update_login = g_num_login_id cash_receipt_id = reverse_receipts_rec.receipt_id => l_ => l_ => l_ => NU => NU => NU

END IF; --On successful updation of order payments base table , update order receipt reference table IF l_num_ret_status = 0 THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling upda te_order_ref_on_rev'); END IF; update_order_ref_on_rev( l_num_ret_status , l_num_order_header_id , reverse_receipts_rec.rece ipt_id); ELSE out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(g_chr_exception_descript ion,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG,'Error in updat ing order XHL_OM_PAYMENT_LINES_ALL.'); Fnd_File.PUT_LINE( Fnd_File.LOG,'SQL Error Code : ' || g_chr_err_code); Fnd_File.PUT_LINE( Fnd_File.LOG,'SQL Error Mess age : ' || g_chr_exception_description); END IF; END IF; ELSIF reverse_receipts_rec.payment_source = 'ACCOUNTINGW B' THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling ar_base _reverse_receipt'); END IF; ar_base_reverse_receipt( l_num_ret_status , reverse_receipts_rec.source_ line_reference); ELSE out_chr_retcode := '1'; --If payment source is not handled, then raise user e xception RAISE UNDEFINED_SOURCE_EXCP; END IF; IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_ret_status : '||l_num_ret_status); END IF; --On successful updation of base tables, delete the line from the interim table IF l_num_ret_status = 0 THEN IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling interim _line_del_on_rev'); END IF; interim_line_del_on_rev( l_num_ret_status , reverse_receipts_rec.interim _line_id); l_num_rev_success := l_num_rev_success + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt number '||l_c hr_receipt_number ||' reversed successfully.'); IF g_chr_debug_flag = g_chr_yes THEN

Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_rev_success' || l_num_rev_success); END IF; ELSE out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(g_chr_exception_description ,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG,'SQL Error Code : ' || g_chr_err_code); Fnd_File.PUT_LINE( Fnd_File.LOG,'SQL Error Message : ' || g_chr_exception_description); END IF; END IF; --If there is an error then log the message ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_ERROR THEN out_chr_retcode := '1'; l_num_rev_failure := l_num_rev_failure + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Reversal of receipt n umber '||l_chr_receipt_number ||' was unsuccessful.'); IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_rev_failure : ' || l_num_rev_failure); END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_ERRO R while reversing receipt ' || re verse_receipts_rec.receipt_id); END IF; FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG ,Fnd_Msg_Pub.Get(i,'F ')); out_chr_errbuf := SUBSTR(Fnd_Msg_Pub.Get(i,'F'),1,10 0); END LOOP; --If there is an unexpected error then log the message ELSIF l_chr_return_status = Fnd_Api.G_RET_STS_UNEXP_ERROR T HEN out_chr_retcode := '1'; l_num_rev_failure := l_num_rev_failure + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Reversal of receipt n umber '||l_chr_receipt_number ||' was unsuccessful.'); IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_rev_failure : ' || l_num_rev_failure); END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'FND_API.G_EXC_UNEX PECTED_ERROR while reversing receipt ' ||rev erse_receipts_rec.receipt_id); END IF; FOR i IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE( Fnd_File.LOG ,Fnd_Msg_Pub.Get(i,'F ')); out_chr_errbuf := SUBSTR(Fnd_Msg_Pub.Get(i,'F'),1,100

); END LOOP; END IF; --If the receipt has been generated by some external source an d it is a payment on an order then --unapply the same, ELSE IF reverse_receipts_rec.payment_source = 'APF' THEN NULL; ELSIF reverse_receipts_rec.payment_source = 'ORDERPAY' THEN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'Calling unapply_order pay_receipt'); END IF; --Call unapply procedure for a receipt on the particular order unapply_orderpay_receipt( l_num_ret_status , reverse_receipts_rec.receipt_i d , l_num_order_number , in_chr_debug); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'l_num_ret_status : '| | l_num_ret_status); END IF; --On successful unapplication update order payment base table IF l_num_ret_status = 0 THEN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'Calling orderpay_b ase_reverse_receipt'); END IF; orderpay_base_reverse_receipt( l_num_ret_status , reverse_receipts_rec.s ource_line_reference); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'l_num_ret_status : '|| l_num_ret_status); END IF; --On successful updation of order payment base table, update order receipt reference table IF l_num_ret_status = 0 THEN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'Calling update_ order_ref_on_rev'); END IF; update_order_ref_on_rev( l_num_ret_status , l_num_order_header_id , reverse_receipts_rec.rece ipt_id); ELSE out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(g_chr_exception_descript ion,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG,'SQL Error Code : ' || g_chr_err_code);

Fnd_File.PUT_LINE( Fnd_File.LOG,'SQL error mess age : ' || g_chr_exception_description); END IF; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'l_num_ret_status : '|| l_num_ret_status); END IF; --On successful updation of base tables, delete the e ntry from the interim table IF l_num_ret_status = 0 THEN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'Calling interim _line_del_on_rev'); END IF; interim_line_del_on_rev( l_num_ret_status , reverse_receipts_rec.inte rim_line_id); ELSE out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(g_chr_exception_descript ion,1,100); IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG,'SQL Error Code : ' || g_chr_err_code); Fnd_File.PUT_LINE( Fnd_File.LOG,'SQL Error Mess age : ' || g_chr_exception_description); END IF; END IF; IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'l_num_ret_status : '|| l_num_ret_status); END IF; --On unsuccessful deletion from the interim table, lo g the message IF l_num_ret_status = 0 THEN l_num_rev_success := l_num_rev_success + 1; Fnd_File.PUT_LINE( Fnd_File.LOG , 'Receipt number '||l_chr_receipt_number ||' reversed successfully.'); IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_rev_su ccess : ' || l_num_rev_success); END IF; ELSE out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(g_chr_exception_descript ion,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG,'SQL Error Code : ' || g_chr_err_code); Fnd_File.PUT_LINE( Fnd_File.LOG,'SQL Error Mess age : ' || g_chr_exception_description); END IF; END IF; ELSE l_num_rev_failure := l_num_rev_failure + 1;

IF g_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_rev_failu re : ' || l_num_rev_failure); END IF; out_chr_retcode := '1'; out_chr_errbuf := SUBSTR(g_chr_exception_description ,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG, 'Error while call ing procedure unapply_order_receipt'); Fnd_File.PUT_LINE( Fnd_File.LOG,'SQL Error Code : ' || g_chr_err_code); Fnd_File.PUT_LINE( Fnd_File.LOG,'SQL Error Message : ' || g_chr_exception_description); END IF; END IF; ELSIF reverse_receipts_rec.payment_source = 'ACCOUNTINGWB' THEN NULL; ELSE out_chr_retcode := '1'; --If payment source is unhandled then raise user excepti on RAISE UNDEFINED_SOURCE_EXCP; END IF; END IF; END IF; EXCEPTION WHEN ORDER_NOT_FOUND_EXCP THEN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG,'Unknown error occured whil e fetching order header id'); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when ORDER_NOT_FOUND_EXC P: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE ); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR( SQLERRM,1,200)); out_chr_errbuf := SUBSTR(SQLERRM,1,100); WHEN UNDEFINED_SOURCE_EXCP THEN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'Error: Found undefined paym ent source - '||reverse_receipts_rec.payment_source); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when UNDEFINED_SOURCE_EX CP : '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE ); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR( SQLERRM,1,200)); out_chr_errbuf := 'Error: Found undefined payment source - '|| reverse_receipts_rec.payment_source; WHEN CASH_RECEIPT_NOT_FOUND_EXCP THEN IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'Error: Cash receipt not fou nd in AR_CASH_RECEIPTS for receipt id '||reverse_receipts_rec.receipt_id); Fnd_File.PUT_LINE(Fnd_File.LOG,'In when CASH_RECEIPT_NOT_FO

UND_EXCP: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code ); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR( SQLERRM,1,200)); out_chr_errbuf := 'Error: Cash receipt not found in AR_CASH_RE CEIPTS for receipt id '||reverse_receipts_rec.receipt_id; END; COMMIT; END LOOP; /*IT#977.so*//* SELECT TO_CHAR(SYSDATE,'DD-MON-RRRR HH:MM:SS') INTO l_chr_end_time FROM dual;*//*IT#977.eo*/ Fnd_File.PUT_LINE( Fnd_File.LOG , ********************'); Fnd_File.PUT_LINE( Fnd_File.LOG , ry '); Fnd_File.PUT_LINE( Fnd_File.LOG , ********************'); /*IT#977.so*//* Fnd_File.PUT_LINE( r_start_time); Fnd_File.PUT_LINE( Fnd_File.LOG , *IT#977.eo*/ Fnd_File.PUT_LINE( Fnd_File.LOG , : ' || l_num_record_count); Fnd_File.PUT_LINE( Fnd_File.LOG , ully : ' || l_num_rev_success); Fnd_File.PUT_LINE( Fnd_File.LOG , : ' || l_num_rev_failure); '************************************ ' Receipt Reversing Summa : '||SQLCODE

'************************************ Fnd_File.LOG , 'Start Time: ' || l_ch ' End Time: ' || l_chr_end_time);*// 'Number of records processed 'Number of receipts reversed successf 'Number of receipt reversal failures

EXCEPTION WHEN OTHERS THEN out_chr_retcode := '2'; out_chr_errbuf := SUBSTR(SQLERRM,1,100); IF in_chr_debug = g_chr_yes THEN Fnd_File.PUT_LINE(Fnd_File.LOG,'In when others 37: '); END IF; Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Code : '||SQLCODE); Fnd_File.PUT_LINE(Fnd_File.LOG,'SQL Error Message : '||SUBSTR(SQLERR M,1,200)); END reverse_receipts_in_ar; --End of procedure reverse_receipts_in_ar PROCEDURE create_primary_bill_to (in_num_cust_account_id IN NUMBER, in_chr_debug_flag IN VARCHAR2, out_num_orig_bill_addr_id OUT NUMBER, out_chr_location OUT VARCHAR2) AS l_num_msg_count NUMBER := 0; --To store the number of erro r messages API has encountered l_chr_msg_data VARCHAR2(2000) := NULL; --To store the error message text l_chr_return_status VARCHAR2(1) := NULL; --To store the execution stat us of the called procedure l_num_cust_acct_site_id hz_cust_acct_sites_all.cust_acct_site_id%TYPE := NULL ; l_num_party_site_id hz_cust_acct_sites_all.cust_acct_site_id%TYPE := NULL

; l_num_site_use_id ; l_chr_location ; l_num_party_id ; p_cust_acct_site_rec Hz_Cust_Account_Site_V2pub.cust_acct_site_rec_type; p_cust_site_use_rec Hz_Cust_Account_Site_V2pub.cust_site_use_rec_type; p_customer_profile_rec Hz_Customer_Profile_V2pub.customer_profile_rec_type; NO_SITE_EXCP EXCEPTION; BEGIN out_num_orig_bill_addr_id := NULL; out_chr_location := NULL; BEGIN SELECT hcsu.cust_acct_site_id, hcsu.LOCATION INTO l_num_cust_acct_site_id, l_chr_location FROM hz_cust_acct_sites hcas, hz_cust_site_uses hcsu WHERE hcas.cust_account_id = in_num_cust_account_id AND hcas.status = 'A' AND hcsu.cust_acct_site_id = hcas.cust_acct_site_id AND hcsu.site_use_code = 'BILL_TO' AND hcsu.status = 'A' AND ROWNUM < 2; EXCEPTION WHEN NO_DATA_FOUND THEN BEGIN SELECT hpa.party_site_id INTO l_num_party_site_id FROM hz_cust_accounts hca, hz_party_sites hpa, hz_party_site_uses hpsu WHERE hca.cust_account_id = in_num_cust_account_id AND hpa.party_id = hca.party_id AND hpsu.party_site_id = hpa.party_site_id AND hpa.status = 'A' AND hpsu.site_use_type = 'BILL_TO' AND hpsu.primary_per_type = 'Y' AND hpsu.status = 'A'; IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_party_site_id : '|| l_nu m_party_site_id); -Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling hz_cust_account_site _v2pub.create_cust_acct_site'); END IF; --Start of site creation p_cust_acct_site_rec.party_site_id := l_num_party_site_id; p_cust_acct_site_rec.cust_account_id := in_num_cust_account_id; p_cust_acct_site_rec.created_by_module :='XHLARRCR'; hz_party_sites.party_id%TYPE := NULL hz_cust_site_uses_all.LOCATION%TYPE := NULL hz_cust_site_uses_all.site_use_id%TYPE := NULL

/*********ITG#52825 - Changes for the 11.5.10 project**************/ -- Check if any cust acct site exists BEGIN SELECT INTO FROM WHERE AND AND AND hcas.cust_acct_site_id l_num_cust_acct_site_id hz_cust_acct_sites hcas hcas.cust_account_id = in_num_cust_account_id hcas.party_site_id = l_num_party_site_id hcas.status = 'A' ROWNUM < 2;

EXCEPTION WHEN OTHERS THEN l_num_cust_acct_site_id :=NULL; END; -- cust site creation api will be called only if there are no cust s ites existing IF l_num_cust_acct_site_id IS NULL THEN IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling hz_cust_account_site_v 2pub.create_cust_acct_site'); END IF; --create customer site in proc location Hz_Cust_Account_Site_V2pub.create_cust_acct_site('T' ,p_cust_acct_site_re c ,l_num_cust_acct_sit e_id ,l_chr_return_status ,l_num_msg_count ,l_chr_msg_data); IF l_chr_return_status <> 'S' THEN FOR l_num_index IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE(Fnd_File.LOG, Fnd_Msg_Pub.Get(l_num_index,' F')); END LOOP; RAISE NO_SITE_EXCP; END IF; END IF; IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'cust_acct_site_id : '|| l_num_ cust_acct_site_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling hz_cust_account_site_v 2pub.create_cust_site_use'); END IF; --create the site use p_cust_site_use_rec.cust_acct_site_id := l_num_cust_acct_site_id; p_cust_site_use_rec.site_use_code := 'BILL_TO'; p_cust_site_use_rec.created_by_module := 'XHLARRCR';

Hz_Cust_Account_Site_V2pub.create_cust_site_use('T' ,p_cust_site_use_rec ,p_customer_profile_ rec ,'' ,'' ,l_num_site_use_id ,l_chr_return_status ,l_num_msg_count ,l_chr_msg_data); IF l_chr_return_status <> 'S' THEN FOR l_num_index IN 1..l_num_msg_count LOOP Fnd_File.PUT_LINE(Fnd_File.LOG,Fnd_Msg_Pub.Get(l_num_index,'F ')); END LOOP; RAISE NO_SITE_EXCP; END IF; SELECT INTO FROM WHERE hcsu.LOCATION l_chr_location hz_cust_site_uses hcsu hcsu.site_use_id = l_num_site_use_id;

IF in_chr_debug_flag = g_chr_yes THEN Fnd_File.PUT_LINE( Fnd_File.LOG , 'After executing hz_cust_accoun t_site_v2pub.create_cust_site_use'); Fnd_File.PUT_LINE( Fnd_File.LOG , 'site_use_id : '|| l_num_site_ use_id); Fnd_File.PUT_LINE( Fnd_File.LOG , 'l_num_location : '|| l_chr_loc ation); Fnd_File.PUT_LINE( Fnd_File.LOG , 'Calling hz_cust_account_site_v 2pub.create_cust_site_use'); END IF; EXCEPTION WHEN OTHERS THEN RAISE NO_SITE_EXCP; END; END; out_num_orig_bill_addr_id := l_num_cust_acct_site_id; out_chr_location := l_chr_location; EXCEPTION WHEN NO_SITE_EXCP THEN Fnd_File.PUT_LINE(Fnd_File.LOG, 'Error in fetching '); WHEN OTHERS THEN Fnd_File.PUT_LINE(Fnd_File.LOG, 'Error in fetching '); Fnd_File.PUT_LINE(Fnd_File.LOG, 'SQL Code Fnd_File.PUT_LINE(Fnd_File.LOG, 'SQL Error Message ,100)); END create_primary_bill_to; END Xhl_Ar_Recv_Integration_Pkg; /

the party information : the party information : : ' || SQLCODE); : ' || SUBSTR(SQLERRM,1

S-ar putea să vă placă și