Descontos e cupons
Campanhas que reduzem o valor da compra. Podem exigir um código digitado pelo cliente (cupom) ou aplicar-se automaticamente quando as condições são atendidas.
Como o módulo se organiza
Quem pode acessar
discounts.view— ver campanhas.discounts.manage— criar e editar campanhas.discounts.generate_codessensível — gerar códigos.discounts.view_redemptions— abrir a tela de resgates.
Como acessar
Menu lateral → Descontos. O submenu Resgates mostra os usos.
Tipos de desconto
| Tipo | Efeito | Restrição |
|---|---|---|
| Percentual (%) | Reduz um percentual do valor. | Respeita o teto de abatimento, se definido. |
| Valor fixo (R$) | Reduz um valor absoluto. | Respeita o teto de abatimento, se definido. |
| Preço fixo (R$ no item) | Força o preço de um item específico. | Proibido no carrinho inteiro — só em escopo de item. |
Escopo: sobre o que o desconto incide
| Escopo | Alvo |
|---|---|
| Carrinho inteiro | Não usa alvo. |
| Atração | Exige escolher a atração. |
| Passaporte | Exige escolher o passaporte. |
| Produto | Exige escolher o produto. |
Sabor: com ou sem código
- Cupom (com código) — a campanha gera códigos que o cliente digita. Aceita limites de uso.
- Sem código — aplica-se automaticamente quando as condições são atendidas.
Se a campanha tinha limites de uso total ou por CPF e você a converte para “sem código”, esses limites são descartados. O formulário exibe um aviso amarelo antes de salvar.
Limites e validade
| Campo | Significado | Em branco |
|---|---|---|
| Teto de abatimento (R$) | Limite máximo de desconto por aplicação. | Sem teto |
| Valor mínimo do pedido | Elegível só acima deste total. | Sem mínimo |
| Prioridade | Maior prioridade aplica primeiro na cascata. | Ordem padrão |
| Início e fim da validade | Janela em que a campanha vale. | Sem limite de data |
| Uso total | Somatório de usos de todos os códigos. | Ilimitado |
| Usos por CPF | Quantas vezes o mesmo CPF pode usar a campanha. | Ilimitado |
Se a campanha permite um uso por CPF, gerar dez códigos não permite que a mesma pessoa use dez vezes: o limite é contado na campanha inteira.
Acúmulo e ordem de aplicação
- Se algum desconto aplicável for marcado como não acumulável, ele se torna exclusivo: nenhum outro entra.
- Se todos forem acumuláveis, aplicam-se em cascata por prioridade — cada um sobre o resultado do anterior.
- O total nunca fica negativo: o piso é zero.
- O desconto nunca aumenta o valor da compra.
- O cálculo é determinístico e o arredondamento acontece item a item, sem perder centavos.
Códigos
- São gerados pelo sistema, sem caracteres que se confundam.
- São únicos por empresa — o mesmo código pode existir em outra empresa sem conflito.
- Cada código tem o próprio limite de usos, além do limite geral da campanha.
Resgates
A tela Descontos → Resgates lista cada uso confirmado, com campanha, código, CPF e venda. Ela é a fonte de verdade dos limites — o contador exibido no código é apenas um espelho.
- O resgate só conta quando a venda é confirmada, nunca em carrinho abandonado.
- Cancelamento total da venda reverte o resgate e devolve o uso, se o cupom ainda estiver válido.
- Estorno parcial mantém o resgate — o uso não volta.
Regras de negócio importantes
- O cupom é revalidado e recalculado no servidor ao gravar a venda. A tela só exibe.
- Se o carrinho mudar e o cupom deixar de ser elegível (por exemplo, o total cai abaixo do mínimo), a tela deixa de enviar o código para não travar o pagamento; a venda segue pelo valor cheio.
- Dois resgates simultâneos no último uso: só um passa.
- O campo “ignora promoção” existe no cadastro e é respeitado apenas na exibição. No cálculo server-side que define o valor cobrado, ele não é considerado — o desconto incide também sobre itens promocionais. Está em avaliação de produto.
- O desconto manual do PDV grava o valor e o motivo na venda, mas não gera linha de resgate. Ele não aparece no relatório de uso de cupons — é uma lacuna de auditoria conhecida.
Passo a passo: criar uma campanha de cupom
- Descontos → Novo.
- Dê um nome claro (por exemplo “Black Friday 20%”) e mantenha o status ativo.
- Escolha o sabor Cupom (com código).
- Escolha o tipo e informe o valor (percentual ou reais).
- Defina o escopo e, se for de item, o alvo.
- Configure os limites: teto, valor mínimo, validade, uso total e usos por CPF.
- Salve e gere os códigos (exige a permissão de geração).
- Teste na loja com um pedido de valor próximo ao mínimo, para conferir a elegibilidade.
- Acompanhe em Resgates conforme a campanha roda.
Erros e dúvidas comuns
| Situação | Motivo | Solução |
|---|---|---|
| O cupom não aplica no checkout | Fora da validade, abaixo do mínimo, limite atingido ou escopo não presente no carrinho | Conferir cada condição na campanha |
| O cliente diz que usou e o contador não subiu | A venda não foi confirmada | Verificar o status da venda |
| Preço fixo recusado | Foi configurado no escopo “carrinho inteiro” | Mudar o escopo para item |
| Dois cupons não somaram | Um deles não é acumulável | Revisar a configuração de acúmulo |
Boas práticas
- Defina sempre uma validade — campanhas sem data tendem a ser esquecidas ativas.
- Use limite por CPF em campanhas de aquisição, para evitar concentração.
- Prefira teto de abatimento em descontos percentuais sobre carrinhos grandes.
- Acompanhe Resgates durante a campanha; é lá que se enxerga o uso real.