Cas d’utilisation : renseigner les noms d’affichage et les lignes de devis dans les objets de jeu de données de champ de configuration
Découvrez comment configurer des objets personnalisés et des déclencheurs Apex dans SFDC pour renseigner les noms d’affichage des CPQ champs.
Dans le CPQ cadre du package géré, la fonctionnalité de l’objet Configuration Field Data Set dans SFDC est de renvoyer l’ID de configuration de la configuration, le nom de chaque variable de champ utilisée par le plan, la valeur de ce champ et l’étiquette de cette valeur après chaque enregistrement du CPQ configurateur :
Toutefois, il peut y avoir des nécessités supplémentaires liées à la configuration en CPQ dehors de ces champs créés par le package géré dont une organisation a besoin pour les processus en aval. Par exemple, nous pouvons renseigner les noms d’affichage des CPQ champs ou accéder facilement à la ligne de devis des objets de données de champ de configuration associés pour une connexion facile à la nomenclature.
Avec une petite configuration d’objets personnalisés et de déclencheurs Apex dans SFDC, ces champs peuvent être automatiquement remplis après l’enregistrement de chaque configuration.
Prérequis
Activez « Transmettre par push les données de configuration à l’objet Logik Salesforce » dans les paramètres d’administration si vous ne l’avez pas déjà fait. Cela lancera la création des objets Configuration Field Data Sets dans SFDC.
Renseigner le nom d’affichage
- Dans la configuration SFDC, accédez au gestionnaire d’objets.
- Créez un objet personnalisé appelé « Étiquette LGK » avec les attributs suivants :
- Nom de l’enregistrement : Logik Label
- Type de données : numérotation automatique
- Format d’affichage : LGKLB-{0000}
- Autoriser la recherche : coché
- Lancer un nouvel assistant d’onglet personnalisé après l’enregistrement de cet objet personnalisé : Coché
- Sur la page Nouvel onglet d’objet personnalisé, cliquez sur le champ Style d’onglet et sélectionnez un style.
- Cliquez sur Suivant, cliquez à nouveau sur Suivant , puis cliquez sur Enregistrer.
- Cliquez sur Champs et relations sur l’étiquette LGK, puis cliquez sur Nouveau. Créez un nouveau champ avec les attributs suivants :
- Type de données : Zone de texte
- Étiquette de champ : étiquette
- Nom de champ : étiquette
- Cliquez sur Nouveau. Créez un nouveau champ avec les attributs suivants :
- Type de données : Zone de texte
- Étiquette de champ : variablename
- Nom de champ : variablename
Ce nouvel objet LGK Label sera l’endroit où nous hébergerons le nom de variable de champ et le nom d’étiquette de champ dans SFDC. Les étiquettes ne seront pas automatiquement importées. Ils doivent également être mis à jour/importés manuellement de temps en temps avec des modifications et des ajouts aux champs dans CPQ Admin. Nous passerons en revue les méthodes d’importation en bloc plus loin dans ce guide.
- Dans le Gestionnaire d’objets, recherchez « Données du champ de configuration ».
- Cliquez sur Champs et relations, puis sur Nouveau. Créez un nouveau champ avec les attributs suivants :
- Type de données : Zone de texte
- Étiquette de champ : nom d’affichage
- Nom de champ : Display_Name
- Cliquez sur Déclencheurs, puis sur Nouveau.
- Collez le code suivant dans le bloc de code Apex :
trigger UpdateConfigurationLabels on LGK__ConfigurationFieldData__c (before insert) { // Step 1: Collect FieldKeys from records to be inserted Set<String> fieldKeys = new Set<String>(); for(LGK__ConfigurationFieldData__c confData : Trigger.new) { fieldKeys.add(confData.LGK__FieldKey__c); } // Step 2: Query LGK_Label__c based on collected FieldKeys Map<String, LGK_Label__c> labelMap = new Map<String, LGK_Label__c>(); for(LGK_Label__c label : [SELECT label__c, variablename__c FROM LGK_Label__c WHERE variablename__c IN :fieldKeys]) { labelMap.put(label.variablename__c, label); } // Step 3: Loop through records to be inserted and update Display_Name__c for(LGK__ConfigurationFieldData__c confData : Trigger.new) { LGK_Label__c matchedLabel = labelMap.get(confData.LGK__FieldKey__c); if(matchedLabel != null) { confData.Display_Name__c = matchedLabel.label__c; } else if(confData.LGK__ValueLabel__c != null) { confData.Display_Name__c = confData.LGK__ValueLabel__c; } }
Le cadre est complet. Ajoutez le nouveau champ Nom d’affichage à la mise en page de l’ensemble de données du champ de configuration. Il ne reste plus qu’à importer les noms d’étiquettes de champs dans les objets LGK Labels. Selon la façon dont vous utilisez CPQ les champs, il existe trois méthodes pour y parvenir.
|
Création manuelle CPQ d’étiquette
|
Avantages :
Inconvénient : processus peut être fastidieux pour un grand nombre de champs |
|
Importation en bloc à partir de l’exportation de tous les CPQ champs
|
Avantages :
Inconvénients :
|
|
Importation en bloc à partir de l’exportation de la mise en page du plan
|
Avantages :
Inconvénients :
|
S’il existe des champs pour lesquels vous souhaitez afficher un nom d’affichage différent de celui que vous avez importé, vous pouvez facilement modifier l’objet Étiquette pour l’étiquette de votre choix et il commencera à remplir les ensembles de données du champ de configuration de cette façon après la mise à jour.
Remplissez la ligne de devis
- Dans la configuration SFDC, accédez au gestionnaire d’objets.
- Recherchez « Données du champ de configuration ».
- Cliquez sur Champs et relations, puis sur Nouveau. Créez un nouveau champ avec les attributs suivants :
- Type de données : Rechercher une relation
- Associé à : Ligne de devis
- Étiquette de champ : Ligne de devis
- Nom du champ : Quote_Line
- Dans le Gestionnaire d’objets, recherchez « Ligne de devis ».
- Cliquez sur Déclencheurs, puis sur Nouveau.
- Collez le code suivant dans le bloc de code Apex :
trigger PopulateConfigFieldData on SBQQ__QuoteLine__c (after insert, after update) { // Step 1: Collect the Configuration Ids from the new Quote Lines Set<String> configIds = new Set<String>(); Map<String, Id> quoteLineMap = new Map<String, Id>(); // Mapping Configuration UUID to Quote Line Id for (SBQQ__QuoteLine__c ql : Trigger.new) { if (String.isNotBlank(ql.LGK__ConfigurationId__c)) { configIds.add(ql.LGK__ConfigurationId__c); quoteLineMap.put(ql.LGK__ConfigurationId__c, ql.Id); // Storing Quote Line Id } } if (configIds.isEmpty()) { return; } // Step 2: Query the Configuration Field Data records List<LGK__ConfigurationFieldData__c> confFieldsToUpdate = [SELECT Id,LGK__ConfigurationId__c FROM LGK__ConfigurationFieldData__c WHERE LGK__ConfigurationId__c IN:configIds]; // Step 3: Update the Field Data records for (LGK__ConfigurationFieldData__c cf : confFieldsToUpdate) { Id quoteLineId = quoteLineMap.get(cf.LGK__ConfigurationId__c); if (quoteLineId != null) { cf.Quote_Line__c = quoteLineId; // Assigning the Quote Line Id } } update confFieldsToUpdate;
Désormais, chaque fois qu’un devis est enregistré dans SFDC, la ligne de devis du produit configurable parent sera renseignée dans l’ensemble de données du champ de configuration. N’oubliez pas d’ajouter ce champ personnalisé à la mise en page Ensembles de données du champ de configuration pour l’afficher dans l’onglet.