金额算法牛刀小试—可抵扣税额优化原创
1人赞赏了该文章
132次浏览
编辑于2024年01月25日 10:31:10
一、需求
当“结算币别”和“本位币”不同时,“可抵扣税额”和“税额本位币”、“计成本金额”和“金额本位币”有可能出现尾差,为了处理可抵扣税额尾差问题,我们需要调整可抵扣税额计算方法。
二、解决方案
金额算法是一个高效的金额类计算框架,可实现单据金额类字段的联动计算,业务层面需要识别金额字段的计算逻辑顺序,金额算法会按照字段改变的拓扑路线进行重算,金额字段结果会按照绑定的币别精度自动处理。
三、算法调整开发步骤
步骤1:实现计算公式接口:
方法名 | 作用 |
public Set<String> getCalFactors(); | 计算公式中参与运算的因子,改变的因子包含因子列表在才会触发计算逻辑; |
public String getTargetField() | 结果字段,计算完成会将结果赋值到对应的单据对象 |
public Object calculate(Map<String, Object> billInfo) | 计算逻辑实现,billInfo持有计算因子 |
步骤2:含税可抵扣税额经计算实现示例:
含税=是:可抵扣税额=价税合计/(1+税率)*可抵扣率
按结算币别精度处理后,接着如果为直接汇率,则X汇率,如果为间接汇率,则÷汇率
实现ICalculateExpr接口:
步骤3:AbstractModelExprProvider实现类中添加刚才新增的计算公式实现:
四、用户操作效果演示
五、开发环境及版本 V6.0.3
六、适用单据 本示例用于展示金额算法的计算公式接口实现。
七、附件
推荐阅读