Vendor Settlement in d365fo x++

Vendor Settlement in d365fo x++

Code:

private boolean vendorSettlement(VendAccount  _vendAccount,LedgerJournalTrans  ledgerJournalTrans)
    {
        boolean ret = true;
        custvendopentransmanager            manager;
        VendTransOpen                       vendTransOpen;
        VendTrans                           vendTrans;
        ExchangeRateHelper                  exchangeRateHelper;
        AmountCur                           totalSettlement;

        //To mark particular invoice based on Acc num
        while select forUpdate vendTransOpen where vendTransOpen.AccountNum == _vendAccount
            join vendTrans where vendTrans.RecId == vendTransOpen.RefRecId
                && vendTrans.AccountNum == vendTransOpen.AccountNum
        {
            if(vendtransopen)
            {
                //To check transaction line which we want to settle
                manager = custvendopentransmanager::construct(ledgerJournalTrans);
                manager.updateTransMarked(vendTransOpen,true);
            }     
        }
        exchangeRateHelper = ExchangeRateHelper::newCurrency(Ledger::primaryLedger(CompanyInfo::findDataArea(ledgerJournalTrans.Company).RecId),ledgerJournalTrans.CurrencyCode);
        totalSettlement    = SpecTransManager::getTotalSettleAmountForSpecReference(
                                ledgerJournalTrans.Company,
                                ledgerJournalTrans.TableId,
                                ledgerJournalTrans.RecId,
                                ledgerJournalTrans.CurrencyCode,
                                ledgerJournalTrans.Company,
                                ledgerJournalTrans.TransDate,
                                exchangeRateHelper.prepareExchangeRateForStorage(ledgerJournalTrans.crossrate()));
        //To update in ledgerJournal trans
        ttsBegin;
        ledgerJournalTrans.selectForUpdate(true);
        ledgerJournalTrans.AmountCurDebit   = abs(totalSettlement);
        ledgerJournalTrans.SettleVoucher    = SettlementType::SelectedTransact;
        ledgerJournalTrans.update();
        ttsCommit;

        return ret;
    }

Comments