在工资管理软件中,要计算个人所有税。一般是通过公式在后台完成计算,这是多年以前写的代码,后来也有小的修改,哪位这个内容比较熟悉,请忙优化一下。
一、税率表
个人所得税税率表四
级数 平均每月收入 税率(%) 速算扣除数
1 不超过3,000元的部分 3 0
2 超过3,000元至12,000元的部分 10 210
3 超过12,000元至25,000元的部分 20 1410
4 超过25,000元至35,000元的部分 25 2660
5 超过35,000元至55,000元的部分 30 4410
6 超过55,000元至80,000元的部分 35 7160
7 超过80,000元的部分 45 15160
二、代码
CREATE OR REPLACE FUNCTION public.x9_grsds( jsze numeric) RETURNS numeric LANGUAGE 'plpgsql' COST 100 VOLATILE PARALLEL UNSAFE AS $BODY$ -- Description: 计算个税 -- 2011年9月1日起调整后,也就是2012年实行的7级超额累进个人所得税税率表 -- 应纳个人所得税税额= 应纳税所得额× 适用税率- 速算扣除数 -- 扣除标准3500元/月(2011年9月1日起正式执行)(工资、薪金所得适用) -- 个税免征额3500元 (工资薪金所得适用) -- 2019年新改 起征点为5000 DECLARE jsce decimal(18,2); yjse decimal(18,2); BEGIN jsce = $1-5000.00; IF jsce <= 0 THEN BEGIN yjse = 0; RETURN yjse; END; END IF ; IF jsce <= 3000 THEN BEGIN yjse = jsce * 0.03; RETURN yjse; END; END IF ; IF jsce <= 12000 THEN BEGIN yjse = jsce * 0.10-210; RETURN yjse; END; END IF ; IF jsce <= 25000 THEN BEGIN yjse = jsce * 0.20-1410; RETURN yjse; END; END IF ; IF jsce <= 35000 THEN BEGIN yjse = jsce * 0.25-2660; RETURN yjse; END; END IF ; IF jsce <= 55000 THEN BEGIN yjse = jsce * 0.30-4410; RETURN yjse; END; END IF ; IF jsce <= 80000 THEN BEGIN yjse = jsce * 0.35-7160; RETURN yjse; END; END IF ; -- 大于80000 yjse = jsce * 0.45-15160; RETURN yjse; END; $BODY$; ALTER FUNCTION public.x9_grsds(numeric) OWNER TO postgres;
三、总结
谁有更好的代码,帮忙改一下吧!