Forum Discussion

hmeegada's avatar
hmeegada
Frequent Visitor
7 years ago
Solved

eliminating reverse invoice data

Hi,

 

I have a database which records invoice level details. 

Initial invoice has a prefix of suffix of "A", If for some reason customer has entered wrong details, he then rasies a reverse invoice with a suffix of "B" which has an negative invoice amount of "A", which in effect will nullify the initial invoice.

 

Then the customer rasies another invoice with a suffix of "C".

 

I do not want to consider all invoices, I want to filter out ,

 

1. A invoices if there is no B invoice

2. C invocies whenever there is A and B.

 

Initial list

SLInvoice 
1123456A
2234567A
3123456B
4123123A
5123456C

 

 

Expected result 

 

1123456C
2234567A
4123123A

 

Thanks in advance.

  • Hi hmeegada ,

     

    There are two solutions based on DAX. Please download the demo from the attachment. 

    Solution 2 which doesn't need an additional column is like below.

    Measure 2 =
    VAR currentInvoiceNum =
        LEFT ( MIN ( Table1[Invoice] ), LEN ( MIN ( Table1[Invoice] ) ) - 1 )
    VAR maxInvoice =
        CALCULATE (
            MAX ( Table1[Invoice] ),
            FILTER (
                ALL ( Table1 ),
                LEFT ( Table1[Invoice], LEN ( MIN ( Table1[Invoice] ) ) - 1 ) = currentInvoiceNum
            )
        )
    RETURN
        IF ( MIN ( Table1[Invoice] ) = maxInvoice, 1, BLANK () )
    

    eliminating-reverse-invoice-data

     

     

    Best Regards,

2 Replies

  • v-jiascu-msft's avatar
    v-jiascu-msft
    Microsoft Employee

    Hi hmeegada ,

     

    There are two solutions based on DAX. Please download the demo from the attachment. 

    Solution 2 which doesn't need an additional column is like below.

    Measure 2 =
    VAR currentInvoiceNum =
        LEFT ( MIN ( Table1[Invoice] ), LEN ( MIN ( Table1[Invoice] ) ) - 1 )
    VAR maxInvoice =
        CALCULATE (
            MAX ( Table1[Invoice] ),
            FILTER (
                ALL ( Table1 ),
                LEFT ( Table1[Invoice], LEN ( MIN ( Table1[Invoice] ) ) - 1 ) = currentInvoiceNum
            )
        )
    RETURN
        IF ( MIN ( Table1[Invoice] ) = maxInvoice, 1, BLANK () )
    

    eliminating-reverse-invoice-data

     

     

    Best Regards,