跨境电商海外仓(10):WMS的库龄与仓租功能设计

14 评论 8487 浏览 33 收藏 14 分钟

编辑导语:WMS指仓库管理系统,在WMS中,库龄是指货物在仓库中存放的时长,库龄越大意味着存放的时间越长,也意味着产品不好卖,可能成为了滞销品。库龄和仓租是WMS中很核心也很关键的一个模块,但却少有文章涉及这一方面。本篇文章作者将WMS中的库龄和仓租功能设计详细拆解开来,为我们分享这一WMS中关键模块的干货,一起来看。

在供应链行业,大家都很看重库存的周转率,库存周转率高就意味着产品卖的快,在短时间内产生盈利的次数就多;而周转率越低,则表示产品卖出的慢,库存可能一直积压在手里,可周转资金的资金也就少了。

在WMS中,库龄是指货物在仓库中存放的时长,库龄越大意味着存放的时间越长,也意味着产品不好卖,可能成为了滞销品。同时对于一些第三方仓库来说,由于仓库库容有限,所以为了避免太多客户的货物成为死库存(库龄特别长),会在仓租方面设定阶梯报价

例如在海外仓领域,很多第三方海外仓都会有30天免仓租的福利。当货物在仓库的库龄不超过30天的时候,就可以免仓租。而超过了30天之后,价格就会有一个梯度递增,即在某个区间内还算便宜,到了另一个梯度就特别贵。

海外仓通过这种「惩罚」的方式,来鼓励客户尽快提升周转率,尽快处理掉库龄过长的产品。

所以,对于海外仓WMS来说,精确地计算库内产品的库龄是一个很关键的功能,因为仓租的梯度报价就需要依赖WMS的库龄数据。

一、库龄的计算

在仓库中,货物的数量是动态变化的。可能每天都会有货品入库上架,也会有货品下架出库,库存数据一直在动态变化。

库龄是指货物在仓库中待的时长,一般是用天来统计的。那如果货物一直有进有出,系统该如何记录具体的货物到底在仓库待了多少天呢?

这个时候一般会引入一个批次的概念,也可以称为入库批次号或者上架批次号,在这里我们直接简单点叫批次吧。

跨境电商海外仓:WMS的库龄与仓租功能设计

当没有批次的时候,如果发生了出库的行为,系统只能知道剩余的总库存有多少,但是不知道具体的不同时间入库的那一批还剩多少,也就没办法统计具体的库龄了。

跨境电商海外仓:WMS的库龄与仓租功能设计

在引入了批次之后,系统遵循先进先出(FIFO)的原则来计算库龄,就可以精确地知道具体某个批次出库了多少,还剩余多少,这样统计库龄的时候就有依据了。

跨境电商海外仓:WMS的库龄与仓租功能设计

库龄每日流水记录

有了批次之后,每天会对不同批次剩余的SKU数量计算库龄,相当于一次入库上架获得一个批次,但是出库却可以分成多次,每次剩余多少都会被记录,剩余的数量库龄会一直递增,直到全部都出库完成。

当明确了最基础的库龄统计方式之后,接下来我们再来看看关于仓租这一块的内容。

二、仓租的计算

仓租就货物放在仓库中需要支付的租金,类似于我们租房子要付的租金一样。海外仓的仓租计算一般是按货品的体积(CBM)来计算的,也可能有些仓库会按数量或者按重量等,再此为了方便阐述,默认都是用CBM来计算。

假如某客户存放了一个体积为1CBM,数量为1000的货品在仓库,那么他的仓租就会等于体积*数量*库龄*仓租单价,但是由于数量与库龄都是动态变化的,所以一般会按每日计算然后做一个累加,即∑(体积*每日数量*仓租单价)。

以上的仓租计算的初始版本,也是最普通的版本。相当于先计算日租,然后再累积成月租。

但是前面也提到了,海外仓一般会采用仓租梯度计费的方式来作为一种「惩罚」,以推动促进客户尽快处理滞销的产品。而刚刚列出的普通版的仓租计算公式,是不能支持梯度的,也不同支持「30天免租」之类的优惠活动的。

于是我们需要对上述的公式进行一个小小地改动升级,让它变得更强一些。

跨境电商海外仓:WMS的库龄与仓租功能设计

改动过后的计算方式

当需要使用梯度(30天免租也是梯度的一种)的方式来计算仓租的时候,就需要记录下每个批次的当前库龄是多少,是否达到了另一个梯度区间,以此来确定最终的计算单价。

三、库龄的拓展知识

1. 倒推法与日推法

大家在网络上搜索「库龄」或者「库龄计算」的时候,肯定会看到相关的一个回答,如下图所示。

跨境电商海外仓:WMS的库龄与仓租功能设计

包括百度百科里也有相关的阐述。

跨境电商海外仓:WMS的库龄与仓租功能设计

但是我看了好几遍都感觉这个描述有点难懂,因为各种细节没有拆解出来,有些人转述的时候还搞错了名词之类的。所以索性就是自己用图中的数据,再结合Excel,用笨办法来倒推了一下数据,重新拆解了图中的公式,希望大家能更容易上手理解。

跨境电商海外仓:WMS的库龄与仓租功能设计

倒推法计算平均库龄

上图中所说的方式也有人称之为「倒推法」,其实本质上还是先进先出的批次统计。

以当前的时间的库存为总数,然后倒推最近的几次入库的数量,看最后会倒推在哪个批次。

其实从正向来看也是一样的道理,当前剩余了1000个库存,如果系统是严格的先进先出的,那么很早的批次肯定早就出库了,所以现在的1000个库存肯定是最近几次入库的批次剩余的,于是直接采用倒推法就可以算出这些库存的平均库龄是多少。

如果不习惯用倒推法或者理解有些困难,我建议还是用「日推法」来处理,也可以成为「正推法」。也就是每次入库记录一个批次,然后每天24点定时统计一下剩余了多少库存,库龄是多少天,这样汇总起来之后也能算出和倒挤法一样的结果。

跨境电商海外仓:WMS的库龄与仓租功能设计

日推法计算平均库龄

2. 仓租日结累积法

由于一些WMS可能早期设计的时候没有考虑批次管理的内容,所以在库存表中没有记录批次,也没有库龄。

但是仓租还是要计算,所以在此介绍一种「日结累积法」,也可以算出仓租。

优点是简单,清晰易懂;缺点就是不能支持梯度计费,拓展性不强。

跨境电商海外仓:WMS的库龄与仓租功能设计

仓租日结累积法

当需要计算仓租的时候,每个月的月初导出上个月的所有的SKU的日结库存,然后做一个汇总,直接拿总数*计费单价即可算出月度的仓租。

3. 入库当天是否算库龄

对于一些快进快出的仓库,很有可能出现这样的场景:一批货物,上午到仓上架,然后下午就需要下架出库。

那么,如果是当天入,当天又出,应该算库龄吗?

这个问题有两个答案,要么算,要么不算。但是我没有想好应该用哪一种,因为这个取决于业务的需求,但是我猜测大多数业务人员并不会注意到这种细节,所以还是需要产品经理来做定夺。

从统计的难易程度或者开发的成本来说,我个人会倾向于:当天入库和当天出不算库龄。

因为每天晚上的库龄统计是在24点左右统计当时的库存结余,然后从库存结余去匹配对应的批次分别有多少数量。

如果当天入了100个,当天又出了100个,那么统计的时候库存结余是0,就无需计算库龄。如果当天入了100个,当天只出了80个,那么统计的库存结余就是20,也就意味着有20个在仓库待了一天(需计算库龄),其他80个是不算库龄的。

如果是当天入,当天出需要算库龄,那么统计的方法就需要一点点改变。

还是先每天晚上24点左右统计当时的库存结余,但同时还需要去统计当天入库的批次的数量,然后两者做比对。

如果当天入了100个,当天又出了100个,那么统计的时候库存结余是0。但是入库记录是100,也就是当天入了100,这100需要算1天的库龄;如果当天入了100个,当天只出了80个,那么统计的库存结余就是20。但是入库记录是100,也就意味着两者有重复,应该以入库记录为主,取入库记录的值,而不取库存结余的值,所以还是需要算100个为1天的库龄;

当第二天没有入库批次的时候,这个时候再去统计库存结余的时候,就可以直接按库存结余来计算库存了。有值则算1天的库龄,无值则不算库龄,也就是库存出完了。

四、最后

库龄和仓租算是WMS中很核心也很关键的一个模块的了,但是这两天我在找相关资料的时候发现,全网好像都没有人写这一块的内容。即使有写,也是一些搬运和逻辑不通的段落,让我一度怀疑这个东西到底是不是太难了?还是说其实很简单大家都不想写?

既然没人来写,那我就来个抛砖引玉吧。如果我写的内容是正确的,有用的,那么就能帮助很多也需要做这一块功能的朋友;如果我写的内容是错误的,那么也能接受一些大佬的指点,尽快改正我的一些错误认知。

反正怎么算都不会亏。

如果你对我写的这一篇内容有何高见,欢迎与我私聊沟通,期待你的回复。

#专栏作家#

我叫维他命(Vitamin),微信公众号:PM维他命。前PHPer,做过在线教育类产品,也做过3年半的跨境仓储物流方向的产品,目前是一位外贸SaaS领域的供应链产品经理。主要专注于WMS/OMS/TMS/BMS/ERP等领域,分享供应链相关的产品知识。

本文原创发布于人人都是产品经理,未经作者许可,禁止转载

题图来自Unsplash,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 大佬,实际操作如盘盈,商品归属于哪个批次,盘亏扣减哪个批次,都直接会影响库龄的计算,请问你们是怎么设计的呢?

    来自广东 回复
  2. 日推法计算平均库龄计算平均库龄还可以,但是没法计算仓租费(先不论阶梯计价和免租期)。
    因为他只能记录有库存记录的库存快照的仓租 。就像你的「日推法计算平均库龄」图中,列出的计算公式 落掉了BN20211011批次5天的仓租费

    来自浙江 回复
  3. 我们的不是这样算,感觉你这个比我们算的还复杂。很容易乱

    回复
  4. 库龄和仓租是不是应该放到BMS里去计算啊

    来自北京 回复
    1. 计算可以在BMS,但是基础的数据需要进行统计,所以要在OMS或者WMS进行统计

      来自广东 回复
    2. 明白了!感谢分享

      来自北京 回复
  5. 感谢分享,讲得通俗易懂。

    来自广东 回复
  6. 第二张贴图最后的数据应该是剩余240,发现一处错误

    来自浙江 回复
    1. 是的,数据写错了,

      此时BN20210920剩余库存为0,而BN20210921剩余库存为240(图中是260)

      来自广东 回复
    2. 我怎么觉得是140啊。完了,是我理解有问题吗?

      来自上海 回复
    3. 请问这个剩余数量不是入库之后还是计算的嘛?
      BN20210920入库100,剩余数量100。
      BN20210921入库200,剩余数量是100+200.
      BN20210922出库160,根据先入先出就是BN20210920剩余库存为0,BN20210921剩余库存200-60=140啊。就算加上BN20210923入库50,也是190
      为啥是240?求解

      来自上海 回复
    4. 嗯,我打错了字,不好意思哈,应该是剩余140的。

      来自广东 回复
  7. 有一些表格中描述数据错误了

    来自上海 回复
    1. 嗯?哪些呢?

      来自广东 回复