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

📄 bos_wipe3bill_plugins.cls

📁 完成报销系统的业务流程;在报销系统中达到预算控制目的;将历史数据导入金蝶账套生成历史备查数据。
💻 CLS
📖 第 1 页 / 共 4 页
字号:
        .InsertNewRowAndFill 3, 4, "FChargeType", "会务费"
        .InsertNewRowAndFill 3, 5, "FChargeType", "硬座补贴"
        .InsertNewRowAndFill 3, 6, "FChargeType", "其他"
        .RefreshBill
    
        '-------------------------------------------------------------------
        '新增单据后,取当前的预算方案编号
        '-------------------------------------------------------------------
        Dim rs As New ADODB.Recordset
        Set rs = .K3Lib.GetData("select FProjectID,FName from t_mgBudgetSet where fexec=1")
    
        If rs.State = adStateOpen And rs.RecordCount > 0 Then
            .SetFieldValue "FBudgetScheme", rs("FName")
            lBudgetProjectID = rs("FProjectID")
        Else
            MsgBox "当前没有正在执行的预算!", vbOKOnly + vbExclamation, HINTINFO
            lBudgetProjectID = 0
        End If
   
        .SetFieldValue "FLoanAmtSum", m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FLoanAmt", "", 0))
        .SetFieldValue "FWipeAmtSum", m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FWipeAmt", "", 0))
        '将单据头的报销总额--转换为大写,将报销总额转化为大写
        .SetFieldValue "FCapitalAmtSum", PricetoChinese(.GetFieldValue("FWipeAmtSum"))
        .SetFieldValue "FSupplyAmtSum", 0
        .SetFieldValue "FRefundAmtSum", 0
        .RefreshBill
        
         Dim j As Integer
         Dim i As Integer
         j = 0
         For i = 1 To .Data("page4").Size
             If Trim(.GetFieldValue("FLoanItem", i, Enu_ValueType_FDSP)) <> "" Then
                 j = j + 1
             End If
         Next i
         If j > 1 Then
             ShowDep 1
             .BillHeads(1).BOSFields("FWipeItemsum").Visible = False
             .BillHeads(1).BOSFields("FCheckDep").Visible = False
        Else
            ShowDep 0
             .BillHeads(1).BOSFields("FWipeItemsum").Visible = True
             .BillHeads(1).BOSFields("FCheckDep").Visible = True
         End If
         
     End With
End Sub

Private Sub m_BillInterface_AfterSelBillBeforeFillData(ByVal dcData As KFO.IDictionary, ByVal dctLink As KFO.IDictionary)
    m_BillInterface.BillHeads(1).BOSFields("FWipeItemsum").FieldLock = True
    m_BillInterface.BillHeads(1).BOSFields("FWipeType").FieldLock = True
    iSelBill = 1
End Sub



'*********************************************************************
'保存前,进行报销金额的判断
'1 是否录入差旅费明细
'2 报销金额是否大于预算余额
'*********************************************************************
Private Sub m_BillInterface_BeforeSave(bCancel As Boolean)
    Dim sRet As String, bret As Boolean
    Dim lBalanceAmt As Currency
    Dim i As Integer
    Dim lsum
    Dim sErr As String
    If getBudgetid = False Then
        bCancel = True
        Exit Sub
    End If

    With m_BillInterface
    '报销金额为0 不能保存
    If .GetFieldValue("FWipeAmtSum") = 0 Then
        bCancel = True
        MsgBox "报销金额不能为空!", vbOKOnly + vbExclamation, HINTINFO
        Exit Sub
    End If
    If .GetFieldValue("FCheckDep") = 1 Then
        '判断在分割部门的情况下,分割分录>1
        If .Data("page4").Size < 2 Then
            MsgBox "在选择要分割部门时,请录入超过一条以上的部门分割记录!", vbOKOnly + vbInformation, HINTINFO
            bCancel = True
            Exit Sub
        End If
    End If

    '判断报销项目是否与借款项目相等
    '判断是否录入了差旅费的明细,且明细是否和总和相等
        lsum = 0
        For i = 1 To .Data("page4").Size
             If InStr(1, .Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FDSP"), "差旅") Then
                lsum = lsum + CCur(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FWipeAmt"))("FFLD"))
                bret = True
            Else
                MsgBox "差旅费报销单的报销项目只能是“差旅费”!", vbOKOnly + vbInformation, HINTINFO
                bCancel = True
                Exit Sub
             End If
             If Trim(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FFLD")) <> Trim(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FLoanItem"))("FFLD")) And _
                Trim(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FLoanItem"))("FFLD")) <> "" Then
                MsgBox "第" & CStr(i) & "行,“报销项目”与选择的借款单的“借款项目”不相同,不能保存!", vbOKOnly + vbExclamation, HINTINFO
                bCancel = True
                Exit Sub
             End If
             If Trim(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FLoanType"))("FFLD")) <> "" And _
                Trim(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FLoanType"))("FFLD")) <> Trim(.GetFieldValue("FWipetype", , Enu_ValueType_FFLD)) Then
                MsgBox "第" & CStr(i) & "行,“借款方式”与整单的“支出方式”不相同,不能保存!", vbOKOnly + vbInformation, HINTINFO
                bCancel = True
                Exit Sub
             End If
        Next i
        If bret = True Then
            If lsum <> .Sum(.GetFieldInfoByKey("FTraAmt", "", 0)) + .Sum(.GetFieldInfoByKey("FSubsidyAmt", "", 0)) + .Sum(.GetFieldInfoByKey("FChargeAmt", "", 0)) Then
                sErr = "请录入差旅费报销信息的明细项!" & vbCrLf & "或请检查“差旅费明细”总额是否与报销信息中的“差旅费”报销金额相等!"
                bCancel = True

            End If
            
            If sErr <> "" Then
                MsgBox sErr, vbOKOnly + vbInformation, HINTINFO
                Exit Sub
            End If
        End If
    
    '判断是否分割部门,是则将分割部门和分割金额写到分录4
       If .Data("page5").Size > 0 Then .DeleteEntryData (5)

        If .GetFieldValue("FCheckDep") = 1 Then
            For i = 1 To .Data("page4").Size
                  .InsertNewRowAndFill 5, i, "FBase", .GetFieldValue("FDivideDep", i, Enu_ValueType_FFND)
                  .SetFieldValue "FAmount", .GetFieldValue("FWipeAmt", i), i
            Next i
            .BillEntrys(4).MaxRows = .Data("page4").Size
        
            ShowDep 1
        Else
            ShowDep 0
        End If
        .BillEntrys(4).Visible = False
    '进行报销金额的判断
       If compareNum(lBalanceAmt, sRet) = False Then
            sErr = sErr & vbCrLf & sRet
            bCancel = True
        End If
        If sErr <> "" Then MsgBox sErr, vbOKOnly + vbInformation, HINTINFO

    End With

End Sub


Private Sub m_BillInterface_BeginEdit(ByVal dct As KFO.IDictionary, ByVal Col As Long, ByVal Row As Long)
    If Row > 0 And dct("FTableName") = "t_EP_ER_WipeOff3Entry3" Then
        tmpFloanItem = Trim(m_BillInterface.GetFieldValue("FLoanItem", Row, Enu_ValueType_FDSP))
    End If

End Sub

'*********************************************************************
'数据更改:
'1 根据报销金额的更改,
'        1更新单据体  补领金额 和退还金额
'        2更新单据头 报销总额,并更新大写
'    3更新单据头 补领金额 和退还金额
'2 分录1中的报销项目更改时(即新增一个报销项目时)将报销部门带入
'*********************************************************************
Private Sub m_BillInterface_Change(ByVal dct As KFO.IDictionary, ByVal dctFld As KFO.IDictionary, ByVal Col As Long, ByVal Row As Long, Cancel As Boolean)
    Dim sSql As String
    Dim rs As New ADODB.Recordset
    With m_BillInterface
        '-------------------------------------------------------------------
        '报销项目 改变
        '-------------------------------------------------------------------
        If dct("FFieldName") = "FWipeItemSum" Then
            If InStr(1, .GetFieldValue("FWipeItemsum", , Enu_ValueType_FDSP), "差旅") = False Then
                .SetFieldValue "FWipeItemSum", 0
                MsgBox "差旅费报销单的报销项目只能是“差旅费”!", vbOKOnly + vbInformation, HINTINFO
                Cancel = True
                Exit Sub
            End If
        End If
        If dct("FFieldName") = "FWipeItem" Then
            '不允许 报销项目为 差旅费
            If InStr(1, .Data("Page4").Item(Row)(.DataSrv.TableInfo("map")("FWipeItem"))("FDSP"), "差旅") = False Then
                .SetFieldValue "FWipeItem", 0
                MsgBox "差旅费报销单的报销项目只能是“差旅费”!", vbOKOnly + vbInformation, HINTINFO
                Cancel = True
                Exit Sub
            End If
            '改变分录1中的报销项目,将部门带进去
            If Trim(.GetFieldValue("FDivideDep", Row, Enu_ValueType_FDSP)) = "" Then .SetFieldValue "FDivideDep", .GetFieldValue("FReqDept", , Enu_ValueType_FFND), Row
        End If
        If dct("FFieldName") = "FWipeItemSum" Then
            If .GetFieldValue("FCheckDep") = 0 Then .SetFieldValue "FWipeItem", .GetFieldValue("Fwipeitemsum", , Enu_ValueType_FFND), 1
        End If
        
        '-------------------------------------------------------------------
            '1申请部门变更时,根据部门与差旅费对应关系表填写 单据头 报销项目
          '2申请部门变更时,如果分割部门没有值,则将申请部门的值付到单据体的分割部门上
        '-------------------------------------------------------------------
        If dct("FFieldName") = "FReqDept" Then
            Dim i As Integer

            '1
            sSql = "select t3.FNumber from t_EP_ER_DepToTraEntry1 t1  " & _
                                " inner join t_EP_ER_DepToTra t2 on t1.fid=t2.fid " & _
                                " left join t_Account t3 on t1.FTraAccid=t3.FAccountid" & _
                                " where  FDep  ='" & .GetFieldValue("FReqDept", , Enu_ValueType_FFLD) & "'"
            Set rs = .K3Lib.GetData(sSql)
            If rs.State = adStateOpen And rs.RecordCount = 1 Then
               .SetFieldValue "FWipeItemSum", rs!FNumber, Row
            Else
                MsgBox "您录入的部门没有对应差旅费会计科目,请手工录入!", vbOKOnly + vbExclamation, HINTINFO
                .SetFieldValue "FWipeItemSum", 0
            End If
            '2
            i = 1
            While i <= .Data("Page4").Size
                If Trim(.GetFieldValue("FDivideDep", i, Enu_ValueType_FDSP)) = "" Then
                    .SetFieldValue "FDivideDep", .GetFieldValue("FReqDept", , Enu_ValueType_FFND), i
                End If
                If Trim(.GetFieldValue("FWipeItem", i, Enu_ValueType_FDSP)) = "" Then
                    .SetFieldValue "FWipeItem", .GetFieldValue("FWipeItemSum", , Enu_ValueType_FFND), i
                End If
                i = i + 1
            Wend
            If .GetFieldValue("FCheckDep") = 0 Then
                .SetFieldValue "FDivideDep", .GetFieldValue("FReqDept", , Enu_ValueType_FFND), 1
                 .SetFieldValue "FWipeItem", .GetFieldValue("FWipeItemSum", , Enu_ValueType_FFND), 1
            End If
                
            If rs.State = adStateOpen Then rs.Close

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -