Partial sales order through code in Dynamics ax 2012 R2


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 R2 
I 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