Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む
学習
目次
絞り込み条件を選択

          結果がありません
          結果がありません
          検索のヒントをいくつかご紹介します

          キーワードの入力ミスがないか確認する。
          より一般的な検索語を使用する。
          絞り込み条件を減らして、検索範囲を広げる。

          Salesforce ヘルプ全体を検索
          高度な取引詳細品目価格設定を使用したカスタム項目の対応付け

          高度な取引詳細品目価格設定を使用したカスタム項目の対応付け

          ユーザーは、高度な詳細品目価格設定機能を使用して、価格設定手順を通じて販売取引品目または販売取引品目の詳細のカスタム項目を更新できます。この機能を使用すると、ユーザーはカスタムトリガーやフローを使用してこれらの項目を更新する必要がなくなります。この機能は、修正、更新、キャンセルの使用事例に役立ちます。

          必要なエディション

          使用可能なインターフェース: Lightning Experience
          使用可能なエディション: トランザクション管理が有効になっている Revenue Cloud の Enterprise Edition、Unlimited Edition、および Developer Edition
          必要なユーザー権限
          高度な詳細品目価格を設定して使用する

          Salesforce システム管理者

          および

          「価格設定設計時ユーザー」権限セット

          開始する前に、次の作業を完了します。

          • Advanced Detail Line Pricing 機能を有効にするには、[設定] で [収益設定] を見つけて選択し、[Advanced Detail Line Pricing] 設定を有効にします。
          • 価格設定手順を設定します。

          収益価格設定手順の更新

          高度な詳細品目価格を設定するには、収益価格設定手順を変更します。

          1. アプリケーションランチャーから、[Pricing Procedures]を見つけて選択し、更新する価格設定手順を選択します。
          2. 価格設定手順の価格設定の横に 2 番目の要素として新しい地図品目要素を追加して、価格設定手順を変更します。
          3. コンテキストタグの対応付けを地図品目に追加します。

            入力変数

            出力変数

            LineItem

            SalesTrxnItemDetailSource

            LineItemQuantity

            ItemDetailQuantity

            NetUnitPrice

            ItemDetailNetUnitPrice

            price_water_fall

            DetailPriceWaterfallIdentifier

            InputUnitPrice

            ItemDetailUnitPrice

            ItemBillingReference

            ItemDetailBillingReference

            ItemNetTotalPrice

            ItemDetailTotalPrice

            TotalLineAmount

            ItemDetailTotalLineAmount

            EffectiveFrom

            ItemDetailEffectiveFrom__std

            EffectiveTo

            ItemDetailEffectiveTo__std

            PricingTermCount

            ItemDetailPricingTermCount__std

            itemTransientEndDate

            ItemDetailTransientEndDate__std

            ItemPricingSource

            ItemDetailPricingSource__std

            DerivedPricingAttribute

            ItemDetailDerivedPricingAttribute__std

            ItemGroupSummarySubtotal

            ItemDetailGroupSummaryTotal__std

            ListPrice

            ItemDetailListPrice__std

            IsContracted

            ItemDetailIsContracted__std

            ItemContractPrice

            ItemDetailContractPrice__std

            STI_TenantName__c

            STID_TenantName__c

            コンテキストタグの対応付けを追加すると、SalesTransaction と SalesTransactionItemDetail 間のデフォルトの対応付けと更新されたコンテキスト定義が表示されます。

          派生価格設定検出手順の更新

          派生価格設定を使用している場合は、収益価格設定手順の変更を完了した後に検出手順をさらに変更します。これらの変更は、有効な貢献商品と派生商品を決定するために必要です。

          1. アプリケーションランチャーから、[Discovery Procedures (検出手順)] を見つけて選択し、更新する検出手順を選択します。
          2. 検出手順に 2 つの新しい要素 ([検出設定] と [Map Line Item (品目の対応付け)]) を追加して、派生商品の価格を設定します。
            次の変数を検出設定に追加します。
            • 入力変数: Line Item
            • 出力変数: LineItem
            次の変数を地図品目に追加します。
            • 入力変数: SalesTransactionItem
            • 出力変数: SalesTransactionItemDetail

            次の追加変数を対応付け品目に追加します。

            入力変数

            出力変数

            LineItem

            SalesTrxnItemDetailSource

            EffectiveFrom

            ItemDetailEffectiveFrom__std

            EffectiveTo

            ItemDetailEffectiveTo__std

            DerivedPricingAttribute

            ItemDetailDerivedPricingAttribute__std

          3. 修正、更新、キャンセル (ARC) の使用事例の価格設定手順を使用して、カスタム項目をサポートします。
            カスタム項目の設定は、ARC API を使用し、カスタム項目を使用する場合に適用されます。
            1. QuoteLineItem、QuoteLineItem Detail、OrderProduct、OrderProductDetails オブジェクトにカスタムフィールドを追加します。
            2. コンテキスト定義で、SalesTransactionItem ノードと SalesTransactionItemDetail ノードの両方でこれらのカスタム項目のエントリを作成します。
            3. QuoteEntitiesMapping と OrderEntitiesMapping で必要な対応付けを作成します。
          4. カスタム項目の収益価格設定手順を変更します。
            1. 価格設定手順で、SalesTransactionItem.CustomField と SalesTransactionItemDetail.CustomField 間の対応付けを追加するように MapLineItem 要素を変更します。
            2. 価格設定手順内で必要なカスタマイズ要素を作成し、値を SalesTransactionItem.CustomField に割り当てます。

              価格設定手順では、特定の品目に詳細エントリがあるかどうかが自動的に検出され、存在する場合は SalesTransactionItemDetail.CustomField に書き込まれます。それ以外の場合は、SalesTransactionItem.CustomField に書き込まれます。

              新規販売トランザクション中に、SalesTransactionItem の CustomField が入力されます。ARC シナリオに詳細行がある場合、詳細行は SalesTransactionItemDetail の CustomField に書き込まれます。ARC の詳細品目が作成されていない場合、詳細品目は SalesTransactionItem の CustomField に書き込まれます。

          5. QuoteLineItem または OrderProducts に詳細行を含むカスタム項目を記述するには、プロシージャ プランと Apex クラスを含むこの追加の設定を実行します。
            1. 処置計画を有効にします。[設定] で、[収益設定] を見つけて選択し、[Procedure Plan Orchestration for Pricing (価格設定のプロシージャプランオーケストレーション)] 設定を有効にします。
            2. 見積と注文の手順プランを作成します。
            3. 処置計画で、すべてのステップに MapLineItem 要素が含まれていることを確認します。価格設定手順で使用されるフィールドに基づいてマッピングを変更します。
            4. 次の ApexCustomFieldHandler Apex クラスの例を使用します。必要に応じて、複数のカスタム項目を更新するように拡張できます。このクラスは SalesTransactionItem ノードと SalesTransactionItemDetail ノードを照会し、詳細項目からカスタム項目値を抽出して、SalesTransactionItem の対応するカスタム項目を更新します。
          例
          global class ApexCustomFieldHandler implements RevSignaling.SignalingApexProcessor {
          
              public virtual class BaseException extends Exception {}
              public class OtherException extends BaseException {}
              
              public RevSignaling.TransactionResponse execute(RevSignaling.TransactionRequest request) {
                  
                  String contextId = request.ctxInstanceId;
                  Context.IndustriesContext industriesContext = new Context.IndustriesContext();
                  
          
                  // STEP 2 - Query SalesTransactionItem nodes
                  Map<String, Object> inputQueryItem = new Map<String, Object>{
                      'contextId' => contextId,
                      'tags' => new List<String>{ 'SalesTransactionItem', 'SalesTransactionItemDetail' }
                  };
                  Map<String, Object> itemQueryOutput = industriesContext.queryTags(inputQueryItem);
                  Map<String, Object> itemQueryResult = (Map<String, Object>) itemQueryOutput.get('queryResult');
                  List<Object> itemData = (List<Object>) itemQueryResult.get('SalesTransactionItem');
                  List<Object> itemDetailData = (List<Object>) itemQueryResult.get('SalesTransactionItemDetail');
          
          
                  Map<String, String> salesTransactionItemIdToCustomAggregatedValue = new Map<String, String>();
                  
                  // STEP 3 - Custom Field Value from SalesTransactionItemDetail
                  for(Object itemDetailObj : itemDetailData) {
                      Map<String, Object> itemDetailNode = (Map<String, Object>) itemDetailObj;
                      Map<String, Object> detailTagMap = (Map<String, Object>) itemDetailNode.get('tagValue');
                      
                      String lineItemId = (String)((Map<String, Object>) detailTagMap.get('SalesTrxnItemDetailParent')).get('tagValue');
                      String cfValue = (String)((Map<String, Object>) detailTagMap.get('STID_TenantName__c')).get('tagValue');
                      
                      System.debug('Custom Field Value for Detail Item' + cfValue);
                      if(cfValue != null) {
                          salesTransactionItemIdToCustomAggregatedValue.put(lineItemId, cfValue);
                      }
                  }
          
          
                  // STEP 4 - Build update list
                  List<Map<String, Object>> itemNodeUpdates = new List<Map<String, Object>>();
          
                  for (Object itemObj : itemData) {
                      Map<String, Object> itemNode = (Map<String, Object>) itemObj;
                      Map<String, Object> tagMap = (Map<String, Object>) itemNode.get('tagValue');
                      
                      String lineItemId = (String)((Map<String, Object>) tagMap.get('LineItem')).get('tagValue');
                      
                      List<Object> dataPath = (List<Object>) itemNode.get('dataPath');
          
                      dataPath.remove(0); // Remove contextId
          
                      itemNodeUpdates.add(new Map<String, Object>{
                          'nodePath' => new Map<String, Object>{ 'dataPath' => dataPath },
                          'attributes' => new List<Object>{
                              new Map<String, Object>{
                                  'attributeName' => 'STI_TenantName__c',
                                  'attributeValue' => salesTransactionItemIdToCustomAggregatedValue.get(lineItemId)
                              }
                          }
                      });
                  }
          
                  // STEP 5 - Create collection context update
                  if (!itemNodeUpdates.isEmpty()) {
                      Map<String, Object> updateInput = new Map<String, Object>{
                          'contextId' => contextId,
                          'nodePathAndAttributes' => itemNodeUpdates
                      };
                      
                      //Step 6 - Update context
                      System.debug('--- PREHOOK: SUBMITTING CONTEXT UPDATE ---');
                      System.debug(JSON.serializePretty(updateInput));
                      industriesContext.updateContextAttributes(updateInput);
                  }
          
                  RevSignaling.TransactionResponse response = new RevSignaling.TransactionResponse();
                  response.status = RevSignaling.TransactionStatus.SUCCESS;
                  return response;
              }
          }
          
          重要
          重要 カスタム項目情報を [Asset State Period (納入商品状態期間)] および [Asset Action Source (納入商品アクションソース)] に追加するには、適切なクロスコンテキスト対応付けを作成します。
           
          読み込み中
          Salesforce Help | Article