Settle customer transactions using the CustVendOpenTransManager X++ code
public boolean markInvoicesForSettlement(LedgerJournalTrans _journalTrans, PaymTransContract _contract)
{
CustTrans custTrans;
CustTransOpen custTransOpen;
boolean ret = true;
CustVendOpenTransManager settleManager = CustVendOpenTransManager::construct(_journalTrans);
SpecTransManager specTransManager = settleManager.parmSpecTransManager();
InvoiceId invoiceId = _journalTrans.ProArMerchantReference;
CustTable custTable = CustTable::find(_contract.parmAccountCode());
AmountCur settlementAmount;
custTrans = CustTrans::findFromInvoice(invoiceId, custTable.AccountNum);
custTransOpen = CustTransOpen::findRefId(custTrans.RecId);
if (custTransOpen.RecId != 0)
{
AmountCur unmarkedAmount = specTransManager.findUnmarkedAmountForRef(custTransOpen.AmountCur,
custTransOpen.company(),
custTransOpen.TableId,
custTransOpen.RecId);
if (!settleManager.checkTransFullyMarkedByOtherSpec(custTransOpen))
{
if (settlementAmount <= unmarkedAmount)
{
settleManager.updateTransMarked(custTransOpen, NoYes::Yes);
settleManager.updateSettleAmountPaymCur(custTransOpen, settlementAmount);
settleManager.settleMarkedTrans();
}
}
}