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

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

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://juejin.im/post/5c22500b5188257e2a7b73c3

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

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

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

  2. 第一周挑战:实现个税计算器

    在Windows下的自带Ubuntu缺少很多包,无法直接下载pip3 ,下载也很麻烦,所以前期写代码用Windows自带的Ubuntu吧,后期就新建个虚拟机,再用MobaXterm很方便 开发了一个个 ...

  3. python输入个人所得税计算_用python实现个税计算器

    介绍 我们开发了一个个税计算器,输入工资后,打印应缴纳的个税. 个税计算公式: 应纳税所得额 = 工资金额 - 各项社会保险费 - 起征点(3500元) 应纳税额 = 应纳税所得额 × 税率 - 速算 ...

  4. SpringBoot开发微信公众号

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 在讲微信公众号开发之前,先来大概了解一下微信公众号.微信公 ...

  5. 跟我学Springboot开发后端管理系统9:AOP+logback+MDC日志输出

    MDC介绍 在比较复杂的应用中,一个请求需要走很多个方法的处理,怎么样才能快速查找一个请求的全部日志呢.在分布式系统中,我们可以用链路追踪,比如zipkin.skywalking去快速查找日志,从而定 ...

  6. 跟我学Springboot开发后端管理系统8:Matrxi-Web权限设计实现

    上篇文章讲述了Matrix-web整体实现的权限控制的思路.现在来回顾一下: 首先,用户需要登录,填用户名.密码,后端接收到登录请求,进行用户.密码的校验,校验成功后则根据用户名生成Token,并返回 ...

  7. 跟我学Springboot开发后端管理系统7:Matrxi-Web权限设计

    Matrxi-Web权限设计 对于一个后端系统来说,权限是基础设施,是安全保障.没有权限,系统可能随时面临各种风险,所以权限设计对后端系统来说至关重要.在Javaweb开发中,有很多权限开发的框架,比 ...

  8. 跟我学Springboot开发后端管理系统6:缓存框架Caffeine

    Caffeine是一个基于Java8的高性能缓存框架,号称趋于完美.Caffeine受启发于Guava Cache的API,使用API和Guava是一致的.它借鉴了Guava Cache和Concur ...

  9. 跟我学Springboot开发后端管理系统5:数据库读写分离

    在Matrix-web后台管理系统中,使用到了数据库的读写分离技术.采用的开源的Sharding-JDBC作为数据库读写分离的框架.Matrix-Web后台数据库这一块采用的技术栈如下: 使用Myba ...

  10. 跟我学Springboot开发后端管理系统4:数据库连接池Druid和HikariCP

    上一篇文章主要讲解了如何再Matrix-Web中使用Mybatis-Plus,Mybatis-Plus作为Orm框架,连接数据库需要连接数据库的依赖.WEB 系统高并发环境下,频繁的进行数据库连接操作 ...

最新文章

  1. 入行AI,你需要一本Python机器学习入门
  2. CentOS7 安装 mysql8
  3. prototype与_proto_
  4. 软件设计师 - 软件工程
  5. Hello Android
  6. spring boot 核心_Spring Boot 的 10 个核心模块
  7. html5游戏开发实战第三章,我的启蒙--HTML5 第三章 Canvas
  8. 康威定律-软件之道:软件开发争议问题剖析
  9. Atitit 多元化战略 适合我们发展 的核心业务attilax总结
  10. 三次B样条拟合及一阶导、二阶导、曲率计算
  11. [源码和文档分享]基于VC++实现的中国象棋-双人象棋游戏
  12. Flutter时间日期格式化等操作(一个月的最后一天日期,时间段内所有日期...)
  13. php的作品简介怎么写,作品简介(参赛作品简介怎么写)
  14. IDE, virtio, virtio-scsi 硬盘区别
  15. vue项目中获取今天,昨天,明天时间方法
  16. python实现RGB转换HSV
  17. yum配置代理proxy
  18. 企业经营(数据)分析
  19. 用 supabase实时数据库 实现 协作
  20. Hello World | 每个被生活暴击的成年人,都要学会按重启键

热门文章

  1. PDF文件中的文字怎么修改?来试试这种修改方法
  2. 三年级计算机 键盘指法 教案,第13课 键盘指法练习
  3. java练习题-猜数字游戏
  4. 计算机网络线接法,网线水晶头接法图解 一分钟学会网线怎么接
  5. document.getelementbyid是什么意思
  6. 云剪贴板:以备不时之需
  7. laravel 微信支付easywechat
  8. 洗头冲水时冲下好些头发,我是要秃了吗???
  9. word中px,pt,dpi,in,em,twip,emu之间的关系
  10. 快速上云(手把手教你把项目同步上云)