Forum Discussion
DAX help - Accounts Receivable Aging
- 8 years ago
Unfortunately that did not work. But luckily I stumbled on a formula that works. Here it is in case anyone is interested. I'd be happy to hear any suggestions as to improvements to this formula if any exist.
Total AR 0-30 =
VAR EndDate =
MAX ( 'Calendar'[Date] )
RETURN
IF (
MIN ( 'Calendar'[Date] )
<= CALCULATE ( MAX ('TransactionsTable'[PostingDate]), ALL ('TransactionsTable') ),
CALCULATE (
SUM ( 'TransactionsTable'[TransactionAmount] ),
FILTER ( ALL ( 'Calendar'[Date] ), 'Calendar'[Date] <= EndDate ),
KEEPFILTERS (
IFERROR (
DATEDIFF ( CustomerTable[CustomerCheckoutDate], EndDate, DAY ),
( DATEDIFF ( EndDate, CustomerTable[CustomerCheckoutDate], DAY ) ) * -1
)
< 31
)
)
)
Hello Stachu. Thanks for your reply. Below is some sample data. I have a calendar table that is connected to the table below on the Transaction Date.
Ultimately I would want age groups for every 30 days up to 180 and then 180+. But I figured if I could get 0-30 figured out then I could take it from there to do the other buckets.
| Account # | Item # | Transaction Date | Transaction Amount | CustomerCheckoutDate |
| 1 | 532555 | 3/14/2018 | $ 4,214.00 | 4/4/2018 |
| 1 | 134134 | 3/21/2018 | $ 1,354.00 | 4/4/2018 |
| 1 | 413443 | 2/6/2018 | $ 1,661.00 | 4/4/2018 |
| 1 | 412141 | 4/5/2018 | $ 1,838.00 | 4/4/2018 |
| 2 | 585811 | 2/13/2018 | $ 2,065.00 | 2/22/2018 |
| 2 | 147547 | 2/24/2018 | $ 4,238.00 | 2/22/2018 |
| 2 | 454787 | 2/9/2018 | $ 3,698.00 | 2/22/2018 |
hmm, can you try this?
LessThan31 =
VAR DaysOverdue =
ADDCOLUMNS (
Transactions,
"DaysOverdue", Transactions[CustomerCheckoutDate] - Transactions[Transaction Date]
)
VAR LessThan31 =
FILTER ( DaysOverdue, [DaysOverdue] < 31 )
RETURN
CALCULATE ( SUM ( Transactions[Transaction Amount] ), LessThan31 )I wasn't clear whether you need to calculate the days on row level (current syntax) or grouped per Account/Account&Item, if grouping is possible then Summarize could replace whole Transactions table
Also the problem becones very easy once you add calculated column for
Transactions[CustomerCheckoutDate] - Transactions[Transaction Date]
the question is whether it makes sense from aggregation angle
- robarivas8 years agoPost Patron
Unfortunately that did not work. But luckily I stumbled on a formula that works. Here it is in case anyone is interested. I'd be happy to hear any suggestions as to improvements to this formula if any exist.
Total AR 0-30 =
VAR EndDate =
MAX ( 'Calendar'[Date] )
RETURN
IF (
MIN ( 'Calendar'[Date] )
<= CALCULATE ( MAX ('TransactionsTable'[PostingDate]), ALL ('TransactionsTable') ),
CALCULATE (
SUM ( 'TransactionsTable'[TransactionAmount] ),
FILTER ( ALL ( 'Calendar'[Date] ), 'Calendar'[Date] <= EndDate ),
KEEPFILTERS (
IFERROR (
DATEDIFF ( CustomerTable[CustomerCheckoutDate], EndDate, DAY ),
( DATEDIFF ( EndDate, CustomerTable[CustomerCheckoutDate], DAY ) ) * -1
)
< 31
)
)
)- v-huizhn-msft8 years agoMicrosoft Employee
Hi robarivas,
Congratulations, please mark your reply as answer, so more people will benefit from here.
Thanks,
Angelia