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
Post a Comment