0% found this document useful (0 votes)
170 views

Ar Aging Report

The document is a SQL query that selects various fields from different tables related to accounts receivable, such as the account number, party name, invoice details, amounts due, payment details, and currency codes. It then calculates balances in different ageing periods (current, 1-30 days past due, 31-60 days past due, etc.) for reporting purposes.

Uploaded by

Mohamed Ibrahim
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
170 views

Ar Aging Report

The document is a SQL query that selects various fields from different tables related to accounts receivable, such as the account number, party name, invoice details, amounts due, payment details, and currency codes. It then calculates balances in different ageing periods (current, 1-30 days past due, 31-60 days past due, etc.) for reporting purposes.

Uploaded by

Mohamed Ibrahim
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

/* Formatted on 28/11/2018 9:32:03 AM (QP5 v5.215.12089.

38647) */
SELECT MAIN_TAB.*
FROM (SELECT AR_TAB.account_number,
AR_TAB.party_name,
AR_TAB.customer_trx_id,
AR_TAB.Trans_Type,
AR_TAB.trans_type_name,
AR_TAB.cust_trx_type_id,
AR_TAB.invoice_currency_code,
AR_TAB.location_code,
AR_TAB.trx_num,
AR_TAB.Trans_Date,
AR_TAB.gl_date,
AR_TAB.Due_Date,
AR_TAB.Fcy_Amt,
AR_TAB.Inr_Amt,
AR_TAB.exchange_rate,
AR_TAB.amount_due_remaining_FCY,
AR_TAB.Amount_Remaining_INR,
NVL (AR_TAB.ar_acctd_amt_due, 0) ar_acctd_amt_due,
(NVL (AR_TAB.INR_AMT, 0) - NVL
(AR_TAB.ar_acctd_amt_due, 0))
outstanding_amount_inr,
(NVL (AR_TAB.Fcy_Amt, 0) - NVL (AR_TAB.ar_fcy_amt_due,
0))
Outstanding_amount_fcy,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) <= 0
THEN
(AR_TAB.INR_AMT - AR_TAB.ar_acctd_amt_due)
ELSE
0
END)
Current_bal,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) BETWEEN
1 AND 30
THEN
(NVL (AR_TAB.INR_AMT, 0) - NVL
(AR_TAB.ar_acctd_amt_due, 0))
ELSE
0
END)
One_30_Days_Past_Due
---1-30
,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) BETWEEN
31
AND
60
THEN
(NVL (AR_TAB.INR_AMT, 0) - NVL
(AR_TAB.ar_acctd_amt_due, 0))
ELSE
0
END)
ThirtyOne_60_Days_Past_Due -
--31-60
,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) BETWEEN
61
AND
90
THEN
(NVL (AR_TAB.INR_AMT, 0) - NVL
(AR_TAB.ar_acctd_amt_due, 0))
ELSE
0
END)
One_90_Days_Past_Due,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) BETWEEN
91
AND
120
THEN
(NVL (AR_TAB.INR_AMT, 0) - NVL
(AR_TAB.ar_acctd_amt_due, 0))
ELSE
0
END)
One_120_Days_Past_Due,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) BETWEEN
121
AND
150
THEN
(NVL (AR_TAB.INR_AMT, 0) - NVL
(AR_TAB.ar_acctd_amt_due, 0))
ELSE
0
END)
One_150_Days_Past_Due,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) BETWEEN
151
AND
180
THEN
(NVL (AR_TAB.INR_AMT, 0) - NVL
(AR_TAB.ar_acctd_amt_due, 0))
ELSE
0
END)
One_180_Days_Past_Due,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) > 180
THEN
(NVL (AR_TAB.INR_AMT, 0) - NVL
(AR_TAB.ar_acctd_amt_due, 0))
ELSE
0
END)
more_than_180_Days_Past_Due
FROM (SELECT hca.account_number account_number,
hp.PARTY_NAME party_name,
cta.CUSTOMER_TRX_ID customer_trx_id--,acl.name
collector_name
,
DECODE (ps.class,
'INV', 'Invoice',
'DM', 'Debit Memo',
'CM', 'Credit Memo')
Trans_Type,
rctt.name trans_type_name,
rctt.CUST_TRX_TYPE_ID cust_trx_type_id,
cta.INVOICE_CURRENCY_CODE
invoice_currency_code,
hou.LOCATION_CODE location_code,
ps.trx_number trx_num,
ps.trx_date Trans_Date,
ps.GL_DATE gl_date,
ps.due_date Due_Date,
ps.AMOUNT_DUE_ORIGINAL Fcy_Amt,
ROUND (
(ps.AMOUNT_DUE_ORIGINAL * NVL
(ps.EXCHANGE_RATE, 1)),
2)
Inr_Amt,
ps.EXCHANGE_RATE exchange_rate,
ps.AMOUNT_DUE_REMAINING
amount_due_remaining_FCY,
ps.acctd_amount_due_remaining
Amount_Remaining_INR,
( SELECT ROUND (
SUM (
NVL (
a.AMOUNT_APPLIED
* NVL (ps.EXCHANGE_RATE, 1),
0)),
2)
FROM ar_receivable_applications_all a
WHERE a.APPLIED_PAYMENT_SCHEDULE_ID =
ps.PAYMENT_SCHEDULE_ID
--
a.APPLIED_CUSTOMER_TRX_ID=ps.CUSTOMER_TRX_ID
AND a.DISPLAY = 'Y'
AND TRUNC (a.GL_DATE) BETWEEN
:p_from_date
AND :p_to_date
GROUP BY a.APPLIED_PAYMENT_SCHEDULE_ID)
ar_acctd_amt_due,
( SELECT ROUND (SUM (NVL (a.AMOUNT_APPLIED,
0)), 2)
FROM ar_receivable_applications_all a
WHERE a.APPLIED_PAYMENT_SCHEDULE_ID =
ps.PAYMENT_SCHEDULE_ID
AND a.DISPLAY = 'Y'
AND TRUNC (a.GL_DATE) BETWEEN
:p_from_date
AND :p_to_date
GROUP BY a.APPLIED_PAYMENT_SCHEDULE_ID)
ar_fcy_amt_due
/*,(case when (trunc(sysdate) - trunc(ps.GL_DATE))
<=0 then ps.acctd_amount_due_remaining
else 0 end ) Current_bal
,(case when (trunc(sysdate) - trunc(ps.GL_DATE))
between 1 and 30 then ps.acctd_amount_due_remaining
else 0 end ) One_30_Days_Past_Due ---1-30
,(case when (trunc(sysdate) - trunc(ps.GL_DATE))
between 31 and 60 then ps.acctd_amount_due_remaining
else 0 end ) ThirtyOne_60_Days_Past_Due ---31-60
,(case when (trunc(sysdate) - trunc(ps.GL_DATE))
between 61 and 90 then ps.acctd_amount_due_remaining
else 0 end ) One_90_Days_Past_Due,
(case when (trunc(sysdate) - trunc(ps.GL_DATE))
between 91 and 120 then ps.acctd_amount_due_remaining
else 0 end ) One_120_Days_Past_Due,
(case when (trunc(sysdate) - trunc(ps.GL_DATE))
between 121 and 150 then ps.acctd_amount_due_remaining
else 0 end ) One_150_Days_Past_Due,
(case when (trunc(sysdate) - trunc(ps.GL_DATE))
between 151 and 180 then ps.acctd_amount_due_remaining
else 0 end ) One_180_Days_Past_Due,
(case when (trunc(sysdate) - trunc(ps.GL_DATE)) >
180 then ps.acctd_amount_due_remaining
else 0 end ) more_than_180_Days_Past_Due*/
FROM apps.ar_payment_schedules_all ps,
apps.hz_cust_accounts hca,
apps.hz_parties hp--,apps.ar_collectors acl
,
apps.ra_customer_trx_all cta,
apps.ra_cust_trx_types_all rctt,
hr_organization_units_v hou
--ar_receivable_applications_all ara
WHERE hca.cust_account_id = ps.CUSTOMER_ID
AND ps.CUSTOMER_TRX_ID = cta.CUSTOMER_TRX_ID
--AND
ara.APPLIED_CUSTOMER_TRX_ID=ps.CUSTOMER_TRX_ID
--AND ara.DISPLAY='Y'
AND cta.cust_trx_type_id = rctt.cust_trx_type_id
--AND (ps.status = 'OP' or(ps.STATUS='CL' and
ps.GL_DATE_CLOSED < :p_to_date))
AND ps.class <> 'PMT'
AND ps.CLASS = NVL (:p_class, ps.CLASS)
AND ps.CLASS IN ('INV', 'DM')
--AND ps.customer_id > 0
--AND ps.AMOUNT_DUE_REMAINING <> 0
--AND trunc(ps.GL_DATE) < trunc(sysdate)
AND cta.INVOICE_CURRENCY_CODE <> 'INR'
AND hou.ORGANIZATION_ID = cta.ORG_ID
AND cta.ORG_ID = NVL (:p_org_id, cta.ORG_ID)
AND hp.PARTY_ID = hca.PARTY_ID
--AND hp.PARTY_NAME='Tea Promotors Export Pvt.
Ltd.'
AND ps.INVOICE_CURRENCY_CODE <> 'INR'
AND rctt.ORG_ID = cta.ORG_ID
AND ps.AMOUNT_ADJUSTED IS NULL -- added on
10jul2012
--AND cta.TRX_NUMBER='511120003'
--AND trunc(ps.DUE_DATE) between
nvl(:p_from_date,trunc(ps.DUE_DATE)) and
nvl(:p_to_date,trunc(ps.DUE_DATE))
--AND trunc(ps.GL_DATE) between
nvl(:p_from_date,trunc(ps.GL_DATE)) and
nvl(:p_to_date,trunc(ps.GL_DATE)
AND TRUNC (ps.GL_DATE) BETWEEN NVL (:p_from_date,
TRUNC
(ps.GL_DATE))
AND NVL (:p_to_date,
TRUNC
(ps.GL_DATE))) AR_TAB
--AND AR_TAB.Amount_Remaining_INR <>0
WHERE (NVL (AR_TAB.INR_AMT, 0) - NVL
(AR_TAB.ar_acctd_amt_due, 0)) <>
0
UNION ALL /*For credit
Memo*/
SELECT AR_TAB.account_number,
AR_TAB.party_name,
AR_TAB.customer_trx_id,
AR_TAB.Trans_Type,
AR_TAB.trans_type_name,
AR_TAB.cust_trx_type_id,
AR_TAB.invoice_currency_code,
AR_TAB.location_code,
AR_TAB.trx_num,
AR_TAB.Trans_Date,
AR_TAB.gl_date,
AR_TAB.Due_Date,
AR_TAB.Fcy_Amt,
AR_TAB.Inr_Amt,
AR_TAB.exchange_rate,
AR_TAB.amount_due_remaining_FCY,
AR_TAB.Amount_Remaining_INR,
NVL (AR_TAB.ar_acctd_amt_due, 0) ar_acctd_amt_due,
- ( NVL (ABS (AR_TAB.INR_AMT), 0)
- NVL (ABS (AR_TAB.ar_acctd_amt_due), 0))
outstanding_amount_inr,
- ( NVL (ABS (AR_TAB.Fcy_Amt), 0)
- NVL (AR_TAB.ar_fcy_amt_due, 0))
Outstanding_amount_fcy,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) <= 0
THEN
- (ABS (AR_TAB.INR_AMT) - ABS
(AR_TAB.ar_acctd_amt_due))
ELSE
0
END)
Current_bal,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) BETWEEN
1 AND 30
THEN
- ( NVL (ABS (AR_TAB.INR_AMT), 0)
- NVL (ABS (AR_TAB.ar_acctd_amt_due), 0))
ELSE
0
END)
One_30_Days_Past_Due
---1-30
,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) BETWEEN
31
AND
60
THEN
- ( NVL (ABS (AR_TAB.INR_AMT), 0)
- NVL (ABS (AR_TAB.ar_acctd_amt_due), 0))
ELSE
0
END)
ThirtyOne_60_Days_Past_Due -
--31-60
,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) BETWEEN
61
AND
90
THEN
- ( NVL (ABS (AR_TAB.INR_AMT), 0)
- NVL (ABS (AR_TAB.ar_acctd_amt_due), 0))
ELSE
0
END)
One_90_Days_Past_Due,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) BETWEEN
91
AND
120
THEN
- ( NVL (ABS (AR_TAB.INR_AMT), 0)
- NVL (ABS (AR_TAB.ar_acctd_amt_due), 0))
ELSE
0
END)
One_120_Days_Past_Due,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) BETWEEN
121
AND
150
THEN
- ( NVL (ABS (AR_TAB.INR_AMT), 0)
- NVL (ABS (AR_TAB.ar_acctd_amt_due), 0))
ELSE
0
END)
One_150_Days_Past_Due,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) BETWEEN
151
AND
180
THEN
- ( NVL (ABS (AR_TAB.INR_AMT), 0)
- NVL (ABS (AR_TAB.ar_acctd_amt_due), 0))
ELSE
0
END)
One_180_Days_Past_Due,
(CASE
WHEN (:p_to_date - TRUNC (AR_TAB.DUE_DATE)) > 180
THEN
- ( NVL (ABS (AR_TAB.INR_AMT), 0)
- NVL (ABS (AR_TAB.ar_acctd_amt_due), 0))
ELSE
0
END)
more_than_180_Days_Past_Due
FROM (SELECT hca.account_number account_number,
hp.PARTY_NAME party_name,
cta.CUSTOMER_TRX_ID customer_trx_id--,acl.name
collector_name
,
DECODE (ps.class,
'INV', 'Invoice',
'DM', 'Debit Memo',
'CM', 'Credit Memo')
Trans_Type,
rctt.name trans_type_name,
rctt.CUST_TRX_TYPE_ID cust_trx_type_id,
cta.INVOICE_CURRENCY_CODE
invoice_currency_code,
hou.LOCATION_CODE location_code,
ps.trx_number trx_num,
ps.trx_date Trans_Date,
ps.GL_DATE gl_date,
ps.due_date Due_Date,
ps.AMOUNT_DUE_ORIGINAL Fcy_Amt,
ROUND (
(ps.AMOUNT_DUE_ORIGINAL * NVL
(ps.EXCHANGE_RATE, 1)),
2)
Inr_Amt,
ps.EXCHANGE_RATE exchange_rate,
ps.AMOUNT_DUE_REMAINING
amount_due_remaining_FCY,
ps.acctd_amount_due_remaining
Amount_Remaining_INR,
( SELECT ROUND (
SUM (
NVL (
a.AMOUNT_APPLIED
* NVL (ps.EXCHANGE_RATE, 1),
0)),
2)
FROM ar_receivable_applications_all a
WHERE a.PAYMENT_SCHEDULE_ID =
ps.PAYMENT_SCHEDULE_ID
--
a.APPLIED_CUSTOMER_TRX_ID=ps.CUSTOMER_TRX_ID
AND a.DISPLAY = 'Y'
AND TRUNC (a.GL_DATE) BETWEEN
:p_from_date
AND :p_to_date
GROUP BY a.PAYMENT_SCHEDULE_ID)
ar_acctd_amt_due,
( SELECT ROUND (SUM (NVL (ABS
(a.AMOUNT_APPLIED), 0)),
2)
FROM ar_receivable_applications_all a
WHERE a.PAYMENT_SCHEDULE_ID =
ps.PAYMENT_SCHEDULE_ID
--
a.APPLIED_CUSTOMER_TRX_ID=ps.CUSTOMER_TRX_ID
AND a.DISPLAY = 'Y'
AND TRUNC (a.GL_DATE) BETWEEN
:p_from_date
AND :p_to_date
GROUP BY a.PAYMENT_SCHEDULE_ID)
ar_fcy_amt_due
/*,(case when (trunc(sysdate) - trunc(ps.GL_DATE))
<=0 then ps.acctd_amount_due_remaining
else 0 end ) Current_bal
,(case when (trunc(sysdate) - trunc(ps.GL_DATE))
between 1 and 30 then ps.acctd_amount_due_remaining
else 0 end ) One_30_Days_Past_Due ---1-30
,(case when (trunc(sysdate) - trunc(ps.GL_DATE))
between 31 and 60 then ps.acctd_amount_due_remaining
else 0 end ) ThirtyOne_60_Days_Past_Due ---31-60
,(case when (trunc(sysdate) - trunc(ps.GL_DATE))
between 61 and 90 then ps.acctd_amount_due_remaining
else 0 end ) One_90_Days_Past_Due,
(case when (trunc(sysdate) - trunc(ps.GL_DATE))
between 91 and 120 then ps.acctd_amount_due_remaining
else 0 end ) One_120_Days_Past_Due,
(case when (trunc(sysdate) - trunc(ps.GL_DATE))
between 121 and 150 then ps.acctd_amount_due_remaining
else 0 end ) One_150_Days_Past_Due,
(case when (trunc(sysdate) - trunc(ps.GL_DATE))
between 151 and 180 then ps.acctd_amount_due_remaining
else 0 end ) One_180_Days_Past_Due,
(case when (trunc(sysdate) - trunc(ps.GL_DATE)) >
180 then ps.acctd_amount_due_remaining
else 0 end ) more_than_180_Days_Past_Due*/
FROM apps.ar_payment_schedules_all ps,
apps.hz_cust_accounts hca,
apps.hz_parties hp--,apps.ar_collectors acl
,
apps.ra_customer_trx_all cta,
apps.ra_cust_trx_types_all rctt,
hr_organization_units_v hou
--ar_receivable_applications_all ara
WHERE hca.cust_account_id = ps.CUSTOMER_ID
AND ps.CUSTOMER_TRX_ID = cta.CUSTOMER_TRX_ID
--AND
ara.APPLIED_CUSTOMER_TRX_ID=ps.CUSTOMER_TRX_ID
--AND ara.DISPLAY='Y'
AND cta.cust_trx_type_id = rctt.cust_trx_type_id
--AND (ps.status = 'OP' or(ps.STATUS='CL' and
ps.GL_DATE_CLOSED < :p_to_date))
AND ps.class <> 'PMT'
AND ps.CLASS = NVL (:p_class, ps.CLASS)
AND ps.CLASS IN ('CM')
--AND ps.customer_id > 0
--AND ps.AMOUNT_DUE_REMAINING <> 0
--AND trunc(ps.GL_DATE) < trunc(sysdate)
AND cta.INVOICE_CURRENCY_CODE <> 'INR'
AND hou.ORGANIZATION_ID = cta.ORG_ID
AND cta.ORG_ID = NVL (:p_org_id, cta.ORG_ID)
AND hp.PARTY_ID = hca.PARTY_ID
--AND hp.PARTY_NAME='Tea Promotors Export Pvt.
Ltd.'
AND ps.INVOICE_CURRENCY_CODE <> 'INR'
AND rctt.ORG_ID = cta.ORG_ID
AND ps.AMOUNT_ADJUSTED IS NULL -- added on
10jul2012
--AND cta.TRX_NUMBER='511120003'
--AND trunc(ps.DUE_DATE) between
nvl(:p_from_date,trunc(ps.DUE_DATE)) and
nvl(:p_to_date,trunc(ps.DUE_DATE))
--AND trunc(ps.GL_DATE) between
nvl(:p_from_date,trunc(ps.GL_DATE)) and
nvl(:p_to_date,trunc(ps.GL_DATE)
AND TRUNC (ps.GL_DATE) BETWEEN NVL (:p_from_date,
TRUNC
(ps.GL_DATE))
AND NVL (:p_to_date,
TRUNC
(ps.GL_DATE))) AR_TAB
--AND AR_TAB.Amount_Remaining_INR <>0
WHERE ( NVL (ABS (AR_TAB.INR_AMT), 0)
- NVL (ABS (AR_TAB.ar_acctd_amt_due), 0)) <> 0)
MAIN_TAB
where trx_num = '20171126'
ORDER BY MAIN_TAB.PARTY_NAME ASC;

You might also like