2010-12-01 3 views
0

eConnectを使用してGP10の請求書を変更するプログラムを作成しています。請求書の中には、さまざまな(この質問では重要ではない)プロセスのため合計が正しく加算されないため、配布をリセットする必要があります。これはこのプログラムによって達成されます。さらに、このプログラムを使用して、請求書のほとんどが別のバッチに移動されます(あなたがGPに精通していない場合はバケツを考える)。単一のストアドプロシージャを使用するeConnectメソッドのリファクタリング

これらのタスクは、両方ともeConnectを介して同じタイプのファイルを処理することで実現します。これは、そのファイルを処理する方法である:

public bool PersistAllChangesInDynamics() 
    { 
     //instantiate the proper eConnect object for updating the invoice. 
     eConnectType eConnect = new eConnectType(); 
     SOPTransactionType transType = new SOPTransactionType(); 
     transType.taSopHdrIvcInsert = this.ConvertToSopHdrIvcInsertXml(); 
     //Adjust fields to reset distributions. 
     transType.taSopHdrIvcInsert.UpdateExisting = 1; 
     transType.taSopHdrIvcInsert.CREATEDIST = 1; 

     SOPTransactionType[] updateInvTypeArray = { transType }; 
     eConnect.SOPTransactionType = updateInvTypeArray; 

     //serialize and process the document. 
     XmlDocument eConnectDoc = eConnectHelper.SerializeEConnectDoc(eConnect); 
     return eConnectHelper.ProcessEConnectDoc(eConnectDoc); 
    } 

私の質問は、コードのこのビットを中心に展開:

transType.taSopHdrIvcInsert.UpdateExisting = 1; //updates the batch changes 
    transType.taSopHdrIvcInsert.CREATEDIST = 1; //re-creates the distributions 

taSopHdrIvcInsertは、請求書への変更を永続化するためにeコネクトが提供するオブジェクトです。私が知っている限り、ディストリビューションのみを再作成するオブジェクトはありません。ドキュメントを処理するたびに、eConnectはDynamics dbの同様の名前付きストアドプロシージャを呼び出して、これらの変更を正しく保存します。 UpdateExistingとCREATEDISTは、オプションののSPです。

場合によっては、バッチ(または請求書の他の部分)を更新するか、またはディストリビューションのみを再作成する必要がありますが、それ以外の場合は両方を行う必要があります。ディストリビューションを再作成しても望ましくない変更は発生しません。常に、すべての請求書に対して正しいディストリビューションを作成したいと考えています。一度に1つのことを行うことの間に時間を節約するためのテストは行っていません。オブジェクトはサーバー側でSPを呼び出しているため、時間が大幅に異なる場所はわかりません。

これを2つの異なる方法に再因子付けして、それぞれの目的の機能を分離しておく理由はありますか?

答えて

1

あなたがやっているのは、1つまたは2つのフィールドを更新していて、それが何かGPの方法で取得されないことがわかっている場合は、SQLを使用してフィールドを更新するだけです。 eConnectを呼び出すメソッドが多数あり、変更する必要があるフィールドのeConnectパラメータがないため、eConnectが終了した後にオブジェクトを直接更新します。

関連する問題