簡體   English   中英

重構使用單個存儲過程的eConnect方法

[英]Refactoring an eConnect method that uses a single stored procedure

我正在編寫一個程序,以使用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 db上調用一個類似命名的存儲過程,以正確保存這些更改。 UpdateExisting和CREATEDIST是該SP的可選參數。

有時,我只需要更新批次(或發票的其他部分),或只重新創建分發,但是其他時候,我需要同時執行這兩個操作。 重新創建分配不會引起任何不希望的變化,您始終希望分配對每個發票都是正確的。 我還沒有測試一次只做一件事情之間的時間節省。 由於該對象正在服務器端調用SP,因此我看不到它將花費多少時間。

你們是否看到任何理由將其重構為2-3種不同的方法,以使每個所需的功能保持獨立?

如果您要做的只是更新一個或兩個字段,並且知道它不會妨礙任何GP,只需通過SQL更新該字段即可。 我有很多方法可以調用eConnect,然后在完成eConnect之后第二次直接更新對象,因為我必須更改的字段沒有eConnect參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM