Getting error while posting PO invoice using code

Hi all,

while posting purchase invoice for the received quantity through code, I’m getting following error.

List object not initialized.

Stack trace

(S)\Classes\PurchFormletterParmDataInvoice\fillOutputContract - line 5
(S)\Classes\formletterParmData\createData - line 59
(S)\Classes\PurchFormletterParmDataInvoice\createData - line 3

I want to pass my invoice reference number to this…

Any help…

Thanks

Please show us the code.

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();

}

I think, activeInvoiceList is not initialized.

It’s being done in the init() method. Try debugging.

Hi Jeevanandham,

Did you resolve this problem?

Thanks.