訂單、付款、履約與配送狀態,應該要分開表示。
台灣的中小企業做電商系統時,訂單的狀態相關欄位應該要有四個欄位,而不是只有一個狀態欄位。
我知道很多團隊開發的時候,orders 那張 table 就只有一個 status 欄位,然後用它來表達未付款、已付款、待出貨、已出貨、已完成、已取消。但這其實是一個很不好的做法。
你稍微寫久了就會知道,一個 status 欄位沒辦法表達一大堆訂單狀態。正確的做法是分成四個欄位:
第一個欄位是 status。
第二個欄位是 payment_status。
第三個欄位是 fulfillment_status。
第四個欄位是 delivery_status。
它們的差別在於:
第一個 status,是這個訂單有沒有意義。比方說,客戶選了信用卡付款,結果他沒有去完成付款,那這個草稿就是一個草稿訂單,訂單本身無意義。
payment status 是用來處理跟金流相關的狀態,也就是他到底付款了沒。
fulfillment status 是給後台出貨人員用的欄位。當他把已經付款、該出貨的訂單處理完之後,比方說叫物流人員來收件,或是送到超商去做店到店寄出之後,用來記錄這筆訂單是否已經履約。
delivery status 是投遞狀態,也就是宅配送到客人家了沒,或是店到店取貨時,商品抵達超商了沒、顧客領貨了沒。
所以,你沒辦法用一個 status 表達全部的東西,應該要用四個 status 來表達。
你必須要用四個狀態來表達,你的電商後台才會好用。
我看過很多台灣的電商平台和接案團隊,他們開發電商時狀態欄位設計不佳,所以後台就很難用。他們的說明手冊也寫得很冗長,就是因為狀態欄位沒有設計好,後台操作起來就不好用。
舉些範例:
status 可能只有:
draft、open、completed、cancelled。
payment_status 可能只有:
unpaid、paid。
如果功能比較進階的話,可以再多:
refunded、partially refunded。
fulfillment_status 可能有兩個值:
unfulfilled、fulfilled。
如果未來開發功能變多、系統變複雜的話,可以再增加:
partially fulfilled。
delivery_status 的可能值比較複雜。一開始你可以先放:
pending。
然後,店到店的話多一個:
ready for pick up。
商品到超商了,客人已經取走,或宅配已經送到的話,就放:
delivered。
當然,物流相關的狀態可以放非常多,所以你可以根據你們的需求,在 delivery status 這邊設計更多狀態。
最少要有 pending 或 processing,以及 delivered。最少要有這兩個。