Vendor Undo Settlement using X++:
final class RunnableClass
{
public static void main(Args _args)
{
VendTrans vendTRANS;
VendSettlement vendSettlement;
DialogField dialogField1;
Dialog dialog = new Dialog();
dialog.caption('Voucher');
dialogField1 = dialog.addField(ExtendedTypeStr(Name));
dialog.run();
if (dialog.closedOk())
{
select firstonly * from vendTRANS
where vendTRANS.Voucher == dialogField1.value();
// && findCustTRANS.TransType == LedgerTransType::Payment;
// vendTRANS.AmountMST <= 0 &&
////vendTRANS.TransType == LedgerTransType::Vend &&
// vendTRANS.TransType != LedgerTransType::Settlement &&
//!vendTRANS.closed
if (vendTRANS)
{
ttsbegin;
VendTable VendTable = VendTable::find(vendTRANS.AccountNum);
SpecTransManager specTransManager = SpecTransManager::newRefTableId(VendTable, tableNum(VendSettlement), true);
boolean isFound = false;
while select forupdate vendSettlement
where vendSettlement.TransCompany == vendTRANS.DataAreaId
&& vendSettlement.TransRecId == vendTRANS.RecId
&& vendSettlement.AccountNum == vendTRANS.AccountNum
&& vendSettlement.CanBeReversed == NoYes::Yes
{
vendSettlement.reread();
vendSettlement.CustVendSettlement::markThisAndRelatedOffsets(specTransManager, vendTRANS.CurrencyCode);
isFound = true;
}
if (isFound && VendTrans::reverseTransact(VendTable, null, SettleDatePrinc::DateOfPayment, vendSettlement.TransDate))
{
specTransManager.deleteAll();
}
ttscommit;
}
}
}
}
No comments:
Post a Comment