BEE Bookable Entities Everywhere

BATをベースにした予約・空き状況管理モジュールで、任意のNodeタイプを日単位または時間単位の予約機能を持つブッカブル(予約可能)なエンティティに変換できます。

bee
257 sites
68
drupal.org

概要

Bookable Entities Everywhere(BEE)は、BAT(Booking and Availability Tools)フレームワークを拡張し、任意のコンテンツタイプに予約・空き状況管理機能を提供する強力なDrupalモジュールです。カスタム開発なしで、サイト構築者が任意のNodeタイプを予約可能にできます。

BEEは2つの予約粒度モードをサポートしています:1日単位の予約(バケーションレンタル、機材レンタルに最適)と、柔軟な時間単位の予約(会議室、アポイントメントに最適)です。各予約可能なNodeは、同一リソースを扱うための単一または複数のユニットを持つことができます(例:同じ機材の複数のコピー、複数の座席など)。

このモジュールは、有効化された各Nodeに表示される空き状況カレンダー、包括的な予約フォーム、時間単位予約タイプの営業時間設定機能を提供します。Drupal Commerceと統合すると、BEEは日単位または時間/分単位の設定可能な価格で予約の決済処理が可能になります。

BEEは日次、週次、月次の頻度での繰り返し予約もサポートしており、定期的なイベントやリソース割り当てに適しています。

Features

  • カスタムコード不要で、コンテンツタイプ設定から任意のNodeタイプを予約可能に設定
  • 日単位予約(終日)と柔軟な時間単位予約(任意の長さ)の両方をサポート
  • 同一リソースを扱うためのNode単位の複数ユニット(例:10室の同一会議室)
  • 各予約可能Nodeに対するFullCalendarを使用したビジュアル空き状況カレンダー
  • Office Hoursフィールドを使用した時間単位予約タイプの営業時間設定
  • 日/時間/分単位の設定可能な価格によるCommerce統合決済処理
  • 日次、週次、月次の頻度での繰り返し予約サポート
  • ユニットの空き状況ステータスを更新する空き状況管理フォーム
  • 空き状況管理のためのコンテンツタイプごとの動的パーミッション
  • 定期的な予約のためのイベントシリーズサポート
  • Node作成時のBATユニット自動作成
  • カスタム価格ロジックのための価格変更フック

Use Cases

会議室予約システム

時間単位予約の「会議室」コンテンツタイプを設定します。各部屋のNodeに空き状況カレンダーが表示されます。ユーザーは特定の時間枠で部屋を予約できます。営業時間(例:平日の午前8時〜午後6時)を設定して予約時間を制限します。同一の部屋が複数ある場合は、Nodeごとの複数ユニットで対応できます。

バケーションレンタル物件

「通常利用可能」に設定した日単位予約の「物件」コンテンツタイプを作成します。各物件はデフォルトで1ユニットを持ちます。1泊あたりの課金のためにCommerce決済を有効化します。「自分のpropertyノードの空き状況を管理」パーミッションを持つ物件オーナーは、メンテナンスのために日付を利用不可にマークできます。

機材レンタルサービス

日単位予約の「機材」コンテンツタイプを設定します。複数のコピーがあるアイテム(例:5台の同一ノートパソコン)の場合、Node編集フォームから追加ユニットを追加します。カレンダーはすべてのユニットの空き状況を表示し、各予約に利用可能なユニットを自動的に割り当てます。

予約スケジューリング

時間単位フレキシブル予約の「サービス」コンテンツタイプを作成します。サービスNodeごとに営業時間を設定します。有料予約のためにCommerceと統合します。定期的な予約(例:週次のセラピーセッション)には繰り返し予約を使用します。

ツアーまたはイベント予約

「ツアー」コンテンツタイプに「期間限定利用可能」モードを使用します。ツアーはデフォルトで利用不可で、空き状況管理フォームを通じて特定の日時のみ利用可能にします。ツアースロットごとに複数の参加者を許可するために人数を有効化します。

Webformベースの予約

bee_webformサブモジュールを使用してWebformに予約フォームを埋め込みます。ユーザーは日付を選択して利用可能なNodeを確認し、フォームを送信して予約を作成します。追加データ収集が必要な複雑な予約ワークフローに便利です。

Tips

  • 通常利用可能なリソース(会議室、機材)には「通常利用可能」モードを、明示的な空き状況ウィンドウが必要なリソース(ツアー、特別イベント)には「期間限定利用可能」を使用してください
  • 同一のリソースがある場合はNodeに複数のユニットを追加 - システムは予約に利用可能なユニットを自動的に割り当てます
  • 予約の長さ設定(日単位vs時間単位)は初期設定後に変更できないため、事前に計画を立ててください
  • シーズン、期間、その他の要因に基づく動的な価格設定を実装するにはhook_bee_reservation_price_alterフックを使用してください
  • 追加データが必要な複雑な予約ワークフローには、bee_webformサブモジュールを使用してカスタム予約フォームを作成することを検討してください
  • 予約の人数フィールドを使用すると、一度に複数のユニットを予約でき、グループ予約や複数リソース予約に便利です

Technical Details

Admin Pages 3
コンテンツタイプのBEE設定 /admin/structure/types/manage/{node_type}

特定のコンテンツタイプのBEE予約設定を構成します。ここで予約機能を有効化し、コンテンツタイプの予約パラメータを設定します。

空き状況管理 /node/{node}/availability

予約可能なNodeのユニットの空き状況を管理します。カレンダーインターフェースで空き状況ステータスを表示・更新できます。

予約を追加 /node/{node}/add-reservation

予約可能なNodeに新しい予約を作成します。

権限 6
BEE設定を管理

コンテンツタイプのBEE設定を構成できるようにします

BEE予約を作成

予約可能なNodeに予約を作成できるようにします

日単位空き状況イベントのカレンダーデータを表示

日単位の空き状況カレンダーデータの表示を許可します

時間単位空き状況イベントのカレンダーデータを表示

時間単位の空き状況カレンダーデータの表示を許可します

すべての{bundle} Nodeの空き状況を管理

コンテンツタイプごとに動的に生成 - このタイプのすべてのNodeの空き状況管理を許可します

自分の{bundle} Nodeの空き状況を管理

コンテンツタイプごとに動的に生成 - ユーザーが所有するNodeのみの空き状況管理を許可します

Hooks 3
hook_bee_reservation_price_alter

モジュールがBEE予約の計算価格を変更できるようにします

hook_form_node_type_edit_form_alter

BEEはこのフックを通じてNodeタイプ編集フォームに設定を追加します

hook_bat_api_events_index_calendar_alter

BEEは空き状況ステータスに基づいて表示色とラベルをカスタマイズするためにBATカレンダーイベントを変更します

Troubleshooting 6
空き状況カレンダーがNodeに表示されない

コンテンツタイプの設定でBEEが有効になっていることを確認してください。「field_availability_daily」または「field_availability_hourly」フィールドがNodeのビュー表示設定で適切なカレンダービューモードで表示されるように設定されているか確認してください。

予約への決済オプションを有効化できない

Commerceチェックアウトと決済モジュールがインストールされ有効化されている必要があります。また、決済を有効化する前に少なくとも1つのCommerce Storeが設定されている必要があります。

チェックアウト後に予約が作成されない

commerce_order.place.pre_transitionイベントがトリガーされていることを確認してください。BEE注文アイテムタイプが存在し、予約エンティティ参照フィールドが正しく設定されているか確認してください。

ユーザーが予約追加フォームにアクセスできない

ユーザーには「create bee reservation」パーミッションが必要です。適切なロールにパーミッションが割り当てられているか確認してください。

Nodeに空き状況タブが表示されない

ユーザーには特定のコンテンツタイプに対する「すべての{type} Nodeの空き状況を管理」または「自分の{type} Nodeの空き状況を管理」パーミッションが必要です。

営業時間が尊重されていない

時間単位予約タイプの場合、Node編集フォームで「営業時間を設定」チェックボックスが有効になっていて、Open Hoursフィールドに値が設定されていることを確認してください。

Security Notes 4
  • BEEは空き状況管理のきめ細かなアクセス制御を可能にするコンテンツタイプごとのパーミッションを実装しています
  • 「自分のNodeの空き状況を管理」パーミッションはユーザーを自分のコンテンツのみに制限し、マルチテナント機能を提供します
  • Commerce統合は決済処理に関する標準的なDrupal Commerceのセキュリティプラクティスに従っています
  • 予約フォームへのアクセスは「create bee reservation」パーミッションによって制御されます