同一个SKU、同一个仓位,货架上可能同时躺着两批完全不同"体质"的库存:一批还有90天保质期,一批只剩30天。如果拣货系统按入库时间的先后顺序自动出库,很可能先出的是先到货但保质期更长的那一批,临期的那一批反而压在仓库里继续等,等到系统终于把它拣出来的时候,可能只剩十几天甚至个位数天数,一旦客户签收后转手放进自己的门店库存或分销渠道,到货即临期,退货和投诉几乎是必然的。
这就是FIFO(First-In-First-Out,先进先出)和FEFO(First-Expired-First-Out,先到期先出)两种发货逻辑的根本区别。FIFO看的是入库时间,逻辑简单,在服装、家电、图书这类不涉及保质期的品类里完全够用——先来的先卖,公平合理,也方便做先进先出的成本核算。但食品不是这样,食品的库龄和它剩余的可销售寿命并不是同一件事。一批原料如果生产日期早、但储存条件好、保质期设定长,即便入库更早,剩余保质期可能反而比后入库的另一批还长;反过来,一批临近入库时才因为供应商延误交货的货,也可能因为生产日期本身就晚不了几天,保质期反而所剩无几。只按入库时间排序,等于把"仓龄"和"寿命"混为一谈。
为什么FEFO也不能简单粗暴地"谁临期谁先发"
FEFO的基本原则是保质期剩余天数越少的批次越优先出库,这个方向是对的,但如果系统只做这一层判断,会制造出新的问题:把临期批次不分青红皂白地派发给周转周期长的客户。举例来说,某款常温调味品同一SKU下有两个批次,批次A剩余保质期30天,批次B剩余保质期90天。如果一个客户是本地即时配送订单,通常一两天就能到货并很快被终端消费,那么把批次A分给这个订单完全合理,30天足够走完从仓库到消费者手中的全过程。但如果另一个订单是发往跨区域经销商,物流在途加上经销商自身入库到二次分拨通常需要15到20天,再加上经销商门店自身还有一段上架销售周期,这种情况下如果也按"最临期优先"机械分配批次A,货送到经销商仓库时可能只剩十天出头,经销商大概率会以"到货保质期不足"为由拒收或要求退换,问题最后又绕回亚博电商供应链这一端。
合理的做法是把"剩余保质期"和"该订单预计在途时长、下游周转周期"放在一起做匹配判断,而不是单一维度的临期优先。系统需要知道每一类发货渠道大致的在途和周转时长基准,才能把批次B这种保质期更长的库存留给周转慢的渠道,把批次A这种临期库存匹配给能快速消化的渠道,两头都不浪费,也不会制造到货即临期的纠纷。
储存条件达标与否,同样要参与排序,而不是只看天数
剩余保质期天数是一个静态标签,标签上写着"保质期12个月,生产日期2026年3月",本身不会告诉系统这批货有没有在运输和仓储过程中被认真对待。同一批次如果在某段运输中温度记录出现过超标,即便标签上写的剩余天数还很充裕,实际能安全销售的时间可能已经打了折扣。举例来说,某批需要冷藏保存的即食豆制品,标签剩余保质期还有45天,但入库质检记录显示这批货在运输环节有过约40分钟的温度超出设定上限,这种情况下,系统即便按FEFO规则排序也不应该把这批货当作"剩45天、可以正常派发给周转较慢渠道"的普通批次对待,而应该标记为存在储存风险,优先安排给能最快消化、且有能力在收货后立刻复检的渠道,甚至直接转入二次质检流程,而不是简单混在正常批次里按天数排队发货。也就是说,出库排序至少要同时参考两个字段:剩余保质期天数、以及这批货储存条件是否全程达标,两者任何一个亮红灯,都不能只靠另一个字段"合格"就放行发货。
批次级库存和SKU级库存是两回事
很多电商系统的库存字段停留在SKU这一层:某款产品还剩多少件,直接决定能不能下单、能不能承诺发货。这种粒度对非食品类目没问题,但对食品来说,同一个SKU编号下可能同时存在生产日期、保质期剩余天数、入库仓储条件都不一样的多个批次,如果系统只在SKU层面汇总一个总库存数,看到的只是"还有500件可卖",看不到这500件里有多少属于30天内到期、多少属于60天以上,也无法在拣货环节区分应该先动哪一批。批次级库存管理要求每个批次单独挂一个批次号,记录对应的生产日期、剩余保质期、入库时的储存条件是否达标(比如冷藏品在入库检验时是否出现过运输温度超标记录),出库规则以批次为最小单位执行,而不是以SKU为最小单位。这也意味着同一笔订单里,系统给出的不只是"发货"这个动作,还要精确记录这一单具体消耗了哪个批次、剩余多少件,方便后续万一出现召回或客户投诉时能迅速定位到具体批次范围,而不是把整个SKU下所有库存都当成嫌疑对象去排查。