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

📄 bos_wipe3bill_plugins.cls

📁 完成报销系统的业务流程;在报销系统中达到预算控制目的;将历史数据导入金蝶账套生成历史备查数据。
💻 CLS
📖 第 1 页 / 共 4 页
字号:


        End If
        '-------------------------------------------------------------------
        '分割部门改变时,根据部门与差旅费对应关系表填写 单据体的报销项目
        '-------------------------------------------------------------------
        If dct("FFieldName") = "FDivideDep" Then
            '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("FDivideDep", , Enu_ValueType_FFLD) & "'"
            Set rs = .K3Lib.GetData(sSql)
            If rs.State = adStateOpen And rs.RecordCount = 1 Then
               .SetFieldValue "FWipeItem", rs!FNumber, Row
            Else
                MsgBox "您录入的部门没有对应差旅费会计科目,请手工录入!", vbOKOnly + vbExclamation, HINTINFO
            End If
            If rs.State = adStateOpen Then rs.Close
'            Set rs = Nothing
        End If
        
'        '-------------------------------------------------------------------
'        '改变分录3中的报销金额
'        '-------------------------------------------------------------------
'        If dct("FFieldName") = "FWipeAmt" Then
'            '有借款金额 时 填写单据体的补领金额 和退还金额(有借款时,要回写借款单,所以要付值 )
'            If .GetFieldValue("FLoanAmt") <> 0 Then
'                If .GetFieldValue("FLoanAmt") - .GetFieldValue("FWipeAmt") > 0 Then
'                    .SetFieldValue "FRefundAmt", .GetFieldValue("FLoanAmt") - .GetFieldValue("FWipeAmt")
'                    .SetFieldValue "FSupplyAmt", 0
'                ElseIf .GetFieldValue("FLoanAmt") - .GetFieldValue("FWipeAmt") < 0 Then
'                    .SetFieldValue "FSupplyAmt", .GetFieldValue("FWipeAmt") - .GetFieldValue("FLoanAmt")
'                    .SetFieldValue "FRefundAmt", 0
'                End If
'            End If
'            '填写单据头的报销总额--取报销金额的总和--从分录1中取报销金额的总和
'            .SetFieldValue "FWipeAmtSum", m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FWipeAmt", "", 0))
'            '将单据头的报销总额--转换为大写,将报销总额转化为大写
'            .SetFieldValue "FCapitalAmtSum", PricetoChinese(.GetFieldValue("FWipeAmtSum"))
'            '填写单据头的--取补领金额 和 退还金额
'            If .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum") > 0 Then            '报销金额 大于 借款金额
'                .SetFieldValue "FSupplyAmtSum", .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum")
'                .SetFieldValue "FRefundAmtSum", 0
'            ElseIf .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum") < 0 Then       '报销金额 小于 借款金额
'                .SetFieldValue "FRefundAmtSum", .GetFieldValue("FLoanAmtSum") - .GetFieldValue("FWipeAmtSum")
'                .SetFieldValue "FSupplyAmtSum", 0
'            Else
'                .SetFieldValue "FSupplyAmtSum", 0
'                .SetFieldValue "FRefundAmtSum", 0
'            End If
'        End If
        '-------------------------------------------------------------------
        '分录1,分录2中的金额(往返交通费,补助,其他费用)进行修改,更新到报销总额上
         '-------------------------------------------------------------------
         If dct("FFieldName") = "FTraAmt" Or dct("FFieldName") = "FSubsidyAmt" Or dct("FFieldName") = "FChargeAmt" Then
            '1更新报销总额
            .SetFieldValue "FWipeAmtSum", m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FTraAmt", "", 0)) + _
                                        m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FSubsidyAmt", "", 0)) + _
                                        m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FChargeAmt", "", 0))
             '将单据头的报销总额--转换为大写,将报销总额转化为大写
            .SetFieldValue "FCapitalAmtSum", PricetoChinese(.GetFieldValue("FWipeAmtSum"))
            '填写单据头的--取补领金额 和 退还金额
            If .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum") > 0 Then            '报销金额 大于 借款金额
                .SetFieldValue "FSupplyAmtSum", .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum")
                .SetFieldValue "FRefundAmtSum", 0
            ElseIf .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum") < 0 Then       '报销金额 小于 借款金额
                .SetFieldValue "FRefundAmtSum", .GetFieldValue("FLoanAmtSum") - .GetFieldValue("FWipeAmtSum")
                .SetFieldValue "FSupplyAmtSum", 0
            Else
                .SetFieldValue "FSupplyAmtSum", 0
                .SetFieldValue "FRefundAmtSum", 0
            End If
            '如果没有分割部门,在分录3的第1行,加入报销总额
            If .GetFieldValue("FCheckDep") = 0 Then .SetFieldValue "FWipeAmt", .GetFieldValue("FWipeAmtSum"), 1
         End If
        '-------------------------------------------------------------------
        '报销总额进行修改时,更新补领金额和退还金额
        '-------------------------------------------------------------------
        If dct("FFieldName") = "FWipeAmtSum" Then
            '填写单据头的--取补领金额 和 退还金额
            If .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum") > 0 Then            '报销金额 大于 借款金额
                .SetFieldValue "FSupplyAmtSum", .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum")
                .SetFieldValue "FRefundAmtSum", 0
            ElseIf .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum") < 0 Then       '报销金额 小于 借款金额
                .SetFieldValue "FRefundAmtSum", .GetFieldValue("FLoanAmtSum") - .GetFieldValue("FWipeAmtSum")
                .SetFieldValue "FSupplyAmtSum", 0
            Else
                .SetFieldValue "FSupplyAmtSum", 0
                .SetFieldValue "FRefundAmtSum", 0
            End If
             '将单据头的报销总额--转换为大写,将报销总额转化为大写
            .SetFieldValue "FCapitalAmtSum", PricetoChinese(.GetFieldValue("FWipeAmtSum"))
        End If
        '-------------------------------------------------------------------
        '是否分割部门进行修改
         '-------------------------------------------------------------------
        If dct("FFieldName") = "FCheckDep" Then
            If .Data("page4").Size > 1 Then
                MsgBox "系统现在有多个分割部门,请删除多余的部门,只保留一个!", vbOKOnly + vbInformation, HINTINFO
                .SetFieldValue "FCheckDep", 1
                Exit Sub
            End If
            ShowDep CInt(.GetFieldValue("FCheckDep"))

        End If
        Set rs = Nothing
    End With
End Sub
'是否显示分割部门
Private Function ShowDep(iType As Integer)
    Dim i As Integer
    Dim j As Integer
    With m_BillInterface
        If iType = 1 Then
            iShowDepType = 1
            .SetFieldValue "FCheckDep", 1
            .BillEntrys(3).Visible = True
            .BillHeads(1).BOSFields("FWipeItemsum").Visible = False
'            .BillEntrys(3).MaxRows = 6
        Else
            iShowDepType = 0
            .SetFieldValue "FCheckDep", 0
            
            .BillHeads(1).BOSFields("FWipeItemsum").Visible = True
            If iSelBill = 0 Or (.Data("page4").Size = 1 And Trim(.GetFieldValue("FLoanitem", 1, Enu_ValueType_FDSP)) = "") Then
                .BillHeads(1).BOSFields("FWipeItemsum").FieldLock = False
                .DeleteEntryData (4)
'                .BillEntrys(3).MaxRows = 1
'                .Data("page4").Size = 1
                .InsertNewRowAndFill 4, 1, "FWipeItem", .GetFieldValue("FWipeItemSum", , Enu_ValueType_FFND), 1
'                .SetFieldValue "FWipeItem", .GetFieldValue("FWipeItemSum", , Enu_ValueType_FFND), 1
                .SetFieldValue "FDivideDep", .GetFieldValue("FReqDept", , Enu_ValueType_FFND), 1
                .SetFieldValue "FWipeAmt", .GetFieldValue("FWipeAmtSum"), 1
                
            ElseIf iSelBill = 1 Then
                .BillHeads(1).BOSFields("FWipeItemsum").FieldLock = True
                .BillHeads(1).BOSFields("FWipeType").FieldLock = True
                .SetFieldValue "FWipeAmt", .GetFieldValue("FWipeAmtSum"), 1
                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
                
            
            End If
                .BillEntrys(3).Visible = False
        End If
        .BillEntrys(4).Visible = False
'        .RefreshBill
    End With
End Function

'**********************************************************************
'判断
'3 判断当前金额有没有超过预算金额
'参数 cBalanceAmt 预算余额
'      sret 错误返回
'返回值: true 预算余额大于等于报销金额 ,false 预算余额小于报销金额
'***********************************************************************
Private Function compareNum(ByRef lBalanceAmt As Currency, ByRef sRet As String, Optional iType As Integer) As Boolean
    '-------------------------------------------------------------------
    '判断
    '3 判断当前金额有没有超过预算金额
    '-------------------------------------------------------------------
    Dim lAmt As Currency  '借款金额
    Dim lbudget As Currency '预算金额
    Dim lUseAmt As Currency '已用预处金额
    Dim lUseAmt1 As Currency
    Dim lUseAmt2 As Currency
    Dim lUseAmt3 As Currency
    Dim lbudgetID As Long  '预算方案ID
    Dim lDepId As Long  '部门ID
    Dim lDetailId As Long
    Dim lAcctId As Long '会计科目
    Dim lBudgetAccId As Long  '预算科目
    Dim sAccIdDepId As String '预算科目对应会计科目和部门 和字符串
    Dim lBudgetCon As Long '预算控制 0本期预算 1累计预算 2本年预算 3方案预算  4季度预算 5半年预算
    Dim sConBound As String '预算控制范围的字符串
    Dim sConBound1 As String
    Dim rs As New ADODB.Recordset
    Dim sSql As String
    Dim iYear As Integer
    Dim iPeriod As Integer
    Dim i As Integer, j As Integer
    Dim sFid_src As String '源单编号
    Dim sErr As String
        
    On Error GoTo ERR
    With m_BillInterface
         '取对应预算方案
        lbudgetID = lBudgetProjectID
        
        '循环分录中的所有列
        i = 1
beg:        While i <= .Data("Page4").Size
                '对应部门,
                If Trim(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FDivideDep"))("FFLD")) = "" Then
                    i = i + 1
                    GoTo beg
                End If
                lDepId = .Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FDivideDep"))("FFLD")
                
                '取借款金额的值
                If iType = 1 Then
                    lAmt = 0
                Else
                    lAmt = .Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FloanAmt"))("FFLD")
                End If
    
                '会计科目--报销科目=借款科目(如果有借款存在)
                lAcctId = .Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FFLD")

    
                '2根据财务科目内码取预算科目的内码 lBudgetAccId
                sSql = "select FBudgetItem from t_EP_ER_AccToMgAccEntry1 t1  " & _
                                " inner join t_EP_ER_AccToMgAcc t2 on t1.fid=t2.fid " & _
                                " where FAcctID = '" & lAcctId & "' and FDepID  ='" & lDepId & "'"
                 Set rs = .K3Lib.GetData(sSql)
                If rs.State = adStateOpen And rs.RecordCount > 0 Then
                    lBudgetAccId = rs("FBudgetItem")
                Else
                    sErr = sErr & "您录入第" & CStr(i) & "列中的 “会计科目”:" & _
                       CStr(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FFND")) & "-" & CStr(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FDSP")) & _
                        " 和 “部门”" & .Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FDivideDep"))("FFND") & "-" & .Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FDivideDep"))("FDSP") & _
                        " 没有对应预算科目!"
                    compareNum = False
                    sRet = sErr
                    Exit Function
                End If
            
                If rs.State = adStateOpen Then rs.Close

⌨️ 快捷键说明

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