计算个人所得税最佳纳税额(以2019最新税法规则计算)

计算个人所得税最佳节税


年底了,2019年也参加了CPA税法的考试,闲来无事给大家分享一个昨天刚写的计算个人所得税的小程序。新鲜出炉,整个程序主要是基于2019年最新的个人所得税纳税规则计算最佳节税点上,年度综合所得以及年终奖一次所得该如何分配,请大家指教,程序主要是使用pandas库来操作,不得不说pandas的区间索引简直是为本程序量身定做:

import  pandas as pd
import numpy as np
#个人所得税年度税率表,月度税率表在年度税率表基础上除以12得到,就没有单独列示,下面用到的地方我会说明
tax_ratio = pd.DataFrame([
[1,'不超过36000元的部分',3,0],
[2,'超过36000元至144000元的部分',10,2520],
[3,'超过144000元至300000元的部分',20,16920],
[4,'超过300000元至420000元的部分',25,31920],
[5,'超过420000元至660000元的部分',30,52920],
[6,'超过660000元至960000元的部分',35,85920],
[7,'超过960000元的部分',45,181920]],
    columns=['rank','des','ratio','easy_ded'],
    index=pd.IntervalIndex.from_breaks([-1, 36000, 144000, 300000,420000, 660000, 960000, 10000000]))
#函数主要目的是通过计算得出最佳的年度综合所得以及年终所得,大家知道年终所得可以选择并入综合所得也可以单独计税,
#算是普及一点税务知识,设置4个参数分别是初始综合所得,年终所得,专项附加扣除,以及试算步长。
def tax_min(comprehensive_amount,year_end_amount, add_ded=0, step=100):
    comprehensive_income=comprehensive_amount
    tax_res = []
    for i in range(int(year_end_amount/step) + 1):
        year_end_income = year_end_amount - step* i
        comprehensive_income = comprehensive_amount + year_end_amount - year_end_income
        #综合所得缴税,应纳税额应扣除基本减除费用及专项附加扣除
        taxable_income = comprehensive_income - 5000*12 - add_ded
        if taxable_income <= 0 :
            comprehensive_tax = 0
        else:
            comprehensive_tax = tax_ratio.loc[taxable_income].ratio/100 * taxable_income - tax_ratio.loc[taxable_income].easy_ded
        comprehensive_tax = comprehensive_tax if comprehensive_tax >0 else 0
        #年终奖缴税,直接通过换算年度税率表至月度税率表来计算
        year_end_tax= tax_ratio.loc[year_end_income].ratio/100 * year_end_income- tax_ratio.loc[year_end_income].easy_ded / 12
        tax_res.append([comprehensive_income,year_end_income,comprehensive_tax, year_end_tax, comprehensive_tax+year_end_tax])
    pd_tax_res = pd.DataFrame(tax_res, columns=['comprehensive_income','year_end_income','comprehensive_tax', 'year_end_tax', 'total_tax'])
    tax_min = pd_tax_res.total_tax.min()
    #简单打印出最佳综合所得和年终所得的分配
    print(pd_tax_res[pd_tax_res.total_tax == tax_min].to_string())
    return
#测试一下,假如年度综合所得为85000,年终为55000,专项附加扣除为10000,以步长1000试算
tax_min(85000, 55000, 10000, 1000)

output:
    comprehensive_income  year_end_income  comprehensive_tax  year_end_tax  total_tax
19                104000            36000             1020.0        1080.0     2100.0
20                105000            35000             1050.0        1050.0     2100.0
21                106000            34000             1080.0        1020.0     2100.0

可以看到,最优解有三个,年度总纳税额都在2100元。
发布了1 篇原创文章 · 获赞 0 · 访问量 285

猜你喜欢

转载自blog.csdn.net/carpentershu/article/details/104059473