在工资管理软件中,要计算个人所有税。一般是通过公式在后台完成计算,这是多年以前写的代码,后来也有小的修改,哪位这个内容比较熟悉,请忙优化一下。
一、税率表
个人所得税税率表四
级数 平均每月收入 税率(%) 速算扣除数
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;
三、总结
谁有更好的代码,帮忙改一下吧!