T3结转应收应付时提示“错误号:0”
T3结转应收应付时提示“错误号:0”
问题现象:
年结转应收应付时报错,提示“错误号:0”
原因分析:
1、看到这个报错没法确定问题的原因,只能用事件探查器跟踪。跟踪发现结转报错时执行的语句:
Insert Into Ap_CloseBill
(cVouchType,cVouchID,dVouchDate,iPeriod,cDwCode,cDeptCode,cPerson,cItem_Class,cItemCode,cSSCode,cNoteNo,cDigest,cexch_name,iExchRate,iAmount,iAmount_f,iRAmount,iRAmount_f,cOperator,cCancelMan,bPrePay,bStartFlag,cPreCode,cSrcFlag,cFlag) Values ('48','01','2013-08-17',0,'BJ1001',Null,Null,Null,Null,'1',Null,Null,'人民币',1,1263600,1263600,1263600,1263600,Null,Null,1,1,Null,'A','AR')
Ap_CloseBill是收付款结算表,cVouchType=‘48’表示收款单,cDwCode表示单位编码,bPrePay=‘1’表示预收。此记录是一条预收款。
2、既然结转到2014年时要向ap_closebill表中插入记录,首先就会想到在2013年的此表中肯定会有这条记录存在。我们可以先在2013年查询一下此表,看是否有问题。
对2013年执行如下查询语句,却发现2013年的ap_closebill表中并未有相关记录存在。
按照常理来说,既然向下一年的ap_closebill表中插入记录,那么上一年中肯定也会有记录的,可是现在的确没有。我们接下来会想应该还有其他表会存有ap_closebill表的相关记录。
3、我们可以新建一个帐套,做一张收款单,然后做预收,使用事件探查器跟踪看会在那些表中写入记录。
解决方案:
我们先做一张收款单,然后形成预收。使用事件探查器跟踪发现会向AP_Detail表中插入记录。
既然知道ap_detail表中会存有ap_closebill表形成的预收,下面我们来查看一下2013年的ap_detail表。发现有3条预收记录。
ap_detail表中有预收记录, 但是Ap_closebill表中却没有记录,也就是说预收记录没有单据来源。我们删除这些预收记录后再结转试试,结果是结转成功。(针对客户数据,下列脚本中需要根据实际情况加上对应的where条件再处理问题)
delete from Ap_Detail where cVouchType='48'
知识扩展:
Ap_Detail表是记录应收应付的表,发票审核形成的应收应付、收付款单核销、预收预付、预收冲应收、预付冲应付、红票对冲等都会向该表插入记录。
上面的案例只是一种情况,是收款单没有了,但在ap_detail中却有收款单形成的预收等记录。
结转应收应付报错的原因很多都是Ap_Detail表和记录来源表之间的对应出现问题导致的。
比如Ap_Detail表中有对应的发票记录,或发票核销记录,但是在发票表中却找不到原始单据。这种情况需要和客户确认这些发票的实际情况,必要时将ap_detail表中的这些发票的记录删除则可结转成功。
再有如Ap_Detail表中有对应的发票记录,或发票核销记录,这些记录的cinvcode字段应该是对应发票上的记录的存货编码,但问题发现是这些存货编码在ap_detail表中为null值了,这时需要在ap_detail表中将这些null值改成对应的发票中的存货编码。
作者:畅捷服务社区 |  时间:2018年02月08日 15:00