操作
機能 #707
完了未発送(発送日未入力)の注文は配送完了報告をグレーアウトして操作できないようにする
開始日:
2026/08/21
期日:
進捗率:
0%
予定工数:
説明
事象・要望¶
admin の注文一覧で、発送日(shipped_on)が未入力=「発送済」になっていない注文でも、配送完了報告の欄が操作できてしまう。
未発送のまま「配送完了報告」を押すと注文者へ発送完了メールが飛び、delivery_reported_at が記録されてステータスが「お届け済み」になる。発送していないのに完了扱いになるため、事故につながる。
やること¶
発送日が入っていない注文は、配送完了報告の欄を全てグレーアウトして操作できないようにする。
- メールを送れないようにする
- 「配送完了」に進めないようにする
- 対象は「配送完了報告」「メール以外で発送連絡済」の両ボタンと、件名・本文の入力欄
実装メモ¶
- 対象ファイル …
app/views/admin/orders/index.html.erbの配送完了報告カラム(現状delivery.delivery_reported_at.present?/delivery.persisted?のみで分岐しており、shipped_onを見ていない) - ビューの無効化だけでは不十分。
Admin::DeliveryReportsController#createにサーバ側のガードを入れ、shipped_onが未設定なら記録・メール送信を行わずエラーで戻す(フォームを無効化しても直接 POST できるため) - グレーアウト時は「発送日を入力すると操作できます」等の理由を添えると親切
- 参考 … supplier 側(
app/views/supplier/orders/index.html.erb)は既にshipped_onの有無で表示を出し分けている
補足¶
shipped_on は配送情報フォームの発送日を直接入力するか、追跡番号を入力すると Delivery 側で自動記録される(app/models/delivery.rb)。
関連: #703
操作