0

eConnect を使用して GP10 でいくつかの請求書を変更するプログラムを作成しています。一部の請求書では、他のさまざまな (この質問では重要ではありませんが) プロセスのために合計が正しく加算されないため、配分をリセットする必要があります。これは、このプログラムによって達成されます。さらに、このプログラムを使用して、ほとんどの請求書が別のバッチ (GP に慣れていない場合はバケットを考えてください) に移動されます。

これらのタスクはどちらも、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 は、請求書への変更を保持するために eConnect によって提供されるオブジェクトです。私の知る限り、ディストリビューションを再作成するだけのオブジェクトはありません。ドキュメントを処理するたびに、eConnect は Dynamics データベースで同様の名前のストアド プロシージャを呼び出して、それらの変更を正しく保存します。UpdateExisting と CREATEDIST は、その SP のオプションパラメータです。

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

これを 2 ~ 3 の異なる方法にリファクタリングして、必要な各機能を分離する理由があると思いますか?

4

1 に答える 1

1

フィールドを 1 つまたは 2 つ更新するだけで、それが GP の邪魔にならないことがわかっている場合は、SQL を介してフィールドを更新するだけです。変更する必要があるフィールドの eConnect パラメータがないため、eConnect を呼び出して、eConnect の処理が完了した後でオブジェクトを直接更新するメソッドが多数あります。

于 2011-07-21T20:20:19.017 に答える