Embalagens e caixas
O que são as caixas de produto (grades e caixas fechadas), como elas se ligam a produtos, preço e estoque, e como se separam das embalagens de frete.
Na Venddor existem dois conceitos diferentes que as pessoas chamam de "caixa". Esta seção trata de um deles, e é importante saber qual é qual antes de integrar.
| Caixa de produto (esta seção) | Embalagem de frete | |
|---|---|---|
| O que é | Uma unidade de venda com vários itens: "caixa com 12 pares" ou "grade com tamanhos 37 a 42". É o que o lojista de atacado vende. | O papelão físico em que o pedido é embalado para o transporte. |
| Quem usa | Carrinho, checkout e pedido: o comprador escolhe a caixa. | O cálculo de frete: o empacotador escolhe em qual embalagem cabem os itens. |
| Medidas e peso | Não tem. Só a composição (tamanho e quantidade). | Comprimento, largura e altura em milímetros, peso máximo em gramas, tara e limite de itens. |
| Rotas | /api/v1/admin/product-boxes | /api/v1/admin/shipping/packaging-boxes e /api/v1/admin/products/{id}/shipping-packaging |
| Onde está documentado | Aqui. | Fora desta seção: pertence à área de frete (as rotas dependem do recurso correios-shipping). |
As caixas de produto não influenciam o frete. Elas não têm medidas nem peso: o frete continua sendo calculado pelo peso e dimensões do produto e pelas embalagens de frete cadastradas. Se o seu objetivo é mexer em dimensões e peso para a cotação de frete, esta não é a seção.
Como funciona
O modelo
- A caixa descreve a composição: uma lista de tamanhos e quantidades (
size_qty_info) e um título por idioma. A soma das quantidades é o número de pares da caixa (total_pairs). - A variante liga a caixa a um produto e guarda o preço da caixa para aquele produto e quantas caixas há para vender.
- No carrinho, o comprador escolhe a caixa do produto. O preço, o estoque e a composição são sempre lidos de novo pelo servidor; valores vindos do navegador não são aceitos.
Tipos e status
| Campo | Valores |
|---|---|
box_type | C caixa fechada (todos os pares do mesmo tamanho), G grade (tamanhos variados). Só esses dois podem ser cadastrados. |
status | A ativa (à venda), D desativada, H oculta. Só caixas A aparecem na loja. |
Preço e estoque da variante
- Preço.
price_centavosé o preço da caixa inteira para aquele produto. Se for0, a plataforma usa o preço do produto multiplicado pelo número de pares da caixa. - Estoque.
amounté a quantidade de caixas disponíveis.0significa "sem contador por caixa": nesse caso vale o estoque do próprio produto. Quando é maior que zero, cada compra o reduz, e a compra é recusada se pedir mais caixas do que o contador.
Quem é o dono da caixa
Uma caixa pode ser da loja (marketplace, sem vendor_id) ou de um seller. As caixas da loja valem para qualquer produto. As de um seller só valem para produtos desse mesmo seller. A vitrine principal mostra só as da loja.
Exclusão
Excluir uma caixa a marca como removida (soft delete): ela some de todas as listas e leituras, e as variantes e descrições ficam guardadas. Excluir uma variante apaga a ligação de vez.
Conceitos-chave
O módulo product-boxes
O recurso product-boxes é um módulo por loja, desligado por padrão. Para quem integra, isso significa: antes de qualquer chamada, confirme com o administrador da loja que o módulo está ligado. Com ele desligado:
- as rotas respondem
403com{"error":"module_disabled","module":"product-boxes"}; - o carrinho e o checkout se comportam como se as caixas não existissem: nenhum produto exige caixa.
Permissões
Administrador com o privilégio manage_product_boxes ou manage_catalog, em Authorization: Bearer <token>. Vale para leitura e escrita.
Endpoints
Auth: Admin é o administrador com o privilégio manage_product_boxes ou manage_catalog.
| Método | Rota | O que faz | Auth | Página |
|---|---|---|---|---|
| GET | /api/v1/admin/product-boxes | Lista caixas | Admin | Listar caixas |
| GET | /api/v1/admin/product-boxes/{id} | Consulta uma caixa | Admin | Consultar caixa |
| POST | /api/v1/admin/product-boxes | Cria uma caixa | Admin | Criar caixa |
| PUT | /api/v1/admin/product-boxes/{id} | Altera uma caixa | Admin | Alterar caixa |
| DELETE | /api/v1/admin/product-boxes/{id} | Exclui uma caixa | Admin | Excluir caixa |
| GET | /api/v1/admin/product-boxes/{id}/variants | Lista as variantes da caixa | Admin | Variantes |
| POST | /api/v1/admin/product-boxes/{id}/variants | Liga a caixa a um produto | Admin | Variantes |
| PUT | /api/v1/admin/product-boxes/variants/{variantId} | Altera preço e estoque da variante | Admin | Variantes |
| DELETE | /api/v1/admin/product-boxes/variants/{variantId} | Remove a variante | Admin | Variantes |
Erros comuns
- Chamar com o módulo desligado.
403 module_disabled. Peça ao administrador para ligar o móduloproduct-boxes. - Criar uma caixa sem título ou sem composição. É exigido um título não vazio em pelo menos um idioma e pelo menos uma linha de
size_qty_infocom tamanho e quantidade maior que zero. - Criar uma caixa e esperar que ela venda. Sem uma variante ligando a caixa a um produto, ela não aparece para nenhum produto.
- Ativar uma caixa em um produto e perder a venda avulsa. Produto com caixa à venda só é aceito em caixa. Se o produto também deve vender solto, não ligue caixa a ele.
- Esquecer o preço da variante.
price_centavos: 0não significa grátis: significa "preço do produto vezes os pares". Confira o valor cobrado. - Ligar o mesmo produto duas vezes à mesma caixa. Dá
409 duplicate variant. Altere a variante existente. - Procurar medidas e peso aqui. As caixas de produto não têm; elas não entram na cotação de frete.