根据你的代码改的,现在可以按照先进先出。
问题是,如果SN配货完成了,再次输入同样的SN,应该是是配货重复扫描,怎就变为了不符合出库条件了呢。
输入同样的SN,弹出的是msgbox(3),而非msgbox(2),请帮忙看看红色的代码。
Dim yphsl As WinForm.Button = e.Form.Controls("Button5")
Dim bfhfh As WinForm.Button = e.Form.Controls("Button6")
Dim phwc As WinForm.Button = e.Form.Controls("配货完成")
Select Case e.DataCol.name
Case "SN"
If Not e.DataRow.IsNull("SN") Then
Dim dr As Row = Tables("销售出库单列表").current
Dim drs As List(Of DataRow) = DataTables("库存明细表").Select(CExp("订单号='{0}' and 物料编码='{1}' and 状态='入库完成'", dr("销售订单号") ,dr("存货编码")),"在库生命周期 desc")
If dr IsNot Nothing Then
Dim count As Integer = e.DataTable.Compute("count(sn)","订单号='" & dr("销售订单号") & "' and 物料编码='" & dr("存货编码") & "' and 状态 = '配货完成' and SN is not null")
If count >= dr("数量") Then
msgbox(4)
dr("配货状态") = True
e.DataRow("数量") = 0
Dim nr As DataRow = DataTables("库存明细表").SQLFind("SN = '" & e.DataRow("SN") & "'")
Dim nms() As String = {"生产订单号码","工单行号","物料编码","物料名称","类别说明","产品批次","订单号","订单行号","客户","备注","软件版本","MAC","HW","入库单号","库位类别","库位编码","入库完成时间","入库方式","在库生命周期"}
For Each nm As String In nms
e.DataRow(nm) = nr(nm)
Next
e.DataRow("状态") = "不符合出库条件"
e.DataRow("在库生命周期") = nr("在库生命周期")
e.DataRow.save
Dim count2 As Integer = e.DataTable.Compute("count(sn)","订单号='" & dr("销售订单号") & "' and 物料编码='" & dr("存货编码") & "' and 状态 = '不符合出库条件' and SN is not null")
bfhfh.text = "不符合出库SN有" & count2
Tables("配货整理_table4").Filter = "订单号='" & dr("销售订单号") & "' and 物料编码='" & dr("存货编码") & "' and 状态 = '不符合出库条件'"
Return
End If
For Each fdr As DataRow In drs
If fdr("SN") = e.DataRow("SN") Then
Dim mr As DataRow = DataTables("配货扫描").find("SN = '" & e.DataRow("SN") & "' And _Identify <> '" & e.DataRow("_Identify") & "'")
If mr IsNot Nothing Then
msgbox(2)
Dim nms() As String = {"生产订单号码","工单行号","物料编码","物料名称","类别说明","产品批次","订单号","订单行号","客户","备注","软件版本","MAC","HW","入库单号","库位类别","库位编码","入库完成时间","入库方式","在库生命周期"}
For Each nm As String In nms
e.DataRow(nm) = fdr(nm)
Next
e.DataRow("状态") = "配货重复扫描"
e.DataRow("数量") = 0
e.DataRow.save
Return
Else
msgbox(1)
fdr("状态") = "配货完成"
fdr("配货完成时间") = Date.now
fdr("U8发货单号") = Vars("u8fhdh")
fdr("业务员") = dr("业务员")
fdr("货运单号") = dr("货运单号")
fdr("发货地址") = dr("发货地址")
fdr("数量") = 0
fdr.Save
Dim nms() As String = {"生产订单号码","工单行号","物料编码","物料名称","类别说明","产品批次","订单号","订单行号","客户","备注","软件版本","MAC","HW","入库单号","库位类别","库位编码","入库完成时间","入库方式","在库生命周期"}
For Each nm As String In nms
e.DataRow(nm) = fdr(nm)
Next
e.DataRow("数量") = 1
e.DataRow("状态") = "配货完成"
e.DataRow("配货完成时间") = Date.now
e.DataRow("U8发货单号") = Vars("u8fhdh")
e.DataRow.save
Dim sum2 As Integer
sum2 = DataTables("配货扫描").SQLCompute("Sum(数量)","订单号='" & dr("销售订单号") & "' and 物料编码='" & dr("存货编码") & "' and 状态 = '配货完成'")
yphsl.text = "订单号:" & dr("销售订单号") & "+" & "物料编码:" & dr("存货编码") & "已完成配货数量" & "=" & sum2
Return
End If
End If
count += 1
If count >= dr("数量") Then
msgbox(3)
e.DataRow("数量") = 0
Dim nr As DataRow = DataTables("库存明细表").SQLFind("SN = '" & e.DataRow("SN") & "'")
Dim nms() As String = {"生产订单号码","工单行号","物料编码","物料名称","类别说明","产品批次","订单号","订单行号","客户","备注","软件版本","MAC","HW","入库单号","库位类别","库位编码","入库完成时间","入库方式","在库生命周期"}
For Each nm As String In nms
e.DataRow(nm) = nr(nm)
Next
e.DataRow("状态") = "不符合出库条件"
e.DataRow.save
Dim count3 As Integer = e.DataTable.Compute("count(sn)","订单号='" & dr("销售订单号") & "' and 物料编码='" & dr("存货编码") & "' and 状态 = '不符合出库条件' and SN is not null")
bfhfh.text = "不符合出库SN有" & count3
Tables("配货整理_table4").Filter = "订单号='" & dr("销售订单号") & "' and 物料编码='" & dr("存货编码") & "' and 状态 = '不符合出库条件'"
Return
End If
Next
End If
End If
End Select