解决方案: |
1、现存量表中数据错误。
--查询现存量中[数量]与[件数*换算率]差异较大如差出0.01的记录情况,
select *
from currentstock a
join inventory b on a.cinvcode=b.cinvcode
and a.iquantity-a.inum*b.iInvExchRate>0.01 or a.iquantity-a.inum*b.iInvExchRate<-0.01
--调整现存量更新所有记录行,使[数量]=[件数*换算率],
update currentstock set iquantity=inum*select iInvExchRate from inventory where cinvcode=currentstock.cinvcode
2、由于以前在选项中未选择[是否固定换算率],部分单据录入时根据件数、数量反算过换算率,保存了一些错误的记录数据单据上换算率与存货档案中不符。
--查询委托代销发货单子表中[数量]与[件数*换算率]差异较大如差出0.01的记录情况,
select * from endispatchs a
join inventory b on a.cinvcode=b.cinvcode
and a.iquantity-a.inum*b.iInvExchRate>0.01 or a.iquantity-a.inum*b.iInvExchRate<-0.01
--调整上述差异较大的委托代销发货单子表件数记录,
update endispatchs
set iquantity=inum*select iInvExchRate from inventory where cinvcode=endispatchs.cinvcode
where autoid in select autoid from endispatchs a
join inventory b on a.cinvcode=b.cinvcode
and a.iquantity-a.inum*b.iInvExchRate>0.01 or a.iquantity-a.inum*b.iInvExchRate<-0.01
--调整委托代销发货单子表金额记录,
update endispatchs set imoney=iquantity*iunitprice,itax=itaxrate*iquantity*iunitprice,
isum=iquantity*itaxunitprice,inatmoney=iquantity*inatunitprice,
inattax=itaxrate*iquantity*inatunitprice,inatsum=iquantity*itaxunitprice
where iquantity<>0 and inum<>0 and inum is not null
--3、提示库存量不足问题原因在于,现存量表中数量iquantity=105.52499999999989,而发货出库数量
--fOutQuantity=105.52500000000001,iquantity-0.0001
--and iquantity<>0 or foutquantity<>0 and iquantity<>foutquantity
--修正现存量中错误记录,
update currentstock
set iquantity=foutquantity
where foutquantity-iquantity<0.0001
and foutquantity-iquantity>-0.0001
and iquantity<>0 or foutquantity<>0 and iquantity<>foutquantity
--审核可正常通过。
--注1:以上1、2的脚本不可通用类似的数据问题,而且当选择[是否固定换算率]后,不会再出现换算率错误问题。
--注2:如果有类似提示现存量不足的问题,可以尝试使用问题3的脚本,该脚本可以通用,
--使用脚本之前需做好数据备份工作。
--解决现存量中由于float类型数据保存时产生的数据差异导致发货数量大于现存量的错误,审核无法通过问题.
--update currentstock set iquantity=foutquantity where foutquantity-iquantity<0.0001 and
--foutquantity-iquantity>-0.0001 and iquantity<>0 or foutquantity<>0 and iquantity<>foutquantity |