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

📄 bos_wipe3bill_plugins.cls

📁 完成报销系统的业务流程;在报销系统中达到预算控制目的;将历史数据导入金蝶账套生成历史备查数据。
💻 CLS
📖 第 1 页 / 共 4 页
字号:
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_Wipe3Bill_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
Dim iRet As Integer
 
'定义 BillEvent 接口. 必须具有的声明, 以此来获得事件
Private WithEvents m_BillInterface  As BillEvent
Attribute m_BillInterface.VB_VarHelpID = -1
Dim iShowDepType As Integer
Dim iSelBill As Integer
Dim tmpFloanItem As String

Public Sub Show(ByVal oBillInterface As Object)
 
    'BillEvent 接口实现
    '注意: 此方法必须存在, 请勿修改
    Set m_BillInterface = oBillInterface
    With m_BillInterface
        .BillEntrys.Item(3).BOSFields("FWipeItem").Filter = "t_Account.FNumber like '4105%' or t_Account.FNumber like '55%' " 'ORDER BY substring(FNumber,1,1) desc"
        .BillHeads.Item(1).BOSFields("FWipeItemSum").Filter = "t_Account.FNumber like '4105%' or t_Account.FNumber like '55%' " 'ORDER BY substring(FNumber,1,1) desc"
        
        iShowDepType = 0
        .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
         '-------------------------------------------------------------------
        '删除单据体2中的一行
         '-------------------------------------------------------------------
        If Index = 1 Then
            '第二个单据体
            .DeleteEntryData (3)
'            .BillEntrys(2).MaxRows = 6
            .InsertNewRowAndFill 3, 1, "FChargeType", "市内交通费"
            .InsertNewRowAndFill 3, 2, "FChargeType", "住宿费"
            .InsertNewRowAndFill 3, 3, "FChargeType", "业务招待费"
            .InsertNewRowAndFill 3, 4, "FChargeType", "会务费"
            .InsertNewRowAndFill 3, 5, "FChargeType", "硬座补贴"
            .InsertNewRowAndFill 3, 6, "FChargeType", "其他"
             MsgBox "其他费用中的项目是固定的不能删除或新增!", vbOKOnly + vbExclamation, HINTINFO
            .RefreshBill
'        '-------------------------------------------------------------------
'        '删除单据体3中的一行
'        '-------------------------------------------------------------------
        ElseIf Index = 2 Then
            '更新借款金额
            
'            '填写单据头的报销总额--取报销金额的总和--从分录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
        ElseIf Index = 0 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))
            '没有分割部门时,将报销总额付值给分录3的第一行
            If .GetFieldValue("FCheckDep", , Enu_ValueType_FFLD) = 0 Then
                .SetFieldValue "FWipeAmt", .GetFieldValue("FWipeAmtSum"), 1
            End If
             '将单据头的报销总额--转换为大写,将报销总额转化为大写
           '填写单据头的总额借款--取借款金额的总和--从分录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 If
        

    End With
End Sub


Private Sub m_BillInterface_AfterLoadBill()
    '-------------------------------------------------------------------
    '加载单据后,判断标志,看是否显示单据体里的分割部门
    '-------------------------------------------------------------------
    Dim i As Long
    With m_BillInterface
        .BillEntrys(4).Visible = False
        If iShowDepType = 1 Or .GetFieldValue("FCheckDep", , Enu_ValueType_FFLD) = 1 Then
            iShowDepType = 1
            .BillEntrys(3).Visible = True
            .SetFieldValue "FCheckDep", 1
      
        Else
            iShowDepType = 0
            .BillEntrys(3).Visible = False
            .SetFieldValue "FCheckDep", 0
      
        End If
        For i = 1 To .Data("Page4").Size
            If Trim(.GetFieldValue("FLoanItem", i, Enu_ValueType_FDSP)) <> "" Then
                iSelBill = 1
            End If
        Next i
        If iSelBill <> 1 Then iSelBill = 0
    End With
End Sub

Private Sub m_BillInterface_AfterNewBill()
    '-------------------------------------------------------------------
    '新增单据后,为第二个单据体付值
    '-------------------------------------------------------------------
    With m_BillInterface
        '第二个单据体
        .DeleteEntryData (3)
'        .BillEntrys(2).MaxRows = 6
        .InsertNewRowAndFill 3, 1, "FChargeType", "市内交通费"
        .InsertNewRowAndFill 3, 2, "FChargeType", "住宿费"
        .InsertNewRowAndFill 3, 3, "FChargeType", "业务招待费"
        .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
        '-------------------------------------------------------------------
        '新增单据后,分割部门隐藏
        '-------------------------------------------------------------------
        
        iShowDepType = 0
        iSelBill = 0
        ShowDep iShowDepType
       .BillEntrys(4).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
        If .Data("PAGE2").Size > .Data("PAGE3").Size Then
            Dim sSql As String
            Dim i As Long
            For i = 7 To .Data("PAGE2").Size
                sSql = "insert into t_EP_ER_WipeOff3Entry2(fid,FIndex,FChargeType,FChargeNUm,FChargeAmt) values(" & _
                 .CurBillID & "," & i & "," & "'',0,0)"
                 .K3Lib.UpdateData sSql
             Next i
        ElseIf .Data("PAGE3").Size > 6 And .Data("PAGE2").Size < .Data("PAGE3").Size Then
            For i = .Data("PAGE3").Size To (.Data("PAGE2").Size + 1) Step -1
                If i > 6 Then
                    sSql = "delete from t_EP_ER_WipeOff3Entry2 where fid = " & .CurBillID & " and  FIndex =" & i
                    .K3Lib.UpdateData sSql
                End If
            Next i
        
        End If
        .RefreshBill
        '自动启动审核

        Dim bStatus As Boolean
        bStatus = .MultiCheckMgr.CheckStarted
        If bStatus = False Then bStatus = .MultiCheckMgr.MultiCheckBill(.Data("FID"))


    End With
End Sub

'*********************************************************************
'选单后,为分录3付值,并向单据头的 报销金额付值 ,同时转换为大写
'*********************************************************************
Private Sub m_BillInterface_AfterSelBill(ByVal lSelBillType As Long)
    m_BillInterface.DeleteEntryData (3)
    With m_BillInterface
            '第二个单据体
        .DeleteEntryData (3)
''        .BillEntrys(2).MaxRows = 6
        .InsertNewRowAndFill 3, 1, "FChargeType", "市内交通费"
        .InsertNewRowAndFill 3, 2, "FChargeType", "住宿费"
        .InsertNewRowAndFill 3, 3, "FChargeType", "业务招待费"

⌨️ 快捷键说明

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