Query to find the Outstanding Amount on a Customer Account

SELECT
   pty.party_number AS party_number,
   pty.party_name AS customer_name,
   acct.account_number AS account_number,
   acct.account_name AS account_name,
   SUM(ps.acctd_amount_due_remaining) AS amount_due
FROM
   ar_payment_schedules_all ps,
   hz_party_sites site,
   hz_cust_acct_sites_all asite,
   hz_cust_accounts acct,
   hz_cust_site_uses_all uses,
   hz_parties pty,
   ra_customer_trx_all trx,
   hz_locations loc,
   ra_terms_lines_discounts dsc,
   ra_cust_trx_types_all rtype,
   ra_terms rt,
   ra_customer_trx_lines_all rl,
   fun_all_business_units_v org,
   fnd_vs_values_b val1,
   fnd_vs_values_tl val2
WHERE
   ps.acctd_amount_due_remaining <> 0
   AND acct.cust_account_id = ps.customer_id
   AND acct.party_id = site.party_id
   AND asite.party_site_id = site.party_site_id
   AND acct.cust_account_id = asite.cust_account_id
   AND asite.cust_acct_site_id = uses.cust_acct_site_id
   AND uses.site_use_id = ps.customer_site_use_id
   AND pty.party_id = acct.party_id
   AND trx.customer_trx_id = ps.customer_trx_id
   AND loc.location_id = site.location_id
   AND dsc.term_id( + ) = ps.term_id
   AND ps.terms_sequence_number = dsc.sequence_num( + )
   AND rtype.cust_trx_type_seq_id = trx.cust_trx_type_seq_id
   AND rt.term_id( + ) = ps.term_id
   AND rl.customer_trx_id = trx.customer_trx_id
   AND ps.org_id = org.bu_id
   AND val1.VALUE = site.attribute3
   AND val1.value_id = val2.value_id
   AND val2.language = 'US'
   AND NOT EXISTS
   (
      SELECT
         hca1.cust_account_id
      FROM
         ar_cash_receipts_all acra,
         hz_cust_accounts hca1,
         ar_receipt_methods arm
      WHERE
         1 = 1
         AND acct.cust_account_id = hca1.cust_account_id
         AND hca1.cust_account_id = acra.pay_from_customer
         AND arm.receipt_method_id = acra.receipt_method_id
         AND acra.receipt_date BETWEEN (sysdate - 30) AND sysdate
   )
GROUP BY
   pty.party_name,
   acct.account_number,
   acct.account_name,
   pty.party_number
HAVING
   SUM(ps.acctd_amount_due_remaining) > 0
ORDER BY
   5 DESC

Comments