Regras de preço B2B
Como dar preço diferente por quantidade e por grupo de clientes e como a plataforma escolhe a regra.
No B2B, quem compra mais paga menos, e certos clientes têm condição própria. Uma regra de preço B2B liga um produto a uma faixa de quantidade (por exemplo, de 50 a 99 unidades) e a um preço, fixo ou com percentual de desconto, opcionalmente só para um grupo de usuários (distribuidores, por exemplo). Na vitrine, no carrinho e no checkout a plataforma procura as regras que casam com a quantidade e com o comprador e usa a mais barata. Estas rotas são do administrador da loja.
Esta seção também traz a exclusão de uma faixa de preço por quantidade (price-tiers), o mecanismo mais simples de "compre mais, pague menos" que vive dentro do produto.
Como funciona
Qual regra vale para uma compra
Para um produto, uma quantidade e um comprador, a plataforma considera as regras que cumprem todas estas condições:
is_activeétrue.min_qtyé menor ou igual à quantidade e (max_qtyé0ou maior ou igual à quantidade).usergroup_idestá vazio, ou o comprador pertence ao grupo.
Cada regra dá um preço: preço base - preço base × discount_bps ÷ 10000 quando discount_bps é maior que zero; senão price_cents. A regra que der o menor preço vence. priority só ordena a avaliação; ela desempata valores iguais, mas não faz uma regra mais cara vencer uma mais barata.
Ordem das fontes de preço
A plataforma parte do preço base e consulta, nesta ordem: as faixas de preço por quantidade do produto, a tabela de preço nomeada (quando existe uma para o comprador, ela substitui as faixas e dispensa as regras avulsas), as regras de preço B2B, a proposta de preço aceita e o desconto negociado pelo representante. Faixas, regras, propostas e descontos só entram se forem mais baratos que o preço já encontrado. Se o módulo b2b-pricing está desligado, vale o preço base.
Conceitos importantes
Preço fixo ou desconto
Defina um dos dois. Se discount_bps é maior que zero ele é usado e price_cents é ignorado, mesmo que preenchido.
Faixa de quantidade
min_qty vai de 1 em diante; max_qty 0 significa "sem teto". Duas regras para o mesmo produto e grupo com faixas que se sobrepõem são permitidas, e a mais barata vence naquela quantidade.
Faixa de preço por quantidade (price-tiers)
É a escada de preço que pertence ao produto: "a partir de N unidades, R$ X cada" (ou X% de desconto), para todos os clientes ou para um grupo. Aqui você só encontra a exclusão de uma faixa pelo id dela; a criação e a edição das faixas fazem parte do cadastro do produto.
Endpoints
| Método e caminho | Para que serve | Auth | Página |
|---|---|---|---|
GET /api/v1/admin/b2b-price-rules | Lista regras de preço | admin | Consultar regras |
GET /api/v1/admin/b2b-price-rules/{id} | Detalha uma regra | admin | Consultar regras |
POST /api/v1/admin/b2b-price-rules | Cria uma regra | admin | Criar, alterar e excluir regra |
PUT /api/v1/admin/b2b-price-rules/{id} | Altera uma regra | admin | Criar, alterar e excluir regra |
DELETE /api/v1/admin/b2b-price-rules/{id} | Exclui uma regra | admin | Criar, alterar e excluir regra |
DELETE /api/v1/admin/price-tiers/{id} | Exclui uma faixa de preço por quantidade | admin | Excluir faixa de preço |
Erros comuns
- Mandar
price_centsediscount_bpsjuntos. O desconto vence e o preço fixo é guardado sem uso. - Achar que
priorityescolhe a regra. Vence o menor preço;prioritysó desempata. - Faixa invertida.
max_qtymaior que zero e menor quemin_qtyleva400. NoPUTessa conferência não é feita: confira os dois números antes de enviar. - Esperar que a regra baixe um preço que já é menor. Regra que não melhora o preço do comprador é descartada.
- Usar UUID no caminho. O
{id}da regra é um número inteiro; texto leva400 invalid rule id. - Esperar remover o grupo com
PUT. Um grupo definido não pode ser limpo porPUT; exclua a regra e crie outra para todos.