1 案例重现:
A. 暂估应付单物料WGJX0500007,暂估 AP00000219 与财务应付AP00000489 + AP00004717 只相差几十块钱(62446.95 - 62393.16 = 53.79)
B. 但是第二次财务应付AP00004717 本次开票核销差异(本位币)却为-56100.06,差异巨大
C. 导致成本调整单调整金额异常
2 原理分析:
启用了暂估冲回模式时,什么时候会产生成本调整单,以系统默认设置为例?
2.1 分析过程:
若(默认)不勾选税额计入成本时,若暂估与财务 跨期 且 不含税金额本位币有差异 时,则在核算后生成成本调整单调整差异金额;
而当核算对应组织(默认)勾选了“应付单与发票产生的差异计入存货成本”以及“采购应付单审核时自动进行入库核算”时,符合上述两个前提的成本调整单的生成时机则为核算当期的财务应付审核时自动生成。
暂估与财务差异的 不含税金额本位币 (注意以下都是本位币字段),体现在 开票核销记录的 本次开票核销差异(本位币)(路径:应付单列表-业务查询-开票记录-拉到最后一列);
差异的计算应是按照本次下推的财务应付对应的计价基本数量为基准,在总的计价基本数量中的占比来计算本次核销的暂估应付金额(正确数据下,计算出的金额即为暂估冲回对应金额);
数据正确前提下,可通过财务应付生成的 暂估冲回 与 财务 的 不含税金额本位币 相加得出差异,正确情况下,计算出来的差异即为开票核销记录对应的 本次开票核销差异(本位币);
而存货核算模块,主要根据 暂估冲回 对应的 钩稽日志 进行核算,其中,钩稽日志的 本次钩稽金额本位币 即为 开票核销记录对应的 本次开票核销差异(本位币);
(知识补充:钩稽日志中的本次钩稽数量取的是采购入库单的数量,而非暂估冲回的数量,因此存在多次下推时,本次钩稽数量并非反映实际冲回的数量)
成本调整单的 调整金额 即为暂估冲回在钩稽日志中对应的 本次钩稽金额本位币;
(知识补充:成本调整单只调本位币,不调原币;因此在钩稽日志中,成本调整单对应的原币金额为零属正常)
2.2 原理总结:
暂估与财务差异的 不含税金额本位币 -> 开票核销记录对应的 本次开票核销差异(本位币) -> 钩稽日志的 本次钩稽金额本位币 -> 成本调整单的 调整金额
3 异常分析:
3.1 分析过程:
系统在计算核销差异时,对于多次下推的设计并非每次都按照逻辑跑一遍计算,而是利用暂估应付 已核销不含税金额本位币 该字段记录 累加 财务应付 对应的不含税金额本位币,而当最后一次核销完全时,则用 (暂估应付 已核销不含税金额本位币) +(最后一次财务应付不含税金额本位币) - (暂估应付 不含税金额本位币) = (最后一次核销对应的 本次开票核销差异(本位币)),但由于BUG,18年部分下推的财务的暂估应付单据的 已核销不含税金额本位币 为 0(实际当本位币与原币一致时,该字段应等于已核销不含税金额)
3.2 异常总结:
由于该BUG,最后一次核销对应的 本次开票核销差异(本位币) 出现异常,少算了之前已经下推的财务应付的不含税金额,导致 本次开票核销差异(本位币) 偏低,从而导致成本调整单异常,成本偏低
4 解决思路分析
4.1 正确结果
下以案例分析的正确结果为示例:
A:
18年4月28日,第一次部分下推,财务应付 AP00000489 与暂估冲回 AP00000219-000001 不含税金额本位币差异为 56153.85 + (-56153.84) = 0.01
19年4月13日,第二次部分下推,财务应付 AP00004717 与暂估冲回 AP00000219-000002 不含税金额本位币差异为 6293.10+ (-6239.32) = 53.78
B:
18年4月28日,第一次部分下推,财务应付 AP00000489对应的 本次开票核销差异(本位币) 为 0.01
19年4月13日,第二次部分下推,财务应付 AP00004717对应的 本次开票核销差异(本位币) 应为 53.78
C:
18年4月28日,第一次部分下推,财务应付 AP00000489 对应的暂估冲回 AP00000219-000001 本次钩稽金额本位币 为 0.01,
对应的成本调整单 CBTZD00000194 调整金额 为 0.01;
19年4月13日,第二次部分下推,财务应付 AP00004717 对应的暂估冲回 AP00000219-000002 本次钩稽金额本位币 应为 53.78,
对应的成本调整单 CBTZD00016148 调整金额 应为 53.78;
4.2 解决思路总结:
A:如果已经结账,即财务应付为历史期间,则通过本期手工新增成本调整单并生成凭证调整:
对于本例,可以参照着系统生成的那张成本调整单来做,金额填写为56 153.84
调整金额计算思路为:
a.不含税金额正确差异:6293.10+ (-6239.32) = 53.78
b.系统产生的错误差异为:-56100.06
c.本期调整为正确减去错误的金额:53.780- (-56100.06) = 56 153.84
B:如果财务应付为本期单据,在业务允许反审核的前提下,可 反审核财务应付 后,后台修复 已核销不含税金额本位币 字段,重新审核后即正常。
C:附上后台排查存在类似问题的暂估单据脚本作参考
SELECT TAPB.FBILLNO
, TAPBE.FNOTAXAMOUNT
, TAPBE.FMATCHNOTTAXAMT
--UPDATE TAPBE SET TAPBE.FMATCHNOTTAXAMT = TAPBE.FMATCHNOTTAXAMTFOR
FROM T_AP_PAYABLE APB
INNER JOIN T_AP_PAYABLEENTRY APBE ON APB.FID = APBE.FID
AND APB.FSETACCOUNTTYPE = '3' --业务类型为财务应付
INNER JOIN T_AP_PAYABLE_LK APBK ON APBK.FENTRYID = APBE.FENTRYID
AND APBK.FSTABLENAME LIKE 'T_AP_PAYABLEENTRY%' --暂估推财务
INNER JOIN T_AP_PAYABLEENTRY TAPBE ON TAPBE.FID = APBK.FSBILLID
AND TAPBE.FENTRYID = APBK.FSID
AND TAPBE.FOPENSTATUS = 'B' --开票核销状态 为 部分
AND ( TAPBE.FMATCHNOTTAXAMT = 0 --异常判断1:已核销不含税金额本位币 为0
OR TAPBE.FMATCHNOTTAXAMT <> TAPBE.FNOTAXAMOUNT --异常判断2:不含税金额本位币 不等于 已核销不含税金额本位币
)
INNER JOIN T_AP_PAYABLE TAPB ON TAPB.FID = TAPBE.FID
AND TAPB.FSETACCOUNTTYPE = '2' --业务类型为暂估应付
AND TAPB.FDATE < '2018-12-31'
INNER JOIN T_AP_PAYABLEFIN TAPBF ON TAPBF.FID = TAPB.FID AND TAPBF.FMAINBOOKSTDCURRID = TAPB.FCURRENCYID --此处仅讨论原币和本位币一致的情况
推荐阅读