Vous êtes sur la page 1sur 4

declare l_customer_trx_id number; l_bill_to_site_use_id number; l_trx_number number; l_ecs_payment_number number; l_receipt_method_id number; l_rcpt_status varchar2(5); l_rcpt_msg varchar2(150);

v_nxt_recpt_amt number :=-99; l_bank_account_id number; l_count number; v_emi_amount_due number; v_cur_rcpt_amt number; v_amount_to_pay number; --l_receipt_method_id number; l_emi_response_code varchar2(5); l_emi_amount_received number; l_emi_amount_requested number; l_emi_received_date date; l_invoice_id number;

begin

for c1 in ( select emi_response_code, emi_amount_received, emi_amount_requested, emi_received_date, invoice_id--, from xxidi_emi_invoice_details where customer_number=:XXIDI_CUSTOMER_emi_details.custom er_number and customer_emi_id=:XXIDI_CUSTOMER_emi_details.custome r_emi_id and customer_id=:XXIDI_CUSTOMER_emi_details.customer_id and invoice_id is not null

order by EMI_DUE_DATE ) loop fnd_message.set_string('l_emi_received_date= '||l_emi_re ceived_date); fnd_message.show(); --and emi_response_code='FAILED' --and emi_due_date between :XXIDI_CUSTOMER_emi_details.E MI_START_DATE and :ADVANCE_PAYMENT.emi_received_date; l_receipt_method_id:=fnd_profile.value('XXIDI_RECEIPT_METHOD'); l_bank_account_id :=fnd_profile.value('XXIDI_REMIT_BANK');--10000; SELECT customer_trx_id ,bill_to_site_use_id,trx_number INTO l_customer_trx_id,l_bill_to_site_use_id,l_trx_number FROM ra_customer_trx_all WHERE bill_to_customer_id=:XXIDI_CUSTOMER_emi_details.customer_id; IF c1.emi_response_code ='FAILED' THEN select count(1),sum(emi_amount_requested) into l_count,v_emi_amount_due from xxidi_emi_invoice_details where customer_number=:XXIDI_CUSTOMER_emi_details.custom er_number and customer_emi_id=:XXIDI_CUSTOMER_emi_details.custome r_emi_id and customer_id=:XXIDI_CUSTOMER_emi_details.customer_id and emi_response_code='FAILED' and emi_due_date between :XXIDI_CUSTOMER_emi_details.EMI _START_DATE and c1.emi_received_date; IF l_count>0 then fnd_message.set_string('l_count'||l_count); fnd_message.show(); for c2 in ( select ecs_payment_number, customer_id, customer_emi_id, customer_number , emi_response_code , emi_amount_received, emi_amount_requested, emi_received_date , emi_response_reason , ecs_file_transaction_id , invoice_id--, customer_site_use_id --invoice_number from xxidi_emi_invoice_details where customer_number=:XXIDI_CUSTOMER_emi_details.custom

er_number and customer_emi_id=:XXIDI_CUSTOMER_emi_details.custome r_emi_id and customer_id=:XXIDI_CUSTOMER_emi_details.customer_id and emi_response_code='FAILED' and emi_due_date between :XXIDI_CUSTOMER_emi_details.EMI _START_DATE and l_emi_received_date ) loop --v_cur_rcpt_amt:=c2.emi_amount_requested ; if v_nxt_recpt_amt=-99 then v_cur_rcpt_amt := :ADVANCE_PAYMENT.CHEQUE_AMOUNT-c2.emi_ amount_requested; v_amount_to_pay:=:ADVANCE_PAYMENT.emi_amount_received; fnd_message.set_string('v_cur_rcpt_amt = '||v_cu r_rcpt_amt); fnd_message.show(); -- v_amount_to_pay := c1.emi_amount_received; else v_cur_rcpt_amt := v_nxt_recpt_amt-c2.emi_amount_requeste d; fnd_message.set_string('v_cur_rcpt_amt = '||v_cur_rcpt_a mt); fnd_message.show(); end if; if v_cur_rcpt_amt<=0 then xxidi_emi_details.create_ar_receipt(:XXIDI_CUSTOMER_emi_ details.customer_id,l_bill_to_site_use_id,XXIDI_EMI_DETAILS.generate_payment_num ber,v_amount_to_pay,sysdate,l_receipt_method_id,l_bank_account_id,l_invoice_id,l _rcpt_status,l_rcpt_msg); update xxidi_emi_invoice_details set emi_amount_received=l_emi_amount_received, emi_response_code='PAID' where customer_number=:XXIDI_CUSTOMER_emi_details.custom er_number and customer_emi_id=:XXIDI_CUSTOMER_emi_details.custome r_emi_id and customer_id=:XXIDI_CUSTOMER_emi_details.customer_id; elsif v_cur_rcpt_amt>0 then xxidi_emi_details.create_ar_receipt (:XXIDI_CUSTOMER_emi _details.customer_id,l_bill_to_site_use_id,XXIDI_EMI_DETAILS.generate_payment_nu mber,c2.emi_amount_requested,sysdate,l_receipt_method_id,l_bank_account_id,l_inv oice_id,l_rcpt_status,l_rcpt_msg); update xxidi_emi_invoice_details set emi_amount_received=c2.emi_amount_requested, emi_response_code='PAID' where customer_number=:XXIDI_CUSTOMER_emi_details.custom er_number and customer_emi_id=:XXIDI_CUSTOMER_emi_details.custome r_emi_id and customer_id=:XXIDI_CUSTOMER_emi_details.customer_id;

v_nxt_recpt_amt :=v_cur_rcpt_amt; v_amount_to_pay := v_nxt_recpt_amt-c2.emi_amount_request ed; end if; exit when v_nxt_recpt_amt<0; fnd_message.set_string('Loop exited'); fnd_message.show(); end loop; elsif l_count=0 then xxidi_emi_details.create_ar_receipt (:XXIDI_CUSTOMER_emi _details.customer_id,l_bill_to_site_use_id,XXIDI_EMI_DETAILS.generate_payment_nu mber,:ADVANCE_PAYMENT.cheque_amount,sysdate,l_receipt_method_id,l_bank_account_i d,:ADVANCE_PAYMENT.invoice_id,l_rcpt_status,l_rcpt_msg); end if; end if; end loop; end; commit; go_block('xxidi_customer_emi_details');

Vous aimerez peut-être aussi