class TestClass { public static void main(Args _args) { SalesFormLetter salesFormLetter; SalesTable salesTable; CustPackingSlipJour custPackingSlipJour; CustPackingSlipTrans custPackingSlipTrans; TmpFrmVirtual tmpFrmVirtual; List selectedList = new List(Types::Record); SalesFormLetter_Invoice salesFormLetter_Invoice; SalesFormLetter letter = SalesFormLetter::construct(DocumentStatus::Invoice); CustInvoiceTrans custInvoiceTrans,custinvoicetransupdate; SalesParmLine salesParmLine; SalesParmUpdate salesParmUpdate; SalesLine salesLineLocal; // SalesTable salestable; CustInvoiceJour custInvoiceJourNew,custinvoicejourupdate; ITCommercialInvoiceLine iTCommercialInvoiceLine,iTCommercialInvoiceLineloc,iTCommercialInvoiceLineCheck,iTCommercialInvoiceLineUpdate; //boolean ret = true; ITCommercialOverview iTCommercialOverview,iTCommercialOverviewupdate; tmpFrmVirtual.setTmp(); RecId recid = _args.record().RecId; // Add the desired packing slips into tmpFrmVirtual select iTCommercialOverview where iTCommercialOverview.RecId == recid; while select salesTable // group by SalesId where salesTable.SalesId == iTCommercialOverview.SalesId join custPackingSlipTrans // group by PackingSlipId //, DeliveryDate where custPackingSlipTrans.SalesId == iTCommercialOverview.SalesId && custPackingSlipTrans.CommercialInvoice == iTCommercialOverview.CommercialInvoice { select custPackingSlipJour where custPackingSlipJour.PackingSlipId == custPackingSlipTrans.PackingSlipId; // && custPackingSlipJour.DeliveryDate == custPackingSlipTrans.DeliveryDate; tmpFrmVirtual.clear(); tmpFrmVirtual.TableNum = custPackingSlipJour.TableId; tmpFrmVirtual.RecordNo = custPackingSlipJour.RecId; tmpFrmVirtual.NoYes = NoYes::Yes; tmpFrmVirtual.Id = custPackingSlipJour.SalesId; tmpFrmVirtual.insert(); } while select tmpFrmVirtual { selectedList.addEnd(tmpFrmVirtual); } // Construct form letter salesFormLetter = salesFormLetter::construct(DocumentStatus::Invoice); // Add the packing slips to the sales form letter salesFormLetter.selectFromJournal(selectedList.pack()); // Reorganize as desired salesFormLetter.sumBy(AccountOrder::Account); salesFormLetter.reArrangeNow(true); salesFormLetter.reArrange(); salesFormLetter.specQty(SalesUpdate::PackingSlip); // Execute salesFormLetter.run(); custInvoiceJourNew = salesFormLetter.parmJournalRecord(); while select forupdate custinvoicetransupdate where custinvoicetransupdate.SalesId == custInvoiceJourNew.SalesId && custinvoicetransupdate.InvoiceId == custInvoiceJourNew.InvoiceId { custinvoicetransupdate.CommercialInvoice = iTCommercialOverview.CommercialInvoice; custinvoicetransupdate.CommercialDate = iTCommercialOverview.InvoiceDate; custinvoicetransupdate.update(); } select forupdate custinvoicejourupdate where custinvoicejourupdate.InvoiceId == custInvoiceJourNew.InvoiceId; custinvoicejourupdate.CommercialInvoice = iTCommercialOverview.CommercialInvoice; custinvoicejourupdate.CommercialDate = iTCommercialOverview.InvoiceDate; custinvoicejourupdate.update(); select forupdate iTCommercialOverviewupdate where iTCommercialOverviewupdate.CommercialInvoice == iTCommercialOverview.CommercialInvoice; iTCommercialOverviewupdate.Status = ITCommercialInvoiceStatus::Invoiced; iTCommercialOverviewupdate.InvoiceNo = custInvoiceJourNew.InvoiceId; iTCommercialOverviewupdate.InvoiceDate1=custInvoiceJourNew.InvoiceDate; iTCommercialOverviewupdate.update(); info(strfmt("sales order- %1 posted with invoice Id %2",custInvoiceJourNew.SalesId, custInvoiceJourNew.InvoiceId )); while select forupdate iTCommercialInvoiceLineUpdate where iTCommercialInvoiceLineUpdate.CommercialInvoice ==iTCommercialOverview.CommercialInvoice { select custinvoicetransupdate where custinvoicetransupdate.SalesId == iTCommercialInvoiceLineUpdate.SalesId && custinvoicetransupdate.ItemId == iTCommercialInvoiceLineUpdate.ItemId && custinvoicetransupdate.InvoiceId == custInvoiceJourNew.InvoiceId; iTCommercialInvoiceLineUpdate.InvoicedQty = custinvoicetransupdate.Qty; iTCommercialInvoiceLineUpdate.update(); } ttscommit; FormDataSource fds; Object calleform; calleform = _args.caller(); fds = _args.record().datasource(); if(calleform) { fds.refresh(); fds.research(true); } } }
Hi All,
I am using this code to do invoice through packing slip.But i am not able to get value from
custInvoiceJourNew = salesFormLetter.parmJournalRecord();
Am i missing anything in code.Can anyone pls help me on this.
Thanks in advance
Hi PJ,
Do you mean to say that the custInvoiceJourNew value of this code custInvoiceJourNew = salesFormLetter.parmJournalRecord() is empty? Did you check the code example in this old thread?
community.dynamics.com/.../invoice-sales-order-while-doing-packing-slip-through-code-of-x
André Arnaud de Cal...
292,074
Super User 2025 Season 1
Martin Dráb
230,900
Most Valuable Professional
nmaenpaa
101,156