AX 2012 – WHAT IS THE VENDOR BALANCE AND HOW WE CAN GET IT USING X++

D365fno-PostImage

What is the vendor balance in AX 2012, how we can get the vendor balance, opening balance, local balance amount  and  opening balance against the particular date using X++?

Vendor balance in AX 2012 refers to the amount owed to or by a vendor based on their transactions with in organization. It is the difference between the total amount of vendor invoices that have been posted and the total amount of payments that have been made to the vendor. In X++, you can get the vendor balance using the VendTable and VendTrans tables. Here’s an example code snippet to get the vendor balance for a specific vendor:

static void vendorBalance(Args _args)
{
    VendTable   vendTable;
    VendTrans   vendTrans;
    Amount      amountMST, amountMST1, localAmount, foreignAmount, openBalanceMST;
    TransDate   fromdate = mkDate(1,1,2022);
    

    vendTable = VendTable::find("<vendor account number>");
    {
        amountMST   =   0;
        while select * from vendTrans
        where vendTrans.AccountNum == vendTable.AccountNum
        && vendTrans.TransDate > fromdate
        {
            amountMST1 = vendTrans.AmountCur;//remainAmountCur();

            if (amountMST1 != 0)
            {
                if (vendTrans.CurrencyCode != vendTable.Currency)
                {
                    foreignAmount = Currency::curAmount2CurAmount(amountMST1, Ledger::accountingCurrency(), vendTable.Currency,vendTrans.TransDate);
                }
                else
                {
                    foreignAmount = amountMST1;
                }
                
                amountMST += foreignAmount;
            }
        }
        
        localAmount = Currency::curAmount2CurAmount(amountMST, Ledger::accountingCurrency(), vendTable.Currency,fromDate - 1);
        openBalanceMST = vendTable.openBalanceMST(dateNull(), fromDate, fromDate);
               
        info(strFmt("VendorAccount: %1",    vendTable.AccountNum));
        info(strFmt("VendorName: %1",       vendTable.name()));
        info(strFmt("VendorCurrency: %1",   vendTable.Currency));
        info(strFmt("LocalCurrencyAmt: %1", amountMST));
        info(strFmt("AmountMST: %1",        localAmount));
        info(strFmt("OpenBalanceMST: %1",   openBalanceMST));
    }
}
This site uses cookies to offer you a better browsing experience. By browsing this website, you agree to our use of cookies.