Memo

メモ > 技術 > 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が想定する運用の流れから外れる可能性があるので注意する それによって、プラグインが対応できなくならないか、など またあまり色々追加すると、独自の仕様によって運用がややこしくなりそうな懸念がある

Advertisement