No aprimoramento de resposta da BOM

  • Versão de lançamento: Australia
  • Atualizado 12 de mar. de 2026
  • 3 min. de leitura
  • Você pode usar este aprimoramento para trabalhar com itens da ProductList sempre que houver uma atualização na lista de materiais.

    O aprimoramento de resposta na BOM é habilitado por padrão em ambientes e pode ser usado para manipular itens na ProductList sempre que houver uma atualização na lista de materiais (BOM).

    Nota:
    . CPQ o ambiente deve incluir regras com ações de produto, ou não haverá loop para o aprimoramento.

    Resposta DA LISTA DE MATERIAIS

    Na amostra a seguir, o aprimoramento de resposta na BOM percorre os produtos e altera o preço de um produto.

    //Loop over products and change price of a product
    let dealProduct = cfg.blueMoonSelected;
    if (dealProduct == true) {
            for(var prod of ProductList) {
                    let price = prod.price * .8;
                    prod.price = price;
            }
    }

    Na resposta da BOM, os enriquecimentos podem solicitar serviços REST externos por GET ou POST.

    No script de amostra a seguir, o aprimoramento de resposta na BOM usa uma conexão externa para consultar uma API powerPricing com dados do cliente. Com os dados de taxa específicos do cliente recuperados do serviço, o aprimoramento ajusta o preço dos registros ProductList existentes.

    var powerInputs = {"membershipCode":cfg.eCMembershipCode, "icp":cfg.eCICPNumber};
    let powerResponse = External.powerPricing(powerInputs);
    let dailyCharge = 0; let ratesArr = [];
    
    if(powerResponse.status == 200) {
    	for(var record of powerResponse.body) {
    		if(record.chargeType == cfg.expectedUsage) {
    			dailyCharge = record.dailyCharges;
    			ratesArr = record.rates;
    		}
    	}
    	for(var prod of ProductList) {
    		if(prod.id=="electricBillEstimator") {
    			let addedPrice = dailyCharge * cfg.serviceDurationInDays;
    			prod.price = addedPrice;
    		}
    			if(prod.id=="Standard Rate" || prod.id=="Low Rate") {
    			prod.price = dailyCharge;
    		}
    	}
    	for(var rateVal of ratesArr) {
    		ProductList.id = "Additional Charge Per KWH: " + rateVal.name;
    		ProductList.quantity = 1;
    		ProductList.bomType = "Manufacturing";
    		ProductList.orderNumber = 2;
    		ProductList.price = rateVal.rate;
    		ProductList.notes = rateVal.measure;
    		ProductList.parentProduct = "electricBillEstimator";
    		ProductList.next();
    	}
    }
    
    return ProductList;

    A diferença entre a BOM do mecanismo de regras e a BOM aprimorada

    Há duas versões da BOM durante o tempo de execução: A BOM do mecanismo de regras, que é baseada nos resultados das regras do produto durante o tempo de execução, e a BOM aprimorada, que é o resultado do aprimoramento da BOM.

    O objeto ProductList do aprimoramento da BOM (referenciado no script) é o resultado da BOM do mecanismo de regras, não da BOM aprimorada. Isso serve para garantir que não haja loops infinitos. Suponha que o script referencie sua própria ProductList que ele retorna e que o script foi configurado para aumentar o preço de determinados objetos em uma porcentagem na atualização da BOM. Nesse caso, na próxima vez que o conteúdo da BOM for atualizado, o aumento de preço ocorrerá repetidas vezes.

    Para evitar essa situação, a BOM aprimorada não é referenciada por nenhuma regra ou aprimoramento que não seja a ProductList do aprimoramento de validação. Embora isso garanta que o aprimoramento da BOM funcione fora do mecanismo de regras, isso também significa que, se uma condição for atendida no aprimoramento da BOM, essas condições poderão ser atendidas novamente na próxima vez que a BOM for atualizada, porque qualquer mudança na BOM no script de aprimoramento da BOM que interrompe essa condição não será referenciada.

    Com conexões externas, isso não é um problema, desde que a resposta seja consistente. No entanto, se a resposta mudar quando acionada várias vezes, como ao gerar uma cadeia de caracteres ou salvar um determinado tempo, ela será atualizada sempre que a BOM for atualizada.

    O aprimoramento de resposta da BOM pode ser usado para:

    • Altere dinamicamente o preço dos produtos na BOM. Pode ser uma taxa de mudança estática ou dinâmica, como uma taxa de envio estática e impostos dinâmicos.
    • Mude atributos de produtos na BOM que dependem de alguma condição na BOM, como a quantidade de adesivos livres fornecidos depois que mais de USD 100 de imposto forem cotados.
    • Remova um item de linha da BOM.