以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  个人所得税预扣率  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132139)

--  作者:lfz123
--  发布时间:2019/3/14 18:51:00
--  个人所得税预扣率
请教:

图片点击可在新窗口打开查看此主题相关图片如下:个人所得税预扣率表-工资薪金所得.png
图片点击可在新窗口打开查看

比如我的工资是35000,就找到级次是1的行,工资是38000,就找到级次是2的行,
我类似于写了这样一段代码,但只能提取到第一级的数字,后面就提取不出来了,请老师指点下,谢谢
 Dim v8 As Double = v1 - v6 - V5 \'累计应纳税所得额
        If v8 >  0 Then
            Dim drs As List (of DataRow) = DataTables("个人所得税预扣率表").Select("扣除上限 <= " & v8 & " ","扣除上限 DESC ") \'这一步没有实现
            If drs.Count = 0 Then
                Dim v9 As Double = v8 * 0.03  \'累计应纳税额
                Dim v10 As Double = e.DataTable.Compute("sum(所得税)","证照号码 = \'"& e.DataRow("证照号码") & "\'and 月份 <  \'"& e.datarow("月份") & "\' ") \'累计已交税金
                If v9 - v10 > 0 Then
                    e.DataRow("所得税") = v9 - v10
                Else
                    e.DataRow("所得税") = 0
                End If                
            Else
                Dim v9 As Double = v8 * drs(0)("预扣率") - drs(0)("速算扣除数") \'累计应纳税额

                Dim v10 As Double = e.DataTable.Compute("sum(所得税)","证照号码 = \'"& e.DataRow("证照号码") & "\'and 月份 <  \'"& e.datarow("月份") & "\' ") \'累计已交税金
                If v9 - v10 > 0 Then
                    e.DataRow("所得税") = v9 - v10
                Else
                    e.DataRow("所得税") = 0
                End If
            End If
        Else
            e.DataRow("所得税") = 0
        End If
    Else
        e.DataRow("所得税") = e.DataRow("本期收入") * 0.03
    End If
End If

--  作者:有点甜
--  发布时间:2019/3/14 21:25:00
--  

你需要这个?

 

Dim gz = 35000
Dim jg = iif((gz)>960000,(gz)*0.45-181920,IIF((gz)>660000,(gz)*0.35-85920,IIF((gz)>420000,(gz)*0.30-52920,IIF((gz)>300000,(gz)*0.25-31920,IIF((gz)>144000,(gz)*0.2-16920,IIF((gz)>36000,(gz)*0.1-2520,(gz)*0.03))))))
msgbox(jg)


--  作者:lfz123
--  发布时间:2019/3/14 22:16:00
--  回复:(有点甜)你需要这个? Dim gz = 350...
是的,就是这个,感恩您的答疑解惑,我的问题完美解决了