📄 bos_wipe3bill_plugins.cls
字号:
.InsertNewRowAndFill 3, 4, "FChargeType", "会务费"
.InsertNewRowAndFill 3, 5, "FChargeType", "硬座补贴"
.InsertNewRowAndFill 3, 6, "FChargeType", "其他"
.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
.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"))
.SetFieldValue "FSupplyAmtSum", 0
.SetFieldValue "FRefundAmtSum", 0
.RefreshBill
Dim j As Integer
Dim i As Integer
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
If j > 1 Then
ShowDep 1
.BillHeads(1).BOSFields("FWipeItemsum").Visible = False
.BillHeads(1).BOSFields("FCheckDep").Visible = False
Else
ShowDep 0
.BillHeads(1).BOSFields("FWipeItemsum").Visible = True
.BillHeads(1).BOSFields("FCheckDep").Visible = True
End If
End With
End Sub
Private Sub m_BillInterface_AfterSelBillBeforeFillData(ByVal dcData As KFO.IDictionary, ByVal dctLink As KFO.IDictionary)
m_BillInterface.BillHeads(1).BOSFields("FWipeItemsum").FieldLock = True
m_BillInterface.BillHeads(1).BOSFields("FWipeType").FieldLock = True
iSelBill = 1
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
If getBudgetid = False Then
bCancel = True
Exit Sub
End If
With m_BillInterface
'报销金额为0 不能保存
If .GetFieldValue("FWipeAmtSum") = 0 Then
bCancel = True
MsgBox "报销金额不能为空!", vbOKOnly + vbExclamation, HINTINFO
Exit Sub
End If
If .GetFieldValue("FCheckDep") = 1 Then
'判断在分割部门的情况下,分割分录>1
If .Data("page4").Size < 2 Then
MsgBox "在选择要分割部门时,请录入超过一条以上的部门分割记录!", vbOKOnly + vbInformation, HINTINFO
bCancel = True
Exit Sub
End If
End If
'判断报销项目是否与借款项目相等
'判断是否录入了差旅费的明细,且明细是否和总和相等
lsum = 0
For i = 1 To .Data("page4").Size
If InStr(1, .Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FDSP"), "差旅") Then
lsum = lsum + CCur(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FWipeAmt"))("FFLD"))
bret = True
Else
MsgBox "差旅费报销单的报销项目只能是“差旅费”!", vbOKOnly + vbInformation, HINTINFO
bCancel = True
Exit Sub
End If
If Trim(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FWipeItem"))("FFLD")) <> Trim(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FLoanItem"))("FFLD")) And _
Trim(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FLoanItem"))("FFLD")) <> "" Then
MsgBox "第" & CStr(i) & "行,“报销项目”与选择的借款单的“借款项目”不相同,不能保存!", vbOKOnly + vbExclamation, HINTINFO
bCancel = True
Exit Sub
End If
If Trim(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FLoanType"))("FFLD")) <> "" And _
Trim(.Data("Page4").Item(i)(.DataSrv.TableInfo("map")("FLoanType"))("FFLD")) <> Trim(.GetFieldValue("FWipetype", , Enu_ValueType_FFLD)) Then
MsgBox "第" & CStr(i) & "行,“借款方式”与整单的“支出方式”不相同,不能保存!", vbOKOnly + vbInformation, HINTINFO
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
If sErr <> "" Then
MsgBox sErr, vbOKOnly + vbInformation, HINTINFO
Exit Sub
End If
End If
'判断是否分割部门,是则将分割部门和分割金额写到分录4
If .Data("page5").Size > 0 Then .DeleteEntryData (5)
If .GetFieldValue("FCheckDep") = 1 Then
For i = 1 To .Data("page4").Size
.InsertNewRowAndFill 5, i, "FBase", .GetFieldValue("FDivideDep", i, Enu_ValueType_FFND)
.SetFieldValue "FAmount", .GetFieldValue("FWipeAmt", i), i
Next i
.BillEntrys(4).MaxRows = .Data("page4").Size
ShowDep 1
Else
ShowDep 0
End If
.BillEntrys(4).Visible = False
'进行报销金额的判断
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
Private Sub m_BillInterface_BeginEdit(ByVal dct As KFO.IDictionary, ByVal Col As Long, ByVal Row As Long)
If Row > 0 And dct("FTableName") = "t_EP_ER_WipeOff3Entry3" Then
tmpFloanItem = Trim(m_BillInterface.GetFieldValue("FLoanItem", Row, Enu_ValueType_FDSP))
End If
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)
Dim sSql As String
Dim rs As New ADODB.Recordset
With m_BillInterface
'-------------------------------------------------------------------
'报销项目 改变
'-------------------------------------------------------------------
If dct("FFieldName") = "FWipeItemSum" Then
If InStr(1, .GetFieldValue("FWipeItemsum", , Enu_ValueType_FDSP), "差旅") = False Then
.SetFieldValue "FWipeItemSum", 0
MsgBox "差旅费报销单的报销项目只能是“差旅费”!", vbOKOnly + vbInformation, HINTINFO
Cancel = True
Exit Sub
End If
End If
If dct("FFieldName") = "FWipeItem" Then
'不允许 报销项目为 差旅费
If InStr(1, .Data("Page4").Item(Row)(.DataSrv.TableInfo("map")("FWipeItem"))("FDSP"), "差旅") = False Then
.SetFieldValue "FWipeItem", 0
MsgBox "差旅费报销单的报销项目只能是“差旅费”!", vbOKOnly + vbInformation, HINTINFO
Cancel = True
Exit Sub
End If
'改变分录1中的报销项目,将部门带进去
If Trim(.GetFieldValue("FDivideDep", Row, Enu_ValueType_FDSP)) = "" Then .SetFieldValue "FDivideDep", .GetFieldValue("FReqDept", , Enu_ValueType_FFND), Row
End If
If dct("FFieldName") = "FWipeItemSum" Then
If .GetFieldValue("FCheckDep") = 0 Then .SetFieldValue "FWipeItem", .GetFieldValue("Fwipeitemsum", , Enu_ValueType_FFND), 1
End If
'-------------------------------------------------------------------
'1申请部门变更时,根据部门与差旅费对应关系表填写 单据头 报销项目
'2申请部门变更时,如果分割部门没有值,则将申请部门的值付到单据体的分割部门上
'-------------------------------------------------------------------
If dct("FFieldName") = "FReqDept" Then
Dim i As Integer
'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("FReqDept", , Enu_ValueType_FFLD) & "'"
Set rs = .K3Lib.GetData(sSql)
If rs.State = adStateOpen And rs.RecordCount = 1 Then
.SetFieldValue "FWipeItemSum", rs!FNumber, Row
Else
MsgBox "您录入的部门没有对应差旅费会计科目,请手工录入!", vbOKOnly + vbExclamation, HINTINFO
.SetFieldValue "FWipeItemSum", 0
End If
'2
i = 1
While i <= .Data("Page4").Size
If Trim(.GetFieldValue("FDivideDep", i, Enu_ValueType_FDSP)) = "" Then
.SetFieldValue "FDivideDep", .GetFieldValue("FReqDept", , Enu_ValueType_FFND), i
End If
If Trim(.GetFieldValue("FWipeItem", i, Enu_ValueType_FDSP)) = "" Then
.SetFieldValue "FWipeItem", .GetFieldValue("FWipeItemSum", , Enu_ValueType_FFND), i
End If
i = i + 1
Wend
If .GetFieldValue("FCheckDep") = 0 Then
.SetFieldValue "FDivideDep", .GetFieldValue("FReqDept", , Enu_ValueType_FFND), 1
.SetFieldValue "FWipeItem", .GetFieldValue("FWipeItemSum", , Enu_ValueType_FFND), 1
End If
If rs.State = adStateOpen Then rs.Close
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -