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