2017-05-17 6 views
0

領収書がリリースされたときにコードを実行したい。私のコードは動作しましたが、数日後には動作しなくなりました。これを突然止めさせるために何もしなかった。次のように私が持っているコードは次のとおりです。領収書がリリースされているかどうかの確認

public class INReceiptEntry_Extension : PXGraphExtension<INReceiptEntry> 
{ 
    ... 
    protected void INRegister_RowPersisted(PXCache cache, PXRowPersistedEventArgs e) 
    { 
     INRegister reg = (INRegister)e.Row;   
     if (reg != null) 
     { 
      if (e.TranStatus == PXTranStatus.Completed) 
      { 
       if (reg.Released == true) 
       { 
        //Code 
       } 
      } 
     } 
    } 
} 

は、私が行方不明です何かこのコードは一日働いたが、もはや次に取り組んでいる、何らかの理由はありますか?

+0

あなたの含まれているコードはどのグラフに表示されますか? INocumentRelease、INReleaseProcess、またはINReceiptEntry?解放されたセットは、データエントリグラフではなく、処理グラフの1つで発生する可能性があります。どのグラフが解像度を見つけるのに役立つかを含む。 – Brendan

+0

public class INReceiptEntry_Extension:PXGraphExtension これはあなたが求めていたものですか? –

答えて

2

あなたの問題は、あなたがコードをINDocumentReleaseに移動する必要があると思います。これは、すべての在庫トランザクションを処理し、解放されたフィールドを完了するとtrueに設定するグラフであるためです。

INRegisterのRowUpdatedフィールドまたはReleasedフィールドのINReleasePRocessグラフ拡張にコードを追加するこの方法でも、バッチを処理するトランザクション内にコードをラップする必要があります。このグラフはすべての在庫取引を処理するため、領収書を確認するのを忘れないでください。

INReleasePRocess.ReleaseDocProcの最後に表示されているソースを見ると、Releasedフィールドが設定され、docが更新され、トランザクションが完了します。

+0

私のコードが以前にどのように動作していたのか、今は理解できません。トランザクションが完了したことを確認するためにプログラムを作成し、そのビューの更新済みデータベースエントリを取得して、.Released = trueに設定する必要があります。それが数日間働いた理由は分かりましたが、もはやそれはありませんか?スクリーンやコードで何も変更されていません。 –

+0

リリースページでリリースが完了した後でデータを更新している場合、正しい値を取得することは可能ですが、以前はどのように機能していたかは分かりません。 – Brendan

+0

よろしくお願いします。私はそれが過去に数回起こったことも知っています。あなたのソリューションは私にとって意味があります。私はそれを実装しようとします。 –

関連する問題