手把手教你设计库存管理系统

发布于:2020-12-29 08:51:27

库存系统作为电商后台系统中不可或缺的一部分,虽然公司业务千差万别,但主要的元素却是相似的,文章主要是根据自己的经验来浅谈一下库存系统的设计。亦作为一个自我工作的总结和梳理。

库存管理系统,简单的说,就是管理商品和数量之间的关系。在功能划分上,主要包括商品库存数量、入库、出库、盘点几个部分。

一、商品库存

即各个商品的数量管理。需要注意的是,在系统里需要保证商品的唯一性。在这里,涉及到以下几个数量:

  • 库存总数:目前仓库里还剩余的真实数量;

  • 可用数量:可以用于销售、调拨等的数量;

  • 锁定数量:指已经有了去处或者计划,但还未真正出库的数量(该部分在很多系统中,又会根据业务的不同而分成多个部分,在这里,暂且统一称之为锁定数量);

当然,在实际设计过程中,还会涉及到其他的值和功能点,以下几点可作为参考:

  1. 可以针对每个商品,做一个商品的历史变动明细、或根据不同维度做一些简单的数量统计;

  2. 设置阈值,当数量小于某个值时,给出通知或提示,以告知相关人员进行采购;

  3. 每个商品从采购到出库,每一个商品的流向进出都需要有所记录。在设计过程中,这一点是特别重要的,但却也是最复杂的,因为每一个业务通常都有很多的环节,会涉及到审批、物流、成本价等等,一个不小心,数据就会出现偏差;

二、商品入库

商品入库即商品数量增加的情形,主要包括采购、退货和调拨几种情形:

  • 采购:即仓库向供应商进行采购。(在不同的公司不同业务中,可能会涉及到很多的层采购,流程的复杂程度也随之各不相同);

  • 退货:从商城等的退货;

  • 调拨:从其他仓库调拨过来;

虽然看起来入库包含的内容不是很多,但实际上是仓库系统的设计在后台系统中却是较为复杂的一部分。不同的业务,需要考虑的因素太多,每一个商品,每一个批次,每一个入库的类型,还有相关的物流信息等,都需要反复思考和优化。

那么,下面就来介绍一下商品的入库流程及每一个环节中可以考虑的问题吧。

1、采购

  • 采购单信息:作为一批货品的采购信息,需要保证商品信息的完善和准确性;

  • 预估功能:对各个商品的出库数量做一个周期性的预估,以便更好的进行库存控制;

  • 采购提醒:在系统中可以设计一个监控功能,当商品可用数量少于一定值时,提醒采购;

  • 快捷填写采购单:因为录入采购单比较耗时,所以是否可以考虑做一个快捷填充的入口,比如可以根据上次的采购数量生成一个基础的采购单,然后再在自动生成的采购单基础上进行修改。当然,此方法是否可行还要看具体业务流程,在此只是作为一个参考;

  • 采购审核:在一些业务流程中,填写采购单后,是需要相关负责人先进行审核的,审核通过后会根据审核结果生成一张真正的采购单。此时,要考虑在审核过程中允许操作的点,比如是否允许修改数量、规格等;

  • 采购状态:需要提供一个可以追踪的界面,以便知道申请进度;

  • 权限:还需要注意的是,每个状态下每个角色的操作权限。比如哪些人可以申请采购,哪些人可以审核等;

2、退货

在这里,所指的入库是已经从仓库里面发出,之后再进行退还的过程。此过程中需要考虑的点有:

  • 退货状态:虽然这是属于订单系统里面的内容,但在仓库系统里面最好也有所表示,这样有利于仓库管理者监控商品的动态;

  • 退货仓库:考虑在库存里,是否需要把退货部分单独统一管理;

  • 退货商品成本:在有的系统中,从供应商采购再到最后零售的过程,可能会存在断层的情况,而且每一批商品的成本价可能会有所不同,此时就需要直接从入库单开始,实行先买先卖的原则,当退货时,就需要保证退回的商品退到了原始批次上;这一操作,主要是为了财务对账做准备

3、调拨

这就涉及到两个仓库之间的数量变化了。基本上调拨中仓库之间的变化如下:

如上图所示,若要从仓库A调拨50个某商品到仓库B,则:

  • 发货仓库:发起调拨后,发货仓库需要先锁定库存,此时,可用数量减少。发货后,锁定库存为0,,总库存减少;

  • 收货仓库:在真正入库之前,一切数量均不改变;

三、商品出库

商品出库主要包含:销售(经销商/零售/线上/线下/不同平台和渠道等)、调拨出库

1、销售

销售出库是最主要的一种出库形式,虽然销售的形式、渠道等都各不相同,但主要的逻辑都是相似的。

举个简单的例子:仓库A里面目前还有可口可乐500箱,有100箱已经卖出去了,但买家要明天才来提货。那么这100箱就会被锁定,不可再用于其他地方,此时,可用的只有400箱。若买家又不想买了取消了订单,那么被锁定的100箱库存又被释放,可用数量再次变为500箱。

2、调拨:如入库调拨所示。

四、仓库盘点

盘点主要是用于管理仓库实际值与系统值的差异的。理论上来说,若商品的各个环节数据都准确的话,实际值与系统值应该是一致的。但实际中可能会有一些系统检测不到的因素影响了真实的库存,这就需要仓库进行周期性的盘点了。

盘点之后,若实际值与系统值不一致,就需要把系统值修改正确,这时,可以通过人工或者自动生成出入库单的形式去修改系统值,而且修改的这部分数据是需要做出标记的,以便于财务之后的对账。(当然,实际设计中如何处理这部分差异,还要看业务性质和需求)

由于在实际的设计中,仓库系统涉及到的东西比较多,而且与业务的相关度比较高,不同的业务,设计出来的库存系统会有很大的差别,这里仅做了一个简单的概括和总结,若有其他的建议和方法,欢迎交流分享。


https://www.sohu.com/a/296888768_753266

阅读 262+

一片空白

父爱如山,不善表达。回想十多年前,总记得父亲有个宽厚的肩膀,小小的自己跨坐在上面,越过人山人海去看更广阔的天空,那个时候期望自己有一双翅膀,能够像鸟儿一样飞得高,看得远。虽然父亲有时会和自己开玩笑,但在做错事的时候会受到严厉的训斥。父亲有双粗糙的大手掌。