トランザクションマネージャー:日付/時刻のフィールド

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:6分
  • トランザクションマネージャーの日時フィールドについて説明します。

    CPQでは、日付と時刻は、契約またはサブスクリプションの有効期間、更新期限、および価格設定の経時的な適用方法を決定するために重要です。

    期間の計算をサポートしたり、イベントを監査したりするために、新しい日付または日付/時刻フィールドが導入される場合があります。

    期間の計算では、契約期間、開始日と終了日、更新、および長さが計算されます。空白または null の日付は、用語の精度に影響を与える可能性があります。現在の日付やエラーフラグなどのシステムのデフォルトは、欠落している日付を処理できます。

    監査イベントでは、見積もり、支払い、契約署名などのアクティビティを追跡できます。日付がない場合、データが不完全であることを示す可能性があるため、レビューのためにフラグを付ける必要があります。

    次の例は、エンドユーザー UI で日付と時刻のフィールドがどのように表示されるかを示しています。

    • 日付のみのカレンダー表示: 1 月カレンダー画面
    • 日時入力: タイムスロットを選択
    • 日付のみ: YYYY-MM-DD ( 例:2024-11-07)
    • 日付と (オプション) 時刻: YYYY-MM-DDTHH:MM:SS (例: 2024-10-22T14:30:00)

      アドミニストレーターは、時間コンポーネントを含めるかどうかを決定できます。

    日付のみのフィールドはタイムゾーンに依存しません。タイムゾーンの不一致を避けるため、日付と時刻は協定世界時 (UTC) で保存されます。

    新しい日付/時刻フィールドを作成

    1. [管理] から、[ トランザクション]、[ 関連フィールド]、[ + フィールドの作成] の順にクリックします。

      フィールドを作成

    2. ダイアログボックスで、フィールドの名前を入力します。[タイプ] を [日付/時刻] に設定し、[ 保存] をクリックします。

      タイプの選択

    3. フィールドを開き、ユースケースに基づいてアクセス権を設定し、[ 保存] をクリックします。

      デフォルトアクセス

    バイサイドインターフェイスに新しい日付と時刻のフィールドを表示する

    エンドユーザー UI に表示するには、詳細計画のレイアウトにフィールドが含まれている必要があります。レイアウトは JSON 入力ファイルによって定義されます。このファイルを変更することで、エンドユーザーの UI を変更できます。

    サンプル JSON ファイル

    [テスト日ドキュメント] フィールドをレイアウトに追加するには、次の手順に従います。

    1. [管理] から、[ トランザクション]、[ レイアウト]、ステージの名前の順にクリックします。

      トランザクション画面

    2. レイアウト JSON は 2 か所で編集する必要があります。
      • [フィールド] セクションで、type、label、および variableName パラメーターを使用して新しい日付フィールドを追加します。以下の例では、既存のフィールド [開始日] の下に [テスト日ドキュメント] を追加します。新しいフィールドのコードを記述するときは、変数名が関連付けられたフィールドの変数名と正確に一致していることを確認してください。
        注:
        この例では、日付のみを表示するフィールドを使用しているため、レイアウト JSON のタイプは 「type":"Date」です。時間も表示するフィールドを作成するには、タイプを 「type":「DateTime」にする必要があります。

        コード

      • 「layout」: "tiers": "columnSets": セクションで、「elements」セクションの新しいフィールドの列順序を定義します。変数名がまったく同じであることを確認してください。

        列

    3. [ 保存] をクリックし、[ 展開] をクリックします。
    4. 新しいトランザクションを作成し、[ トランザクションの編集] をクリックします。新しいフィールドは次のようになります。

      列コード

    ルールでの日付の計算

    期間の計算により、契約、サブスクリプション、または価格設定契約の期間を決定できます。監査の目的でデータを計算し、出力を別のフィールドに表示する必要がある場合があります。次の例では、購入側 UI で利用可能な開始日と終了日を考慮し、日付の差を月と日数で計算します。「サブスクリプション期間」と呼ばれる別のフィールドに値が表示されます。

    1. CPQ管理画面で、[関連ルール]、[新しいルール] の順にクリックします。ルールの名前を入力し、条件を定義します。この例では、ルールに「サブスクリプション期間日を計算」という名前を付け、その条件を「開始日」にします。「終了日」を null にすることはできません。

      [サブスクリプションを計算] 画面

    2. 別のフィールドの値を決定するには、決定アクションを追加し、[詳細スクリプト] セクションにスクリプトファイルを指定します。次のスクリプトスニペットで計算が実行されます。
      // Script calculates the difference between start and end dates in months and days and displays the output in Subscription Term (Months).
      
      var yearsDiff = txn.custom.endDate.getFullYear() - txn.custom.startDate.getFullYear();
      var monthsDiff = txn.custom.endDate.getMonth() - txn.custom.startDate.getMonth();
      var totalMonths = yearsDiff * 12 + monthsDiff;
      
      var startDay = txn.custom.startDate.getDate();
      var endDay = txn.custom.endDate.getDate();
      var daysInMonth = new Date(txn.custom.endDate.getFullYear(), txn.custom.endDate.getMonth() + 1, 0).getDate();
      var dayFraction = (endDay - startDay + 1) / daysInMonth;
      
      totalMonths += dayFraction;
      
      return Math.floor(totalMonths * 1000) / 1000;

      スクリプトエディターにスクリプトを入力し、[ 保存] をクリックします。

      契約日画面

    3. 新しく作成されたルールを詳細計画に関連付けます。[ ルールのグループ化] に移動し、ルールを適用するステージの名前 (この場合は draftStageRuleGroup) に移動します。[ ルールの関連付け] をクリックし、ルールの名前を検索します。ルールを左ペインにドラッグし、[ 完了] をクリックして展開します。

      [契約日] 画面

    4. 開始日と終了日の値を指定して、購入側インターフェイスで機能をテストします。サブスクリプション期間は、スクリプトに基づいて自動入力されます。

      契約情報画面

    スクリプトでの日付と時刻のフィールドの動作

    空白または null の日付は、別の空白の値と比較されない限り、FALSE として比較されます。

    • date123 = "": TRUE
    • date123 != "": FALSE

    <、<=、>、>=、=、!= の比較がサポートされています。空白または null の日付を含む比較は、常に FALSE と評価されます。日付フィールドのデフォルト値は、指定しない限り空 (null) です。

    アグリゲート操作:

    • 最大:最新の日付を検索
    • 最小:最も早い日付を検索
    • カウント:空でない日付値をカウントします

    SumAvg はコンパイル時エラーをトリガーする可能性があるため、お勧めしません。