【问题描述】
仓库设置了不允许负库存,客户当前的期末总库存也是正数,但是为何在商品收发明细表中间出现期末库存是负数的情况?
【解决方案】
详见下文,我们将通过一个场景案例来说明这个现象产生的原因及背后的逻辑,以及对应的解决方案与建议。
-
场景重现:
假设:某公司有仓库01,不允许负库存。有普通商品A,期初数量为0。
3月1日采购入库20个,2日销售出库10个,3日销售出库8个,那么3日查询到的期末库存就是2(=0+20-10-8)。(如下图)
3月4日,用户先新增了采购入库单20个,同时删除了3月1日已审核的采购入库单20个
那么3月4日查询到商品收发明细表期末总库存还是2,但是2、3日的期末库存会变成-10,-18(如下图),明明仓库不允许负库存,为什么2、3日的期末库存会变成负数?
-
原因解析:
之所以会出现上述现象,这是因为《库存查询表》的库存是根据当前节点最新的库存信息进行计算的, 如果用户在删单前,先做了同样数量的补单,那么此时可用库存的判断是充足的(2+20=22>0),单据是允许保存或者审核的,不会判断为负库存,而《商品收发明细表》的分录行期末库存是用前一条的期末库存减当前出库的数量,因此删除单据会造成紧随其后的单据有可能变成负数,而这个与负库存检查并不冲突。
注意:《库存查询表》反馈的是当前最新的库存数量,而《商品收发明细表》是记录每一笔业务当下的库存信息,二者记录的时间节点并不一样,一个是实时库存,一个是基于业务发生次序的历史数据计算出的,在同样的查询条件下,只有最后一笔收发明细的期末库存才是与当前库存查询表的库存是同步的。(如下图)
-
解决方案与建议:
因此,若用户的管理模式为不允许负库存,为了避免商品收发明细表出现这种期末库存为负数的情况,建议用户务必按照正常出入库顺序录单,尽量不要中途改单、删单。如果实在需要修改,那么最好还是严格按照时间的先后顺序来出入库,避免库存先出后进这种操作,否则容易出现部分单据的收发明细期末库存为负的情况。