O aprimoramento de preços da extensão da lista de seleção

  • Versão de lançamento: Australia
  • Atualizado 12 de mar. de 2026
  • 2 min. de leitura
  • 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.

    Campos de extensão da lista de seleção

    A guia Aprimoramentos será mostrada ao navegar para um blueprint no CPQ Admin

    Campos de extensão da lista de seleção

    Assista a esta demonstração do aprimoramento de preços de extensão da lista de seleção em ação.

    Demonstração de script de aprimoramento de PLE

    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:

    1. Percorrer opções da lista de seleção e armazená-las para referência posterior (pleRequest.foreach())
    2. Obtenha preços para opções e armazene-as (por meio de pesquisa de tabela ou na própria função)
    3. 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.