https://community.dynamics.com/ax/f/33/t/99590
I think it is easier to post invoice from packing slip, please, try this code and let me know if it works for you:
static void tutorialFacturarVentaAlbaranes(Args _args) { SalesFormLetter salesFormLetter; SalesTable salesTable; CustPackingSlipJour custPackingSlipJour; CustPackingSlipTrans custPackingSlipTrans; TmpFrmVirtual tmpFrmVirtual; List selectedList = new List(Types::Record); tmpFrmVirtual.setTmp(); // Add the desired packing slips into tmpFrmVirtual while select salesTable group by SalesId where salesTable.SalesId == "SOR0136098" join custPackingSlipTrans group by PackingSlipId, DeliveryDate where custPackingSlipTrans.OrigSalesId == salesTable.SalesId { select firstOnly RecId, TableId from 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(); }
http://axlearning.blogspot.in/2014/01/partial-sales-order-through-code-in.html
Partial sales order through code in Dynamics ax 2012 R2I had been searching the internet to find the code. But i couldnt, every code leads to full invoice or line by line invoice. so i did some exploring to come up with a below code it will invoice partial quantity I updated the partial sales invoice through code... SalesFormLetter salesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice); SalesTable salesTAble; SalesParmLine parmLine; ; salesTable = SalesTable::find('FUAE-000002'); salesFormLetter.salesTable(salesTAble); salesFormLetter.transDate (systemDateGet()); salesFormLetter.specQty (SalesUpdate::All); //If you want proforma you can enable the code //salesFormLetter.proforma (true); //salesFormLetter.printFormLetter (true); salesFormLetter.createParmUpdateFromParmUpdateRecord(salesFormLetter.s alesParmUpdate()); salesFormLetter.initParmSalesTable(salesTAble); salesFormLetter.initParameters(salesFormLetter.salesParmUpdate(),Printout::After); salesFormLetter.initLinesQuery(); while select forUpdate parmLine where parmLine.ParmId == salesFormLetter.parmId() { ttsBegin; parmLine.DeliverNow = 10; parmLine.setQty(parmLine.salesParmTable().ordering, salesFormLetter.SalesParmUpdate().creditRemaining); parmLine.setInventDeliverNow(); parmLine.setLineAmount(); parmLine.update(); ttsCommit; } salesFormLetter.run();
Comments
Post a Comment