?? bos_loanbill_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_LoanBill_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"
'定義 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
.BillHeads.Item(1).BOSFields("FLoanItem").Filter = "t_Account.FNumber like '4105%' or t_Account.FNumber like '55%' " 'ORDER BY substring(FNumber,1,1) desc"
End With
End Sub
Private Sub Class_Terminate()
'釋放接口對象
'注意: 此方法必須存在, 請勿修改
Set m_BillInterface = Nothing
End Sub
Private Sub m_BillInterface_AfterLoadBill()
'-------------------------------------------------------------------
'1在借款方式為“支票,匯票,限額支票”時,顯示 字段“限額” 鎖定字段 “借款金額”
'-------------------------------------------------------------------
With m_BillInterface
If .GetFieldValue("floantype", , Enu_ValueType_FFND) = "LOAN04" Then
.ShowHideField .GetFieldInfoByKey("FMaxAmount", "", 0), True
.LockCell .GetFieldInfoByKey("FAmount", "", 0), 0, True
.SetFieldValue "FAmount", 0
Else
.ShowHideField .GetFieldInfoByKey("FMaxAmount", "", 0), False
.LockCell .GetFieldInfoByKey("FAmount", "", 0), 0, False
.SetFieldValue "FMaxAmount", 0
End If
End With
End Sub
Private Sub m_BillInterface_AfterNewBill()
'-------------------------------------------------------------------
'新增單據后,取當前的預算方案編號
'-------------------------------------------------------------------
Dim rs As New ADODB.Recordset
Set rs = m_BillInterface.K3Lib.GetData("select FProjectID,FName from t_mgBudgetSet where fexec=1")
If rs.State = adStateOpen And rs.RecordCount > 0 Then
m_BillInterface.SetFieldValue "FBudgetScheme", rs("FName")
lBudgetProjectID = rs("FProjectID")
Else
MsgBox "當前沒有正在執行的預算!", vbOKOnly + vbExclamation, HINTINFO
lBudgetProjectID = 0
End If
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
'**********************************************************************
'保存單據前,判斷
'1 有沒有當前執行預算
'2 金額和限額只可有一個有值 ,同時將有效值放入借款金額字段中
'3 在會計科目與預算科目的對應表中是否存在這個會計科目+部門
'4 判斷當前金額有沒有超過預算金額
'**********************************************************************
Private Sub m_BillInterface_BeforeSave(bCancel As Boolean)
Dim rs As New ADODB.Recordset
'-------------------------------------------------------------------
'1 有沒有當前執行預算
'-------------------------------------------------------------------
Set rs = m_BillInterface.K3Lib.GetData("select FProjectID,FName from t_mgBudgetSet where fexec=1")
If rs.State = adStateOpen And rs.RecordCount > 0 Then
m_BillInterface.SetFieldValue "FBudgetScheme", rs("FName")
lBudgetProjectID = rs("FProjectID")
Else
MsgBox "當前沒有正在執行的預算,不能申請借款!", vbOKOnly + vbInformation, HINTINFO
bCancel = True
Exit Sub
End If
'-------------------------------------------------------------------
'2 金額和限額只可有一個有值
'-------------------------------------------------------------------
If m_BillInterface.GetFieldValue("FAmount") = 0 And m_BillInterface.GetFieldValue("FMaxAmount") = 0 Then
MsgBox "請填寫借款金額或限額!", vbOKOnly + vbInformation, HINTINFO
bCancel = True
Exit Sub
Else
'將金額或限額的值放到借款金額中去,做為控制字段
If m_BillInterface.GetFieldValue("FAmount") <> 0 Then
m_BillInterface.SetFieldValue "FCtlAmt", m_BillInterface.GetFieldValue("FAmount")
Else
m_BillInterface.SetFieldValue "FCtlAmt", m_BillInterface.GetFieldValue("FMaxAmount")
End If
End If
'-------------------------------------------------------------------
'4 判斷當前金額有沒有超過預算金額
'-------------------------------------------------------------------
Dim bret As Boolean
Dim lBalanceAmt As Currency, sRet As String
bret = compareNum(lBalanceAmt, sRet)
If bret = False Then
MsgBox sRet, vbOKOnly + vbInformation, HINTINFO
bCancel = True
Else
m_BillInterface.SetFieldValue "FBudgetAmt", lBalanceAmt
End If
Set rs = Nothing
End Sub
'**********************************************************************
'值更改時:
'1在借款方式為“支票”時,顯示 字段“限額”
'2 '在借款方式為“支票”時,字段“限額”,“金額”只能錄入一個
'同時將它轉換為大寫
'4'在申請部門和借款項目都不為空時,顯示預算余額
'**********************************************************************
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)
Dim FAmt
Dim FMaxAmt
Dim bret As Boolean, sRet As String, lBalanceAmt As Currency
With m_BillInterface
'-------------------------------------------------------------------
'1在借款方式為“支票,匯票,限額支票”時,顯示 字段“限額” 鎖定字段 “借款金額”
'-------------------------------------------------------------------
If dct("FFieldName") = "FLoanType" Then
If .GetFieldValue("floantype", , Enu_ValueType_FFND) = "LOAN04" Then
.ShowHideField .GetFieldInfoByKey("FMaxAmount", "", 0), True
.LockCell .GetFieldInfoByKey("FAmount", "", 0), 0, True
.SetFieldValue "FAmount", 0
Else
.ShowHideField .GetFieldInfoByKey("FMaxAmount", "", 0), False
.LockCell .GetFieldInfoByKey("FAmount", "", 0), 0, False
.SetFieldValue "FMaxAmount", 0
End If
End If
'-------------------------------------------------------------------
'2在借款方式為“支票,匯票,限額支票”時,字段“限額”,“金額”只能錄入一個
'同時將它轉換為大寫
'-------------------------------------------------------------------
If dct("FFieldName") = "FAmount" Or dct("FFieldName") = "FMaxAmount" Then
If .GetFieldValue("FAmount") <> 0 And .GetFieldValue("FMaxAmount") <> 0 Then
.SetFieldValue dct("FFieldName"), 0
MsgBox "限額和金額只能填寫一個值!", vbOKOnly + vbInformation, HINTINFO
Exit Sub
End If
'轉換為大寫
.SetFieldValue "FCapitalAmt", PricetoChinese(.GetFieldValue(dct("FFieldName")))
End If
'-------------------------------------------------------------------
'3在申請部門和借款項目都不為空時,顯示預算余額
'-------------------------------------------------------------------
If dct("FFieldName") = "FReqDept" Or dct("FFieldName") = "FLoanItem" Then
If .GetFieldValue("FReqDept") <> "" And .GetFieldValue("FLoanItem") <> "" Then
bret = compareNum(lBalanceAmt, sRet, 1)
If bret Then
.SetFieldValue "FBudgetAmt", lBalanceAmt
Else
.SetFieldValue "FBudgetAmt", 0
MsgBox sRet, vbOKOnly + vbInformation, HINTINFO
End If
End If
End If
End With
End Sub
'*********************************************************************
'判斷
'該會計科目和部門是否在中間表中存在
'*********************************************************************
Private Function isExist(iAccId As Long, iDepId As Long) As Boolean
Dim sSql As String
Dim rs As New ADODB.Recordset
With m_BillInterface
sSql = " select count(*) as cun from t_EP_ER_AccToMgAccEntry1 where FAcctid=" & iAccId & " and FDepID= " & iDepId
Set rs = .K3Lib.GetData(sSql)
If rs.State = adStateOpen And rs("cun") = 0 Then
isExist = False
Else
isExist = True
End If
End With
Set rs = Nothing
End Function
'*********************************************************************
'判斷
'3 判斷當前金額有沒有超過預算金額
'*********************************************************************
Private Function compareNum(ByRef lBalanceAmt As Currency, ByRef sRet As String, Optional iType As Integer) As Boolean
Dim lAmt As Currency '借款金額
Dim lbudget As Currency '預算金額
Dim lUseAmt As Currency '已用預處金額
Dim lUseAmt1 As Currency
Dim lUseAmt2 As Currency
Dim lUseAmt21 As Currency
Dim lUseAmt22 As Currency
Dim lUseAmt23 As Currency
Dim lbudgetID As Long '預算方案ID
Dim lDepId As Long '部門ID
Dim lDetailId As Long
Dim lAcctId As Long '會計科目
Dim lBudgetAccId As Long '預算科目
Dim sAccIdDepId As String '預算科目對應的會計科目和部門
Dim lBudgetCon As Long '預算控制 0本期預算 1累計預算 2本年預算 3方案預算 4季度預算 5半年預算
Dim sConBound As String '預算控制范圍的字符串
Dim sConBound1 As String
Dim rs As New ADODB.Recordset
Dim i As Integer
Dim sSql As String
On Error GoTo ERR
With m_BillInterface
'取借款金額的值
If iType = 1 Then
lAmt = 0
Else
lAmt = CNulls(m_BillInterface.GetFieldValue("FCtlAmt"), 0)
End If
'取對應預算方案
lbudgetID = lBudgetProjectID
'對應部門,
lDepId = .GetFieldValue("FReqDept")
'會計科目
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -