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

📄 bos_wipe1bill_plugins.cls

📁 完成报销系统的业务流程;在报销系统中达到预算控制目的;将历史数据导入金蝶账套生成历史备查数据。
💻 CLS
📖 第 1 页 / 共 3 页
字号:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "BOS_Wipe1Bill_PlugIns"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True
Attribute VB_Description = "This is BillEvent Interface Class, made by K3BOSPLUGINSWIZAED"
Option Explicit

 
'定义 BillEvent 接口. 必须具有的声明, 以此来获得事件
Private WithEvents m_BillInterface  As BillEvent
Attribute m_BillInterface.VB_VarHelpID = -1
Dim iShowDepType As Integer
Dim tmpFloanItem As String
 
Public Sub Show(ByVal oBillInterface As Object)
 
    'BillEvent 接口实现
    '注意: 此方法必须存在, 请勿修改
    Set m_BillInterface = oBillInterface
     With m_BillInterface
        .BillEntrys.Item(1).BOSFields("FWipeItem").Filter = "t_Account.FNumber like '4105%' or t_Account.FNumber like '55%' " 'ORDER BY substring(FNumber,1,1) desc"
        .BillEntrys(1).BOSFields("FDivideDep").Visible = False
        .RefreshBill
    End With

End Sub

Private Sub Class_Terminate()
 
    '释放接口对象
    '注意: 此方法必须存在, 请勿修改
    Set m_BillInterface = Nothing

End Sub

Private Sub m_BillInterface_AfterDeleteRow(ByVal Index As Long, ByVal lRow As Long)
    With m_BillInterface
         '填写单据头的报销总额--取报销金额的总和--从分录1中取报销金额的总和
         .SetFieldValue "FWipeAmtSum", m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FWipeAmt", "", 0))
        '填写单据头的总额借款--取借款金额的总和--从分录1中取报销金额的总和
         .SetFieldValue "FLoanAmtSum", m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FLoanAmt", "", 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 With
End Sub



'
Private Sub m_BillInterface_AfterLoadBill()
        '-------------------------------------------------------------------
        '加载单据后,判断标志,看是否显示单据体里的分割部门
        '-------------------------------------------------------------------
    With m_BillInterface
         
        If iShowDepType = 1 _
        Or .GetFieldValue("FCheckDep", , Enu_ValueType_FFLD) = 1 Then
            iShowDepType = 1
            .BillEntrys(1).BOSFields("FDivideDep").Visible = True
            .SetFieldValue "FCheckDep", 1

        Else
            iShowDepType = 0
            .BillEntrys(1).BOSFields("FDivideDep").Visible = False
            .SetFieldValue "FCheckDep", 0

        End If
        .BillEntrys(2).Visible = False
        If .BillStatus = Enu_BillStatusExt_New Then
            .BillCtl.DoSelBill 110000200
        End If

    End With
End Sub

Private Sub m_BillInterface_AfterNewBill()

    With m_BillInterface
        '-------------------------------------------------------------------
        '新增单据后,取当前的预算方案编号
        '-------------------------------------------------------------------
        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
    
        '-------------------------------------------------------------------
        '新增单据后,分割部门隐藏
        '-------------------------------------------------------------------
        iShowDepType = 0
        ShowDep iShowDepType
         .BillEntrys(2).Visible = False
        '-------------------------------------------------------------------
        '新增单据后,弹出选单窗口
        '-------------------------------------------------------------------
        If .BillStatus = Enu_BillStatusExt_New Then
            .BillCtl.DoSelBill 110000200
        End If
    End With
End Sub

Private Sub m_BillInterface_AfterSave(bCancel As Boolean)
'自动启动审核
    With m_BillInterface
        Dim bStatus As Boolean
        bStatus = .MultiCheckMgr.CheckStarted
        If bStatus = False Then bStatus = .MultiCheckMgr.MultiCheckBill(.Data("FID"))
    End With
End Sub

'*********************************************************************
'选单后,向单据头的 报销金额付值 ,同时转换为大写
'*********************************************************************
Private Sub m_BillInterface_AfterSelBill(ByVal lSelBillType As Long)

    With m_BillInterface
        .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
        ShowDep iShowDepType
    End With
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
        If .GetFieldValue("FWipeAmtSum") = 0 Then
              bCancel = True
              MsgBox "报销金额不能为空!", vbOKOnly + vbExclamation, HINTINFO
              Exit Sub
        End If
    If .GetFieldValue("FCheckDep") = 1 Then
        '判断在分割部门的情况下,分割分录>1
        If .Data("page2").Size < 2 Then
            MsgBox "在选择要分割部门时,请录入超过一条以上的部门分割记录!", vbOKOnly + vbInformation, HINTINFO
            bCancel = True
            Exit Sub
        End If
    End If
    '判断报销项目是否与借款项目相等
    '判断所有借款方式 是否与支出方式相同
        lsum = 0
        For i = 1 To .Data("page2").Size
             If Trim(.Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FFLD")) <> Trim(.Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FLoanItem"))("FFLD")) And _
                Trim(.Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FLoanItem"))("FFLD")) <> "" Then
                MsgBox "第" & CStr(i) & "行,“报销项目”与选择的借款单的“借款项目”不相同,不能保存!", vbOKOnly + vbInformation, HINTINFO
                bCancel = True
                Exit Sub
             End If
             If Trim(.Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FLoanType"))("FFLD")) <> "" And _
                Trim(.Data("Page2").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 compareNum(lBalanceAmt, sRet) = False Then
            sErr = sErr & vbCrLf & sRet
            bCancel = True
        End If
        If sErr <> "" Then MsgBox sErr, vbOKOnly + vbInformation, HINTINFO
       
 '判断是否分割部门,是则将分割部门和分割金额写到分录4
        .DeleteEntryData (3)

        If .GetFieldValue("FCheckDep") = 1 Then
'
            For i = 1 To .Data("page2").Size
                  .InsertNewRowAndFill 3, i, "FBase", .GetFieldValue("FDivideDep", i, Enu_ValueType_FFND)
                  .SetFieldValue "FAmount", .GetFieldValue("FWipeAmt", i), i
            Next i
            .BillEntrys(2).MaxRows = .Data("page2").Size
        Else
            ShowDep 0
        End If
         .BillEntrys(2).Visible = False
    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 Then
        tmpFloanItem = Trim(m_BillInterface.GetFieldValue("FLoanItem", Row, Enu_ValueType_FDSP))

⌨️ 快捷键说明

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