Loading
Aprender
Índice de materias
Seleccionar filtros

          No hay resultados
          No hay resultados
          Estas son algunas sugerencias de búsqueda

          Compruebe la ortografía de sus palabras clave.
          Utilice términos de búsqueda más generales.
          Seleccione menos filtros para ampliar su búsqueda.

          Buscar en toda la Ayuda de Salesforce
          Utilizar precios de partidas de detalles de transacciones avanzados para asignar campos personalizados

          Utilizar precios de partidas de detalles de transacciones avanzados para asignar campos personalizados

          Los usuarios pueden actualizar campos personalizados en artículos de transacciones de ventas o detalles de artículos de transacciones de ventas a través de procedimientos de precios utilizando la función Precios de partidas de detalles avanzados. Con esta función, los usuarios ya no necesitan utilizar flujos o desencadenadores personalizados para actualizar esos campos. Esta función es útil para casos de uso de corrección, renovación y cancelación.

          Ediciones necesarias

          Disponible en: Lightning Experience
          Disponible en: Ediciones Enterprise, Unlimited y Developer de Revenue Cloud donde Gestión de transacciones está activada
          Permisos de usuario necesarios
          Para configurar y utilizar precios de partidas de detalles avanzados:

          Administrador de Salesforce

          Y

          Conjunto de permisos Usuario de tiempo de diseño de precios

          Antes de empezar, complete estas tareas.

          • Para activar la función Precios de partidas de detalles avanzados, en Configuración, busque y seleccione Configuración de ingresos y luego active la configuración Precios de partidas de detalles avanzados.
          • Configure su procedimiento de precios.

          Actualizar procedimiento de precios de ingresos

          Para configurar precios de partidas de detalles avanzados, modifique su procedimiento de precios de ingresos.

          1. Desde el Iniciador de aplicación, busque y seleccione Procedimientos de precios y luego seleccione un procedimiento de precios para actualizar.
          2. Modifique el procedimiento de precios agregando un nuevo elemento de partida de mapa como el segundo elemento junto a la configuración de precios en el procedimiento de precios.
          3. Agregue asignaciones de etiquetas de contexto a la partida de mapa.

            Variable de entrada

            Variable de salida

            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

            Tras agregar las asignaciones de etiquetas de contexto, verá las asignaciones predeterminadas entre SalesTransaction y SalesTransactionItemDetail con definiciones de contexto actualizadas.

          Actualizar procedimiento de descubrimiento de precios derivado

          Si está utilizando precios derivados, realice cambios adicionales en su procedimiento de descubrimiento tras completar los cambios en su procedimiento de precios de ingresos. Estos cambios son necesarios para determinar productos derivados y colaboradores válidos.

          1. Desde el Iniciador de aplicación, busque y seleccione Procedimientos de descubrimiento y luego seleccione un procedimiento de descubrimiento para actualizar.
          2. Agregue dos nuevos elementos al procedimiento de descubrimiento a productos derivados de precios: Configuración de descubrimiento y Partida de mapa.
            Agregue estas variables a la configuración de descubrimiento.
            • Variable de entrada: Partida
            • Variable de salida: LineItem
            Agregue estas variables a la partida de mapa.
            • Variable de entrada: SalesTransactionItem
            • Variable de salida: SalesTransactionItemDetail

            Agregue estas variables adicionales a la partida de mapa.

            Variable de entrada

            Variable de salida

            LineItem

            SalesTrxnItemDetailSource

            EffectiveFrom

            ItemDetailEffectiveFrom__std

            EffectiveTo

            ItemDetailEffectiveTo__std

            DerivedPricingAttribute

            ItemDetailDerivedPricingAttribute__std

          3. Apoye campos personalizados utilizando procedimientos de precios para corregir, renovar y cancelar casos de uso (ARC).
            La configuración de campos personalizados es aplicable si utiliza las API de ARC y desea utilizar campos personalizados.
            1. Agregue campos personalizados a los objetos QuoteLineItem, QuoteLineItem Detail, OrderProduct y OrderProductDetails.
            2. En la definición de contexto, cree una entrada para estos campos personalizados en los nodos SalesTransactionItem y SalesTransactionItemDetail.
            3. Cree las asignaciones requeridas en QuoteEntitiesMapping y OrderEntitiesMapping.
          4. Modifique el procedimiento de precios de ingresos para campos personalizados.
            1. En el procedimiento de precios, modifique el elemento MapLineItem para agregar una asignación entre SalesTransactionItem.CustomField y SalesTransactionItemDetail.CustomField.
            2. Cree cualquier elemento de personalización necesario en el procedimiento de precios para asignar un valor a SalesTransactionItem.CustomField.

              El procedimiento de precios detecta automáticamente si una partida específica tiene entradas de detalles y escribe en SalesTransactionItemDetail.CustomField si existen. De lo contrario, escribe en SalesTransactionItem.CustomField.

              Durante las nuevas transacciones de venta, CustomField en SalesTransactionItem se rellena. Para escenarios de ARC con líneas de detalle, la línea de detalle se escribe en CustomField en SalesTransactionItemDetail. Si no se crean líneas de detalles para ARC, la línea de detalle se escribe en CustomField en SalesTransactionItem.

          5. Para redactar campos personalizados en QuoteLineItem o OrderProducts con líneas de detalle, complete esta configuración adicional que implica planes de procedimientos y clases Apex.
            1. Active un plan de procedimiento. En Configuración, busque y seleccione Configuración de ingresos y active la configuración Orquestación de plan de procedimientos para precios.
            2. Cree un plan para el presupuesto y el pedido.
            3. En el plan de procedimiento, verifique que todos los pasos incluyen el elemento MapLineItem. Modifique las asignaciones basándose en los campos utilizados en el procedimiento de precios.
            4. Utilice este ejemplo de clase Apex Apex ApexCustomFieldHandler, que puede mejorar para actualizar múltiples campos personalizados si es necesario. Esta clase consulta nodos SalesTransactionItem y SalesTransactionItemDetail, extrae valores de campo personalizados de elementos de detalles y luego actualiza los campos personalizados correspondientes en SalesTransactionItem.
          Ejemplo
          Ejemplo
          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 agregar información de campo personalizada a Periodo de estado de activo y Origen de acción de activo, cree asignaciones de contexto cruzado apropiadas.
           
          Cargando
          Salesforce Help | Article