2019独角兽企业重金招聘Python工程师标准>>>

年关将至,该到了发年终奖的时候了。所以就到网上去找下,个税计算器,但是发现做的有点像病毒网站似的。所以计算结果也不太敢信,于是琢磨着,要不自己动手写一个个税计算器吧。

说干就干,先上国家税务局了解了下个税计算的公式,说简单也简单说复杂也复杂,个税计算,分几个种类:

1、综合税率表

一般来说,我们员工的工资就按这个税率表来计算。

2、经营所得

这个应该是个体工商户类的适用

3、劳务报酬

这个一般适用于,比如有个兼职,外包等,如果要纳税,就按这个税率表。

这个是2018年最新的个税税率,现在统一按5000元起征,也就是收入在5000元以下,是不用纳税的。

项目采用springboot开发,非常容易上手。

计算规则的代码:

   /*** 计算个人所得税* www.xcc.cn 版权所有* @param minusAmount 扣除社保的金额* @param minusAmount2 当月工资(扣除社保后)(算年终奖)* @param salaryType 收入类型* @param minimumAmount 个税基数,5000* */public GeshuiDto calc(double originAmount, double minusAmount, double minusAmount2, String salaryType, int minimumAmount) {GeshuiDto dto = new GeshuiDto();dto.originAmount = originAmount;dto.minusAmount = minusAmount;dto.taxAmount = 0;dto.finalAmount = 0;if(originAmount == 0){return dto;}//工资、薪金所得if(Objects.equal("1", salaryType)){double balanceAmount = BigDecimal.valueOf(originAmount).subtract(BigDecimal.valueOf(minusAmount)).subtract(BigDecimal.valueOf(minimumAmount)).doubleValue();dto.balanceAmount = balanceAmount;if(minimumAmount == 5000) {if(balanceAmount >0 && balanceAmount <=3000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.03)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}if(balanceAmount >3000 && balanceAmount <=12000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.1)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(210)).doubleValue();}if(balanceAmount >12000 && balanceAmount <=25000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.2)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(1410)).doubleValue();}if(balanceAmount >25000 && balanceAmount <=35000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.25)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(2660)).doubleValue();}if(balanceAmount >35000 && balanceAmount <=55000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.3)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(4410)).doubleValue();}if(balanceAmount >55000 && balanceAmount <=80000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.35)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(7160)).doubleValue();}if(balanceAmount >80000 ){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.45)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(15160)).doubleValue();}}else {if(balanceAmount >0 && balanceAmount <=1500){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.03)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}if(balanceAmount >1500 && balanceAmount <=4500){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.1)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(105)).doubleValue();}if(balanceAmount >4500 && balanceAmount <=9000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.2)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(555)).doubleValue();}if(balanceAmount >9000 && balanceAmount <=35000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.25)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(1005)).doubleValue();}if(balanceAmount >35000 && balanceAmount <=55000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.3)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(2755)).doubleValue();}if(balanceAmount >55000 && balanceAmount <=80000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.35)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(5505)).doubleValue();}if(balanceAmount >80000 ){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.45)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(13505)).doubleValue();}}}else if(Objects.equal("2", salaryType)){ //个体工商户生产、经营所得double balanceAmount = originAmount;dto.balanceAmount = balanceAmount;if(balanceAmount >0 && balanceAmount <= 15000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.05)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}if(balanceAmount > 15000 && balanceAmount <= 30000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.1)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(750)).doubleValue();}if(balanceAmount > 30000 && balanceAmount <= 60000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.2)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(3750)).doubleValue();}if(balanceAmount > 60000 && balanceAmount <= 100000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.3)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(9750)).doubleValue();}if(balanceAmount > 100000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.35)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(14750)).doubleValue();}}else if(Objects.equal("3", salaryType)){ //年终奖所得double balanceAmount = 0;if(minusAmount2 - minimumAmount < 0){balanceAmount = BigDecimal.valueOf(originAmount).subtract(BigDecimal.valueOf(3500-minusAmount2)).doubleValue();}else{balanceAmount = originAmount;}dto.balanceAmount = balanceAmount;double avg_balanceAmount = balanceAmount/12;if(minimumAmount == 5000) {if(avg_balanceAmount >0 && avg_balanceAmount<=3000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.03)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}if(avg_balanceAmount >3000 && avg_balanceAmount<=12000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.1)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(210)).doubleValue();}if(avg_balanceAmount >12000 && avg_balanceAmount<=25000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.2)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(1410)).doubleValue();}if(avg_balanceAmount >25000 && avg_balanceAmount<=35000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.25)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(2660)).doubleValue();}if(avg_balanceAmount >35000 && avg_balanceAmount<=55000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.3)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(4410)).doubleValue();}if(avg_balanceAmount >55000 && avg_balanceAmount<=80000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.35)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(7160)).doubleValue();}if(avg_balanceAmount >80000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.45)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(15160)).doubleValue();}}else {if(avg_balanceAmount >0 && avg_balanceAmount<=1500){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.03)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}if(avg_balanceAmount >1500 && avg_balanceAmount<=4500){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.1)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(105)).doubleValue();}if(avg_balanceAmount >4500 && avg_balanceAmount<=9000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.2)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(555)).doubleValue();}if(avg_balanceAmount >9000 && avg_balanceAmount<=35000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.25)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(1005)).doubleValue();}if(avg_balanceAmount >35000 && avg_balanceAmount<=55000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.3)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(2775)).doubleValue();}if(avg_balanceAmount >55000 && avg_balanceAmount<=80000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.35)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(5505)).doubleValue();}if(avg_balanceAmount >80000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.45)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(13505)).doubleValue();}}}else if(Objects.equal("4", salaryType)){ //劳务报酬所得dto.balanceAmount = originAmount;if(originAmount>0 && originAmount <= 800){dto.taxAmount =0;}else if(originAmount > 800){double balanceAmount = 0;if(originAmount >800 && originAmount <= 4000){balanceAmount = originAmount-800;}if(originAmount > 4000){balanceAmount = originAmount*0.8;}if(balanceAmount >0 && balanceAmount <= 20000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.2)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}if(balanceAmount >20000 && balanceAmount <= 50000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.3)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(2000)).doubleValue();}if(balanceAmount >50000){dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.4)).setScale(2, BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.valueOf(7000)).doubleValue();}}}else if(Objects.equal("5", salaryType)){ //稿酬所得double balanceAmount = 0;if(originAmount >0 && originAmount <= 4000){balanceAmount = originAmount-800;}else if(originAmount > 4000){balanceAmount = originAmount*0.8;}dto.balanceAmount = balanceAmount;dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.14)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}else if(Objects.equal("6", salaryType)){ //特许权使用费所得double balanceAmount = 0;if(originAmount >0 && originAmount <= 4000){balanceAmount = originAmount-800;}else if(originAmount > 4000){balanceAmount = originAmount*0.8;}dto.balanceAmount = balanceAmount;dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.2)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}else if(Objects.equal("7", salaryType)){ //财产租赁所得double balanceAmount = 0;if(originAmount >0 && originAmount <= 4000){balanceAmount = originAmount-800;}else if(originAmount > 4000){balanceAmount = originAmount*0.8;}dto.balanceAmount = balanceAmount;dto.taxAmount = BigDecimal.valueOf(balanceAmount).multiply(BigDecimal.valueOf(0.2)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}else if(Objects.equal("8", salaryType)){ //财产转让所得dto.balanceAmount = originAmount;dto.taxAmount = BigDecimal.valueOf(originAmount).multiply(BigDecimal.valueOf(0.2)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}else if(Objects.equal("9", salaryType)){ //利息、股息、红利所得dto.balanceAmount = originAmount;dto.taxAmount = BigDecimal.valueOf(originAmount).multiply(BigDecimal.valueOf(0.2)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}else if(Objects.equal("10", salaryType)){ //偶然所得dto.balanceAmount = originAmount;dto.taxAmount = BigDecimal.valueOf(originAmount).multiply(BigDecimal.valueOf(0.2)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}else{return dto;}if(Objects.equal("1", salaryType)){dto.finalAmount = BigDecimal.valueOf(originAmount).subtract(BigDecimal.valueOf(minusAmount)).subtract(BigDecimal.valueOf(dto.taxAmount)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}else{dto.finalAmount = BigDecimal.valueOf(originAmount).subtract(BigDecimal.valueOf(dto.taxAmount)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();}return dto;}

既然开发完了,就想着,弄个域名,挂个服务器给大家用一用,正好手头也有一个空着的域名xcc.cn,就搭建部署上线了。部署上,使用了jenkins+portainer,将项目打成了docker镜像,然后推到portainer部署启动。

个税计算器目前的公式上,可能有考虑不周的地方,大家可以指出来。

欢迎大家围观:个税计算器 ,各位下手轻点,别弄残了。

转载于:https://my.oschina.net/duwaiweb/blog/2993199

个税计算器-springboot版实现相关推荐

  1. 最新2019版个税计算器(5000起征点 + 个税专项扣除项)

    最新2019个税计算器(5000起征点 + 个税专项扣除项),根据最新设置计算,预留个税专项扣除项,计算结果显示税前.税后.应缴个税等明细. http://www.atoolbox.net/Tool. ...

  2. Windows phone7 软件发布:理财计算器(包括wp7房贷计算器,wp7个税计算器,wp7存款利息计算器)...

    前一段时间,需要经常用到贷款计算器的功能,这样有利于我们做出更好的决策.但是我们只能通过银行的工作人员的计算器来计算,给我带来了极大的不便和损失,由此便萌生了开发一个Windows phone7版的贷 ...

  3. python制作工资计算器-Python制作个税计算器

    不知道大家有没有细心观察自己工资条上个人所得税呢?很多人都觉得有专门的个人所得税计算器,不用再去复查,但是有的黑心的公司专门利用这种心理,偶尔增加你的扣税额,为了方便大家核查自己的个人所得税,我用Py ...

  4. 可以自定义公式的计算器_Excel万能个税计算器,税率对比显示,自定义增税点自动计算结果...

    Hello大家好,我是帮帮.今天跟大家分享一套Excel万能个税计算器,税率对比显示,自定义增税点自动计算结果. 有个好消息!为了方便大家更快的掌握技巧,寻找捷径.请大家点击文章末尾的"了解 ...

  5. 最好用的营养计算机软件,营养计算器(标准版)

    营养计算器(标准版)是普及版营养计算器软件,它是在营养计算器标准版的基础上删繁就简凝炼而成,是最简单.最容易使用的一款营养计算器软件,能简单快速的计算每日膳食营养摄入量,对营养指标进行简单分析.适宜于 ...

  6. 手机图形计算器matlab,科学图形计算器 Mathlab-科学图形计算器手机版下载V4.12-西西软件下载...

    科学图形计算器手机版是一款便捷的图形计算掌上应用.科学图形计算器手机版是一款非常专业的计算器,无论是中小学生和大学生研究生,都能用此应用进行复杂的计算.软件最出色的地方在于您输入的过程中软件便会自动显 ...

  7. 南京工资个税计算机,南京个税计算器_南京税后月薪|工资计算器_南京个人所得税查询 - Tax518...

    南京个税计算公式 南京个人所得税 =( 工资 - 三险一金 - 个税免征额 ) x 税率 - 速算扣除数 公式解析: 1.其中小括号里的"工资 - 三险一金 - 个税免征额"通常被 ...

  8. 安卓bmi项目_BMI计算器安卓版下载

    BMI计算器安卓版下载软件介绍: BMI计算器app官方下载!此应用程序是有用的BMI(身体质量指数)计算器.BMI计算器为你的BMI进行计算,看你是否在提供上面是否标准,用国际性的指标来为你进行确定 ...

  9. python代码测试健康指数计算器_python编写的bmi体重指数计算器、出租车费用计算器、个税计算器、猜数字游戏...

    ''' 写四个函数 分别包含bmi体重指数计算器.出租车费用计算器.个税计算器.猜数字游戏 ''' #体重指数计算器 def bmi(): while 1: #声明变量 身高.体重 height=in ...

  10. 2018新版个税计算器

    2018新版个税计算器 ## 题目: 利用python计算个税,5000起征.说明:python有序字典的使用. 代码: -- coding: utf-8 -- from collections im ...

最新文章

  1. JDK 5.0 注解的使用
  2. vb制作可输出函数的通用DLL---VB_DLL_Link用法
  3. 在FAANG面试中破解堆算法
  4. python基础装饰器(二十)
  5. 聊Code review(上)
  6. Docker-registry + GlusterFS
  7. 校园网免认证登录基于DNS伪装包
  8. poj 1287 Networking (最小生成树Kruskal算法)
  9. java实现简易五子棋
  10. 烧钱数亿后,趣店罗敏的预制菜业务从兴到衰
  11. AQSW公司OA系统需求分析
  12. matlab 去高光,图像处理-去高光/直方图均衡
  13. python怎么返回上一步操作_一步一步教你如何用python操作mysql
  14. 喜马拉雅-处世人生-老炮儿崔哥侃美国(完结)
  15. 【wxPython 安装指南:error: legacy-install-failure】
  16. Axure 8.1.0.3377 注册码激活
  17. java 打印表格文件
  18. 5.4非线性反馈移位寄存器/5.5序列密码攻击法
  19. Layui form 表单验证规则 lay-verify
  20. mysql备份与恢复实验报告_实验十一 MySQLl备份与恢复1

热门文章

  1. 【Python】用matplotlib函数绘制股票趋势图
  2. Mybatis 入门到理解篇
  3. Shell脚本介绍(资源)
  4. WPS:WPS的论文使用技巧之成功解决如何在尾注设置的参考文献后添加致谢、附录等章节(图文教程)
  5. JavaScript形而上的For循环中的Break
  6. 【笔记分享】Android TV 红外蓝牙遥控器添加
  7. bzoj4816 Sdoi2017 数字表格
  8. 东芝自助结账设备市场份额增长近50%
  9. SNIFFER问题集锦
  10. linux程序cat本地文本文件,linux – 这里有cat的文件