Loading
Обучение
Содержание
Выбрать фильтры

          Результаты отсутствуют
          Результаты отсутствуют
          Ниже приведены некоторые советы по поиску.

          Проверьте орфографию ключевых слов.
          Воспользуйтесь более общим поисковым запросом.
          Выберите несколько фильтров для расширения области поиска.

          Выполните поиск по всей справке Salesforce.
          Использование расширенного ценообразования строки сведений о транзакции для соотнесения настраиваемых полей

          Использование расширенного ценообразования строки сведений о транзакции для соотнесения настраиваемых полей

          Пользователи могут обновить настраиваемые поля элементов транзакций продажи или сведений об элементе транзакции продажи посредством процедур ценообразования посредством функции «Ценообразование расширенной подробной строки». С помощью этой функции пользователям больше не нужно использовать настраиваемые триггеры или потоки для обновления этих полей. Эта функция используется для внесения поправок, продления и отмены.

          Требуемые версии

          Доступно в версиях: Lightning Experience
          Доступно в версиях: Enterprise, Unlimited и Developer Edition Revenue Cloud с включенным управлением транзакциями
          Необходимые полномочия пользователя
          Для настройки и использования расширенного ценообразования строки сведений:

          Администратор Salesforce

          AND

          Набор полномочий «Пользователь времени проектирования ценообразования»

          Прежде чем начать, выполните данные задачи.

          • Чтобы включить функцию «Расширенное ценообразование строки сведений», найдите и выберите «Параметры дохода» в меню «Настройка», а затем включите параметр «Расширенное ценообразование строки сведений».
          • Настройте процедуру ценообразования.

          Обновление процедуры ценообразования доходов

          Чтобы настроить расширенное подробное ценообразование строки, измените процедуру ценообразования дохода.

          1. В средстве запуска приложений найдите и выберите «Процедуры ценообразования», а потом выберите процедуру ценообразования для обновления.
          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. В средстве запуска приложений найдите и выберите «Процедуры обнаружения», а потом выберите процедуру обнаружения для обновления.
          2. Добавьте два новых элемента к процедуре обнаружения для определения цены производных продуктов: Параметры обнаружения и элемент строки карты.
            Добавьте эти переменные к параметрам обнаружения.
            • Переменная ввода: Элемент строки
            • Переменная вывода: 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. В процедуре ценообразования измените элемент MapLineItem, чтобы добавить соотнесение между SalesTransactionItem.CustomField и SalesTransactionItemDetail.CustomField.
            2. Создайте необходимые элементы настройки в процедуре ценообразования для назначения значения SalesTransactionItem.CustomField.

              Процедура ценообразования автоматически определяет наличие подробных записей в определенной строке и записывает их в SalesTransactionItemDetail.CustomField. В противном случае, он пишет в SalesTransactionItem.CustomField.

              Во время новых транзакций продажи заполняется CustomField в SalesTransactionItem. Для сценариев ARC с линиями сведений линия сведений записывается в CustomField в SalesTransactionItemDetail. Если строки сведений не создаются для ARC, строкой сведений будет запись в CustomField в SalesTransactionItem.

          5. Чтобы написать настраиваемые поля в QuoteLineItem или OrderProducts со строками сведений, выполните дополнительную настройку, включающую планы процедур и классы Apex.
            1. Включите план процедуры. Найдите и выберите «Параметры дохода» в меню «Настройка» и включите параметр «Оркестрация планирования процедур для ценообразования».
            2. Создание плана процедур для сметы и заказа.
            3. В плане процедуры проверьте все этапы, содержащие элемент MapLineItem. Изменение соотнесений на основе полей, используемых в процедуре ценообразования.
            4. Используйте пример класса Apex ApexCustomFieldHandler, который можно расширить для обновления нескольких настраиваемых полей. Этот класс запрашивает узлы 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;
              }
          }
          
          Важно!
          Важно! Чтобы добавить сведения о настраиваемом поле к периоду состояния актива и источнику действия актива, создайте соответствующие межконтекстные соотнесения.
           
          Загрузка
          Salesforce Help | Article