OrderItem — 注文明細
これは何か
注文(Order)の中の1行です。「長机を3台、1台2,000円で申し込んだ」という1件の内容を表します。
1つの注文は複数の明細を持てます。「長机3台」「折りたたみ椅子10脚」「参加費1口」のように、申し込んだ商品の種類の数だけ明細行があります。
誰が作るか
明細は2つの経路で作られます。
サークルのチェックアウトによって自動生成される
サークルがカートをチェックアウトすると、カート内の各商品行が自動的に明細に変換されます。この場合 isAdminFixed = false になります。
運営スタッフが直接追加する(強制割り当て)
電源工事費・会場清掃費など、サークルが選んで申し込むのではなく「運営が一方的に課す費用」を明細として直接追加できます。この場合 isAdminFixed = true になります。
isAdminFixed — 強制割り当て
isAdminFixed = true の明細は、運営スタッフが追加したものです。
- サークル側からは見ることができる(自分の注文の一部として表示される)
- サークル側は変更・削除できない
- 変更・削除できるのは運営スタッフのみ
申し込み時の価格の固定
注文明細が作成された時点の単価は、その後変更されない。
これはこのシステムで最も重要なルールのひとつです。たとえばチェックアウト後に運営が商品の価格を変更しても、すでに申し込んだサークルへの請求金額は変わりません。申し込んだ瞬間の価格が記録に残り続けます。
誰が使うか
- サークル:自分の注文の明細を確認する(読むだけ)
- 運営スタッフ:明細を確認し、必要であれば強制割り当てを追加・変更する
できなければならないこと
- チェックアウト時にカートの内容から自動的に明細が生成される
- 運営スタッフが注文に強制割り当ての明細を追加できる(注文が PENDING または APPROVED の状態に限る)
- 運営スタッフが
isAdminFixed = falseの明細の数量を変更できる(注文が PENDING または APPROVED の状態に限る) - 運営スタッフが強制割り当ての明細を変更・削除できる
- サークルが自分の注文の明細を確認できる
できてはいけないこと
- サークルが強制割り当て(
isAdminFixed = true)の明細を変更・削除すること - サークルが明細を直接作成すること。明細の作成はチェックアウト処理か運営スタッフの操作のみ。
- CONFIRMED または RECEIPTED の注文の明細を変更・追加・削除すること。発注が確定した後は内容を変えてはならない。
- 申し込み時の単価(unitPriceAtOrder)を後から変更すること。申し込み時点の証拠として永続的に保持する。
- 数量を0以下にすること。削除したい場合は削除操作を使う。
- 他のサークルの明細を見たり変更したりすること。