Select Case e.DataCol.name
Case "商品编号", "数量"
If e.DataRow("数量") IsNot Nothing Then
Dim r As DataRow = e.DataRow
Dim sum As Double = DataTables("进").compute("sum(库存)", "商品编号 = '" & e.DataRow("商品编号") & "' And 库存状态 = '可出库'")
If sum < r("数量") Then
msgbox("库存不够")
Else
Dim count As Integer = 0
Dim cb As Double '记录每条进货成本
Dim cks As Integer '定义cks用记录每条进货单出库数量
Dim cbs As Double '记录cb也就是成本的累加数
Dim drs As List(Of DataRow) = DataTables("进").Select("商品编号 = '" & e.DataRow("商品编号") & "' And 库存状态 = '可出库'", "日期, _Identify")
Dim s As String = "" '定义一个S变量,用于记录以后取得的原始入库单号
For i As Integer = 0 To drs.count - 1 '循环查找
Dim dr As DataRow = drs(i) '定义一个表,为查找到的所有行
count += dr("库存") '用count记录累加的库存
Dim sy As Integer = count - r("数量") '定义一个sy,等于累加库存扣除该次出库数量
s &= dr("进货单号") & ","
If sy >= 0 Then '如果累加的库存可抵扣此次出库
dr("出库") = dr("数量") - sy '最后一条进货单的数量 - sy 就是出库的数量
cks = sy '此次出库数
cb = cks * dr("单价") '最后一条进货单产生的成本
dr("库存") = sy
r("进货单号") = s.trim(",")
Else '以时间排序,库存不足时的处理
cks = dr("库存") + sy '记录每一条的出库数
cb = cks * dr("单价") '核算成本
dr("出库") = dr("数量") '证明可以直接出完
dr("库存") = 0
End If
cbs+ = cb '累计cb的数
r("成本") = cbs
Next
End If
End If
End Select