242: -- match option is PO, for which we do not stamp the
243: -- invoice distribution with rcv_transaction_id .
244: SELECT nvl(sum(nvl(quantity_invoiced,0)),0)-nvl(sum(nvl(price_correct_qty,0)),0) --6509492
245: INTO p_billed_qty
246: FROM ap_invoice_distributions AID
247: WHERE NVL(AID.rcv_transaction_id,P_rcv_transaction_id)
248: = P_rcv_transaction_id
249: AND AID.po_distribution_id = P_po_distribution_id
250: --BUGFIX:5641346
370: Begin
371:
372: Select Nvl(Sum(aid.corrected_quantity), 0)
373: Into l_existing_corr_qty
374: From ap_invoice_distributions_all aid,
375: ap_invoice_lines_all ail
376: Where aid.corrected_invoice_dist_id = p_invoice_dist_id
377: And ail.line_number = aid.invoice_line_number
378: And ail.match_type = 'QTY_CORRECTION'
421:
422: -- Bug 5585744 , added the line_type_lookup_code condition
423: SELECT count(*)
424: INTO p_num_line_dists
425: FROM ap_invoice_distributions_all
426: WHERE invoice_id = P_invoice_id
427: AND invoice_line_number = P_invoice_line_number
428: AND line_type_lookup_code in ('ITEM', 'ACCRUAL')
429: AND prepay_distribution_id is NULL;
430:
431: If (p_num_line_dists = 1 ) Then
432: SELECT invoice_distribution_id
433: INTO p_inv_distribution_id
434: FROM ap_invoice_distributions_all
435: WHERE invoice_id = P_invoice_id
436: AND invoice_line_number = P_invoice_line_number
437: AND line_type_lookup_code in ('ITEM', 'ACCRUAL')
438: AND prepay_distribution_id is NULL;
466:
467: l_invoice_line_rec ap_invoice_lines%ROWTYPE;
468: l_match_mode VARCHAR2(8);
469: l_index po_distributions_all.po_distribution_id%TYPE;
470: l_dist_ccid ap_invoice_distributions_all.dist_code_combination_id%TYPE;
471: l_corr_inv_dist_id ap_invoice_distributions_all.invoice_distribution_id%TYPE;
472: l_dist_tab ap_matching_pkg.dist_tab_type;
473: l_othr_chrg_tab ap_othr_chrg_match_pkg.othr_chrg_match_tabtype;
474: l_corr_dist_tab ap_matching_pkg.corr_dist_tab_type;
467: l_invoice_line_rec ap_invoice_lines%ROWTYPE;
468: l_match_mode VARCHAR2(8);
469: l_index po_distributions_all.po_distribution_id%TYPE;
470: l_dist_ccid ap_invoice_distributions_all.dist_code_combination_id%TYPE;
471: l_corr_inv_dist_id ap_invoice_distributions_all.invoice_distribution_id%TYPE;
472: l_dist_tab ap_matching_pkg.dist_tab_type;
473: l_othr_chrg_tab ap_othr_chrg_match_pkg.othr_chrg_match_tabtype;
474: l_corr_dist_tab ap_matching_pkg.corr_dist_tab_type;
475: l_inv_line_tab ap_invoice_corrections_pkg.line_tab_type;
546: BEGIN
547:
548: SELECT invoice_distribution_id, dist_code_combination_id
549: INTO l_corr_inv_dist_id, l_dist_ccid
550: FROM ap_invoice_distributions
551: WHERE invoice_id = l_invoice_line_rec.corrected_inv_id
552: AND invoice_line_number = l_invoice_line_rec.corrected_line_number
553: AND po_distribution_id = l_invoice_line_rec.po_distribution_id;
554:
874:
875: BEGIN
876: SELECT sum(amount)
877: INTO p_billed_amt
878: FROM ap_invoice_distributions AID
879: WHERE NVL(AID.rcv_transaction_id,P_rcv_transaction_id)
880: = P_rcv_transaction_id
881: AND AID.po_distribution_id = P_po_distribution_id
882: --Bugfix:5641346
900: Begin
901:
902: Select amount
903: Into l_dist_amt
904: From ap_invoice_distributions_all
905: Where invoice_distribution_id = p_invoice_dist_id;
906:
907: Select Nvl(Sum(aid.amount), 0)
908: Into l_existing_corr_amt
905: Where invoice_distribution_id = p_invoice_dist_id;
906:
907: Select Nvl(Sum(aid.amount), 0)
908: Into l_existing_corr_amt
909: From ap_invoice_distributions_all aid,
910: ap_invoice_lines_all ail
911: Where aid.corrected_invoice_dist_id = p_invoice_dist_id
912: And ail.line_number = aid.invoice_line_number
913: And ail.match_type = 'LINE_CORRECTION'
1042: l_po_distribution_id NUMBER;
1043:
1044: TYPE dist_record_type is RECORD
1045: (po_distribution_id PO_DISTRIBUTIONS.po_distribution_id%TYPE, --Index Column
1046: total_dist_qty_invoiced AP_INVOICE_DISTRIBUTIONS.quantity_invoiced%TYPE,
1047: total_dist_qty_applied AP_INVOICE_DISTRIBUTIONS.quantity_invoiced%TYPE,
1048: total_dist_amt_invoiced AP_INVOICE_DISTRIBUTIONS.amount%TYPE,
1049: total_dist_amt_applied AP_INVOICE_DISTRIBUTIONS.amount%TYPE,
1050: matching_basis PO_LINE_LOCATIONS.matching_basis%TYPE);
1043:
1044: TYPE dist_record_type is RECORD
1045: (po_distribution_id PO_DISTRIBUTIONS.po_distribution_id%TYPE, --Index Column
1046: total_dist_qty_invoiced AP_INVOICE_DISTRIBUTIONS.quantity_invoiced%TYPE,
1047: total_dist_qty_applied AP_INVOICE_DISTRIBUTIONS.quantity_invoiced%TYPE,
1048: total_dist_amt_invoiced AP_INVOICE_DISTRIBUTIONS.amount%TYPE,
1049: total_dist_amt_applied AP_INVOICE_DISTRIBUTIONS.amount%TYPE,
1050: matching_basis PO_LINE_LOCATIONS.matching_basis%TYPE);
1051:
1044: TYPE dist_record_type is RECORD
1045: (po_distribution_id PO_DISTRIBUTIONS.po_distribution_id%TYPE, --Index Column
1046: total_dist_qty_invoiced AP_INVOICE_DISTRIBUTIONS.quantity_invoiced%TYPE,
1047: total_dist_qty_applied AP_INVOICE_DISTRIBUTIONS.quantity_invoiced%TYPE,
1048: total_dist_amt_invoiced AP_INVOICE_DISTRIBUTIONS.amount%TYPE,
1049: total_dist_amt_applied AP_INVOICE_DISTRIBUTIONS.amount%TYPE,
1050: matching_basis PO_LINE_LOCATIONS.matching_basis%TYPE);
1051:
1052: TYPE dist_tab_type IS TABLE OF dist_record_type INDEX BY BINARY_INTEGER;
1045: (po_distribution_id PO_DISTRIBUTIONS.po_distribution_id%TYPE, --Index Column
1046: total_dist_qty_invoiced AP_INVOICE_DISTRIBUTIONS.quantity_invoiced%TYPE,
1047: total_dist_qty_applied AP_INVOICE_DISTRIBUTIONS.quantity_invoiced%TYPE,
1048: total_dist_amt_invoiced AP_INVOICE_DISTRIBUTIONS.amount%TYPE,
1049: total_dist_amt_applied AP_INVOICE_DISTRIBUTIONS.amount%TYPE,
1050: matching_basis PO_LINE_LOCATIONS.matching_basis%TYPE);
1051:
1052: TYPE dist_tab_type IS TABLE OF dist_record_type INDEX BY BINARY_INTEGER;
1053:
1061: SELECT aid.po_distribution_id,
1062: decode(pll.matching_basis,'QUANTITY',sum(nvl(aid.quantity_invoiced,0))),
1063: decode(pll.matching_basis,'AMOUNT',sum(nvl(aid.amount,0))),
1064: pll.matching_basis
1065: FROM ap_invoice_distributions_v aid,
1066: ap_invoices ai,
1067: po_line_locations pll
1068: WHERE pll.line_location_id = P_Po_Line_Location_Id
1069: AND pll.shipment_type <> 'PREPAYMENT'
1076: select aid.po_distribution_id,
1077: decode(pll.matching_basis,'QUANTITY',sum(nvl(aid.quantity_invoiced,0))),
1078: decode(pll.matching_basis,'AMOUNT',sum(nvl(aid.amount,0))),
1079: pll.matching_basis
1080: from ap_invoice_distributions aid,
1081: po_distributions_all pd,
1082: po_line_locations pll
1083: where pll.line_location_id = p_po_line_location_id
1084: and pll.shipment_type <> 'PREPAYMENT'
1294:
1295: CURSOR C_Prepay_dists IS
1296: SELECT prepay_distribution_id,
1297: amount
1298: FROM ap_invoice_distributions
1299: WHERE invoice_id = p_invoice_id
1300: AND invoice_line_number = p_invoice_line_number
1301: AND line_type_lookup_code IN ('REC_TAX','NONREC_TAX')
1302: AND prepay_distribution_id IS NOT NULL;
1332: l_inv_xrate_type ap_invoices_all.exchange_rate_type%TYPE;
1333: l_inv_pay_curr_code ap_invoices_all.payment_currency_code%TYPE;
1334: l_inv_pay_cross_rate_date ap_invoices_all.payment_cross_rate_date%TYPE;
1335: l_inv_pay_cross_rate_type ap_invoices_all.payment_cross_rate_type%TYPE;
1336: TYPE PREPAY_DIST_ID_LIST IS TABLE OF AP_INVOICE_DISTRIBUTIONS_ALL.PREPAY_DISTRIBUTION_ID%TYPE INDEX BY PLS_INTEGER;
1337: TYPE RECOUP_AMOUNT_LIST IS TABLE OF AP_INVOICE_DISTRIBUTIONS_ALL.AMOUNT%TYPE INDEX BY PLS_INTEGER;
1338: l_prepay_dist_id_list prepay_dist_id_list;
1339: l_recoup_amount_list recoup_amount_list;
1340:
1333: l_inv_pay_curr_code ap_invoices_all.payment_currency_code%TYPE;
1334: l_inv_pay_cross_rate_date ap_invoices_all.payment_cross_rate_date%TYPE;
1335: l_inv_pay_cross_rate_type ap_invoices_all.payment_cross_rate_type%TYPE;
1336: TYPE PREPAY_DIST_ID_LIST IS TABLE OF AP_INVOICE_DISTRIBUTIONS_ALL.PREPAY_DISTRIBUTION_ID%TYPE INDEX BY PLS_INTEGER;
1337: TYPE RECOUP_AMOUNT_LIST IS TABLE OF AP_INVOICE_DISTRIBUTIONS_ALL.AMOUNT%TYPE INDEX BY PLS_INTEGER;
1338: l_prepay_dist_id_list prepay_dist_id_list;
1339: l_recoup_amount_list recoup_amount_list;
1340:
1341: tax_exception EXCEPTION;
1489:
1490: CLOSE c_prepay_dists;
1491:
1492: FORALL i IN l_prepay_dist_id_list.first .. l_prepay_dist_id_list.last
1493: UPDATE ap_invoice_distributions
1494: SET prepay_amount_remaining = prepay_amount_remaining + l_recoup_amount_list(i)
1495: WHERE invoice_distribution_id = l_prepay_dist_id_list(i);
1496:
1497: l_debug_info := 'Update payment schedules with the tax on recouped distributions';
1500: END IF;
1501:
1502: SELECT sum(aid.amount)
1503: INTO l_recouped_tax_amount
1504: FROM ap_invoice_distributions aid,
1505: ap_invoice_distributions aid1,
1506: ap_invoice_lines ail
1507: WHERE aid.invoice_id = p_invoice_id
1508: AND aid.invoice_line_number = p_invoice_line_number
1501:
1502: SELECT sum(aid.amount)
1503: INTO l_recouped_tax_amount
1504: FROM ap_invoice_distributions aid,
1505: ap_invoice_distributions aid1,
1506: ap_invoice_lines ail
1507: WHERE aid.invoice_id = p_invoice_id
1508: AND aid.invoice_line_number = p_invoice_line_number
1509: AND ail.invoice_id = aid.invoice_id
1591: IF (p_invoice_line_number IS NOT NULL) THEN
1592:
1593: SELECT sum(aid.amount)
1594: INTO l_recouped_amount
1595: FROM ap_invoice_distributions aid,
1596: ap_invoice_lines ail
1597: WHERE aid.invoice_id = p_invoice_id
1598: AND aid.invoice_line_number = p_invoice_line_number
1599: AND ail.invoice_id = aid.invoice_id
1603: OR (aid.line_type_lookup_code IN ('REC_TAX','NONREC_TAX') and
1604: aid.prepay_distribution_id IS NOT NULL)
1605: OR (aid.line_type_lookup_code IN ('TIPV','TRV','TERV')
1606: and aid.related_id IN (SELECT invoice_distribution_id
1607: FROM ap_invoice_distributions aid1
1608: WHERE aid1.invoice_id = aid.invoice_id
1609: AND aid1.invoice_line_number = aid.invoice_line_number
1610: AND aid1.line_type_lookup_code IN ('REC_TAX','NONREC_TAX')
1611: AND aid1.prepay_distribution_id IS NOT NULL)
1614: ELSE
1615:
1616: SELECT sum(aid.amount)
1617: INTO l_recouped_amount
1618: FROM ap_invoice_distributions aid,
1619: ap_invoice_lines ail
1620: WHERE aid.invoice_id = p_invoice_id
1621: AND ail.invoice_id = aid.invoice_id
1622: AND ail.line_number = aid.invoice_line_number
1625: OR (aid.line_type_lookup_code IN ('REC_TAX','NONREC_TAX') and
1626: aid.prepay_distribution_id IS NOT NULL)
1627: OR (aid.line_type_lookup_code IN ('TIPV','TRV','TERV')
1628: and aid.related_id IN (SELECT invoice_distribution_id
1629: FROM ap_invoice_distributions aid1
1630: WHERE aid1.invoice_id = aid.invoice_id
1631: AND aid1.invoice_line_number = aid.invoice_line_number
1632: AND aid1.line_type_lookup_code IN ('REC_TAX','NONREC_TAX')
1633: AND aid1.prepay_distribution_id IS NOT NULL)
1652: l_recouped_amount := 0;
1653:
1654: SELECT sum(aid.amount)
1655: INTO l_recouped_amount
1656: FROM ap_invoice_distributions aid
1657: WHERE aid.invoice_id = p_invoice_id
1658: AND aid.invoice_line_number = p_invoice_line_number
1659: AND aid.line_type_lookup_code = 'PREPAY'
1660: AND aid.prepay_distribution_id IN (SELECT aid1.invoice_distribution_id
1657: WHERE aid.invoice_id = p_invoice_id
1658: AND aid.invoice_line_number = p_invoice_line_number
1659: AND aid.line_type_lookup_code = 'PREPAY'
1660: AND aid.prepay_distribution_id IN (SELECT aid1.invoice_distribution_id
1661: FROM ap_invoice_distributions aid1
1662: WHERE aid1.invoice_id = p_prepay_invoice_id
1663: AND aid1.invoice_line_number = p_prepay_line_number);
1664:
1665: RETURN(l_recouped_amount);
1680: l_recouped_tax_amount := 0;
1681:
1682: SELECT sum(aid.amount)
1683: INTO l_recouped_tax_amount
1684: FROM ap_invoice_distributions aid
1685: WHERE aid.invoice_id = p_invoice_id
1686: AND aid.invoice_line_number = p_invoice_line_number
1687: AND
1688: ((aid.line_type_lookup_code IN ('REC_TAX','NONREC_TAX')
1686: AND aid.invoice_line_number = p_invoice_line_number
1687: AND
1688: ((aid.line_type_lookup_code IN ('REC_TAX','NONREC_TAX')
1689: and aid.prepay_distribution_id IN (SELECT aid1.invoice_distribution_id
1690: FROM ap_invoice_distributions aid1
1691: WHERE aid1.invoice_id = p_prepay_invoice_id
1692: AND aid1.invoice_line_number = p_prepay_line_number)
1693: ) OR
1694: (aid.line_type_lookup_code IN ('TIPV','TRV','TERV')
1692: AND aid1.invoice_line_number = p_prepay_line_number)
1693: ) OR
1694: (aid.line_type_lookup_code IN ('TIPV','TRV','TERV')
1695: and aid.related_id IN (SELECT invoice_distribution_id
1696: FROM ap_invoice_distributions aid2
1697: WHERE aid2.invoice_id = aid.invoice_id
1698: AND aid2.invoice_line_number = aid.invoice_line_number
1699: AND aid2.line_type_lookup_code IN ('REC_TAX','NONREC_TAX')
1700: AND aid2.prepay_distribution_id IN
1698: AND aid2.invoice_line_number = aid.invoice_line_number
1699: AND aid2.line_type_lookup_code IN ('REC_TAX','NONREC_TAX')
1700: AND aid2.prepay_distribution_id IN
1701: (SELECT aid4.invoice_distribution_id
1702: FROM ap_invoice_distributions aid4
1703: WHERE aid4.invoice_id = p_prepay_invoice_id
1704: AND aid4.invoice_line_number = p_prepay_line_number)
1705: )
1706: )