案例1:
1、 在商品库存查询中查询到的库存数据,与实时库存报表查询到的库存不一致。
解决方法:
1)商品库存查询中的库存值是日结后更新的,根据商品的销售数据冲销计算而来,所以在没有日结的情况下,商品库存查询中的库存值不会变动;
2)而实时库存报表,则是按最后一次的日结计算的库存,与已经上传到后台没有冲销的销售数量, 进行冲减而得到的计算值;
3)在前台有销售没有日结情况下,商品库存查询与实时库存报表不一致为正常情况;
4)由于前台销售存在断网,或者销售数据传输不及时的情况,实时库存的计算值,只作为一个参考值,实际库存数据还是以日结后的商品库存查询 为准。
案例2:
2、 历史库存查询库存变动。例如今天和昨天在历史库存查询中,查询一个商品在08-31这天的库存数量不一致。
解决方法:
历史库存查询中的库存数量是根据日进销存的结存数量取值,当商品有之前的断网数据上传,或者做采购补录单,即会重算之前的结存,从而导致历史库存查询变动,例如商品A在2020-08-30这天的结余库存100,今天做了采购补录单,补录时间为2020-08-30之前,补录数量为50,正常日结并进行结转,这样在昨天的历史库存查询中,查询到A在2020-08-30的库存数量100 ,而今天日结后之后查询则为150。
案例3:
3、认为软件中查询到到商品库存与实际库存不一致。
软件作为进销存数据的录入工具,只有录入过系统才会生成相应数据,当客户有感觉库存有异常时,首先要先确认是否日结,只用日结后,系统才会对相应业务进行冲销,计算进销存数据,确认有正常日结的情况下,再到出入库明细中检查商品的所有出入库记录,将时间范围拉大覆盖到该商品所有业务时间范围进行查询。
核查标准:库存数量= 所有进行数量 –所有出项数量
1)若数量一致,则说明软件计算正常,若依旧认为库存不对,则是有可能是商品实际入库后,单据没有录入(可使用采购补录单补录),或者前台有断网销售没有上传(在前台使用F12-F5按时间检索上传)
2)相应相应数量不一致,则检查这个商品在出入库明细中的最后一比记录的库存结余值。
3)由查询可知出入库明细的所有进项数量与出项数差额,与商品最后一比业务的结余数量不一致,可判断是出入库的结余出问题,而导致库存记录异常,检查所有出入库明细中的结余。
核查标准:本次库存结余=上一次的结余+本次入项数量-本次出库数量
3)根据截图示例,查询可知在2020-01-01之前的结余数量没有累加计算,导致后面的结余全部计算错误,而在2019-12-11的采购入库之后,结余计算开始正常,可以判断该问题是商品在没有采购之前的业务有问题,这些业务的结余计算异常,同时影响商品库存记录。此情况使用语句重算商品的库存数量和出入库结余即可。相应重算语句必须要在日结后进行执行,并请注意备份相应数据库 。
注:此条案例解决方法仅供参考,不要按此方法直接给客户执行语句,最终sql语句的执行是经过技术支持工程师分析客户数据后,找到具体原因给出的方案。目的是让伙伴们了解因数据异常,导致库存不准确是如何进行排查分析的。
--以下语句以商慧版本为例,商锐产品调整数据库名以及门店编码为两位。
--1,查询总部0000库存结余计算异常的商品,门店值可按需调整。
use hbposepro
go
select t_im_branch_stock.item_no, t_im_branch_stock.stock_qty ,aaa.qty
into #a from
(select item_no,branch_no,
sum(case db_no when '+' then real_qty when '-' then -real_qty end )qty
from t_im_flow where trans_no!='PC' AND trans_no!='KB'
group by item_no,branch_no) aaa,t_im_branch_stock
where t_im_branch_stock.item_no = aaa.item_no and t_im_branch_stock.branch_no = aaa.branch_no
and t_im_branch_stock.stock_qty!=aaa.qty
and aaa.branch_no like '0000%'
---2,根据查询出来的异常商品货号修正出入库结余:
use hbposepro
go
declare @flow_id numeric(14, 0)
declare @branch_no char(6)
declare @item_no varchar(20)
-------游标生成
declare cur_row cursor for
select item_no, branch_no,flow_id from t_im_flow where item_no in (select item_no from #a) and branch_no like '0000%'
open cur_row
fetch cur_row into @item_no,@branch_no,@flow_id
while @@fetch_status=0
begin
update t_im_flow set pre_qnty=(select sum(case when db_no = '+' then real_qty when db_no = '-' then -real_qty else real_qty end) From t_im_flow
where item_no=@item_no and branch_no=@branch_no and trans_no not in ('PC','KB') and flow_id<=@flow_id)
where flow_id=@flow_id
fetch next from cur_row into @item_no,@branch_no,@flow_id
end
close cur_row
deallocate cur_row
----3,最后根据出入库结余修正库存数量
use hbposepro
go
update t_im_branch_stock set stock_qty=a.qty
from t_im_branch_stock b , #a a
where a.item_no=b.item_no and b.branch_no like '0000%'