金额算法牛刀小试—可抵扣税额优化原创
金蝶云社区-tim2923
tim2923
1人赞赏了该文章 132次浏览 未经作者许可,禁止转载编辑于2024年01月25日 10:31:10

一、需求 

当“结算币别”和“本位币”不同时,“可抵扣税额”和“税额本位币”、“计成本金额”和“金额本位币”有可能出现尾差,为了处理可抵扣税额尾差问题,我们需要调整可抵扣税额计算方法。


二、解决方案 

金额算法是一个高效的金额类计算框架,可实现单据金额类字段的联动计算,业务层面需要识别金额字段的计算逻辑顺序,金额算法会按照字段改变的拓扑路线进行重算,金额字段结果会按照绑定的币别精度自动处理。 


三、算法调整开发步骤 

步骤1:实现计算公式接口: 

image.png


方法名作用
public Set<String> getCalFactors();计算公式中参与运算的因子,改变的因子包含因子列表在才会触发计算逻辑;
public String getTargetField()结果字段,计算完成会将结果赋值到对应的单据对象
public Object calculate(Map<String, Object> billInfo)计算逻辑实现,billInfo持有计算因子


步骤2:含税可抵扣税额经计算实现示例: 

含税=是:可抵扣税额=价税合计/(1+税率)*可抵扣率
按结算币别精度处理后,接着如果为直接汇率,则X汇率,如果为间接汇率,则÷汇率  


实现ICalculateExpr接口: 

image.png


 步骤3:AbstractModelExprProvider实现类中添加刚才新增的计算公式实现: 

image.png


四、用户操作效果演示

image.png

五、开发环境及版本 V6.0.3

六、适用单据 本示例用于展示金额算法的计算公式接口实现。 

七、附件


赞 1