📄 bos_wipe3bill_plugins.cls
字号:
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 + -