|
WHS电子仓FIFO先进先出逻辑变更为SP
- '于2019-05-04取消该函数,改为CHECK_FIFO_WHS_OUT_SP用SP来检查逻辑
- Public Function CHECK_FIFO_WHS_OUT(in_trsn As String) As Boolean
- Dim strsql As String
- Dim strkp As String
- Dim i, j As Integer
- Dim rs As ADODB.Recordset
- Dim rs1 As ADODB.Recordset
- Dim in_trsn_bak As String
- On Error GoTo check_Error
- strtrsn = ""
- '备份原始TR_SN﹐便于下面还原
- in_trsn_bak = in_trsn
- '根据TR_SN找到料号
- strsql = "SELECT TR_SN,CUST_KP_NO FROM smt.r_tr_sn WHERE TR_SN='" & in_trsn & "' "
- Set rs = Adocn.Execute(strsql)
- '找到料号赋值
- If Not rs.EOF Then
- strkp = rs.Fields("CUST_KP_NO")
- Else
- CHECK_FIFO_WHS_OUT = False
- End If
- '根据料号﹐查找此料号所有在WHS的序号﹐并按日期从小到大排序
- strsql = "SELECT SUBSTR (tr_sn, 2, 6) AS trno, cust_kp_no, tr_sn " & _
- "From smt.r_tr_sn " & _
- "WHERE cust_kp_no = '" & strkp & "' and location_flag='0' and work_flag=0 " & _
- "ORDER BY TO_NUMBER(trno)"
- Set rs = Adocn.Execute(strsql)
- '将此料号在WHS中最旧料盘日期与目前将要发出的料盘进行对比
- If rs.EOF Then
- CHECK_FIFO_WHS_OUT = True
- Else
- '判断是否分盘记录﹐有则按原始条码日期为主
- strsql = "select * from smt.r_tr_sn_adjust where sub_tr_sn='" & in_trsn & "'"
- Set rs1 = Adocn.Execute(strsql)
- If rs1.EOF = True Then
- '没有分盘记录
- Else
- '有分盘记录﹐则找出原序号
- in_trsn = rs1.Fields("tr_sn")
- End If
-
- If rs!trno <> Mid(Trim(in_trsn), 2, 6) And rs!trno < Mid(Trim(in_trsn), 2, 6) Then
- '发现库存中的料盘日期比目前先﹐则应该先发库存中的旧料﹔不符合FIFO
- CHECK_FIFO_WHS_OUT = False
- '找出旧的TR_SN
- Do While Not rs.EOF
- If rs!trno <> Mid(Trim(in_trsn), 2, 6) And rs!trno < Mid(Trim(in_trsn), 2, 6) Then
- strtrsn = strtrsn + "'" + rs!tr_sn + "',"
- End If
- rs.MoveNext
- Loop
- ' strtrsn = Left(strtrsn, Len(strtrsn) - 2)
- strtrsn = Mid(strtrsn, 2, Len(strtrsn) - 3)
- Else
- CHECK_FIFO_WHS_OUT = True
- End If
- '还原序号﹐当有分盘记录时会变更﹐因此需要还原
- in_trsn = in_trsn_bak
-
- End If
-
- Exit Function
- check_Error:
- MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure CHECK_FIFO_WHS_OUT "
- End Function
复制代码 |
|