以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助] 负库存问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=139197) |
||||||||
-- 作者:sanny -- 发布时间:2019/8/7 23:50:00 -- [求助] 负库存问题 老师你好,
请问一下,项目支持负库存中的代码跟项目Test中的代码是一样的。
可是项目test中库存表中有负库存,执行代码后怎么负库存在物料需求表列stock中没有显示出来。 项目支持负库存中有负库存显示了,是用的相同代码。可以帮忙解答一下吗? 谢谢。 |
||||||||
-- 作者:sanny -- 发布时间:2019/8/7 23:53:00 -- 如附件 此主题相关图片如下:捕获.jpg
[此贴子已经被作者于2019/8/7 23:55:53编辑过]
|
||||||||
-- 作者:有点蓝 -- 发布时间:2019/8/8 10:14:00 -- 没看懂。正确的数据应该是怎么样的? |
||||||||
-- 作者:sanny -- 发布时间:2019/8/8 11:53:00 -- 老师如图, 圈出来的应该要显示出来,可以没有,实例也附上了。 此主题相关图片如下:捕获.jpg
|
||||||||
-- 作者:sanny -- 发布时间:2019/8/8 11:54:00 -- 奇怪的是,这个项目中的代码是一样,却显示出来了。
|
||||||||
-- 作者:有点蓝 -- 发布时间:2019/8/8 14:40:00 -- 5楼的项目一样有问题,父层一样无法计算,4楼项目是单件出货,其实也就相当是父层了。 其次4楼项目qty列根本就没有数据
|
||||||||
-- 作者:有点蓝 -- 发布时间:2019/8/8 14:42:00 -- 不知道负库存的计算逻辑是怎么样的,随便蒙一下,细节自己理解更改 DataTables("物料需求").datarows.clear Dim dic1 As new Dictionary(of String, Double) For Each dr As DataRow In DataTables("库存表").Select("part is not null") dic1.add(dr("part"), dr("qty")) Next vars("dic1") = dic1 Dim dic2 As new Dictionary(of String, Double) For Each dr As DataRow In DataTables("待检产品").Select("part is not null") dic2.add(dr("part"), dr("qty")) Next vars("dic2") = dic2 Dim dic3 As new Dictionary(of String, Double) For Each dr As DataRow In DataTables("采购订单").Select("part is not null") dic3.add(dr("part"), dr("qty")) Next vars("dic3") = dic3 Dim dic4 As new Dictionary(of String, Double) vars("dic4") = dic4 For Each Ary As String() In DataTables("OrderList").GetValues("PartNo|ETD|批号","PartNo is not null") Dim dr As DataRow = DataTables("物料需求").AddNew dr("PartNo") = ary(0) dr("ETD") = ary(1) dr("批号") = ary(2) Dim qty As Decimal = DataTables("OrderList").Compute("sum(Qty)","PartNo=\'" & ary(0) & "\' And ETD=\'" & ary(1) & "\' and 批号 =\'" & ary(2) & "\'") dr("Demand") = qty Dim flag As Boolean = True If dic1.ContainsKey(dr("PartNo")) Then If dic1(dr("PartNo")) >= qty Then dr("Stock") = qty dic1(dr("PartNo")) -= dr("Stock") flag = False Else If dic1(dr("PartNo")) < 0 Then If dic1(dr("PartNo"))*-1 > qty dr("Stock") = -1 * qty dic1(dr("PartNo")) += qty Else dr("Stock") = dic1(dr("PartNo")) dic1(dr("PartNo")) = 0 End If Else dr("Stock") = dic1(dr("PartNo")) dic1(dr("PartNo")) -= dr("Stock") End If End If End If If dic2.ContainsKey(dr("PartNo")) Then Dim qty1 = dr("Demand") - dr("stock") If qty1 > 0 Then If dic2(dr("PartNo")) >= qty1 Then dr("QC") = qty1 dic2(dr("PartNo")) -= dr("QC") ElseIf dic2(dr("PartNo")) > 0 Then dr("QC") = dic2(dr("PartNo")) dic2(dr("PartNo")) -= dr("QC") End If End If End If Dim drr As DataRow = DataTables("BOM").find("Fnumber =" &"\'"& dr("PartNo")&"\'") If drr IsNot Nothing dr("层次") = "父层" Else dr("层次") = "单件出货" End If Functions.Execute("sumChild",ary(0),qty, ary(0), ary(1),ary(2), flag, dr("Stock"),dr("QC"),1,dr("Stock")+dr("QC")-qty) If dic3.ContainsKey(dr("PartNo")) Then If dic3(dr("PartNo")) >= qty Then dr("purchasingorder") = qty dic3(dr("PartNo")) -= dr("purchasingorder") ElseIf dic3(dr("PartNo")) > 0 Then dr("purchasingorder") = dic3(dr("PartNo")) dic3(dr("PartNo")) -= dr("purchasingorder") End If End If If flag = True Then dr("MissingQty") = dr("Stock")+dr("QC") -dr("Demand") Else dr("MissingQty") = Nothing End If If dic4.ContainsKey(dr("PartNo")) = False Then dic4.add(dr("PartNo"), dr("MissingQty")) Else dic4(dr("PartNo")) += dr("MissingQty") End If dr("SumMissing") = dic4(dr("partno")) Next msgbox("Updated !!!") |