ERP的已确认数量逻辑计算,数量之间的关系计算
/* qtyAvailable = item.QtyOnHand - item.QtyReserved - item.QtyCommitted; 可用数量=在手量 - 预留数量 - 已确认数量 gbitem.QtyCommitted 来自于icbaln.QtyCommitted的累计 decimal qtyCommitted = 0; foreach (InventoryBalanceEntity inventoryBalance in inventoryBalanceCollection) qtyCommitted += inventoryBalance.QtyCommitted; item.QtyCommitted = qtyCommitted; totalQtyCommitted = (inventoryIssueValue + shipmentValue + kitIssueValue + transferValue + assortmentComponetValue); */ DECLARE @loc NVARCHAR(50) DECLARE @itemNo NVARCHAR(50) SET @loc='G' SET @itemNo='1-014314-501' --InventoryBalanceManager.RefreshQtyCommitted --Pending Inventory Issue and Transfer SELECT SUM(D.QTY * d.LOT_SIZE) FROM ICMOVH h,icmovd d WHERE h.REF_NO=d.REF_NO AND h.POSTED='N' AND d.ITEM_NO=@itemNo AND d.LOC_FROM=@loc --Pending Shipment SELECT sum(d.QTY_SHIPPED * d.LOT_SIZE) FROM SLSHPH h,slshpd d WHERE h.REF_NO=d.REF_NO AND h.POSTED='N' AND d.ITEM_NO=@itemNo AND d.SHIP_FROM=@loc --Pending Shipment Assortment Component SELECT sum(f.QTY_ISSUED * d.LOT_SIZE) FROM SLSHPH h,slshpd d,slshpf f WHERE h.REF_NO=d.REF_NO AND h.POSTED='N' AND d.ENTRY_NO=f.ENTRY_NO AND h.REF_NO=f.REF_NO AND f.PART_ITEM_NO=@itemNo AND d.SHIP_FROM=@loc --Pending Multiple Kit Issue - Issue SELECT sum(s.QTY) FROM PRPMMH h ,prpmms s WHERE h.REF_NO=s.REF_NO AND h.POSTED='N' AND s.LOC=@loc AND s.ITEM_NO=@itemNo --Pending Multiple Kit Issue - Transfer SELECT isnull(t.QTY,0) + isnull(t.QTY_SPARE,0) FROM PRPMMH h,prpmmt t WHERE h.REF_NO=t.REF_NO AND h.POSTED='N' AND t.LOC_FROM=@loc AND t.ITEM_NO=@itemNo
上面展示出来的是我的解答过程,下面我解释一下,如何得到这个结果。先上必须的工具 JetBrains Resharper
在Windows 7 x86,2G内存的情况下,6.x这个版本跑的不慢,7.x版本太影响VS的响应速度。
如果想找一个变量在哪些地方被用到过,用到过的含义是指,使用它的值和给它赋值,对应于属性的get和set方法。
然后在Find Result窗口看到如下所示的界面
这个图非常直观的解释了变量QtyCommitted在哪些地方被用到过。以此为线索,追踪进去,便可以查到文章开头的公式算法。我依据此方法,可以轻易的分析ERP中的各种公式计算方法。
几年前,我想找出金碟ERP中的计算公式算法,依据的原理是Database Compare工具。做一个业务运算,比如采购收货进仓,会产生一系列的数据操作,在操作完成后,马上比较操作前和操作后的数据库内容,可以知有哪些数据实体被插入到数据库中,影响了哪些表,对业务的了解以此方式进行。
顺便提一下Database Comare工具有两个思路,Schema Compare和Data Compare,数据比较和脚本比较。Visual Studio 进化到2010,已经内置此功能
好的工具被在实践中领会应用,再加上一些基础的ERP业务逻辑知识,分析一下ERP的计算方法,公式,业务逻辑不是很困难的事情。