Calcular um desconto de preço em níveis

Nível de codificação: iniciante
Duração: 10 minutos
Tipo de projeto: função personalizada

Objetivos

  • Entenda o que a solução faz.
  • Entenda o que os serviços do Apps Script fazem na solução.
  • Configure o script.
  • Execute o script.

Sobre esta solução

Se você oferecer um sistema de preços em níveis para seus clientes, essa função personalizada facilitará o cálculo dos valores de desconto dos seus preços.

Embora seja possível usar a função integrada SUMPRODUCT para fazer um cálculo de preços em níveis, usar SUMPRODUCT é mais complexo e menos flexível do que a função personalizada desta solução.

Captura de tela do exemplo de preços por nível

Como funciona

Um modelo de preços em níveis significa que o custo dos produtos ou serviços diminui com base na quantidade comprada.

Por exemplo, imagine que você tenha dois níveis, um com preço de US $0 a US$ 500 com desconto de 10% e outro de US $501 a US$ 1.000 com desconto de 20%. Se o preço total para o qual você precisa calcular um desconto for de US $700, o script multiplicará os primeiros US $500 por 10% e os US $200 restantes por 20%, para um desconto total de US$ 90.

Para um determinado preço total, o script passa pelos níveis especificados na tabela de preços. Para cada porção do preço total que está dentro de um nível, essa parte é multiplicada pelo valor percentual associado ao nível. O resultado é a soma do cálculo de cada camada.

Serviços do Apps Script

Esta solução usa o seguinte serviço:

  • Serviço de planilha: usa o valor fornecido e calcula qual parte do valor será multiplicada pelo desconto percentual de cada nível.

Pré-requisitos

Para usar essa amostra, você precisa dos seguintes pré-requisitos:

  • Uma Conta do Google (contas do Google Workspace podem exigir a aprovação do administrador).
  • Um navegador da Web com acesso à Internet.

Configurar o script

Clique no botão abaixo para fazer uma cópia da planilha Função personalizada de preços do nível. O projeto do Apps Script para esta solução está anexado à planilha.
Fazer uma cópia

Executar o script

  1. Na planilha copiada, a tabela na linha 16 mostra um exemplo de cálculo de preço para um produto de software como serviço (SaaS).
  2. Para calcular o valor do desconto, insira =tierPrice(C19,$B$3:$D$6) na célula C20. O preço final é atualizado na célula C21. Se você estiver em um local que usa vírgulas decimais, talvez seja necessário inserir =tierPrice(C19;$B$3:$D$6).

Revisar o código

Para analisar o código do Apps Script para esta solução, clique em Ver código-fonte abaixo:

Ver o código-fonte

Code.gs

solutions/custom-functions/tier-pricing/Code.js
// To learn how to use this script, refer to the documentation:
// https://developers.google.com/apps-script/samples/custom-functions/tier-pricing

/*
Copyright 2022 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/**
 * Calculates the tiered pricing discount.  
 *  
 * You must provide a value to calculate its discount. The value can be a string or a reference
 * to a cell that contains a string.
 * You must provide a data table range, for example, $B$4:$D$7, that includes the 
 * tier start, end, and percent columns. If your table has headers, don't include
 * the headers in the range.
 * 
 * @param {string} value The value to calculate the discount for, which can be a string or a 
 * reference to a cell that contains a string.
 * @param {string} table The tier table data range using A1 notation.
 * @return number The total discount amount for the value.
 * @customfunction
 *  
 */
function tierPrice(value, table) {
  let total = 0;
  // Creates an array for each row of the table and loops through each array.
  for (let [start, end, percent] of table) {
  // Checks if the value is less than the starting value of the tier. If it is less, the loop stops.
    if (value < start) {
      break;
    }
  // Calculates the portion of the value to be multiplied by the tier's percent value.
    let amount = Math.min(value, end) - start;
  // Multiplies the amount by the tier's percent value and adds the product to the total.
    total += amount * percent;
  }
  return total;
}

Modificações

Você pode editar a função personalizada o quanto quiser. Veja abaixo uma adição opcional para atualizar manualmente os resultados da função personalizada.

Atualizar resultados armazenados em cache

Ao contrário das funções integradas, o Google armazena em cache funções personalizadas para otimizar o desempenho. Portanto, se você alterar algo na sua função personalizada, como um valor que está sendo calculado, talvez isso não force uma atualização imediatamente. Para atualizar o resultado da função manualmente, siga estas etapas:

  1. Para adicionar uma caixa de seleção a uma célula vazia, clique em Inserir > Caixa de seleção.
  2. Adicione a célula que contém a caixa de seleção como um parâmetro extra da função personalizada. Por exemplo, se você adicionar uma caixa de seleção à célula D20, atualize a função tierPrice() na célula C20 para =tierPrice(C19,$B$3:$D$6,D20).
  3. Marque ou desmarque a caixa de seleção para atualizar os resultados da função personalizada.

Colaboradores

Esta amostra é mantida pelo Google com a ajuda de especialistas do Google Developers.

Próximas etapas