Loading
Indhold
Vælg filtre

          Ingen resultater
          Ingen resultater
          Her er nogle søgetips

          Kontroller stavemåden for dine søgeord.
          Brug mere generelle søgeudtryk.
          Vælg færre filtre for at gøre søgningen bredere.

          Søg efter alle i Hjælp til Salesforce
          Brug Avanceret prissætning af transaktionsdetaljer for at tilknytte tilpassede felter

          Brug Avanceret prissætning af transaktionsdetaljer for at tilknytte tilpassede felter

          Brugere kan opdatere tilpassede felter på salgstransaktionselementer eller salgstransaktionselementdetaljer gennem prissætningsprocedurer ved brug af funktionen Avanceret pris for linje for detaljer. Med denne funktion behøver brugerne ikke længere at bruge tilpassede udløsere eller forløb til at opdatere disse felter. Denne funktion er nyttig til anvendelsessituationer med ændring, fornyelse og annullering.

          EditionsHeading

          Tilgængelig i: Lightning Experience
          Tilgængelig i: Enterprise, Unlimited og Developer Edition af Omsætningsstyring (tidligere Revenue Cloud), hvor Transaktionsstyring er aktiveret
          Brugertilladelser påkrævet
          Hvis du vil opsætte og bruge avanceret pris for linje:

          Salesforce-administrator

          OG

          Tilladelsessættet Prissætningsdesigntidsbruger

          Før du går i gang, skal du udføre disse opgaver.

          • Hvis du vil aktivere funktionen Avanceret detaljepris for linje, skal du i Opsætning finde og vælge Indtjeningsindstillinger og derefter aktivere indstillingen Avanceret detaljepris for linje.
          • Konfigurer din prissætningsprocedure.

          Opdater procedure for omsætningsprissætning

          Hvis du vil konfigurere pris for avanceret linje, skal du redigere din omsætningsprissætningsprocedure.

          1. Fra Appstarter skal du finde og vælge Prisprocedurer og derefter vælge en prissætningsprocedure, der skal opdateres.
          2. Rediger prissætningsproceduren ved at tilføje et nyt kortlinjevareelement som det andet element ud for prissætningsindstillingen i prissætningsproceduren.
          3. Føj konteksttagtilknytninger til kortlinjevaren.

            Inputvariabel

            Outputvariabel

            LineItem

            SalesTrxnItemDetailSource

            LineItemQuantity

            ItemDetailQuantity

            NetUnitPrice

            ItemDetailNetUnitPrice

            price_water_fall

            DetailPriceWaterfallIdentifier

            InputUnitPrice

            ItemDetailUnitPrice

            ItemBillingReference

            ItemDetailBillingReference

            ItemNetTotalPrice

            ItemDetailTotalPrice

            TotalLineAmount

            ItemDetailTotalLineAmount

            EffectiveFrom (Effektiv fra)

            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

            Når du har tilføjet konteksttagtilknytninger, ser du standardtilknytningerne mellem SalesTransaction og SalesTransactionItemDetail med opdaterede kontekstdefinitioner.

          Opdater afledt prissætningsdiscovery-procedure

          Hvis du bruger afledt prissætning, skal du foretage yderligere ændringer af din opdagelsesprocedure, når du har fuldført ændringer af din omsætningsprissætningsprocedure. Disse ændringer er nødvendige for at bestemme gyldige bidragydende og afledte produkter.

          1. Fra Appstarter skal du finde og vælge Udforskningsprocedurer og derefter vælge en udforskningsprocedure, der skal opdateres.
          2. Føj to nye elementer til opdagelsesproceduren for at prissætte afledte produkter: Discovery-indstillinger og Tilknyt linjevare.
            Føj disse variabler til Discovery-indstillinger.
            • Inputvariabel: Linjevare
            • Outputvariabel: LineItem
            Føj disse variabler til kortlinjevaren.
            • Inputvariabel: SalesTransactionItem
            • Outputvariabel: SalesTransactionItemDetail

            Føj disse yderligere variabler til kortlinjevaren.

            Inputvariabel

            Outputvariabel

            LineItem

            SalesTrxnItemDetailSource

            EffectiveFrom (Effektiv fra)

            ItemDetailEffectiveFrom__std

            EffectiveTo

            ItemDetailEffectiveTo__std

            DerivedPricingAttribute

            ItemDetailDerivedPricingAttribute__std

          3. Understøt tilpassede felter ved at bruge prissætningsprocedurer til ARC-anvendelsessituationer (rediger, forny og annuller).
            Tilpasset feltopsætning er gældende, hvis du bruger ARC-API'er og ønsker at bruge tilpassede felter.
            1. Føj tilpassede felter til objekterne QuoteLineItem, QuoteLineItem Detail, OrderProduct og OrderProductDetails.
            2. I kontekstdefinitionen skal du oprette en oplysning for disse tilpassede felter i både SalesTransactionItem- og SalesTransactionItemDetail-noder.
            3. Opret de påkrævede tilknytninger i QuoteEntitiesMapping og OrderEntitiesMapping.
          4. Rediger omsætningsprissætningsproceduren for tilpassede felter.
            1. I prissætningsproceduren skal du redigere MapLineItem-elementet for at tilføje en tilknytning mellem SalesTransactionItem.CustomField og SalesTransactionItemDetail.CustomField.
            2. Opret alle nødvendige tilpasningselementer i prissætningsproceduren for at tildele en værdi til SalesTransactionItem.CustomField.

              Prissætningsproceduren registrerer automatisk, om en specifik linje har detaljeregistreringer og skriver til SalesTransactionItemDetail.CustomField, hvis de findes. Ellers skriver den til SalesTransactionItem.CustomField.

              Under nye salgstransaktioner udfyldes CustomField på SalesTransactionItem. For ARC-scenarier med detaljelinjer skrives detaljelinjen til CustomField på SalesTransactionItemDetail. Hvis der ikke oprettes nogen detaljelinjer for ARC, er detaljelinjen den skrevet til CustomField på SalesTransactionItem.

          5. Hvis du vil skrive tilpassede felter på QuoteLineItem eller OrderProducts med detaljelinjer, skal du fuldføre denne yderligere opsætning, der involverer procedureplaner og Apex.
            1. Aktiver en procedureplan. I Opsætning skal du finde og vælge omsætningsindstillinger og aktivere indstillingen Procedureplanorkestrering for prissætning.
            2. Opret en procedureplan for tilbuddet og bestillingen.
            3. I procedureplanen skal du bekræfte, at alle trin inkluderer MapLineItem-elementet. Rediger tilknytningerne baseret på de felter, der bruges i prissætningsproceduren.
            4. Brug dette ApexCustomFieldHandler Apex-klasseeksempel, som du kan forbedre for at opdatere flere tilpassede felter, hvis det er nødvendigt. Denne klasse forespørger på SalesTransactionItem- og SalesTransactionItemDetail-noder, udtrækker tilpassede feltværdier fra detaljeelementer og opdaterer derefter de tilsvarende tilpassede felter på SalesTransactionItem.
          Example
          Example
          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;
              }
          }
          
          Vigtigt
          Vigtigt Hvis du vil føje tilpassede feltoplysninger til Aktivtilstandsperiode og Aktivhandlingskilde, skal du oprette relevante krydskonteksttilknytninger.
           
          Indlæser
          Salesforce Help | Article