
I want to create sales invoice based on multiple records of packing slips (custPackingSlipJour) for a single sales order. I found the code to create through single record of custPackingSlipJour. What changes can be done to create single invoice for multiple records.
public CustInvoiceJour postInvoice()
{
TmpFrmVirtual tmpFrmVirtual;
tmpFrmVirtual.TableNum = custPackingSlipJour.TableId;
tmpFrmVirtual.RecordNo = custPackingSlipJour.RecId;
tmpFrmVirtual.insert();
List packingSlipList = new List(Types::Record);
packingSlipList.addEnd(tmpFrmVirtual);
SalesFormLetter salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice);
SalesTable salesTable = custPackingSlipJour.salesTable();
salesFormLetter.salesTable (salesTable);
salesFormLetter.transDate (salesParmTable.TransDate);
salesFormLetter.specQty (SalesUpdate::PackingSlip);
salesFormLetter.proforma (NoYes::No);
SalesParmUpdate salesParmUpdate = salesFormLetter.salesParmUpdate();
salesFormLetter.initParameters(salesParmUpdate, Printout::Current);
salesFormLetter.chooseLines(true);
salesFormLetter.selectFromJournal(packingSlipList.pack());
salesFormLetter.run();
return salesFormLetter.parmJournalRecord();
}
Try somethig similar to this code. You need to loop in all packing slips and then add to list
while select packingslipjour
where packingslipjour.packingslipid == "XYZ"
{
tmpFrmVirtual.clear();
tmpFrmVirtual.TableNum = packingslipjour.TableId;
tmpFrmVirtual.RecordNo = packingslipjour.RecId;
tmpFrmVirtual.NoYes = NoYes::Yes;
tmpFrmVirtual.Id = packingslipjour.PurchId;
tmpFrmVirtual.insert();
}
while select tmpFrmVirtual
{
packingSlipList.addEnd(tmpFrmVirtual);
}