?? bos_wipebill_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_WipeBill_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
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 iRet = 1 Then
.BillEntrys(1).BOSFields("FDivideDep").Visible = True
Exit Sub
Else
.BillEntrys(1).BOSFields("FDivideDep").Visible = False
Exit Sub
End If
End With
End Sub
Private Sub m_BillInterface_AfterNewBill()
'-------------------------------------------------------------------
'新增單據后,為第三個單據體付值
'-------------------------------------------------------------------
With m_BillInterface
'第三個單據體
' .DeleteEntryData (4)
.BillEntrys(3).MaxRows = 6
.InsertNewRowAndFill 4, 1, "FChargeType", "市內交通費"
.InsertNewRowAndFill 4, 2, "FChargeType", "住宿費"
.InsertNewRowAndFill 4, 3, "FChargeType", "業務招待費"
.InsertNewRowAndFill 4, 4, "FChargeType", "會務費"
.InsertNewRowAndFill 4, 5, "FChargeType", "硬座補貼"
.InsertNewRowAndFill 4, 6, "FChargeType", "其他"
.BillEntrys(1).Visible = False
.BillEntrys(1).Visible = True
.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
'-------------------------------------------------------------------
'新增單據后,分割部門隱藏
'-------------------------------------------------------------------
.BillEntrys(1).BOSFields("FDivideDep").Visible = False
iRet = 0
.RefreshBill
End With
End Sub
'*********************************************************************
'選單后,為分錄3付值,并向單據頭的 報銷金額付值 ,同時轉換為大寫
'*********************************************************************
Private Sub m_BillInterface_AfterSelBill(ByVal lSelBillType As Long)
m_BillInterface.DeleteEntryData (4)
m_BillInterface_AfterNewBill
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"))
.RefreshBill
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
With m_BillInterface
'判斷報銷項目是否與借款項目相等
'判斷是否錄入了差旅費的明細,且明細是否和總和相等
lsum = 0
For i = 1 To .Data("page2").Size
If InStr(1, .Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FDSP"), "差旅") Then
lsum = lsum + CCur(.Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FWipeAmt"))("FFLD"))
bret = True
End If
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) & "行,“報銷項目”與選擇的借款單的“借款項目”不相同,不能保存!"
bCancel = True
Exit Sub
End If
Next i
If bret = True Then
If lsum <> .Sum(.GetFieldInfoByKey("FTraAmt", "", 0)) + .Sum(.GetFieldInfoByKey("FSubsidyAmt", "", 0)) + .Sum(.GetFieldInfoByKey("FChargeAmt", "", 0)) Then
sErr = "請錄入差旅費報銷信息的明細項!" & vbCrLf & "或請檢查“差旅費明細”總額是否與報銷信息中的“差旅費”報銷金額相等!"
bCancel = True
End If
' MsgBox sErr, vbOKOnly + vbInformation, HINTINFO
' Exit Sub
End If
'進行報銷金額的判斷
If compareNum(lBalanceAmt, sRet) = False Then
sErr = sErr & vbCrLf & sRet
bCancel = True
End If
If sErr <> "" Then MsgBox sErr, vbOKOnly + vbInformation, HINTINFO
End With
End Sub
'*********************************************************************
'數據更改:
'1 根據報銷金額的更改,
' 1更新單據體 補領金額 和退還金額
' 2更新單據頭 報銷總額,并更新大寫
' 3更新單據頭 補領金額 和退還金額
'2 分錄1中的報銷項目更改時(即新增一個報銷項目時)將報銷部門帶入
'*********************************************************************
Private Sub m_BillInterface_Change(ByVal dct As KFO.IDictionary, ByVal dctFld As KFO.IDictionary, ByVal Col As Long, ByVal Row As Long, Cancel As Boolean)
With m_BillInterface
'改變分錄1中的報銷金額
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中的報銷項目,將部門帶進去
If dct("FFieldName") = "FWipeItem" Then
.SetFieldValue "FDivideDep", .GetFieldValue("FReqDept", , Enu_ValueType_FFND)
End If
'是否分割部門進行修改
If dct("FFieldName") = "FCheckDep" Then
If .GetFieldValue("FCheckDep") = 1 Then
iRet = 1
' .BillEntrys(1).BOSFields("FDivideDep").LabelWidth = 0
.BillEntrys(1).BOSFields("FDivideDep").Visible = True
.RefreshBill
Else
iRet = 0
.BillEntrys(1).BOSFields("FDivideDep").Visible = False
.RefreshBill
End If
End If
End With
End Sub
'*********************************************************************
'判斷
'3 判斷當前金額有沒有超過預算金額
'參數 cBalanceAmt 預算余額
' sret 錯誤返回
'返回值: true 預算余額大于等于報銷金額 ,false預算余額小于報銷金額
'*********************************************************************
Private Function compareNum(ByRef lBalanceAmt As Currency, ByRef sRet As String, Optional iType As Integer) As Boolean
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -