Junaid Tariq
Junaid Tariq

Reputation: 3

How to confirm, pick sales order, update, pack and generate invoice of a sales order in Dynamics AX 2012 R2 through X++ code?

I am using the below code for the confirmation of a sales order and then picking it. For confirming

public void confirmSO()
{
    salesTable = SalesTable::find(salesTable.SalesId);
    salesFormletter = SalesFormletter::construct(DocumentStatus::PickingSlip);
    salesFormletter.update(salesTable, systemDateGet(), SalesUpdate::All, AccountOrder::None,
    false, false);
}

and for picking

public void pickSlip()

{
    salesTable = salesTable::find(salesTable.SalesId);
    salesFormLetter = SalesFormLetter_PickingList::newPickingList();
    salesFormLetter.transDate(systemDateGet());
    salesFormLetter.update(salesTable,
                            systemdateget(),
                            SalesUpdate::All,
                            AccountOrder::None,
                            NoYes::No,
                            NoYes::No);
}

now how to pack it? and convert its status to "Delivered" and how to generate invoice for it and change its status to "Invoiced"?

Upvotes: 0

Views: 5365

Answers (1)

Jonathan Bravetti
Jonathan Bravetti

Reputation: 2238

Check this code to delivered and post invoice:

//Delivered Sales Order
ttsbegin;
//update Sales Line
salesLine = SalesLine::find(_salesId, _lineNum, true); 
salesLine.SalesDeliverNow   = -1;
salesLine.setInventDeliverNow();
salesLine.doUpdate();

//Post the delivery 
salesFormLetter = SalesFormLetter::construct(DocumentStatus::PackingSlip);
salesFormLetter.progressHide();                                // Hide the progress bar. 
salesFormLetter.update(salesTable,                             // SalesTable
                       SystemDateGet(),                        // Delivery date
                       SalesUpdate::DeliverNow,                // Quantity to update (SpecQty)
                       AccountOrder::None,                     // AccountOrder
                       false,                                  // Proforma only?
                       false);                                 // Printout?
ttscommit;

//Post the Sales Order Invoice
SalesFormLetter::construct(DocumentStatus::Invoice).update(SalesTable::find(_salesId));
info("Sales order posted");

Upvotes: 1

Related Questions