库存系统数量结存时间点容易忽略的问题
错误现象:
如图表示,假如当前日期为2023-06-01,若实时库存设置查询截止时间点为当前日期,此时如作废202304180002采购入库单,系统将允许作废,由于截止时间点的设置,系统计算实时库存会忽略2023年9月的领料出库,从而计算不到出库数,系统计算作废入库存就不会产生负库存,而通过数量检测而将单据作废,而最终造成负库存的产生。虽然操作用户不太可能把入库时间设定到非当前业务期间,且延后大段日期期间,但由于用户操作的不可控,故此情况应考虑在内,并由系统来纠错。
或者,仍以上表为例,若当前日期为2023-03-01,此时要删除202304180002这张采购入库单时,实时库存数量计算时间以当前日期2023-03-01为截止时间点,则会发生无法删除单据,因为在2023-03-01这个时间点上,库存结存数为0,系统在判断202304180002这张入库单时,会扣除入库数25,得到负库存的结果,所以会拒绝执行作废操作(此例忽略最后一条记录202309190001的生产领料单据)。
处理方式:
1、查询实时库存时,不应设置查询截止时间点,或将截止时间点设置到无限后,以防止由于人为的操作将单据日期设置到当前日期之后。
2、在对事务方向属性为入库的单据进行修改时,所有涉及数量变动的修改(包括直接修改数量,编码变动、批号变动、库位变动),都要进行数量结存数的检测,且要分两个时间点的结存数量检测:
1)单据日期数量结存数的检测
2)实时库存数量结存数的检测
数量检测要求:修改前检测,且计算数量必须>=0
1)修改前单据日期结存数量-单据数量;
2)实时库存数量-单据数量。
其中对实时库存的取数如前第1点,不应设置截止日期。