项目背景:笔者所在公司是一个电商细分行业的头部企业,需要集中管理上万个sku并为公司庞大的订单量提供支撑,之前使用的系统是自研的一套ERP系统并部署在多个仓库。
但是由于以下几个痛点,最终做出引进一套专业WMS系统的决策。
当前的ERP系统承担太多职责,包括产品,供应商,客户的资料维护,库存管理功能,GSP合规相关功能,对账功能等都运营在一个系统,导致系统耦合性太强,不易于改造;
当前系统不存在波次概念,无法设定灵活的波次策略来将订单分组进行集中拣货,导致作业效率较慢;
当前系统无法实现灵活的动态盘点,因此对于库存管理比较混乱,无法保证出库的准确性;
无法满足日益变化的业务需求,对于GSP合规要求,指定批号发货等要求无法完全满足,导致相关的业务增长受限。
仓库管理系统包括入库业务、出库业务、仓库调拨、库存管理和虚仓管理等功能,是综合批次管理、物料对应、库存盘点、质检管理、虚仓管理和即时库存管理等功能综合运用的管理系统,有效控制并跟踪仓库业务的物流和成本管理全过程,实现完善的企业仓储信息管理。
对于WMS系统来说,总体的框架基本都比较固定,核心在于系统功能的设计与行业或实际业务场景的契合度,能够满足业务需求并真正提升作业效率。
2.1.1 订单产生
采购订单产生于上游采购系统,采购系统订单生成后传入WMS系统形成PO单。
2.1.2 到货信息录入
到货及验收可用PC或PDA操作,收货员核对来货单与实物,提取对应的PO单并按照来货单的明细拆分成ASN单(同一个PO单可能需要分多次来),针对ASN单录入实际来货单号,数量,生厂日期,有效期,到货日期及到货温度等信息。
由于仓库作业人员正常无法从供应链上游获得预期到货时间,因此仓库作业人员实际需要根据到货情况,找到对应供应商的PO单并拆分成ASN单;在与上游供应商进行数据对接的情况下,可以直接在系统生成ASN单(并且可以将在途库存纳入可销售数量中)。
核心关注点:仓库作业都是基于实物进行作业,因此后续验收上架流程均需要以供应商来货单为基础而不是采购订单(采购订单只是一个计划,采购计划未完成时也可以强制关闭);采购订单明细信息可以与来货单明细信息不要求一致,但是数量需要对应(便于跟踪订单履行情况)。
逻辑关系:供应商可能对几个采购单合并处理并分批发货,因此采购单和来货单的关系可能不是简单的一对多而是多对多关系;同一个ASN单的同一个商品可能由于价格或者批次信息不同,ASN单与收货信息之间是一对多的关系。
2.1.3 验收信息录入
验收员对比实物与到货情况,修正到货录入错误信息(或驳回至上一步确认);针对不合格品进行拒收操作,针对合格品则验收通过进入待上架状态。
验收人员的工作重点在于检查,一方面核对之前到货信息是否录入正确,另一方面重点对到货质量进行检查。
验收不合格品将会进行拒收操作,包括包装破损,有效期或批号等信息不符合要求;单独生成拒收记录并退货供应商(并打印拒收单据)。
验收的实物信息与ASN单不一致的情况下,系统需要生成差异单。
2.1.4 上架
对于验收通过的合格品(或差异重新上架),按照上架规则分配库位后,上架员可在PC或PDA进行上架操作。
验收过程中需要绑定上架小车条码,便于上架员直接扫码领取任务。
对于WMS系统入库模块来说,不针对具体的业务场景,只要是涉及到货,验收,上架的业务都需要走该入库流程。
其他类型入库单包括:销售退货,调拨入库,耗材入库等(收货库位不同),具体的退货及调拨等入库功能,可以依次类推,这里不做具体展开。
差异单需要进行差异处理并记录处理原因及结果。
2.3.1 差异单生成
在验收完成的时候,对比ASN单,若发生不合格品的验收,则生成不合格品的差异单;若发生数量差异则生成验收数量差异单,同时保持ASN单中收货和验收数量为验收合格的数量。
上架完成时,对比上架数量和验收数量,生成上架数量差异单。
2.3.2 差异单处理
差异单按照处理方式可以分为添加拒收单,重新收货,重新上架,人工标记已处理;按照差异产生的类型,对于不合格品需要添加拒收单,对于验收数量差异需要添加拒收单或重新收货或人工标记为已处理,对于上架数量不一致,则需要重新上架或人工标记已处理。
2.3.3 拒收单生成
拒收单主要作用在于,对质量不合格及数量差异且供应商不补货的情况下,打印拒收单留作日后对账依据,且将不合格品退回供应商。
2.3.4 差异原因追溯
系统需要有来货单(ASN单)完整的操作记录以便追溯原因(包含各环节处理人,处理时间,数量及日志明细)。
出库大体分为几大模块:波次策略设定>>生成波次单>>波次单分配库位>>生成作业单>>拣货(RF)>>二次分拣(RF)>>打包复核。
可能存在不同波次类型(如单品和多品波次),不同拣货流程(先开票后拣货/直接拣货;波次拣货/单独拣货),不同业务场景(B2B,B2C等),不同拣货策略(摘果和播种)等,需要根据不同行业,不同公司背景来进行灵活的设计。
WMS波次管理将具有相同共性的订单集中在一起进行拣货作业,为集约化拣货提供了高效的作业工具,大幅度进步了拣货效率,减少拣货的行走途径。
1)波次范围
根据实际的业务场景可以按照货主,单品/多品,是否跨区,物流类型,订单类型,订单来源,时间,金额,收货人,货品等设定波次策略包含的订单范围。
2)波次限制
需要设定波次单/波次作业单的上限/下限值,对于拣货人员来说,单次拣货的负荷是一定的,需要设定波次作业包含的订单或商品的上限值,如果波次包含的订单或商品范围超出这个限制,则需要分解成多个作业单。
3)波次规则
需要设定库位分配规则,不同库位的同一个商品需要按照什么规则出,包括先进先出,先进后出,清空库位,最小搬运次数等。
另外同一个波次被拆成多个作业单时需要按照什么规则拆成作业单(比如拣货库位相隔比较近的应该需要放在一起,这样可以最大化作业效率)。
4)单品波次
对于笔者所处于的医药行业中,由于大多数订单只包含一个商品,所以这类型的订单可以集合在一起进行拣货且不需要进行二次分拣,拣货完毕之后直接可以进行打包复核(一个商品对应一个或多个订单)。
5)跨区拣货
若一个SKU在所属库区不存在货品,但是在其他库区存在货品,则可以进行跨区拣货,由不同区域的作业人员接力拣货;根据跨区作业的性质,若是同一货主下的不同区域则需要自动生成移位单/调拨单/补货单,若是不同货主间的货区则需要生成采购单。
6)波次策略执行顺序
由于不同的波次策略覆盖的订单可能存在交集,且对于不同的波次策略可以有不同的处理方式。因此需要重点设定好不同波次策略执行的顺序,对于越特殊的场景相关波次需要越早执行,对于越紧急的某类订单相关波次也需要越早执行。
波次策略需要针对业务场景进行设计,常见业务场景包括:
需要打发票/收据的订单需要先打单再拣货,大多数订单正常不需要发票和收据随货同行,因此对于有开发票和收据要求的订单需要单独生成波次,由专人处理;
由于运输方式不同,不同的订单需要分开生成波次处理,如航空类型的订单对于揽件时间有限制,对于自有物流的订单和第三方物流需要分开处理;
某些下单渠道或某类特殊订单有时效性限制,需要优先发货;相关类型的订单单独进行波次处理;
拣货单累计,可能存在较多订单累计,因此需要根据时间对订单进行筛选,以达到先入先出需求;
其他普通订单,无特殊要求的订单最后批量执行波次;
拣货尾单或需要紧急处理的个别订单需要走非波次拣货的路径处理。
同一个波次单划分为一个或多个波次作业单,基于作业单进行作业;波次单分配好库位之后,生成波次作业单即可开始拣货。
波次单可能因为库存不足而无法完全分配,该种情况下可以将对应的订单从波次单中剔除再生成作业单,或者生成作业单的时候自动将商品从波次单中剔除。
值得注意的是,波次单并不能完全覆盖所有拣货作业场景。部分特殊场景中,存在需要单独针对某些订单进行特殊处理,针对个别加急的订单优先发货,数量不多的尾单等场景,需要针对订单进行处理,这时需要选择对应的拣货单手动生成作业单。
拣货存在单品或多品,单楼层或多楼层的区别;对于多品的作业单可以批量拣完之后再进行二次分拣,而对于单品的作业单则不需要二次分拣。另外对于不同楼层的作业单,需要涉及跨区接力拣货的问题;在拣货方式方面也存在两种拣货策略分别是摘果和播种。
1)摘果法和播种法
摘果法是指让拣货搬运员巡回于储存场所,按某客户的订单挑选出每一种商品,巡回完毕也完成了一次配货作业,将配齐的商品放置到发货场所指定的货位。然后,再进行下一个要货单位的配货。
而播种法是指将每批订单上的同类商品各自累加起来,从储存仓位上取出,集中搬运到理货场所,然后将每一客户所需的商品数量取出,分放到不同客户的暂存货位处,直到配货完毕。
播种和摘果之间的区别在于一个把订单的商品集中之后再次按订单进行分配,一个是按照订单直接进行拣货;摘果式拣货在订单量比较大且sku比较多的时候,容易因为单个订单拣货时间太长而浪费时间;为了提升效率,可以将多个订单集中一起拣货,拣货时将商品分别放入不同订单对应的拣货筐中,也就是边拣边分;
播种式作业通常在对象固定,商品种类多或是商品的相似性大,商品储位经常移动的情况中使用,将多个订单中的商品汇总拣货之后再次进行分拣,也就是先拣后分。
2)拣货异常
拣货或二次分拣过程可能涉及货品不足或多拣,这时需要制定规则处理少拣或多拣的货品。
① 拣货异常
拣货过程中难免避免不了缺货,人为操作失误等因素,需要进行重点处理并提升异常处理效率;对于拣货过程中需要处理的异常一般为账实不符,即货架位上货品不足,这种情况下一般先拣实际的数量,系统会将对应的订单标记为拣货异常。
② 二次分拣
二次分拣时可能会发现拣货过程中多拣或少拣的情况,也可能出现二次分拣过程中放错框,放错货,多放或少放的问题。
对于二次分拣过程中发现的异常,需要支持针对商品二次分拣中的结果进行检查,通过再次检查该商品在不同的拣货筐的数量来进行错误纠正;若有实物但少拣则可以去货架位补充拣货,若实物缺少可以标记异常并在分拣结束后把拣货框拿出交由异常处理员处理,若多拣,则可以把多出的货品集中存放,等待库存管理员统一处理重新上架。
③ 商品条码
在拣货及二次分拣过程中,涉及需要扫商品条码来识别商品。但是目前来说不一定是所有的商品都存在条码,因此需要通过输入拼音首字母查找对应作业单中的商品。
此外,对于有条件的仓库来说,可以贴内部条码,但这样势必会给收货即库存人员带来更多的工作量。
在拣货及二次分拣之后,需要进行打包复核。打包复核的基础是扫描拣货框,扫描拣货框后自动读取拣货单中订单对应的商品明细,再通过扫描商品条码进行复核。
针对单品波次的作业单,则根据拣货框中的商品找到订单并进行复核;复核成功后交由打包员打包并根据不同的物流分开摆放整理。
复核异常包括以下几种情况:
1)订单取消
由上游ERP系统或OMS系统发送过来的取消订单通知,若此时订单已加入波次则统一在打包复核环节对订单进行拦截,复核员在扫框的时候,系统提示订单取消,无法继续复核,统一交给异常处理员处理。
2)拣货异常
实际拣货数量与订单商品数量不一致,若少货则复核员可手动标记该订单为异常,若多货则继续发货并将多出的货品拿出;最后订单或多出的货品统一交给异常处理员处理。
3)拣货过程操作少拣(分拣环节未纠正),二次分拣操作失误(放错框,放错货,少放或多放货且分拣环节未纠正)
货品转移过程中的丢失或多出;若少货则复核员可手动标记该订单为异常,若多货则继续发货并将多出的货品拿出;最后订单或多出的货品统一交给异常处理员处理。
4)单品波次作业单
单品波次作业单不需要二次分拣,因此需要先根据拣货框和商品自动找到对应的订单进行打包复核,打包复核的处理方式同多品拣货单。
另外特殊情况下,单品波次中某个商品没有拣货,则在复核完成之后,界面需要给出相应的提示,以便复核员针对相关订单标记为异常(一键针对当前作业单中未复核完的订单标记异常)。
发运成功的订单需要释放对应的拣货框(单品作业单则需要该作业单中所有订单都发运成功才释放);另外对于标记为异常的订单需要从作业单和波次单中拆分出来(拆分后的波次单和作业单就可以全部标记为完成)。
上游系统下发取消订单的情况下,则需要结合当前是否已加入波次或发运来做出应对措施。
若当前拣货单尚未加入波次单,则直接取消订单并同步返回取消成功的信息;
若当前拣货单已加入波次单但尚未完成复核(或发运)的情况下则直接取消订单且同步返回取消成功,并将该订单对应的波次明细标记为异常(异常类型为业务系统下发取消),同步返回订单取消成功的信息;
若当前拣货单已复核(或发运)的情况下,则同步返回取消订单失败的消息;这时该订单需通过人工处理尝试召回快递。
出库过程中产生的异常单在以上拣货,分拣,复核及系统下发取消的情况下产生。
异常单相关功能围绕以下两点进行设计:
异常单需要记录详细异常情况,并能分析出根本原因或考核作业人员绩效,因此需要知道到底是哪个商品缺货了,哪个环节或某个作业人员操作失误比较频繁;因此针对异常单明细中需要包括分配数,拣货数,打包数,发货数,拣货作业人员,打包作业人员等信息,并以报表的形式归类展示信息。
对于短拣异常的订单需要以报表的形式汇总展示或直接生成盘点计划,以便对于实物与账面不符的库存进行及时矫正;需要针对出现异常的订单及时处理,以保证发货的时效性,异常处理人员针对异常单能执行重新发货,退拣,取消订单等操作。
异常情况
1)商品多出
二次分拣及打包复核过程中发现的多出的商品,统一集中存放并统一处理,若货品无损坏则直接由库存管理员直接上架即可(系统库存扣拣并没有体现这部分差异,所以无需在系统上操作)。
2)短拣异常/人工标记异常
短拣异常或人工标记异常的结果可能分为两种情况,即有货可以继续发,无货时进行退拣并通知业务系统(业务系统操作取消或等待有货时继续发货);因此针对短拣异常的单,可以进行重新发货或退拣的操作。
处理逻辑
1)重新发货操作
拣货单释放回订单池,但由于这时候可能存在已部分拣货。所以需要特殊处理,需要单独生成作业单(自动针对该拣货单生成非波次的作业单,交由作业人员单独拣货),拣货人员对比实际已拣的数量和拣货单要求数量,去相关的库位上进行补拣,补拣结束之后单独发运(注意中间的库存加减环节的需要按照最新的拣货及复核情况进行更新)。
2)退拣操作
拣货单释放回订单池,清空所有已拣货及打包复核数据;系统自动针对备货库位和原库位生成移位单(原库位被占用则需要手动指定移入库位)。
3)缺量发货
由于WMS系统不关心业务处理问题,因此对于B2B中比较常见的缺量发货问题,建议不在WMS系统处理。而是将异常单情况同步至业务系统,在业务系统上可以进行取消订单再重新下单或修改订单的操作(这里不具体展开)。
4)系统下发取消异常
由于业务系统下发取消订单的指令,所以执行退拣操作即可。
异常单其他相关逻辑
异常处理为重新发货或退拣的时候,由于需要将订单重新释放回订单池,所以需要将标记为异常的订单需要从对应的波次单和作业单中剔除以保证拣货结果的准确性。
拣货框释放:异常处理为重新发货的时候,由于需要针对拣货框中的货品继续拣货,因此需要将异常订单从作业单中剔除,同时将拣货框与作业单解绑;自动生成的新作业单也需要重新绑定拣货框(若业务场景中不存在单品波次,可以考虑继承原拣货框)。
对于短拣和人工标记异常导致的退拣,如果对应的拣货单如果频繁的被加入波次,则会造成后续波次无法完全分配库位或订单持续短拣。因此标记为异常后订单重新释放回订单池后,不能被加入波次(拣货单列表中给出标记以便于识别);可以在货品到货时,由人工处理或者是系统自动定时检查该类型的订单库存是否满足,满足则自动生成新的作业单(走非波次拣货流程)。