海外倉WMS的盤點功能設計

7 評論 4680 瀏覽 27 收藏 24 分鐘

WMS的盤點是指對倉庫存儲的貨物進行清點和核對的過程,只有對貨物進行清點,當貨物出現異常的時候才會有糾正的機會,下面是筆者整理分享的關于海外倉WMS的盤點功能設計的相關內容,大家一起來看。

倉庫每天都會有貨物的進進出出,在庫內的貨物會時常會需要移動、調整等,久而久之就會出現實物和系統中的數據不吻合的情況,我們稱之為“庫存不準確”或者是“庫存差異”。

如果出現了庫存差異,而且差異量還蠻大,那么就會造成很多損失,例如訂單缺貨,庫存積壓,貨物丟失等,為了讓倉庫中的實際貨物和系統記錄的數據保持一致,倉庫就會對實物進行盤點。

WMS的盤點是指對倉庫存儲的貨物進行清點和核對的過程,盤點的目的是為了確認倉庫里的實際物品數量與系統記錄的數量是否一致。盤點過程中,我們會逐個檢查貨物,并記錄每個貨物的數量。我們可以使用計數器、掃描儀或手動記錄等方式來完成這個過程。一旦完成盤點,我們會將實際的庫存數量與系統中的記錄進行對比,以發現并糾正任何數量不匹配的情況。

一、盤點業務中的一些名詞

最早的時候我接觸盤點的時候或者要做盤點這個功能的時候也是找了挺多資料和信息的,結果發現越看越迷糊,然后越看越覺得糾結,感覺太多名詞,也太多方案了,不確定自己到底要選擇哪個好,生怕做出來的東西少了點什么,所以就會想什么都做上去。

如果你也需要做盤點相關的功能,那么我的建議是:選擇“最合適當前業務的方案”,如果無法判斷當前的業務適合哪一種,那么就會選擇“最簡單、最靈活的方案”。

1. 明盤和暗盤

用戶在盤點過程中如果知道庫位上有什么商品,有多少數量,那么這種方式就叫明盤,也就是系統會展示具體的信息給盤點人員。如果用戶在盤點的時候只知道有什么商品,但是不知道有多少數量,那么這種方式就叫做暗盤或者盲盤。

我理解明盤和暗盤的主要區別還是在于效率和管理上,例如明盤的時候可以看到有多少數量,那么點數的時候有參考性,效率就會比較高,可以快速對著盤點單輸入內容,但是缺點就是可能會有人作弊、偷懶,快速跳過一些貨品。

而暗盤則明顯效率很慢,需要逐個掃描,而且也不知道什么時候是個頭,盤點的結果比較精準,也不容易讓人作弊,但是缺點就是數據整理比較麻煩,效率也不高。

2. 靜態盤點和動態盤點

靜態盤點就是指在倉庫停止作業后發起的盤點,一遍就是倉庫下班后或者不上班的時候進行盤點,此時因為倉庫沒有作業,就不會有入庫、出庫的任務,所以庫存數據就比較準確。

而動態盤點就是指倉庫在正常運轉的時候,也可以進行盤點,這個時候庫存隨時會發生變化,在計算盤點數據的時候就要考慮實際的正常業務對庫存的影響。

一般來說,靜態盤點適合大面積的盤點,例如月末,季度末的盤點,這樣倉庫停工了之后可以專注在盤點任務上;而動態盤點則適合小范圍的庫位或者商品的盤點,因為倉庫不能停工,所以就只能邊作業邊盤點。

也有一種比較偷懶的方式,那就是盤點的時候對待盤點的庫位和商品進行鎖定,而且這種鎖定的優先級是最高的,意味著人為使得“短暫停工”,然后對這些鎖定的庫位和商品進行盤點。這種方式一般用在倉庫快下班的時候或者快上班的時候,趕緊盤點完,然后再正常作業。

3. 循環盤點、動碰盤點、指定盤點

循環盤點:由于倉庫的庫存往往非常多,一次全盤往往需要耗費數天甚至更長時間,于是產生了循環盤點。即基于SKU的ABC分類(基于價值或出入庫頻率劃分),設定不同類別的盤點頻率與周期,系統自動生成盤點任務。譬如A類SKU每星期盤點一次,B類SKU每月盤點一次,C類SKU每季度盤點一次。

動碰盤點:針對一定時期內發生過變動(交易)的庫存進行盤點。不同的倉庫動碰的維度存在差異,有的采用的是基于SKU動碰,也就是某個SKU的庫存發生了變化,那么就需要盤點;有的則是基于庫位動碰,也就是某個庫位發生了庫存的變化,那么就需要盤點。

指定盤點:設定一些查詢條件查詢庫存進行盤點,譬如指定貨主、品類、SKU、庫區、庫位等。

仔細分析一下就會發現,無論是上面的哪一類盤點方式,本質其實就是“過濾出待盤點的對象”,如果從系統設計的角度出發,其實就是篩選條件不一樣。所以如果遵循簡單設計的原則來看,直接用指定盤點的方式是最簡單的,輸入一些查詢條件,然后人工去選擇要盤點的對象(可能是庫位,可能是SKU)。

4. 盤虧、盤盈、盤平

盤虧:意思是就是指盤點之后,實物比系統中的要少,賬面上有100,但是實物只有98,類似于“虧了”,所以叫做盤虧。

盤盈:意思是就是指盤點之后,實物比系統中的要多,賬面上有100,但是實物卻有103,類似于“賺了”,所以叫做盤盈。

盤平:意思是就是指盤點之后,實物和系統中的數據一樣,賬面上有100,實物也是100,類似于“平手”,所以叫做盤平。

一般來說,無論是盤盈了,還是盤虧了,都會稱之為“庫存差異”,而庫存差異了,就需要執行差異的調整。由于實物是具象的,不能憑空出現,也不能憑空消失,所以就只能通過調整系統中記錄的數據來保持一致。

如果盤虧了,那么就讓系統“出庫”一些,扣減一些庫存,以使得系統庫存和實物庫存一致;如果盤盈了,那么就讓系統“入庫”一些,增加一些庫存,以使得系統庫存和實物庫存一致。

盤點的本質是對實物進行清點,然后和賬面數據比對;根據實物清點結果,對賬面數據進行調整,達到賬實相符。

所以新手如果要做這一塊的產品功能設計的時候,一定要記得抓住本質來設計,否則很容易走歪路,然后陷入無休止的修修補補中。

例如看競品,別人有明盤和暗盤,我要不要也這樣做呢?別人有動態盤點和靜態盤點,我是否也要跟著做一個呢?別人盤點的時候可以Excel導入,那我是不是也要做呢……

這就是我早些年做盤點功能的時候踩的最大的一個坑,一直想把盤點功能做的很全,很完善。結果發現很多功能設計完成之后,壓根過不了評審?;蛘咦鯠emo方案的時候,倉庫壓根就不認可這么多復雜的操作方式,于是只能被打回去重新思考到底業務的需求是什么,海外倉的特色是什么,盤點功能的邊界應該怎么定義。

二、盤點流程

盤點流程圖

盤點的主線流程基本上都是大同小異,因為本質就是清點實物,然后調整系統賬面數據。所以難點一般會在一些小細節和業務判斷上,同時還有海外倉庫的操作系統和管理方式。

1. 創建盤點單

創建盤點單的時候我精簡了盤點的方式,最后就保留了兩種方式:

  1. 按SKU+倉位盤點,系統標記出需要盤點的SKU在哪個庫位分別有多少數量;
  2. 按倉位盤點,系統標記出需要盤點的倉位有幾種SKU,分別有多少數量;

全部都是明盤,沒有考慮暗盤這種方式(各位可以視具體業務而定),這兩種方式是倉庫盤點最常見的,能滿足絕大多數的盤點需求。

把選擇權更多地給倉庫,想盤點哪個客戶的,哪個SKU就盤點哪個,想盤點什么庫位就盤點什么庫位,一切都由倉庫自己來決定。系統要做的就是精準地將位置和信息帶出來,然后提供給倉庫盤點人員即可。

2. 初盤

上面說到了,盤點的本質就是將實物數據和系統的賬面數據進行比對,然后去調整系統的賬面數據,以達到賬實相符。

如果實物比賬面數據多,那么就是「盤盈」,意味著庫存調整單是需要增加庫存,類似于系統平白無故多「賺」了一些數量。

如果實物比賬面數據少,那么就是「盤虧」,意味著庫存調整單是需要扣減庫存,類似于系統中平白無故「丟失」了一些數量。

而初盤的意思就是第一次盤點,初次盤點。初盤之后還有復盤,甚至還有些倉庫會有終盤,就是對復盤之后再盤點。

初盤之后再復盤的原因是考慮到人為清點會有可能點錯數的情況,如果一次清點就做了調整,有可能人為誤差因素太大。所以會考慮初盤之后,再來一次復盤,以減少初盤一次帶來的誤差率。

3. 復盤

對初盤結果再次盤點,就稱為復盤,也可以叫做二次盤點或者二盤。關于復盤有一個邏輯是需要特別注意的:那就是復盤,到底還需要盤哪些?

如果我們不做過多的考慮,那么復盤肯定就是對初盤的一次重復動作,也就是說初盤盤了10個SKU,20個倉位,那么復盤也需要盤點10個SKU,20個倉位。

但是從實際的調研和倉庫反饋來看,倉庫有些時候并不想重復性地對已經確認了數據的內容再次盤點,這樣會浪費自己的時間,同時又感覺做了很多無用功。但如果只對有差異的內容進行復盤,那么又會發現如果倉庫想對一些不太確定的SKU再次盤點,系統卻沒有辦法支持錄入復盤數據了,也會挺頭痛的。

所以推薦的解決方案是:復盤的時候可以對所有數據進行操作,額外增加了一個篩選按鈕,就是「只展示有差異的內容」。 這樣的話可以只對有差異的內容進行盤點,而沒有差異的內容盤點數據自動默認采用初盤的數據;如果要對全部的內容盤點,系統也留了一個口子,不至于讓倉庫沒有入口錄入數據。

4. 確認盤點結果

當復盤之后,絕大多數情況下可以確保實際清點的數量應該是準確的,所以就可以對復盤結果進行確認了。確認之后可以執行盤點差異處理,從而對進行庫存調整,增加一條盤盈的流水或者盤虧的流水。

確認盤點結果可以考慮做一個授權功能或者審核功能,盡量確保這個動作的完成是有一定的門檻的,畢竟對系統賬面數據進行了調整,所以還是要讓操作人員有一定的敬畏心和謹慎感。當然如果可以采用管理的手段來規避這種查錯那是最好的,因為系統終究只是工具,如果一味地想要通過工具來約束人其實并不可取,反而容易增加成本,讓系統復雜度暴增。

5. 盤點的詳細流程

最后我在這里放一個詳細版的盤點流程圖,其實最早期的版本應該會有更多的功能,隨著對業務的把控程度越來越清晰,就做了很多刪減。

盤點詳細流程圖

三、難點與踩坑點

1. 分類和業務分支復雜

前面講到,盤點有很多種類和方式,如果一味的想要求全,滿足所有的功能,那么就會導致分支線會弄的比較復雜。

例如當前我只用了兩種盤點方式,但是涉及到初盤,復盤和確定執行與不執行,最后再兼容不同的盤點設備,這一套下來,工作量其實就挺多的。

而且盤點功能其實只是WMS的庫存模塊的一個小功能,如果一開始采用了太多種類的盤點方式,那么最后可能就會演變成比較復雜的分支。產品設計的方案太復雜,開發成本較高,倉庫使用的學習成本也很高。

2. 盤點鎖定庫存和實際庫存

倉庫盤點的時候,應不應該停止作業?這個問題不同的人有不同的答案,但是結果肯定是:不作業的時候再做盤點會對產品設計要求更少。

當在倉庫作業的時候盤點,創建盤點單獲取實時數據的時候是一個值,在實際到了庫位進行盤點的時候可能又變成了另外一個值。為了避免這種數據的動態增減,我們可以考慮對正在作業中的SKU或者庫位做凍結,不允許盤點這一塊的數據。

那么什么時候釋放這些作業中鎖定的庫存數據又是一個問題,是下架了就釋放還是出庫了再釋放。如果是下架了就釋放,那么如果有訂單攔截取消又要返庫怎么辦?如果是出庫了就釋放,那么這個單臨時不出庫,一直放在待發貨區不出庫,那么短期內就沒辦法對某些SKU盤點了。

所以盤點怎么處理鎖定庫存也算是一個難點,一定要考慮清楚系統對庫存的鎖定和釋放的時機,然后結合業務來設計。

我自己的經驗是傾向于讓倉庫盤點的時候不作業,這樣的數據是最準確的。我只統計在庫位的庫存,而不管是否鎖定還是凍結,只要不在庫位我就不統計,那么前提最好是:倉庫已經正常作業完,現在沒有入庫和出庫的操作。

3. 產品邊界的問題

上面說了關于盤點的方式和種類有很多,然后盤點庫存統計的時機也有很多種方式,盤點需要幾次才能確認結果,盤點的時候用PDA還是紙質單還是Excel,盤點能否支持多人同時作業,多設備共同提交……這些都是產品邊界的問題,一開始最好做加法,然后慢慢地發掘之后做減法。

產品邊界問題不只是在盤點上會遇到,在其他的產品功能設計的時候也會遇到。而我自己就是因為在盤點的時候踩了這個坑,所以我的記憶比較深刻。盤點功能從設計到開發到最后上線,足足比我預估的時間晚了2個迭代,這里面最大的原因就是我對產品邊界的把控不到位。

有些功能做到一半才感覺好像用處不太大,考慮的太多了;也有一些功能做到一半才發現沒考慮周全,例如貨品的料區問題,于是又要緊急規劃將一些遺漏的點重新補上。

產品邊界這個坑,是做盤點功能給我最大的一個教訓,也算是一個最大的收獲。

4. 盤點單是否要拆分成任務單?

國內一些比較知名的電商WMS,例如富勒,大寶,吉客云等基本上在做盤點功能的時候都會引入一個盤點任務的概念,盤點單和盤點任務之間的實體關系圖我畫了一個簡化后的圖來表示。

盤點單和盤點任務單的關系

對于海外倉WMS來說,如果業務單量沒有達到較大的值,倉庫中的貨品種類和貨架、庫位數量等沒有達到一定的量級,我都是建議先不要考慮設計“盤點任務單”這個概念,因為對倉庫執行層來說稍微重了一些。

實際上我接觸的一些小的海外倉,大家在盤點的時候一般都是要么線下各自分任務,張三盤點A區,李四盤點B區,然后分別提交數據匯總在一起,這種方式簡單粗暴,效果也還好。

如果引入任務單的概念,那么就需要考慮盤點單中的待盤點明細要怎么拆分為不同的任務單,這些任務怎么分配給操作員,然后任務單的什么時候匯總到盤點單中等,這里涉及的工作量就稍微大了一些。

實際上是否引入任務單,還是要看當前的業務情況和系統情況來決定,我之所以在這里提到這個東西,是我發現很多朋友在做海外倉的時候會受限于國內倉的思維??吹礁焕沼羞@個功能,然后就覺得好像自己的倉庫也要加上這個功能,于是乎就會看到一些海外倉做得特別復雜,而且又不太高效。

根據我目前對海外倉的理解和認知來看,如果不是那幾個特別大的、知名的海外倉公司,其他的海外倉系統功能都不太建議做太復雜,適度才是最好的,而不是全都要。

“所有重要的東西都不是重要的,只有必要的東西才是重要的”。

四、小結

盤點功能是WMS庫存模塊的一個輔助性功能,輔助倉庫調整系統賬面庫存,以達到賬實相符的要求。海外倉的盤點和國內電商倉庫的盤點應該也是大同小異,主要區別還是在倉庫管理和實際業務的區別。畢竟系統是給人用的,使用的人都不同,那么使用方式自然也會有所不同了。

大家總在說B端產品應該更加注重業務,吃透業務,理清邏輯;而C端產品則需要更加關注拉新留存,商業價值,用戶體驗和用戶價值。很多話都是說的,聽的千篇一律,卻難有,少有萬里挑一的觸動。

當我回過頭去反思自己做WMS的產品設計的時候,我發現我對業務的理解還是很片面,總覺得自己看到的就是最真實的,最全面的。而背后的,冰山下的卻沒怎么去挖掘,花費了較多的時間和精力去對比競品,去分析同行的設計初衷……

所以,哪怕是看起來簡單的8個字:吃透業務,理清邏輯。實際做起來也是需要費一番苦心和光陰,所以B端產品還是應該側重點在業務。理解了業務,吃透了業務,那么距離一枚優秀的B端產品,就

專欄作家

我叫維他命(Vitamin),微信公眾號:PM維他命。前PHPer,做過在線教育類產品,也做過4年多的跨境倉儲物流方向的產品,目前是一位外貿SaaS領域的供應鏈產品經理。主要專注于WMS/OMS/TMS/BMS/ERP等領域,分享供應鏈相關的產品知識。

本文原創發布于人人都是產品經理,未經作者許可,禁止轉載。

題圖來自Unsplash,基于 CC0 協議。

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 請問一下,我現在在設計庫存盤點的功能,領導是說暫時不做庫存鎖定的機制,我對盤點單中的商品系統庫存的取值有點疑問。①商品的賬面庫存值我該怎么取?是直接取實時庫存,還是我要設置一個“庫存日期”的字段,能夠支持取到歷史日期節點的庫存值?②商品添加到盤點單之后,它的賬面庫存值就靜態的,按它被添加到盤點單時的庫存值不變,還是要能夠動態變化?

    來自福建 回復
    1. 如果不鎖庫,那么就是什么時候發盤點單的時候就去取賬面庫存(實時庫存),然后盤點過程中不要發生相關的庫存變動,例如說晚上的時候去做盤點,這樣就可以解決大多數盤點的問題。

      如果你添加到盤點單的時候庫存是100,然后中途又發生了一些單據的變化,例如說出庫了2個,到時候錄入盤點結果的時候,你就不知道這個錄入的結果到底是出庫2個之后剩余的,還是在出庫2個之前就記錄好的數據。說白了就是數據在動態變化,就失去了盤點的意義,盤點就是為了讓庫存準確,如果盤點過程還有一些不清不楚的變動,那這個功能就白做了

      來自廣東 回復
  2. 請問盤盈盤虧對批次庫存的影響和處理方式是怎么樣的

    來自香港 回復
    1. 看業務邏輯,如果是先進先出的邏輯處理。

      盤盈了,那就是相當于入庫了,就會增加最近的一個批次的庫存;
      盤虧了,那就是相當于出庫了,就會扣除最早的一個批次的庫存;

      來自廣東 回復
  3. 我們是saas,盤點類型有常規,異動,支持多維度盤點,如庫存地,批屬性,標簽等等,然后還有按容器,物料,還可以篩選(按工廠,按庫存地,按庫區,庫位…)還有文中提到的盤點任務拆分?。?!

    來自廣東 回復
    1. 哈哈,都要做了是吧

      來自廣東 回復
  4. 不遠了。

    來自安徽 回復