1. 程式人生 > >新零售多平臺庫存共享模式下,中央庫存系統的設計思路

新零售多平臺庫存共享模式下,中央庫存系統的設計思路

「 以下故事情節及人物均為作者杜撰,若有雷同,純屬巧合:

小Q:某醫藥網際網路公司後臺產品經理,著手規劃重構公司的供應鏈及電商後臺相關係統」

 

一、中央庫存概述

今天開始,小Q開始梳理中央庫存系統需求,開始設計之前,必須先了解一下公司現狀:

(1)多個銷售平臺和渠道同時銷售,庫存共享。

(2)多個倉庫和門店同時為銷售平臺提供貨源;門店有自營方式,還有合作代發貨方式。

(3)倉庫只做大批量進出,只支援配送,不支援自提業務;有些門店只做自提,不做配送;有些門店自提和配送同時支援。

(4)有些地區的門店配送若在閃送範圍內,可以支援閃送(例如用美團、餓了麼、京東到家配送),不支援閃送的,走常規物流配送。

(5)門店商品要同時支援線上銷售和線下售賣,庫存共享。

(6)某些商品因涉及商業串貨,只允許在部分地區銷售。

這麼多的業務場景,用傳統單一的簡單ERP庫存處理方式很明顯無法滿足需求,所以註定了中央庫存不是一個簡單的系統。小Q給出的解決思路是將所有門店和倉庫的庫存均集中到中央庫存中,再根據比例為各銷售平臺分配庫存,將銷售庫存同步至銷售平臺。

中央庫存設計思路

(在整個電商體系裡,庫存分為倉庫庫存、中央庫存和銷售平臺庫存三層,感興趣的朋友可以去木筆公眾號裡查閱~)

為了讓開發能更好的理解需求,小Q先對中央庫存的定位和意義進行了整理:

中央庫存,是將各地的倉庫、門店庫存進行集中監控和管理,集中排程的庫存系統。庫存是供應鏈之魂,在新零售模式下,倉庫和門店遍佈全國甚至全球,如果庫存管理的很分散、不準確,就沒法給企業賦能,無法給客戶帶來極致購物體驗。試想一下,客戶付款下單以後,不能按時履約,或者超賣、缺貨,在當今以客戶體驗為中心的網際網路時代,對企業形象是致命的。

傳統模式下,各地庫房分散管理,互不透明,總部無法集中把控和排程,導致庫存分佈不平均,庫存成本積壓嚴重。通過中央庫存的建設,可以有效規避這些問題:

(1)各地庫存實時同步,總部統一監控統一排程,防止各地庫房/門店各自為陣;

(2)總部可以根據全國總庫存按需採購,而不再只考慮單倉庫存,如此可以有效防止有些庫房庫存過高滯銷而另一些庫房庫存不足缺貨;

(3)中央庫存的搭建可以有效彙總全國庫存給銷售平臺,供使用者下單,智慧分倉、就近發貨;

(4)當某些商品需要考慮串貨、某些倉庫/門店需要單獨或者同時支援自提和配送業務,且需要線上線下同步售賣的場景模式下,單倉管理和傳統ERP庫存模型均不能有效支撐業務發展,必須有個中央大腦對庫存進行靈活排程,此大腦就是中央庫存;

(5)集中的庫存管理對於財務核算、審計、資料彙總分析、採銷日常作業均能提供更加透明和有利的依據。

經過梳理,中央庫存核心系統功能如下:

新零售多平臺庫存共享模式下,中央庫存系統的設計思路

中央庫存系統功能

 

二、中央庫存實物庫存和銷售庫存

既然是承上啟下,中央庫存模型分為與庫房實物相關的實物庫存層,以及和銷售平臺庫存相關的銷售庫存層。

 

1. 實物庫存層

實物庫存按照倉庫/門店彙總所有庫存狀態的庫存數量,但不同於倉庫庫存的是中央庫存實物庫存層無需管理批號和貨位,只需要管理每個庫存狀態下的實物庫存總數即可。

(一般系統設計的定位是中央庫存管實物總庫存,庫房管理實際批號。若需在中央庫存中看到每個庫房/門店的批號,可在實物庫存層另加一張批號庫存表用以記錄庫房進銷存流水變化,但不作為實物庫存計算和分倉的主要邏輯處理。)

實物庫存層庫存維度:SKU、倉庫/門店、庫存狀態、實物庫存、出庫預佔庫存、鎖定庫存、在途庫存、庫存成本價、是否鎖定。

  • 倉庫/門店:倉庫和門店同屬於管理庫房的載體,處理邏輯相同;
  • 庫存狀態:合格/不合格/停售/待驗(藥品裡有停售業務,故將停售設計為一種庫存狀態);
  • 實物庫存:倉庫/門店存放的實際庫存按照SKU、庫房、庫存狀態彙總的數量;
  • 出庫預佔庫存:分倉以後,發貨之前對庫存預佔,防止超賣。分為銷售出庫預佔、退供預佔等;
  • 鎖定庫存:商品尚在庫房,需臨時鎖定的庫存。如:盤點臨時鎖定/臨期鎖定/盤點差異/其它原因;
  • 在途庫存:即將入庫的庫存,含調撥未入庫庫存、採購未到貨庫存;待實物上架以後,清除在途庫存;
  • 庫存成本價:根據採購、調撥入庫、庫存狀態變化等業務明細計算的成本價,以倉庫+庫存狀態為單位核算;
  • 是否鎖定:某些業務場景下,需要對整條庫存明細進行凍結,不允許線上售賣。已鎖定的庫存明細,不作為可用庫存。例如:需要將某門店的A商品臨時凍結線上銷售,處理方式便是在中央庫存中將此條明細的“是否鎖定”變更為“是”。
  • 可用庫存:可用庫存根據實物庫存、預佔庫存和鎖定庫存計算而來,是分倉和銷售庫存計算的依據。可用庫存=實物庫存-預佔庫存-鎖定庫存(注:若庫存明細被鎖定,則此條明細不用作可用庫存計算)

為方便監控和排查問題,以上庫存維度中,出庫預佔庫存、鎖定庫存、在途庫存均需要記錄明細,如:某商品A出庫預佔庫存為20,中央庫存需另有一張出庫預佔庫存明細表記錄此20個庫存被哪些業務明細單據所預佔:

  • 出庫預佔庫存明細:SKU、倉庫/門店、庫存狀態、預佔型別(銷售出庫預佔、退供預佔等)、業務單號、預佔數量;
  • 鎖定庫存明細:SKU、倉庫/門店、庫存狀態、鎖定型別(盤點臨時鎖定/臨期鎖定/盤點差異/其它原因 等)、業務單號、鎖定數量;
  • 在途庫存明細:SKU、倉庫/門店、庫存狀態、在途型別(採購入庫/調撥入庫 等)、業務單號、鎖定數量。

 

2. 銷售庫存層

銷售庫存層是將實物庫存的合格品庫存數量,根據倉庫/門店的地理屬性、配送屬性,以及多個銷售平臺的庫存共享比例進行綜合計算後,計算出的按銷售店鋪維度的可銷售實物庫存數量,該層的庫存數量與銷售平臺的實物庫存保持同步。

銷售庫存層庫存維度:SKU、銷售店鋪、可配送區域、可配送庫存、自提門店、可自提庫存。

  • 銷售店鋪:與多渠道多平臺的售賣店鋪保持一致,每個店鋪按照比例分配一定的庫存;
  • 可配送區域:由於全國各倉和門店的覆蓋的配送區域不一定相同,故每個SKU支援的配送區域不同;例如A門店配送廣東省,B門店配送廣西省;
  • 可配送庫存:分別彙總每個SKU在不同的區域可配送的庫存數量,根據實物可用總庫存按店鋪庫存佔比分配。例如:SKU A可配送廣東省50個;可配送廣西省80個;
  • 自提門店:展示SKU可進行自提的門店;
  • 可自提庫存:在允許自提的門店中,該SKU的庫存。根據實物總庫存按店鋪庫存佔比分配。例如:SKU A 廣州天河1店可自提庫存100個;廣州天河2店可自提庫存150個;

若某門店既支援配送又支援自提,則配送庫存和自提庫存是重合的,例如廣州某門店中SKU A有50個,則說明該門店中A商品既支援配送50個,也支援自提50個,兩種業務並存,將50個庫存用完為止,這也是庫存共享的概念。

 

三、中央庫存實物庫存與銷售庫存計算

1. 實物庫存同步邏輯

中央庫存中的實物庫存來源於各庫房和門店的庫存,考慮到有些自營門店(自主研發的系統),有些合作門店(使用他們自己的ERP),故小Q將實物庫存同步設計為兩種方式:

  • 方式1:流水加減模式。適用於自營的庫房和門店,所有的庫存變化均通過業務流水回傳中央庫存,按照入庫加庫存,出庫減庫存的方式變更實物庫存。庫存的加減對應著庫存成本的變化。
  • 方式2: 設定庫存模式。適用於和外部合作的門店,無法通過流水變更庫存時,直接通過商家端或系統對接的方式同步庫存,更新實物庫存數量。

新零售多平臺庫存共享模式下,中央庫存系統的設計思路

實物庫存同步

使用流水加減模式進行實物庫存同步時,特別要注意控制多條業務流水對同一條庫存記錄的處理,避免出現併發而導致加減出錯的情況。因此,系統設計的時候,需要有一張很清晰的實物庫存流水變更記錄表,能夠按順序追查到每一條明細的變化情況:

實物庫存流水變更記錄表:作業時間、SKU、倉庫/門店、庫存狀態、業務型別、業務單號、變化數量(加庫存為正數,減庫存為負數)、原庫存、結轉庫存。

 

2. 銷售庫存計算邏輯

新零售模式下,每個倉庫和門店都有自己的覆蓋配送範圍,且每個門店的品項數較少,並且履約能力有限,所以門店一般重點發力自提業務,同事自提的覆蓋半徑也是有限的,多維屬性結合到一起,將實物庫存從系統層面分開為很多堆,構成了不同維度的銷售庫存。

新零售多平臺庫存共享模式下,中央庫存系統的設計思路

銷售庫存計算因素

每個庫房/門店可以自由配置支援配送,或者支援自提(可都支援),配送的範圍和自提的範圍是不同的,故從配送方式來看,配送庫存和自提庫存是需要分開管理的。例如:某門店有一款商品可以支援配送全國,但僅支援門店周圍5公里自提,則全國的使用者均能下配送訂單,僅門店周圍5公里的使用者能下自提訂單。

從店鋪庫存分佈上,有兩種處理思路:共享和獨佔。

  • 共享庫存:各個銷售平臺店鋪共享庫存,按照比例進行分配。任一店鋪有訂單產生,導致實物總可用庫存變少,均會導致其它店鋪的庫存同步減少;
  • 獨佔庫存: 某一個或者多個銷售平臺店鋪按照比例分配的庫存屬於獨佔模式,即庫存分配以後,僅屬於此店鋪使用,其它店鋪產生訂單不能佔用獨佔店鋪的庫存。

(獨佔庫存模式下銷售庫存計算方式更為複雜,不在此文中深入展開,感興趣的朋友可以按照共享庫存的思路進行獨佔庫存設計的推演)

計算銷售庫存之前,先對銷售店鋪進行庫存設定,以共享庫存為例,並非每個平臺都支援自提(例如天貓、京東均不支援),所以配送庫存和自提庫存分開設定比較合理。

為了防止超賣,配送庫存和自提庫存原則上不超過100%比較合適,但根據實際業務需要,可以靈活調整,例如採購能力足夠,則各銷售店鋪可以互搶庫存,保證銷量最大化,那麼每個店鋪的庫存均可以設定為100%,甚至大於100%。

新零售多平臺庫存共享模式下,中央庫存系統的設計思路

根據配置,將實物庫存重組後再根據配送庫存和自提庫存進行分堆計算,邏輯為:

①支援相同配送區域的多個倉庫門店的庫存彙總後,根據配送庫存分配比例計算可得到店鋪可配送庫存:

可配送庫存=∑各倉庫/門店實物可用庫存 * 店鋪配送庫存分配比例,向下取整

②因為自提訂單不適宜分店鋪(如果讓某一個使用者下個訂單,需要從多個門店提貨,這種體驗太差),故自提庫存以門店為單位,每個支援自提的門店庫存按照自提庫存比例計算可得到店鋪的可自提庫存:

可自提庫存=每個可自提門店的實物可用庫存 * 店鋪自提庫存分配比例,向下取整

舉例說明:

門店1、門店2、門店3三個門店均有 SKU A商品,配送範圍一致,均無預佔,共設兩個銷售店鋪(店鋪1、店鋪2),配置如下:

根據銷售庫存計算公式分別算得店鋪1和店鋪2的配送庫存和自提庫存如下:

新零售多平臺庫存共享模式下,中央庫存系統的設計思路

 

3. 銷售庫存同步

中央庫存中將銷售庫存計算完以後,需向銷售平臺同步,只有同步到銷售平臺的庫存,才是直面使用者的。小Q結合公司現狀,針對自營平臺和三方平臺,分為兩種處理方式;

①自營電商銷售平臺,銷售平臺庫存沒有必要設計的過於複雜,僅管理虛擬庫存、活動庫存等,實物庫存相關邏輯可直接從中央庫存讀取,以服務的形式進行系統互動。

例如 I.商品列表和詳情頁判斷商品是否有庫存時,若開啟了虛擬庫存則讀取虛擬庫存,若未開啟則直接讀取中央庫存中的銷售庫存(根據庫存比例分配計算的配送庫存與自提庫存,二者取其大、或者求和);

II.下訂單提交時若選物流配送,可直接根據使用者收貨地址讀取中央庫存中當前地址區域下可配送的庫存數量是否滿足訂單;若選擇了自提門店,可直接讀取中央庫存中當前門店下的可自提庫存是否滿足訂單(前提條件是使用者地址和門店的自提範圍一致)。

②其它三方平臺(例:京東、天貓),銷售平臺邏輯不為自己所控,也無法支援客戶自提,可只同步配送庫存。若平臺支援分割槽域庫存,可根據平臺規則將中央庫存中的銷售庫存按區域分組同步至銷售平臺,若不支援分割槽庫存,可將可配送庫存之和同步至平臺。(不過有超賣的風險)

共享庫存模式下,無論針對自營平臺還是針對三方平臺,為了保證庫存的儘量準確性,在訂單生成以後,均需要儘快到中央庫存系統中分倉並進行庫存預佔,然後根據可用庫存重算銷售庫存並同步。

向銷售平臺同步庫存,有4種方式可選,可在系統中針對每個銷售平臺進行配置,根據實際情況進行調整:

  1. 每當庫存變動時同步:任何一個銷售平臺有訂單下發至中央庫存導致庫存預佔,或者庫房/門店的可用庫存發生變化時,重新根據實物可用庫存計算銷售庫存,並同步至銷售平臺;
  2. 定期同步:設定時間間隔,定期計算銷售庫存並同步,比如每10分鐘一次;
  3. 低於閥值下限時同步:當某一商品在此銷售平臺的庫存比例低於此平臺設定的閥值時,觸發銷售平臺庫存計算並同步至銷售平臺;
  4. 暫停同步:以最後一次同步的數量為準,再次開啟同步之前不再同步庫存,例如雙11前夕暫停對天貓店鋪同步。

以上A、B、C、D 4種方式各有優劣,同步頻次越高,庫存自然越準確,超賣風險降低,但重新整理頻率過快對系統性能損耗較大;同步頻次較低,系統壓力會小,但庫存同步會不及時,超賣風險增加。

 

四、分倉及庫存預佔服務

實物庫存層除做實物的管理外,還為訂單系統提供分倉服務,為每張訂單分配最優的發貨庫房,庫房分配成功後,為了防止此庫存再被其它訂單所佔用,故需要對庫存進行預佔,預佔庫存記錄到實物庫存明細行。

為什麼一定要做庫存預佔,而不是直接扣減庫存?因為中央庫存是實時庫存的監控和體現,如果沒有預佔,無法得知當前訂單對應的商品當前在庫房內,還是已經發貨出庫房了,也就不能很好的體現商品的實時動向。

新零售多平臺庫存共享模式下,中央庫存系統的設計思路

中央庫存分倉及預佔邏輯

本著使用者體驗為先的原則,小Q給出的分倉規則為:

Ⅰ.已經指定了倉庫/門店的訂單,直接進行庫存預佔,否則轉Ⅱ;

Ⅱ.未指定門店的訂單,需要分倉後再預佔庫存,分倉優先順序如下:

①最少包裹原則(能單倉發貨的,儘量不拆包裹;若不能單倉發貨,找拆包裹最少的倉庫組合);

②距離最近原則(發貨庫房離收貨地址距離最近,若多個庫房拆單發貨,選擇到達使用者的總時長;

③成本最優原則(先從採購成本最低的庫房發貨,再考慮從物流費用最低的庫房發貨)。

 

五、庫存成本價計算

中央庫存的另一個功能,是管理全公司自營庫房和門店的存貨成本,故在進行實物庫存流水加減的時候,需要同步進行庫存成本計算。成本價的計算方法有很多,例如:先進先出法、 後進先出法、加權平均法、移動加權平均法、個別計價法、計劃成本法、毛利率法、零售價法等。

重點說明一下常用的先進先出法、加權平均法、移動加權平均法:

先進先出法:商品最新發出(領用)以該物料(或該類物料)各批次入庫的時間先後決定其存貨發出計價基礎,越先入庫的越先發出。 採用先進先出法時,期末結存存貨成本接近現行的市場價值;

加權平均法:稱全月一次加權平均法,是指以當月全部進貨數量加上月初存貨數量作為權數,去除當月全部進貨成本加上月初存貨成本,計算出存貨的加權平均單位成本,以此為基礎計算當月發出存貨的成本和期末存貨的成本的一種方法。

加權單價=(月初結存貨成本+本月購入存貨成本)/(月初結存存貨數量+本月購入存貨數量)

移動加權平均法:指以每次進貨的成本加上原有庫存存貨的成本,除以每次進貨數量與原有庫存存貨的數量之和,據以計算加權平均單位成本,以此為基礎計算當月發出存貨的成本和期末存貨的成本。

移動加權平均單價= (本次收入前結存商品金額+本次收入商品金額)/(本次收入前結存商品數量+本次收入商品數量 )

(以上摘自百度文庫)

舉例: 某公司 經營某SKU A,採銷過程如下:

10日,購入此SKU 100個,單價5元;

13日,購入此SKU 200個,單價6元;

18日,發出此SKU 100個 ;

20日,購入此SKU 700個,單價4元 ;

28日,發出此SKU 500個 ,還剩400個。

提問:分別用先進先出法、加權平均法、移動平均法計算髮出存貨的成本及期末庫存存貨的成本。

(1) 先進先出法:

發出存貨的成本=100*5+(200*6+300*4)=2900元;

說明:28日發出的500個,其中200個的單價為6元,300個的單價為4元;單價為4元的還剩400個,故期末成本取4元;

期末庫存成本=400*4=1600元。

(2) 加權平均法:

加權平均單價=(100*5+200*6+700*4)/(100+200+700)=4.5元;

發出存貨的成本:(100+500)*4.5=2700元;

期末庫存成本:400*4.5=1800元。

(3) 移動加權平均法:

13日購入後的單位庫存成本: (100*5+200*6)/300=5.67元;

18日發出存貨成本:5.67*100=567元;

20日購入後的單位庫存成本: (200*5.67+700*4)/ (200+700)= 4.37元;

28日發出存貨成本:4.37*500=2185元;

期末庫存成本: 400*4.37=1748元;

以上三種計算方式中,移動加權平均法可以實時獲取最新庫存成本,比較符合公司現狀,故小Q和財務同事商討下來以此方式作為中央庫存的成本計算策略,按照不同倉庫和庫存狀態成本獨立計算的原則,採購入庫、調撥入庫、退貨入庫、庫存狀態變化會對庫存成本產生影響,其它業務不會導致庫存成本變化。

①採購/調撥入庫業務成本計算:

新庫存成本=(本次入庫數量 * 本次入庫單價 + 當前實物庫存數量 * 庫存成本) / (本次入庫數量+當前實物庫存數量)

② 退貨入庫業務成本計算:

新庫存成本=(本次退貨入庫數量 * 原出庫單出庫時成本單價 + 當前實物庫存數量 * 庫存成本) / (本次入庫數量+當前實物庫存數量)

③庫存狀態變化業務成本計算:

新庫存成本=(原狀態變化數量 * 原狀態成本單價 + 新狀態實物庫存數量 * 新狀態庫存成本) / (狀態變化數量+當前實物庫存數量)

下班回家走在路上,看到一對年輕的父母帶著可愛的兒子在公園玩耍,孩子大約三歲,正值好奇期,對著父母追問十萬個為什麼,柔美的夕陽照在一家人身上,在地上托起三條長長的身影,自然形成一張三口之家的全家福,如漫畫一般,畫面美好的讓小Q不忍離開。

想起前幾月帶父母出來遊玩,發現父母再也不是當年那一對能扛起整個天地的戰神勇士了,原本挺拔的身板因為長期勞累開始變矮,兩鬢青絲早已變的花白,隨著網際網路文化的衝擊,他們在國際文明大都市裡顯得格格不入、謹小慎微,像個好奇的孩子一樣對小Q問東問西。

那一刻,幸福而心酸,這個時代正在飛速淘汰我們的父母一輩啊,不給任何的喘息時機。 自己離家鄉1000多公里,原以為不過區區半天車程,其實早已隔了萬水千山,隔了相思萬里,更隔了歲月鴻溝兩代人。

父母在人生尚有來處,父母去人生只剩歸途,小Q突然意識到子欲養而親不待的無奈,收起回憶,拿出手機,撥向了那一串早已融進血液裡的電話號碼……