I am facing an issue when i do the product receipt with below code.
private TESTPOReceiptResponseContract createProductReceipt(ENGIEPOReceiptRequestContract _requestContract)
{
PurchFormLetter purchFormLetter;
PurchParmTable purchParmTable;
PurchParmLine purchParmLine;
PurchFormletterParmData purchFormLetterParmData;
ENGIEOrderLineRequestContract orderLineContract = _requestContract.parmOrderLineContract();
PurchTable purchTable = PurchTable::find(orderLineContract.parmPurchaseOrderId());
PurchLine purchLine = PurchLine::find(purchTable.PurchId, orderLineContract.parmLineNumber());
purchFormLetterParmData = PurchFormletterParmData::newData(DocumentStatus::PackingSlip,VersioningUpdateType::Initial);
purchFormLetterParmData.parmOnlyCreateParmUpdate(true);
purchFormLetterParmData.createData(false);
PurchParmUpdate purchParmUpdate = purchFormLetterParmData.parmParmUpdate();
purchParmTable.clear();
purchParmTable.TransDate = _requestContract.parmProducReceiptDate();
purchParmTable.Ordering = DocumentStatus::PackingSlip;
purchParmTable.ParmJobStatus = ParmJobStatus::Waiting;
purchParmTable.Num = _requestContract.parmCoupaId();
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;
PurchParmLine_Asset purchParmLine_Asset;
purchParmTable.insert();
purchParmLine.initFromPurchLine(purchLine);
purchParmLine.ReceiveNow = strScan(_requestContract.parmTransactionType(), "@SYS53072" , 1, strLen(_requestContract.parmTransactionType()))
? _requestContract.parmTotal()
: _requestContract.parmQuantity();
purchParmLine.ParmId = purchParmTable.ParmId;
purchParmLine.TableRefId = purchParmTable.TableRefId;
purchParmLine.setQty(DocumentStatus::PackingSlip, false, true);
purchParmLine.setLineAmount();
purchParmLine.insert();
if(purchLine.AssetId != '')
{
purchParmLine_Asset.initFromPurchParmLine(purchParmLine);
purchParmLine_Asset.initFromPurchLine(purchLine);
purchParmLine_Asset.insert();
}
purchFormLetter = PurchFormLetter::construct(DocumentStatus::PackingSlip);
purchFormLetter.transDate(_requestContract.parmProducReceiptDate());
purchFormLetter.proforma(false);
purchFormLetter.specQty(PurchUpdate::All);
purchFormLetter.purchTable(purchTable);
purchFormLetter.parmParmTableNum(purchParmTable.ParmId);
purchFormLetter.parmId(purchParmTable.ParmId);
purchFormLetter.purchParmUpdate(purchFormLetterParmData.parmParmUpdate());
purchFormLetter.run();
return this.getResponseContract("@ENG_Labels:ProductCeceiptCreated", true);
}
public void runRemainProjectUpdates(PurchFormLetter _purchFormLetter, ParmId _parmId)
{
FormletterOutputContract outputContract = _purchFormLetter.getOutputContract();
VendPackingSlipVersion localVendPackingSlipVersion;
VendPackingSlipJour localVendPackingSlipJour;
VendPackingSlipTrans localVendPackingSlipTrans;
PurchLine localPurchLine;
SalesLine localSalesLine;
SalesFormLetter salesFormLetter;
if (ProjParameters::find().AutomaticItemConsumption == NoYes::Yes )
{
select firstonly RecId, AccountingDate from localVendPackingSlipVersion
where localVendPackingSlipVersion.ParmId == _parmId
exists join localVendPackingSlipJour
where localVendPackingSlipVersion.VendPackingSlipJour == localVendPackingSlipJour.RecId
exists join localVendPackingSlipTrans
where localVendPackingSlipTrans.VendPackingSlipJour == localVendPackingSlipJour.RecId
exists join localPurchLine
where localPurchLine.InventTransId == localVendPackingSlipTrans.InventTransId &&
!localPurchLine.IsDeleted &&
localPurchLine.ItemRefType == InventRefType::Sales &&
localPurchLine.InventRefId &&
localPurchLine.InventRefTransId
exists join localSalesLine
where localSalesLine.InventTransId == localPurchLine.InventRefTransId &&
localSalesLine.ProjId &&
localSalesLine.SalesType == SalesType::ItemReq &&
(localSalesLine.SalesStatus == SalesStatus::None
|| localSalesLine.SalesStatus == SalesStatus::Backorder
|| (localSalesLine.SalesStatus == SalesStatus::Delivered
&& (localSalesLine.RemainInventPhysical != 0)));
if (localVendPackingSlipVersion.RecId)
{
salesFormLetter = SalesFormLetter::newFromPurchFormLetter_PackingSlip(SysOperationHelper::base64Encode(outputContract.parmJournalLinesPacked()),
DocumentStatus::ProjectPackingSlip);
if (localVendPackingSlipVersion.AccountingDate)
{
salesFormLetter.transDate(localVendPackingSlipVersion.AccountingDate);
}
salesFormLetter.prePromptInit();
salesFormLetter.runOperation();
}
}
}