-- 作者:yankunhao
-- 发布时间:2010/8/6 16:33:00
-- 跨表计算时出错
此主题相关图片如下:12.jpg
月工资汇总中的DataColChanged代码:
Select Case e.DataCol.Name Case "工号" Dim dr As DataRow dr = DataTables("扣费表").Find("工号 = \'" & e.DataRow("工号") & "\'" & "and 会计期间= \'" & e.DataRow("会计期间") & "\'" ) If dr IsNot Nothing \'如果找到, 则设置各列内容 e.DataRow("应付工资_节日未上班工资_时间")= dr("节日未上班_总计小时") e.DataRow("代扣费_社会保险")= dr("代扣费_社会保险") e.DataRow("代扣费_个人所得税")= dr("代扣费_个人所得税") e.DataRow("代扣费_其他费用_水费")= dr("代扣费_其他费用_水费") e.DataRow("代扣费_其他费用_电费")= dr("代扣费_其他费用_电费") e.DataRow("代扣费_其他费用_管理费")= dr("代扣费_其他费用_管理费") e.DataRow("代扣费_其他费用_其他")= dr("代扣费_其他费用_其他") e.DataRow("其他款项_其他补贴")= dr("其它补贴") e.DataRow("其他款项_年限津贴")= dr("年限津贴") e.DataRow("其他款项_奖金")= dr("奖金") e.DataRow("备注")= dr("备注") e.DataRow("身份证号码")= dr("身份证号码") e.DataRow("社保电脑号")= dr("社保电脑号") e.DataRow("银行账号")= dr("银行账号") Else \'否则清除部门和姓名两列的内容 e.DataRow("应付工资_节日未上班工资_时间")= Nothing e.DataRow("代扣费_社会保险") =Nothing e.DataRow("代扣费_个人所得税") =Nothing e.DataRow("代扣费_其他费用_水费") =Nothing e.DataRow("代扣费_其他费用_电费") = Nothing e.DataRow("代扣费_其他费用_管理费")= Nothing e.DataRow("代扣费_其他费用_其他")= Nothing e.DataRow("其他款项_其他补贴")= Nothing e.DataRow("其他款项_年限津贴")= Nothing e.DataRow("其他款项_奖金")= Nothing e.DataRow("备注")=Nothing e.DataRow("身份证号码")= Nothing e.DataRow("社保电脑号")= Nothing e.DataRow("银行账号")= Nothing End If
Case "本月正班工资","本月总工时" \'如果是列的内容变动 Dim Digits As Integer = 2 Dim Value As Double = e.DataRow("本月正班工资") / e.DataRow("本月总工时") e.DataRow("时薪")=Math.Floor(Value * 10 ^ Digits + 0.5) / 10 ^ Digits \'四舍五入 Case "时薪","应付工资_正班工资_时间" e.DataRow("应付工资_正班工资_金额")=e.DataRow("时薪") * e.DataRow("应付工资_正班工资_时间") Case "时薪","应付工资_正常工作日超时工资_时间" e.DataRow("应付工资_正常工作日超时工资_金额")=(e.DataRow("时薪") * e.DataRow("应付工资_正常工作日超时工资_时间"))*1.5 Case "时薪","应付工资_周六日超时工资_时间" e.DataRow("应付工资_周六日超时工资_金额")=(e.DataRow("时薪") * e.DataRow("应付工资_周六日超时工资_时间"))*2 Case "时薪","应付工资_节日未上班工资_时间" e.DataRow("应付工资_节日未上班工资_金额")=(e.DataRow("时薪") * e.DataRow("应付工资_节日未上班工资_时间"))
Case "应付工资_正班工资_金额","应付工资_正常工作日超时工资_金额","应付工资_周六日超时工资_金额","应付工资_节日未上班工资_金额" e.DataRow("应付工资_小计")=e.DataRow("应付工资_正班工资_金额") + e.DataRow("应付工资_正常工作日超时工资_金额")+ e.DataRow("应付工资_周六日超时工资_金额") + e.DataRow("应付工资_节日未上班工资_金额") Case "代扣费_社会保险","代扣费_个人所得税","代扣费_其他费用_水费","代扣费_其他费用_电费","代扣费_其他费用_管理费","代扣费_其他费用_其他" e.DataRow("代扣费_小计")=e.DataRow("代扣费_社会保险") + e.DataRow("代扣费_个人所得税") + e.DataRow("代扣费_其他费用_水费")+ e.DataRow("代扣费_其他费用_电费") + e.DataRow("代扣费_其他费用_管理费") + e.DataRow("代扣费_其他费用_其他") Case "应付工资_小计" Dim Filter As String = "[工号] = \'" & e.DataRow("工号") & "\'and 会计期间= \'" & e.DataRow("会计期间") & "\'" DataTables("扣费表").DataCols("工号").RaiseDataColChanged(Filter) DataTables("月工资汇总").DataCols("工号").RaiseDataColChanged() e.DataRow("实付工资")=e.DataRow("应付工资_小计") - e.DataRow("代扣费_小计") Case "代扣费_小计" e.DataRow("实付工资")=e.DataRow("应付工资_小计") - e.DataRow("代扣费_小计") Case "其他款项_其他补贴","其他款项_年限津贴","其他款项_本月补助","其他款项_奖金" e.DataRow("其他款项_小计")=e.DataRow("其他款项_其他补贴") + e.DataRow("其他款项_年限津贴") + e.DataRow("其他款项_本月补助") + e.DataRow("其他款项_奖金")
End Select
扣费表中的DataColChanged代码:
Select Case e.DataCol.Name Case "数据状态" \'如果是数据状态列的内容变动 If e.NewValue = True Then \'而且变动后的值是True(已勾选) e.DataRow("审核时间")=Date.Now e.DataRow("审核用户")=Vars("_UserName") e.DataRow.Locked = True Else e.DataRow("审核时间")=Nothing e.DataRow("审核用户")=Nothing End If Case "工号" Dim dr As DataRow Dim dr1 As DataRow dr = DataTables("工资录入表").Find("工号 = \'" & e.DataRow("工号") & "\'" & "and 会计期间= \'" & e.DataRow("会计期间") & "\'" ) dr1= DataTables("月工资汇总").Find("工号 = \'" & e.DataRow("工号") & "\'" & "and 会计期间= \'" & e.DataRow("会计期间") & "\'" ) If dr IsNot Nothing Orelse dr1 IsNot Nothing Then \'如果找到, 则设置各列内容 e.DataRow("姓名")= dr("姓名") e.DataRow("交税人")= dr("姓名") e.DataRow("部门")= dr("部门") e.DataRow("应付工资")= dr1("应付工资_小计") Else \'否则清除部门和姓名两列的内容 e.DataRow("部门") =Nothing e.DataRow("姓名") =Nothing e.DataRow("交税人") =Nothing e.DataRow("工号") = "月工资汇总不存在此人" e.DataRow("应付工资")= Nothing End If Case "工号","姓名" Dim dr2 As DataRow dr2 = DataTables("员工资料").Find("工号 = \'" & e.DataRow("工号") & "\'" & " And 姓名 = \'" & e.DataRow("姓名") & "\'" & "And 员工状态 = \'在职\'") If dr2 IsNot Nothing Then e.DataRow("身份证号码")= dr2("身份证号码") e.DataRow("社保缴费率")= dr2("社保缴费率") e.DataRow("医疗费率")= dr2("医疗费率") e.DataRow("社保电脑号")= dr2("社保电脑号") e.DataRow("银行账号")= dr2("银行账号") Else e.DataRow("身份证号码")= Nothing e.DataRow("社保缴费率")= Nothing e.DataRow("医疗费率")= Nothing e.DataRow("社保电脑号")= Nothing e.DataRow("银行账号")= Nothing End If Case "节日未上班_总计小时" Dim Filter As String = "工号 = \'" & e.DataRow("工号") & "\'" & "and 会计期间= \'" & e.DataRow("会计期间") & "\'" DataTables("月工资汇总").DataCols("工号").RaiseDataColChanged(Filter) Case "应付工资" If e.DataRow("应付工资")*0.13>=2328 Then e.DataRow("住房补贴")=2328 Else Dim Digits As Integer = 2 Dim Value As Double = e.DataRow("应付工资")*0.13 e.DataRow("住房补贴")=Math.Floor(Value * 10 ^ Digits + 0.5) / 10 ^ Digits \'四舍五入 End If If e.DataRow("代扣费_手工输入")= False Then Dim Digits As Integer = 2 Dim Value As Double = (e.DataRow("应付工资")*e.DataRow("社保缴费率"))+e.DataRow("医疗费率") Dim Value1 As Double = e.DataRow("应付工资")*e.DataRow("社保缴费率") Dim Value2 As Double=e.DataRow("应付工资")*(0.1-e.DataRow("社保缴费率")) e.DataRow("代扣费_社会保险")=Math.Floor(Value * 10 ^ Digits + 0.5) / 10 ^ Digits \'四舍五入 e.DataRow("养老")=Math.Floor(Value1 * 10 ^ Digits + 0.5) / 10 ^ Digits \'四舍五入 If e.DataRow("医疗费率")>0 Then e.DataRow("医序")=e.DataRow("医疗费率") Else e.DataRow("医序")=Math.Floor(Value2 * 10 ^ Digits + 0.5) / 10 ^ Digits \'四舍五入 End If End If e.DataRow("代扣费_个人所得税")=InTax(e.DataRow("应付工资")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴")-e.DataRow("起始缴税月收入")) e.DataRow("税金")=InTax(e.DataRow("应付工资")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴")-e.DataRow("起始缴税月收入")) If e.DataRow("应付工资") >= e.DataRow("起始缴税月收入") Then e.DataRow("税表收入额")=e.DataRow("应付工资")-e.DataRow("费用额")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴") e.DataRow("计税金额")=e.DataRow("应付工资")-e.DataRow("起始缴税月收入")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴") Else e.DataRow("税表收入额")=Nothing e.DataRow("计税金额")=Nothing End If Case "代扣费_社会保险","代扣费_个人所得税","代扣费_其他费用_水费","代扣费_其他费用_电费","代扣费_其他费用_管理费","代扣费_其他费用_其他" e.DataRow("代扣费_小计")= e.DataRow("代扣费_社会保险")+e.DataRow("代扣费_个人所得税")+e.DataRow("代扣费_其他费用_水费")+e.DataRow("代扣费_其他费用_电费")+e.DataRow("代扣费_其他费用_管理费")+e.DataRow("代扣费_其他费用_其他") Case "应付工资","代扣费_社会保险","住房补贴" e.DataRow("代扣费_个人所得税")=InTax(e.DataRow("应付工资")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴")-e.DataRow("起始缴税月收入")) e.DataRow("税金")=InTax(e.DataRow("应付工资")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴")-e.DataRow("起始缴税月收入")) If e.DataRow("应付工资") >= e.DataRow("起始缴税月收入") Then e.DataRow("税表收入额")=e.DataRow("应付工资")-e.DataRow("费用额")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴") e.DataRow("计税金额")=e.DataRow("应付工资")-e.DataRow("起始缴税月收入")-e.DataRow("代扣费_社会保险")-e.DataRow("住房补贴") Else e.DataRow("税表收入额")=Nothing e.DataRow("计税金额")=Nothing End If Case "计税金额" Select Case e.DataRow("计税金额") Case 0 e.DataRow("税率")=Nothing e.DataRow("速算扣除数")=Nothing Case 1 To 500 e.DataRow("税率")=0.05 e.DataRow("速算扣除数")=0 Case 501 To 2000 e.DataRow("税率")=0.1 e.DataRow("速算扣除数")=25 Case 2001 To 5000 e.DataRow("税率")=0.15 e.DataRow("速算扣除数")=125 Case 5001 To 20000 e.DataRow("税率")=0.2 e.DataRow("速算扣除数")=375 Case 20001 To 40000 e.DataRow("税率")=0.25 e.DataRow("速算扣除数")=1375 Case 40001to 60000 e.DataRow("税率")=0.3 e.DataRow("速算扣除数")=3375 Case 60001 To 100000 e.DataRow("税率")=0.35 e.DataRow("速算扣除数")=6375 Case 80000 To 100000 e.DataRow("税率")=0.4 e.DataRow("速算扣除数")=10375 Case > 100000 e.DataRow("税率")=0.45 e.DataRow("速算扣除数")=15375 End Select End Select
[此贴子已经被作者于2010-8-6 16:43:07编辑过]
|