?? 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 接口實(shí)現(xiàn)
'注意: 此方法必須存在, 請勿修改
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
'填寫單據(jù)頭的報(bào)銷總額--取報(bào)銷金額的總和--從分錄1中取報(bào)銷金額的總和
.SetFieldValue "FWipeAmtSum", m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FWipeAmt", "", 0))
'填寫單據(jù)頭的總額借款--取借款金額的總和--從分錄1中取報(bào)銷金額的總和
.SetFieldValue "FLoanAmtSum", m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FLoanAmt", "", 0))
'將單據(jù)頭的報(bào)銷總額--轉(zhuǎn)換為大寫,將報(bào)銷總額轉(zhuǎn)化為大寫
.SetFieldValue "FCapitalAmtSum", PricetoChinese(.GetFieldValue("FWipeAmtSum"))
'填寫單據(jù)頭的--取補(bǔ)領(lǐng)金額 和 退還金額
If .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum") > 0 Then '報(bào)銷金額 大于 借款金額
.SetFieldValue "FSupplyAmtSum", .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum")
.SetFieldValue "FRefundAmtSum", 0
ElseIf .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum") < 0 Then '報(bào)銷金額 小于 借款金額
.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()
'-------------------------------------------------------------------
'新增單據(jù)后,為第三個(gè)單據(jù)體付值
'-------------------------------------------------------------------
With m_BillInterface
'第三個(gè)單據(jù)體
' .DeleteEntryData (4)
.BillEntrys(3).MaxRows = 6
.InsertNewRowAndFill 4, 1, "FChargeType", "市內(nèi)交通費(fèi)"
.InsertNewRowAndFill 4, 2, "FChargeType", "住宿費(fèi)"
.InsertNewRowAndFill 4, 3, "FChargeType", "業(yè)務(wù)招待費(fèi)"
.InsertNewRowAndFill 4, 4, "FChargeType", "會(huì)務(wù)費(fèi)"
.InsertNewRowAndFill 4, 5, "FChargeType", "硬座補(bǔ)貼"
.InsertNewRowAndFill 4, 6, "FChargeType", "其他"
.BillEntrys(1).Visible = False
.BillEntrys(1).Visible = True
.RefreshBill
'-------------------------------------------------------------------
'新增單據(jù)后,取當(dāng)前的預(yù)算方案編號
'-------------------------------------------------------------------
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 "當(dāng)前沒有正在執(zhí)行的預(yù)算!", vbOKOnly + vbExclamation, HINTINFO
lBudgetProjectID = 0
End If
'-------------------------------------------------------------------
'新增單據(jù)后,分割部門隱藏
'-------------------------------------------------------------------
.BillEntrys(1).BOSFields("FDivideDep").Visible = False
iRet = 0
.RefreshBill
End With
End Sub
'*********************************************************************
'選單后,為分錄3付值,并向單據(jù)頭的 報(bào)銷金額付值 ,同時(shí)轉(zhuǎn)換為大寫
'*********************************************************************
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))
'將單據(jù)頭的報(bào)銷總額--轉(zhuǎn)換為大寫,將報(bào)銷總額轉(zhuǎn)化為大寫
.SetFieldValue "FCapitalAmtSum", PricetoChinese(.GetFieldValue("FWipeAmtSum"))
.RefreshBill
End With
End Sub
'*********************************************************************
'保存前,進(jìn)行報(bào)銷金額的判斷
'1 是否錄入差旅費(fèi)明細(xì)
'2 報(bào)銷金額是否大于預(yù)算余額
'*********************************************************************
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
'判斷報(bào)銷項(xiàng)目是否與借款項(xiàng)目相等
'判斷是否錄入了差旅費(fèi)的明細(xì),且明細(xì)是否和總和相等
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) & "行,“報(bào)銷項(xiàng)目”與選擇的借款單的“借款項(xiàng)目”不相同,不能保存!"
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 = "請錄入差旅費(fèi)報(bào)銷信息的明細(xì)項(xiàng)!" & vbCrLf & "或請檢查“差旅費(fèi)明細(xì)”總額是否與報(bào)銷信息中的“差旅費(fèi)”報(bào)銷金額相等!"
bCancel = True
End If
' MsgBox sErr, vbOKOnly + vbInformation, HINTINFO
' Exit Sub
End If
'進(jìn)行報(bào)銷金額的判斷
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
'*********************************************************************
'數(shù)據(jù)更改:
'1 根據(jù)報(bào)銷金額的更改,
' 1更新單據(jù)體 補(bǔ)領(lǐng)金額 和退還金額
' 2更新單據(jù)頭 報(bào)銷總額,并更新大寫
' 3更新單據(jù)頭 補(bǔ)領(lǐng)金額 和退還金額
'2 分錄1中的報(bào)銷項(xiàng)目更改時(shí)(即新增一個(gè)報(bào)銷項(xiàng)目時(shí))將報(bào)銷部門帶入
'*********************************************************************
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中的報(bào)銷金額
If dct("FFieldName") = "FWipeAmt" Then
'填寫單據(jù)體的補(bǔ)領(lǐng)金額 和退還金額
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
'填寫單據(jù)頭的報(bào)銷總額--取報(bào)銷金額的總和--從分錄1中取報(bào)銷金額的總和
.SetFieldValue "FWipeAmtSum", m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FWipeAmt", "", 0))
'將單據(jù)頭的報(bào)銷總額--轉(zhuǎn)換為大寫,將報(bào)銷總額轉(zhuǎn)化為大寫
.SetFieldValue "FCapitalAmtSum", PricetoChinese(.GetFieldValue("FWipeAmtSum"))
'填寫單據(jù)頭的--取補(bǔ)領(lǐng)金額 和 退還金額
If .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum") > 0 Then '報(bào)銷金額 大于 借款金額
.SetFieldValue "FSupplyAmtSum", .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum")
.SetFieldValue "FRefundAmtSum", 0
ElseIf .GetFieldValue("FWipeAmtSum") - .GetFieldValue("FLoanAmtSum") < 0 Then '報(bào)銷金額 小于 借款金額
.SetFieldValue "FRefundAmtSum", .GetFieldValue("FLoanAmtSum") - .GetFieldValue("FWipeAmtSum")
.SetFieldValue "FSupplyAmtSum", 0
Else
.SetFieldValue "FSupplyAmtSum", 0
.SetFieldValue "FRefundAmtSum", 0
End If
End If
'改變分錄1中的報(bào)銷項(xiàng)目,將部門帶進(jìn)去
If dct("FFieldName") = "FWipeItem" Then
.SetFieldValue "FDivideDep", .GetFieldValue("FReqDept", , Enu_ValueType_FFND)
End If
'是否分割部門進(jìn)行修改
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 判斷當(dāng)前金額有沒有超過預(yù)算金額
'參數(shù) cBalanceAmt 預(yù)算余額
' sret 錯(cuò)誤返回
'返回值: true 預(yù)算余額大于等于報(bào)銷金額 ,false預(yù)算余額小于報(bào)銷金額
'*********************************************************************
Private Function compareNum(ByRef lBalanceAmt As Currency, ByRef sRet As String, Optional iType As Integer) As Boolean
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -