Extension de la liste déroulante Enrichissement de la tarification
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.
L’onglet Enrichissements s’affiche lors de la navigation vers un plan dans l’administration CPQ .
Regardez cette démonstration de l’enrichissement de la tarification d’extension de la liste déroulante en action.
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 :
- Parcourez les options de la liste déroulante et stockez-les pour référence ultérieure (pleRequest.forEach())
- Obtenir les prix des options et les stocker (soit via la recherche par table, soit dans la fonction elle-même)
- 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.