メモ > 技術 > CMS: ECCube > カスタマイズ: 対応状況の調整
カスタマイズ: 対応状況の調整
■対応状況の追加
設定 → システム設定 → マスタデータ管理 → mtb_order_status
でステータスを管理できる
ただしステータス遷移なども定義が必要
詳細はこの後の「対応状況の遷移を変更」を参照
■対応状況の遷移を変更
EC-CUBE4で受注ステータスを追加する - Qiita
https://qiita.com/chihiro-adachi/items/a7c518f49c0182f297fa
例えば「後払い」という決済方法があったとして、ステータスを
「新規受付 → 対応中 → 発送済み」
のように変更したあとに「入金済み」に変更したくてもできない
EC-CUBE4受注管理>受注一覧 | EC-CUBE4 管理・運用マニュアル | shiro8
https://www.shiro8.net/manual4/v40x/order/index.html
「※EC-CUBE4のステータスには「入金待ち」のステータスはありません。
受注データの処理中であっても、一度ステータスを「対応中」で登録してしまうと、ステータスを「入金済み」に切り替える事は出来ません。
入金が確認出来るまでの受注データは「新規受付」のステータスのまま保持しておく必要がありますが、
日々新規オーダーは入りますので、入金の突合せの際は新規受付の中から探し出す必要がある為、やや使い辛いかもしれません。」
これはECCube4の仕様らしいが、これを変更可能にしてみる
まず前提として、ECCubeのステータスにはデフォルトで以下がある
(「購入処理中」は、「ご注文手続き」画面まで進んだが注文はまだ完了していない、というもの)
Status::NEW ... 新規受付
Status::CANCEL ... 注文取消し
Status::IN_PROGRESS ... 対応中
Status::DELIVERED ... 発送済み
Status::PAID ... 入金済み
Status::PENDING ... 決済処理中
Status::PROCESSING ... 購入処理中
Status::RETURNED ... 返品
処理の際にこれらの値を使用する
また対応状況は、以下のように遷移する
受注関連 - < for EC-CUBE 4.0 Developers />
https://doc4.ec-cube.net/spec_order
以降は具体的な実装方法
まず、app\config\eccube\packages\order_state_machine.php の68行目あたりに以下を追加する
'back_to_paid' => [
'from' => [(string) Status::IN_PROGRESS, (string) Status::DELIVERED],
'to' => (string) Status::PAID,
],
これで「対応中」もしくは「発送済み」から「入金済み」に遷移できる
ただしこの時点では、「入金済み」に遷移しても入金日時が記録されない
src\Eccube\Service\OrderStateMachine.php を複製して
app\Customize\Service\OrderStateMachine.php を作成し、14行目あたりにある namespace を変更する
namespace Eccube\Service;
↓
namespace Customize\Service;
さらに110行目あたり、getSubscribedEvents() 関数内の戻り値に以下を追加する
'workflow.order.transition.back_to_paid' => ['updatePaymentDate'],
これで「対応中」もしくは「発送済み」から「入金済み」に遷移したとき、updatePaymentDate() が実行される
これにより、入金日時が記録される
データベースでの扱いについては、このファイル内の「受注データのステータス」を参照
■対応状況を追加する際の注意
独自のステータスを追加すると、ECCubeが想定する運用の流れから外れる可能性があるので注意する
それによって、プラグインが対応できなくならないか、など
またあまり色々追加すると、独自の仕様によって運用がややこしくなりそうな懸念がある