AR Customer Credit Snapshot

Description
Categories: Enginatics
Repository: Github
Application: Receivables
Source: Customer Credit Snapshot (XML)
Short Name: ARXCCS_XML
DB package: AR_ARXCCS_XMLP_PKG
with q_cust as
(
select
 sob.name ledger,
 haouv.name operating_unit,
 sob.currency_code functional_currency,
 cur.precision functional_currency_precision,
 sob.set_of_books_id,
 param.org_id qcust_org_id,
 cust_acct.cust_account_id customer_id,
 cust_acct.account_number customer_number,
 party.party_name customer_name,
 round((trunc(sysdate) - cust_acct.creation_date)/365,1) customer_age,
 round((trunc(sysdate) - acct_site.creation_date)/365,1) address_age,
 acct_site.cust_acct_site_id address_id,
 loc.address1 address1,
 loc.address2 address2,
 loc.address3 address3,
 loc.address4 address4,
 decode(loc.city, null, null, loc.city || ',') city,
 nvl(loc.state, loc.province) state,
 loc.postal_code postal_code,
 terr.territory_short_name country,
 site_uses.site_use_id site_use_id,
 site_uses.location location,
 site_uses.primary_flag,
 hcpc.name profile_class,
 cp.cust_account_profile_id customer_profile_id,
 cp.statement_cycle_id,
 ar_arxccs_xmlp_pkg.c_last_credit_memo_formulaform(sob.currency_code,cust_acct.cust_account_id, site_uses.site_use_id) c_last_credit_memo_formula,
 ar_arxccs_xmlp_pkg.c_data_not_foundformula(substrb ( party.party_name , 1 , 50 )) c_data_not_found,
 ar_arxccs_xmlp_pkg.c_customer_ageformula(round ( ( trunc ( sysdate ) - cust_acct.creation_date ) / 365 , 1 )) c_customer_age,
 ar_arxccs_xmlp_pkg.sel_contactformula(acct_site.cust_acct_site_id) sel_contact,
 ar_arxccs_xmlp_pkg.c_address_ageformula(round ( ( trunc ( sysdate ) - acct_site.creation_date ) / 365 , 1 )) c_address_age,
 ar_arxccs_xmlp_pkg.c_city_state_zipformula(decode ( loc.city , null , null , loc.city || ',' ), nvl ( loc.state , loc.province ), loc.postal_code) c_city_state_zip,
 ar_arxccs_xmlp_pkg.c_credit_summaryformula(cust_acct.cust_account_id, site_uses.site_use_id) c_credit_summary,
 ar_arxccs_xmlp_pkg.c_last_invoice_formulaformula(sob.currency_code, cust_acct.cust_account_id, site_uses.site_use_id) c_last_invoice_formula,
 ar_arxccs_xmlp_pkg.c_guarantee_formulaformula(sob.currency_code, cust_acct.cust_account_id, site_uses.site_use_id) c_guarantee_formula,
 ar_arxccs_xmlp_pkg.c_last_deposit_formulaformula(sob.currency_code, cust_acct.cust_account_id, site_uses.site_use_id) c_last_deposit_formula,
 ar_arxccs_xmlp_pkg.c_last_dm_formulaformula(sob.currency_code, cust_acct.cust_account_id, site_uses.site_use_id) c_last_dm_formula,
 ar_arxccs_xmlp_pkg.c_last_cb_formulaformula(sob.currency_code, cust_acct.cust_account_id, site_uses.site_use_id) c_last_cb_formula,
 ar_arxccs_xmlp_pkg.c_last_payment_formulaformula(sob.currency_code, cust_acct.cust_account_id, site_uses.site_use_id) c_last_payment_formula,
 ar_arxccs_xmlp_pkg.c_last_adj_formulaformula(sob.currency_code, cust_acct.cust_account_id, site_uses.site_use_id) c_last_adj_formula,
 ar_arxccs_xmlp_pkg.c_last_writeoff_formulaformula(sob.currency_code, cust_acct.cust_account_id, site_uses.site_use_id) c_last_writeoff_formula,
 ar_arxccs_xmlp_pkg.c_last_statement_formulaformul(cust_acct.cust_account_id, site_uses.site_use_id) c_last_statement_formula,
 ar_arxccs_xmlp_pkg.c_last_dn_formulaformula(cust_acct.cust_account_id, site_uses.site_use_id) c_last_dn_formula,
 ar_arxccs_xmlp_pkg.c_last_nsf_formulaformula(sob.currency_code, cust_acct.cust_account_id, site_uses.site_use_id) c_last_nsf_formula,
 ar_arxccs_xmlp_pkg.c_last_contact_formulaformula(sob.currency_code, cust_acct.cust_account_id, site_uses.site_use_id) c_last_contact_formula,
 ar_arxccs_xmlp_pkg.c_last_hold_formulaformula(cust_acct.cust_account_id, site_uses.site_use_id) c_last_hold_formula,
 ar_arxccs_xmlp_pkg.c_contact_p c_contact,
 ar_arxccs_xmlp_pkg.c_phone_number_p c_phone_number,
 ar_arxccs_xmlp_pkg.c_profile_site_use_id_p c_profile_site_use_id,
 ar_arxccs_xmlp_pkg.c_customer_profile_id_p c_customer_profile_id,
 ar_arxccs_xmlp_pkg.c_cred_summ_collector_p c_cred_summ_collector,
 ar_arxccs_xmlp_pkg.c_cred_summ_exempt_dun_p c_cred_summ_exempt_dun,
 ar_arxccs_xmlp_pkg.c_cred_summ_terms_p c_cred_summ_terms,
 ar_arxccs_xmlp_pkg.c_cred_summ_account_status_p c_cred_summ_account_status,
 ar_arxccs_xmlp_pkg.c_cred_summ_credit_hold_p c_cred_summ_credit_hold,
 ar_arxccs_xmlp_pkg.c_cred_summ_risk_code_p c_cred_summ_risk_code,
 ar_arxccs_xmlp_pkg.c_cred_summ_credit_rating_p c_cred_summ_credit_rating,
 ar_arxccs_xmlp_pkg.c_cred_summ_limit_tolerance_p c_cred_summ_limit_tolerance,
 ar_arxccs_xmlp_pkg.c_cred_summ_lt_exp_date_p c_cred_summ_limit_expire_date,
 ar_arxccs_xmlp_pkg.c_last_invoice_days_since_p c_last_invoice_days_since,
 ar_arxccs_xmlp_pkg.c_last_invoice_date_p c_last_invoice_date,
 ar_arxccs_xmlp_pkg.c_last_invoice_converted_p c_last_invoice_converted,
 ar_arxccs_xmlp_pkg.c_last_invoice_amount_p c_last_invoice_amount,
 ar_arxccs_xmlp_pkg.c_last_invoice_currency_p c_last_invoice_currency,
 ar_arxccs_xmlp_pkg.c_last_invoice_type_p c_last_invoice_type,
 ar_arxccs_xmlp_pkg.c_last_invoice_number_p c_last_invoice_number,
 ar_arxccs_xmlp_pkg.c_last_cm_rel_invoice_p c_last_cm_rel_invoice,
 ar_arxccs_xmlp_pkg.c_last_cm_converted_p c_last_cm_converted,
 ar_arxccs_xmlp_pkg.c_last_cm_amount_p c_last_cm_amount,
 ar_arxccs_xmlp_pkg.c_last_cm_id_p c_last_cm_id,
 ar_arxccs_xmlp_pkg.c_last_cm_prev_trx_p c_last_cm_prev_trx,
 ar_arxccs_xmlp_pkg.c_last_cm_days_since_p c_last_cm_days_since,
 ar_arxccs_xmlp_pkg.c_last_cm_date_p c_last_cm_date,
 ar_arxccs_xmlp_pkg.c_last_cm_currency_p c_last_cm_currency,
 ar_arxccs_xmlp_pkg.c_last_cm_type_p c_last_cm_type,
 ar_arxccs_xmlp_pkg.c_last_guar_days_since_p c_last_guar_days_since,
 ar_arxccs_xmlp_pkg.c_last_guar_date_p c_last_guar_date,
 ar_arxccs_xmlp_pkg.c_last_guar_converted_p c_last_guar_converted,
 ar_arxccs_xmlp_pkg.c_last_guar_amount_p c_last_guar_amount,
 ar_arxccs_xmlp_pkg.c_last_guar_currency_p c_last_guar_currency,
 ar_arxccs_xmlp_pkg.c_last_guar_type_p c_last_guar_type,
 ar_arxccs_xmlp_pkg.c_last_guar_number_p c_last_guar_number,
 ar_arxccs_xmlp_pkg.c_last_dep_days_since_p c_last_dep_days_since,
 ar_arxccs_xmlp_pkg.c_last_dep_date_p c_last_dep_date,
 ar_arxccs_xmlp_pkg.c_last_dep_converted_p c_last_dep_converted,
 ar_arxccs_xmlp_pkg.c_last_dep_amount_p c_last_dep_amount,
 ar_arxccs_xmlp_pkg.c_last_dep_currency_p c_last_dep_currency,
 ar_arxccs_xmlp_pkg.c_last_dep_type_p c_last_dep_type,
 ar_arxccs_xmlp_pkg.c_last_dep_number_p c_last_dep_number,
 ar_arxccs_xmlp_pkg.c_last_dm_days_since_p c_last_dm_days_since,
 ar_arxccs_xmlp_pkg.c_last_dm_date_p c_last_dm_date,
 ar_arxccs_xmlp_pkg.c_last_dm_converted_p c_last_dm_converted,
 ar_arxccs_xmlp_pkg.c_last_dm_amount_p c_last_dm_amount,
 ar_arxccs_xmlp_pkg.c_last_dm_currency_p c_last_dm_currency,
 ar_arxccs_xmlp_pkg.c_last_dm_type_p c_last_dm_type,
 ar_arxccs_xmlp_pkg.c_last_dm_number_p c_last_dm_number,
 ar_arxccs_xmlp_pkg.c_last_cb_days_since_p c_last_cb_days_since,
 ar_arxccs_xmlp_pkg.c_last_cb_date_p c_last_cb_date,
 ar_arxccs_xmlp_pkg.c_last_cb_converted_p c_last_cb_converted,
 ar_arxccs_xmlp_pkg.c_last_cb_amount_p c_last_cb_amount,
 ar_arxccs_xmlp_pkg.c_last_cb_currency_p c_last_cb_currency,
 ar_arxccs_xmlp_pkg.c_last_cb_type_p c_last_cb_type,
 ar_arxccs_xmlp_pkg.c_last_cm_number_p c_last_cm_number,
 ar_arxccs_xmlp_pkg.c_last_cb_number_p c_last_cb_number,
 ar_arxccs_xmlp_pkg.c_last_payment_rel_invoice_p c_last_payment_rel_invoice,
 ar_arxccs_xmlp_pkg.c_last_payment_days_since_p c_last_payment_days_since,
 ar_arxccs_xmlp_pkg.c_last_payment_date_p c_last_payment_date,
 ar_arxccs_xmlp_pkg.c_last_payment_converted_p c_last_payment_converted,
 ar_arxccs_xmlp_pkg.c_last_payment_amount_p c_last_payment_amount,
 ar_arxccs_xmlp_pkg.c_last_payment_currency_p c_last_payment_currency,
 ar_arxccs_xmlp_pkg.c_last_payment_type_p c_last_payment_type,
 ar_arxccs_xmlp_pkg.c_last_payment_number_p c_last_payment_number,
 ar_arxccs_xmlp_pkg.c_last_adj_days_since_p c_last_adj_days_since,
 ar_arxccs_xmlp_pkg.c_last_adj_date_p c_last_adj_date,
 ar_arxccs_xmlp_pkg.c_last_adj_converted_p c_last_adj_converted,
 ar_arxccs_xmlp_pkg.c_last_adj_amount_p c_last_adj_amount,
 ar_arxccs_xmlp_pkg.c_last_adj_currency_p c_last_adj_currency,
 ar_arxccs_xmlp_pkg.c_last_adj_rel_invoice_p c_last_adj_rel_invoice,
 ar_arxccs_xmlp_pkg.c_last_adj_type_p c_last_adj_type,
 ar_arxccs_xmlp_pkg.c_last_adj_number_p c_last_adj_number,
 ar_arxccs_xmlp_pkg.c_last_wo_days_since_p c_last_wo_days_since,
 ar_arxccs_xmlp_pkg.c_last_wo_date_p c_last_wo_date,
 ar_arxccs_xmlp_pkg.c_last_wo_converted_p c_last_wo_converted,
 ar_arxccs_xmlp_pkg.c_last_wo_amount_p c_last_wo_amount,
 ar_arxccs_xmlp_pkg.c_last_wo_currency_p c_last_wo_currency,
 ar_arxccs_xmlp_pkg.c_last_wo_rel_invoice_p c_last_wo_rel_invoice,
 ar_arxccs_xmlp_pkg.c_last_wo_type_p c_last_wo_type,
 ar_arxccs_xmlp_pkg.c_last_wo_number_p c_last_wo_number,
 ar_arxccs_xmlp_pkg.c_last_stmnt_next_trx_date_p c_last_stmnt_next_trx_date,
 ar_arxccs_xmlp_pkg.c_last_st_date_p c_last_st_date,
 ar_arxccs_xmlp_pkg.c_last_st_type_p c_last_st_type,
 ar_arxccs_xmlp_pkg.c_last_st_number_p c_last_st_number,
 ar_arxccs_xmlp_pkg.c_last_st_days_since_p c_last_st_days_since,
 ar_arxccs_xmlp_pkg.c_last_dn_days_since_p c_last_dn_days_since,
 ar_arxccs_xmlp_pkg.c_last_dn_date_p c_last_dn_date,
 ar_arxccs_xmlp_pkg.c_last_dn_currency_p c_last_dn_currency,
 ar_arxccs_xmlp_pkg.c_last_dn_amount_p c_last_dn_amount,
 ar_arxccs_xmlp_pkg.c_last_dn_type_p c_last_dn_type,
 ar_arxccs_xmlp_pkg.c_last_dn_number_p c_last_dn_number,
 ar_arxccs_xmlp_pkg.c_last_nsf_currency_p c_last_nsf_currency,
 ar_arxccs_xmlp_pkg.c_last_nsf_days_since_p c_last_nsf_days_since,
 ar_arxccs_xmlp_pkg.c_last_nsf_date_p c_last_nsf_date,
 ar_arxccs_xmlp_pkg.c_last_nsf_converted_p c_last_nsf_converted,
 ar_arxccs_xmlp_pkg.c_last_nsf_amount_p c_last_nsf_amount,
 ar_arxccs_xmlp_pkg.c_last_nsf_type_p c_last_nsf_type,
 ar_arxccs_xmlp_pkg.c_last_nsf_number_p c_last_nsf_number,
 ar_arxccs_xmlp_pkg.c_last_contact_days_since_p c_last_contact_days_since,
 ar_arxccs_xmlp_pkg.c_last_contact_date_p c_last_contact_date,
 ar_arxccs_xmlp_pkg.c_last_contact_amount_p c_last_contact_amount,
 ar_arxccs_xmlp_pkg.c_last_contact_converted_p c_last_contact_converted,
 ar_arxccs_xmlp_pkg.c_last_contact_currency_p c_last_contact_currency,
 ar_arxccs_xmlp_pkg.c_last_contact_rel_invoice_p c_last_contact_rel_invoice,
 ar_arxccs_xmlp_pkg.c_last_contact_number_p c_last_contact_number,
 ar_arxccs_xmlp_pkg.c_last_hold_days_since_p c_last_hold_days_since,
 ar_arxccs_xmlp_pkg.c_last_hold_date_p c_last_hold_date,
 ar_arxccs_xmlp_pkg.c_last_hold_amount_p c_last_hold_amount,
 ar_arxccs_xmlp_pkg.c_last_hold_number_p c_last_hold_number
from
 ar_system_parameters_all param,
 gl_sets_of_books sob,
 hr_all_organization_units_vl haouv,
 fnd_currencies cur,
 hz_cust_accounts cust_acct,
 hz_parties party,
 hz_cust_acct_sites acct_site,
 hz_party_sites party_site,
 hz_locations loc,
 hz_cust_site_uses site_uses,
 fnd_territories_vl terr,
 ar_collectors coll,
 hz_customer_profiles cp,
 hz_cust_profile_classes hcpc
where
 1=1 and
 param.set_of_books_id = sob.set_of_books_id and
 param.org_id = haouv.organization_id (+) and
 sob.currency_code = cur.currency_code and
 cp.cust_account_id = cust_acct.cust_account_id and
 cust_acct.party_id = party.party_id and
 cp.collector_id = coll.collector_id and
 cust_acct.cust_account_id = acct_site.cust_account_id and
 nvl(param.org_id,-99) = nvl(acct_site.org_id,-99) and
 site_uses.cust_acct_site_id = acct_site.cust_acct_site_id and
 nvl(site_uses.org_id,-99) = nvl(acct_site.org_id,-99) and
 site_uses.status = 'A' and
 acct_site.party_site_id = party_site.party_site_id and
 loc.location_id = party_site.location_id and
 site_uses.site_use_code = 'BILL_TO' and
 site_uses.status = 'A' and
 loc.country = terr.territory_code and
 cp.cust_account_profile_id =
  (select
    max(cp2.cust_account_profile_id)
   from
    hz_customer_profiles cp2
   where
    cust_acct.cust_account_id = cp2.cust_account_id and
    (site_uses.site_use_id = cp2.site_use_id or cp2.site_use_id is null )
  ) and
 cp.profile_class_id = hcpc.profile_class_id
 &p_org_where_param
),
q_currencies as
(
 select
 hca.cust_account_id customer_id,
 hcsua.site_use_id site_use_id,
 hcsua.org_id org_id,
 hcpa.cust_account_profile_id,
 hcpa.currency_code
 from
 hz_cust_accounts hca,
 hz_cust_acct_sites_all hcasa,
 hz_cust_site_uses_all hcsua,
 hz_cust_profile_amts hcpa
 where
 hca.cust_account_id = hcasa.cust_account_id and
 hcasa.cust_acct_site_id = hcsua.cust_acct_site_id and
 nvl(hcasa.org_id,-99) = nvl(hcsua.org_id,-99) and
 hca.cust_account_id = hcpa.cust_account_id and
 hcpa.cust_account_profile_id =
 (select
  max(hcp2.cust_account_profile_id)
  from
  hz_customer_profiles hcp2
  where
  hcp2.cust_account_id = hca.cust_account_id and
  (hcp2.site_use_id = hcsua.site_use_id or hcp2.site_use_id is null )
 )
 union
 select
 apsa.customer_id,
 apsa.customer_site_use_id,
 apsa.org_id,
 hcp.cust_account_profile_id,
 apsa.invoice_currency_code
 from
 ar_payment_schedules_all apsa,
 hz_customer_profiles hcp
 where
 apsa.class not in ('CM', 'PMT') and
 apsa.customer_id = hcp.cust_account_id and
 hcp.cust_account_profile_id =
 (select
  max(hcp2.cust_account_profile_id)
  from
  hz_customer_profiles hcp2
  where
  hcp2.cust_account_id = apsa.customer_id and
  (hcp2.site_use_id = apsa.customer_site_use_id or hcp2.site_use_id is null )
 )
),
q_buckets as
(
 select
  ps.customer_id ps_customer_id,
  ps.customer_site_use_id ps_site_use_id,
  ps.org_id ps_org_id,
  ps.invoice_currency_code currency_bucket,
  sum(ps.amount_due_remaining) aging_balance_outstanding,
  sum(decode(:rp_bucket_line_type_0,
             'DISPUTE_ONLY',   decode(nvl(ps.amount_in_dispute,0),0,0,1),
             'PENDADJ_ONLY',   decode(nvl(ps.amount_adjusted_pending,0),0,0,1),
             'DISPUTE_PENDADJ',decode(nvl(ps.amount_in_dispute,0), 0,decode(nvl(ps.amount_adjusted_pending,0),0,0,1), 1),
                               case when ceil(trunc(sysdate)-ps.due_date) between to_number(:rp_bucket_days_from_0) and to_number(:rp_bucket_days_to_0) then 1 else 0 end
                               * decode(nvl(ps.amount_in_dispute,0), 0, 1, decode('', 'DISPUTE_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1))
                               * decode(nvl(ps.amount_adjusted_pending,0), 0, 1, decode('', 'PENDADJ_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1))
            )
      * ps.amount_due_remaining * 1
  ) total_cust_b0,
  sum(decode(:rp_bucket_line_type_1,
             'DISPUTE_ONLY',   decode(nvl(ps.amount_in_dispute,0),0,0,1),
             'PENDADJ_ONLY',   decode(nvl(ps.amount_adjusted_pending,0),0,0,1),
             'DISPUTE_PENDADJ',decode(nvl(ps.amount_in_dispute,0), 0,decode(nvl(ps.amount_adjusted_pending,0),0,0,1), 1),
                               case when ceil(trunc(sysdate)-ps.due_date) between to_number(:rp_bucket_days_from_1) and to_number(:rp_bucket_days_to_1) then 1 else 0 end
                               * decode(nvl(ps.amount_in_dispute,0), 0, 1, decode('', 'DISPUTE_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1))
                               * decode(nvl(ps.amount_adjusted_pending,0), 0, 1, decode('', 'PENDADJ_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1))
            )
      * ps.amount_due_remaining * 1
  ) total_cust_b1,
  sum(decode(:rp_bucket_line_type_2,
             'DISPUTE_ONLY',   decode(nvl(ps.amount_in_dispute,0),0,0,1),
             'PENDADJ_ONLY',   decode(nvl(ps.amount_adjusted_pending,0),0,0,1),
             'DISPUTE_PENDADJ',decode(nvl(ps.amount_in_dispute,0), 0,decode(nvl(ps.amount_adjusted_pending,0),0,0,1), 1),
                               case when ceil(trunc(sysdate)-ps.due_date) between to_number(:rp_bucket_days_from_2) and to_number(:rp_bucket_days_to_2) then 1 else 0 end
                               * decode(nvl(ps.amount_in_dispute,0), 0, 1, decode('', 'DISPUTE_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1))
                               * decode(nvl(ps.amount_adjusted_pending,0), 0, 1, decode('', 'PENDADJ_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1))
            )
      * ps.amount_due_remaining * 1
  ) total_cust_b2,
  sum(decode(:rp_bucket_line_type_3,
             'DISPUTE_ONLY',   decode(nvl(ps.amount_in_dispute,0),0,0,1),
             'PENDADJ_ONLY',   decode(nvl(ps.amount_adjusted_pending,0),0,0,1),
             'DISPUTE_PENDADJ',decode(nvl(ps.amount_in_dispute,0), 0,decode(nvl(ps.amount_adjusted_pending,0),0,0,1), 1),
                               case when ceil(trunc(sysdate)-ps.due_date) between to_number(:rp_bucket_days_from_3) and to_number(:rp_bucket_days_to_3) then 1 else 0 end
                               * decode(nvl(ps.amount_in_dispute,0), 0, 1, decode('', 'DISPUTE_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1))
                               * decode(nvl(ps.amount_adjusted_pending,0), 0, 1, decode('', 'PENDADJ_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1))
            )
      * ps.amount_due_remaining * 1
  ) total_cust_b3,
  sum(decode(:rp_bucket_line_type_4,
             'DISPUTE_ONLY',   decode(nvl(ps.amount_in_dispute,0),0,0,1),
             'PENDADJ_ONLY',   decode(nvl(ps.amount_adjusted_pending,0),0,0,1),
             'DISPUTE_PENDADJ',decode(nvl(ps.amount_in_dispute,0), 0,decode(nvl(ps.amount_adjusted_pending,0),0,0,1), 1),
                               case when ceil(trunc(sysdate)-ps.due_date) between to_number(:rp_bucket_days_from_4) and to_number(:rp_bucket_days_to_4) then 1 else 0 end
                               * decode(nvl(ps.amount_in_dispute,0), 0, 1, decode('', 'DISPUTE_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1)) *
                                 decode(nvl(ps.amount_adjusted_pending,0), 0, 1, decode('', 'PENDADJ_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1))
            )
      * ps.amount_due_remaining * 1
  ) total_cust_b4,
  sum(decode(:rp_bucket_line_type_5,
             'DISPUTE_ONLY',   decode(nvl(ps.amount_in_dispute,0),0,0,1),
             'PENDADJ_ONLY',   decode(nvl(ps.amount_adjusted_pending,0),0,0,1),
             'DISPUTE_PENDADJ',decode(nvl(ps.amount_in_dispute,0), 0,decode(nvl(ps.amount_adjusted_pending,0),0,0,1), 1),
                               case when ceil(trunc(sysdate)-ps.due_date) between to_number(:rp_bucket_days_from_5) and to_number(:rp_bucket_days_to_5) then 1 else 0 end
                                       * decode(nvl(ps.amount_in_dispute,0), 0, 1, decode('', 'DISPUTE_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1))
                                       * decode(nvl(ps.amount_adjusted_pending,0), 0, 1, decode('', 'PENDADJ_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1))
            )
      * ps.amount_due_remaining * 1
  ) total_cust_b5,
  sum(decode(:rp_bucket_line_type_6,
             'DISPUTE_ONLY',   decode(nvl(ps.amount_in_dispute,0),0,0,1),
             'PENDADJ_ONLY',   decode(nvl(ps.amount_adjusted_pending,0),0,0,1),
             'DISPUTE_PENDADJ',decode(nvl(ps.amount_in_dispute,0), 0,decode(nvl(ps.amount_adjusted_pending,0),0,0,1), 1),
                               case when ceil(trunc(sysdate)-ps.due_date) between to_number(:rp_bucket_days_from_6) and to_number(:rp_bucket_days_to_6) then 1 else 0 end
                               * decode(nvl(ps.amount_in_dispute,0), 0, 1, decode('', 'DISPUTE_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1)) *
                               decode(nvl(ps.amount_adjusted_pending,0), 0, 1, decode('', 'PENDADJ_ONLY', 0, 'DISPUTE_PENDADJ', 0, 1))
            )
      * ps.amount_due_remaining * 1
  ) total_cust_b6
 from
  ar_payment_schedules_all ps
 where
  ps.class not in ('CM', 'PMT')
  &p_org_where_ps
 group by
  ps.customer_id,
  ps.customer_site_use_id,
  ps.org_id,
  ps.invoice_currency_code
),
q_stmt_cycles as
(
 select distinct
 astc.statement_cycle_id,
 first_value(astc.name) over (partition by astc.statement_cycle_id order by astcd.statement_date desc,astcd.statement_cycle_date_id desc) statement_type,
 first_value(astcd.statement_date) over (partition by astc.statement_cycle_id order by astcd.statement_date desc,astcd.statement_cycle_date_id desc) statement_date,
 trunc(trunc(sysdate) - first_value(astcd.statement_date) over (partition by astc.statement_cycle_id order by astcd.statement_date desc,astcd.statement_cycle_date_id desc)) days_since
 from
 ar_statement_cycles astc,
 ar_statement_cycle_dates astcd
 where
 astc.statement_cycle_id = astcd.statement_cycle_id and
 astcd.printed = 'Y'
)
--
-- select main query starts here
select /*+ ordered push_pred(curr) push_pred(qb) push_pred(qsc) */
 qc.ledger,
 qc.operating_unit,
 qc.functional_currency,
 -- function call ensures the placeholder columns are populated
 nvl2(qc.c_credit_summary ||
      qc.sel_contact ||
      qc.c_last_invoice_formula ||
      qc.c_last_credit_memo_formula ||
      qc.c_guarantee_formula ||
      qc.c_last_deposit_formula ||
      qc.c_last_dm_formula ||
      qc.c_last_cb_formula ||
      qc.c_last_payment_formula ||
      qc.c_last_adj_formula ||
      qc.c_last_writeoff_formula ||
      qc.c_last_statement_formula ||
      qc.c_last_dn_formula ||
      qc.c_last_nsf_formula ||
      qc.c_last_contact_formula ||
      qc.c_last_hold_formula,
      qc.customer_name,
      qc.customer_name
     ) customer_name,
 qc.customer_number customer_number,
 --
 qc.location,
 qc.address1,
 qc.address2,
 qc.address3,
 qc.address4,
 qc.city,
 qc.state,
 qc.postal_code,
 qc.country,
 --qc.c_city_state_zip,
 qc.c_contact contact,
 qc.c_phone_number phone_number,
 qc.c_customer_age customer_age,
 qc.c_address_age address_age,
 --
 -- Customer Level Credit Summary
 --
 --qc.c_credit_summary,
 qc.profile_class,
 nvl2(qc.c_profile_site_use_id,'Site','Account') profile_level,
 qc.c_cred_summ_limit_tolerance credit_tolerance,
 qc.c_cred_summ_credit_rating credit_rating,
 qc.c_cred_summ_risk_code risk_code,
 qc.c_cred_summ_credit_hold credit_hold,
 qc.c_cred_summ_account_status account_status,
 qc.c_cred_summ_terms standard_terms,
 qc.c_cred_summ_exempt_dun exempt_from_dunning,
 qc.c_cred_summ_collector collector,
 --qc.c_cred_summ_limit_expire_date,
 --
 -- Currency
 --
 -- the function calls are required to populate the place holder columns
 nvl2(ar_arxccs_xmlp_pkg.cf_currency_lookupformula(hcpa.cust_account_id, curr.currency_code, hcpa.site_use_id, qc.site_use_id) ||
      ar_arxccs_xmlp_pkg.c_currency_lookupformula(qc.site_use_id, curr.currency_code) ||
      ar_arxccs_xmlp_pkg.c_credit_amounts_calcformu0114(qc.customer_id, qc.site_use_id,qc.functional_currency,curr.currency_code,hcpa.overall_credit_limit) ||
      ar_arxccs_xmlp_pkg.c_compute_amtformula(qc.functional_currency, qc.customer_id, qc.site_use_id, curr.currency_code, qb.aging_balance_outstanding) ||
      ar_arxccs_xmlp_pkg.c_high_inv_formulaformula(qc.functional_currency, qc.customer_id, qc.site_use_id, curr.currency_code) ||
      ar_arxccs_xmlp_pkg.c_rolling_summary_calcformula(qc.functional_currency, qc.customer_id, qc.site_use_id, curr.currency_code),
      curr.currency_code,curr.currency_code
      ) currency,
 --
 -- G_CREDIT_LIMITS
 --
 hcpa.overall_credit_limit credit_limit, -- 1,
 case when hcpa.currency_code is not null
 then case when hcpa.overall_credit_limit is null then ar_arxccs_xmlp_pkg.rp_no_limit_p end
 else ar_arxccs_xmlp_pkg.rp_no_limit_p
 end no_credit_limit,
 hcpa.trx_credit_limit order_credit_limit, -- 1,
 case when hcpa.currency_code is not null then ar_arxccs_xmlp_pkg.c_cred_summ_available1_p end available_credit, -- c_cred_summ_available1,
 case when hcpa.currency_code is not null then ar_arxccs_xmlp_pkg.c_cred_summ_exceeded1_p end exceeded_credit_amount, -- c_cred_summ_exceeded1,
 case when hcpa.currency_code is not null then ar_arxccs_xmlp_pkg.default_flag_p end default_flag, -- default_flag,
 --
 -- G_BUCKETS
 --
 -- aging
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.cp_default_flag_p end default_flag,
 case when qb.currency_bucket is not null then qb.aging_balance_outstanding end aging_outstanding_balance,
 &lp_aging_amount_cols
 &lp_aging_percent_cols
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_aging_credit_p end  aging_on_account_credit, -- c_aging_credit,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_aging_unapplied_p end  aging_unapplied_cash, -- c_aging_unapplied,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_aging_on_account_p end  aging_on_account_cash, -- c_aging_on_account,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_adjusted_balance_p end  aging_adjusted_balance, -- c_adjusted_balance,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_aging_in_collection_p end  aging_in_collection, -- c_aging_in_collection,
 -- customer history
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_cust_hist_high_invoice_amt_p end  hist_largest_invoice_amount, -- c_cust_hist_high_invoice_amt,
 case when qb.currency_bucket is not null then to_date(ar_arxccs_xmlp_pkg.c_cust_hist_high_inv_date_p) end  hist_largest_invoice_date, -- c_cust_hist_high_invoice_date,
 -- not using these function as it contains a bug compared to the rdf version
 --  ar_arxccs_xmlp_pkg.c_cust_hist_high_limit_amtform(qc.customer_id, qc.site_use_id)  c_cust_hist_high_limit_amt,
 --  ar_arxccs_xmlp_pkg.c_cust_hist_high_limit_date_p) c_cust_hist_high_limit_date,
 case when qb.currency_bucket is not null
 then
   --nvl(
    (select
     max(h.credit_limit)
     from
     ar_credit_histories h
     where
     h.customer_id = qc.customer_id and
     (h.site_use_id = qc.site_use_id or
      (h.site_use_id is null and not exists (select 1 from ar_credit_histories h2 where h2.site_use_id = qc.site_use_id and h2.customer_id = qc.customer_id)
      )
     ) and
     nvl(h.credit_limit,0) != 0
    )
   --,decode(nvl(hcpa.overall_credit_limit,0),0,to_number(null),hcpa.overall_credit_limit)
   --)
 end hist_highest_credit_limit,
 case when qb.currency_bucket is not null
 and (select
      max(h.credit_limit)
      from
      ar_credit_histories h
      where
      h.customer_id = qc.customer_id and
      (h.site_use_id = qc.site_use_id or
       (h.site_use_id is null and not exists (select 1 from ar_credit_histories h2 where h2.site_use_id = qc.site_use_id and h2.customer_id = qc.customer_id)
       )
      ) and
      nvl(h.credit_limit,0) != 0
     ) is null
 then ar_arxccs_xmlp_pkg.rp_no_limit_p
 else null
 end hist_highest_no_credit_limit,
 case when qb.currency_bucket is not null
 then
   --nvl(
    (select distinct
     first_value(trunc(h.last_update_date)) over (order by h.credit_limit desc range between unbounded preceding and unbounded following)
     from
     ar_credit_histories h
     where
     h.customer_id = qc.customer_id and
     (h.site_use_id = qc.site_use_id or
      (h.site_use_id is null and not exists (select 1 from ar_credit_histories h2 where h2.site_use_id = qc.site_use_id and h2.customer_id = qc.customer_id)
      )
     ) and
     nvl(h.credit_limit,0) != 0
    )
    --,decode(nvl(hcpa.overall_credit_limit,0),0,to_date(null),trunc(hcpa.last_update_date))
   --)
 end hist_highest_credit_limit_date,
 --
 -- 12mth rolling summary
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_sales_amount_p end   sales_amount, -- c_ytd_sales_amount,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_payment_amount_p end  payments_amount, -- c_ytd_payment_amount,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_credit_amount_p end  credits_amount, -- c_ytd_credit_amount,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_finance_charge_amount_p end  finance_changes_amount, -- c_ytd_finance_charge_amount,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_writeoff_amount_p end  written_off_amount, -- c_ytd_writeoff_amount,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_earned_discount_amount_p end  earned_discounts_amount, -- c_ytd_earned_discount_amount,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_unearned_discount_amoun end  unearned_discounts_amount, -- c_ytd_unearned_discount_amount,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_nsf_amount_p end  nsf_stop_payments_amount, -- c_ytd_nsf_amount,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_sales_count_p end  sales_count, -- c_ytd_sales_count,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_payment_count_p end  payments_count, -- c_ytd_payment_count,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_credit_count_p end  credits_count, -- c_ytd_credit_count,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_finance_charge_count_p end  finance_changes_count, -- c_ytd_finance_charge_count,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_nsf_count_p end  nsf_stop_payments_count, -- c_ytd_nsf_count ,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_late_payments_count_p end  late_payments_count, -- c_ytd_late_payments_count,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_on_time_payments_count_p end  on_time_payments_count, -- c_ytd_on_time_payments_count,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_average_payment_days_p end  average_payment_days, -- c_ytd_average_payment_days,
 case when qb.currency_bucket is not null then ar_arxccs_xmlp_pkg.c_ytd_average_days_late_p end average_days_late, -- c_ytd_average_days_late,
 --
 -- Last Transactions Summary
 --
 --qc.c_last_invoice_formula,
 qc.c_last_invoice_number last_invoice_number,
 qc.c_last_invoice_type last_invoice_type,
 qc.c_last_invoice_currency last_invoice_curr,
 qc.c_last_invoice_amount last_invoice_amount,
 to_date(qc.c_last_invoice_date) last_invoice_date,
 qc.c_last_invoice_days_since last_invoice_days_since,
 --qc.c_last_credit_memo_formula,
 qc.c_last_cm_number last_credit_memo_number,
 qc.c_last_cm_type last_credit_memo_type,
 qc.c_last_cm_rel_invoice last_credit_memo_related_inv,
 qc.c_last_cm_currency last_credit_memo_curr,
 qc.c_last_cm_amount last_credit_memo_amount,
 to_date(qc.c_last_cm_date) last_credit_memo_date,
 qc.c_last_cm_days_since last_credit_memo_days_since,
 --qc.c_guarantee_formula,
 qc.c_last_guar_number last_guarantee_number,
 qc.c_last_guar_type last_guarantee_type,
 qc.c_last_guar_currency last_guarantee_curr,
 qc.c_last_guar_amount last_guarantee_amount,
 --qc.c_last_guar_converted last_guarantee_converted,
 to_date(qc.c_last_guar_date) last_guarantee_date,
 qc.c_last_guar_days_since last_guarantee_days_since,
 --qc.c_last_deposit_formula,
 qc.c_last_dep_number last_deposit_number,
 qc.c_last_dep_type last_deposit_type,
 qc.c_last_dep_currency last_deposit_curr,
 qc.c_last_dep_amount last_deposit_amount,
 to_date(qc.c_last_dep_date) last_deposit_date,
 qc.c_last_dep_days_since last_deposit_days_since,
 --qc.c_last_dm_formula,
 qc.c_last_dm_number last_debit_memo_number,
 qc.c_last_dm_type last_debit_memo_type,
 qc.c_last_dm_currency last_debit_memo_curr,
 qc.c_last_dm_amount last_debit_memo_amount,
 to_date(qc.c_last_dm_date) last_debit_memo_date,
 qc.c_last_dm_days_since last_debit_memo_days_since,
 --qc.c_last_cb_formula,
 qc.c_last_cb_number last_charge_back_number,
 qc.c_last_cb_type last_charge_back_type,
 qc.c_last_cb_currency last_charge_back_curr,
 qc.c_last_cb_amount last_charge_back_amount,
 to_date(qc.c_last_cb_date) last_charge_back_date,
 qc.c_last_cb_days_since last_charge_back_days_since,
 --qc.c_last_payment_formula,
 qc.c_last_payment_number last_payment_number,
 qc.c_last_payment_type last_payment_type,
 qc.c_last_payment_rel_invoice last_payment_related_inv,
 qc.c_last_payment_currency last_payment_curr,
 qc.c_last_payment_amount last_payment_amount,
 to_date(qc.c_last_payment_date) last_payment_date,
 qc.c_last_payment_days_since last_payment_days_since,
 --qc.c_last_adj_formula,
 qc.c_last_adj_number last_adjustment_number,
 qc.c_last_adj_type last_adjustment_type,
 qc.c_last_adj_rel_invoice last_adjustment_related_inv,
 qc.c_last_adj_currency last_adjustment_curr,
 qc.c_last_adj_amount last_adjustment_amount,
 to_date(qc.c_last_adj_date) last_adjustment_date,
 qc.c_last_adj_days_since last_adjustment_days_since,
 --qc.c_last_writeoff_formula,
 qc.c_last_wo_number last_writeoff_number,
 qc.c_last_wo_type last_writeoff_type,
 qc.c_last_wo_rel_invoice last_writeoff_related_inv,
 qc.c_last_wo_currency last_writeoff_curr,
 qc.c_last_wo_amount last_writeoff_amount,
 to_date(qc.c_last_wo_date) last_writeoff_date,
 qc.c_last_wo_days_since last_writeoff_days_since,
 /* not using the xml function as it contains a bug */
 --qc.c_last_statement_formula,
 --qc.c_last_st_number last_statement_number,
 -- qc.c_last_st_type last_statement_type,
 -- to_date(qc.c_last_st_date) last_statement_date,
 --qc.c_last_st_days_since last_statement_days_since,
 --to_date(qc.c_last_stmnt_next_trx_date) next_statement_date,
 case
 when qsc.statement_date is null
 then ar_arxccs_xmlp_pkg.rp_none_p
 else ar_arxccs_xmlp_pkg.rp_na_upper_p
 end last_statement_number,
 qsc.statement_type last_statement_type,
 qsc.statement_date last_statement_date,
 qsc.days_since last_statement_days_since,
 (select distinct
  first_value(ascd.statement_date) over (order by ascd.statement_date,ascd.statement_cycle_date_id)
  from
  hz_customer_profiles hcp,
  ar_statement_cycle_dates ascd
  where
  hcp.statement_cycle_id = ascd.statement_cycle_id and
  ascd.printed = 'N' and
  ascd.statement_date > qsc.statement_date and
  hcp.cust_account_id = qc.customer_id and
  hcp.site_use_id is null
 ) next_statement_date,
 --qc.c_last_dn_formula,
 qc.c_last_dn_number last_dunning_number,
 qc.c_last_dn_type last_dunning_type,
 qc.c_last_dn_currency last_dunning_curr,
 qc.c_last_dn_amount last_dunning_amount,
 to_date(qc.c_last_dn_date) last_dunning_date,
 qc.c_last_dn_days_since last_dunning_days_since,
 --qc.c_last_nsf_formula,
 qc.c_last_nsf_number last_nsf_stop_pmt_number,
 qc.c_last_nsf_type last_nsf_stop_pmt_type,
 qc.c_last_nsf_currency last_nsf_stop_pmt_curr,
 qc.c_last_nsf_amount last_nsf_stop_pmt_amount,
 to_date(qc.c_last_nsf_date) last_nsf_stop_pmt_date,
 qc.c_last_nsf_days_since last_nsf_stop_pmt_days_since,
 --qc.c_last_contact_formula,
 qc.c_last_contact_number last_phone_contact_number,
 qc.c_last_contact_rel_invoice last_phone_contact_related_inv,
 qc.c_last_contact_currency last_phone_contact_curr,
 qc.c_last_contact_amount last_phone_contact_amount,
 to_date(qc.c_last_contact_date) last_phone_contact_date,
 qc.c_last_contact_days_since last_phone_contact_days_since,
 --qc.c_last_hold_formula,
 qc.c_last_hold_number last_credit_hold_number,
 qc.c_last_hold_amount last_credit_hold_amount,
 to_date(qc.c_last_hold_date) last_credit_hold_date,
 qc.c_last_hold_days_since last_credit_hold_days_since,
 --
 to_char(qc.set_of_books_id) set_of_books_id,
 to_char(qc.qcust_org_id) org_id,
 to_char(qc.customer_id) customer_id,
 to_char(qc.site_use_id) site_use_id,
 to_char(qc.c_customer_profile_id) customer_profile_id
from
 q_cust qc,
 q_currencies curr,
 hz_cust_profile_amts hcpa,
 q_stmt_cycles qsc,
 q_buckets qb
where
 qc.customer_id  = curr.customer_id (+) and
 qc.site_use_id  = curr.site_use_id (+) and
 qc.qcust_org_id = curr.org_id (+) and
 qc.customer_profile_id = curr.cust_account_profile_id (+) and
 --
 curr.cust_account_profile_id = hcpa.cust_account_profile_id (+) and
 curr.currency_code = hcpa.currency_code (+) and
 --
 curr.customer_id = qb.ps_customer_id (+) and
 curr.site_use_id = qb.ps_site_use_id (+) and
 curr.currency_code = qb.currency_bucket (+) and
 --
 qc.statement_cycle_id = qsc.statement_cycle_id (+)
order by
 qc.customer_name,
 qc.primary_flag desc,
 qc.location,
 curr.currency_code
Parameter NameSQL textValidation
Reporting Level
 
LOV Oracle
Reporting Context
 
LOV Oracle
Collector Name
coll.name = :p_collector_name
LOV Oracle
Collector Name Low
coll.name >= :p_collector_low
LOV Oracle
Collector Name High
coll.name <= :p_collector_high
LOV Oracle
Customer Name
party.party_name = :p_customer_Name
LOV Oracle
Customer Name Low
party.party_name >= :p_customer_Name_Low
LOV Oracle
Customer Name High
party.party_name <= :p_customer_name_high
LOV Oracle
Customer Number
cust_acct.account_number = :p_customer_number
Char
Customer Number Low
cust_acct.account_number >= :p_customer_number_low
LOV Oracle
Customer Number High
cust_acct.account_number <= :p_customer_number_high
LOV Oracle
Bucket Name
 
LOV Oracle
Blitz Report™