此主题相关图片如下: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编辑过]