1: PACKAGE BODY AP_INVOICES_POST_PROCESS_PKG AS
2: /* $Header: apinvppb.pls 120.13.12010000.2 2009/01/28 05:29:09 dcshanmu ship $ */
3:
4: -----------------------------------------------------------------------
5: -- Procedure create_holds
13: X_calling_sequence IN varchar2)
14: IS
15: current_calling_sequence VARCHAR2(2000);
16: debug_info VARCHAR2(100);
17: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
18: l_base_amount AP_INVOICES.base_amount%TYPE;
19: l_invoice_currency_code
20: AP_INVOICES.invoice_currency_code%TYPE;
21: l_invoice_amount_limit
14: IS
15: current_calling_sequence VARCHAR2(2000);
16: debug_info VARCHAR2(100);
17: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
18: l_base_amount AP_INVOICES.base_amount%TYPE;
19: l_invoice_currency_code
20: AP_INVOICES.invoice_currency_code%TYPE;
21: l_invoice_amount_limit
22: PO_VENDOR_SITES.invoice_amount_limit%TYPE;
16: debug_info VARCHAR2(100);
17: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
18: l_base_amount AP_INVOICES.base_amount%TYPE;
19: l_invoice_currency_code
20: AP_INVOICES.invoice_currency_code%TYPE;
21: l_invoice_amount_limit
22: PO_VENDOR_SITES.invoice_amount_limit%TYPE;
23: l_base_currency_code
24: AP_SYSTEM_PARAMETERS.base_currency_code%TYPE;
33: AI.invoice_currency_code,
34: VS.invoice_amount_limit,
35: SP.base_currency_code,
36: nvl(VS.hold_future_payments_flag,'N')
37: from ap_invoices_all AI,
38: ap_batches_all AB,
39: ap_system_parameters_all SP,
40: po_vendor_sites VS
41: where AI.invoice_id = X_invoice_id
47:
48: -- Update the calling sequence
49: --
50: current_calling_sequence :=
51: 'AP_INVOICES_POST_PROCESS_PKG.create_holds<-'
52: ||X_calling_sequence;
53:
54: open invoice_cursor;
55: fetch invoice_cursor
166:
167: IS
168: current_calling_sequence VARCHAR2(2000);
169: debug_info VARCHAR2(1000);
170: l_terms_id AP_INVOICES.terms_id%TYPE;
171: l_created_by AP_INVOICES.created_by%TYPE;
172: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
173: l_batch_id AP_INVOICES.batch_id%TYPE;
174: l_terms_date AP_INVOICES.terms_date%TYPE;
167: IS
168: current_calling_sequence VARCHAR2(2000);
169: debug_info VARCHAR2(1000);
170: l_terms_id AP_INVOICES.terms_id%TYPE;
171: l_created_by AP_INVOICES.created_by%TYPE;
172: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
173: l_batch_id AP_INVOICES.batch_id%TYPE;
174: l_terms_date AP_INVOICES.terms_date%TYPE;
175: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
168: current_calling_sequence VARCHAR2(2000);
169: debug_info VARCHAR2(1000);
170: l_terms_id AP_INVOICES.terms_id%TYPE;
171: l_created_by AP_INVOICES.created_by%TYPE;
172: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
173: l_batch_id AP_INVOICES.batch_id%TYPE;
174: l_terms_date AP_INVOICES.terms_date%TYPE;
175: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
176: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
169: debug_info VARCHAR2(1000);
170: l_terms_id AP_INVOICES.terms_id%TYPE;
171: l_created_by AP_INVOICES.created_by%TYPE;
172: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
173: l_batch_id AP_INVOICES.batch_id%TYPE;
174: l_terms_date AP_INVOICES.terms_date%TYPE;
175: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
176: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
177: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
170: l_terms_id AP_INVOICES.terms_id%TYPE;
171: l_created_by AP_INVOICES.created_by%TYPE;
172: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
173: l_batch_id AP_INVOICES.batch_id%TYPE;
174: l_terms_date AP_INVOICES.terms_date%TYPE;
175: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
176: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
177: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
178: l_amt_applicable_to_discount
171: l_created_by AP_INVOICES.created_by%TYPE;
172: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
173: l_batch_id AP_INVOICES.batch_id%TYPE;
174: l_terms_date AP_INVOICES.terms_date%TYPE;
175: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
176: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
177: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
178: l_amt_applicable_to_discount
179: AP_INVOICES.amount_applicable_to_discount%TYPE;
172: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
173: l_batch_id AP_INVOICES.batch_id%TYPE;
174: l_terms_date AP_INVOICES.terms_date%TYPE;
175: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
176: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
177: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
178: l_amt_applicable_to_discount
179: AP_INVOICES.amount_applicable_to_discount%TYPE;
180: l_payment_method_code
173: l_batch_id AP_INVOICES.batch_id%TYPE;
174: l_terms_date AP_INVOICES.terms_date%TYPE;
175: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
176: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
177: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
178: l_amt_applicable_to_discount
179: AP_INVOICES.amount_applicable_to_discount%TYPE;
180: l_payment_method_code
181: AP_INVOICES.payment_method_code%TYPE;
175: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
176: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
177: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
178: l_amt_applicable_to_discount
179: AP_INVOICES.amount_applicable_to_discount%TYPE;
180: l_payment_method_code
181: AP_INVOICES.payment_method_code%TYPE;
182: l_invoice_currency_code
183: AP_INVOICES.invoice_currency_code%TYPE;
177: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
178: l_amt_applicable_to_discount
179: AP_INVOICES.amount_applicable_to_discount%TYPE;
180: l_payment_method_code
181: AP_INVOICES.payment_method_code%TYPE;
182: l_invoice_currency_code
183: AP_INVOICES.invoice_currency_code%TYPE;
184: l_payment_currency_code
185: AP_INVOICES.payment_currency_code%TYPE;
179: AP_INVOICES.amount_applicable_to_discount%TYPE;
180: l_payment_method_code
181: AP_INVOICES.payment_method_code%TYPE;
182: l_invoice_currency_code
183: AP_INVOICES.invoice_currency_code%TYPE;
184: l_payment_currency_code
185: AP_INVOICES.payment_currency_code%TYPE;
186: l_invoice_type_lookup_code
187: AP_INVOICES.invoice_type_lookup_code%TYPE;
181: AP_INVOICES.payment_method_code%TYPE;
182: l_invoice_currency_code
183: AP_INVOICES.invoice_currency_code%TYPE;
184: l_payment_currency_code
185: AP_INVOICES.payment_currency_code%TYPE;
186: l_invoice_type_lookup_code
187: AP_INVOICES.invoice_type_lookup_code%TYPE;
188: l_batch_hold_lookup_code AP_BATCHES.hold_lookup_code%TYPE;
189: l_batch_hold_reason AP_BATCHES.hold_reason%TYPE;
183: AP_INVOICES.invoice_currency_code%TYPE;
184: l_payment_currency_code
185: AP_INVOICES.payment_currency_code%TYPE;
186: l_invoice_type_lookup_code
187: AP_INVOICES.invoice_type_lookup_code%TYPE;
188: l_batch_hold_lookup_code AP_BATCHES.hold_lookup_code%TYPE;
189: l_batch_hold_reason AP_BATCHES.hold_reason%TYPE;
190: l_vendor_id NUMBER;
191: l_vendor_site_id NUMBER;
188: l_batch_hold_lookup_code AP_BATCHES.hold_lookup_code%TYPE;
189: l_batch_hold_reason AP_BATCHES.hold_reason%TYPE;
190: l_vendor_id NUMBER;
191: l_vendor_site_id NUMBER;
192: l_invoice_date AP_INVOICES.invoice_date%TYPE;
193: l_error_code VARCHAR2(30);
194: l_msg_data VARCHAR2(30);
195: l_msg_application VARCHAR2(25);
196: l_msg_type VARCHAR2(25);
215: AI.vendor_site_id,
216: AB.hold_lookup_code,
217: AB.hold_reason,
218: AI.invoice_date
219: from ap_invoices AI,
220: ap_batches AB
221: where AI.invoice_id = X_invoice_id
222: and AI.batch_id = AB.batch_id (+);
223:
225:
226: -- Update the calling sequence
227: --
228: current_calling_sequence :=
229: 'AP_INVOICES_POST_PROCESS_PKG.insert_children<-'
230: ||X_calling_sequence;
231:
232: -- Retrieve the values we need from the newly inserted
233: -- invoice so we can create the payment schedules
368: debug_info VARCHAR2(100);
369:
370: cursor liability_changed_cursor is
371: SELECT 'Y'
372: FROM ap_invoices AI,
373: financials_system_parameters FSP
374: WHERE invoice_id = X_invoice_id
375: AND (AI.accts_pay_code_combination_id <> X_accts_pay_ccid OR
376: --
395: AND FSP.purch_encumbrance_flag <> 'Y';
396:
397: cursor vendor_changed_cursor is
398: SELECT 'Y'
399: FROM ap_invoices
400: WHERE vendor_id <> X_vendor_id
401: AND invoice_id = X_invoice_id;
402:
403: cursor recalc_pay_sched_cursor is
416: -- (4) payment method (new for 10SC),
417: -- (5) amount applicable to discount
418: --
419: SELECT 'Y'
420: FROM ap_invoices AI
421: WHERE invoice_id = X_invoice_id
422: AND (AI.invoice_amount <> X_invoice_amount OR
423: AI.terms_id <> X_terms_id OR
424: AI.terms_date <> X_terms_date OR
432:
433: -- Update the calling sequence
434: --
435: current_calling_sequence :=
436: 'AP_INVOICES_POST_PROCESS_PKG.invoice_pre_update<-'||X_calling_sequence;
437:
438: -- Determine whether the vendor has changed
439: open vendor_changed_cursor;
440: fetch vendor_changed_cursor into X_vendor_changed_flag;
518: X_Sched_Hold_count IN OUT NOCOPY number) -- bug 5334577
519: IS
520: current_calling_sequence VARCHAR2(2000);
521: debug_info VARCHAR2(100);
522: l_terms_id AP_INVOICES.terms_id%TYPE;
523: l_created_by AP_INVOICES.created_by%TYPE;
524: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
525: l_batch_id AP_INVOICES.batch_id%TYPE;
526: l_terms_date AP_INVOICES.terms_date%TYPE;
519: IS
520: current_calling_sequence VARCHAR2(2000);
521: debug_info VARCHAR2(100);
522: l_terms_id AP_INVOICES.terms_id%TYPE;
523: l_created_by AP_INVOICES.created_by%TYPE;
524: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
525: l_batch_id AP_INVOICES.batch_id%TYPE;
526: l_terms_date AP_INVOICES.terms_date%TYPE;
527: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
520: current_calling_sequence VARCHAR2(2000);
521: debug_info VARCHAR2(100);
522: l_terms_id AP_INVOICES.terms_id%TYPE;
523: l_created_by AP_INVOICES.created_by%TYPE;
524: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
525: l_batch_id AP_INVOICES.batch_id%TYPE;
526: l_terms_date AP_INVOICES.terms_date%TYPE;
527: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
528: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
521: debug_info VARCHAR2(100);
522: l_terms_id AP_INVOICES.terms_id%TYPE;
523: l_created_by AP_INVOICES.created_by%TYPE;
524: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
525: l_batch_id AP_INVOICES.batch_id%TYPE;
526: l_terms_date AP_INVOICES.terms_date%TYPE;
527: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
528: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
529: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
522: l_terms_id AP_INVOICES.terms_id%TYPE;
523: l_created_by AP_INVOICES.created_by%TYPE;
524: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
525: l_batch_id AP_INVOICES.batch_id%TYPE;
526: l_terms_date AP_INVOICES.terms_date%TYPE;
527: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
528: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
529: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
530: l_amt_applicable_to_discount
523: l_created_by AP_INVOICES.created_by%TYPE;
524: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
525: l_batch_id AP_INVOICES.batch_id%TYPE;
526: l_terms_date AP_INVOICES.terms_date%TYPE;
527: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
528: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
529: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
530: l_amt_applicable_to_discount
531: AP_INVOICES.amount_applicable_to_discount%TYPE;
524: l_Last_Updated_By AP_INVOICES.Last_Updated_By%TYPE;
525: l_batch_id AP_INVOICES.batch_id%TYPE;
526: l_terms_date AP_INVOICES.terms_date%TYPE;
527: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
528: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
529: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
530: l_amt_applicable_to_discount
531: AP_INVOICES.amount_applicable_to_discount%TYPE;
532: l_payment_method_code
525: l_batch_id AP_INVOICES.batch_id%TYPE;
526: l_terms_date AP_INVOICES.terms_date%TYPE;
527: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
528: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
529: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
530: l_amt_applicable_to_discount
531: AP_INVOICES.amount_applicable_to_discount%TYPE;
532: l_payment_method_code
533: AP_INVOICES.payment_method_code%TYPE;
527: l_invoice_amount AP_INVOICES.invoice_amount%TYPE;
528: l_pay_curr_invoice_amount AP_INVOICES.invoice_amount%TYPE;
529: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
530: l_amt_applicable_to_discount
531: AP_INVOICES.amount_applicable_to_discount%TYPE;
532: l_payment_method_code
533: AP_INVOICES.payment_method_code%TYPE;
534: l_invoice_currency_code
535: AP_INVOICES.invoice_currency_code%TYPE;
529: l_payment_cross_rate AP_INVOICES.payment_cross_rate%TYPE;
530: l_amt_applicable_to_discount
531: AP_INVOICES.amount_applicable_to_discount%TYPE;
532: l_payment_method_code
533: AP_INVOICES.payment_method_code%TYPE;
534: l_invoice_currency_code
535: AP_INVOICES.invoice_currency_code%TYPE;
536: l_payment_currency_code
537: AP_INVOICES.payment_currency_code%TYPE;
531: AP_INVOICES.amount_applicable_to_discount%TYPE;
532: l_payment_method_code
533: AP_INVOICES.payment_method_code%TYPE;
534: l_invoice_currency_code
535: AP_INVOICES.invoice_currency_code%TYPE;
536: l_payment_currency_code
537: AP_INVOICES.payment_currency_code%TYPE;
538:
539: -- bug 2663549 variables declared
533: AP_INVOICES.payment_method_code%TYPE;
534: l_invoice_currency_code
535: AP_INVOICES.invoice_currency_code%TYPE;
536: l_payment_currency_code
537: AP_INVOICES.payment_currency_code%TYPE;
538:
539: -- bug 2663549 variables declared
540: l_awt_amount NUMBER;
541: l_inv_amt_remaining NUMBER;
554: AI.amount_applicable_to_discount,
555: AI.payment_method_code,
556: AI.invoice_currency_code,
557: AI.payment_currency_code
558: from ap_invoices AI
559: where AI.invoice_id = X_invoice_id;
560:
561: BEGIN
562:
562:
563: -- Update the calling sequence
564: --
565: current_calling_sequence :=
566: 'AP_INVOICES_POST_PROCESS_PKG.invoice_post_update<-'
567: ||X_calling_sequence;
568:
569: -- Retrieve the values we need from the recently updated
570: -- invoice so we can create the payment schedules
660: payment_status_flag = DECODE(payment_status_flag,
661: 'Y','P',payment_status_flag)
662: WHERE invoice_id = X_invoice_id;
663:
664: UPDATE ap_invoices
665: SET payment_status_flag = DECODE(payment_status_flag,
666: 'Y','P',payment_status_flag)
667: WHERE invoice_id = X_invoice_id;
668: end if;
723: debug_info VARCHAR2(100);
724:
725: CURSOR invoice_status_cursor is
726: select
727: AP_INVOICES_PKG.GET_APPROVAL_STATUS(
728: AI.INVOICE_ID,
729: AI.INVOICE_AMOUNT,
730: AI.PAYMENT_STATUS_FLAG,
731: AI.INVOICE_TYPE_LOOKUP_CODE),
728: AI.INVOICE_ID,
729: AI.INVOICE_AMOUNT,
730: AI.PAYMENT_STATUS_FLAG,
731: AI.INVOICE_TYPE_LOOKUP_CODE),
732: AP_INVOICES_PKG.GET_HOLDS_COUNT(
733: AI.INVOICE_ID),
734: AP_INVOICES_PKG.GET_SCHED_HOLDS_COUNT( --bug 5334577
735: AI.INVOICE_ID),
736: AP_INVOICES_PKG.GET_POSTING_STATUS(
730: AI.PAYMENT_STATUS_FLAG,
731: AI.INVOICE_TYPE_LOOKUP_CODE),
732: AP_INVOICES_PKG.GET_HOLDS_COUNT(
733: AI.INVOICE_ID),
734: AP_INVOICES_PKG.GET_SCHED_HOLDS_COUNT( --bug 5334577
735: AI.INVOICE_ID),
736: AP_INVOICES_PKG.GET_POSTING_STATUS(
737: AI.INVOICE_ID),
738: AI.AMOUNT_PAID,
732: AP_INVOICES_PKG.GET_HOLDS_COUNT(
733: AI.INVOICE_ID),
734: AP_INVOICES_PKG.GET_SCHED_HOLDS_COUNT( --bug 5334577
735: AI.INVOICE_ID),
736: AP_INVOICES_PKG.GET_POSTING_STATUS(
737: AI.INVOICE_ID),
738: AI.AMOUNT_PAID,
739: AP_INVOICES_PKG.GET_MAX_LINE_NUMBER(
740: AI.INVOICE_ID) + 1,
735: AI.INVOICE_ID),
736: AP_INVOICES_PKG.GET_POSTING_STATUS(
737: AI.INVOICE_ID),
738: AI.AMOUNT_PAID,
739: AP_INVOICES_PKG.GET_MAX_LINE_NUMBER(
740: AI.INVOICE_ID) + 1,
741: AP_INVOICES_UTILITY_PKG.GET_LINE_TOTAL(
742: AI.INVOICE_ID),
743: decode(AB.BATCH_ID,
737: AI.INVOICE_ID),
738: AI.AMOUNT_PAID,
739: AP_INVOICES_PKG.GET_MAX_LINE_NUMBER(
740: AI.INVOICE_ID) + 1,
741: AP_INVOICES_UTILITY_PKG.GET_LINE_TOTAL(
742: AI.INVOICE_ID),
743: decode(AB.BATCH_ID,
744: '',null,
745: AP_BATCHES_PKG.GET_ACTUAL_INV_COUNT(
747: decode(AB.BATCH_ID,
748: '',null,
749: AP_BATCHES_PKG.GET_ACTUAL_INV_AMOUNT(
750: AB.BATCH_ID))
751: from ap_invoices AI,
752: ap_batches_all AB --Bug: 6668692 : Added _all to table name
753: where AI.invoice_id = X_invoice_id
754: and AI.batch_id = AB.batch_id (+);
755: BEGIN
756:
757: -- Update the calling sequence
758: --
759: current_calling_sequence :=
760: 'AP_INVOICES_POST_PROCESS_PKG.post_forms_commit<-'||X_calling_sequence;
761:
762: -- Update the invoice distributions if necessary
763: --
764: if (nvl(X_update_base,'N') = 'Y' or
779:
780: -- Determine the current invoice statuses
781: --
782:
783: debug_info := 'Select invoice statuses from AP_INVOICES';
784:
785: open invoice_status_cursor;
786: fetch invoice_status_cursor into X_approval_status_lookup_code,
787: X_holds_count,
840:
841: -- Update the calling sequence
842: --
843: current_calling_sequence :=
844: 'AP_INVOICES_POST_PROCESS_PKG.Select_Summary<-'||X_Calling_Sequence;
845:
846: debug_info := 'Select from AP_INVOICES';
847:
848: select sum(nvl(invoice_amount,0))
842: --
843: current_calling_sequence :=
844: 'AP_INVOICES_POST_PROCESS_PKG.Select_Summary<-'||X_Calling_Sequence;
845:
846: debug_info := 'Select from AP_INVOICES';
847:
848: select sum(nvl(invoice_amount,0))
849: into X_Total
850: from ap_invoices
846: debug_info := 'Select from AP_INVOICES';
847:
848: select sum(nvl(invoice_amount,0))
849: into X_Total
850: from ap_invoices
851: where Batch_ID = X_Batch_ID;
852:
853: X_Total_Rtot_DB := X_Total;
854:
866: end if;
867: APP_EXCEPTION.RAISE_EXCEPTION;
868: END Select_Summary;
869:
870: END AP_INVOICES_POST_PROCESS_PKG;