2016-09-29 52 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