?? bos_wipe3bill_plugins.cls
字號:
End If
'-------------------------------------------------------------------
'分割部門改變時,根據部門與差旅費對應關系表填寫 單據體的報銷項目
'-------------------------------------------------------------------
If dct("FFieldName") = "FDivideDep" Then
'1
sSql = "select t3.FNumber from t_EP_ER_DepToTraEntry1 t1 " & _
" inner join t_EP_ER_DepToTra t2 on t1.fid=t2.fid " & _
" left join t_Account t3 on t1.FTraAccid=t3.FAccountid" & _
" where FDep ='" & .GetFieldValue("FDivideDep", , Enu_ValueType_FFLD) & "'"
Set rs = .K3Lib.GetData(sSql)
If rs.State = adStateOpen And rs.RecordCount = 1 Then
.SetFieldValue "FWipeItem", rs!FNumber, Row
Else
MsgBox "您錄入的部門沒有對應差旅費會計科目,請手工錄入!", vbOKOnly + vbExclamation, HINTINFO
End If
If rs.State = adStateOpen Then rs.Close
' Set rs = Nothing
End If
' '-------------------------------------------------------------------
' '改變分錄3中的報銷金額
' '-------------------------------------------------------------------
' 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,分錄2中的金額(往返交通費,補助,其他費用)進行修改,更新到報銷總額上
'-------------------------------------------------------------------
If dct("FFieldName") = "FTraAmt" Or dct("FFieldName") = "FSubsidyAmt" Or dct("FFieldName") = "FChargeAmt" Then
'1更新報銷總額
.SetFieldValue "FWipeAmtSum", m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FTraAmt", "", 0)) + _
m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FSubsidyAmt", "", 0)) + _
m_BillInterface.Sum(m_BillInterface.GetFieldInfoByKey("FChargeAmt", "", 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
'如果沒有分割部門,在分錄3的第1行,加入報銷總額
If .GetFieldValue("FCheckDep") = 0 Then .SetFieldValue "FWipeAmt", .GetFieldValue("FWipeAmtSum"), 1
End If
'-------------------------------------------------------------------
'報銷總額進行修改時,更新補領金額和退還金額
'-------------------------------------------------------------------
If dct("FFieldName") = "FWipeAmtSum" Then
'填寫單據頭的--取補領金額 和 退還金額
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
'將單據頭的報銷總額--轉換為大寫,將報銷總額轉化為大寫
.SetFieldValue "FCapitalAmtSum", PricetoChinese(.GetFieldValue("FWipeAmtSum"))
End If
'-------------------------------------------------------------------
'是否分割部門進行修改
'-------------------------------------------------------------------
If dct("FFieldName") = "FCheckDep" Then
If .Data("page4").Size > 1 Then
MsgBox "系統現在有多個分割部門,請刪除多余的部門,只保留一個!", vbOKOnly + vbInformation, HINTINFO
.SetFieldValue "FCheckDep", 1
Exit Sub
End If
ShowDep CInt(.GetFieldValue("FCheckDep"))
End If
Set rs = Nothing
End With
End Sub
'是否顯示分割部門
Private Function ShowDep(iType As Integer)
Dim i As Integer
Dim j As Integer
With m_BillInterface
If iType = 1 Then
iShowDepType = 1
.SetFieldValue "FCheckDep", 1
.BillEntrys(3).Visible = True
.BillHeads(1).BOSFields("FWipeItemsum").Visible = False
' .BillEntrys(3).MaxRows = 6
Else
iShowDepType = 0
.SetFieldValue "FCheckDep", 0
.BillHeads(1).BOSFields("FWipeItemsum").Visible = True
If iSelBill = 0 Or (.Data("page4").Size = 1 And Trim(.GetFieldValue("FLoanitem", 1, Enu_ValueType_FDSP)) = "") Then
.BillHeads(1).BOSFields("FWipeItemsum").FieldLock = False
.DeleteEntryData (4)
' .BillEntrys(3).MaxRows = 1
' .Data("page4").Size = 1
.InsertNewRowAndFill 4, 1, "FWipeItem", .GetFieldValue("FWipeItemSum", , Enu_ValueType_FFND), 1
' .SetFieldValue "FWipeItem", .GetFieldValue("FWipeItemSum", , Enu_ValueType_FFND), 1
.SetFieldValue "FDivideDep", .GetFieldValue("FReqDept", , Enu_ValueType_FFND), 1
.SetFieldValue "FWipeAmt", .GetFieldValue("FWipeAmtSum"), 1
ElseIf iSelBill = 1 Then
.BillHeads(1).BOSFields("FWipeItemsum").FieldLock = True
.BillHeads(1).BOSFields("FWipeType").FieldLock = True
.SetFieldValue "FWipeAmt", .GetFieldValue("FWipeAmtSum"), 1
j = 0
For i = 1 To .Data("page4").Size
If Trim(.GetFieldValue("FLoanItem", i, Enu_ValueType_FDSP)) <> "" Then
j = j + 1
End If
Next i
End If
.BillEntrys(3).Visible = False
End If
.BillEntrys(4).Visible = False
' .RefreshBill
End With
End Function
'**********************************************************************
'判斷
'3 判斷當前金額有沒有超過預算金額
'參數 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 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
'循環分錄中的所有列
i = 1
beg: While i <= .Data("Page4").Size
'對應部門,
If Trim(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FDivideDep"))("FFLD")) = "" Then
i = i + 1
GoTo beg
End If
lDepId = .Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FDivideDep"))("FFLD")
'取借款金額的值
If iType = 1 Then
lAmt = 0
Else
lAmt = .Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FloanAmt"))("FFLD")
End If
'會計科目--報銷科目=借款科目(如果有借款存在)
lAcctId = .Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FFLD")
'2根據財務科目內碼取預算科目的內碼 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("Page4").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FFND")) & "-" & CStr(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FDSP")) & _
" 和 “部門”" & .Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FDivideDep"))("FFND") & "-" & .Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FDivideDep"))("FDSP") & _
" 沒有對應預算科目!"
compareNum = False
sRet = sErr
Exit Function
End If
If rs.State = adStateOpen Then rs.Close
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -