Loading
Aprender
Índice
Selecionar filtros

          Sem resultados
          Sem resultados
          Aqui estão algumas dicas de pesquisa

          Verifique a grafia das palavras-chave.
          Tente utilizar termos mais genéricos.
          Selecione menos filtros para ampliar sua pesquisa.

          Pesquisar em toda a Ajuda do Salesforce
          Usar precificação avançada de linha de detalhes da transação para mapear campos personalizados

          Usar precificação avançada de linha de detalhes da transação para mapear campos personalizados

          Os usuários podem atualizar campos personalizados em itens da transação de vendas ou detalhes do item da transação de vendas por meio de procedimentos de precificação usando o recurso Precificação avançada da linha de detalhes. Com esse recurso, os usuários não precisam mais usar acionadores ou fluxos personalizados para atualizar esses campos. Esse recurso é útil para casos de uso de emenda, renovação e cancelamento.

          Edições obrigatórias

          Disponível em: Lightning Experience
          Disponível em: Edições Enterprise, Unlimited e Developer do Revenue Cloud em que o Gerenciamento de transações está habilitado
          Permissões de usuário necessárias
          Para configurar e usar a precificação avançada de linha de detalhes:

          Administrador do Salesforce

          E

          Conjunto de permissões de Usuário do tempo de design de precificação

          Antes de começar, conclua estas tarefas.

          • Para ativar o recurso Precificação avançada de linha de detalhes, em Configuração, localize e selecione Configurações de receita e, em seguida, ative a configuração Precificação avançada de linha de detalhes.
          • Configure seu procedimento de precificação.

          Atualizar procedimento de precificação de receita

          Para configurar a precificação avançada da linha de detalhes, modifique seu procedimento de precificação de receita.

          1. No Iniciador de aplicativos, localize e selecione Procedimentos de precificação e selecione um procedimento de precificação para atualizar.
          2. Modifique o procedimento de precificação adicionando um novo elemento de item de linha de mapa como o segundo elemento ao lado da configuração de precificação no procedimento de precificação.
          3. Adicione mapeamentos de marcas de contexto ao item de linha do mapa.

            Variável de entrada

            Variável de saída

            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

            Depois de adicionar os mapeamentos de marcação de contexto, você verá os mapeamentos padrão entre SalesTransaction e SalesTransactionItemDetail com definições de contexto atualizadas.

          Atualizar procedimento de descoberta de precificação derivada

          Se você estiver usando precificação derivada, faça alterações adicionais ao seu procedimento de descoberta depois de concluir alterações ao seu procedimento de precificação de receita. Essas alterações são necessárias para determinar produtos contribuintes e derivados válidos.

          1. No Iniciador de aplicativos, localize e selecione Procedimentos de descoberta e selecione um procedimento de descoberta para atualizar.
          2. Adicione dois novos elementos ao procedimento de descoberta para precificar produtos derivados: Configurações de descoberta e Item de linha de mapa.
            Adicione estas variáveis às configurações de descoberta.
            • Variável de entrada: Item de linha
            • Variável de saída: LineItem
            Adicione essas variáveis ao item de linha do mapa.
            • Variável de entrada: SalesTransactionItem
            • Variável de saída: SalesTransactionItemDetail

            Adicione estas variáveis adicionais ao item de linha do mapa.

            Variável de entrada

            Variável de saída

            LineItem

            SalesTrxnItemDetailSource

            EffectiveFrom

            ItemDetailEffectiveFrom__std

            EffectiveTo

            ItemDetailEffectiveTo__std

            DerivedPricingAttribute

            ItemDetailDerivedPricingAttribute__std

          3. Dê suporte a campos personalizados usando procedimentos de precificação para casos de uso de emendar, renovar e cancelar (ARC).
            A configuração de campo personalizado será aplicável se você usar APIs do ARC e quiser usar campos personalizados.
            1. Adicione campos personalizados aos objetos QuoteLineItem, QuoteLineItem Detail, OrderProduct e OrderProductDetails.
            2. Na definição de contexto, crie uma entrada para esses campos personalizados nos nós SalesTransactionItem e SalesTransactionItemDetail.
            3. Crie os mapeamentos necessários em QuoteEntitiesMapping e OrderEntitiesMapping.
          4. Modifique o procedimento de precificação de receita para campos personalizados.
            1. No procedimento de precificação, modifique o elemento MapLineItem para adicionar um mapeamento entre SalesTransactionItem.CustomField e SalesTransactionItemDetail.CustomField.
            2. Crie qualquer elemento de personalização necessário no procedimento de precificação para atribuir um valor a SalesTransactionItem.CustomField.

              O procedimento de precificação detecta automaticamente se uma linha específica tem entradas de detalhes e grava em SalesTransactionItemDetail.CustomField, caso existam. Caso contrário, ele gravará em SalesTransactionItem.CustomField.

              Durante novas transações de vendas, CustomField no SalesTransactionItem é preenchido. Para cenários do ARC com linhas de detalhes, a linha de detalhes é gravada em CustomField em SalesTransactionItemDetail. Se nenhuma linha de detalhes for criada para o ARC, a linha de detalhes será escrita em CustomField no SalesTransactionItem.

          5. Para escrever campos personalizados em QuoteLineItem ou OrderProducts com linhas de detalhes, conclua esta configuração adicional envolvendo planos de procedimento e classes do Apex.
            1. Habilite um plano de procedimento. Em Configuração, localize e selecione Configurações de receita e ative a configuração Orquestração do plano de procedimento para precificação.
            2. Criar um plano de procedimento para a cotação e o pedido.
            3. No plano de procedimento, verifique se todas as etapas incluem o elemento MapLineItem. Modifique os mapeamentos com base nos campos usados no procedimento de precificação.
            4. Use este exemplo de classe do Apex ApexCustomFieldHandler, que você pode aprimorar para atualizar vários campos personalizados, se necessário. Essa classe consulta os nós SalesTransactionItem e SalesTransactionItemDetail, extrai valores de campo personalizados de itens de detalhes e atualiza os campos personalizados correspondentes no SalesTransactionItem.
          Exemplo
          Exemplo
          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;
              }
          }
          
          Importante
          Importante Para adicionar informações de campo personalizadas ao Período de estado do ativo e à Origem de ação do ativo, crie mapeamentos entre contextos apropriados.
           
          Carregando
          Salesforce Help | Article