2016-09-29 51 views
0

如何在使用代碼更新packingSlip後關閉採購訂單?如何使用代碼更新packingSlip後關閉採購訂單

我知道我可以在每個purchLine的purchLine.receivedNow中有不同的數量,我需要發佈裝箱單並關閉採購訂單,無論交付多少物品。

我想在AX 2009中通過x ++發佈packingSlip,它工作正常。 但是,我需要同時關閉採購訂單。

我基本上需要:

purchParmline.closed = true; 

就如何落實這一任何想法?我已經搜索並找到很多不同的方式來發布採購訂單,但沒有什麼能夠完全回答我的問題。

void postPackingSlip(purchId _purchId, num _packingSlipId) 
{ 
    PurchFormLetter  PurchFormLetter; 
    PurchTable   PurchTable; 
    ; 

    PurchTable = PurchTable::find(_purchId,true); 

    purchFormLetter = purchFormLetter::construct(DocumentStatus::PackingSlip); 
    PurchFormLetter.update(PurchTable, _packingSlipId , today(), PurchUpdate::ReceiveNow ,AccountOrder::None,NoYes::No,NoYes::No); 
} 

我也試圖做這種方式,但沒有成功

void postPackingSlipOld(purchId _purchId, num _packingSlipId) 
{ 
    PurchFormLetter   purchFormLetter; 
    PurchTable    purchTable; 
    purchparmtable   purchParmtable; 
    ParmId     parmId; 
    PurchLine    purchLine; 
    purchparmline   purchparmline;  
    ; 

     purchTable=PurchTable::find(_purchId); 
     purchFormLetter = PurchFormLetter::construct(DocumentStatus::PackingSlip); 
     purchFormLetter.createParmUpdate(); 
     purchParmtable = purchParmtable::find(_purchid, _packingSlipId); 
     purchFormLetter.createParmTable(purchParmTable,purchTable); 
     purchParmTable.Num = _packingSlipId; 
     purchParmTable.insert(); 
     while select purchLine 
      where purchLine.PurchId == purchTable.purchId 
     { 
      purchParmLine.ParmId = purchParmTable.ParmId; 
      purchParmLine.InitFromPurchLine(purchLine); 
      purchParmLine.ReceiveNow = PurchLine.PurchReceivedNow; 
      purchParmLine.TableRefId = purchParmTable.TableRefId ; 
      purchParmLine.closed = true; 

      purchParmLine.setQty(DocumentStatus::PackingSlip,false, true); 
      purchParmLine.setLineAmount(); 
      purchParmLine.insert(); 
     } 
     purchFormLetter.proforma  (false); 
     purchFormLetter.specQty  (PurchUpdate::ReceiveNow); 
     purchFormLetter.transDate  (today()); 
     purchFormLetter.run(); 
} 

回答

1

我對你的要求有點灰,但如果它是AX09,你想「關閉「PO。我認爲這與去PO線並做Functions>Deliver Remainder並選擇Cancel Quantity是一樣的。

如果這就是你想要什麼,我相信Cancel Quantity的邏輯就是:

PurchLine.RemainPurchPhysical = 0; 
PurchLine.RemainInventPhysical = 0; 
PurchLine.update(); 

而且update()需要改變狀態的護理。

+0

謝謝你的亞歷克斯。它一開始並不奏效,因爲我不得不刷新PurchTable來查看更改。 – AlexanderTh