Magento2 可售庫存的計算
不知各位是否遇過,明明設定產品的庫存量為正數,但前台卻顯示無庫存,或者下單時被告知無庫存的情況呢?如果對這種情況感到棘手,今天剛好一起來了解庫存可售量,在訂單流程中的增減邏輯吧!
我們先從後台新增了一個簡單商品,給定初始庫存量 5。
從產品列表,可確認當前庫存量與可售量皆為5。
接著,由前台下單該商品,並從後台開發票,讓訂單正式成立進入 processing 狀態。
此時再觀察當前庫存,會發現可售量已變成 4,但庫存量仍然維持在 5。
若前台嘗試再次下單,則該商品數量最多只能訂購 4 個。
那麼被扣住的那一個庫存,何時會真正從實際庫存減除呢?
我們繼續為該訂單出貨,待出貨單建立成功,可以發現當前庫存正式被變更為 4。
由此可知,這裡有個保留庫的概念,從訂單下訂,會先扣留數量不讓其他人購買,一直到訂單出了貨,才從實際庫存量扣除。
那麼,系統是如何紀錄保留數量的?
現在進到資料庫查看 inventory_reservation 這張資料表,用產品的sku作為條件進行搜尋:
可以搜索到兩筆資料,一筆為下單時扣留庫存,quantity -1:{“event_type":"order_placed","object_type":"order","object_id":"","object_increment_id":"SA000000612U1″}
另一筆則為出貨扣除實際庫存時,釋放了被扣留的庫存,quantity + 1:
{“event_type":"shipment_created","object_type":"order","object_id":"862″,"object_increment_id":"SA000000612U1″}
這張表儲存了保留庫進出的「數量」、「事件」、「關聯類型」與「關聯鍵值」。因此當發現實際庫存與可售庫存數量不ㄧ致時,可以透過它探尋可能原因。
另外,除了保留庫會影響可售量,還有一個設定也會影響,就是安全庫存量。
我們進到該產品進階庫存設定,將 Out-of-Stock Threshold 設定為 3。
接著再度查看產品列表,則可售數量由4降為1。
綜合以上要素,可以推算公式如下:
可售庫存量 = 實際庫存量 – 安全庫存量 + 保留庫總和(正負數量加總)
若有使用多庫存功能,則可售數量會依照各自的來源做以上公式的計算:
以上圖為例,新增銷售管道 Stock-a&b ,庫存來源為Source A 與 Source B,其可售數量計算方式為:
Stock-a&b 可售數量 = Source A 實際庫存量 + Source B 實際庫存量 – 安全庫存量 + 保留庫總和
9 = 5 + 7 – 3 + 0
這裡也可以看出一個細節,每個產品的安全庫存量只能設定一個通用值。
了解至此,對於庫存邏輯應該有了概念上的理解,下次遇到無法下單但有實際庫存的商品,便可依循這個公式查找庫存卡在哪囉!希望今天的分享,幫助到各位精確的管理庫存。我們下次見!
如果有您有更多疑問可以詢問我們,未來會撰寫更多電商網站相關文章,您想知道什麼嗎?歡迎在下方留言給我們。或追蹤我們的粉絲專頁及IG,也別忘了訂閱電子報,就不錯過最新文章喔!
想學習更多Magento設定嗎?請見:Magento教學導覽
我要留言