条件とアクションを入念に設定する
学習の目的
この単元を完了すると、次のことができるようになります。
- 条件とアクションで基本的な数式を使用する価格ルールを作成する。
- Salesforce の主要なツールを使用して数式構文を確認する。
- 条件とアクションにおける数式の制限について説明する。
相対関係の参照
前の単元で価格ルールを作成したとき、最初の価格条件で見積の AccountIndustry__c 項目が評価されるように設定しました。そのために、[Object (オブジェクト)] 項目と [Field (項目)] 項目に適切な値を選択しました。
オブジェクト/項目の組み合わせでは、見積、見積品目、または商品オプションの各オブジェクトの項目のみを特定できます。そのため、Trailhead チームは見積オブジェクトに AccountIndustry__c 数式項目を作成する必要がありました。見積レコードにデータを取り込むために数式項目を使用しても正常に動作しますが、カスタム項目要件を回避する別の方法もあります。
この別の方法を説明するために、新しいユースケースを想定してみましょう。AW Computing は、新規顧客に SD カードを一律 25 ドル値下げした 1 回限りの紹介価格で提供したいと考えています。同社は、商談の [Type (種別)] 選択リストを [New Customer (新規顧客)] に設定することで、すでに新規顧客を識別しています。価格ルールが実行されるかどうかは、この項目によって決定される必要があります。
このルールでは、カスタム項目を使用して見積に種別を取り込む代わりに、テスト対象数式と呼ばれるものを使用して、商談から種別を直接参照します。テスト対象数式の使用方法を、新しい価格ルールを作成するところから確認しましょう。
- ナビゲーションバーで、[Price Rules (価格ルール)] をクリックします。
-
[New (新規)] をクリックします。
- [Price Rule Name (価格ルール名)] に、
New Customer SD Card List Price
(新規顧客の SD カードリスト価格) と入力します。
- [Evaluation Scope (評価範囲)] で [Calculator (計算機能)] を選択します。
-
[有効] チェックボックスをオンにします。
-
[Save (保存)] をクリックします。
これで、価格ルールレコードが設定されました。次は商談の種別項目の値が新規顧客であるかどうかをテストする条件を作成します。
- [Price Conditions (価格条件)] 関連リストで、[New (新規)] をクリックします。
- [Object (オブジェクト)] で [Quote (見積)] を選択します。
[Quote (見積)] を選択すると、どのオブジェクトにテスト対象数式で使用可能な項目が含まれているかを CPQ に指示できます。この項目は次の手順で入力します。
- [Tested Formula (テスト対象数式)] に
SBQQ__Opportunity2__r.Type
と入力します。
これは、「数式と入力規則」バッジで学習するような基本的なクロスオブジェクト数式です。クロスオブジェクト数式では、参照項目 (SBQQ__Opportunity2__c など) を使用して関連オブジェクトのデータを参照します。
- [Operator (演算子)] で、[equals (次の文字列と一致する)] を選択します。
- [Filter Type (検索条件種別)] で [Value (値)] を選択します。
- [Filter Value (条件値)] に
New Customer
(新規顧客) と入力します。
-
[Save (保存)] をクリックします。
この価格条件では、前の単元の条件と同じように 2 つのデータが比較されますが、一方のデータがまったく別の (ただし、関連する) オブジェクトから取得されている点が異なります。
関連データを参照することは適切な方法ですが、価格アクション数式には見積、見積品目、または見積品目グループに直接関連するオブジェクトのデータのみしか参照できない可能性があるという大きな制限があります。つまり、SBQQ__Opportunity2__r.Type
の場合は見積の商談への参照があるため問題ありませんが、SBQQ__Opportunity2__r.CampaignId.Type
の場合は、見積、見積品目、または見積品目グループのキャンペーンオブジェクトへの参照がないため問題があります。
この注意点はひとまず置いておいて、今度は商品が SD カードかどうかを確認する別の価格条件を作成しましょう。
- [Price Conditions (価格条件)] 関連リストで、[New (新規)] をクリックします。
- [Object (オブジェクト)] で [Quote Line (見積品目)] を選択します。
- [Field (項目)] で [Product Code (商品コード)] を選択します。
- [Operator (演算子)] で、[starts with (次の文字列で始まる)] を選択します。
- [Filter Type (検索条件種別)] で [Value (値)] を選択します。
- [Filter Value (条件値)] に
SDCARD
と入力します。
-
[Save (保存)] をクリックします。
これで価格条件が整いました。次は価格アクションに取りかかりましょう。
便利な計算機能を使用した価格アクション
AW Computing は SD カードの価格表の価格を -25 ドル調整し、その値を価格表に使用したいと考えています。前回のルールと同じように、SBQQ__ListPrice__c をこの価格アクションの対象にします。ただし、前回のルールとは異なり、価格アクションの値項目に 400 と入力することはできません。代わりに、値項目をスキップして数式項目を使用します。それでは、新しい価格アクションを作成して、どのようになるのか見てみましょう。
- [Price Actions (価格アクション)] 関連リストで、[New (新規)] をクリックします。
- [Target Object (対象オブジェクト)] で [Quote Line (見積品目)] を選択します。
- [Target Field (対象項目)] で [SBQQ__ListPrice__c] を選択します。
- [Formula (数式)] に、
SBQQ__OriginalPrice__c - 25
と入力します。
[Formula (数式)] は、カスタム数式項目のような構文を使用するもう 1 つの CPQ 項目です。つまり、マイナス記号のような算術演算子を使用できます。この式では [Original Price (元の価格)] という API 参照名を使用していますが、これは価格表の価格を表しています。
-
[Save (保存)] をクリックします。
これで、もう 1 つの価格ルールが完成しました。このルールは、新規顧客向けに作成された見積であれば、どの SD カード見積品目にも適用されます。そのような見積の 1 つでテストしてみましょう。
- ナビゲーションバーで、[Quotes (見積)] をクリックし、[All (すべて)] リストビューを選択します。
-
[Q-00049] をクリックします。
-
[Edit Lines (品目の編集)] をクリックします。
-
[Add Products (商品を追加)] をクリックします。
-
[ROUTER (ルーター)] と [SDCARD256GB] を確認します。
SD カードの価格は影響を受けますが、ルーターの価格は影響を受けません。これは、条件の 1 つに対してネガティブテストを行う簡単な方法です。
-
[選択] をクリックします。
- SDCARD256GB 見積品目の見積品目ドロワー矢印 () をクリックします。
これにより、[Original Price (元の価格)] などの追加の価格項目が表示され、85 ドルとなります。リスト単価は 60 ドルであるため適切です。計算は問題ありません。また、ルーターの他の見積品目もこのルールの影響を受けることはありません。
-
[キャンセル] をクリックします。
通常、実際の業務では、商談の種別項目が「新規顧客」でない場合にルールが実行されないことを確認するためにテストする必要があります。ただし、ここでは行いません。
数式を慎重に記述する
このシナリオで使用されている数式は、意図的に単純な数式になっています。ただし、実際には、項目や算術演算子とともに関数が含まれる非常に複雑な数式になることがあります。
少しでも複雑な数式を記述したことがあれば、構文がいかに間違いやすいものかご存じだと思います。カスタム数式の設定ページに [Check Syntax (構文を確認)] ボタンがあるのは、そのためです。残念なことに、価格条件と価格アクションを作成するときには、[Check Syntax (構文を確認)] ボタンはありません。更に悪いことに、数式に間違った構文を使用した条件やアクションを保存できてしまいます。その結果、見積品目エディターにエラーメッセージが表示され、見積品目が追加できなくなるため、これは大問題となります。
幸いにも、構文を確認するための便利なテクニックがあります。つまり、コア Salesforce にある [Check Syntax (構文を確認)] ボタンを使用します。
少々手間がかかりますが、新しい数式項目を作成するふりをすることでボタンを表示できます。
-
をクリックして [設定] をクリックします。[Setup (設定)] ページが新しいタブで開きます。
-
[Object Manager (オブジェクトマネージャー)] をクリックします。
-
[Quote Line (見積品目)] をクリックします。
-
[Fields & Relationships (項目とリレーション)] をクリックします。
-
[New (新規)] をクリックします。
-
[Formula (数式)] をクリックします。
-
[Next (次へ)] をクリックします。
- [Field Label (項目の表示ラベル)] に、
Check Syntax
(構文を確認) と入力します。
項目を保存するわけではないため、どのような名前をつけても構いません。ただし、一意の名前にしてください。
- [Formula Return Type (数式の戻り値のデータ型)] で [Currency (通貨)] を選択します。
-
[Next (次へ)] をクリックします。
この時点で、必要なだけ数式を記述して確認できるページが表示されています。正しい数式を記述できたら、強調表示してコピーします。別のタブで、新しい価格アクションを作成し、コピーした内容を数式項目に貼り付けます。価格アクションを保存したら、一時的な数式項目は保存する必要がないため、[Setup (設定)] タブを閉じます。
上記の手順で数式項目を作成するふりをする場合は、手順 3 で選択するオブジェクトが異なります。価格条件のオブジェクト項目 (アクションを作成する場合は対象オブジェクト項目) と一致するオブジェクトを選択する必要があります。上記の例では、手順 3 で見積品目を選択するように指示されます。これにより、SBQQ__OriginalPrice__c などの見積品目オブジェクトで利用可能な項目を使用して、数式を作成できるようになります。
ほとんどの場合、コアの [Check Syntax (構文を確認)] ボタンを使用するテクニックは効果的ですが、常に上手くいくわけではありません。Salesforce のコア関数の中には、CPQ でサポートされていないものやグローバル変数でないものもあります。たとえば、価格アクションで ADDMONTH() 関数を使用すると、見積品目エディターで更に別のエラーメッセージが表示されます。つまり、適切な構文で数式を作成することは可能ですが、CPQ ではその数式を処理できません。サポートされていない関数の一覧は、ヘルプ記事「Salesforce CPQ Advanced Calculator supported formulas (Salesforce CPQ の高度な計算機能でサポートされている数式)」で確認できます。
数式は強力なツールですが、注意を払う必要があります。価格条件や価格アクションに数式を使用するたびに、常に作業を徹底的にテストしてください。
リソース
-
Salesforce ヘルプ: Salesforce CPQ Advanced Calculator supported formulas (Salesforce CPQ の高度な計算機能でサポートされている数式)
-
Trailhead: 数式と入力規則