8 min

ArmadiIhas na lógica de cupons: regras de empilhamento que não quebram carrinhos

Falhas na lógica de cupons podem quebrar totals no checkout. Aprenda regras de empilhamento, exclusões e padrões testáveis para evitar descontos duplos e totais negativos.

ArmadiIhas na lógica de cupons: regras de empilhamento que não quebram carrinhos

Por que a lógica de promoções quebra com frequência

Promoções parecem simples até você colocá-las em um checkout real. Um carrinho está sempre mudando, mas descontos costumam ser escritos como regras pontuais. É nesse espaço que a maioria das armadilhas de lógica de cupons aparece.

O difícil é que uma única nova regra pode alterar os totais em toda parte. Adicione “10% de desconto, mas não em itens em promoção” e você precisa decidir o que significa “em promoção”, quando isso é verificado e sobre qual valor os 10% incidem. Se outra promoção também impacta os mesmos itens, a ordem importa, e a ordem muda o preço.

Muitas equipes também misturam matemática com regras de negócio. Um remendo rápido como “limitar desconto ao subtotal” é copiado em três lugares, e logo você tem respostas diferentes dependendo de onde o total é calculado (página do carrinho, checkout, fatura, e-mail).

Os momentos de maior risco são quando seu sistema recalcula preços:

  • Atualizações do carrinho: alteração de quantidade, remoção de item, troca de método de envio
  • Edições após pagamento: mudança de endereço, cancelamentos parciais, substituição de item
  • Reembolsos e devoluções: rateio entre itens, ajustes de imposto, crédito em loja
  • Mudanças de moeda ou modo fiscal: preço líquido vs bruto, totais com imposto incluso

Um pequeno exemplo: um cliente adiciona um bundle, aplica um cupom de “$20 de desconto em $100”, depois remove um item. Se seu código ainda “lembra” o subtotal antigo, você pode acabar dando $20 de desconto a um carrinho de $85, ou até tornar a linha de um item negativa.

Ao final deste post, você deverá conseguir prevenir as falhas de promoção mais comuns: desconto duplo, totais inconsistentes entre telas, totais negativos, descontos aplicados a itens excluídos e reembolsos que não correspondem ao que o cliente pagou originalmente.

Comece com regras claras de empilhamento e prioridade

A maioria das armadilhas começa com uma frase em falta: quais descontos podem se aplicar juntos e em que ordem. Se você não consegue explicar as regras de empilhamento em linguagem clara, seu carrinho eventualmente fará algo surpreendente.

Defina empilhamento com declarações simples de sim ou não. Por exemplo: “Um cupom manual por pedido. Promoções automáticas ainda podem se aplicar, a menos que o cupom diga que as bloqueia.” Essa linha evita combinações aleatórias que levam ao desconto duplo.

Separe descontos a nível de item dos descontos a nível de pedido desde o início. Regras a nível de item mudam o preço de produtos específicos (como 20% em sapatos). Regras a nível de pedido mudam o total (como $10 fora do carrinho). Misturá-los sem estrutura é como os totais se desencontram entre páginas de produto, carrinho e checkout.

Decida o que significa “melhor oferta” antes de codificar. Muitas equipes escolhem “máxima economia”, mas isso pode violar limites mínimos de preço. Você também pode precisar de regras como “nunca descontar abaixo do custo” ou “nunca tornar o frete negativo”. Escolha um vencedor claro para que o motor não fique adivinhando.

Uma ordem de prioridade simples mantém os conflitos previsíveis:

  • Promoções automáticas primeiro (regras de catálogo ou sazonais)
  • Cupom manual em seguida (o que o cliente digitou)
  • Crédito na loja ou gift card por último (forma de pagamento, não desconto)
  • Impostos e frete recalculados após descontos

Exemplo: um carrinho tem 10% automático em todos os itens, mais um cupom de $15 em pedidos acima de $100. Se sua prioridade disser automático primeiro, você responde claramente: o limiar de $100 usa o subtotal pré-desconto ou o subtotal descontado? Escreva isso e mantenha consistente em todo lugar.

Depois que essas escolhas estiverem documentadas, suas regras de empilhamento viram regras testáveis, não comportamento oculto. Essa é a forma mais rápida de evitar armadilhas depois.

Modele descontos como dados simples e explícitos

Muitas falhas começam quando descontos vivem como checagens if-else espalhadas pelo código do checkout. Uma abordagem mais segura é tratar cada promoção como dados com um tipo, escopo e limites claros. Assim, a matemática do carrinho vira um avaliador pequeno e previsível.

Comece nomeando o tipo de desconto, não a ideia de marketing. A maioria das promoções se encaixa em algumas formas: porcentagem, valor fixo, item grátis (compre X leve Y) e frete grátis. Quando você consegue expressar uma promoção usando um desses tipos, evita casos especiais difíceis de testar.

Em seguida, torne o escopo explícito. A mesma porcentagem se comporta muito diferente dependendo do que mira. Defina se ela se aplica ao pedido inteiro, a uma categoria, a um produto, a uma linha ou ao frete. Se o escopo estiver confuso, você vai acabar descontando o subtotal errado ou aplicando desconto duas vezes.

Capture restrições como campos, não comentários no código. Comuns são gasto mínimo, primeira compra apenas e intervalo de datas. Também registre como deve se comportar com preços já em promoção: empilhar por cima, aplicar ao preço original ou excluir itens em promoção.

Um esquema compacto de regra pode incluir:

  • type (percent, fixed, free_item, free_shipping)
  • scope (order, category, product, item, shipping)
  • constraints (min_spend, first_order, start_at, end_at)
  • floors (min_total = 0, min_item_price, optional min_margin)
  • rounding policy (per item vs per order)

Finalmente, adicione limites de preço que o motor deve sempre respeitar: totais nunca abaixo de zero, e se o negócio exigir, itens nunca abaixo do custo (ou abaixo de um preço mínimo definido). Se você construir isso, evita totais negativos e casos extremos de “pagamos o cliente”.

Se prototipar um motor de descontos no Koder.ai, mantenha esses campos visíveis no modo de planejamento para que o avaliador permaneça simples e testável enquanto adiciona mais promoções.

Passo a passo: uma maneira segura de avaliar promoções

A maioria das falhas ocorre quando verificações de elegibilidade e matemática se misturam. Um padrão mais seguro é em duas fases: primeiro decida o que pode se aplicar, depois calcule os valores. Essa separação torna as regras legíveis e facilita prevenir estados ruins (como totais negativos).

Uma ordem de avaliação determinística

Use a mesma ordem sempre, mesmo que as promoções cheguem em ordem diferente pela UI ou API. Determinismo importa porque transforma “por que este carrinho mudou?” em uma pergunta que você consegue responder.

Um fluxo simples que funciona bem:

  • Validar entradas: formato do código, janela de datas, escopo do cliente, moeda e que os preços não são negativos.
  • Selecionar promoções elegíveis: rode apenas elegibilidade (sem dinheiro ainda). Construa uma lista de candidatos.
  • Resolver empilhamento e prioridade: aplique suas regras de empilhamento (ex: “no máximo uma promoção a nível de pedido”) e critérios de desempate (prioridade, então maior valor, então ID estável).
  • Aplicar cálculos: compute descontos usando uma base consistente (pré-imposto vs pós-imposto, frete incluído ou não) e regras de arredondamento.
  • Resumir totais: recalcule os totais do pedido a partir dos totais por linha, então limite em zero e aplique máximos de desconto.

Registre um detalhamento e trilha de auditoria

Quando aplicar promoções, não armazene apenas um “total de desconto”. Mantenha um detalhamento por linha e por pedido para que você possa reconciliar totais e explicá-los.

No mínimo, registre:

  • Qual regra ou promoção aplicou (ID e versão) e sua prioridade
  • Por que aplicou (fatos de elegibilidade como “categoria=sapatos”, “subtotal do carrinho \u003e= 50”)
  • O que mudou (IDs de linhas afetadas, valor base, valor do desconto, arredondamento)
  • O que impediu (ex: “bloqueado por exclusão: já tem desconto a nível de item”)

Exemplo: um carrinho tem dois itens, um já está em promoção. Fase 1 marca o cupom elegível apenas para o item em preço cheio. Fase 2 aplica 10% nessa linha, deixa a linha em promoção inalterada e então recalcula os totais do pedido a partir do detalhamento por linha para não aplicar desconto duplo.

Codifique exclusões sem criar lógica espaguete

Envie um serviço de promoções testável
Implemente e hospede seu serviço de promoções rapidamente para que os testes reflitam o comportamento de produção.

A maioria das armadilhas surge quando exclusões ficam escondidas em ramos especiais como “se código é X, pule Y.” Funciona para uma promoção, depois quebra quando chega a próxima.

Um padrão mais seguro é: mantenha um fluxo único de avaliação e faça das exclusões um conjunto de checagens que possam rejeitar uma combinação de promoções antes de calcular qualquer valor. Assim, descontos nunca ficam meio aplicados.

Trate exclusões como dados, não ramificações

Ao invés de hardcodar comportamentos, dê a cada promoção um pequeno “perfil de compatibilidade” explícito. Por exemplo: tipo de promoção (cupom vs promoção automática), escopo (itens, frete, pedido) e regras de combinação.

Dê suporte a ambos:

  • lista de “não pode combinar com” (denylist): promoção A bloqueia B.
  • lista de “só pode combinar com” (allowlist): promoção A só empilha com um conjunto nomeado.
  • flags de regra como “bloqueia promoções automáticas” ou “requer nenhum outro cupom.”

A chave é que o motor faz as mesmas perguntas para toda promoção e então decide se o conjunto é válido.

Deixe conflitos explícitos, incluindo promoções automáticas

Promoções automáticas costumam ser aplicadas primeiro, então chega um cupom que as substitui silenciosamente. Decida antecipadamente o que deve acontecer:

  • Cupom empilha por cima da promoção
  • Cupom aplica só a itens não promocionais
  • Cupom é rejeitado se houver promoção

Escolha um por promoção e codifique isso como uma checagem, não como um caminho de cálculo alternativo.

Uma forma prática de evitar surpresas é validar simetria. Se “WELCOME10 não pode combinar com FREESHIP” deve ser mútuo, encode isso para que ambos os lados bloqueiem. Se não for mútuo, que isso seja intencional e visível nos dados.

Exemplo: está ocorrendo uma venda automática de 15% no site. Um cliente insere um cupom de 20% destinado apenas a itens em preço cheio. Suas checagens devem rejeitar itens em promoção para o cupom antes de computar totais, em vez de descontá-los e depois tentar consertar os números.

Se você construir regras de desconto em uma plataforma como Koder.ai, mantenha essas checagens como uma camada separada e testável para poder mudar regras sem reescrever a matemática.

Casos de borda que causam totais divergentes

A maioria das disputas de cupom não é sobre o desconto em destaque. Acontecem quando o mesmo carrinho é calculado de duas formas ligeiramente diferentes, e o cliente vê um número no carrinho e outro no checkout.

Comece travando sua ordem de operações. Decida e documente se descontos a nível de item acontecem antes dos descontos a nível de pedido, e onde o frete entra. Uma regra comum é: descontos por item primeiro, depois desconto de pedido sobre o subtotal remanescente, e por último descontos de frete. Seja qual for a escolha, use a mesma sequência exata em todo lugar que mostrar um total.

Imposto é a próxima armadilha. Se seus preços incluem imposto, um desconto reduz também a parte do imposto. Se os preços são sem imposto, o imposto é calculado após os descontos. Misturar esses modelos em diferentes partes do fluxo é um clássico porque dois cálculos corretos ainda podem divergir se assumirem bases fiscais diferentes.

Problemas de arredondamento parecem pequenos, mas geram muitos tickets de suporte. Decida se arredonda por linha (cada SKU após desconto) ou apenas no nível do pedido, e cumpra a precisão da moeda. Com cupons percentuais, o arredondamento por linha pode divergir alguns centavos em comparação com o arredondamento por pedido, especialmente com muitos itens baratos.

Aqui estão casos de borda a tratar explicitamente:

  • Reembolsos e devoluções parciais: rateie descontos entre itens para que reembolsos não excedam o pago.
  • Edições no carrinho após aplicar cupom: reavalie elegibilidade e limites quando itens são adicionados ou removidos.
  • Mudanças de frete: trocar endereço ou método pode alterar valores tributáveis e elegibilidade de desconto de frete.
  • Mudança de quantidades: repetir o mesmo item pode cruzar limites (ex.: gasto mínimo ou compre-X-ganhe-Y).
  • Itens com tributação mista: alguns itens podem ser isentos, mas ainda elegíveis a cupons.

Um exemplo concreto: cupom de 10% no pedido mais frete grátis em pedidos acima de $50. Se o cupom aplica antes da verificação do limiar, o subtotal descontado pode cair abaixo de $50 e o frete deixa de ser grátis. Escolha uma interpretação, encode-a como regra e mantenha consistente em carrinho, checkout e reembolsos.

Bugs comuns de promoções e como eles acontecem

A maioria das falhas aparece quando o carrinho é avaliado por mais de um caminho. Uma promoção pode ser aplicada a nível de linha em um lugar e novamente a nível de pedido em outro, e ambos parecem “corretos” isoladamente.

Aqui estão os bugs mais frequentes e a causa usual de cada um:

  • Desconto duplo no mesmo item: a mesma promoção é aplicada uma vez no preço do item e novamente ao calcular o total do pedido, muitas vezes porque dois serviços “ajudaram” aplicando descontos.
  • Totais negativos ou linhas negativas: um desconto de valor fixo é permitido exceder o montante elegível (por exemplo, $20 off aplicado a um subtotal elegível de $12) sem piso em zero.
  • Percentual aplicado após outro desconto por acidente: o motor aplica 10% sobre um preço já reduzido quando a regra pretendia “10% sobre o preço de tabela”, porque o código usa o preço corrente em vez do preço base.
  • Gasto mínimo checado contra o subtotal errado: a regra verifica o subtotal pré-desconto, mas o negócio esperava pós-desconto (ou o inverso), levando a promoções que aplicam ou falham de forma surpreendente.
  • Itens excluídos ainda recebem o cupom: elegibilidade depende de tags de produto, mas tags ausentes ou inconsistentes (ou um caminho de fallback) tratam itens desconhecidos como elegíveis.

Um exemplo concreto: um carrinho tem dois itens, um elegível e um excluído. Se o motor computa o “subtotal elegível” corretamente para a promoção percentual, mas depois subtrai um desconto fixo do total do pedido completo, o item excluído acaba sendo descontado na prática.

O padrão mais seguro é computar cada promoção contra um “montante elegível” explícito e retornar um ajuste limitado (nunca abaixo de zero), além de um rastro claro do que tocou. Se você gerar seu motor de descontos em uma ferramenta como Koder.ai, faça-o exportar o rastro em dados simples para que seus testes possam afirmar exatamente quais linhas foram elegíveis e qual subtotal foi usado.

Torne regras testáveis com a suíte certa

Seja recompensado pelo seu build
Mostre o que você construiu com Koder.ai e ganhe créditos por criar conteúdo sobre isso.

A maioria das falhas aparece porque testes só verificam o total final. Uma boa suíte checa tanto elegibilidade (esta promoção deveria aplicar?) quanto matemática (quanto ela deve descontar?), com um detalhamento legível que você possa comparar ao longo do tempo.

Construa testes do pequeno ao real

Comece com testes unitários que isolam uma regra por vez. Mantenha a entrada pequena, depois expanda para cenários completos de carrinho.

  • Testes unitários de elegibilidade: a promoção se aplica dado tipo de cliente, datas, tags de produto e gasto mínimo?
  • Testes unitários de matemática: dado um subtotal elegível fixo, o cálculo bate com regras de arredondamento e moeda?
  • Testes de cenário: itens mistos, quantidades, frete, imposto e algumas promoções competindo para aplicar.
  • Testes de “carrinho alterado”: preço atualizado, item removido ou quantidade alterada entre avaliação e checkout.
  • Testes de snapshot do detalhamento: guarde a alocação esperada por linha, não apenas o total final.

Depois que tiver cobertura, adicione algumas checagens “sempre verdade”. Elas pegam os casos estranhos que você não pensou escrever manualmente.

  • Total nunca fica abaixo de 0.00.
  • Um desconto nunca aumenta o total.
  • Desconto aplicado nunca é maior que sua base elegível.
  • Remover um item inelegível não pode tornar o desconto maior.

Um pequeno exemplo de carrinho

Imagine um carrinho com 2 itens: uma camisa de $40 (elegível) e um gift card de $30 (excluído). Frete é $7. Uma promoção é “20% em vestuário, máximo $15”, mais uma segunda promoção “$10 off em pedidos acima de $50” que não pode empilhar com descontos percentuais.

Seu teste de cenário deve afirmar qual promoção vence (prioridade), confirmar que o gift card está excluído e verificar a alocação exata: 20% de $40 é $8, frete inalterado, total final correto. Salve esse detalhamento como snapshot dourado para que refatorações futuras não troquem silenciosamente qual promoção aplica ou comecem a descontar linhas excluídas.

Checklist rápido pré-lançamento

Antes de publicar uma nova promoção, faça uma última verificação com um checklist que pegue as falhas que os clientes percebem instantaneamente: totais estranhos, mensagens confusas e reembolsos que não batem. Essas checagens também ajudam a prevenir as armadilhas mais comuns porque forçam suas regras a se comportarem igual em todo carrinho.

Rode essas checagens contra um pequeno conjunto de “carrinhos complicados” (um item, muitos itens, taxas mistas, frete e uma linha de alta quantidade). Salve os carrinhos para reexecutá-los sempre que mudar código de precificação.

As cinco checagens que pegam a maioria das falhas

  • Pisos nos totais: Total final do pedido e preço líquido de cada linha nunca devem ficar abaixo de zero. Se um desconto excederia o aplicável, limite-o e registre o valor limitado.
  • Matemática explicável: O detalhamento de descontos mostrado ao comprador (por promoção, por linha, por frete) deve somar exatamente ao valor pago. Se você não consegue explicar em uma frase, as regras estão vagas demais.
  • Uma política de empilhamento, sem surpresas: Decida e verifique o que pode empilhar (cupom com promoção automática, percentual com fixo, desconto de frete com desconto de item). Torne a ordem de prioridade explícita e confirme que bate com o que o suporte irá dizer.
  • Arredondamento consistente: Escolha uma regra de arredondamento (por linha vs por pedido, half-up vs bankers, casas decimais por moeda). Documente e teste com preços como $0.99, quantidades como 3 e descontos percentuais mistos.
  • Devoluções e reembolsos corretos: Devoluções parciais devem reembolsar a parcela correta de descontos, imposto e frete. Teste “devolver 1 de 3 itens”, “devolver o item com desconto primeiro” e “reembolsar após expirar a promoção”.

Se você construir regras em um gerador como Koder.ai, coloque esses casos como testes automatizados junto às definições das regras. O objetivo é simples: qualquer promoção futura deve falhar rápido nos testes em vez de falhar no carrinho de um cliente.

Um cenário realista de empilhamento para validar suas regras

Modele descontos como dados
Transforme empilhamento, exclusões e limites em campos explícitos para que a matemática do checkout permaneça previsível.

Aqui está um pequeno carrinho que expõe a maioria das armadilhas sem ficar complicado.

Assuma estas regras (escreva-as exatamente assim no seu sistema):

  • Promoção automática aplica primeiro, a nível de item, apenas em itens elegíveis em preço cheio
  • Cupom é a nível de pedido, $15 off, requer pelo menos $100 em mercadorias elegíveis
  • “Mercadoria elegível” exclui itens em promoção, frete e imposto
  • Desconto do cupom não pode exceder o subtotal elegível após promos anteriores
  • Imposto é calculado após descontos (sobre mercadoria descontada mais frete)

Carrinho e promoções

Carrinho:

LinhaPreçoObservações
Item A$60preço cheio, elegível
Item B$40preço cheio, elegível
Item C$30item em promoção, excluído
Frete$8taxa

Promoções:

  • Promo 1: promoção automática de fim de semana 10% em itens elegíveis
  • Promo 2: cupom $15 off, gasto mínimo $100 em mercadoria elegível, exclui itens em promoção

Passo a passo e detalhamento final

  1. Verifique o mínimo do cupom: mercadoria elegível antes de descontos é $60 + $40 = $100, então o cupom pode aplicar.

  2. Aplique Promo 1 (10% nos itens elegíveis): $100 x 10% = $10 de desconto. Subtotal elegível torna-se $90.

  3. Aplique Promo 2 ($15 off): o teto é $90, então os $15 aplicam por completo. Novo subtotal elegível: $75.

Totais:

  • Mercadoria: elegível $75 + item em promoção $30 = $105
  • Frete: $8
  • Imposto (8%): (105 + 8) x 0.08 = $9.04
  • Total final: $105 + $8 + $9.04 = $122.04

Agora altere uma coisa: o cliente remove o Item B ($40). A mercadoria elegível vira $60, então o cupom falha no mínimo. Apenas a promoção automática de 10% permanece: Item A vira $54, mercadoria é $54 + $30 = $84, e o total final vira $99.36. Esse tipo de “pequena edição” costuma quebrar carrinhos se a elegibilidade e a ordem não forem explícitas.

Próximos passos: lançar promoções com segurança e mantê-las sustentáveis

A forma mais rápida de evitar armadilhas é tratar promoções como regras de produto, não como “um pouco de matemática no checkout”. Antes de lançar, escreva uma especificação curta que qualquer pessoa da equipe possa ler e concordar.

Inclua quatro coisas, em linguagem simples:

  • Regras de empilhamento (o que pode combinar e o que não pode)
  • Ordem de prioridade (qual desconto vence quando dois miram os mesmos itens)
  • Exclusões (categorias, marcas, itens em promoção, assinaturas, gift cards)
  • Pisos e limites (subtotal mínimo, desconto máximo e “nunca abaixo de $0”)

Após o lançamento, monitore totais como você monitora erros. Um bug de desconto muitas vezes parece um pedido válido até que a equipe financeira o reveja.

Configure monitoramento que sinalize pedidos com padrões incomuns, como totais próximos de zero, totais negativos, descontos maiores que o subtotal ou picos repentinos de carrinhos “100% off”. Direcione os alertas para o mesmo lugar dos erros do checkout e mantenha um pequeno playbook para desabilitar uma promoção com segurança.

Para adicionar novas promoções sem regressões, use um fluxo repetível: atualize a especificação primeiro, codifique a regra como dados (não ramificações), adicione testes para alguns carrinhos “normais” mais um ou dois casos de borda, então rode a suíte completa antes de fazer merge.

Se quiser implementar e iterar mais rápido, você pode prototipar fluxos do motor de promoções no Koder.ai usando o modo de planejamento, depois usar snapshots e rollback enquanto refina seus testes. Isso ajuda a experimentar mudanças nas regras sem perder uma versão conhecida e estável.

Perguntas frequentes

Quais são as regras de acúmulo de cupons?

Defina uma política de acúmulo antes de programar. Especifique quais promoções automáticas, cupons, ofertas de frete e créditos da loja podem ser combinados e defina a ordem em que o carrinho os avalia.

Como impedir que um cupom gere um total negativo?

Aplique o desconto fixo somente ao valor elegível e limite o resultado a zero. Recalcule esse limite sempre que o carrinho mudar, em vez de reutilizar um subtotal anterior.

Como um cupom pode excluir itens em promoção?

Mantenha os itens em promoção no carrinho, mas exclua-os do subtotal elegível do cupom antes de calcular o desconto. Armazene essa exclusão na regra da promoção para que todas as telas usem o mesmo resultado.

As promoções automáticas devem ser aplicadas antes dos códigos de cupom?

Use uma sequência de avaliação fixa. Por exemplo, aplique primeiro as promoções de itens, depois os cupons do pedido, em seguida as ofertas de frete e calcule os impostos depois, se a sua política tributária exigir.

Quais dados uma regra de desconto deve incluir?

Defina para cada promoção um tipo, escopo, restrições, exclusões, limites mínimos e política de arredondamento. Assim, o avaliador pode usar a mesma estrutura de dados em vez de casos especiais dispersos.

Por que preciso de um histórico de auditoria das promoções?

Registre o ID e a versão da promoção aplicada, as linhas afetadas, o valor-base elegível, o valor do desconto, o resultado do arredondamento e quaisquer promoções bloqueadas. Isso permite que as equipes de suporte e finanças expliquem o preço final sem reconstruir o pedido manualmente.

Quando o checkout deve recalcular um desconto?

Reavalie todas as promoções quando a quantidade, os itens, o endereço, o método de envio, a moeda ou as configurações tributárias mudarem. Um cupom válido pode se tornar inválido depois que o cliente remove um item ou fica abaixo de um limite de gasto.

Como evitar divergências entre os totais do carrinho e do checkout?

Escolha um método de arredondamento, como arredondar cada linha ou somente o total do pedido, e use-o em todos os lugares. Pequenas diferenças ficam visíveis quando um desconto percentual é aplicado a vários itens de baixo preço.

Como os reembolsos parciais devem lidar com descontos?

Distribua o desconto original entre os itens comprados e reembolse somente a parcela paga por aquele item, incluindo o ajuste tributário correspondente. Não calcule o reembolso com base nas regras atuais da promoção, pois ela pode ter expirado ou o carrinho pode ter mudado.

Quais testes encontram a maioria dos erros em promoções?

Teste elegibilidade, cálculos, exclusões, conflitos de acúmulo, edições no carrinho, arredondamento, impostos e devoluções parciais. Verifique também que nenhum desconto excede sua base elegível e que os totais nunca ficam abaixo de zero.

Related posts