Customer Aging
In this post, we will discuss on customer aging logic which also called as AR aging. Aging will display details of customer outstanding amount. I shared query in below section of this post.
Tables used in query development
XLA_TRANSACTION_ENTITIES
XLA_AE_HEADERS
XLA_AE_LINES
GL_CODE_COMBINATIONS
XLA_DISTRIBUTION_LINKS
HZ_CUST_ACCOUNTS
HZ_PARTIES
HZ_PARTY_SITES
HZ_LOCATIONS
HZ_CUST_ACCT_SITES_ALL
HZ_CUST_SITE_USES_ALL
RA_CUSTOMER_TRX_ALL
RA_CUST_TRX_TYPES_ALL
HR_OPERATING_UNITS
AR_CASH_RECEIPTS_ALL
Detailed Logic
SELECT
*
FROM
(
SELECT 1 rn,
a.current_buck,
buk1_30,
buk31_60,
buk61_90,
buk91_120,
buk121_150,
buk151_180,
buk181_210,
buk211_240,
buk241_270,
buk271_300,
buk301_330,
buk331_365,
buk_365,
buk_731,
cust_number,
invoice_number,
invoice_date,
customer,
site_name,
bill_to_site_use_id,
source_id_int_1,
cust_account_id,
past_due_days,
bu_name,
city,
attribute2,
party_id,
due_date,
customer_class_code,
sum_total_amt_rem,
account_desc,
0 unapplied_amt,
NVL (a.party_id,null) customer_name,
null DOC_SEQUENCE_VALUE
FROM (
SELECT SUM (CASE WHEN past_due_days <= 0
THEN
NVL (xx.total_amt_rem, 0)
END)
current_buck,
SUM (CASE WHEN past_due_days >= 1
AND past_due_days <= 30
THEN NVL (xx.total_amt_rem, 0)
END
)
buk1_30,
SUM (CASE WHEN past_due_days >= 31
AND past_due_days <= 60
THEN NVL (xx.total_amt_rem, 0)
END
)
buk31_60,
SUM (CASE WHEN past_due_days >= 61
AND past_due_days <= 90
THEN NVL (xx.total_amt_rem, 0)
END
)
buk61_90,
SUM (CASE WHEN past_due_days >= 91
AND past_due_days <= 120
THEN NVL (xx.total_amt_rem, 0)
END
)
buk91_120,
SUM (CASE WHEN past_due_days >= 121
AND past_due_days <= 150
THEN NVL (xx.total_amt_rem, 0)
END
)
buk121_150,
SUM (CASE WHEN past_due_days >= 151
AND past_due_days <= 180
THEN NVL (xx.total_amt_rem, 0)
END
)
buk151_180,
SUM (CASE WHEN past_due_days >= 181
AND past_due_days <= 210
THEN NVL (xx.total_amt_rem, 0)
END
)
buk181_210,
SUM (CASE WHEN past_due_days >= 211
AND past_due_days <= 240
THEN NVL (xx.total_amt_rem, 0)
END
)
buk211_240,
SUM (CASE WHEN past_due_days >= 241
AND past_due_days <= 270
THEN NVL (xx.total_amt_rem, 0)
END
)
buk241_270,
SUM (CASE WHEN past_due_days >= 271
AND past_due_days <= 300
THEN NVL (xx.total_amt_rem, 0)
END
)
buk271_300,
SUM (CASE WHEN past_due_days >= 301
AND past_due_days <= 330
THEN NVL (xx.total_amt_rem, 0)
END
)
buk301_330,
SUM (CASE WHEN past_due_days >= 331
AND past_due_days <= 365
THEN NVL (xx.total_amt_rem, 0)
END
)
buk331_365,
SUM (CASE WHEN past_due_days >= 366
AND past_due_days <= 730
THEN NVL (xx.total_amt_rem, 0)
END
)
buk_365,
SUM (CASE WHEN past_due_days >= 731
THEN NVL (xx.total_amt_rem, 0)
END
)
buk_731,
xx.cust_number,
xx.invoice_number,
xx.invoice_date,
xx.customer_name customer,
xx.site_name,
xx.bill_to_site_use_id,
source_id_int_1,
xx.cust_account_id,
past_due_days,
bu_name,
city,
attribute2,
party_id,
due_date,
xx.customer_class_code,
SUM (xx.total_amt_rem) sum_total_amt_rem,
xx.ACCOUNT_NAME account_desc
FROM (
SELECT hz_account.account_number cust_number,
'Customer Wise' report_type,
rct.trx_number invoice_number,
sch.due_date,
ent.source_id_int_1,
rct.trx_date invoice_date,
SUM (
NVL (dist.unrounded_accounted_dr, 0)
- NVL (dist.unrounded_accounted_cr, 0))
+ CASE
WHEN typ.TYPE = 'CM'
THEN
NVL ( (inv_cm.amt), 0)
ELSE
0
END
+ NVL (applied_amt, 0)
- NVL (adjst.amount, 0)
- NVL (cm.amt, 0)
+ NVL (refund.amount_applied,0)
total_amt_rem,
party.party_name customer_name,
party.party_id,
site.party_site_name site_name,
rct.bill_to_site_use_id,
NVL (rct.bill_to_customer_id,
hz_account.cust_account_id)
cust_account_id,
NVL (
(TO_DATE (TO_CHAR (:p_date_from, 'MM-DD-YYYY'),
'MM-DD-YYYY')
- TO_DATE (TO_CHAR (due_date, 'MM-DD-YYYY'),
'MM-DD-YYYY')),
0)
past_due_days,
hou.name bu_name,
hl.city,
CASE
WHEN rct.attribute2 IS NULL
THEN
rct.ct_reference
ELSE
rct.attribute2
END
attribute2,
ent.security_id_int_1 organization_id,
customer_class_code,
hz_account.ACCOUNT_NAME
FROM xla_transaction_entities ent,
xla_ae_headers h,
xla_ae_lines l,
gl_code_combinations gcc,
xla_distribution_links dist,
hz_cust_accounts hz_account,
hz_parties party,
hz_party_sites site,
hz_locations hl,
hz_cust_acct_sites_all hcas,
hz_cust_site_uses_all hcsu,
ra_customer_trx_all rct,
ra_cust_trx_types_all typ,
hr_operating_units hou,
( SELECT /*+ NO_MERGE */ aps.customer_trx_id,
MAX (aps.due_date) due_date
FROM ar_payment_schedules_all aps
GROUP BY aps.customer_trx_id) sch,
( SELECT /*+ NO_MERGE */ SUM (
NVL (xdl.unrounded_accounted_dr, 0)
- NVL (xdl.unrounded_accounted_cr, 0))
applied_amt,
rcta.customer_trx_id,
rcta.org_id
FROM xla_ae_headers xah,
xla_ae_lines xal,
xla_distribution_links xdl,
ar_distributions_all ard,
ar_receivable_applications_all ara,
ar_cash_receipts_all acr,
ra_customer_trx_all rcta
WHERE xah.ae_header_id = xal.ae_header_id
AND xal.ae_header_id = xdl.ae_header_id
AND xal.ae_line_num = xdl.ae_line_num
AND xdl.source_distribution_id_num_1 =
ard.line_id
AND ard.source_id =
ara.receivable_application_id
AND ara.cash_receipt_id =
acr.cash_receipt_id
AND ara.applied_customer_trx_id =
rcta.customer_trx_id
AND xdl.source_distribution_type =
'AR_DISTRIBUTIONS_ALL'
AND accounting_class_code in
(
'CASH',
'CONFIRMATION',
'UNID',
'REMITTANCE',
'RECEIVABLE',
'UNAPPLIED CASH',
'EXCHANGE_GAIN_LOSS',
'REFUND'
)
AND ROUNDING_CLASS_CODE in ('RECEIVABLE')
AND ACCOUNTING_LINE_CODE not in ('RCT_REMIT')
AND xah.event_type_code IN
('RECP_UPDATE',
'RECP_CREATE',
'RECP_REVERSE',
'RECP_RATE_ADJUST')
AND (xal.accounting_date) <=
:p_date_from
GROUP BY rcta.customer_trx_id, rcta.org_id) rcpt,
( SELECT /*+ NO_MERGE */ SUM (NVL (ara.ACCTD_AMOUNT_APPLIED_FROM, 0)) amt,
rcta.customer_trx_id,
rcta.org_id
FROM xla_ae_headers xah,
xla_ae_lines xal,
xla_distribution_links xdl,
ar_distributions_all ard,
ar_receivable_applications_all ara,
ra_customer_trx_all rcta
WHERE 1=1
AND xah.ae_header_id = xal.ae_header_id
AND xah.ae_header_id = xdl.ae_header_id
AND xdl.ae_line_num = xal.ae_line_num
AND xdl.source_distribution_id_num_1 =
ard.line_id
AND ard.source_id =
ara.receivable_application_id
AND ara.applied_customer_trx_id =
rcta.customer_trx_id
AND xal.override_reason IS NULL
AND xal.overridden_code_combination_id
IS NULL
AND xdl.source_distribution_type =
'AR_DISTRIBUTIONS_ALL'
AND accounting_class_code = 'RECEIVABLE'
AND je_category_name = 'Credit Memos'
AND xal.accounting_date <= :p_date_from
AND xdl.unrounded_accounted_dr <> 0
GROUP BY rcta.customer_trx_id, rcta.org_id) cm,
( SELECT /*+ NO_MERGE */ SUM (
NVL (xdl.unrounded_accounted_dr, 0)
- NVL (xdl.unrounded_accounted_cr, 0))
amount,
adj.customer_trx_id,
adj.org_id
FROM xla_ae_headers xah,
xla_ae_lines xal,
xla_events xet,
xla_distribution_links xdl,
ar_distributions_all ard,
ar_adjustments_all adj
WHERE xah.ae_header_id = xal.ae_header_id
AND xah.event_id = xet.event_id
AND xet.event_id = xdl.event_id
AND xah.ae_header_id = xdl.ae_header_id
AND xal.ae_line_num = xdl.ae_line_num
AND xdl.source_distribution_id_num_1 =
ard.line_id
AND ard.source_id = adj.adjustment_id
AND xah.application_id = 222
AND xdl.source_distribution_type IN
('AR_DISTRIBUTIONS_ALL',
'MFAR_DISTRIBUTIONS_ALL')
AND ard.source_table = 'ADJ'
AND xal.accounting_class_code = 'ADJ'
AND xal.accounting_date <= :p_date_from
GROUP BY adj.customer_trx_id, adj.org_id) adjst,
( SELECT /*+ NO_MERGE */ SUM (NVL (ara.ACCTD_AMOUNT_APPLIED_FROM, 0)) amt,
xte1.source_id_int_1,
xte1.security_id_int_1
FROM xla_transaction_entities xte1,
xla_ae_headers xah,
xla_ae_lines xal,
xla_distribution_links xdl,
ar_distributions_all ard,
ar_receivable_applications_all ara,
ra_customer_trx_all rcta
WHERE xte1.entity_id = xah.entity_id
AND xte1.application_id = 222
AND xte1.application_id = xah.application_id
AND xah.ae_header_id = xal.ae_header_id
AND xal.ae_header_id = xdl.ae_header_id
AND xal.ae_line_num = xdl.ae_line_num
AND xal.override_reason IS NULL
AND xal.overridden_code_combination_id
IS NULL
AND xdl.source_distribution_id_num_1 =
ard.line_id
AND ard.source_id =
ara.receivable_application_id
AND ara.applied_customer_trx_id = rcta.customer_trx_id
AND xte1.source_id_int_1 = ara.customer_trx_id
AND xte1.security_id_int_1 = rcta.org_id
AND xdl.source_distribution_type = 'AR_DISTRIBUTIONS_ALL'
AND accounting_class_code = 'RECEIVABLE'
AND je_category_name = 'Credit Memos'
AND TRIM (xal.description) LIKE
'%Credit Memo Application'
AND xal.accounting_date <= :p_date_from
GROUP BY xte1.source_id_int_1,
xte1.security_id_int_1) inv_cm,
(SELECT DISTINCT
SUM(NVL(amount_applied,0)) amount_applied,
cash_receipt_id,
set_of_books_id,
applied_customer_id,
trx_number,
application_ref_id
FROM (
SELECT
SUM(NVL(acctd_amount_applied_from,0)
) amount_applied,
acr.customer_trx_id cash_receipt_id,
araa.set_of_books_id,
acr.bill_to_customer_id applied_customer_id,
acr.trx_number trx_number,
araa.event_id,
araa.receivable_application_id,
araa.application_ref_id
FROM ar_receivable_applications_all araa
,ra_customer_trx_all acr
WHERE 1=1
AND araa.STATUS = 'ACTIVITY'
AND araa.application_type IN ('CM')
AND araa.APPLIED_PAYMENT_SCHEDULE_ID = -8
AND araa.APPLICATION_REF_TYPE = 'AP_REFUND_REQUEST'
AND araa.display = 'Y'
AND araa.customer_trx_id = acr.customer_trx_id
AND araa.gl_date <= :p_date_from
AND araa.set_of_books_id = acr.set_of_books_id
GROUP BY acr.customer_trx_id,araa.set_of_books_id,
acr.bill_to_customer_id,
acr.trx_number,
araa.event_id,
araa.receivable_application_id,
araa.application_ref_id
)
GROUP BY cash_receipt_id, set_of_books_id,applied_customer_id, trx_number,application_ref_id-- , event_id, receivable_application_id
) refund
WHERE ent.entity_id = h.entity_id
AND h.ae_header_id = l.ae_header_id
AND l.ae_header_id = dist.ae_header_id
AND l.ae_line_num = dist.ae_line_num
AND h.application_id = l.application_id
AND hz_account.cust_account_id = l.party_id
AND party.party_id = hz_account.party_id
AND rct.BILL_TO_CUSTOMER_ID=hz_account.cust_account_id
AND hl.location_id = site.location_id
AND site.party_id = site.party_id
AND site.party_site_id(+) = hcas.party_site_id
AND hcsu.cust_acct_site_id =
hcas.cust_acct_site_id(+)
AND hou.organization_id = ent.security_id_int_1
AND rct.customer_trx_id = ent.source_id_int_1
AND ent.source_id_int_1 = refund.cash_receipt_id(+)
AND rct.org_id = ent.security_id_int_1
AND hcsu.site_use_id = rct.bill_to_site_use_id
AND sch.customer_trx_id = ent.source_id_int_1
AND typ.cust_trx_type_seq_id =
rct.cust_trx_type_seq_id
AND ent.source_id_int_1 = rcpt.customer_trx_id(+)
AND ent.security_id_int_1 = rcpt.org_id(+)
AND ent.source_id_int_1 = cm.customer_trx_id(+)
AND ent.security_id_int_1 = cm.org_id(+)
AND ent.source_id_int_1 = adjst.customer_trx_id(+)
AND ent.security_id_int_1 = adjst.org_id(+)
AND ent.source_id_int_1 = inv_cm.source_id_int_1(+)
AND ent.security_id_int_1 =
inv_cm.security_id_int_1(+)
AND hcsu.site_use_code = 'BILL_TO'
AND h.balance_type_code = 'A'
AND l.party_type_code = 'C'
AND h.event_type_code <> 'ADJ_CREATE'
AND l.accounting_class_code = 'RECEIVABLE'
and dist.SOURCE_DISTRIBUTION_TYPE='RA_CUST_TRX_LINE_GL_DIST_ALL'
AND h.application_id = 222
AND ((party.party_id IN (:p_customer_name)) OR ('All' IN (:p_customer_name||'All')))
AND l.code_combination_id = gcc.code_combination_id
AND l.accounting_date <= :p_date_from
GROUP BY rct.trx_number,
rct.trx_date,
party.party_id,
party.party_name,
due_date,
rct.bill_to_customer_id,
typ.TYPE,
rcpt.applied_amt,
cm.amt,
adjst.amount,
inv_cm.amt,
ent.source_id_int_1,
ent.security_id_int_1,
gcc.chart_of_accounts_id,
hz_account.customer_class_code,
hz_account.account_number,
hl.city,
rct.ct_reference,
site.party_site_name,
hou.name,
rct.attribute2,
rct.bill_to_site_use_id,
hz_account.cust_account_id,
hz_account.ACCOUNT_NAME,
NVL (refund.amount_applied,0)
) xx
WHERE 1=1
AND ((organization_id IN (:p_bu_id)) OR ('All' IN (:p_bu_id||'All')))
AND ((xx.party_id IN (:p_customer_name)) or ('All' IN (:p_customer_name||'All')))
GROUP BY xx.cust_number,
xx.invoice_number,
xx.invoice_date,
xx.customer_name,
xx.party_id,
xx.site_name,
bu_name,
city,
attribute2,
due_date,
past_due_days,
xx.bill_to_site_use_id,
xx.cust_account_id,
source_id_int_1,
xx.customer_class_code,
xx.account_name
having SUM (xx.total_amt_rem) <> 0
) a
UNION ALL
SELECT 2 rn,
0 current_buck,
0 buk1_30,
0 buk31_60,
0 buk61_90,
0 buk91_120,
0 buk121_150,
0 buk151_180,
0 buk181_210,
0 buk211_240,
0 buk241_270,
0 buk271_300,
0 buk301_330,
0 buk331_365,
0 buk_365,
0 buk_731,
account_number cust_number,
receipt_number invoice_number,
receipt_date invoice_date,
party_name customer,
site_name,
-999 bill_to_site_use_id,
-999 security_id_int_1,
cust_account_id,
0 past_due_days,
bu_name,
null city,
null attribute2,
null party_id,
null due_date,
customer_class_code,
0 sum_total_amt_rem,
null account_desc,
ABS(sum(NVL(unapplied_amt,0))) unapplied_amt ,
party_id customer_name,
DOC_SEQUENCE_VALUE
FROM ( SELECT -1*(SUM((NVL (xel.accounted_dr, 0)) -
(NVL (xel.accounted_cr, 0))))
unapplied_amt,
acct.party_id,
acct.account_number,
acr.receipt_number,
acr.receipt_date,
hp.party_name,
null site_name,
hou.name bu_name,
acr.DOC_SEQUENCE_VALUE,
customer_class_code,
acct.cust_account_id
FROM xla_transaction_entities xte,
xla_ae_headers xah,
xla_ae_lines xel,
gl_code_combinations gcc,
ar_cash_receipts_all acr,
hz_cust_accounts acct,
hz_parties hp,
hr_operating_units hou
WHERE 1=1
AND hp.party_id=acct.party_id
AND hou.organization_id = xte.security_id_int_1
AND xah.ae_header_id = xel.ae_header_id
AND xte.entity_id = xah.entity_id
AND xte.security_id_int_1 = acr.org_id
AND xte.application_id = 222
AND xah.application_id = xte.application_id
AND acr.cash_receipt_id = xte.source_id_int_1
AND gcc.code_combination_id = xel.code_combination_id
AND acr.pay_from_customer = acct.cust_account_id
AND event_type_code IN
('RECP_CREATE',
'RECP_REVERSE',
'RECP_UPDATE',
'RECP_RATE_ADJUST')
AND acr.STATUS NOT IN ('REV','CC_CHARGEBACK_REV')
AND accounting_class_code IN
('CASH',
'CONFIRMATION',
'UNID',
'REMITTANCE',
'RECEIVABLE',
'UNAPPLIED CASH',
'EXCHANGE_GAIN_LOSS',
'REFUND'
)
AND xel.accounting_date <= :p_date_from
AND ((xte.security_id_int_1 IN (:p_bu_id)) OR ('All' IN (:p_bu_id||'All')))
AND ((acct.party_id IN (:p_customer_name)) or ('All' IN (:p_customer_name||'All')))
AND ((acct.customer_class_code IN (:p_customer_type)) OR ('All' IN (:p_customer_type||'All')))
GROUP BY acct.party_id,
xel.party_site_id,
acct.account_number,
acr.receipt_number,
acr.receipt_date,
hp.party_name,
customer_class_code,
hou.name,
acr.DOC_SEQUENCE_VALUE,
acct.cust_account_id
) b
WHERE 1=1
group by account_number ,
receipt_number ,
receipt_date ,
cust_account_id,
party_name ,
site_name,
bu_name,
party_id ,
customer_class_code,
DOC_SEQUENCE_VALUE
having sum(NVL(unapplied_amt,0))<>0
) aa
ORDER BY rn,
aa.customer,
aa.cust_number,
aa.site_name,
aa.invoice_date;
FROM
(
SELECT 1 rn,
a.current_buck,
buk1_30,
buk31_60,
buk61_90,
buk91_120,
buk121_150,
buk151_180,
buk181_210,
buk211_240,
buk241_270,
buk271_300,
buk301_330,
buk331_365,
buk_365,
buk_731,
cust_number,
invoice_number,
invoice_date,
customer,
site_name,
bill_to_site_use_id,
source_id_int_1,
cust_account_id,
past_due_days,
bu_name,
city,
attribute2,
party_id,
due_date,
customer_class_code,
sum_total_amt_rem,
account_desc,
0 unapplied_amt,
NVL (a.party_id,null) customer_name,
null DOC_SEQUENCE_VALUE
FROM (
SELECT SUM (CASE WHEN past_due_days <= 0
THEN
NVL (xx.total_amt_rem, 0)
END)
current_buck,
SUM (CASE WHEN past_due_days >= 1
AND past_due_days <= 30
THEN NVL (xx.total_amt_rem, 0)
END
)
buk1_30,
SUM (CASE WHEN past_due_days >= 31
AND past_due_days <= 60
THEN NVL (xx.total_amt_rem, 0)
END
)
buk31_60,
SUM (CASE WHEN past_due_days >= 61
AND past_due_days <= 90
THEN NVL (xx.total_amt_rem, 0)
END
)
buk61_90,
SUM (CASE WHEN past_due_days >= 91
AND past_due_days <= 120
THEN NVL (xx.total_amt_rem, 0)
END
)
buk91_120,
SUM (CASE WHEN past_due_days >= 121
AND past_due_days <= 150
THEN NVL (xx.total_amt_rem, 0)
END
)
buk121_150,
SUM (CASE WHEN past_due_days >= 151
AND past_due_days <= 180
THEN NVL (xx.total_amt_rem, 0)
END
)
buk151_180,
SUM (CASE WHEN past_due_days >= 181
AND past_due_days <= 210
THEN NVL (xx.total_amt_rem, 0)
END
)
buk181_210,
SUM (CASE WHEN past_due_days >= 211
AND past_due_days <= 240
THEN NVL (xx.total_amt_rem, 0)
END
)
buk211_240,
SUM (CASE WHEN past_due_days >= 241
AND past_due_days <= 270
THEN NVL (xx.total_amt_rem, 0)
END
)
buk241_270,
SUM (CASE WHEN past_due_days >= 271
AND past_due_days <= 300
THEN NVL (xx.total_amt_rem, 0)
END
)
buk271_300,
SUM (CASE WHEN past_due_days >= 301
AND past_due_days <= 330
THEN NVL (xx.total_amt_rem, 0)
END
)
buk301_330,
SUM (CASE WHEN past_due_days >= 331
AND past_due_days <= 365
THEN NVL (xx.total_amt_rem, 0)
END
)
buk331_365,
SUM (CASE WHEN past_due_days >= 366
AND past_due_days <= 730
THEN NVL (xx.total_amt_rem, 0)
END
)
buk_365,
SUM (CASE WHEN past_due_days >= 731
THEN NVL (xx.total_amt_rem, 0)
END
)
buk_731,
xx.cust_number,
xx.invoice_number,
xx.invoice_date,
xx.customer_name customer,
xx.site_name,
xx.bill_to_site_use_id,
source_id_int_1,
xx.cust_account_id,
past_due_days,
bu_name,
city,
attribute2,
party_id,
due_date,
xx.customer_class_code,
SUM (xx.total_amt_rem) sum_total_amt_rem,
xx.ACCOUNT_NAME account_desc
FROM (
SELECT hz_account.account_number cust_number,
'Customer Wise' report_type,
rct.trx_number invoice_number,
sch.due_date,
ent.source_id_int_1,
rct.trx_date invoice_date,
SUM (
NVL (dist.unrounded_accounted_dr, 0)
- NVL (dist.unrounded_accounted_cr, 0))
+ CASE
WHEN typ.TYPE = 'CM'
THEN
NVL ( (inv_cm.amt), 0)
ELSE
0
END
+ NVL (applied_amt, 0)
- NVL (adjst.amount, 0)
- NVL (cm.amt, 0)
+ NVL (refund.amount_applied,0)
total_amt_rem,
party.party_name customer_name,
party.party_id,
site.party_site_name site_name,
rct.bill_to_site_use_id,
NVL (rct.bill_to_customer_id,
hz_account.cust_account_id)
cust_account_id,
NVL (
(TO_DATE (TO_CHAR (:p_date_from, 'MM-DD-YYYY'),
'MM-DD-YYYY')
- TO_DATE (TO_CHAR (due_date, 'MM-DD-YYYY'),
'MM-DD-YYYY')),
0)
past_due_days,
hou.name bu_name,
hl.city,
CASE
WHEN rct.attribute2 IS NULL
THEN
rct.ct_reference
ELSE
rct.attribute2
END
attribute2,
ent.security_id_int_1 organization_id,
customer_class_code,
hz_account.ACCOUNT_NAME
FROM xla_transaction_entities ent,
xla_ae_headers h,
xla_ae_lines l,
gl_code_combinations gcc,
xla_distribution_links dist,
hz_cust_accounts hz_account,
hz_parties party,
hz_party_sites site,
hz_locations hl,
hz_cust_acct_sites_all hcas,
hz_cust_site_uses_all hcsu,
ra_customer_trx_all rct,
ra_cust_trx_types_all typ,
hr_operating_units hou,
( SELECT /*+ NO_MERGE */ aps.customer_trx_id,
MAX (aps.due_date) due_date
FROM ar_payment_schedules_all aps
GROUP BY aps.customer_trx_id) sch,
( SELECT /*+ NO_MERGE */ SUM (
NVL (xdl.unrounded_accounted_dr, 0)
- NVL (xdl.unrounded_accounted_cr, 0))
applied_amt,
rcta.customer_trx_id,
rcta.org_id
FROM xla_ae_headers xah,
xla_ae_lines xal,
xla_distribution_links xdl,
ar_distributions_all ard,
ar_receivable_applications_all ara,
ar_cash_receipts_all acr,
ra_customer_trx_all rcta
WHERE xah.ae_header_id = xal.ae_header_id
AND xal.ae_header_id = xdl.ae_header_id
AND xal.ae_line_num = xdl.ae_line_num
AND xdl.source_distribution_id_num_1 =
ard.line_id
AND ard.source_id =
ara.receivable_application_id
AND ara.cash_receipt_id =
acr.cash_receipt_id
AND ara.applied_customer_trx_id =
rcta.customer_trx_id
AND xdl.source_distribution_type =
'AR_DISTRIBUTIONS_ALL'
AND accounting_class_code in
(
'CASH',
'CONFIRMATION',
'UNID',
'REMITTANCE',
'RECEIVABLE',
'UNAPPLIED CASH',
'EXCHANGE_GAIN_LOSS',
'REFUND'
)
AND ROUNDING_CLASS_CODE in ('RECEIVABLE')
AND ACCOUNTING_LINE_CODE not in ('RCT_REMIT')
AND xah.event_type_code IN
('RECP_UPDATE',
'RECP_CREATE',
'RECP_REVERSE',
'RECP_RATE_ADJUST')
AND (xal.accounting_date) <=
:p_date_from
GROUP BY rcta.customer_trx_id, rcta.org_id) rcpt,
( SELECT /*+ NO_MERGE */ SUM (NVL (ara.ACCTD_AMOUNT_APPLIED_FROM, 0)) amt,
rcta.customer_trx_id,
rcta.org_id
FROM xla_ae_headers xah,
xla_ae_lines xal,
xla_distribution_links xdl,
ar_distributions_all ard,
ar_receivable_applications_all ara,
ra_customer_trx_all rcta
WHERE 1=1
AND xah.ae_header_id = xal.ae_header_id
AND xah.ae_header_id = xdl.ae_header_id
AND xdl.ae_line_num = xal.ae_line_num
AND xdl.source_distribution_id_num_1 =
ard.line_id
AND ard.source_id =
ara.receivable_application_id
AND ara.applied_customer_trx_id =
rcta.customer_trx_id
AND xal.override_reason IS NULL
AND xal.overridden_code_combination_id
IS NULL
AND xdl.source_distribution_type =
'AR_DISTRIBUTIONS_ALL'
AND accounting_class_code = 'RECEIVABLE'
AND je_category_name = 'Credit Memos'
AND xal.accounting_date <= :p_date_from
AND xdl.unrounded_accounted_dr <> 0
GROUP BY rcta.customer_trx_id, rcta.org_id) cm,
( SELECT /*+ NO_MERGE */ SUM (
NVL (xdl.unrounded_accounted_dr, 0)
- NVL (xdl.unrounded_accounted_cr, 0))
amount,
adj.customer_trx_id,
adj.org_id
FROM xla_ae_headers xah,
xla_ae_lines xal,
xla_events xet,
xla_distribution_links xdl,
ar_distributions_all ard,
ar_adjustments_all adj
WHERE xah.ae_header_id = xal.ae_header_id
AND xah.event_id = xet.event_id
AND xet.event_id = xdl.event_id
AND xah.ae_header_id = xdl.ae_header_id
AND xal.ae_line_num = xdl.ae_line_num
AND xdl.source_distribution_id_num_1 =
ard.line_id
AND ard.source_id = adj.adjustment_id
AND xah.application_id = 222
AND xdl.source_distribution_type IN
('AR_DISTRIBUTIONS_ALL',
'MFAR_DISTRIBUTIONS_ALL')
AND ard.source_table = 'ADJ'
AND xal.accounting_class_code = 'ADJ'
AND xal.accounting_date <= :p_date_from
GROUP BY adj.customer_trx_id, adj.org_id) adjst,
( SELECT /*+ NO_MERGE */ SUM (NVL (ara.ACCTD_AMOUNT_APPLIED_FROM, 0)) amt,
xte1.source_id_int_1,
xte1.security_id_int_1
FROM xla_transaction_entities xte1,
xla_ae_headers xah,
xla_ae_lines xal,
xla_distribution_links xdl,
ar_distributions_all ard,
ar_receivable_applications_all ara,
ra_customer_trx_all rcta
WHERE xte1.entity_id = xah.entity_id
AND xte1.application_id = 222
AND xte1.application_id = xah.application_id
AND xah.ae_header_id = xal.ae_header_id
AND xal.ae_header_id = xdl.ae_header_id
AND xal.ae_line_num = xdl.ae_line_num
AND xal.override_reason IS NULL
AND xal.overridden_code_combination_id
IS NULL
AND xdl.source_distribution_id_num_1 =
ard.line_id
AND ard.source_id =
ara.receivable_application_id
AND ara.applied_customer_trx_id = rcta.customer_trx_id
AND xte1.source_id_int_1 = ara.customer_trx_id
AND xte1.security_id_int_1 = rcta.org_id
AND xdl.source_distribution_type = 'AR_DISTRIBUTIONS_ALL'
AND accounting_class_code = 'RECEIVABLE'
AND je_category_name = 'Credit Memos'
AND TRIM (xal.description) LIKE
'%Credit Memo Application'
AND xal.accounting_date <= :p_date_from
GROUP BY xte1.source_id_int_1,
xte1.security_id_int_1) inv_cm,
(SELECT DISTINCT
SUM(NVL(amount_applied,0)) amount_applied,
cash_receipt_id,
set_of_books_id,
applied_customer_id,
trx_number,
application_ref_id
FROM (
SELECT
SUM(NVL(acctd_amount_applied_from,0)
) amount_applied,
acr.customer_trx_id cash_receipt_id,
araa.set_of_books_id,
acr.bill_to_customer_id applied_customer_id,
acr.trx_number trx_number,
araa.event_id,
araa.receivable_application_id,
araa.application_ref_id
FROM ar_receivable_applications_all araa
,ra_customer_trx_all acr
WHERE 1=1
AND araa.STATUS = 'ACTIVITY'
AND araa.application_type IN ('CM')
AND araa.APPLIED_PAYMENT_SCHEDULE_ID = -8
AND araa.APPLICATION_REF_TYPE = 'AP_REFUND_REQUEST'
AND araa.display = 'Y'
AND araa.customer_trx_id = acr.customer_trx_id
AND araa.gl_date <= :p_date_from
AND araa.set_of_books_id = acr.set_of_books_id
GROUP BY acr.customer_trx_id,araa.set_of_books_id,
acr.bill_to_customer_id,
acr.trx_number,
araa.event_id,
araa.receivable_application_id,
araa.application_ref_id
)
GROUP BY cash_receipt_id, set_of_books_id,applied_customer_id, trx_number,application_ref_id-- , event_id, receivable_application_id
) refund
WHERE ent.entity_id = h.entity_id
AND h.ae_header_id = l.ae_header_id
AND l.ae_header_id = dist.ae_header_id
AND l.ae_line_num = dist.ae_line_num
AND h.application_id = l.application_id
AND hz_account.cust_account_id = l.party_id
AND party.party_id = hz_account.party_id
AND rct.BILL_TO_CUSTOMER_ID=hz_account.cust_account_id
AND hl.location_id = site.location_id
AND site.party_id = site.party_id
AND site.party_site_id(+) = hcas.party_site_id
AND hcsu.cust_acct_site_id =
hcas.cust_acct_site_id(+)
AND hou.organization_id = ent.security_id_int_1
AND rct.customer_trx_id = ent.source_id_int_1
AND ent.source_id_int_1 = refund.cash_receipt_id(+)
AND rct.org_id = ent.security_id_int_1
AND hcsu.site_use_id = rct.bill_to_site_use_id
AND sch.customer_trx_id = ent.source_id_int_1
AND typ.cust_trx_type_seq_id =
rct.cust_trx_type_seq_id
AND ent.source_id_int_1 = rcpt.customer_trx_id(+)
AND ent.security_id_int_1 = rcpt.org_id(+)
AND ent.source_id_int_1 = cm.customer_trx_id(+)
AND ent.security_id_int_1 = cm.org_id(+)
AND ent.source_id_int_1 = adjst.customer_trx_id(+)
AND ent.security_id_int_1 = adjst.org_id(+)
AND ent.source_id_int_1 = inv_cm.source_id_int_1(+)
AND ent.security_id_int_1 =
inv_cm.security_id_int_1(+)
AND hcsu.site_use_code = 'BILL_TO'
AND h.balance_type_code = 'A'
AND l.party_type_code = 'C'
AND h.event_type_code <> 'ADJ_CREATE'
AND l.accounting_class_code = 'RECEIVABLE'
and dist.SOURCE_DISTRIBUTION_TYPE='RA_CUST_TRX_LINE_GL_DIST_ALL'
AND h.application_id = 222
AND ((party.party_id IN (:p_customer_name)) OR ('All' IN (:p_customer_name||'All')))
AND l.code_combination_id = gcc.code_combination_id
AND l.accounting_date <= :p_date_from
GROUP BY rct.trx_number,
rct.trx_date,
party.party_id,
party.party_name,
due_date,
rct.bill_to_customer_id,
typ.TYPE,
rcpt.applied_amt,
cm.amt,
adjst.amount,
inv_cm.amt,
ent.source_id_int_1,
ent.security_id_int_1,
gcc.chart_of_accounts_id,
hz_account.customer_class_code,
hz_account.account_number,
hl.city,
rct.ct_reference,
site.party_site_name,
hou.name,
rct.attribute2,
rct.bill_to_site_use_id,
hz_account.cust_account_id,
hz_account.ACCOUNT_NAME,
NVL (refund.amount_applied,0)
) xx
WHERE 1=1
AND ((organization_id IN (:p_bu_id)) OR ('All' IN (:p_bu_id||'All')))
AND ((xx.party_id IN (:p_customer_name)) or ('All' IN (:p_customer_name||'All')))
GROUP BY xx.cust_number,
xx.invoice_number,
xx.invoice_date,
xx.customer_name,
xx.party_id,
xx.site_name,
bu_name,
city,
attribute2,
due_date,
past_due_days,
xx.bill_to_site_use_id,
xx.cust_account_id,
source_id_int_1,
xx.customer_class_code,
xx.account_name
having SUM (xx.total_amt_rem) <> 0
) a
UNION ALL
SELECT 2 rn,
0 current_buck,
0 buk1_30,
0 buk31_60,
0 buk61_90,
0 buk91_120,
0 buk121_150,
0 buk151_180,
0 buk181_210,
0 buk211_240,
0 buk241_270,
0 buk271_300,
0 buk301_330,
0 buk331_365,
0 buk_365,
0 buk_731,
account_number cust_number,
receipt_number invoice_number,
receipt_date invoice_date,
party_name customer,
site_name,
-999 bill_to_site_use_id,
-999 security_id_int_1,
cust_account_id,
0 past_due_days,
bu_name,
null city,
null attribute2,
null party_id,
null due_date,
customer_class_code,
0 sum_total_amt_rem,
null account_desc,
ABS(sum(NVL(unapplied_amt,0))) unapplied_amt ,
party_id customer_name,
DOC_SEQUENCE_VALUE
FROM ( SELECT -1*(SUM((NVL (xel.accounted_dr, 0)) -
(NVL (xel.accounted_cr, 0))))
unapplied_amt,
acct.party_id,
acct.account_number,
acr.receipt_number,
acr.receipt_date,
hp.party_name,
null site_name,
hou.name bu_name,
acr.DOC_SEQUENCE_VALUE,
customer_class_code,
acct.cust_account_id
FROM xla_transaction_entities xte,
xla_ae_headers xah,
xla_ae_lines xel,
gl_code_combinations gcc,
ar_cash_receipts_all acr,
hz_cust_accounts acct,
hz_parties hp,
hr_operating_units hou
WHERE 1=1
AND hp.party_id=acct.party_id
AND hou.organization_id = xte.security_id_int_1
AND xah.ae_header_id = xel.ae_header_id
AND xte.entity_id = xah.entity_id
AND xte.security_id_int_1 = acr.org_id
AND xte.application_id = 222
AND xah.application_id = xte.application_id
AND acr.cash_receipt_id = xte.source_id_int_1
AND gcc.code_combination_id = xel.code_combination_id
AND acr.pay_from_customer = acct.cust_account_id
AND event_type_code IN
('RECP_CREATE',
'RECP_REVERSE',
'RECP_UPDATE',
'RECP_RATE_ADJUST')
AND acr.STATUS NOT IN ('REV','CC_CHARGEBACK_REV')
AND accounting_class_code IN
('CASH',
'CONFIRMATION',
'UNID',
'REMITTANCE',
'RECEIVABLE',
'UNAPPLIED CASH',
'EXCHANGE_GAIN_LOSS',
'REFUND'
)
AND xel.accounting_date <= :p_date_from
AND ((xte.security_id_int_1 IN (:p_bu_id)) OR ('All' IN (:p_bu_id||'All')))
AND ((acct.party_id IN (:p_customer_name)) or ('All' IN (:p_customer_name||'All')))
AND ((acct.customer_class_code IN (:p_customer_type)) OR ('All' IN (:p_customer_type||'All')))
GROUP BY acct.party_id,
xel.party_site_id,
acct.account_number,
acr.receipt_number,
acr.receipt_date,
hp.party_name,
customer_class_code,
hou.name,
acr.DOC_SEQUENCE_VALUE,
acct.cust_account_id
) b
WHERE 1=1
group by account_number ,
receipt_number ,
receipt_date ,
cust_account_id,
party_name ,
site_name,
bu_name,
party_id ,
customer_class_code,
DOC_SEQUENCE_VALUE
having sum(NVL(unapplied_amt,0))<>0
) aa
ORDER BY rn,
aa.customer,
aa.cust_number,
aa.site_name,
aa.invoice_date;
