参照元ファイル
app/config/eccube/packages/order_state_machine.php
EC-CUBE 4の注文管理における**状態遷移ルール(StateMachineのトランジション)**を定義しています。
具体的には、注文の各ステータス(Status
)間で許可されている遷移を設定しています。
以下で詳細を説明します。
1. transitions
の構造
transitions
配列は、**各遷移(transition)**について以下の情報を指定します:
- 遷移名(例:
pay
,packing
) - 遷移元状態(from):現在の状態のリスト。これらの状態から遷移が可能。
- 遷移先状態(to):遷移後の状態。
2. 各遷移の意味
2.1. pay
phpコードをコピーする'pay' => [
'from' => [(string) Status::NEW, (string) Status::CANCEL],
'to' => (string) Status::PAID,
],
- 意味:
Status::NEW
(新規)またはStatus::CANCEL
(キャンセル済み)状態から、Status::PAID
(支払済み)に遷移可能。
- 用途:
- 注文が新規作成後、またはキャンセル状態から支払済みに変更される場合。
2.2. packing
phpコードをコピーする'packing' => [
'from' => [(string) Status::NEW, (string) Status::PAID, (string) Status::CANCEL],
'to' => (string) Status::IN_PROGRESS,
],
- 意味:
Status::NEW
(新規)、Status::PAID
(支払済み)、またはStatus::CANCEL
(キャンセル済み)からStatus::IN_PROGRESS
(処理中)に遷移可能。
- 用途:
- 支払済みやキャンセル状態の注文を、処理中状態に戻す際に利用。
2.3. cancel
phpコードをコピーする'cancel' => [
'from' => [(string) Status::NEW, (string) Status::PAID],
'to' => (string) Status::CANCEL,
],
- 意味:
Status::NEW
(新規)またはStatus::PAID
(支払済み)からStatus::CANCEL
(キャンセル済み)に遷移可能。
- 用途:
- 新規や支払済みの注文をキャンセルする処理。
2.4. back_to_in_progress
phpコードをコピーする'back_to_in_progress' => [
'from' => [(string) Status::NEW, (string) Status::PAID, (string) Status::CANCEL],
'to' => (string) Status::IN_PROGRESS,
],
- 意味:
Status::NEW
(新規)、Status::PAID
(支払済み)、Status::CANCEL
(キャンセル済み)からStatus::IN_PROGRESS
(処理中)に遷移可能。
- 用途:
- キャンセル済みや支払済みの注文を処理中状態に戻す際に利用。
2.5. ship
phpコードをコピーする'ship' => [
'from' => [(string) Status::NEW, (string) Status::PAID, (string) Status::CANCEL],
'to' => [(string) Status::DELIVERED],
],
- 意味:
Status::NEW
(新規)、Status::PAID
(支払済み)、Status::CANCEL
(キャンセル済み)からStatus::DELIVERED
(配送済み)に遷移可能。
- 用途:
- 支払い後やキャンセル済みの注文が配送完了した場合に利用。
2.6. return
phpコードをコピーする'return' => [
'from' => (string) Status::DELIVERED,
'to' => (string) Status::RETURNED,
],
- 意味:
Status::DELIVERED
(配送済み)からStatus::RETURNED
(返品済み)に遷移可能。
- 用途:
- 配送済みの注文を返品処理する際に利用。
2.7. cancel_return
phpコードをコピーする'cancel_return' => [
'from' => [(string) Status::CANCEL, (string) Status::PAID],
'to' => (string) Status::DELIVERED,
],
- 意味:
Status::CANCEL
(キャンセル済み)またはStatus::PAID
(支払済み)からStatus::DELIVERED
(配送済み)に遷移可能。
- 用途:
- 支払済みやキャンセル状態の注文を配送済みとして処理する場合に利用。
3. 全体のポイント
- この設定は、注文の現在の状態(
from
)に基づいて、次に遷移可能な状態(to
)を制御します。 - 状態遷移は、
StateMachine
(ステートマシン)のルールに従って適用されます。 - これにより、不正な状態遷移(例: 配送済みから新規に戻すなど)を防ぐことができます。
4. カスタマイズ方法
- 状態遷移のルールを変更したい場合、
transitions
配列に新しい遷移を追加したり、既存のfrom
やto
を変更します。 - たとえば、新しいステータス(例: “確認中”)を追加して利用する場合、以下のように記述します。
phpコードをコピーする'confirming' => [
'from' => [(string) Status::PAID],
'to' => (string) Status::CONFIRMING, // 確認中
],
これにより、新しい業務フローをシステムに取り入れることができます。