3.1应税外加的算法:
总规则:
一、应用场景:
-
采购、销售订单
-
进销货单[票据类型]为"专用发票"
-
销货单[票据类型]为"普通发票"
-
采购、销售发票[发票类型]为"专用发票"
-
销售发票[发票类型]为"普通发票"
-
手工填写的采购入库单
注意:应用场景,并没有罗列全部单据。新增加的单据应用什么算法,参见具体业务需求
二、标识的判定:
-
标识按存货记录,标识作为计算规则,影响计算顺序,分为含税、无税两种。
-
标识由系统进行维护,录入修改单价或金额标识置为无税,录入修改含税单价或含税金额标识置为含税
-
含税时需先计算出含税单价或含税金额,再以含税单价或含税金额为准,推算税额、单价、金额等值。
-
无税时需先计算出单价或金额,再以单价或金额为准,推算税额、含税单价、含税金额等值。
三、报价含税与否的判定:
销售单据:取《系统管理-选项设置》[报价含税]值
采购单据:取《基础档案-往来单位》[采购报价含税]值
四、外加算法衡等式:
-
金额×(1+税率)=含税金额
-
金额×税率=税额
-
金额+税额=含税金额
-
含税单价×数量=含税金额
-
单价×数量=金额
报价含税:
-
含税单价=报价×折扣
-
折扣金额=报价×数量-含税金额
-
折扣=含税金额/(报价×数量);
报价不含税:
-
单价=报价×折扣
-
折扣金额=报价×数量×(1+税率)-含税金额
-
折扣=金额/(报价×数量)
A.录入、修改报价
数量、税率、折扣不变,并依次计算:
报价不为0且不为空的时候:
A1.报价含税、标识置为含税:
含税单价=报价×折扣
含税金额=含税单价×数量
金额=含税金额÷(1+税率)
税额=含税金额-金额
单价=含税金额÷(1+税率)÷数量,当
税率税额为0或空时单价=含税单价
折扣金额=报价×数量-含税单价×数量
A2.报价不含税、标识置为无税:
单价=报价×折扣
金额=单价×数量
税额=金额×税率
含税金额=金额+税额
含税单价=含税金额÷数量,当税率为0或空时含税单价=单价
折扣金额=报价×数量×(1+税率)-(单价×数量×(1+税率))
当报价改为0或为空的时候:
折扣=100%
含税单价、含税金额、金额、税额、单价、数量、税率、折扣金额不发生变化。
B.录入、修改单价
则数量、税率、报价不变,标识置为无税,并依次计算:
金额=单价×数量
税额=金额×税率
含税金额=金额+税额
含税单价=含税金额÷数量,当
税率税额为0或空时含税单价=单价
报价不为0且不为空时:
报价含税:折扣金额=报价×数量-(单价×数量×(1+税率))
折扣=单价×数量×(1+税率)/(报价×数量)
折扣=单价
×数量×(1+税率)/(报价
×数量)
报价不含税:折扣金额=报价×数量×(1+税率)-(单价×数量×(1+税率))
折扣=单价×数量/(报价×数量)
折扣=单价
×数量/(报价
×数量)
C.录入、修改含税单价
则数量、税率、报价不变,标识置为含税,并依次计算:
含税金额=含税单价×数量
金额=含税金额÷(1+税率)
税额=含税金额-金额
单价=含税金额÷(1+税率)÷数量,当
税率税额为0或空时单价=含税单价
报价不为0且不为空时:
报价含税:折扣金额=报价×数量-含税单价×数量
折扣=含税单价×数量÷(报价×数量)
折扣=含税单价÷(报价)
报价不含税:折扣金额=报价×数量×(1+税率)-含税单价×数量
折扣=含税单价×数量÷(1+税率)÷(报价×数量)
折扣=含税单价÷(1+税率)÷(报价)
D.录入、修改金额
则数量、税率、报价不变,标识置为无税,并依次计算:
税额=金额×税率
含税金额=金额+税额
含税单价=含税金额÷数量
单价=金额÷数量
报价不为0且不为空时:
报价含税:折扣金额=报价×数量-(金额×(1+税率))
折扣=金额×(1+税率)÷(报价×数量)
报价不含税:折扣金额=报价×数量×(1+税率)-(金额×(1+税率))
折扣=金额/(报价×数量)
E.录入、修改含税金额
则数量、税率、报价不变,标识置为含税,并依次计算:
金额=含税金额÷(1+税率)
税额=含税金额-金额
含税单价=含税金额÷数量
单价=含税金额÷(1+税率)÷数量,当
税率税额为0或空时单价=含税单价
报价不为0且不为空时:
报价含税:折扣金额=报价×数量-含税金额
折扣=含税金额/(报价×数量);
报价不含税:折扣金额=报价×数量×(1+税率)-含税金额
折扣=含税金额÷(1+税率)÷(报价×数量)
F.
录入、修改税率
F1.标识含税:
则数量、含税单价、含税金额、报价不变,并依次计算:
金额=含税金额÷(1+税率)
税额=含税金额-金额
单价=含税金额÷(1+税率)÷数量,当
税率税额为0或空时单价=含税单价
报价不为0且不为空时:
报价含税:折扣金额=报价×数量-含税金额
折扣=含税金额/(报价×数量);
报价不含税:折扣金额=报价×数量×(1+税率)-含税金额
折扣=含税金额÷(1+税率)÷(报价×数量)
F2.标识不含税:
则数量、单价、金额、报价不变,并依次计算:
税额=金额×税率
含税金额=金额+税额
含税单价=含税金额÷数量,当
税率税额为0或空时含税单价=单价
报价不为0且不为空时:
报价含税:折扣金额=报价×数量-金额×(1+税率)
折扣=金额×(1+税率)÷(报价×数量)
报价不含税:折扣金额=报价×数量×(1+税率)-金额×(1+税率)
折扣=金额/(报价×数量)
G.录入、修改数量
G1.标识含税:
则税率、含税单价、报价不变,并依次计算:
含税金额=含税单价×数量
金额=含税金额÷(1+税率)
税额=含税金额-金额
单价=含税金额÷(1+税率)÷数量,当
税率税额为0或空时单价=含税单价
报价不为0且不为空时:
报价含税:折扣金额=报价×数量-含税单价×数量
折扣不变
报价不含税:折扣金额=报价×数量×(1+税率)-含税单价×数量
折扣不变
G2.标识不含税:
则税率、单价、报价不变,并依次计算:
金额=单价×数量
税额=金额×税率
含税金额=金额+税额
含税单价=含税金额÷数量,当
税率税额为0或空时含税单价=单价
报价不为0且不为空时:
报价含税:折扣金额=报价×数量-单价×数量×(1+税率)
折扣不变
报价不含税:折扣金额=报价×数量×(1+税率)-单价×数量×(1+税率)
折扣不变
H.录入、修改折扣金额
则数量、税率、报价(报价不为0且不为空)不变,标识置为含税,并依次计算:
H1.报价含税:
含税金额=报价×数量-折扣金额
含税单价=含税金额÷数量
金额=含税金额÷(1+税率)
税额=含税金额-金额
单价=含税金额÷(1+税率)÷数量,当
税率税额为0或空时单价=含税单价
折扣=含税金额/(报价×数量)
H2.报价不含税:
含税金额=报价×数量×(1+税率)-折扣金额
含税单价=含税金额÷数量
金额=含税金额÷(1+税率)
税额=含税金额-金额
单价=含税金额÷(1+税率)÷数量,当
税率税额为0或空时单价=含税单价
折扣=金额/(报价×数量)
当报价为0或为空的时候:
含税金额=原含税金额-折扣金额
然后套用含税金额发生变化的算法进行计算
I.
录入、修改折扣
则数量、税率、报价(报价不为0且不为空)不变,并依次计算:
I1.报价含税、标识置为含税:
含税单价=报价×折扣
含税金额=含税单价×数量
金额=含税金额÷(1+税率)
税额=含税金额-金额
单价=含税金额÷(1+税率)÷数量,当
税率税额为0或空时单价=含税单价
折扣金额=报价×数量-报价×折扣×数量
I2.报价不含税、标识置为无税:
单价=报价×折扣
金额=单价×数量
税额=金额×税率
含税金额=金额+税额
含税单价=含税金额÷数量,当
税率税额为0或空时含税单价=单价
折扣金额=报价×数量×(1+税率)-报价×折扣×数量×(1+税率)
当报价为0或为空的时候:
折扣可以修改,但是含税单价、含税金额、金额、税额、单价、数量、税率、折扣金额不发生变化。
J.
录入、修改税额
J1.标识含税:
则数量、含税单价、含税金额、税率、折扣、折扣金额、报价不变,并依次计算:
金额=含税金额-税额
单价=金额÷数量,当
税率税额为0或空时单价=含税单价
J2.标识不含税:
则数量、单价、金额、税率、报价不变,并依次计算:
含税金额=金额+税额
含税单价=含税金额÷数量,当
税率税额为0或空时含税单价=单价
报价不为0且不为空时:
报价含税:折扣金额=报价×数量-含税金额
折扣=含税金额/(报价×数量);
报价不含税:折扣金额=报价×数量×(1+税率)-单价×数量×(1+税率)
折扣不变
最后一步规则:
当报价不为0且不为空时,数量不为0且不为空,折扣=100%时,折扣金额=0
3.2应税内含的算法:
总规则:
-
应用场景及税率带入规则:
-
进货单[票据类型]为"废旧物资发票、红字废旧物资发票",税率默认带入10%
-
进货单[票据类型]为"农副产品发票、红字农副产品发票",税率默认带入13%
-
进货单[票据类型]为"普通发票、红字普通发票",税率默认带入0%
-
采购发票[发票类型]为"废旧物资发票、红字废旧物资发票",税率默认带入10%
-
采购发票[发票类型]为"农副产品发票、红字农副产品发票",税率默认带入13%
-
采购发票[发票类型]为"普通发票、红字普通发票",税率默认带入0%
注意:应用场景,并没有罗列全部单据。新增加的单据应用什么算法,参见具体业务需求
-
标识、报价判定:按含税计,与任何选项无关
A.输入、修改报价
则数量、税率、折扣不变,并依次计算:
当报价不为0且不为空的时候:
含税单价=报价×折扣
含税金额=含税单价×数量
税额=含税金额×税率
金额=含税金额-税额
单价=金额÷数量,当
税率税额为0或空时单价=含税单价
报价不为0且不为空时:
折扣金额=报价×数量-含税单价×数量
当报价改为0或为空的时候:
折扣=100%
含税单价、含税金额、金额、税额、单价、数量、税率、折扣金额不发生变化。
B.录入、修改含税单价
则数量、税率、报价不变,并依次计算:
含税金额=含税单价×数量
税额=含税金额×税率
金额=含税金额-税额
单价=金额÷数量,当
税率税额为0或空时单价=含税单价
报价不为0且不为空时:
折扣金额=报价×数量-含税单价×数量
折扣=含税单价×数量÷(报价×数量)
折扣=含税单价÷(报价)
C.录入、修改含税金额
则数量、税率、报价不变,并依次计算:
含税单价=含税金额÷数量
税额=含税金额×税率
金额=含税金额-税额
单价=金额÷数量,当
税率税额为0或空时单价=含税单价
报价不为0且不为空时:
折扣金额=报价×数量-含税金额
折扣=含税金额/(报价×数量);
D.录入、修改税率
则数量、含税金额、折扣、折扣金额、报价不变,并依次计算:
税额=含税金额×税率
金额=含税金额-税额
单价=金额÷数量
含税单价=含税金额÷数量,当
税率税额为0或空时含税单价=单价
E.录入、修改数量
则税率、含税单价、报价不变,并依次计算:
含税金额=含税单价×数量
税额=含税金额×税率
金额=含税金额-税额
单价=金额÷数量,当
税率税额为0或空时单价=含税单价
报价不为0且不为空时:
折扣金额=报价×数量-含税单价×数量
折扣不变
F. 录入、修改折扣金额
则数量、税率、报价(报价不为0且不为空)不变,并依次计算:
含税金额=报价×数量-折扣金额
含税单价=含税金额÷数量
税额=含税金额×税率
金额=含税金额-税额
单价=金额÷数量,当
税率税额为0或空时单价=含税单价
报价不为0且不为空时:
折扣=含税金额/(报价×数量)
当报价为0或为空的时候:
含税金额=原含税金额-折扣金额
然后套用含税金额发生变化的算法进行计算
G.
录入、修改折扣
则数量、税率、报价(报价不为0且不为空)不变,并依次计算:
含税单价=报价×折扣
含税金额=含税单价×数量
税额=含税金额×税率
金额=含税金额-税额
单价=金额÷数量,当
税率税额为0或空时单价=含税单价
报价不为0且不为空时:
折扣金额=报价×数量-报价×折扣×数量
当报价为0或为空的时候:
折扣可以修改,但是含税单价、含税金额、金额、税额、单价、数量、税率、折扣金额不发生变化。
H.
录入、修改税额
则数量、含税单价、含税金额、税率、折扣、折扣金额、报价不变,并依次计算:
金额=含税金额-税额
单价=金额÷数量,当
税率税额为0或空时单价=含税单价
最后一步规则:
当报价不为0且不为空时,数量不为0且不为空,折扣=100%时,折扣金额=0
3.3收据算法
总规则:
-
应用场景:
-
进货单[票据类型]为"收据"
-
销货单[票据类型]为"收据"
注意:应用场景,并没有罗列全部单据。新增加的单据应用什么算法,参见具体业务需求
-
标识判定:按无税计,与任何选项无关;报价含税与否不需判断
A.录入、修改单价
数量、报价不变,并依次计算:
金额=单价×数量
报价不为0且不为空时:
折扣金额=报价×数量-单价×数量
折扣=(单价×数量)/(报价×数量);
B.录入、修改数量
单价、报价不变,并依次计算:
金额=单价×数量
报价不为0且不为空时:
折扣金额=报价×数量-单价×数量
折扣=(单价×数量)/(报价×数量);
C.录入、修改金额
数量、报价不变,并依次计算:
单价=金额÷数量
报价不为0且不为空时:
折扣金额=报价×数量-金额
折扣=金额/(报价×数量);
D.录入、修改报价
当报价不为0且不为空时
则数量、折扣不变,并依次计算:
单价=报价×折扣
金额=单价×数量
报价不为0且不为空时:
折扣金额=报价×数量-单价×数量
当报价改为0或为空的时候:
折扣=100%
金额、单价、数量、折扣金额不发生变化。
E.录入、修改折扣金额
则数量、报价(报价不为0且不为空)不变,并依次计算:
金额=报价×数量-折扣金额
单价=金额÷数量
折扣=报价×数量-折扣金额/(报价×数量)
当报价为0或为空的时候:
金额=原金额-折扣金额
然后套用金额发生变化的算法进行计算
F.
录入、修改折扣
则数量、报价(报价不为0且不为空)不变,并依次计算:
单价=报价×折扣
金额=单价×数量
折扣金额=报价×数量-单价×数量
当报价为0或为空的时候:
可以修改折扣,但是数量、单价、金额、折扣金额不发生变化
最后一步规则:
当报价不为0且不为空时,数量不为0且不为空,折扣=100%时,折扣金额=0
3.4流转算法
单据流转适用算法:
|
适用算法 |
流转情况 |
来源单据算法 |
当前单据算法 |
|
应税外加 |
情况一:流转前后算法不变 |
"应税外加" |
"应税外加" |
|
应税内含 |
情况二.流转前后算法不变 |
"应税内含" |
"应税内含" |
|
|
情况三.流转前后算法不同 |
"应税外加" |
"应税内含" |
|
|
|
"应税内含" |
"应税外加" |
原则:"收据"作为应税外加算法
-
情况一:完全使用应税外加算法的流转
-
全部流转:全字段带入。如果流转前后单价小数位数变化,流转后重新计算单价,计算后标识不变
含税单价=含税金额÷数量
单价=金额÷数量,当税率为0或空时单价=含税单价
-
部分流转:
带入:报价、数量、税率、报价是否含税、来源单标识
带入[含税单价],遵照"应税外加"算法中C规则计算
带入[单价],遵照"应税外加"算法中B规则计算
-
情况二:完全使用应税内含算法的流转
-
全部流转:全字段带入。如果流转前后单价小数位数变化,流转后重新计算单价,计算后标识不变
含税单价=含税金额÷数量
单价=金额÷数量,当税率为0或空时单价=含税单价
-
部分流转:
带入:报价、数量、税率、报价是否含税、来源单标识
带入[含税单价],遵照"应税内含"算法中B规则计算
-
情况三:流转前后算法不同,适用应税内含算法的流转
-
全部流转:
带入:报价、折扣、折扣金额、数量、税率
含税金额=来源单[含税金额]
标识为含税
遵照"应税内含"算法中C规则计算:含税单价、单价、金额、税额
-
-
-
-
来源单据[报价]不含税时,将当前单据"报价、折扣金额"置空
-
部分流转:
带入:报价、数量、税率
标识为含税
带入[含税单价],遵照"应税内含"算法中B规则计算
-
-
-
-
来源单据[报价]不含税时,将当前单据"报价、折扣金额"置空
-
修改计量单位的算法:
首先计算换算率和数量,换算率和数量的计算遵照
2.2手工输入中计量单位修改的规则。
其他字段的变化根据下列算法进行计算:
-
应税外加
根据明细行的含税标识进行判断,如果标识含税,遵照"应税外加"算法E规则计算;如果标识不含税,遵照应税外加"算法D规则计算
-
应税内含
遵照"应税内含"算法C规则计算;
-
收据
遵照"收据"算法C规则计算;
3.5原本币间换算:
-
汇率为1时,原币与本币价税额对应的字段值相等,对应关系如下:
|
原币价税额 |
本币价税额 |
|
报价 |
|
|
折扣 |
本币折扣 |
|
单价 |
本币单价 |
|
含税单价 |
本币含税单价 |
|
金额 |
本币金额 |
|
税额 |
本币税额 |
|
含税金额 |
本币含税金额 |
|
折扣金额 |
本币折扣金额 |
-
汇率不为1时:计算本币价税额
-
标识为含税:
在原币价税额计算完成的基础上,先根据汇率计算本币含税金额,再以本币含税金额为准,进行推算:
-
-
-
本币含税金额=原币含税金额*汇率(折算方式:原币*汇率=本位币)
本币含税金额=原币含税金额/汇率(折算方式:原币/汇率=本位币)
本币报价=原币报价*汇率(折算方式:原币*汇率=本位币)
本币报价=原币报价/汇率(折算方式:原币/汇率=本位币)
-
-
-
判断为"应税外加"时:遵照"应税外加"算法中E规则计算。
-
判断为"应税内含"时:遵照"应税内含"算法中C规则计算。
-
如果修改的是税额,在按规则计算基础上还要重新计算:
本币税额=税额*汇率(折算方式:原币*汇率=本位币)
本币税额=税额/汇率(折算方式:原币/汇率=本位币)
本币金额=本币含税金额-本币税额
本币单价=本币金额÷数量
-
-
-
当报价为0或为空的时候,折扣金额不为0且不为空的时候
本币折扣金额=原币折扣金额*汇率(折算方式:原币*汇率=本位币)
本币折扣金额=原币折扣金额/汇率(折算方式:原币/汇率=本位币)
-
-
标识为无税:
在原币价税额计算完成的基础上,先根据汇率计算本币金额,再以本币金额为准,遵照"应税外加"算法中D规则进行推算。(内含算法金额不能直接输入、修改)
-
-
-
本币金额=原币金额*汇率(折算方式:原币*汇率=本位币)
本币金额=原币金额/汇率(折算方式:原币/汇率=本位币)
本币报价=原币报价*汇率(折算方式:原币*汇率=本位币)
本币报价=原币报价/汇率(折算方式:原币/汇率=本位币)
-
-
-
如果修改的是税额,在按规则计算基础上还要重新计算:
本币税额=税额*汇率(折算方式:原币*汇率=本位币)
本币税额=税额/汇率(折算方式:原币/汇率=本位币)
本币含税金额=本币金额+本币税额
本币含税单价=本币含税金额÷数量
-
-
-
当报价为0或为空的时候,折扣金额不为0且不为空的时候
本币折扣金额=原币折扣金额*汇率(折算方式:原币*汇率=本位币)
本币折扣金额=原币折扣金额/汇率(折算方式:原币/汇率=本位币)
-
-
输入、修改表头汇率:
原币价税额不变,依据(1)、(2)规则和汇率推算本币价税额。
3.6空值在数量、单价、金额算法的规则
1)+、-的时候,当两个字段都为空的时候结果为空,当两个字段其中一个为空的时候,为空的字段当0计算;
2)*、/的时候,只要一个字段为空的时候,结果就为空;
3)修改报价、修改折扣、修改折扣金额,当报价为0或为空时的规则不受上述影响。
4)如果折扣计算得出为空的时候,折扣=100%
5)数量、数量2、换算率之间的影响不受上述规则影响,仍延续原有规则,具体规则参见2.2。
4.单据后台校验规则
如果单据全部流转时,后台校验不通过时,按部分流转的算法重新进行计算。标识含税时走修改含税金额的算法,否则走修改金额的算法。
如果因数量的精度发生变化引起的校验不通过,会执行数量改变的算法进行计算。
5.特殊情况处理
要根据单据表体明细“手工调整金额税额”值进行判断是否走修改单价金额算法。
如果“手工调整金额税额”值为T,则录入金额和税额后,不计算含税金额和其他字段。