个人所得税计算函数的编写(plpgsql)

文章提供了一个用于计算个人所得税的PL/pgSQL函数,基于旧的税率表。现在寻求优化,尤其是考虑了最新的免税额调整。函数逐级检查收入范围并应用相应的税率和速算扣除数来计算税款。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在工资管理软件中,要计算个人所有税。一般是通过公式在后台完成计算,这是多年以前写的代码,后来也有小的修改,哪位这个内容比较熟悉,请忙优化一下。

一、税率表

个人所得税税率表四
级数 平均每月收入 税率(%) 速算扣除数
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;

三、总结

谁有更好的代码,帮忙改一下吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值