{"section":"tutorials","requestedLocale":"pt","requestedSlug":"promocao-regular-com-desconto-nominal-baseado-em-formula","locale":"pt","slug":"promocao-regular-com-desconto-nominal-baseado-em-formula","path":"docs/pt/tutorials/promoções-e-taxas/promoções/promocao-regular-com-desconto-nominal-baseado-em-formula.md","branch":"main","content":"Ao criar uma [promoção regular](/pt/docs/tutorials/promocao-regular-pt) em **Promoções** > **Promoções** > **Criar Promoção** > **Promoção Regular**, uma das opções disponíveis no momento de escolher o tipo e o valor do desconto é o __Desconto nominal baseado em fórmula__.\n\nSelecionando esse tipo de desconto, você precisa criar uma fórmula para definir qual será o cálculo do desconto aplicado. Neste artigo, explicamos como construir uma fórmula para atender aos objetivos da sua promoção.\n\n![tipo-desconto-formula](https://cdn.statically.io/gh/vtexdocs/help-center-content/refs/heads/main/docs/pt/tutorials/promoções-e-taxas/promoções/promocao-regular-com-desconto-nominal-baseado-em-formula_1.png)\n\nPara construir sua fórmula, você pode utilizar [variáveis](/pt/docs/tutorials/promocao-regular-com-desconto-nominal-baseado-em-formula#variaveis), como total, freight e quantity, realizar [operações](/pt/docs/tutorials/promocao-regular-com-desconto-nominal-baseado-em-formula#operacoes) (soma, subtração, multiplicação e divisão) e aplicar [funções](/pt/docs/tutorials/promocao-regular-com-desconto-nominal-baseado-em-formula#funcoes), como `min` , `max` e `floor`.\n\n## Variáveis\n\nPara construir a fórmula da sua promoção, você pode utilizar as variáveis descritas a seguir.\n\n| **Variável** | **Descrição** |\n|---|---|\n| `total` | Soma dos preços dos produtos selecionados. |\n| `freight` | Valor do frete. O frete utilizado na fórmula será o menor disponível para o pedido, independentemente da seleção do cliente. |\n| `quantity` | Quantidade total de itens no carrinho. |\n\n## Operações\n\nPara realizar operações matemáticas, use os sinais convencionais em sua fórmula:\n\n| **Operação** | **Sinal** |\n|:---:|:---:|\n| Soma | `+` |\n| Subtração | `-` |\n| Multiplicação | `*` |\n| Divisão | `/` |\n\nVocê pode fazer uma operação de multiplicação para calcular o percentual de desconto desejado utilizando as [variáveis](#variaveis) que quiser. Exemplo: para aplicar um desconto de 50% sobre o valor total dos produtos selecionados, a fórmula seria `total * 0.5`.\n\nPara priorizar um cálculo antes de outro, escreva o cálculo que deve ser realizado antes entre parênteses `()`. Exemplo: se uma loja quer aplicar o desconto de 40% sobre o valor total somado ao frete, a fórmula deve ser `(total + freight) * 0.4`.\n\n> ℹ️ Use sempre o ponto (`.`) como separador decimal.\n\n## Funções\n\nSe desejar, você pode usar a função `min` para [limitar o valor do desconto](/pt/docs/tutorials/promocao-regular-com-desconto-nominal-baseado-em-formula#limitar-o-valor-do-desconto) ou a função `max` para [priorizar o maior desconto possível](/pt/docs/tutorials/promocao-regular-com-desconto-nominal-baseado-em-formula#priorizar-o-maior-desconto-possivel). A função `floor` permite obter a parte inteira de um valor, descartando a parte decimal. Veja mais detalhes sobre como aplicar essas funções a seguir.\n\n> ℹ️ Ao utilizar funções, é necessário incluir um espaço entre a função e os parênteses de abertura. Exemplo: `min (total * 0.2, 10)`.\n\n### Limitar o valor do desconto\n\nCaso queira limitar o valor máximo do desconto, você pode utilizar a função `min`, que apresenta como resultado o menor valor de um conjunto de valores.\n\nImagine o seguinte cenário: uma loja pretende aplicar um desconto de 20% sobre o valor total do carrinho, limitado a R$10.\n\nNesse caso, a fórmula precisa informar que se `total * 0.2` for maior que `10`, o desconto aplicado será somente `10`. Para isso, é possível estruturar a fórmula utilizando a função `min` conforme abaixo:\n\n```\nmin (total * 0.2, 10)\n```\n\nAssim, a promoção vai aplicar o menor valor de desconto em cada caso, comparando o cálculo de 20% do total ao valor limite de R$10. Veja a aplicação prática desta promoção nos cenários a seguir.\n\n#### Cenário 1\n\nUm cliente adicionou ao carrinho um item cujo preço é R$45. Ao calcular 20% do total do preço, o resultado é 9, já que `total * 0.2 = 9`. Como 9 está abaixo do valor limite de desconto, o desconto aplicado será R$9.\n\n![cenario-1](https://cdn.statically.io/gh/vtexdocs/help-center-content/refs/heads/main/docs/pt/tutorials/promoções-e-taxas/promoções/promocao-regular-com-desconto-nominal-baseado-em-formula_2.png)\n\n#### Cenário 2\n\nOutro cliente adicionou ao carrinho um item cujo preço é R$ 2600. Calculando 20% desse valor, o resultado é 520, já que `total * 0.2 = 520`. Como esse valor está acima do limite (R$10), o desconto aplicado será de R$10.\n\n![cenario-2](https://cdn.statically.io/gh/vtexdocs/help-center-content/refs/heads/main/docs/pt/tutorials/promoções-e-taxas/promoções/promocao-regular-com-desconto-nominal-baseado-em-formula_3.png)\n\n#### Cenário 3\n\nUm terceiro cliente adicionou dois itens ao carrinho: um cujo preço é R$100 e outro cujo preço é R$2600. A soma desses valores é R$2700, visto que `total = 2700`. Ao calcular 20% do valor total, obtemos o resultado de 540, já que `total * 0.2 = 540`. Como esse valor está acima do limite (R$10), o desconto total aplicado será de R$10.\n\n![cenario-3](https://cdn.statically.io/gh/vtexdocs/help-center-content/refs/heads/main/docs/pt/tutorials/promoções-e-taxas/promoções/promocao-regular-com-desconto-nominal-baseado-em-formula_4.png)\n\nO desconto total de R$10 é distribuído proporcionalmente entre os itens, considerando o preço e a quantidade de cada um. Essa distribuição é feita automaticamente pela plataforma, seguindo a lógica explicada a seguir.\n\nPrimeiro, o valor total do desconto (R$10) é dividido pelo valor total dos itens (R$2700), da seguinte forma: `10 / 2700 = 0,0037037`.\n\nEm seguida, multiplicando 0,0037037 pelo valor do primeiro item (R$100), obtemos o seguinte resultado: `0,0037037 * 100 = 0,37037037`. Logo, a quantia descontada do preço do primeiro item será arredondada para R$0,37. O preço final será R$99,63.\n\nJá multiplicando 0,0037037 pelo valor do segundo item, obtemos o seguinte resultado: `0,0037037 * 2600 = 9,62962962963`. Portanto, a quantia descontada do preço do segundo item será arredondada para R$9,63. O preço final será R$2590,37.\n\n### Priorizar o maior desconto possível\n\nPara priorizar o maior desconto possível, você pode usar a função `max`, que apresenta como resultado o maior valor de um conjunto de valores.\n\nImagine que uma loja queira realizar uma promoção que aplique um desconto de 10% sobre o valor total do pedido somado ao frete, com desconto mínimo de 5 reais.\n\nA fórmula precisa estipular que se (`total + freight) * 0.1` for menor que `5`, o desconto aplicado será `5`. Logo, ela deve ser estruturada da seguinte forma:\n\n```\nmax ((total + freight) * 0.1, 5)\n```\n\nAssim, a promoção vai aplicar o maior valor de desconto em cada caso, comparando o valor mínimo de R$5 ao cálculo de 10% do total somado ao frete.\n\n### Aplicar desconto múltiplo com valor arredondado para baixo\n\nPara aplicar um desconto múltiplo com base no valor arredondado para baixo, use a função `floor`, que arredonda o resultado de uma divisão para o inteiro inferior.\n\nPor exemplo, em uma promoção que oferece um desconto de R$10 para cada R$100 em compras, calcule quantas vezes R$100 se encaixa no valor total do pedido, arredondando para baixo. Multiplique então o valor de R$10 pela quantidade de parcelas inteiras de R$100 no total do pedido para determinar o desconto.\n\nVeja abaixo a estrutura da fórmula que permite calcular o desconto:\n\n```\nfloor(total / 100) * 10\n```\n\nEssa promoção aplica o valor máximo de desconto possível com base no total da compra, considerando apenas múltiplos inteiros de R$100. Por exemplo, se o total do pedido for R$250, o cálculo aplicará um desconto de R$20, já que R$100 cabe duas vezes em R$250."}