static void theAxapta_AutosettlePayment( AccountNum custAccount, str invoiceNum)
{
CustTable custTable;
CustTrans invCustTrans, payCustTrans;
SpecTransManager manager;
CustVendTransData custVendTransData;
;
custTable = CustTable::find("Cust-0000002");
// Find the oldest unsettled invoice
select firstonly invCustTrans
// order by TransDate asc
where invCustTrans.AccountNum == custTable.AccountNum &&
invCustTrans.TransType == LedgerTransType::Sales &&
invCustTrans.Invoice == "Inv21000029528" &&
!invCustTrans.closed;
// Find the oldest unsettled payment
select firstonly payCustTrans
// order by TransDate asc
where payCustTrans.AccountNum == custTable.AccountNum &&
payCustTrans.TransType == LedgerTransType::Payment &&
payCustTrans.Invoice =="Inv21000029528" ;
// && !payCustTrans.closed;
ttsbegin;
// Create an object of the CustVendTransData class with the invoice transaction as parameter
custVendTransData = CustVendTransData::construct(invCustTrans);
// Mark it for settlement
custVendTransData.markForSettlement(CustTable);
// Create an object of the CustVendTransData class with the payment transaction as parameter
custVendTransData = CustVendTransData::construct(payCustTrans);
//mark it for settlement
custVendTransData.markForSettlement(CustTable);
ttscommit;
// Settle all marked transactions
if(CustTrans::settleTransact(custTable, null, true,
SettleDatePrinc::DateOfPayment, systemdateget()))
info("Transactions settled");
}