SuiteQL Query Library
Accounts Receivable: Aging Summary
Returns summarized Accounts Receivable information based on a specific customer.
-- Contributor: Tim Dietrich (timdietrich@me.com)
-- Additional Info: https://timdietrich.me/blog/netsuite-suiteql-accounts-receivable-aging/
SELECT
BUILTIN.DF( Transaction.Entity ) AS Customer,
SUM(
CASE
WHEN
( TRUNC( SYSDATE ) - Transaction.DueDate ) < 1
THEN
COALESCE( TransactionAccountingLine.AmountUnpaid, 0 ) - COALESCE( TransactionAccountingLine.PaymentAmountUnused, 0 )
ELSE
0
END
) AS Current,
SUM(
CASE
WHEN
( TRUNC( SYSDATE ) - Transaction.DueDate ) BETWEEN 1 AND 30
THEN
COALESCE( TransactionAccountingLine.AmountUnpaid, 0 ) - COALESCE( TransactionAccountingLine.PaymentAmountUnused, 0 )
ELSE
0
END
) AS Balance30,
SUM(
CASE
WHEN
( TRUNC( SYSDATE ) - Transaction.DueDate ) BETWEEN 31 AND 60
THEN
COALESCE( TransactionAccountingLine.AmountUnpaid, 0 ) - COALESCE( TransactionAccountingLine.PaymentAmountUnused, 0 )
ELSE
0
END
) AS Balance60,
SUM(
CASE
WHEN
( TRUNC( SYSDATE ) - Transaction.DueDate ) BETWEEN 61 AND 90
THEN
COALESCE( TransactionAccountingLine.AmountUnpaid, 0 ) - COALESCE( TransactionAccountingLine.PaymentAmountUnused, 0 )
ELSE
0
END
) AS Balance90,
SUM(
CASE
WHEN
( TRUNC( SYSDATE ) - Transaction.DueDate ) > 90
THEN
COALESCE( TransactionAccountingLine.AmountUnpaid, 0 ) - COALESCE( TransactionAccountingLine.PaymentAmountUnused, 0 )
ELSE
0
END
) AS Balance90Plus,
SUM (
COALESCE( TransactionAccountingLine.AmountUnpaid, 0 ) - COALESCE( TransactionAccountingLine.PaymentAmountUnused, 0 )
) AS Total
FROM
Transaction
INNER JOIN TransactionAccountingLine ON
( TransactionAccountingLine.Transaction = Transaction.ID )
INNER JOIN Customer ON
( Customer.ID = Transaction.Entity )
WHERE
( Transaction.Posting = 'T' )
AND ( Transaction.Voided = 'F' )
AND (
( TransactionAccountingLine.AmountUnpaid <> 0 )
OR ( TransactionAccountingLine.PaymentAmountUnused <> 0 )
)
GROUP BY
BUILTIN.DF( Transaction.Entity )
ORDER BY
BUILTIN.DF( Transaction.Entity )