Post PurchaseReceipts:
try
{
DataAreaId dataAreaId = this.getPurchTableCrosscompany(_request.parmPurchaseOrderNumber()).DataAreaId;
changecompany(dataAreaId)
{
select firstonly purchTable
where purchTable.PurchId == purchId
&& purchTable.DataAreaId == dataAreaId;
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 = _request.parmProductReceiptDate();
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();
List parmReceiptLines = _request.parmReceiptLines();
ListIterator listIterator = new ListIterator(parmReceiptLines);
while(listIterator.more())
{
BTC_PurchaseReceiptsRequestLineContract linesContract;
linesContract = listIterator.value();
PurchLine purchLineLoc;
EcoResCategory ecoResCategory;
InventDim inventDim;
if (linesContract.parmFESLineNumber())
{
select firstonly purchLineLoc
where purchLineLoc.PurchId == _request.parmPurchaseOrderNumber()
&& purchLineLoc.LineNumber == linesContract.parmFESLineNumber()
exists join inventDim
where inventDim.inventDimId == purchLineLoc.InventDimId;
}
if (purchLineLoc.RecId)
{
purchParmLine.InitFromPurchLine(purchLineLoc);
purchParmLine.ReceiveNow = linesContract.parmReceiptQty();
purchParmLine.ParmId = purchParmTable.ParmId;
purchParmLine.TableRefId = purchParmTable.TableRefId;
purchParmLine.setQty(DocumentStatus::PackingSlip, false, true);
purchParmLine.setLineAmount();
purchParmLine.insert();
}
listIterator.next();
}
purchFormLetter = PurchFormLetter::construct(DocumentStatus::PackingSlip);
purchFormLetter.transDate(_request.parmProductReceiptDate());
purchFormLetter.proforma(false);
purchFormLetter.specQty(PurchUpdate::All);
purchFormLetter.purchTable(purchTable);
purchFormLetter.parmParmTableNum(purchParmTable.ParmId);
purchFormLetter.parmId(purchParmTable.ParmId);
purchFormLetter.purchParmUpdate(purchFormLetterParmData.parmParmUpdate());
purchFormLetter.run();
ttsCommit;
response.parmProductReceiptNumber(purchParmTable.Num);
response.parmStatus(enum2Value(PurchTable::find(_request.parmPurchaseOrderNumber()).PurchStatus));
response.parmMessageDetails(strFmt("@Steamships:BTC_POReceipt001", purchParmTable.Num));
}
}
catch
{
SysInfologEnumerator infologEnum;
SysInfologMessageStruct infomessageStruct;
infologEnum = SysInfologEnumerator::newData(infolog.infologData());
while(infologEnum.moveNext())
{
infomessageStruct = SysInfologMessageStruct::construct(infologEnum.currentMessage());
responceMessage += infomessageStruct.message() + BTC_PurchaseReceiptsAPIConstants::empty;
}
response.parmError(responceMessage);
}