解决方案: |
应收应付在做汇兑损益时有按币种和按科目两种方式,按币种计算,是只考虑单据上的币种信息,而不考虑其他数据而进行计算的,按科目计算是只考虑您单据上选择的科目所属的外币,而不论您单据上是何种币种。正常情况下,这两种方式计算出来的数据是应该保持一致的。正常操作情况下,不一致的原因可能有:1、付款单表体行未输入对应的外币科目,虽然表头有外币结算科目,按币种计算汇兑损益时,是包含此张单据进行计算的,但按科目计算汇兑损益时,不包含此张单据,只有将表体行的科目输入才会包含;2、应付单上只有外币币种而未输入外币科目时,按币种计算时包含此张单据,而按科目计算时则不包含此张单据。您的数据经查看,不一致的原因主要是数据问题,原因有两点:1、在ap_detail表中有很多核销的记录没有对应的科目编码,这样,即使有些单据核销了,余额已经为0,但按科目计算汇兑损益时,这些单据仍然按单据金额计算汇兑损益,但按币种计算时,这些单据的原币余额是为0的,这样导致两种方式下计算的汇兑损益结果不一致;2、有四张其他应付单:dwk-05z-313、dwk-05z-316、dwk-05z-322-1、dwk-05z-342,这四张其他应付单在ap_detail表中的ccode科目编码字段为212103(日元),而币种字段则显示的是美元,导致在按币种计算时,如选择美元,则包含进去,按科目计算时,如选择美元科目,则没有这四张单据。问题解决办法:请先数据做好备份,然后执行下列语句:--将ap_detail表中的核销记录,科目编码为空的记录导致临时表a中:select * into a from ap_detail where cprocstyle='9p' and ccode is null;--先将a表的科目编码更新:update a set ccode=ap_detail.ccode from a inner join ap_detail on a.ccovouchid=ap_detail.cvouchid and a.ccovouchtype=ap_detail.cprocstyle;--更新ap_detail表中的ccode字段:update ap_detail set ccode =a.ccode from ap_detail inner join a on ap_detail.auto_id=a.auto_id;--修改四张其他应付单的ccode字段为212102:update ap_detail set ccode='212102' where cvouchid in ('dwk-05z-313','dwk-05z-316','dwk-05z-322-1','dwk-05z-342')。*********注意:一定要先做好数据备份! |