?? bos_wipe1bill_plugins.cls
字號:
End If
End Sub
'*********************************************************************
'數(shù)據(jù)更改:
'0 報銷項目 改變,
' 1不允許 報銷項目為 差旅費
' 2分錄1中的報銷項目更改時(即新增一個報銷項目時)將報銷部門帶入
'1 申請部門 改變
' 1,如果分割部門沒有值,則將申請部門的值付到單據(jù)體的分割部門上
'2 根據(jù)報銷金額的更改,
' 1更新單據(jù)體 補領(lǐng)金額 和退還金額
' 2更新單據(jù)頭 報銷總額,并更新大寫
' 3更新單據(jù)頭 補領(lǐng)金額 和退還金額
' 3 是否分割部門 改變
' 1 顯示單據(jù)體中的分割部門
'*********************************************************************
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 i As Integer
With m_BillInterface
'-------------------------------------------------------------------
'報銷項目 改變
'-------------------------------------------------------------------
If dct("FFieldName") = "FWipeItem" Then
' 不允許 報銷項目為 差旅費
If InStr(1, .Data("Page2").Item(Row)(.DataSrv.TableInfo("map")("FWipeItem"))("FDSP"), "差旅") Then
.SetFieldValue "FWipeItem", 0
MsgBox "支出憑單不能報銷差旅費!", vbOKOnly + vbInformation, HINTINFO
Exit Sub
End If
'改變分錄1中的報銷項目,將部門帶進去
If Trim(.GetFieldValue("FDivideDep", Row, Enu_ValueType_FDSP)) = "" Then
.SetFieldValue "FDivideDep", .GetFieldValue("FReqDept", , Enu_ValueType_FFND), Row
End If
' '改變報銷項目,將報銷項目編號帶出來
' .SetFieldValue "FText", .GetFieldValue("FWipeItem", Row, Enu_ValueType_FDSP), Row
End If
'-------------------------------------------------------------------
'申請部門變更時,如果分割部門沒有值,則將申請部門的值付到單據(jù)體的分割部門上
'-------------------------------------------------------------------
If dct("FFieldName") = "FReqDept" Then
i = 1
While i <= .Data("Page2").Size
If Trim(.GetFieldValue("FDivideDep", i, Enu_ValueType_FDSP)) = "" Or .GetFieldValue("FCheckDep") = 0 Then
.SetFieldValue "FDivideDep", .GetFieldValue("FReqDept", , Enu_ValueType_FFND), i
End If
i = i + 1
Wend
End If
'-------------------------------------------------------------------
'改變分錄1中的報銷金額
'-------------------------------------------------------------------
If dct("FFieldName") = "FWipeAmt" Then
'填寫單據(jù)體的補領(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ù)頭的報銷總額--取報銷金額的總和--從分錄1中取報銷金額的總和
.SetFieldValue "FWipeAmtSum", m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FWipeAmt", "", 0))
'將單據(jù)頭的報銷總額--轉(zhuǎn)換為大寫,將報銷總額轉(zhuǎn)化為大寫
.SetFieldValue "FCapitalAmtSum", PricetoChinese(.GetFieldValue("FWipeAmtSum"))
'填寫單據(jù)頭的--取補領(lǐng)金額 和 退還金額
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
'-------------------------------------------------------------------
'是否分割部門進行修改
'-------------------------------------------------------------------
If dct("FFieldName") = "FCheckDep" Then
i = 1
While i <= .Data("Page2").Size
If .GetFieldValue("FCheckDep") = 0 Then
.SetFieldValue "FDivideDep", .GetFieldValue("FReqDept", , Enu_ValueType_FFND), i
End If
i = i + 1
Wend
ShowDep CInt(.GetFieldValue("FCheckDep"))
End If
End With
End Sub
'是否顯示分割部門
Private Function ShowDep(iType As Integer)
With m_BillInterface
If iType = 1 Then
iShowDepType = 1
.SetFieldValue "FCheckDep", 1
.BillEntrys(1).BOSFields("FDivideDep").Visible = True
iShowDepType = 0
.SetFieldValue "FCheckDep", 0
.BillEntrys(1).BOSFields("FDivideDep").Visible = False
End If
.BillEntrys(2).Visible = False
' .RefreshBill
Exit Function
End With
End Function
'*********************************************************************
'判斷
'3 判斷當前金額有沒有超過預算金額
'參數(shù) cBalanceAmt 預算余額
' sret 錯誤返回
'返回值: true 預算余額大于等于報銷金額 ,false預算余額小于報銷金額
'*********************************************************************
Private Function compareNum(ByRef lBalanceAmt As Currency, ByRef sRet As String, Optional iType As Integer) As Boolean
'-------------------------------------------------------------------
'判斷
'3 判斷當前金額有沒有超過預算金額
'-------------------------------------------------------------------
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 lUseAmt3 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 sSql As String
Dim iYear As Integer
Dim iPeriod As Integer
Dim i As Integer, j As Integer
Dim sFid_src As String '源單編號
Dim sErr As String
On Error GoTo ERR
With m_BillInterface
'取對應預算方案
lbudgetID = lBudgetProjectID
'循環(huán)分錄中的所有列
i = 1
beg: While i <= .Data("Page2").Size
'對應部門,
If Trim(.Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FDivideDep"))("FFLD")) = "" Then
i = i + 1
GoTo beg
End If
lDepId = .Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FDivideDep"))("FFLD")
'取借款金額的值
If iType = 1 Then
lAmt = 0
Else
lAmt = .Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FloanAmt"))("FFLD")
End If
'會計科目--報銷科目=借款科目(如果有借款存在)
lAcctId = .Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FFLD")
'2根據(jù)財務科目內(nèi)碼取預算科目的內(nèi)碼 lBudgetAccId
sSql = "select FBudgetItem from t_EP_ER_AccToMgAccEntry1 t1 " & _
" inner join t_EP_ER_AccToMgAcc t2 on t1.fid=t2.fid " & _
" where FAcctID = '" & lAcctId & "' and FDepID ='" & lDepId & "'"
Set rs = .K3Lib.GetData(sSql)
If rs.State = adStateOpen And rs.RecordCount > 0 Then
lBudgetAccId = rs("FBudgetItem")
Else
sErr = sErr & "您錄入第" & CStr(i) & "列中的 “會計科目”:" & _
CStr(.Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FFND")) & "-" & CStr(.Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FDSP")) & _
" 和 “部門”" & .Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FDivideDep"))("FFND") & "-" & .Data("Page2").Item(i)(.DataSrv.TableInfo("map")("FDivideDep"))("FDSP") & _
" 沒有對應預算科目!"
compareNum = False
sRet = sErr
Exit Function
End If
If rs.State = adStateOpen Then rs.Close
'取預算范圍,是月還是季還是年,沒有的話,默認為季度預算
Set rs = .K3Lib.GetData("select FValue from T_SystemProfile where FCategory='mg' and FKey='BudGet_Con'")
If rs.State = adStateOpen And rs.RecordCount > 0 Then
lBudgetCon = rs("FValue")
Else
lBudgetCon = 4
End If
If rs.State = adStateOpen Then rs.Close
'3 根據(jù)預算類型進行條件拼寫
' iYear = CInt(.K3Lib.GetData("select FValue from t_systemprofile where FCategory='GL' and FKey='CurrentYear'")("FValue"))
' iPeriod = CInt(.K3Lib.GetData("select FValue from t_systemprofile where FCategory='GL' and FKey='CurrentPeriod'")("FValue"))
' iYear = Left(.K3Lib.GetData("select convert(varchar(19),getdate(),21) as date")("Date"), 4)
' iPeriod = Mid(.K3Lib.GetData("select convert(varchar(19),getdate(),21) as date")("Date"), 6, 2)
iYear = Left(.GetFieldValue("FBillDate"), 4)
iPeriod = Mid(.GetFieldValue("FBillDate"), 6, 2)
Select Case lBudgetCon '0本期預算 1累計預算 2本年預算 3方案預算 4季度預算 5半年預算
Case 0
sConBound = "FYear= " & iYear & " and FPeriod <=" & iPeriod
sConBound1 = " substring(convert(varchar(7),FBillDate,21),1,4)='" & CStr(iYear) & "' and substring(convert(varchar(7),FBillDate,21),6,2)<='" & CStr(iPeriod) & "'"
Case 1
Case 2
sConBound = "FYear= " & iYear
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -