【IT168 技术文章】
关于工资薪金所得应交个人所得税的具体计算方法如下:
应税所得=取得的收入-免税收入-费用扣除额
应交的个税=应税所得*适用税率-速算扣除数。
其中:
1。免税收入包括有:个人按照规定交纳的社会保险金和住房公积金,等。
2。费用扣除额(即平常所说的所谓的“起征点”)自2006年1月1日起,全国统一执行1 600元的标准。目前法定的费用扣除额为800元,但各地在执行中存在擅自提高的情况,因此各地实际的费用扣除额并不一样。
3。税率为5%-45%九级超额累进税率。由于超额累进税率的计算较为复杂,因此转化为使用适用税率和速算扣除数的简化算法。具体适用税率和速算扣除数可查阅税率表:
(应税所得、适用税率%、速算扣除数)
0-500、5、0
500-2 000、10、25
2 000-5 000、15、125
5 000-20 000、20、375
20 000-40 000、25、1 375
40 000-60 000、30、3 375
60 000-80 000、35、6 375
80 000-100 000、40、10 375
100 000以上、45、15 375
DATA : l_salary type f.
PARAMETERS p_salary type string.
TRY .
l_salary = p_salary.
CATCH cx_root.
WRITE 'Error input' .
exit.
ENDTRY.
DATA:
l_sal_for_calc type p ,
l_house_fund type f ,
l_house_fund_p type p ,
l_old_passion type p ,
l_medicial type p ,
l_unemployed type p ,
l_tax type f.
if l_salary > 6705 .
l_sal_for_calc = 6705.
endif.
l_medicial = l_sal_for_calc / 100 * 2 .
l_house_fund = l_salary / 100 * 7.
if l_house_fund > 517 .
l_house_fund = 517 .
endif.
l_old_passion = l_sal_for_calc / 100 * 8.
l_unemployed = l_sal_for_calc / 100 * 1.
WRITE : / , 'Medical: ' ,l_medicial,
/ , 'Unemployee: ' ,l_unemployed,
/ , 'Old Passion: ' ,l_old_passion,
/ , 'House Fund: ' ,l_house_fund .
l_sal_for_calc = l_salary - l_medicial - l_unemployed - l_old_passion - l_house_fund.
l_sal_for_calc = l_sal_for_calc - 1600 .
DATA : l_tmp type f .
if l_sal_for_calc < 0 .
l_tax = 0 .
else .
l_tmp = l_sal_for_calc - 500 .
if l_tmp < 0 .
l_tax = l_tax + l_sal_for_calc * 5 / 100 .
else .
l_tax = l_tax + 500 * 5 / 100.
l_sal_for_calc = l_sal_for_calc - 500 .
l_tmp = l_sal_for_calc - 1500.
if l_tmp < 0 .
l_tax = l_tax + l_sal_for_calc * 10 / 100 .
else.
l_tax = l_tax + 1500 * 10 / 100.
l_sal_for_calc = l_sal_for_calc - 1500 .
l_tmp = l_sal_for_calc - 3000.
if l_tmp < 0 .
l_tax = l_tax + l_sal_for_calc * 15 / 100 .
else.
l_tax = l_tax + 3000 * 15 / 100.
l_sal_for_calc = l_sal_for_calc - 3000 .
l_tmp = l_sal_for_calc - 15000.
if l_tmp < 0 .
l_tax = l_tax + l_sal_for_calc * 20 / 100 .
else.
l_tax = l_tax + 15000 * 20 / 100.
l_sal_for_calc = l_sal_for_calc - 15000 .
endif.
endif.
endif.
endif.
l_sal_for_calc = l_sal_for_calc - 500.
endif.
NEW-LINE.
WRITE :/ 'tax:' , l_tax.