[英]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.