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