BEGIN
SELECT SUM(decode(ail.line_type_lookup_code,
'ITEM',
(ail.amount - nvl(ail.included_tax_amount, 0)),
'RETAINAGE RELEASE',
(ail.amount - nvl(ail.included_tax_amount, 0)),
'RETROITEM',
(ail.amount - nvl(ail.included_tax_amount, 0)),
NULL)) item_total,
SUM(decode(ail.line_type_lookup_code,
'FREIGHT',
(ail.amount - nvl(ail.included_tax_amount, 0)),
NULL)) freight_total,
SUM(decode(ail.line_type_lookup_code,
'MISCELLANEOUS',
(ail.amount - nvl(ail.included_tax_amount, 0)),
NULL)) misc_total
INTO l_item_total, l_freight_total, l_misc_total
FROM ap_invoice_lines_all ail
WHERE ail.invoice_id = cur_datas.invoice_id;
EXCEPTION
WHEN OTHERS THEN
l_item_total := NULL;
l_freight_total := NULL;
l_misc_total := NULL;
END;
BEGIN
SELECT (0 - SUM(decode(aid.line_type_lookup_code, 'PREPAY', aid.amount, NULL))) prepay_app_total
INTO l_prepaid_amount
FROM ap_invoice_distributions_all aid, ap_invoice_lines_all ail
WHERE ail.invoice_id = cur_datas.invoice_id
AND ail.invoice_id = aid.invoice_id
AND ail.line_number = aid.invoice_line_number
AND aid.line_type_lookup_code = 'PREPAY'
AND aid.prepay_distribution_id IS NOT NULL
AND nvl(ail.invoice_includes_prepay_flag, 'N') = 'N';
EXCEPTION
WHEN OTHERS THEN
l_prepaid_amount := NULL;
END;
BEGIN
SELECT SUM(nvl(amount, 0))
INTO l_retained_total
FROM ap_invoice_distributions_all aid
WHERE aid.invoice_id = cur_datas.invoice_id
AND aid.line_type_lookup_code = 'RETAINAGE'
AND EXISTS
(SELECT 'X'
FROM ap_invoice_lines_all ail
WHERE ail.invoice_id = cur_datas.invoice_id
AND ail.line_number = aid.invoice_line_number
AND ail.line_type_lookup_code <> 'RETAINAGE RELEASE');
EXCEPTION
WHEN OTHERS THEN
l_retained_total := NULL;
END;
SELECT nvl(SUM(decode(nvl(zls.self_assessed_flag, 'N'),
'N',
CASE
WHEN EXISTS
(SELECT 'Prepay App Exists'
FROM ap_invoice_lines prepay
WHERE prepay.invoice_id = zls.trx_id
AND prepay.line_type_lookup_code = 'PREPAY'
AND prepay.prepay_invoice_id = zls.applied_from_trx_id
AND prepay.prepay_line_number = zls.applied_from_line_id
AND prepay.invoice_includes_prepay_flag = 'Y'
AND (prepay.discarded_flag IS NULL OR prepay.discarded_flag = 'N')) THEN
0
ELSE
nvl(zls.tax_amt, 0)
END,
0)),
0)
INTO l_total_tax_amount
FROM zx_lines_summary zls
WHERE zls.application_id = 200
AND zls.entity_code = 'AP_INVOICES'
AND zls.event_class_code IN
('STANDARD INVOICES', 'PREPAYMENT INVOICES', 'EXPENSE REPORTS')
AND zls.trx_id = cur_datas.invoice_id
AND nvl(zls.reporting_only_flag, 'N') = 'N';
SELECT nvl(SUM(nvl(ail.amount, 0)), 0)
INTO l_ret_tax_amt
FROM ap_invoice_lines_all ail
WHERE ail.invoice_id = cur_datas.invoice_id
AND line_type_lookup_code = 'RETROTAX';
l_total_tax_amount := l_total_tax_amount + l_ret_tax_amt;
l_subtotal := nvl(l_item_total, 0) + nvl(l_retained_total, 0) -
nvl(abs(l_prepaid_amount), 0) -
nvl(ap_invoices_pkg.get_amount_withheld(cur_datas.invoice_id),
0);
l_total := nvl(l_subtotal, 0) + nvl(l_total_tax_amount, 0) +
nvl(l_freight_total, 0) + nvl(l_misc_total, 0);