2016-09-29 6 views
0

packingSlipをコードで更新した後で注文を閉じるには?コードを使用してpackingSlipを更新した後で注文を閉じる方法

私はpurchaseLine.receivedNowで各purchaseLineで異なる数量を持つことができます。配送されるアイテムの数にかかわらず、梱包伝票を投稿して購入注文を閉じる必要があります。

私は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

アレックスに感謝します。私は変更を見るために購入テーブルをリフレッシュしなければならなかったので、最初はうまくいきませんでした。 – AlexanderTh

関連する問題