这里统一只讲价外税的情况,价内税不讲
目前系统计算逻辑为:先根据单价计算不含税金额和税额,价税合计=不含税金额+税额。这样有可能导致价税合计不等于含税单价*数量。比如这个
基于这个情况,可能需要调整系统逻辑,修改为价税合计=含税单价*数量,但是这样又会导致价税合计不等于不含税金额+税额了。所以,我们需要连带调整不含税金额和税额的计算公式,思路为:价税合计=数量*含税单价,不含税金额=价税合计/(1+税率),税额=价税合计-不含税金额。具体操作如下:
1、在明细新增实体服务规则,计算价税合计,且移动到1.05之后,2.01之前。见截图。
自己加的,价外税,按含税单价录入,价税合计=计价数量*含税单价
前置条件:价外税,按含税单价录入FISPRICEEXCLUDETAX = true AND FISTAX =true AND FTaxPrice <> null AND FPriceQty <> null AND FDISCOUNTAMOUNTFOR <> null
计算公式:价税合计=计价数量*含税单价-折扣额额 FALLAMOUNTFOR_D = FPriceQty * FTaxPrice- FDISCOUNTAMOUNTFOR
2、在明细新增实体服务规则,计算不含税金额,且移动到1.05之后,2.01之前。操作步骤和上一步一样。
自己加的,按含税单价录入,价外税,不含税金额=价税合计/(1+税率)
前置条件:价外税,按含税单价录入
FISPRICEEXCLUDETAX = true AND FISTAX =true AND FALLAMOUNTFOR_D <> null AND FPriceQty <> null AND FDISCOUNTAMOUNTFOR <> null AND FEntryTaxRate <> null AND FTaxPrice <> null
计算公式:不含税金额=价税合计/(1+税率)
FNoTaxAmountFor_D = FALLAMOUNTFOR_D / ( 1 + FEntryTaxRate / 100 )
3、在明细新增实体服务规则,计算税额,且移动到1.05之后,2.01之前。见截图
自己加的,按含税单价录入,价外税,税额=价税合计-不含税金额
前置条件:价外税,按含税单价录入FISPRICEEXCLUDETAX = true AND FISTAX =true AND FALLAMOUNTFOR_D <> null AND FNoTaxAmountFor_D <> null
计算公式:税额=价税合计-不含税金额
FTAXAMOUNTFOR_D = FALLAMOUNTFOR_D - FNoTaxAmountFor_D
4、停用明细的系统预制的2.01和2.05的实体服务规则。修改5.01这个实体服务规则的前置条件,增加按含税单价录入等于false的条件,改为:FISPRICEEXCLUDETAX = true AND FNoTaxAmountFor_D <> null AND FTAXAMOUNTFOR_D <> null AND FISTAX = false
5、建议取消勾选明细的不含税金额的值更新,第5和第6计算税额和价税合计的公式。
6、另外,由于直接修改税额并不会更新不含税金额,导致不含税金额+税额不等于价税合计,因此建议锁定税额。
实现效果如下:价税合计=含税单价*计价数量,修改不含税金额,价税合计不变,会倒算税额,税额=价税合计-不含税金额。
但是有些客户会希望不含税金额的计算逻辑不变,实现效果如下:
那就取消勾选自己加的计算不含税金额的服务,勾上2.05即可,见截图:
推荐阅读