繁体   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