顧客が選択した複数の値に基づくイベントの料金計算

顧客が選択した複数の値に基づくイベントの料金計算

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

要件

予約された日付と時間、および参加人数に基づいて、物件のレンタル見積書を作成する。

ユースケース

ホテルのパーティーホールを貸し出すとします。ホールの料金体系は次のとおりです。
曜日
基本料金
(USD)
標準ゲスト人数
(人数)
追加ゲスト1人あたりの料金
(USD)
標準利用時間
(時間)
追加1時間・1人あたりの料金
(USD)
月曜~木曜
5200
50
80
5
7
金曜・日曜
6500
50
80
5
7
土曜
7500
50
80
5
7

 
ここで、このホテルの管理アプリにパーティーホール予約用のフォームがあるとします。パーティーホールを予約したいユーザーが、想定ゲスト人数とイベントの時間を入力すると、上記の条件に基づいてイベントの合計料金が自動計算されます。

手順

1. フォームを作成 し、次の詳細を設定します。
フォーム
フォームリンク名
項目タイプ
項目名
項目リンク名
パーティーホールを予約
Book_Party_Hall
名前
名前
名前
メール
メール
メール
数値
ゲスト数
Guest_Count
日付-時間
イベント開始時刻
Event_Start_Time
日付-時間
イベント終了時刻
Event_End_Time
通貨
合計費用
Total_Cost
 
合計費用 項目は、 ゲスト数、イベント開始時刻、 および イベント終了時刻 項目に基づいて見積もられます。正確に計算するために、 これら3つの項目を必須に設定します
 
2. フォームワークフローを作成 し、次の詳細を設定します。
 
3. 合計費用 項目には、計算された値が自動入力されます。そのため、この項目はフォーム読み込み時に無効になります。次のDelugeスクリプトをDelugeエディターに保存します。
  1. 無効にする Total_Cost;
 
4. 別のフォームワークフローを作成 し、次の詳細を設定します。

5. 次のDelugeスクリプトをDelugeエディターに保存します。
  1. // 以下の条件を満たす場合にのみ見積もり計算を実行する
  2. if(Event_Start_Time != null && Event_End_Time != null && Event_Start_Time < Event_End_Time && Guest_Count != null)
  3. {
  4.  
  5. // 基本パッケージの詳細を定義する
  6. monday_to_thursday_cost = 5200;
  7. friday_sunday_cost = 6500;
  8. saturday_cost = 7500;
  9. standard_guests = 50;
  10. standard_hours = 5;
  11.  
  12. // 追加料金を定義する
  13. cost_per_extra_guest = 80;
  14. cost_per_extra_hour_per_guest = 7;
  15.  
  16. // イベントが実施される曜日を取得する
  17. day = input。Event_Start_Time。getDayOfWeek();
  18.  
  19. // イベントの曜日に基づいて費用を設定する
  20. if(day == 7)
  21. {
  22. 費用 = saturday_cost;
  23. }
  24. else if(day == 6 || day == 1)
  25. {
  26. 費用 = friday_sunday_cost;
  27. }
  28. else
  29. {
  30. 費用 = monday_to_thursday_cost;
  31. }
  32.  
  33. // 追加のゲストに対して追加料金を請求する
  34. if(Guest_Count > 50)
  35. {
  36. extra_guests = input。Guest_Count - standard_guests;
  37. 費用 = 費用 + cost_per_extra_guest * extra_guests;
  38. }
  39.  
  40. // イベント時間数を計算する
  41. event_hours = ((input。Event_End_Time - input。Event_Start_Time)) / (1000 * 3600);
  42.  
  43. // 追加時間に対して追加費用を請求する
  44. if(event_hours > 5)
  45. {
  46. extra_hours = event_hours - standard_hours;
  47. 費用 = 費用 + cost_per_extra_hour_per_guest * extra_hours * input。Guest_Count;
  48. }
  49. input。Total_Cost = 費用;
  50. }

次に、 ゲスト件数 項目と 開始時間 項目の入力に基づいて合計費用を再計算します。これは、ユーザーがゲスト件数や開始時間を再入力した場合でも、正しい 合計費用 が見積もられるようにするためです。
 


 
7. Deluge エディターで、 手順 5 と同じ Deluge スクリプトを保存します。

動作を確認する


注意点

  • このチュートリアルでは、日付、時間、イベントの参加人数に基づく複雑な料金体系で貸し出される 1 つのパーティーホールの費用計算方法を説明しています。そのため、簡略化のために、基本料金はスクリプト内にハードコードされています。同様の料金体系だが料金が異なる複数のパーティーホールにこのスクリプトを適用するには、基本料金と追加料金を管理用フォームに保存し、 料金を取得 して、選択されたパーティーホールに応じて必要なタイミングで使用してください。
     
  • このチュートリアルでは、開始時間と終了時間の時間差は、 hoursBetween 組み込み関数ではなく、数式を使用して計算しています。これは、この関数の想定された動作が、分の差に基づいて時間値を四捨五入せず、かつ正確な小数値も返さないためです。

    例:
     
    start_time = '18-Dec-2019 07:00:00';
    end_time = '18-Dec-2019 08:59:59';
    total_hours = hoursBetween(start_time, end_time);

    この場合、 total_hours の値は 1 となりますが、実際の時間差は 1 時間 59 分です。そのため、 hoursBetween 関数を使用すると、イベントが 1 時間 59 分続いた場合でも、顧客には 1 時間分の料金しか請求されません。

  • Zoho Creator 以外のサービスでは、 timeBetween 組み込み関数を使用して、2 つの日付時刻値間の正確な時間差を求めることができます。この機能は、今後 Zoho Creator でもサポート予定です。それまでは、次の数式を使用して、 timeBetween 関数と同等の結果を得ることができます。

    start_date = '1-Jun-2021 00:00:07';
    end_date = '24-Jun-2021 12:12:14';
    difference_in_ms = (end_date-start_date);
    時間 = difference_in_ms / (1000 * 60 * 60);
    mins = (difference_in_ms / (1000 * 60)) % 60;
    secs = (difference_in_ms/ 1000)% 60;
    info 時間。floor()+':'+ mins。floor() + ':' + secs。floor();