OpenCart 折價券機制使用的常見失誤

介紹OpenCart折價券常見的使用問題,包含折價券的結束日期判斷、實際套用計算的時機點、以及折價券狀態設定的影響的等等。

OpenCart 內建的行銷活動功能並不多,雖然可以透過加裝擴充模組來增加各種折扣功能,但內建的折價券功能,因為使用上方便直覺,也符合台灣消費習慣,可說是最常被使用的行銷活動機制。

然而這個內建的折價券機制,有幾個地方常會被誤解而使用錯誤,如果你對這個功能還不是很熟悉,那建議你務必要讀一讀這篇文章,以免在折價券的設定或使用上發生錯誤,對商店經營造成不必要的傷害。

折價券的結束日期

折價券的結束日期,是最常被誤解的設定,在程式中,判斷折價券是否過期的 MySQL 語法是 date_end > NOW(),NOW() 是指當下系統的時間,這個 date_end 就是下圖畫面中設定的折價券結束時間,這個結束日期只能設定到 “日”,例如畫面中的 2023-11-01,當這個日期與當下系統時間進行比對時,會先轉成帶有時、分、秒的時間,於是 2023-11-01 會被轉成 2023-11-01 00:00:00,也就是 2023-11-01 日一到,就結束了,但是有很多商家卻以為,結束日期設定 2023-11-01,是指 2023-11-01 這天結束才結束,就是誤以為到 2023-11-01 23:59:59 的意思,這是不正確的,如果你希望折價券可以用到某一天的 23:59:59,那結束日期就應該設定是隔天的日期,因為這代表一到隔天就結束的意思。

折價券實際套用的時機點

很多人以為,結帳時如果客戶輸入折扣碼,則送出訂單的瞬間,折價券就被套用了,這樣的解讀並不完全正確,OpenCart 對這方面的設定算是很有彈性,也可以透過設定達到像這樣的效果,一結帳就套用折價券,但有時候商家的不同設定,並不是如此。

前面提到,OpenCart 之所以把這部分做得很有彈性,是因為每家商店對於完成訂單的時機點認定,可能不一樣,因為完成訂單會觸發許多作業,以最常見的扣減庫存來說明,有些商家希望只要有人下單,不管客戶最後有沒有轉帳付款、或是到超商取貨付款,都一率先扣減庫存,以免超賣。但也有另一類的商家,不希望在還未確定交易完成之前,就把庫存扣掉,造成銷售的機會損失。

折價券的套用,和商品庫存的扣減,是類似的概念,折價券有時會限制可使用次數,常常也是必須確定訂單完成後,才進行套用,並計算一次使用,而不是一下單就計算一次使用,而是依據系統的 [屬處理中之訂單狀態] 與 [屬已完成之訂單狀態] 的設定值而定。

折價券的狀態設定

這是一個隱性的險坑,這個環節與前一個訂單完成有關,由於訂單狀態變更為已完成時,會先檢查折價券是否有效,包含折扣碼是否存在、折價券的狀態是否為啟用、折價券的使用次數是否已達到限額等等,只要檢查不通過,則訂單變更的操作就會失敗,訂單狀態會被 [失敗的]。

這個狀況遇過幾次,有商家習慣在折價券活動日期一到,就手動將該項折價券的狀態更改為 [停用],這個動作會造成在訂單狀態變更為已完成時,折扣碼的檢查不通過,使得訂單被視為有問題,進而將訂單狀態設定成 [失敗的],如果你有這種習慣,請務必要調整一下,折價券到了結束日期就無法再被使用於新訂單的結帳,無須另外手動將它變更為停用,記住了嗎?