在多重貨幣組織中根據交易貨幣顯示促銷 (Beta 版)
完成此選用設定以根據交易的貨幣顯示促銷。依預設,當您在組織中使用多種貨幣時,「瀏覽目錄」視窗會根據與交易相關聯帳戶的貨幣顯示促銷。
必要版本
| 適用於:Lightning Experience |
| 提供版本:具有 Revenue Cloud Advanced 授權的 Revenue Cloud Enterprise、Unlimited 及 Developer Edition,以及全球促銷管理基本附加元件授權或 Loyalty Management - Growth 或 Starter 授權。 |
| 所需的使用者權限 | |
|---|---|
| 自訂內容定義: | 內容服務管理員 |
| 自訂流程: | 管理流程 |
重要
只有在您尚未設定以管道為基礎的促銷時,才能根據交易貨幣顯示促銷。
設定產品探索內容定義
變更定義以根據交易貨幣顯示促銷。
-
編輯延伸的「產品探索」內容定義。
- 進入「設定」,尋找並選取「內容定義」。
- 按一下「自訂定義」。
-
按一下延伸的「產品探索」內容定義。
如果您使用預先建立的內容定義,請 擴充您的 ProductDiscoveryContext 內容定義。
- 按一下「編輯」。
- 在「編輯內容定義」頁面上,按一下「下一步」。
-
在「編輯結構」頁面上,按一下 Promotion__std 旁的
。
- 針對「名稱」,輸入 Transaction__c,然後按一下「下一步」。
- 按一下 Transaction__c。
-
按一下「新增屬性」,然後新增貨幣詳細資料。
- 針對「名稱」,輸入 ccycode__c。
- 針對「類型」,選取「INPUT OUTPUT」
- 針對「資料類型」,選取「字串」。
-
按一下「新增屬性」,然後新增帳戶詳細資料。
- 針對「名稱」,輸入 accountId__c。
- 針對「類型」,選取「INPUT OUTPUT」。
- 針對「資料類型」,選取「字串」。
-
按一下「新增屬性」,然後新增識別碼詳細資料。
- 針對「名稱」,輸入 id__c。
- 針對「類型」,選取「INPUT OUTPUT」。
- 針對「資料類型」,選取「字串」。
- 按一下「下一步」。
-
在「編輯屬性標記」頁面上,將屬性名稱新增為標記名稱。
- 在 accountId__c 旁邊,按一下「新增標記」。
- 針對標記名稱,輸入 accountId__c。
- 按一下「完成」。
-
重複這些步驟以新增 ccycode__c 和 id__c 的標記。
使用屬性名稱作為標記名稱。
- 儲存您的變更。
建立自訂促銷對應
- 開啟「地圖資料」索引標籤。
-
在「ProductDiscoveryPromoMapping」旁邊,按一下
並選取「複製」。
- 輸入名稱,然後儲存您的變更。
- 刪除帳戶節點與 SalesTransaction 節點之間的對應。
-
對應這些節點與屬性。
產品探索內容 銷售交易內容 Transaction__c SalesTransaction ccycode__c CurrencyIsoCode accountId__c 帳戶 - 儲存您的變更。
-
在「ProductDiscoveryMapping」旁邊,按一下「
」,然後選取「編輯輸入對應」。
- 按一下「產生節點對應」。
- 在「產生節點對應」視窗中,按一下「保留並產生」。
- 儲存您的變更。
- 啟用您的內容定義。
建立 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}; } }
此文章是否解決您的問題?
請讓我們知道,以便我們改進!


