Create and post product receipts of purchase orders in X++.
The purchase order is created, lines added and the Approval status is “Confirmed”.
static void makPurchPackingSlipPost(Args _args) { PurchFormLetter purchFormLetter; PurchFormletterParmData purchFormLetterParmData; PurchParmUpdate purchParmUpdate; PurchParmTable purchParmTable; PurchParmLine purchParmLine; PurchTable purchTable; PurchLine purchLine; PurchId purchId; Num packingSlipId; purchId = "00001"; packingSlipId = "PACK-0001"; purchTable = PurchTable::find(purchId); ttsBegin; // Create PurchParamUpdate table purchFormLetterParmData = PurchFormletterParmData::newData( DocumentStatus::PackingSlip, VersioningUpdateType::Initial); purchFormLetterParmData.parmOnlyCreateParmUpdate(true); purchFormLetterParmData.createData(false); purchParmUpdate = purchFormLetterParmData.parmParmUpdate(); // Set PurchParmTable table purchParmTable.clear(); purchParmTable.TransDate = SystemDateGet(); purchParmTable.Ordering = DocumentStatus::PackingSlip; purchParmTable.ParmJobStatus = ParmJobStatus::Waiting; purchParmTable.Num = packingSlipId; purchParmTable.PurchId = purchTable.PurchId; purchParmTable.PurchName = purchTable.PurchName; purchParmTable.DeliveryName = purchTable.DeliveryName; purchParmTable.DeliveryPostalAddress = purchTable.DeliveryPostalAddress; purchParmTable.OrderAccount = purchTable.OrderAccount; purchParmTable.CurrencyCode = purchTable.CurrencyCode; purchParmTable.InvoiceAccount = purchTable.InvoiceAccount; purchParmTable.ParmId = purchParmUpdate.ParmId; purchParmTable.insert(); // Set PurchParmLine table while select purchLine where purchLine.PurchId == purchTable.purchId { purchParmLine.InitFromPurchLine(purchLine); purchParmLine.ReceiveNow = PurchLine.PurchQty; purchParmLine.ParmId = purchParmTable.ParmId; purchParmLine.TableRefId = purchParmTable.TableRefId; purchParmLine.setQty(DocumentStatus::PackingSlip, false, true); purchParmLine.setLineAmount(); purchParmLine.insert(); } purchFormLetter = PurchFormLetter::construct(DocumentStatus::PackingSlip); purchFormLetter.transDate(systemDateGet()); purchFormLetter.proforma(false); purchFormLetter.specQty(PurchUpdate::All); purchFormLetter.purchTable(purchTable); // This is the ID we hard code as the product receipt ID, if we do the posting via UI // user would have the option to manually enter this value purchFormLetter.parmParmTableNum(purchParmTable.ParmId); purchFormLetter.parmId(purchParmTable.ParmId); purchFormLetter.purchParmUpdate(purchFormLetterParmData.parmParmUpdate()); purchFormLetter.run(); ttsCommit; }