DataTables("商品进出月结").DataRows.Clear
Dim Arys As List(Of String())
Arys = DataTables("进销存").GetValues("月|项目分类|商品名称|规格","月 >= '" & e.Form.Controls("起始月").Text & "' And 月 <= '" & e.Form.Controls("截止月").Text & "' ")
For Each Ary As String() In Arys
Dim r As Row = Tables("商品进出月结").AddNew
r("月") = Ary(0)
r("项目分类") = Ary(1)
r("商品名称") = Ary(2)
r("规格") = Ary(3)
Next
Dim dt As DataTable = DataTables("进销存")
For Each dr As DataRow In DataTables("商品进出月结").DataRows
Dim Filter As String = "项目分类 = '" & dr("项目分类") & "' and 商品名称 = '" & dr("商品名称") & "' and 规格 = '" & dr("规格") & "'"
Dim Sum,Sum1,P As Double
dr("本月入库_数量") = dt.Compute("Sum(入库_数量)",Filter & " And 月 = '" & dr("月") & "'")
dr("本月入库_金额") = dt.Compute("Sum(入库_金额)",Filter & " And 月 = '" & dr("月") & "'")
dr("本月出库_数量") = dt.Compute("Sum(出库_数量)",Filter & " And 月 = '" & dr("月") & "'")
dr("上月结存_数量") = dt.Compute("Sum(入库_数量)",Filter & " And 月 < '" & dr("月") & "'") - dt.Compute("Sum(出库_数量)",Filter & " And 月 < '" & dr("月") & "'")
Sum = DataTables("进销存").Compute("Sum(入库_金额)",Filter & " And 月 < '" & dr("月") & "'")
Sum1 = DataTables("进销存").Compute("Sum(入库_数量)",Filter & " And 月 < '" & dr("月") & "'")
Dim pdr As DataRow = DataTables("商品进出月结").find(filter & " And 月 < '" & dr("月") & "'", "月 desc")
If pdr IsNot Nothing Then
dr("上月结存_金额") = pdr("上月结存_金额")
Else
dr("上月结存_金额") = Sum / Sum1 * dr("本月结存_数量")
End If
dr("本月结存_数量") = dr("上月结存_数量") + dr("本月入库_数量") - dr("本月出库_数量")
dr("本月加权平均单价") = (P + dr("本月入库_金额"))/(dr("上月结存_数量") + dr("本月入库_数量"))
dr("本月出库_金额") = dr("本月加权平均单价") * dr("本月出库_数量")
dr("本月结存_金额") = dr("本月加权平均单价") * dr("本月结存_数量")
Next