# -*- coding: UTF-8 -*-
'''
函数功能:
轻松计算税后收入,清楚的看看自己每年交多少税,拿多少钱
参数:
sqgz: 税前工资
gjj_base: 公积金基数
sb_base: 社保基数
zxkc: 专项扣除 (教育子女 + 赡养老人 + 房贷 + ...)
gcc_ratio: 公积金缴存比例
返回值:
年度纳税总额, 年度公积金总额, 年度工资到手收入总额
'''
def calculate(sqgz,gjj_base,sb_base,zxkc,gjj_ratio):
## 养老保险个人缴存比例 ##
ylbx_ratio = 0.08
## 医疗保险个人缴存比例 ##
yilbx_ratio = 0.02
## 失业保险个人缴存比例 ##
sybx_ratio = 0.005
## 五险一金扣除 ##
wxyjkc = gjj_base * gjj_ratio + sb_base*(ylbx_ratio + yilbx_ratio + sybx_ratio)
## 个税起征点 ##
gsqzd = 5000
## 税收阶梯表 ##
sh = [0, 36000, 144000, 300000, 420000, 660000, 960000, 10000000000]
sh_ratio = [0.03, 0.1, 0.2, 0.25, 0.3, 0.35, 0.45]
## 本级速算扣除额 =上一级最高应纳税所得额×(本级税率-上一级税率)+上一级速算扣除数 ##
sskc = [0]
for i in range(1,len(sh_ratio)):
sskc.append( (sh_ratio[i] - sh_ratio[i-1])*sh[i] + sskc[i-1])
## 应纳税额 ##
yns = [0,0,0,0,0,0,0,0,0,0,0,0,0]
## 税后到手收入 ##
dssr = [0,0,0,0,0,0,0,0,0,0,0,0,0]
for i in range(12):
tmp = (sqgz - gsqzd - wxyjkc - zxkc) * (i + 1)
current_ratio = 0
current_sskc = 0
for j in range(len(sh_ratio)):
if tmp > sh[j] and tmp <= sh[j+1]:
current_ratio = sh_ratio[j]
current_sskc = sskc[j]
break
yns[i] = tmp * current_ratio - current_sskc - yns[12]
yns[12] += yns[i]
dssr[i] = round(sqgz - wxyjkc - yns[i], 2)
dssr[12] += dssr[i]
yns[12] = round(yns[12],2 )
dssr[12] = round(dssr[12], 2)
## 可打印每月缴税额 ##
#print(yns)
## 可打印每月到手收入 ##
#print(dssr)
gjj_total = gjj_base*gjj_ratio*2*12
return yns[12], gjj_total, dssr[12]
'''
2021南京最新标准
公积金基数: 0 ~ 31200
社保基数:3368 ~ 19335
'''
print(calculate(50000,31200,19335,1667,0.12))