配送日時指定プロプラグイン
配送希望日・時間帯の空き枠をリアルタイムに集計・可視化!1日・時間枠ごとの上限管理(満枠制御)、当日出荷締め切り時間、出荷休業日・日本の祝日自動除外、複数お届け先完全対応、高負荷アトミック制御により、出荷現場のパンクを防ぎながら顧客満足度を大幅に向上させる配送最適化ソリューションです。
1. プラグイン概要と開発背景
EC-CUBE標準の配送日時指定は、静的なプルダウンによる選択のみが提供されており、「1日に発送可能な上限件数」や「時間帯別の出荷可能上限数」を制御する仕組みが存在しませんでした。
そのため、繁忙期やセール時に特定の日・時間帯に注文が集中し、倉庫や出荷現場がパンクしてしまうという課題が多くのEC事業者様で発生していました。
- 出荷能力のオーバーフロー防止: 時間帯枠ごとに「1日20件まで」等の上限を設定し、上限に達した枠は自動で「満枠(選択不可)」に制御。
- 当日締め切り時間の厳格運用: 「正午12:00を過ぎた注文は翌営業日出荷」といった運用ルールを自動適用。
- 日本の祝日・独自休業日の自動除外: 内閣府祝日APIとのワンクリック同期および定期実行により、休業日の誤指定を防止。
- スマホに最適化されたカード表示: 従来の長いプルダウンを廃止し、横スクロール対応の日付ピルと直感的な時間帯カードで離脱率を低減。
2. 主な特徴・機能一覧
3. 動作環境・互換性
| 項目 | 対応バージョン・要件 | 備考 |
|---|---|---|
| EC-CUBE本体 | 4.2.0 〜 4.3.x | 4.2系および最新の4.3系で動作検証済み |
| PHP | 8.1 / 8.2 / 8.3 (7.4 / 8.0 互換) | PHP 8系の厳格な型定義・パフォーマンスに最適化 |
4. 管理画面の設定詳細
プラグインを有効化すると、EC-CUBE管理画面のナビゲーションに「受注管理 > 配送日時枠管理」が追加されます。
4.1 基本設定(リード日数・当日締め切り・祝日同期)
ショップ全体の配送日時指定に関するコアルールを設定します。
| 設定項目 | 区分 | 説明・動作仕様 |
|---|---|---|
| プラグイン有効化 | 必須 | 本機能を稼働させる場合は「有効」を選択します。 |
| 最短リード日数 | 必須 | 注文日から配送可能日までの最低日数(例: 2)。配送方法設定の「配送日数」と自動合算されて最短希望日が算出されます。 |
| 選択可能日数 | 必須 | 最短お届け日から何日間先まで購入者が選択できるかを設定します(例: 14 日間)。 |
| 当日出荷締め切り時間 | 任意 | 「12:00」のように指定します。この時刻を過ぎた後の注文は、自動的に出荷日が翌営業日扱いとなり、選択可能カレンダーが1日後ろ倒しされます。 |
| 日本の祝日を自動除外 | 推奨 | チェックを入れると、登録されている日本の祝日が出荷休業日としてカレンダー判定から自動除外されます。 |
| 日本の祝日データを同期ボタン | - | 内閣府公式祝日APIおよび内蔵データから最新の祝日データをワンクリックで一括取得・同期します。 |
4.2 時間帯枠設定・上限件数設定(上限管理)
各配送方法に紐づく「お届け時間帯(午前中、14-16時など)」ごとに、1日あたりの受付可能上限数を設定できます。
| 項目 | 説明 |
|---|---|
| 有効フラグ | 時間帯枠の受付を有効にするかどうかを設定します。 |
| 1日あたりの受付上限件数 | 例: 20 件。該当日のこの時間帯に対する注文数がこの数値に達すると、購入画面で自動的に「× 満枠」と表示され選択不可となります。 |
| 時間帯開始・終了時刻 | 「09:00 〜 12:00」等の時刻。当日締め切り判定に活用されます。 |
| 開始前締め切り時間 | 配送時間帯が開始する何時間前に受付を締め切るかを時間単位で指定します(例: 1 時間前)。 |
4.3 出荷休業日・除外日設定
店舗の棚卸日、ゴールデンウィーク、夏期休業、年末年始など、出荷作業を行わない日を登録できます。
- 全配送方法共通の休業日: すべての配送業者共通で配送日カレンダーから除外されます。
- 特定の配送業者のみの休業日: 「ヤマト運輸のみ休業」「佐川急便のみ休業」といった個別設定も可能です。
- 理由メモ: 「棚卸しのため」「夏季休業」などのメモを管理画面上で管理できます。
5. 注文手続き画面の表示仕様
注文手続き画面(/shopping)のお届け日・お届け時間指定エリアが、直感的で見やすいカードデザインへ自動拡張されます。
最短お届け
残りわずか
空きあり
満枠
| ステータス表示 | 判定条件 | 選択可否 |
|---|---|---|
| ◎ 空きあり | 残り枠数が4枠以上ある場合 | ○ 選択可能 |
| △ 残り○枠 | 残り枠数が3枠以下の場合(残数がリアルタイム表示) | ○ 選択可能 |
| × 満枠 | 予約枠数が上限設定に達した場合 | × 選択不可(カードが無効化) |
| 受付終了 | 当日締め切り時刻または枠の開始前締め切り時刻を過ぎた場合 | × 選択不可(カードが無効化) |
6. 複数お届け先(複数配送)への完全対応
お中元、お歳暮、内祝いなどのギフト需要において、購入者が1回の注文で複数のお届け先を指定する「複数のお届け先を指定する(複数配送機能)」にも完全対応しています。
loop.index0)が自動付与され、JavaScript側の状態管理も完全に分離されているため、他の配送先の選択肢に影響を与えることは一切ありません。7. 画面遷移と確認画面の表示保持
注文フローにおいて、購入者が確認画面(/shopping/confirm)に進んだ後、入力内容を変更するために「ご注文手続きに戻る」ボタンで手続き画面(/shopping)に戻った場合でも、選択済みの「配送希望日」および「お届け時間帯」が確実に復元されます。
注文エンティティに保持された保存済み配送日(shipping_delivery_date)および時間帯(delivery_time)をサーバーサイドで検知し、フォーム初期値へ確実に再バインドします。
Twigテンプレートから data-saved-date および data-saved-time-id をDOMコンテナへ伝達。画面初期化時に、該当する日付ピルおよび時間帯カードへ選択状態を即座に自動復元します。
8. コマンドライン&自動同期設定
本プラグインには、保守運用や自動化のためのコンソールコマンドが内蔵されています。
内閣府公式の最新祝日CSVを取得し、データベースを常に最新の祝日情報に更新します。週1回程度の定期実行を推奨します。
# コマンドの単体実行
bin/console eccube:delivery-slot:sync-holidays
# 定期実行設定例(毎週月曜日 午前3時に自動実行)
0 3 * * 1 cd /path/to/eccube && bin/console eccube:delivery-slot:sync-holidays > /dev/null 2>&1開発環境やステージング環境で動作検証を行うため、架空の予約枠データを自動生成できます。
# サンプルデータの生成
bin/console eccube:delivery-slot:generate-dummy-data
# 既存の予約枠データを初期化して再生成する場合
bin/console eccube:delivery-slot:generate-dummy-data --clear9. よくある質問
.ec-dts-*)で設計されており、JavaScriptも外部アセットとして非干渉で読み込まれるため、独自デザインのテーマでも高い互換性を誇ります。