Loading
Apprendre
Table des matières
Sélectionner des filtres

          Aucun résultat
          Aucun résultat
          Voici quelques conseils de recherche

          Vérifiez l'orthographe de vos mots-clés.
          Utilisez des termes de recherche plus généraux.
          Sélectionnez moins de filtres pour élargir votre recherche.

          Recherchez dans toute l’aide de Salesforce
          Utilisation de la tarification avancée des lignes de détail de transaction pour mapper des champs personnalisés

          Utilisation de la tarification avancée des lignes de détail de transaction pour mapper des champs personnalisés

          Les utilisateurs peuvent mettre à jour des champs personnalisés dans des éléments de transaction commerciale ou des détails d'élément de transaction commerciale via des procédures de tarification en utilisant la fonctionnalité Tarification de ligne de détail avancée. Avec cette fonctionnalité, les utilisateurs n'ont plus besoin d'utiliser des déclencheurs ou des flux personnalisés pour mettre à jour ces champs. Cette fonctionnalité est utile pour les cas d'utilisation d'amendement, de renouvellement et d'annulation.

          Éditions requises

          Disponible avec : Lightning Experience
          Disponible avec : Éditions Enterprise, Unlimited et Developer de Revenue Cloud dans lesquelles la Gestion des transactions est activée
          Autorisations utilisateur requises
          Pour configurer et utiliser la tarification avancée des lignes de détail :

          Administrateur Salesforce

          ET

          Ensemble d'autorisations Utilisateur du temps de conception de la tarification

          Avant de commencer, effectuez les tâches ci-dessous.

          • Pour activer la fonctionnalité Tarification de la ligne de détail avancée, dans Configuration, recherchez et sélectionnez Paramètres de revenu, puis activez le paramètre Tarification de la ligne de détail avancée.
          • Configurez votre procédure de tarification.

          Mise à jour de la procédure de tarification du revenu

          Pour configurer la tarification des lignes de détail avancées, modifiez votre procédure de tarification du revenu.

          1. Dans le Lanceur d'application, recherchez et sélectionnez Procédures de tarification, puis sélectionnez une procédure de tarification à mettre à jour.
          2. Modifiez la procédure de tarification en ajoutant un nouvel élément d'élément de ligne de carte en tant que deuxième élément en regard du paramètre de tarification dans la procédure de tarification.
          3. Ajoutez des mappages de balises de contexte à l'élément de ligne de carte.

            Variable d'entrée

            Variable de sortie

            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

            Après avoir ajouté les mappages de balises de contexte, les mappages par défaut entre SalesTransaction et SalesTransactionItemDetail sont affichés avec des définitions de contexte mises à jour.

          Mise à jour de la procédure de découverte de la tarification dérivée

          Si vous utilisez la tarification dérivée, apportez des modifications supplémentaires à votre procédure de découverte après avoir apporté des modifications à votre procédure de tarification du revenu. Ces modifications sont nécessaires pour déterminer les produits contributeurs et dérivés valides.

          1. Dans le Lanceur d'application, recherchez et sélectionnez Procédures de découverte, puis sélectionnez une procédure de découverte à mettre à jour.
          2. Ajouter deux nouveaux éléments à la procédure de découverte pour les produits dérivés du prix : Paramètres de découverte et Élément de ligne de carte.
            Ajoutez ces variables aux paramètres de découverte.
            • Variable d'entrée : Élément de ligne
            • Variable de sortie : LineItem
            Ajoutez ces variables à l'élément de ligne de carte.
            • Variable d'entrée : SalesTransactionItem
            • Variable de sortie : SalesTransactionItemDetail

            Ajoutez ces variables supplémentaires à l'élément de ligne de carte.

            Variable d'entrée

            Variable de sortie

            LineItem

            SalesTrxnItemDetailSource

            EffectiveFrom

            ItemDetailEffectiveFrom__std

            EffectiveTo

            ItemDetailEffectiveTo__std

            DerivedPricingAttribute

            ItemDetailDerivedPricingAttribute__std

          3. Prenez en charge les champs personnalisés en utilisant des procédures de tarification pour amender, renouveler et annuler des cas d'utilisation (ARC).
            La configuration de champs personnalisés est applicable si vous utilisez des API ARC et souhaitez utiliser des champs personnalisés.
            1. Ajoutez des champs personnalisés aux objets QuoteLineItem, QuoteLineItem Detail, OrderProduct et OrderProductDetails.
            2. Dans la définition du contexte, créez une entrée pour ces champs personnalisés dans les nœuds SalesTransactionItem et SalesTransactionItemDetail.
            3. Créez les mappages requis dans QuoteEntitiesMapping et OrderEntitiesMapping.
          4. Modifiez la procédure de tarification du revenu pour les champs personnalisés.
            1. Dans la procédure de tarification, modifiez l'élément MapLineItem pour ajouter un mappage entre SalesTransactionItem.CustomField et SalesTransactionItemDetail.CustomField.
            2. Créez tous les éléments de personnalisation nécessaires dans la procédure de tarification pour attribuer une valeur à SalesTransactionItem.CustomField.

              La procédure de tarification détecte automatiquement si une ligne spécifique contient des entrées de détail et écrit dans SalesTransactionItemDetail.CustomField si elles existent. Sinon, il écrit dans SalesTransactionItem.CustomField.

              Lors de nouvelles transactions commerciales, CustomField dans SalesTransactionItem est rempli. Pour des scénarios ARC avec des lignes de détail, la ligne de détail est écrite dans CustomField sur SalesTransactionItemDetail. Si aucune ligne de détail n'est créée pour ARC, elle est écrite dans CustomField sur SalesTransactionItem.

          5. Pour écrire des champs personnalisés sur QuoteLineItem ou OrderProducts avec des lignes de détail, complétez cette configuration supplémentaire impliquant des plans de procédure et des classes Apex.
            1. Activez un plan de procédure. Dans Configuration, recherchez et sélectionnez Paramètres de revenu, puis activez le paramètre Orchestration du plan de procédure pour la tarification.
            2. Créez un plan de procédure pour le devis et la commande.
            3. Dans le plan de procédure, vérifiez que toutes les étapes incluent l'élément MapLineItem. Modifiez les mappages en fonction des champs utilisés dans la procédure de tarification.
            4. Utilisez cet exemple de classe ApexCustomFieldHandler, que vous pouvez améliorer pour mettre à jour plusieurs champs personnalisés si nécessaire. Cette classe interroge les nœuds SalesTransactionItem et SalesTransactionItemDetail, extrait les valeurs de champ personnalisées des éléments de détail, puis met à jour les champs personnalisés correspondants dans SalesTransactionItem.
          Exemple
          Exemple
          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;
              }
          }
          
          Important
          Important Pour ajouter des informations de champ personnalisées à Période d'état de l'actif et Source d'action de l'actif, créez des mappages inter-contextes appropriés.
           
          Chargement
          Salesforce Help | Article