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