マルチ通貨組織での取引通貨に基づくプロモーションの表示 (ベータ)
トランザクションの通貨に基づいてプロモーションを表示するには、このオプションの設定を完了します。デフォルトでは、組織でマルチ通貨を使用している場合、[カタログを参照] ウィンドウには、取引に関連付けられた取引先の通貨に基づいてプロモーションが表示されます。
必要なエディション
| 使用可能なインターフェース: Lightning Experience |
| 使用可能なエディション: Revenue Cloud Advancedライセンスが付属するRevenue CloudのEnterprise Edition、Unlimited Edition、およびDeveloper Edition |
| 必要なユーザー権限 | |
|---|---|
| コンテキスト定義をカスタマイズする | コンテキストサービス管理者 |
| フローをカスタマイズする | 「フローの管理」 |
重要
チャネルベースのプロモーションを設定していない場合にのみ、取引通貨に基づいてプロモーションを表示できます。を参照してください。
商品検出コンテキスト定義の設定
取引通貨に基づいてプロモーションを表示するように定義を変更します。
-
拡張商品検出コンテキスト定義を編集します。
- [設定] から、[コンテキスト定義] を見つけて選択します。
- [カスタム定義] をクリックします。
-
拡張商品検出コンテキスト定義をクリックします。
事前作成済みコンテキスト定義を使用している場合は、ProductDiscoveryContext コンテキスト定義を拡張します。
- [編集] をクリックします。
- [コンテキスト定義の編集] ページで、[次へ] をクリックします。
-
[構造を編集] ページで、Promotion__std の横にある [
] をクリックします。
- [名前] に「Transaction__c」と入力し、[次へ] をクリックします。
- [Transaction__c] をクリックします。
-
[属性を追加] をクリックし、通貨の詳細を追加します。
- [名前] に「ccycode__c」と入力します。
- [種別] で、[INPUT OUTPUT] を選択します。
- [データ型] で、[STRING] を選択します。
-
[属性を追加] をクリックし、アカウントの詳細を追加します。
- [名前] に「accountId__c」と入力します。
- [種別] で、[INPUT OUTPUT] を選択します。
- [データ型] で、[STRING] を選択します。
-
[属性を追加] をクリックし、ID の詳細を追加します。
- [名前] に「id__c」と入力します。
- [種別] で、[INPUT OUTPUT] を選択します。
- [データ型] で、[STRING] を選択します。
- [次へ] をクリックします。
-
[属性タグを編集] ページで、属性名をタグ名として追加します。
- accountId__c の横にある [Add Tags] をクリックします。
- [タグ名] に「accountId__c」と入力します。
- [完了] をクリックします。
-
この手順を繰り返して、ccycode__c と id__c のタグを追加します。
タグ名として属性名を使用します。
- 変更内容を保存します。
カスタムプロモーションの対応付けの作成
- [Map Data (データをマッピング)] タブを開きます。
-
[ProductDiscoveryPromoMapping] の横にある [
] をクリックし、[コピー] を選択します。
- 名前を入力し、変更を保存します。
- Account ノードと SalesTransaction ノード間の対応付けを削除します。
-
次のノードと属性を対応付けます。
商品検出コンテキスト Sales Transaction Context (販売トランザクションコンテキスト) Transaction__c SalesTransaction ccycode__c CurrencyIsoCode accountId__c 取引先 - 変更内容を保存します。
-
[ProductDiscoveryMapping] の横にある [
] をクリックし、[Edit Input Mapping] を選択します。
- [Generate Node Mappings (ノード対応付けを生成)] をクリックします。
- [Generate node mappings (ノードの対応付けを生成)] ウィンドウで、[Retain and Generate (保持して生成)] をクリックします。
- 変更内容を保存します。
- コンテキスト定義を有効化します。
Apex クラスの作成
フローアクションの Apex クラスを作成します。
-
[
] をクリックし、[開発者コンソール] を選択します。
- [ファイル] | [新規] | [Apex クラス] を選択します。
- 名前に「DiscoverProductFlowAction」と入力します。
-
次のコードを追加して、変更を保存します。
public class DiscoverProductFlowAction { // Define input parameters public class FlowInput { @InvocableVariable(required=false) public String objectApiName; @InvocableVariable(required=false) public String recordId; } // Define output parameters public class FlowOutput { @InvocableVariable public runtime_industries_cpq.ContextDataInput[] additionalContextData; } // This method is invoked from a flow @InvocableMethod(label='Process Input' description='Creates the Array of ContextDataInput for additional Context Data') public static List<FlowOutput> generateAdditionalContextData(List<FlowInput> inputs) { String objectApiName; String recordId; String ccyCode; String accountId; Quote quoteObject; Order orderObject; FlowOutput output = new FlowOutput(); // Capture input from the flow for(FlowInput input : inputs ){ objectApiName = input.objectApiName; recordId = input.recordId; } //Write logic to Query Currency from Transaction Entity if(objectApiName == 'Quote') { quoteObject = [SELECT CurrencyIsoCode,AccountId FROM Quote WHERE Id = :recordId LIMIT 1][0]; ccyCode = quoteObject.CurrencyIsoCode; accountId = quoteObject.AccountId; } else if(objectApiName == 'Order') { orderObject = [SELECT CurrencyIsoCode,AccountId FROM Order WHERE Id = :recordId LIMIT 1]; ccyCode = orderObject.CurrencyIsoCode; accountId = orderObject.AccountId; } //Populate the ContextDataInput list to store additional context data List<runtime_industries_cpq.ContextDataInput> listContextData = new List<runtime_industries_cpq.ContextDataInput>(); runtime_industries_cpq.ContextDataInput cd1 = new runtime_industries_cpq.ContextDataInput(); cd1.nodeName = 'Transaction'; //Where Quote is the name of the node in the context definition. cd1.nodeData = new Map<String,Object>(); cd1.nodeData.put('id',recordId); cd1.nodeData.put('ccycode',ccyCode); cd1.nodeData.put('accountId',accountId); listContextData.add(cd1); // Return the additional Context Data to a flow output.additionalContextData = listContextData; return new List<FlowOutput>{output}; } }
商品検出フローのカスタマイズ
- [設定] で、[フロー] を見つけて選択します。
-
商品検出フローを開きます。
デフォルトフローを使用している場合は、[商品を検出] を開きます。
-
[商品] リスト画面要素の前に、[
] をクリックし、[アクション] を選択します。
- 表示ラベルと API 参照名を入力します。
- [DiscoverProductFlowAction] を見つけて選択します。
- objectAPIName を有効にし、その値として objectAPIName を入力します。
- recordId を有効にし、その値として recordId と入力します。
- 変更内容を保存します。
- [Product list (商品リスト)] をクリックします。
- [Product List Page Container (商品リストページコンテナ)] をクリックします。
- [コンテキストデータ入力配列] 属性で、アクションの出力を選択します。
- 変更内容を保存します。
- フローを有効化します。
この記事で問題は解決されましたか?
ご意見をお待ちしております。

