web-dev-qa-db-ja.com

特定の日の(定期的な)イベントの座席予約

ユーザーに予約シート(またはテーブル全体)のイベントを許可し、Paypalを介して予約の支払いを行うを許可します。

さまざまなパフォーマンス/ショーが宣伝され、ユーザーは予約するテーブルまたは座席を選択できます。劇場ORバー、レストランなどは、座席とテーブルが「固定」されているため、変更されません(またはまれに)。イベントは繰り返し/繰り返しになる場合があります(例コンサート)-場合によっては、場所も同じままで、日付のみが変更されます(例:例バーで月に3回コンサートが再生されます)。ただし、1つのイベントを他の場所でも再生できます。

私は最初に Drupal.org を試してみましたが、返事がありませんでした;助けていただければ幸いです。

Ubercartに「バインド」する方法がない場合は、別の方法(Paypal IPN)で解決しますが、できるだけ早く行う必要があります。

PS:私はすでに試しました [〜#〜] merci [〜#〜]Simple Reservationbercartのホテル予約システム および 予約 モジュール(後者は写真から大丈夫に見えた)、しかし残念ながら私は必要なものと同様のことをする方法を理解することができなかった-しかし、これは何も意味しない、たぶん私はいくつかの機会を見逃していた!!!

これらのモジュールの1つで解決できると言ったら、助けてください!全く違う提案があっても!ありがとう!


更新:

その間、私はこの非常に興味深い記事を見つけました: bercartイベント登録
引用してみましょう:

現時点では、オンラインイベント登録を行うための事実上のUbercartメソッドは、C Node Checkoutと呼ばれるモジュールを使用します。1つに最適ですイベント登録サイトを完了しましたが、複数のイベントを同時に継続的にホストしているサイトの場合、これは扱いにくいものです。これは、コンテンツタイプを製品SKUにマップしているためです。イベントごとに、新しいコンテンツタイプを作成する必要があります。特に、サイト管理者がDrupalまたはUbercartに過度に精通していない場合)は、長期的にはあまりよくありません。

そのため、Webformsモジュールを使用して代替ソリューションが考案されました。 Webフォームは、登録者の組織の情報を格納します。また、必要なイベントへのチケット数を登録者に尋ねます。これは、クライアントが指定した使用例です。 Webフォームは、フォームを処理した後、イベント「チケット」をカートに追加します。これは、「追加の処理」の下にあるWebフォーム構成の「Webフォームの詳細設定」フィールドで行います。

知ってよかった。これは 以前に見つけた記事 が私が必要としているものを説明していないことを意味します。

c_event_registration's readme からの別の引用:

C Nodeチェックアウト

これは、Drupal会議で多く使用され、drupalconsでデモされた方法です。ここでの大きな問題は2つあります。最初に、登録はノードです。つまり、ビューを作成して作成する必要があります。登録リストとWebformの方がはるかに軽量の場合、不要なオーバーヘッドのように見えます。次に重要なのはEVERYイベントには新しいコンテンツタイプが必要です。いいえ、何十ものサイトで毎年のイベントでは、これは最終的に膨大な量のコンテンツタイプを意味します。

Webformsに関連する別の例を以下に示します。 Drupal動的選択ボックスを使用したWebformsチュートリアル これは非常に有望なようです。おそらくこれが Andyが提案した方法 です。
私はまだ実用的な解決策の提案に興味があります-おそらくこのように!

6
Sk8erPeter

私はあなたがあなたが必要とするものを100%実行する解決策を見つけるつもりはないと思います、私はここでカスタム開発が必要になると思います。

カスタムコンテンツタイプ(CCK)+ ubercart + Paypal(ubercart付き)のようなサウンドが最も柔軟なソリューションになります。おそらく、予約モジュールを読んで、利用可能なチケットの供給を制限する方法(つまり、売り切れ)を確認してください。

これはトリッキーになる可能性があるため、イベント登録のグラフィカルな部分を削除することをお勧めします。代わりに、アプリのcore機能、つまり登録と支払いのワークフローに焦点を当てます。

Drupalですべての問題を解決できますが、それらのいくつかは独特であり、独自の解決策があります。

これをすぐに解決する必要がある場合は、請負業者または深夜が必要になる可能性があります;)より質の高い回答を引き付けたい場合は、これに賞金をかけることを検討してください

2
wiifm

何らかのカスタム開発なしでは、100%の方法は得られないという点で、他の回答にも同意します。

これを解決するための私の最初の考えは、インターフェースについてあまり心配せず、データエンティティを正しく取得することです。私の製品には、最も基本的な2つの新しいフィールド(ノード参照と日付(またはイベントコンテンツタイプへの別のノード参照とイベントの再利用)の可能性がある会場)が本当に必要だと思います。在庫を使用して、イベントの会場で利用可能なチケットの数を指定します。製品キットは、個々の座席だけで構成されるテーブルであり、したがって在庫を管理し、それに関連付けられた割引もある可能性があります。

インターフェースに関する限り、「座席」と「テーブル」のカレンダービューを作成できます(テーブルは単なる製品キットです)。

[〜#〜] edit [〜#〜]:これに関するコメントスレッドの要旨を抽出するために、ここで要約します。

私たちがしなければならないことは次のとおりです。

  • 特定の場所での特定のイベントは、製品クラス/コンテンツタイプです。これらのコンテンツタイプにはすべて、イベント日付という1つのCCKフィールドがあります。
  • この製品クラスの新しいインスタンスを作成するときは、日付を指定し、それにONE属性(テーブル番号)を追加します。この属性の値は、イベントのテーブルの数に対応しています。

これが説明するワークフローは、顧客がイベントをカートに追加することを選択し、このプロセスの一部として、ユーザーが希望する座席番号と座席数を選択する必要があることです。

これにより、いくつかのことが可能になります。

  • 実際にテーブルの価格を変えることができます
  • テーブルレベルで在庫を管理できます。

これは、すぐに使用できる属性には独自のSKUがあるため、独自の在庫レベルと独自の価格設定があるためです。これにどのような属性があるかを考えると、理にかなっています。あなたが赤と青のシャツを持っているなら、あなたはあなたがそれぞれのどれだけ持っているか、すなわち在庫レベルを知る必要があります。大きいシャツの価格が小さいシャツよりも高い場合は、それらの価格設定方法を知っている必要があります。

これはワークフローとバックエンドについてのみ説明していることに注意してください。カスタムビルドフォームと同様に、他の回答で説明されているWebフォームを使用してインターフェイスを制御できます。これは単にデータエンティティを管理するためです。イベントを手動で作成する必要がありますが、この場合は少数のコンテンツタイプを使用することをお勧めします。プロセスをすばやくまとめて自動化することもできます( Node Import を参照)。このため、値をカスタマイズしたい場合は、他のいくつかのcontribモジュールで属性も処理できます)

いくつかのメモ:

このインスタンスで機能するインターフェイスは、実際の製品へのリンクを含む新しいコンテンツタイプ(必要に応じて、コンテンツタイプが会場ごとに異なるため、会場ごとに分割します)の単純なビューです。次に、日付といくつかのテーブルを選択できます。別のテーブルの座席を予約する場合は、カートに別の商品を追加する必要があります。

モジュール C Attribute Stock はここではあまり関係がないと思います。私の知る限り、複数の属性を1つの選択に結合するだけです。上記の赤と青の色と大小のサイズの例では、顧客が選択する必要がある2つのドロップダウンではなく、1つのドロップダウンに4つの選択肢があります。

ウェブフォームソリューションは、上記のものから除外されていません。それらはインターフェースを提供しており、登録から収集したい他の非製品データがある場合は意味があるかもしれません。ただし、これをチェックアウトペインからもう少し簡単に、現在のショッピングワークフローに合わせて収集できる場合があることに注意してください。ただし、特にフォームの前面にスマートなウィジェットを配置したい場合は、長期的に見れば、靴の角を張るウェブフォームよりも簡単で軽量なフォームを作成したいと思います。基本的なワークフローでは、あなたもそれを必要としているとは思いません。

2
Malks

私はツアー代理店でも同様のことをしました。私はUbercartの Hotel Booking モジュールを使用しました。各イベントは「部屋」であり、占有の制限を設定し、日によって料金を変えることができます。管理者側では、定期的に利用できる日を選択できるカレンダーがあります。さまざまな種類の[イベント]も開催できると思います。

唯一の問題は、Drupal 7の新機能であり、いくつかのバグがありましたが、今では改善されている可能性があります。

1
matt

他とは少し異なるアプローチ。個々の登録フォームに bercart Event Registration を使用できます。カスタムコーディングは、カスタムWebフォームウィジェット( webform_hooks.phpcomponentsディレクトリを参照してください)。これは、利用可能な場所のみを表示し、送信時に選択した場所を予約する責任があります。理由がわかった場合は、コンポーネントを上記の予約モジュールの1つと統合できます。これは他の方法よりも作業量が少ないとは思いませんが、Webフォームを使用するという点で少し異なるモデルです。 (そして私はあなたが最初にそれが内部でどう扱われるかについて決定したいというマルクスに完全に同意します。)

詳細:たとえば、既存のモジュールと統合するかどうか、必要かどうかなど、さまざまな方法があると思いますノードを使用する(ビューでレポートをすばやく作成するのに最適です)など。完全に特注の実装でそれを行う方法の簡単な説明を次に示します。

仮定:1つの予約は、日付と正の数の座席IDで構成されます。

  1. 予約用のWebフォームコンポーネントを提供するモジュールを作成します。
  2. モジュールは、予約の詳細を格納するためのDBテーブルも作成する必要があります。
  3. 派手なウィジェットを忘れるには、シンプルにするだけです(たとえば、日付のテキストフィールドと座席IDのテキストフィールドを用意します-最初はカンマ区切りのリストとして入力できます)。
  4. 検証時に、webformコンポーネントは、値が有効である(つまり、まだ予約されていない)ことをDBテーブルで確認します。
  5. 送信時に、webformコンポーネントは予約が利用可能かどうかを再度チェックし、利用可能であれば予約を行います。ここで、同時にリクエストを送信する2人のユーザーが同じ予約を行うことができない(たとえば、送信ハンドラーでロックを使用する)ことができないように注意します。
  6. ウィジェットに戻り、ファンシーにしてください。残りの予約がある日付のみを表示するNice JS日付ピッカーを使用します。おそらく、利用可能な座席を表示し、それらをきちんと選択できるようにするいくつかのセミグラフィカルテーブルがあります。しかし、その下では基本的に同じことをしています。

私はこのようなものをまだ試したことがないので、ただのアイデアです!

これはまだ非常にシンプルなシステムであり、現状ではデータを取り出すのは簡単ではありません。特注の管理画面を作成したり、ビューでdbテーブルを有効にしたりできます。

Webフォームの送信済みデータテーブルに送信が保存されるフォームごとに1つのノードのアイデアが必要でない限り、このアプローチを使用することは望ましくありません。この道を進む前に、これがあなたのニーズに合っていることを確認したいのです。

1
Andy

テーブルは商品として作るべきだと思います。

この関係があります:event1-> date1-> city1-> restraunt1-> table1

したがって、1は1対多の関係を指します。

各会場とテーブルおよびその他の属性に関する情報を含むVenueテーブルを用意する

市と会場の詳細を含む市テーブル

これを含むOrderBookingテーブルがあります:event1、date1、city1、venu-id、product-id

顧客はイベントからレストランまで閲覧し、利用可能な座席(製品)を確認します。製品を作成するためのリンクとともに(可用性)詳細を表示するモジュールを記述します。会場のリンクをクリックしたらすぐに、テーブル固有の詳細を要求するポップアップを準備し、製品フォームに移動して、製品の詳細をカスタムcckフィールドに自動入力します。次に、製品を購入しようとするときに、可用性をチェックするモジュールを作成し、支払い後にこの製品をOrderBookingテーブルに関連付けます。

登録データを収集するには、UC Node説明されているチェックアウトモジュール こちら を使用する必要があります。

私は単純化した見方をしました。

1
AgA

次のモジュールを確認できます: Booking Time Slots

名前が示すように、それはタイムスロット予約機能を提供します。ビューやカレンダーと統合します。

Drupal 7.xのサンプルスクリーンショットを確認してください:

Drupal 7.x - Booking Time Slots

詳細については、 予約システムモジュールの比較 を確認してください。

0
kenorb