Vendas e PDV

Registrando uma venda no balcão (PDV)

Como vender serviço, produto ou misto, aplicar desconto e definir forma de pagamento.

O PDV do PetShop Flow aceita venda só de serviço, só de produto ou misto. O preço de cada item é resolvido no servidor — você não consegue forjar valores pelo navegador.

Passo a passo

  1. Acesse /vendas e clique em Nova venda.
  2. (Opcional) Selecione o cliente e o cão. Se selecionar cão, o sistema valida que ele pertence ao cliente.
  3. Adicione itens:
    • Tipo service ou product.
    • Quantidade (1 a 99).
  4. (Opcional) Defina desconto em reais. O PetShop Flow limita o desconto ao subtotal — não tem subtotal negativo.
  5. Escolha forma de pagamento: pix, credito, debito, dinheiro, transferencia, boleto ou outro.
  6. Marque pago ou deixe como aguardando pagamento.
  7. (Opcional) Observações.
  8. Clique em Finalizar venda.

[SCREENSHOT: Tela do PDV com serviço e produto adicionados]

Como o preço é calculado

O PetShop Flow busca cada item no banco e usa o preço cadastrado, ignorando qualquer valor que venha do navegador:

  • Serviço: começa com basePriceCents. Se houver cão selecionado e existir preço pro porte daquele cão (priceBySizeCents.pequeno|medio|grande|gigante), usa esse.
  • Produto: usa priceCents. Verifica também o estoque — se a quantidade pedida for maior que o stockQty atual, a venda falha com mensagem mostrando o estoque disponível.

Subtotal = soma de (preço unitário × quantidade). Desconto = mínimo entre o que você pediu e o subtotal. Total = subtotal − desconto.

O que acontece ao finalizar

Em uma transação só, o PetShop Flow:

  1. Cria o registro sales com subtotal, desconto e total.
  2. Cria os saleItems com descrição, quantidade e preço.
  3. Pra cada produto: decrementa o estoque e registra um stock_movement do tipo venda.
  4. Cria um payment com método, valor total e status. Se você marcou pago, registra a data de pagamento.
  5. Redireciona pra /vendas.

Vendas avulsas (sem cliente)

Se você não selecionar cliente, a venda fica avulsa. Funciona pra balcão rápido — produto de prateleira sem identificar o tutor. Mas perde:

  • Vínculo com programa de fidelidade.
  • Histórico de compras do cliente.
  • Possibilidade de emitir NFS-e (serviço precisa de tomador).

Perguntas frequentes

Posso editar uma venda depois de finalizada?

Não. A venda é um registro fiscalizável. Pra corrigir, registre uma nova venda com valor negativo (estorno) ou fala com o suporte.

O cliente paga depois. Como faço?

Marque a venda como aguardando_pagamento. Quando o cliente quitar, abra a venda e atualize o pagamento.

Vendi produto sem estoque cadastrado. Posso?

O PetShop Flow bloqueia: se stockQty < quantidade, a venda falha. Veja Controle de estoque na venda.