PDF e impressão
Quando o vendedor gera o PDF
O botão Baixar PDF está na barra lateral direita da tela de pedido (visível em qualquer das três abas: Dados Principais, Itens, Comercial).
Atenção: o pedido precisa estar salvo antes de gerar PDF. Se você acabou de digitar e ainda não clicou em "Salvar Pedido" / "Próximo", o botão fica desabilitado.
Ao clicar:
- O navegador baixa um arquivo
pedido-<numero>.pdf - O download fica disponível na pasta padrão de downloads do navegador
- Em mobile, abre direto no visualizador do sistema (com opções de compartilhar/salvar)
O que aparece no PDF
Layout fixo em A4 retrato, com:
Cabeçalho
- Nome e CNPJ da empresa (a empresa que está emitindo o pedido —
MOB_EMPRESA) - Número do pedido e data/hora
- Tabela de preço usada
Seção do cliente
- Razão social, nome fantasia, código
- CPF/CNPJ ou RG
- Endereço completo (logradouro, número, bairro, cidade/UF, CEP)
- Telefones e e-mail
Condições comerciais
- Plano de pagamento
- Código do título (forma de pagamento)
Itens do pedido
Tabela com:
- Sequência
- Código do produto
- Descrição
- Quantidade
- Valor unitário
- Total do item
Resumo financeiro
- Total bruto (soma quantidade × valor unitário de todos os itens)
- Descontos — separa "desconto dos itens" e "desconto do pedido"
- Acréscimo (se houver)
- Total líquido (o valor final)
Observações
Texto livre que o vendedor digitou na aba Comercial.
Assinatura
- Se o cliente assinou no canvas → imagem da assinatura aparece
- Se não assinou → bloco com texto "Sem assinatura capturada"
A assinatura é baixada do storage (Supabase) na hora de gerar o PDF, então precisa de conexão para puxar (ver Sincronização e offline).
Imprimir
O botão Imprimir dedicado não está exposto na UI atual — o fluxo é:
- Gerar PDF
- Abrir o PDF no visualizador
- Usar Ctrl+P (ou comando equivalente) do visualizador para imprimir
Para o time técnico: existe um template HTML alternativo (
pedido-print-template.tsx+pedido-print.ts) que poderia ser plugado em um botão "Imprimir" direto, sem passar por PDF. Está pronto mas não exposto na UI. Solicite ao time se quiserem ativá-lo.
Limitações conhecidas
- Formato fixo: A4 retrato. Não há opção de paisagem ou outros tamanhos.
- Logo: usa o
logo_unico.pnggenérico — não é customizável por empresa hoje. - Histórico de alterações do pedido não aparece no PDF.
- Status do pedido (pendente/fechado) também não aparece. Se precisar disso para o cliente, anote nas Observações.
- Impressora térmica/Bluetooth não é suportada nativamente. O PDF pode ser enviado para impressora térmica via apps de terceiros, mas o layout não é otimizado pra papel pequeno.
Triagem rápida — suporte
| Sintoma | Causa provável | Ação |
|---|---|---|
| Botão "Baixar PDF" desabilitado | Pedido ainda não foi salvo | Clicar em "Salvar Pedido" ou "Próximo" antes |
| PDF abre em branco | Bug raro de renderização — problema no html2canvas | Reportar pro time técnico com print do PDF |
| Assinatura não aparece no PDF mesmo tendo assinado | Bucket Supabase indisponível ou usuário offline na hora do PDF | Conferir conexão; se persistir, reabrir o pedido com conexão para revalidar storage |
| Logo errado / logo padrão | Customização por empresa não implementada | Encaminhar como melhoria futura |
| Total no PDF difere do que vejo na tela | Geralmente é diferença de arredondamento ou atualização não salva | Conferir se "Salvar Pedido" foi clicado antes do PDF |
| Cliente diz que não recebeu o PDF (envio externo) | Envio por e-mail/WhatsApp é manual via vendedor | Não há envio automatizado pelo app |
Para o time técnico
- Geração:
pedido-pdf.tsusajsPDF+html2canvaspara renderizar a partir de um template React (pedido-print-template.tsx). - A função
downloadPedidoPdf({ pedidoId, ... })recebe os dados já carregados na tela; não busca de novo no banco. - Tamanho médio do PDF: 100-300 KB dependendo de assinatura embutida.
- Bundle do
html2canvasé pesado (~200 KB gzip) — é code-split em chunk separado, só carrega ao clicar "Baixar PDF".