O aprimoramento de preços da extensão da lista de seleção
Use o aprimoramento de preço da extensão da lista de seleção para ajustar o preço de acordo com o local ou outros fatores.
O aprimoramento de preço da extensão da lista de seleção pode ser usado para alterar dinamicamente o preço das opções de campo nos campos de extensão da lista de seleção designados.
Pré-requisitos
Envie um caso de suporte por meio de CPQ Site de suporte ou por e-mail support@logik.io solicitando que o aprimoramento seja habilitado para seu ambiente. Forneça um caso de uso para usar o aprimoramento.
Os campos de extensão da lista de seleção precisam ter a opção "Habilitar para aprimoramento" ativada para serem afetados pelo aprimoramento.
A guia Aprimoramentos será mostrada ao navegar para um blueprint no CPQ Admin
Assista a esta demonstração do aprimoramento de preços de extensão da lista de seleção em ação.
Script de demonstração
O script a seguir foi usado no vídeo de demonstração.
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;
Design de amostra, casos de uso e elementos pleRequest
Design de script de aprimoramento de amostra:
- Percorrer opções da lista de seleção e armazená-las para referência posterior (pleRequest.foreach())
- Obtenha preços para opções e armazene-as (por meio de pesquisa de tabela ou na própria função)
- Defina o preço da opção correta (pleRequest.foreach())
Casos de uso:
- Preço dependente do CEP
- Multiplicadores de preços e descontos
- Preço delta
- Subtração de preço de componente independente
Elementos pleRequest:
- PleRequest.fieldVariableName: Nome da variável do campo da lista de seleção
- PleRequest.optionValue: Opções da lista de seleção definidas no campo
- pleRequest.productId: ID do produto no mapeamento de PLE
- PleRequest.price: preço a ser definido na extensão
Elementos de referência no Solicitação o objeto é semelhante a referenciar objetos como ProductList , cfg e. CfgRequest . Se uma variável for substituída em Solicitação (em um para ou usando Para frente (função), o elemento ainda é referenciado após a variável, seguido por um ponto.