⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bos_qmphybill.cls

📁 金蝶地磅称重插件
💻 CLS
📖 第 1 页 / 共 5 页
字号:
       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 + -