解决方案: |
发现存货明细帐和存货的计价辅助帐根本对不上帐,同时,存货明细帐也有错误数据. 分析过程: 您可以用以下语句查看明细帐和计价辅助帐对不上帐的情况: --ia_subsidiary select cinvcode,sum(iainquantity) subsumin,sum(iaoutquantity) subsumout into #sub from ia_subsidiary group by cinvcode --ia_valuationass select cinvcode,sum(iiquantity) valsumin,sum(ioquantity) valsumout into #val from ia_valuationass group by cinvcode --对不上的数据 select *,subsumin-valsumin [差异] from #sub join #val on #sub.cinvcode=#val.cinvcode where subsumin-valsumin<>0 以存货 W8640267 为例,说明此问题.执行如下语句: select dkeepdate,imonth,cwhcode,autoid,brdflag,bflag,cvoutype,id,iainquantity,iaoutquantity from ia_subsidiary where cinvcode='W8640267' order by autoid select cwhcode,autoid,cflag,inid,iiquantity,iicost,outid,ioquantity,iocost from ia_valuationass where cinvcode='W8640267' order by inid 可以发现在执行结果中,ia_valuationass中有两行(autoid 分别是25358,41908)有异常,与明细帐的来源核对不上. 核对时,应注意ia_subsidiary和ia_valuationass的关联关系,也就是ia_valuationass.inid=ia_subsidiary.id,ia_valuationass.outid=ia_subsidiary.id 另外,又发现明细帐也有很多其他的异常数据,体现在round(iaoutquantity*ioutcost,2)<>round(iaoutprice,2) 解决方法: 通过分析,发现ia_valuationass从1月份的数据开始就有错误,错误引起的原因主要是由于人为在数据库中修改了ia_valuationass. 因此,建议用户对所有单据恢复记帐,即恢复到1月份为记帐状态. 然后,重新记帐.但是,重新记帐要注意,对于暂估的业务,已经结算的,要删除对应的结算单,记帐后,重新结算. |