Search code examples
axaptadynamics-ax-2012dynamics-ax-2012-r3

Iteration over VendTransOpen


This happens in Accounts Payable -> Journals -> Payments -> Payment Journal.

I choose to see the Lines for a journal and from Functions I select Settlement. I am not sure if this is the same for everyone else.

So, when clicking Settlement, VendOpenTrans opens. I need to iterate over it, and Mark the records according to the invoice of the previously selected LedgerJournalTrans field.

First of all I have to check the VendOpenTrans fields which I am not able to accomplish.

I have added the following piece of code in the init of VendTransOpen:

VendTrans vt; 

vt = vendTransOpen_ds.getFirst(true) as VendTrans ;


while (vt)
{           
    //Do your thing
    vt= vendTransOpen_ds.getNext() as VendTrans ;
}

No elements seem to be present in the vendTransOpen_ds..

Can someone give me a hint about this?

Update 1:

Found this :

Understanding the Settlement Mechanism in Microsoft Dynamics AX

and

Automatic mark a Settlement Transactions on a Payment Journal in AX 2012

I didn't think it would be so damn difficult.. I will start digging tomorrow.


Solution

  • Several things are wrong, but probably my #2 is your main problem.

    1. If you place this code in the init method, the query hasn't been executed yet, so nothing will be there. See https://msdn.microsoft.com/en-us/library/aa608211.aspx

    2. Your code will never enter while (vt) because vt will never have a value as written because VendTrans and VendTransOpen are two different tables that don't support inheritance.

      The only reason vt = vendTransOpen_ds.getFirst(true) as VendTrans ; doesn't throw an error is because FormDataSource.getFirst()/getNext() returns a Common table record.

    3. What Jan said too.