OpenCart 結帳時的商品庫存檢查邏輯

OpenCart 系統紀錄購物內容及檢查商品庫存,程式是這樣運作的,當加入購物車的商品,有多種不同選項值,就會各自存一筆紀錄。

例如客戶將 3 件相同型號,但不同選項值(例如一件黃色、一件白色、另一件綠色)的商品,加入購物車之後,系統是以 3 筆商品紀錄,儲存在資料庫的購物車資料表中。

而檢查庫存是否不足的邏輯是,逐一比對每一筆商品紀錄,檢查購物車資料表中,每一筆商品紀錄的購買數量是否大於庫存數量。

舉例來說,如果該商品庫存數只有 3 件(3種顏色各一件),但如果你購買了 3 種不同選項(顏色)各 3 件,系統會分 3 筆購買商品紀錄逐一檢查數量,每次檢查結果都是庫存 3 件、購買 3 件,沒有庫存不足,所以可以購買。

您可以到官方網站的 Demo (https://www.opencart.com/index.php?route=cms/demo) 做測試,從後台可以看到商品 HP LP3065,它的庫存數是 1000。

到前台找到這項商品 (https://demo.opencart.com/index.php?route=product/product&product_id=47),這件商品有一個商品選項 [Delivery Date],我們任意設定一個日期,假設 2020-01-01,數量改成 1001,然後 Add to Cart。

加入購物車之後,到 shopping cart 看看,你就會注意到系統出現了庫存不足的警告。

接著,把商品購買數量,由 1001 改成 1000 並 update,庫存不足的警告就會消失了,因為庫存有 1000 件,而你買 1000 件,所以不會出現警告。

然後點擊 HP LP3065 商品名稱,回到商品頁,繼續購買此項商品 1000 件,但設定不同的 [Delivery Date],例如 2020-01-05,然後 Add to Cart。

再回到 shopping cart 看看,你會發現購物清單是以 2 筆資料呈現,每筆 1000 件,共 2000 件 HP LP3065,但卻沒有出現庫存不足的警告。

如果你的商品沒有多種選項,或是你沒有商品庫存量的問題,那你可以不用擔心這個問題,如果這問題有可能發生在你的商店,那就可能要思考防範之道,或請工程師幫你做庫存檢查邏輯的程式修改,來改成你要的庫存檢核邏輯。