在 Odoo 中定义依赖于先前规则的薪资规则

Define Salary Rules that Depend on Previous Rules in Odoo

雇员的个人所得税按年度总工资的不同百分比计算。第一个波段(前 300,000.00)的税率为 7%,下一个波段(下一个 300,000.00)的税率为 11%,依此类推。鉴于每年的总收入为 500,000.00,总税额为(300,000.00 的 7% + 200,000.00 的 11%)。我有一个代码为 TAXABLE_INCOME 的规则,并希望计算个人所得税。我需要定义依赖于此规则的其他规则。

第一个规则条件类型是范围,取决于 "rules.TAXABLE_INCOME",范围是 0.00 - 300,000.00,金额类型是百分比,基于“300000.00 if rules.TAXABLE_INCOME > 300000.00 else rules.TAXABLE_INCOME”,百分比为 7%。

现在的挑战是,当我尝试计算工资单时,我收到错误消息,指出范围条件错误。定义范围 condition/percentage 值所依赖的正确方法是什么?我是否需要像 python 代码方法那样分配给结果?

工资区间可以概括为一个列表[(LowerBound, UpperBound, PercentTax),]

给定波段的规则取决于:result = TAXABLE_INCOME > LowerBound 而可以使用以下方法计算值:result = ((UpperBound - LowerBound) if TAXABLE_INCOME > UpperBound else (TAXABLE_INCOME - LowerBound)) * PercentTax / 100

最重要的发现是,尽管示例代码提到 rules.NET 在规则 ID 前添加 rules. 是错误的。因此,直接使用 TAXABLE_INCOME 而不是 rules.TAXABLE_INCOME