📄 bos_wipe1bill_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_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 + -