Loading
Impara
Sommario
Seleziona filtri

          Nessun risultato
          Nessun risultato
          Ecco alcuni suggerimenti per la ricerca

          Controlla l'ortografia delle parole chiave.
          Usa termini di ricerca più generici.
          Seleziona meno filtri per ampliare la tua ricerca.

          Cerca in tutta la Guida di Salesforce
          Utilizzo di Advanced Transaction Detail Line Pricing per mappare i campi personalizzati

          Utilizzo di Advanced Transaction Detail Line Pricing per mappare i campi personalizzati

          Gli utenti possono aggiornare i campi personalizzati sulle voci transazione di vendita o sui dettagli delle voci transazione di vendita tramite le procedure di calcolo dei prezzi utilizzando la funzione Advanced Detail Line Pricing (Prezzi linea di dettagli avanzati). Con questa funzione, gli utenti non devono più utilizzare trigger o flussi personalizzati per aggiornare tali campi. Questa funzione è utile per i casi d'uso di modifica, rinnovo e annullamento.

          Versioni (Edition) richieste

          Disponibile nelle versioni: Lightning Experience
          Disponibile in: Enterprise Edition, Unlimited Edition e Developer Edition di Revenue Cloud in cui è abilitata la gestione delle transazioni
          Autorizzazioni utente necessarie
          Per impostare e utilizzare i prezzi avanzati delle linee di dettaglio:

          Amministratore Salesforce

          E

          Insieme di autorizzazioni Utente Pricing Design Time

          Prima di iniziare, eseguire le seguenti operazioni.

          • Per attivare la funzione Advanced Detail Line Pricing, in Imposta, trovare e selezionare Impostazioni reddito e quindi attivare l'impostazione Advanced Detail Line Pricing.
          • Configurare la procedura di calcolo dei prezzi.

          Procedura di aggiornamento dei prezzi del reddito

          Per configurare i prezzi avanzati delle linee di dettaglio, modificare la procedura di calcolo dei prezzi del reddito.

          1. Dal Programma di avvio app, trovare e selezionare Procedure prezzi e quindi selezionare una procedura prezzi da aggiornare.
          2. Modificare la procedura di calcolo dei prezzi aggiungendo un nuovo elemento voce mappa come secondo elemento accanto all'impostazione dei prezzi nella procedura di calcolo dei prezzi.
          3. Aggiungere mappature di tag contesto all'elemento riga mappa.

            Variabile di input

            Variabile di output

            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

            Attributo prezzi derivati

            ItemDetailDerivedPricingAttribute__std

            ItemGroupSummarySubtotal

            ItemDetailGroupSummaryTotal__std

            ListPrice

            ItemDetailListPrice__std

            IsContracted

            ItemDetailIsContracted__std

            ItemContractPrice

            ItemDetailContractPrice__std

            STI_TenantName__c

            STID_TenantName__c

            Dopo aver aggiunto le mappature dei tag contesto, vengono visualizzate le mappature predefinite tra SalesTransaction e SalesTransactionItemDetail con definizioni contesto aggiornate.

          Procedura di aggiornamento dell'individuazione dei prezzi derivati

          Se si utilizzano prezzi derivati, apportare ulteriori modifiche alla procedura di individuazione dopo aver completato le modifiche alla procedura di determinazione dei prezzi del reddito. Queste modifiche sono necessarie per determinare i prodotti che apportano contributi e derivati validi.

          1. Dal Programma di avvio app, trovare e selezionare Procedure di individuazione e quindi selezionare una procedura di individuazione da aggiornare.
          2. Aggiungere due nuovi elementi alla procedura di individuazione del prezzo dei prodotti derivati: Impostazioni Discovery e Voce mappa.
            Aggiungere queste variabili alle impostazioni di Discovery.
            • Variabile di input: Voce
            • Variabile di output: LineItem
            Aggiungere queste variabili alla voce della mappa.
            • Variabile di input: SalesTransactionItem
            • Variabile di output: SalesTransactionItemDetail

            Aggiungere queste variabili aggiuntive alla voce della mappa.

            Variabile di input

            Variabile di output

            LineItem

            SalesTrxnItemDetailSource

            EffectiveFrom

            ItemDetailEffectiveFrom__std

            EffectiveTo

            ItemDetailEffectiveTo__std

            Attributo prezzi derivati

            ItemDetailDerivedPricingAttribute__std

          3. Supportare i campi personalizzati utilizzando le procedure di calcolo dei prezzi per modificare, rinnovare e annullare i casi d'uso.
            L'impostazione dei campi personalizzati è applicabile se si utilizzano le API CRF e si desidera utilizzare i campi personalizzati.
            1. Aggiungere campi personalizzati agli oggetti QuoteLineItem, QuoteLineItem Detail, OrderProduct e OrderProductDetails.
            2. Nella definizione contesto, creare una voce per questi campi personalizzati nei nodi SalesTransactionItem e SalesTransactionItemDetail.
            3. Creare le mappature richieste in QuoteEntitiesMapping e OrderEntitiesMapping.
          4. Modificare la procedura di calcolo dei prezzi del reddito per i campi personalizzati.
            1. Nella procedura di calcolo dei prezzi, modificare l'elemento per aggiungere una mappatura tra SalesTransactionItem.CustomField e SalesTransactionItemDetail.CustomField.
            2. Creare gli eventuali elementi di personalizzazione necessari nella procedura di calcolo dei prezzi per assegnare un valore a SalesTransactionItem.CustomField.

              La procedura di calcolo dei prezzi rileva automaticamente se una riga specifica contiene voci di dettaglio e scrive in SalesTransactionItemDetail.CustomField, se esistenti. In caso contrario, scrive in SalesTransactionItem.CustomField.

              Durante le nuove transazioni di vendita, CustomField in SalesTransactionItem viene compilato. Per gli scenari CRF con linee di dettaglio, la linea di dettaglio viene scritta in CustomField in SalesTransactionItemDetail. Se non vengono create righe di dettaglio per CRF, la riga di dettaglio viene scritta in CustomField in SalesTransactionItem.

          5. Per scrivere campi personalizzati su QuoteLineItem o OrderProducts con righe di dettagli, completare questa impostazione aggiuntiva che include piani procedura e classi Apex.
            1. Abilitare un piano procedurale. In Imposta, trovare e selezionare Impostazioni reddito e attivare l'impostazione Orchestrazione piano procedurale per prezzi.
            2. Creare un piano procedurale per il preventivo e l'ordine.
            3. Nel piano della procedura, verificare che tutti i passaggi includano l'elemento MapLineItem. Modificare le mappature in base ai campi utilizzati nella procedura di calcolo dei prezzi.
            4. Utilizzare questo esempio di classe ApexCustomFieldHandler, che è possibile migliorare per aggiornare più campi personalizzati se necessario. Questa classe esegue una query sui nodi SalesTransactionItem e SalesTransactionItemDetail, estrae i valori dei campi personalizzati dagli elementi dettaglio e quindi aggiorna i campi personalizzati corrispondenti in SalesTransactionItem.
          Esempio
          Esempio
          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 Per aggiungere informazioni sui campi personalizzati a Periodo stato asset e Fonte azione asset, creare mappature cross-context appropriate.
           
          Caricamento
          Salesforce Help | Article