📄 bos_qmphybill.cls
字号:
If Not rs.EOF And rs.RecordCount > 0 Then
If rs!Fstatus = 1 Then
MsgBox "该单据已经作废,不允许驳回审核!", , "金蝶提示"
Cancel = True
Exit Sub
End If
'如果对应检斤单已经被其他业务单据引用,则不允许驳回审核
If m_BillInterface.GetFieldValue("Fitemid_ic", , Enu_ValueType_FDSP) = "102.00001" Then
Set Rs1 = m_BillInterface.K3Lib.GetData("select t2.FInstockClosed,t2.FIsCompClosed,t2.FMergedFlag from t_ST_SC_BalanceBill t1 inner join t_ST_SC_BalanceBillentry t2 on t1.Fid=t2.fid where t1.fid=" & m_BillInterface.GetFieldValue("FBillno_yd"))
Else
Set Rs1 = m_BillInterface.K3Lib.GetData("select t2.FInstockClosed,t2.FIsCompClosed,t2.FMergedFlag from t_ST_SC_BalanceBill t1 inner join t_ST_SC_BalanceBillentry t2 on t1.Fid=t2.fid where t1.fStatus_Wl=" & m_BillInterface.CurBillID)
End If
If Not Rs1.EOF Then
If Rs1!FInstockClosed > 0 Then
MsgBox "对应检斤单已经入库,不允许驳回审核!", , "金蝶提示" '已经生成入库单
Cancel = True
Exit Sub
End If
If Rs1!FIsCompClosed > 0 Then
MsgBox "对应检斤单已经结算,不允许驳回审核!", , "金蝶提示" '已经生成入库单
Cancel = True
Exit Sub
End If
If Rs1!FMergedFlag > 0 Then
MsgBox "对应检斤单已经合并,不允许驳回审核!", , "金蝶提示" '已经生成入库单
Cancel = True
Exit Sub
End If
End If
If rs!Fstatus = 2 And rs!FBillNo_Hx > 0 Then
''更新物理检验单审核标志
m_BillInterface.K3Lib.UpdateData "update t_ST_QM_WLD set Fcheckstatus=1 where finterid=" & m_BillInterface.CurBillID
''将化学检验单恢复到审核前状态
m_BillInterface.K3Lib.UpdateData "update t_ST_QM_Hxd set fstatus=0 where finterid=" & rs!FBillNo_Hx
''如果上游单据是检斤单时,执行下面代码,更新检斤单入库数量为审核前状态
If m_BillInterface.GetFieldValue("FBillNo_Yd") <> "" Then
m_BillInterface.K3Lib.UpdateData "update t_ST_SC_BalanceBillentry set finstockweight=fnetweight/1000-fdeductweight where fid in(" & rs!Fbillno_yd & ")"
End If
End If
''更新单据显示
m_BillInterface.BillName = "原料理化单"
m_BillInterface.SetBillFormCaption "原料理化单"
End If
End If
Exit Sub
Errhandle:
MsgBox err.Description, vbCritical, "金蝶提示"
End Sub
'序时簿事件
'××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
Private Sub m_ListInterface_AfterSelList(ByVal RsId As ADODB.Recordset, VectList As KFO.Vector)
''序时簿选择之后触发
On Error GoTo Errhandle
'给选单向量赋值
Set Vector_SelectBill = VectList
Exit Sub
Errhandle:
MsgBox err.Description, vbCritical, "金蝶提示"
End Sub
Private Sub m_ListInterface_AfterMultiCheck(ByVal lCheckMode As Long, ByVal lCheckMaxLevel As Long, ByVal lBusinessLevel As Long, ByVal lCheckLevel As Long, ByVal lCheckStatus As Long, ByVal Success As Boolean)
''多级审核发生后
On Error GoTo Errhandle
''二级审核发生后
If lCheckMode = 0 And lBusinessLevel = lCheckMaxLevel And lCheckLevel = lCheckMaxLevel And lCheckStatus = GetCheckLevel(lCheckMaxLevel) Then
Dim D As Dictionary
Set D = m_ListInterface.GetCurrentSelRowInfo()
Set rs = m_ListInterface.K3Lib.GetData("select t1.*,t2.Fname Fitemid_icname from t_ST_QM_WLD t1 inner join t_icitem t2 on t1.fitemid_ic=t2.fitemid where t1.finterid=" & D.GetValue("FInterID"))
''如果上游单据是检斤单,则执行下面代码
If rs!Fbillno_yd <> "" Then
''更新检斤单单据体扣杂数量Fdeductweight(解发器算干基数量)
m_ListInterface.K3Lib.UpdateData "update t_ST_SC_BalanceBillentry set FDeductWeight=FDeductWeight where FID in(" & rs.Fields("Fbillno_yd") & ")"
''更新检斤单FStatus_wl为对应物理检验单的单据内码(用于触发器)
If rs.Fields("Fitemid_icname") = "外购生铁" Then
m_ListInterface.K3Lib.UpdateData "update t_ST_SC_BalanceBill set FStatus_Wl=" & D.GetValue("FInterID") & ",FQmBillNo='" & rs!FBillNO & "' where Fid=" & rs.Fields("Fbillno_yd")
Else
m_ListInterface.K3Lib.UpdateData "update t_ST_SC_BalanceBill set FStatus_Wl=" & D.GetValue("FInterID") & ",FQmBillNo='" & rs!FBillNO & "' where FStatus_Wl=" & D.GetValue("FInterID")
End If
''如果为“调拔质检”则更新调拔通知单的检验斤数量为 减去扣水后的数量
If rs!Fqmstyle = "3" Then
Set Rs1 = m_ListInterface.K3Lib.GetData("select fnetweight,FInStockWeight from t_ST_SC_BalanceBillentry where fid in (select fid from t_ST_SC_BalanceBill where fstatus_wl=" & D.GetValue("FInterID") & ")")
m_ListInterface.K3Lib.UpdateData "update ICStockBillOrderentry set FBalanceWeight=FBalanceWeight-(" & Rs1!fnetweight & "/1000)+" & Rs1!FInStockWeight & " where fid in (select Fid_src from t_ST_SC_BalanceBillentry where fid in (select fid from t_ST_SC_BalanceBill where fstatus_wl=" & D.GetValue("FInterID") & "))"
End If
''如果是外购生铁,则调整质检单的数量
If rs.Fields("Fitemid_icname") = "外购生铁" Then
m_ListInterface.K3Lib.UpdateData "exec BjSp_UpdateQmFeQty 'WLD1'," & D.GetValue("FInterID") & "," & rs.Fields("Fbillno_yd") & ",0"
End If
End If
End If
Exit Sub
Errhandle:
MsgBox err.Description, vbCritical, "金蝶提示"
End Sub
Private Sub m_ListInterface_AfterUnMultiCheck(ByVal lCheckMode As Long, ByVal lCheckMaxLevel As Long, ByVal lBusinessLevel As Long, ByVal lCheckLevel As Long, ByVal lCheckStatus As Long, ByVal Success As Boolean)
On Error GoTo Errhandle
Dim D As Dictionary
Set D = m_ListInterface.GetCurrentSelRowInfo()
''二反审核后
If lCheckMode = 0 And lBusinessLevel = lCheckMaxLevel And lCheckStatus = 1 Then
Set rs = m_ListInterface.K3Lib.GetData("select t1.Fstatus,t1.FBillNo_Hx,t1.fbillno_yd,t2.fname Fitemid_icname from t_ST_QM_WLD t1 inner join t_icitem t2 on t1.fitemid_ic=t2.fitemid where fInterId=" & D.GetValue("FInterID"))
If Not rs.EOF And rs.RecordCount > 0 Then
''更新检斤单单据体扣杂数量Fdeductweight(解发器算干基数量)
'm_ListInterface.K3Lib.UpdateData "update t_ST_SC_BalanceBillentry set FDeductWeight=FDeductWeight where FID in(" & rs.Fields("Fbillno_yd") & ")"
''如果是外购生铁,则调整质检单的数量
If rs.Fields("Fitemid_icname") = "外购生铁" Then
m_ListInterface.K3Lib.UpdateData "exec BjSp_UpdateQmFeQty 'WLD0'," & D.GetValue("FInterID") & "," & rs.Fields("Fbillno_yd") & ",0"
End If
End If
End If
Exit Sub
Errhandle:
MsgBox err.Description, vbCritical, "金蝶提示"
End Sub
''按钮单击
Private Sub m_ListInterface_MenuBarClick(ByVal BOSTool As K3ClassEvents.BOSTool, Cancel As Boolean)
''工具栏按钮单击时触发
On Error GoTo Errhandle
Select Case BOSTool.ToolName
Case "mnuAdr" '单击“调整按钮”按钮
Dim SelCount As Long
Dim SelId As String
Dim ReValue As String
''接收用户输入的检验值
ReValue = InputBox("转鼓检验值", "请输入新的检验值")
If IsNumeric(ReValue) Then
ReValue = Val(ReValue)
Else
MsgBox "输入的数据值不合法", vbOKOnly + vbInformation, "金蝶提示"
Exit Sub
End If
''取所质检单的单据内码
SelId = ""
For SelCount = m_ListInterface.GetSelectedBillInfo.LBound To m_ListInterface.GetSelectedBillInfo.UBound
SelId = SelId & m_ListInterface.GetSelectedBillInfo(SelCount).GetValue("finterid") & ","
Next
''调用转鼓项目修改存储过程
If Trim(SelId) <> "" And Len(Trim(SelId)) > 1 Then
SelId = Left(SelId, Len(SelId) - 1)
m_ListInterface.K3Lib.UpdateData ("exec BjSp_QmProc 1,'" & SelId & "'," & ReValue)
MsgBox "更新成功!", vbOKOnly + vbInformation, "金蝶提示"
End If
' Case "mnuAllCheck" '单击批量审核
' QmBatchCheck "Check"
' MsgBox "审核成功!", vbOKOnly + vbInformation, "金蝶提示"
' 'm_ListInterface.List.RefreshList
'
' Case "mnuUnAllCheck" '单批量反审核
' QmBatchCheck "UnCheck"
' MsgBox "反审核成功!", vbOKOnly + vbInformation, "金蝶提示"
' 'm_ListInterface.List.RefreshList
Case "mnuC"
''取所质检单的单据内码
Dim Selid1 As String
Selid1 = ""
For SelCount = m_ListInterface.GetSelectedBillInfo.LBound To m_ListInterface.GetSelectedBillInfo.UBound
Selid1 = Selid1 & m_ListInterface.GetSelectedBillInfo(SelCount).GetValue("finterid") & ","
Next
''
If Trim(Selid1) <> "" And Len(Trim(Selid1)) > 1 Then
Selid1 = Left(Selid1, Len(Selid1) - 1)
m_ListInterface.K3Lib.UpdateData "update t_ST_QM_Hxd set fstatus=2 where finterid in(select fbillno_hx from t_ST_QM_WLD where fqmstyle=9 and fquantity=0 and finterid in(" & Selid1 & "))"
MsgBox "关闭成功!", vbOKOnly + vbInformation, "金蝶提示"
End If
Case "mnuUnC"
''取所质检单的单据内码
Dim Selid2 As String
Selid2 = ""
For SelCount = m_ListInterface.GetSelectedBillInfo.LBound To m_ListInterface.GetSelectedBillInfo.UBound
Selid2 = Selid2 & m_ListInterface.GetSelectedBillInfo(SelCount).GetValue("finterid") & ","
Next
''
If Trim(Selid2) <> "" And Len(Trim(Selid2)) > 1 Then
Selid2 = Left(Selid2, Len(Selid2) - 1)
m_ListInterface.K3Lib.UpdateData "update t_ST_QM_Hxd set fstatus=0 where finterid in(select fbillno_hx from t_ST_QM_WLD where fqmstyle=9 and fquantity=0 and finterid in(" & Selid2 & "))"
MsgBox "反关闭成功!", vbOKOnly + vbInformation, "金蝶提示"
End If
Case Else
End Select
Exit Sub
Errhandle:
MsgBox err.Description, vbCritical, "金蝶提示"
End Sub
''物理单批量审核与反审核过程
Sub QmBatchCheck(CheckType As String)
Dim SelCount As Long
Dim SelId As String
Dim Rs1 As ADODB.Recordset
''取所质检单的单据内码
SelId = ""
For SelCount = m_ListInterface.GetSelectedBillInfo.LBound To m_ListInterface.GetSelectedBillInfo.UBound
SelId = SelId & m_ListInterface.GetSelectedBillInfo(SelCount).GetValue("finterid") & ","
Next
If Trim(SelId) <> "" And Len(Trim(SelId)) > 1 Then
SelId = Left(SelId, Len(SelId) - 1)
''检查一下所选择的物理单是否符合条件
Set Rs1 = m_ListInterface.K3Lib.GetData("declare @MulSelId varchar(4000) set @MulSelId='' select @MulSelId=@MulSelId +cast(finterid as varchar(50)) +','from t_ST_QM_WLD where ((Fstatus=2 and FBillNo_hx>0 and fqmstyle<>9) or (FQmStyle=9 and fquantity>0)) and finterid in(" & SelId & ") select @MulSelId")
End If
''
If Not Rs1.EOF Then
SelId = Rs1.Fields(0)
If Trim(SelId) <> "" And Len(Trim(SelId)) > 1 Then
SelId = Left(SelId, Len(SelId) - 1)
End If
Else
SelId = ""
End If
If SelId <> "" Then
If CheckType = "Check" Then
m_ListInterface.K3Lib.UpdateData "exec BjSp_QmBillBatchCheck " & m_ListInterface.K3Lib.User.UserID & ",1,'" & SelId & "'"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -