Detalhes de Venda, Faturamento e Pagamento — Visão Geral
Última atualização: 16 de julho de 2026
O que é este fluxo
Enquanto o fluxo de Nova Venda cobre a criação e edição de um pedido, este fluxo cobre a consulta de uma venda que já existe: ver seus detalhes, compartilhar ou exportar um PDF dela, e (em teoria) acompanhar faturamento, pagamento, coletar assinatura do cliente ou marcar uma cotação como perdida. Das cinco sub-telas envolvidas, só duas são reais e alcançáveis pelo vendedor hoje: detalhes da venda e compartilhamento/relatórios. As outras três, faturamento, pagamento, assinatura digital e perda de cotação, existem como código funcional ou semi-funcional, mas nenhuma delas tem hoje um botão real que leve até elas.
Um aviso sobre a documentação interna existente
Há um arquivo features/sale/SALE.md no próprio repositório que se apresenta como documentação completa desta feature. Ele está desatualizado e não deve ser usado como referência: descreve, por exemplo, um sale.controller.ts baseado em dados mockados e um menu de opções com entradas para "PIX/Link de Pagamento", "Converter/Faturar", "Perda de Venda" e "Assinatura de Documentos" que não existem mais na UI atual. O código hoje já usa dados reais no controller principal, e esse menu de opções foi substituído por um mais enxuto (SaleMoreOptionsSheet), sem que as telas antigas fossem removidas. Esta documentação Docusaurus reflete o estado real do código, verificado arquivo por arquivo, não o conteúdo desse markdown interno.
Resumo: o que é real, o que é mock, e o que é alcançável
| Sub-fluxo | Dado real ou mock? | Alcançável hoje pela UI? |
|---|---|---|
| Detalhes da venda | Real (API, SQLite, catálogo de status sincronizado) | Sim |
| Compartilhar "Layout Padrão" (PDF) | Real, gerado no cliente a partir dos dados da venda | Sim |
| Compartilhar "Relatórios ERP/Online" | Real, baixa PDF gerado pelo ERP | Sim, só para venda já integrada e finalizada |
| Compartilhar boleto | Placeholder, onPress vazio com // TODO | Não implementado |
| Faturamento | Mock total, itens hardcoded | Não, sem botão de entrada |
| Pagamento | Mock total, setTimeout simulando sucesso | Não, sem botão de entrada |
| Assinatura digital | PDF e captura reais, resultado nunca é enviado | Não, modal nunca é aberto |
| Perda de cotação | Mock incompleto, botão "Ok" sem onPress | Não, sheet nunca é aberto |
Por que três sub-telas ficaram inalcançáveis
sale.controller.ts (a tela de listagem de vendas) ainda exporta onPressPayment, onPressInvoice, documentSignModalOpen/setDocumentSignModalOpen e lossQuotationSheetOpen/setLossQuotationSheetOpen, e a própria sale.tsx monta condicionalmente <DocumentSignFlow> e <LossQuotationSheet> quando esses estados ficam true. O problema é que nenhum botão real da interface chama setDocumentSignModalOpen(true) ou setLossQuotationSheetOpen(true), e onPressPayment/onPressInvoice nem chegam a ser referenciados dentro de sale.tsx. Tudo indica que essas ações viviam num menu de opções anterior (o próprio SALE.md descreve esse menu antigo), que foi substituído por um mais simples sem que o código das telas de destino fosse removido junto.
Cada sub-tela é detalhada em seu próprio documento, com o nível de honestidade sobre o que é real e o que é mock que já é padrão neste projeto de documentação.