Auto submit and Confirm purchase order in batch through code in X++ in D365F&O.
Hi Viewers,
Here is the code used for create new return order, auto submit workflow if any and confirm PO in batch.
public void createAndConfirmReturnOrder(str _workOrderId)
{
PurchTable purchTable, returnPurchTable;
VersioningPurchaseOrder versioningPO;
purchTable = PurchTable::find(_workOrderId);
ttsbegin;
returnPurchTable.initValue(PurchaseType::ReturnItem);
returnPurchTable.initFromPurchTable(purchTable);
returnPurchTable.OrderAccount = purchTable.OrderAccount;
returnPurchTable.initFromVendTable();
returnPurchTable.initFromVendTableMandatoryFields();
returnPurchTable.ReturnItemNum = _workOrderId;
returnPurchTable.DefaultDimension = purchTable.DefaultDimension;
returnPurchTable.PurchId = NumberSeq::newGetNum(PurchParameters::numRefPurchId()).num();
if (returnPurchTable.validateWrite())
{
returnPurchTable.insert();
}
this.processReturnPurchLine(returnPurchTable, _workOrderId);
ttscommit;
ttsbegin;
// If Change Requests are required, submit the request.
if (returnPurchTable.ChangeRequestRequired)
{
versioningPO = VersioningPurchaseOrder::newPurchaseOrder(returnPurchTable);
versioningPO.submitChangeRequest();
versioningPO.approveChangeRequest(); // auto approve change
}
ttscommit;
this.purchaseOrderConfirm(returnPurchTable.PurchId);
}
public void purchaseOrderConfirm(PurchId _purchId)
{
PurchFormLetter purchFormLetter;
PurchFormletterParmData purchFormLetterParmData;
PurchParmUpdate purchParmUpdate;
PurchParmTable purchParmTable;
PurchTable purchTable;
purchTable = PurchTable::find(_purchId);
ttsBegin;
purchFormLetterParmData = PurchFormletterParmData::newData(DocumentStatus::PurchaseOrder,
VersioningUpdateType::Initial);
purchFormLetterParmData.parmOnlyCreateParmUpdate(true);
purchFormLetterParmData.createData(false);
purchParmUpdate = purchFormLetterParmData.parmParmUpdate();
purchParmTable.clear();
purchParmTable.TransDate = DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone());
purchParmTable.DocumentDate = DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone());
purchParmTable.Ordering = DocumentStatus::PurchaseOrder;
purchParmTable.ParmJobStatus = ParmJobStatus::Waiting;
purchParmTable.initFromPurchTable(purchTable);
purchParmTable.ParmId = purchParmUpdate.ParmId;
purchParmTable.insert();
purchFormLetter = PurchFormLetter::construct(DocumentStatus::PurchaseOrder);
purchFormLetter.transDate(DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone()));
purchFormLetter.proforma(false);
purchFormLetter.specQty(PurchUpdate::All);
purchFormLetter.purchTable(purchTable);
purchFormLetter.parmInBatch(true);
purchFormLetter.parmParmTableNum(purchParmTable.ParmId);
purchFormLetter.parmId(purchParmTable.ParmId);
purchFormLetter.purchParmUpdate(purchFormLetterParmData.parmParmUpdate());
purchFormLetter.batchInfo().parmBatchExecute(NoYes::Yes);
purchFormLetter.batchInfo().doBatch();
ttsCommit;
}
Comments
Post a Comment