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 !!!")