美文网首页
2020新版个人所得税计算[Python]

2020新版个人所得税计算[Python]

作者: qiHuang112 | 来源:发表于2020-01-21 09:02 被阅读0次

前言

在之前的两篇文章中记录了如何使用java计算当月工资以及年终奖(当月工资计算年终奖计算),本篇文章使用python将上诉代码重写了一下,因为过程在上面两篇文章中已经写的很详细了,这里就不赘述了,直接敷上源代码,你也可以直接去我的github开源项目上clone一份。

from matplotlib import pyplot as plt

# plt设置支持中文
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

# 工资划分的区间
sections = [36000, 144000, 300000, 420000, 660000, 960000]
# 每个区间对应的税率
rates = [0.03, 0.1, 0.2, 0.25, 0.3, 0.35, 0.45]
# 每个区间对应的速算扣除数
deductions = [0, 210, 1410, 2660, 4410, 7160, 15160]


def get_monthly_salary(default_salary, bonus: list, special, insurance):
    """
    :param default_salary: 基本工资
    :param bonus: 浮动奖金(绩效工资)一年内拿了几次工资就输入几个
    :param special: 专项扣除
    :param insurance: 五险一金比例
    :return: 返回每月工资
    """
    # 每月工资
    salary_list = []
    # 累计预扣缴额, 累计已缴税额
    total_need_tax, total_had_tax = 0, 0
    for i in bonus:
        # 当月预扣缴额(每月的应缴税 = 基本工资 + 浮动奖金(绩效工资) - 起征点 - 专项扣除 - 五险一金)
        should_tax = default_salary + i - 5000 - special - default_salary * insurance
        total_need_tax += should_tax
        # 税率区间
        index = get_index_from_sections(total_need_tax)
        # 累计应缴税额(累计应缴税额 * 税率 - 速算扣除数) 速算扣除数*12相当于一年
        total_tax = total_need_tax * rates[index] - deductions[index] * 12
        # 当月应缴税(当月累计应缴税 - 上月累计应缴税(累计已缴税))
        cur_tax = total_tax - total_had_tax
        # 当月工资(当月工资=基本工资 + 浮动奖金(绩效工资) - 当月应缴税 - 五险一金)
        cur_sal = default_salary + i - cur_tax - default_salary * insurance
        salary_list.append(cur_sal)
        total_had_tax = total_tax
    return salary_list


def get_index_from_sections(bonus):
    """
    :param bonus:税前年终奖
    :return:返回年终奖所在税率区间
    """
    index = 0
    while index < len(sections) and bonus > sections[index]:
        index = index + 1
    return index


def get_year_end_bonus(bonus):
    """
    :param bonus: 税前年终奖
    :return:返回税后年终奖
    """
    index = get_index_from_sections(bonus)
    # 年终奖纳税 = 税前年终奖 * 税率 - 速算扣除数
    tax = bonus * rates[index] - deductions[index]
    # 税后年终奖 = 税前年终奖 - 年终奖纳税
    return bonus - tax


def plot_bonus(r=range(0, 1200000), point: int = 0):
    """
    :param r: 税前年终奖区间
    :param point: 需要标出的点(税前年终奖的值)
    画出在r区间内的税前年终奖与税后年终奖曲线图,并标出point这个点
    """
    x = r
    y = [get_year_end_bonus(i) for i in x]
    plt.plot(x, y)
    plt.xlabel('税前年终奖')
    plt.ylabel('税后年终奖')

    if point != 0:
        plt.scatter(x=point, y=get_year_end_bonus(point))
        p1 = r'(%d, %d)' % (point, get_year_end_bonus(point))
        plt.annotate(p1, xy=(point, get_year_end_bonus(point)))
    plt.show()


def get_bad_sections():
    """
    返回不好的年终奖区间,如果你的年终奖在本方法返回区间,那你要注意了,你可能少拿了不少钱
    """

    def get_right(i):
        return (sections[i] - rates[i] * sections[i] + deductions[i] - deductions[i + 1]) / (1 - rates[i + 1])

    return [(sections[i], int(get_right(i))) for i in range(len(sections))]


def examples():
    # 小王在上海每月工资2W,一年里每个月的绩效工资都是1000,速算扣除数为1500,上海的五险一金比例为17.5%(养老保险 8%,医疗保险 2%,失业保险0.5%,住房公积金7%)
    print("小王每个月的工资为%s" % get_monthly_salary(20000, [1000] * 12, 1500, 0.175))
    # 小李在杭州每月工资1.5W,前五个月的绩效工资分别是(0, 500, 1000, 1000, 500),速算扣除数为1500,杭州的五险一金比例为22.5%(8% + 2% + 0.5% + 12% = 22.5%)
    print("小李前五个月的工资为%s" % get_monthly_salary(15000, [0, 500, 1000, 1000, 500], 1500, 0.225))
    # 小张的税前年终奖为36000,计算税后年终奖
    print("小张的税后年终奖为%d" % get_year_end_bonus(36000))
    # 小刘的税前年终奖为37000,计算税后年终奖(比小张拿的还少,心态崩了)
    print("小刘的税后年终奖为%d" % get_year_end_bonus(37000))


if __name__ == '__main__':
    # 计算工资和年终奖的几个小例子
    examples()
    # 计算“不好”的年终奖区间
    print(get_bad_sections())
    # 画出税前年终奖与税后年终奖曲线图
    plot_bonus()
    # plot_bonus(r=range(20000, 40000), point=36000)
    # plot_bonus(r=range(100000, 200000), point=144000)

相关文章

  • 2020新版个人所得税计算[Python]

    前言 在之前的两篇文章中记录了如何使用java计算当月工资以及年终奖(当月工资计算,年终奖计算),本篇文章使用py...

  • 税法(II)02个人所得税法-13

    个人独资企业个人所得税的计算

  • Python计算个人所得税

    不知道大家有没有细心观察自己工资条上个人所得税呢?很多人都觉得有专门的个人所得税计算器,不用再去复查,但是有的黑心...

  • 个人所得税年度汇算,您退税了吗?

    2020年3月1日开始,办理个人所得税年度汇算。需要下载个人所得税app,实名注册。选择2020综合所得年度汇算,...

  • 无标题文章

    mac不要轻易的安装新版本的python! mac不要轻易的安装新版本的python! mac不要轻易的安装新版本...

  • 为什么英国5岁孩子必须要学编程?原因只有python程序员知道!

    Python 的概念 英国是最早推动STEAM素质教育的国家。 2014年,英国发布新版国家课程标准,计算机成为英...

  • 年度汇算清缴

    个人所得税汇算清缴操作说明 1.将个人所得税官方APP升级至最新版,并打开,登录 2.点击“综合所得年度汇算” 3...

  • 个人所得税问题

    1.问题描述 编写一个计算个人所得税的程序,要求输入收入金额后,能够输出应缴的个人所得税。个人所得税征收办法如下:...

  • 更新 FF.PyAdmin v1.2

    FF.PyAdmin v1.2 2020-07-10 更新: 升级所有包为最新版本(Python3.8测试通过):...

  • python多版本管理

    mac不要轻易的安装新版本的python!mac不要轻易的安装新版本的python!mac不要轻易的安装新版本的p...

网友评论

      本文标题:2020新版个人所得税计算[Python]

      本文链接:https://www.haomeiwen.com/subject/evaszctx.html