如何通过X ++代码确认,选择销售订单,更新,打包并生成Dynamics AX 2012 R2中的销售订单的发票?

问题描述:

我使用下面的代码来确认销售订单,然后选择它。 为了确认如何通过X ++代码确认,选择销售订单,更新,打包并生成Dynamics AX 2012 R2中的销售订单的发票?

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

和采摘

公共无效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); 
} 

现在怎么收拾呢?并将其状态转换为“已交付”以及如何为其生成发票并将其状态更改为“已开票”?

+2

您的确认不发表确认码,但采摘列表('DocumentStatus :: PickingSlip'应该是'DocumentStatus :: Confirmation')。 –

+0

谢谢@ FH-Inway –

检查这个代码,并提供发票后:

//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");