while select PackingSlipRefNum from tmpFrmVirtual2
group by PackingSlipRefNum
{
purchFormLetterParmData = PurchFormletterParmData::newData(
DocumentStatus::Invoice,
VersioningUpdateType::Initial);
purchFormLetterParmData.parmOnlyCreateParmUpdate(true);
purchFormLetterParmData.createData(false); // geting error here
purchParmUpdate = purchFormLetterParmData.parmParmUpdate();
while select PackingSlipId, OrigPurchId from locVendPackingSlipTrans
group by PackingSlipId, OrigPurchId
where locVendPackingSlipTrans.PackingSlipId == tmpFrmVirtual2.PackingSlipRefNum
{
purchTable = PurchTable::find(locVendPackingSlipTrans.OrigPurchid);
select tmpFrmVirtual
where tmpFrmVirtual.SalesId == locVendPackingSlipTrans.OrigPurchid;
//Generate Pending Invoice Header
vendInvoiceInfoTable.clear();
vendInvoiceInfoTable.initValue();
vendInvoiceInfoTable.initFromPurchTable(purchTable);
vendInvoiceInfoTable.DocumentOrigin = DocumentOrigin::Manual;
vendInvoiceInfoTable.CurrencyCode = purchTable.CurrencyCode;
vendInvoiceInfoTable.DeliveryName = purchTable.DeliveryName;
vendInvoiceInfoTable.Num = tmpFrmVirtual.InvoiceRefNum;
vendInvoiceInfoTable.PurchName = purchTable.PurchName;
vendInvoiceInfoTable.VendInvoiceSaveStatus = VendInvoiceSaveStatus::Pending;
vendInvoiceInfoTable.DocumentDate = tmpFrmVirtual.DocumentDate;
vendInvoiceInfoTable.TransDate = tmpFrmVirtual.InvoiceDate;
vendInvoiceInfoTable.LastMatchVariance = LastMatchVarianceOptions::OK;
vendInvoiceInfoTable.ParmJobStatus = ParmJobStatus::Waiting;
vendInvoiceInfoTable.Approved = NoYes::Yes;
vendInvoiceInfoTable.Approver = DirPersonUser::currentWorker();
vendInvoiceInfoTable.DefaultDimension = vendInvoiceInfoTable.copyDimension(purchTable.DefaultDimension);
vendInvoiceInfoTable.defaultField(fieldNum(VendInvoiceInfoTable,RemittanceLocation),null,purchTable);
vendInvoiceInfoTable.defaultField(fieldNum(VendInvoiceInfoTable,FixedDueDate),null,purchTable);
vendInvoiceInfoTable.defaultField(fieldNum(VendInvoiceInfoTable,ExchRate),null,purchTable);
vendInvoiceInfoTable.defaultField(fieldNum(VendInvoiceInfoTable,TransDate),null,purchTable);
vendInvoiceInfoTable.defaultField(fieldNum(VendInvoiceInfoTable,PaymMode),null,purchTable);
vendInvoiceInfoTable.insert();
//Generate Vend Invoice Info reference
if(vendInvoiceInfoTable)
{
vendInvoiceInfoSubTable.clear();
vendInvoiceInfoSubTable.initValue();
vendInvoiceInfoSubTable.defaultRow();
vendInvoiceInfoSubTable.ParmId = vendInvoiceInfoTable.ParmId;
vendInvoiceInfoSubTable.OrigPurchId = vendInvoiceInfoTable.PurchId;
vendInvoiceInfoSubTable.PurchName = vendInvoiceInfoTable.PurchName;
vendInvoiceInfoSubTable.TableRefId = vendInvoiceInfoTable.TableRefId;
vendInvoiceInfoSubTable.insert();
}
//select all packing slip line
while select vendPackingSlipTrans
where vendPackingSlipTrans.OrigPurchid == locVendPackingSlipTrans.OrigPurchid
&& vendPackingSlipTrans.PackingSlipId == locVendPackingSlipTrans.PackingSlipId
{
//Generate Pending Invoice Line
purchLine = vendPackingSlipTrans.purchLine();
vendInvoiceInfoLine.clear();
vendInvoiceInfoLine.initValue();
vendInvoiceInfoLine.defaultRow(null,purchLine);
vendInvoiceInfoLine.initFromPurchLine(purchLine);
vendInvoiceInfoLine.DeliveryName = vendInvoiceInfoTable.DeliveryName;
vendInvoiceInfoLine.ParmId = vendInvoiceInfoTable.ParmId;
vendInvoiceInfoLine.TableRefId = vendInvoiceInfoTable.TableRefId;
vendInvoiceInfoLine.currencyCode = vendInvoiceInfoTable.CurrencyCode;
vendInvoiceInfoLine.LineNum = any2int(purchLine.LineNumber);
vendInvoiceInfoLine.InvoiceAccount = vendInvoiceInfoTable.InvoiceAccount;
vendInvoiceInfoLine.InventDimId = vendPackingSlipTrans.InventDimId;
vendInvoiceInfoLine.OrderAccount = vendInvoiceInfoTable.OrderAccount;
vendInvoiceInfoLine.ItemId = vendPackingSlipTrans.ItemId;
vendInvoiceInfoLine.InventTransId = vendPackingSlipTrans.InventTransId;
vendInvoiceInfoLine.DocumentOrigin = DocumentOrigin::Manual;
vendInvoiceInfoLine.ReceiveNow = vendPackingSlipTrans.Qty;
vendInvoiceInfoLine.RemainBefore = vendPackingSlipTrans.Qty;
vendInvoiceInfoLine.RemainBeforeInvent = vendPackingSlipTrans.Qty;
vendInvoiceInfoLine.PurchPrice = purchLine.PurchPrice;
vendInvoiceInfoLine.InventNow = vendPackingSlipTrans.Qty;
vendInvoiceInfoLine.LineAmount = (purchLine.LineAmount / purchLine.QtyOrdered) * vendPackingSlipTrans.Qty;
vendInvoiceInfoLine.DefaultDimension = purchLine.DefaultDimension;
vendInvoiceInfoLine.insert();
//Generate Vend Invoice Info reference from packing slip
if(vendInvoiceInfoLine.RecId)
{
vendInvoiceInfoSubLine.clear();
vendInvoiceInfoSubLine.initValue();
vendInvoiceInfoSubLine.defaultRow();
vendInvoiceInfoSubLine.ParmId = vendInvoiceInfoTable.ParmId;
vendInvoiceInfoSubLine.LineRefRecId = vendInvoiceInfoLine.RecId;
vendInvoiceInfoSubLine.ReceiveNow = vendPackingSlipTrans.Qty;
vendInvoiceInfoSubLine.InventNow = vendPackingSlipTrans.Qty;
vendInvoiceInfoSubLine.JournalRefRecId = vendPackingSlipTrans.RecId;
vendInvoiceInfoSubLine.JournalRefTableId = vendPackingSlipTrans.TableId;
vendInvoiceInfoSubLine.DocumentId = vendPackingSlipTrans.PackingSlipId;
vendInvoiceInfoSubLine.insert();
}
}
}
purchFormLetter = PurchFormLetter::construct(DocumentStatus::Invoice);
purchFormLetter.transDate(tmpFrmVirtual.TransDate);
purchFormLetter.documentDateDefault(tmpFrmVirtual.DocumentDate);
purchFormLetter.proforma(false);
purchFormLetter.specQty(PurchUpdate::All);
purchFormLetter.parmParmTableNum(purchParmTable.ParmId);
purchFormLetter.parmId(purchParmTable.ParmId);
purchFormLetter.purchParmUpdate(purchFormLetterParmData.parmParmUpdate());
purchFormLetter.sumBy(AccountOrder::Account);
purchFormLetter.reArrangeNow(true);
purchFormLetter.run();
}