I
Isis Control

A venda do PDV é imediata (paga, decrementa estoque, emite nota na hora). Pra B2B, o fluxo natural é mais longo: orçamento → cliente aprova → separa mercadoria → fatura. O Pedido de venda cobre esse caminho.

Ciclo de vida

DRAFT ──confirm──▶ CONFIRMED ──invoice──▶ INVOICED (gera Sale + NF-e)
   │                   │
   └───cancel──▶ CANCELED ◀───cancel─┘
  • DRAFT — rascunho. Edita livremente (items, cliente, notas, frete). Não mexe em estoque.
  • CONFIRMED — aceito pelo cliente. Preços congelados (snapshot). Só dá pra cancelar ou faturar.
  • INVOICED — faturado. Gerou uma Sale vinculada, decrementou estoque, emitiu a NF-e (opcional). Final.
  • CANCELED — cancelado antes de faturar. Terminal.

Criar um pedido

Pedidos → Novo pedido:

  1. Selecione o cliente (opcional — pode fazer orçamento pra cliente anônimo e identificar depois).
  2. Adicione items com produto + quantidade.
  3. Informe frete, se houver.
  4. Observações livres.

O total exibido é estimado (preços padrão); o resolver real roda no backend aplicando a tabela do cliente, tiers de atacado e promoções.

Ao criar, fica em DRAFT. Você ainda pode editar à vontade.

Confirmar

Pedidos → abrir → Confirmar. Preços são congelados no pedido — daquela hora em diante, mesmo que a tabela do cliente mude ou o produto entre em promoção, o valor do orçamento continua o mesmo.

Isso protege o contrato: cliente aprovou R$1.500, cliente paga R$1.500.

Faturar

Pedidos → abrir (CONFIRMED) → Faturar:

  1. Dialog abre pedindo as formas de pagamento (igual ao PDV — dinheiro, PIX, cartão, fiado).
  2. Valida:
    • Caixa aberto do operador.
    • Estoque suficiente (decremento atômico race-safe).
    • Limite de crédito do cliente (se houver fiado — veja Limite de crédito).
  3. Cria uma Sale vinculada (sales_order_id guardado), com:
    • Items do pedido (preços do snapshot).
    • StockMovement de saída por venda.
    • AccountReceivable se houver fiado (N parcelas se configurado).
    • Comissão de vendedor snapshot.
    • Frete copiado do pedido.
  4. Pedido vira INVOICED com invoiced_at e sale_id.
  5. A Sale pode emitir NF-e normalmente depois.

Se estoque falhou no meio, tudo volta atrás (rollback de transação) — pedido continua CONFIRMED, você resolve o estoque e tenta de novo.

Parcelamento no faturamento

Se o cliente pagou em 3x no boleto/fiado, o dialog de faturamento aceita:

  • Parcelas: 1-36.
  • Intervalo em dias: default 30 (gera 30/60/90).

O sistema cria N AccountReceivable escalonados com valor distribuído (última parcela absorve o centavo residual pra somar exato — ex.: R$100 em 3x = R$33,33 + R$33,33 + R$33,34).

Cancelar

Em DRAFT ou CONFIRMED, clique Cancelar pedido. Informe o motivo (obrigatório, mín. 1 char). Pedido vira CANCELED.

Em INVOICED o botão não aparece — pra reverter uma venda faturada, cancele a Sale no módulo Vendas (isso devolve estoque, cancela receivables, zera comissão — mas não desfaz a NF-e, que precisa de cancelamento fiscal separado).