Supplier Available Prepayment
In this post, we will get detail of supplier available prepayment. Available prepayment means the amount which the organization received from its supplier but still not adjusted. Below query will provide the complete detail of prepayment.
Detail Query
SELECT typ,ORG_ID,
ORG_NAME,
Prepayment_Type,
VENDOR_NAME lpp_vendor,
VENDOR_NUMBER lpp_vendor_num,
VENDOR_SITE_CODE lpp_site,
INVOICE_TYPE,
DUE_DATE lpp_due_date,
Payment_CURRENCY_CODE curr_code,
INVOICE_NUMBER,
INSTALLMENT_NUMBER,
INVOICE_DATE,
INV_DATE,
to_char(:P_TO_DATE,'DD-MON-RRRR') As ASONDATE,
C_AMT_DUE_REMAINING,
NVL (c_amt_due_remaining, 0) PP_TOT_OUTST_SAR,
DAY_OVER_DUE,
CASE WHEN DAY_OVER_DUE <= 0 THEN C_AMT_DUE_REMAINING ELSE 0 END
pp_NOT_DUE,
CASE
WHEN DAY_OVER_DUE BETWEEN 1 AND 30 THEN C_AMT_DUE_REMAINING
ELSE 0
END
pp_BUK1_30,
CASE
WHEN DAY_OVER_DUE BETWEEN 31 AND 60 THEN C_AMT_DUE_REMAINING
ELSE 0
END
pp_BUK31_60,
CASE
WHEN DAY_OVER_DUE BETWEEN 61 AND 90 THEN C_AMT_DUE_REMAINING
ELSE 0
END
pp_BUK61_90,
CASE
WHEN DAY_OVER_DUE BETWEEN 91 AND 180 THEN C_AMT_DUE_REMAINING
ELSE 0
END
pp_BUK91_180,
CASE
WHEN DAY_OVER_DUE BETWEEN 181 AND 360 THEN C_AMT_DUE_REMAINING
ELSE 0
END
pp_BUK181_360,
CASE WHEN DAY_OVER_DUE >= 361 THEN C_AMT_DUE_REMAINING ELSE 0 END
pp_BUK361,
TERMS_DATE,
c_amt_due_rem_orig
FROM (SELECT '1' typ,AIA.ORG_ID,
HOU.NAME ORG_NAME,
NVL (PSV.VENDOR_NAME, HP.PARTY_NAME) VENDOR_NAME,
NVL (PSV.SEGMENT1, PARTY_NUMBER) VENDOR_NUMBER,
PSV.VENDOR_ID VENDOR_ID,
NVL (PSSV.VENDOR_SITE_CODE, SITES.PARTY_SITE_NAME)
VENDOR_SITE_CODE,
AIA.INVOICE_TYPE_LOOKUP_CODE INVOICE_TYPE,
TO_CHAR (APSA.DUE_DATE, 'DD-MON-RRRR') DUE_DATE,
(TO_NUMBER (
TRUNC (NVL (AIA.INVOICE_DATE, :P_TO_DATE))
- TRUNC (:P_TO_DATE))
* -1)
DAY_OVER_DUE,
aia.Payment_CURRENCY_CODE,
AIA.INVOICE_NUM INVOICE_NUMBER,
TO_CHAR (AIA.INVOICE_DATE, 'DD-MON-RRRR') INVOICE_DATE,
TO_CHAR (AIA.INVOICE_DATE, 'YYYYMMDD') INV_DATE,
NVL(DECODE(NVL(gross_Amount,0) * NVL (aia.exchange_rate, 1),0,
NVL((SELECT SUM((apid.amount) * NVL (aia.exchange_rate, 1))
FROM ap_invoice_lines_all ail,
ap_invoice_distributions_all apid,
ap_payment_schedules_all apsa1
WHERE ail.invoice_id = aia.invoice_id
AND apid.invoice_id = aia.invoice_id
AND apid.invoice_line_number = ail.line_number
AND apsa1.invoice_id = aia.invoice_id
AND apsa1.payment_num = apsa.payment_num
AND ail.org_id = aia.org_id
AND apid.LINE_TYPE_LOOKUP_CODE IN ('ITEM','ACCRUAL')
AND apid.accounting_date <= :P_TO_DATE),0),NVL(gross_Amount,0) * NVL (aia.exchange_rate, 1))
-NVL((SELECT SUM((aipa.amount + NVL(aipa.discount_taken,0)) * NVL (aia.exchange_rate, 1)) FROM ap_invoice_payments_all aipa
WHERE aipa.invoice_id = aia.invoice_id
AND aipa.payment_num = apsa.payment_num
AND aipa.accounting_date <= NVL (:p_to_date,TRUNC (aipa.accounting_date))
),0),0) c_amt_due_remaining,
----
APSA.PAYMENT_NUM INSTALLMENT_NUMBER,
DECODE (AP_INVOICES_UTILITY_PKG.
get_approval_status (aia.invoice_id,
aia.invoice_amount,
aia.payment_status_flag,
aia.invoice_type_lookup_code),
'PERMANENT', 'Permanant',
'Temporary')
Prepayment_Type,
TO_CHAR (AIA.TERMS_DATE, 'DD-MON-RRRR') TERMS_DATE,
NVL(DECODE(NVL(gross_Amount,0) ,0,
NVL((SELECT SUM((apid.amount) )
FROM ap_invoice_lines_all ail,
ap_invoice_distributions_all apid,
ap_payment_schedules_all apsa1
WHERE ail.invoice_id = aia.invoice_id
AND apid.invoice_id = aia.invoice_id
AND apid.invoice_line_number = ail.line_number
AND apsa1.invoice_id = aia.invoice_id
AND apsa1.payment_num = apsa.payment_num
AND ail.org_id = aia.org_id
AND apid.LINE_TYPE_LOOKUP_CODE IN ('ITEM','ACCRUAL')
AND apid.accounting_date <= :P_TO_DATE
),0),NVL(gross_Amount,0)) -
NVL((SELECT SUM((aipa.amount + NVL(aipa.discount_taken,0))) FROM ap_invoice_payments_all aipa
WHERE aipa.invoice_id = aia.invoice_id
AND aipa.payment_num = apsa.payment_num
AND aipa.accounting_date <= NVL (:p_to_date,TRUNC (aipa.accounting_date))
),0),0) c_amt_due_rem_orig
FROM AP_INVOICES AIA,
AP_PAYMENT_SCHEDULES APSA,
HZ_PARTIES HP,
HZ_PARTY_SITES SITES,
POZ_SUPPLIERS_V PSV,
POZ_SUPPLIER_SITES_V PSSV,
HR_OPERATING_UNITS HOU,
(SELECT P.BASE_CURRENCY_CODE,
C.PRECISION,
NVL (C.MINIMUM_ACCOUNTABLE_UNIT, 0)
MINIMUM_ACCOUNTABLE_UNIT,
C.DESCRIPTION,
P.ORG_ID
FROM AP_SYSTEM_PARAMETERS_ALL P, FND_CURRENCIES_VL C
WHERE P.BASE_CURRENCY_CODE = C.CURRENCY_CODE) APSS
WHERE APSA.INVOICE_ID = AIA.INVOICE_ID
AND APSA.ORG_ID = AIA.ORG_ID
AND HP.PARTY_ID = AIA.PARTY_ID
AND PSV.VENDOR_ID(+) = AIA.VENDOR_ID
AND PSSV.VENDOR_SITE_ID(+) = AIA.VENDOR_SITE_ID
AND PSSV.VENDOR_ID(+) = AIA.VENDOR_ID
AND APSS.ORG_ID = AIA.ORG_ID
AND HOU.ORGANIZATION_ID = AIA.ORG_ID
AND SITES.PARTY_ID = HP.PARTY_ID
AND aia.invoice_type_lookup_code = 'PREPAYMENT'
AND aia.PARTY_SITE_ID = sites.PARTY_SITE_ID
AND aia.wfapproval_status IN
('MANUALLY APPROVED', 'NOT REQUIRED', 'WFAPPROVED', 'AVAILABLE')
AND ( (AIA.CANCELLED_DATE IS NOT NULL
AND TRUNC (AIA.CANCELLED_DATE) > :P_TO_DATE)
OR (AIA.CANCELLED_DATE IS NULL))
AND EXISTS (SELECT '1'
FROM AP_INVOICE_DISTRIBUTIONS
WHERE INVOICE_ID = AIA.INVOICE_ID
AND ACCOUNTING_DATE <= :P_TO_DATE
AND NVL(POSTED_FLAG,'N') = 'Y'
)
AND UPPER (HOU.NAME) = UPPER (NVL (:P_ORG_NAME, HOU.NAME))
AND ((psv.VENDOR_TYPE_LOOKUP_CODE IN (:P_Supplier_type)) OR ('All' IN ('All'||:P_Supplier_type)))
AND LTRIM(RTRIM(HP.party_name)) = LTRIM(RTRIM(NVL (:P_FROM_VENDOR_NAME, HP.party_name)))
AND ((PSSV.VENDOR_SITE_CODE IN (:P_VENDOR_SITE)) OR ('All' IN (:P_VENDOR_SITE||'All')))
AND NOT EXISTS (SELECT '1'
FROM ap_invoice_payments_all aipa, ap_checks_all aca
WHERE aipa.invoice_id = aia.invoice_id
AND aca.check_id = aipa.check_id
AND aipa.payment_num = apsa.payment_num
--AND aca.status_lookup_code <> 'VOIDED'
AND ( (aca.VOID_DATE IS NOT NULL
AND TRUNC (aca.VOID_DATE) > :P_TO_DATE)
OR (aca.VOID_DATE IS NULL))
AND aipa.accounting_date <= NVL (:p_to_date,TRUNC (aipa.accounting_date))
)
UNION
SELECT '2' typ,AIA.ORG_ID,
HOU.NAME ORG_NAME,
NVL (PSV.VENDOR_NAME, HP.PARTY_NAME) VENDOR_NAME,
NVL (PSV.SEGMENT1, PARTY_NUMBER) VENDOR_NUMBER,
PSV.VENDOR_ID VENDOR_ID,
NVL (PSSV.VENDOR_SITE_CODE, SITES.PARTY_SITE_NAME)
VENDOR_SITE_CODE,
AIA.INVOICE_TYPE_LOOKUP_CODE INVOICE_TYPE,
TO_CHAR (APSA.DUE_DATE, 'DD-MON-RRRR') DUE_DATE,
(TO_NUMBER (
TRUNC (NVL (AIA.INVOICE_DATE, :P_TO_DATE))
- TRUNC (:P_TO_DATE))
* -1)
DAY_OVER_DUE,
aia.Payment_CURRENCY_CODE,
AIA.INVOICE_NUM INVOICE_NUMBER,
TO_CHAR (AIA.INVOICE_DATE, 'DD-MON-RRRR') INVOICE_DATE,
TO_CHAR (AIA.INVOICE_DATE, 'YYYYMMDD') INV_DATE,
NVL(DECODE(NVL(gross_Amount,0) * NVL (aia.exchange_rate, 1),0, --commented on 17NOV2022
NVL((SELECT SUM((apid.amount) * NVL (aia.exchange_rate, 1))
FROM ap_invoice_lines_all ail,
ap_invoice_distributions_all apid,
ap_payment_schedules_all apsa1
WHERE ail.invoice_id = aia.invoice_id
AND apid.invoice_id = aia.invoice_id
AND apid.invoice_line_number = ail.line_number
AND apsa1.invoice_id = aia.invoice_id
AND apsa1.payment_num = apsa.payment_num
AND ail.org_id = aia.org_id
AND apid.LINE_TYPE_LOOKUP_CODE IN ('ITEM','ACCRUAL')
AND apid.accounting_date <= :P_TO_DATE),0),NVL(gross_Amount,0) * NVL (aia.exchange_rate, 1))
-
NVL((SELECT SUM((aipa.amount + NVL(aipa.discount_taken,0)) * NVL (aia.exchange_rate, 1)) FROM ap_invoice_payments_all aipa
WHERE aipa.invoice_id = aia.invoice_id
AND aipa.payment_num = apsa.payment_num
AND aipa.accounting_date <= NVL (:p_to_date,TRUNC (aipa.accounting_date))
),0),0) c_amt_due_remaining,
----
APSA.PAYMENT_NUM INSTALLMENT_NUMBER,
DECODE (AP_INVOICES_UTILITY_PKG.
get_approval_status (aia.invoice_id,
aia.invoice_amount,
aia.payment_status_flag,
aia.invoice_type_lookup_code),
'PERMANENT', 'Permanant',
'Temporary')
Prepayment_Type,
TO_CHAR (AIA.TERMS_DATE, 'DD-MON-RRRR') TERMS_DATE,
NVL(DECODE(NVL(gross_Amount,0) ,0,
NVL((SELECT SUM((apid.amount) )
FROM ap_invoice_lines_all ail,
ap_invoice_distributions_all apid,
ap_payment_schedules_all apsa1
WHERE ail.invoice_id = aia.invoice_id
AND apid.invoice_id = aia.invoice_id
AND apid.invoice_line_number = ail.line_number
AND apsa1.invoice_id = aia.invoice_id
AND apsa1.payment_num = apsa.payment_num
AND ail.org_id = aia.org_id
AND apid.LINE_TYPE_LOOKUP_CODE IN ('ITEM','ACCRUAL')
AND apid.accounting_date <= :P_TO_DATE
),0),NVL(gross_Amount,0)) -
NVL((SELECT SUM((aipa.amount + NVL(aipa.discount_taken,0)) ) FROM ap_invoice_payments_all aipa
WHERE aipa.invoice_id = aia.invoice_id
AND aipa.payment_num = apsa.payment_num
AND aipa.accounting_date <= NVL (:p_to_date,TRUNC (aipa.accounting_date))
),0),0) c_amt_due_rem_orig
FROM AP_INVOICES AIA,
AP_PAYMENT_SCHEDULES APSA,
HZ_PARTIES HP,
HZ_PARTY_SITES SITES,
POZ_SUPPLIERS_V PSV,
POZ_SUPPLIER_SITES_V PSSV,
HR_OPERATING_UNITS HOU,
(SELECT P.BASE_CURRENCY_CODE,
C.PRECISION,
NVL (C.MINIMUM_ACCOUNTABLE_UNIT, 0)
MINIMUM_ACCOUNTABLE_UNIT,
C.DESCRIPTION,
P.ORG_ID
FROM AP_SYSTEM_PARAMETERS_ALL P, FND_CURRENCIES_VL C
WHERE P.BASE_CURRENCY_CODE = C.CURRENCY_CODE) APSS
WHERE APSA.INVOICE_ID = AIA.INVOICE_ID
AND APSA.ORG_ID = AIA.ORG_ID
AND HP.PARTY_ID = AIA.PARTY_ID
AND PSV.VENDOR_ID(+) = AIA.VENDOR_ID
AND PSSV.VENDOR_SITE_ID(+) = AIA.VENDOR_SITE_ID
AND PSSV.VENDOR_ID(+) = AIA.VENDOR_ID
AND APSS.ORG_ID = AIA.ORG_ID
AND HOU.ORGANIZATION_ID = AIA.ORG_ID
AND SITES.PARTY_ID = HP.PARTY_ID
AND aia.invoice_type_lookup_code = 'PREPAYMENT'
AND aia.PARTY_SITE_ID = sites.PARTY_SITE_ID
AND aia.wfapproval_status IN
('MANUALLY APPROVED', 'NOT REQUIRED', 'WFAPPROVED', 'AVAILABLE')
AND ( (AIA.CANCELLED_DATE IS NOT NULL
AND TRUNC (AIA.CANCELLED_DATE) > :P_TO_DATE)
OR (AIA.CANCELLED_DATE IS NULL))
AND EXISTS (SELECT '1'
FROM AP_INVOICE_DISTRIBUTIONS
WHERE INVOICE_ID = AIA.INVOICE_ID
AND ACCOUNTING_DATE <= :P_TO_DATE
AND NVL(POSTED_FLAG,'N') = 'Y'
)
AND UPPER (HOU.NAME) = UPPER (NVL (:P_ORG_NAME, HOU.NAME))
AND ((psv.VENDOR_TYPE_LOOKUP_CODE IN (:P_Supplier_type)) OR ('All' IN ('All'||:P_Supplier_type)))
AND LTRIM(RTRIM(HP.party_name)) = LTRIM(RTRIM(NVL (:P_FROM_VENDOR_NAME, HP.party_name)))
AND ((PSSV.VENDOR_SITE_CODE IN (:P_VENDOR_SITE)) OR ('All' IN (:P_VENDOR_SITE||'All')))
AND EXISTS (SELECT '1'
FROM ap_invoice_payments_all aipa, ap_checks_all aca
WHERE aipa.invoice_id = aia.invoice_id
AND aca.check_id = aipa.check_id
AND aipa.payment_num = apsa.payment_num
--AND aca.status_lookup_code <> 'VOIDED'
AND ( (aca.VOID_DATE IS NOT NULL
AND TRUNC (aca.VOID_DATE) > :P_TO_DATE)
OR (aca.VOID_DATE IS NULL))
AND aipa.accounting_date <= NVL (:p_to_date,TRUNC (aipa.accounting_date))
) ) Z
WHERE NVL(C_AMT_DUE_REMAINING,0) != 0
ORDER BY VENDOR_NAME, INV_DATE, INSTALLMENT_NUMBER, DAY_OVER_DUE