2016-05-16 7 views
1

請求書&のカスタマイズがあります。リリースアクションがアクティブになったときにカスタムコード(Webサービスコール)を実行するメモ画面。これはうまくいきます - 私はPXActionコードを置き換える方法を知っていてそこから進めました。ここでは、リリースARドキュメント処理画面を使用して同じことをしたいのですが、どこで上書きするのか、どこにコードを配置するのかを理解できません。Release AR Documents画面のRelease/Release Allボタンからコードを実行するには

ソースコード内にSetProcessDelegateを持つARDocumentReleaseグラフのコンストラクタがありますが、どのように進むべきかわかりません - これは見た目が必要かどうかです。コード内でRefNbrを使用して、リリースされる各行のコードを実行する必要があります。

答えて

0

は、私はそれが

public static void ReleaseDoc(List<ARRegister> list, bool isMassProcess, List<Batch> externalPostList, ARMassProcessDelegate onsuccess) 

にbusinesssロジックをARDocumentRelease機能だと思います。

+1

が。私は、T300のトレーニングでAlexanderが記述したアプローチに従うことを強くお勧めします。 – Gabriel

+0

私は、基本的なコンストラクタ呼び出しをオーバーライドし、静的なreleaseDocメソッド( 'conditionalReleaseDoc(...)'を呼び出す)を書き直し、mainメソッドに条件付きロジックを置くサンプルを実際に見つけました。これは期待どおりに動作します。 – pmfith

0

静的メソッドなので、オーバーライドできません。また、グラフを処理中で、自分でリリースボタンを上書きすることができないため、T300のようにすることはできません。私は、処理された各AR文書のコールバックを渡すことでそれを達成することができました。

ARDocumentReleaseグラフのInitializeメソッドを呼び出して、あなたが言ったようなロジックを無効にすることができます。コールバックパラメータを使用するReleaseDocを呼び出すだけで、デフォルトのコールバックパラメータを使用する必要があります。

ここで私は付属のコードです:あなたは、グラフの拡張機能を使用して、静的な関数をオーバーライドすることはできません

public class ARDocumentRelease_Extension : PXGraphExtension<ARDocumentRelease> 
{ 
    public override void Initialize() 
    { 
     ARSetup setup = Base.arsetup.Current; 

     Base.ARDocumentList.SetProcessDelegate(
      delegate (List<BalancedARDocument> list) 
      { 
       List<ARRegister> newlist = new List<ARRegister>(list.Count); 
       foreach (BalancedARDocument doc in list) 
       { 
        newlist.Add(doc); 
       } 
       AddAdditionalLogicToRelease(newlist); 
      } 
     ); 
     Base.ARDocumentList.SetProcessCaption("Release"); 
     Base.ARDocumentList.SetProcessAllCaption("Release All"); 
    } 

    public delegate void PostPorcessing(ARRegister ardoc, bool isAborted); 


    private void AddAdditionalLogicToRelease(List<ARRegister> newlist) 
    { 
     ARDocumentRelease.ReleaseDoc(newlist, true, null, delegate(ARRegister ardoc, bool isAborted) { 
      //Add your logic to handle each document 
      //Test to check if it was not aborted 
     }); 
    } 
} 
関連する問題