ProductForProject — イベントごとの商品設定
これは何か
「この商品を今年の大学祭でいくらで、何個まで申し込めるか」を定義するものです。
同じ「長机」でも、去年は1台1,500円・今年は2,000円、去年は無制限・今年は1サークル最大5台まで、という違いが生じます。ProductForProject はその違いをイベントごとに保持します。
ここに登録されていない商品は、そのイベントでは申し込みの選択肢に表示されません。
数量のルール
3種類の数量制限を設定できます。
全体上限(maxTotal) そのイベントで、その商品が申し込まれる合計数の上限です。たとえば「長机は全部で100台しかない」という在庫に相当します。先着順で埋まり、上限に達したら申し込めなくなります。設定しない場合は無制限です。
1サークルあたり上限(maxPerProject) 1つのサークルが申し込める最大数です。「1サークル最大5台まで」という制限です。設定しない場合は無制限ですが、全体上限の範囲内に収まります。
1サークルあたり下限(minPerProject) 1つのサークルが必ず申し込まなければならない最低数です。参加費のように「全員が必ず払わなければならないもの」に使います。
誰が使うか
- 運営スタッフ:イベントに商品を追加し、価格と上限を設定する
- サークル:表示された価格・上限の範囲内で申し込む(読むだけ)
できなければならないこと
- 運営スタッフがイベントに商品を追加して価格・上限・下限を設定できる
- 運営スタッフが価格・上限・下限を変更できる
- まだ誰も申し込んでいない設定を運営スタッフが削除できる
できてはいけないこと
- 誰かが既に注文した商品設定を削除すること。削除すると過去の注文記録との紐づけが失われる。
- 価格を負の値にすること。
- サークルがこの設定を作成・変更・削除すること。価格や上限はサークルではなく運営が決める。
- 上限数のチェックをサーバー側で行わないこと。クライアント側(ブラウザ)だけでチェックしても、複数のサークルが同時に申し込んで上限を超える可能性がある。
価格変更と注文の関係
価格を変更しても、すでに確定した注文の金額は変わらない。
これは重要な原則です。サークルがチェックアウトした時点の価格が注文記録に固定されます。その後に価格が変わっても、変更前に注文したサークルへの請求金額は変わりません。変更後に初めて注文したサークルから新しい価格が適用されます。