Extension de la liste déroulante Enrichissement de la tarification

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 2 minutes de lecture
  • Utilisez l’enrichissement de la tarification d’extension de la liste déroulante pour ajuster la tarification en fonction de l’emplacement ou d’autres facteurs.

    L’enrichissement de la tarification d’extension de la liste déroulante peut être utilisé pour modifier dynamiquement la tarification des options de champ dans les champs d’extension de liste déroulante désignés.

    Prérequis

    Soumettez un ticket de support via le site de CPQ support ou en envoyant un e-mail support@logik.io en demandant que l’enrichissement soit activé pour votre environnement. Veuillez fournir un cas d’utilisation de l’enrichissement.

    Les champs d’extension de la liste déroulante doivent avoir le bouton bascule « Activer pour l’enrichissement » activé pour être affectés par l’enrichissement.

    Champs d’extension de la liste déroulante

    L’onglet Enrichissements s’affiche lors de la navigation vers un plan dans l’administration CPQ .

    Champs d’extension de la liste déroulante

    Regardez cette démonstration de l’enrichissement de la tarification d’extension de la liste déroulante en action.

    Démo du script d’enrichissement PLE

    Script de démonstration

    Le script suivant a été utilisé dans la vidéo de démonstration.

    let sourcesArr = [];
    let componentArr = [];
    let accessoryArr = [];
    
    pleRequest.forEach(o => {
        if(o.fieldVariableName == "alternateEnergySources") {
            sourcesArr.push(o.optionValue);
            //o.price = "1000";
        }
        if(o.fieldVariableName == "alternateEnergyComponents") {
            componentArr.push(o.optionValue);
            //o.price = "900";
        }
        if(o.fieldVariableName == "alternateEnergyAccessory") {
            accessoryArr.push(o.optionValue);
            //o.price = "800";
        }
    });
    
    var sourceMap = new Map();
    if(sourcesArr != null && sourcesArr.length != 0) {
        var sourceRows = lookup("Select Energy, BasePrice from AlternateEnergyPricing where Zip = :zip and Energy IN (:value)", { "zip": cfg.zipCode, "value": sourcesArr });
        for (var row of sourceRows) {
            sourceMap.set(row.get("Energy"), row.get("BasePrice"));
        }
    } else {    //source PLE not part of request. So populate this map for other PLEs 
        console.log("Entered non PLE in request case");
        sourcesArr = ["Solar", "Wind", "Nuclear"];
        var sourceRows = lookup("Select Energy, BasePrice from AlternateEnergyPricing where Zip = :zip and Energy IN (:value)", { "zip": cfg.zipCode, "value": sourcesArr });
        for (var row of sourceRows) {
            sourceMap.set(row.get("Energy"), row.get("BasePrice")); 
        }
        console.log(sourcesArr);
        console.log(sourceMap);
    }
    
    var multiplierMap = new Map();
    if(cfg.alternateEnergySources != "") {
        var multiplierRows = lookup("Select Group, Factor from AlternateEnergyMultiplier where Zip = :zip and Energy = :energyVal", { "zip": cfg.zipCode, "energyVal": cfg.alternateEnergySources });
        for (var row of multiplierRows) {
            multiplierMap.set(row.get("Group"), row.get("Factor"));
        }
    }
    let sourcePrice = sourceMap.get(cfg.alternateEnergySources);
    if(sourcePrice != null) {
            pleRequest.forEach(o => {
            if(o.fieldVariableName == "alternateEnergySources") {
                o.price = sourceMap.get(o.optionValue);
            }
            if(o.fieldVariableName == "alternateEnergyComponents") {
                let compPrice = multiplierMap.get("Component");
                if(compPrice != null) {
                    o.price = sourcePrice*compPrice;
                }
            }
            if(o.fieldVariableName == "alternateEnergyAccessory") {
                let multA = multiplierMap.get("Accessory");
                if(multA != null) {
                    o.price = sourcePrice*multA;
                }
            }
        });
    }
    
    console.log(sourcesArr);
    console.log(componentArr);
    console.log(accessoryArr);
    console.log(sourceMap);
    console.log(multiplierMap);
    
    return pleRequest;

    Exemples de plans, de cas d’utilisation et d’éléments pleRequest

    Exemple de conception de script d’enrichissement :

    1. Parcourez les options de la liste déroulante et stockez-les pour référence ultérieure (pleRequest.forEach())
    2. Obtenir les prix des options et les stocker (soit via la recherche par table, soit dans la fonction elle-même)
    3. Définissez le prix de la bonne option (pleRequest.forEach())

    Cas d'utilisation :

    • Code postal tarification dépendante
    • Multiplicateurs de prix et remises
    • Tarification delta
    • Soustraction de la tarification du composant indépendant

    Éléments pleRequest :

    • pleRequest.fieldVariableName : nom de variable du champ de la liste déroulante
    • pleRequest.optionValue : options de liste déroulante définies dans le champ
    • pleRequest.productId : ID du produit dans le mappage PLE
    • pleRequest.price : prix à définir dans l’extension

    Le référencement d’éléments dans l’objet pleRequest est similaire au référencement d’objets tels que ProductList, cfg et cfgRequest. Si une variable est substituée dans pleRequest (soit dans une boucle for , soit à l’aide de la fonction forEach ), l’élément est toujours référencé après la variable, suivi d’un point.