A pagar, categorias e comprovantes obrigatórios
Como o A7X organiza despesas por categoria, exige comprovante acima de R$ 500 e separa lançamento de pagamento.
A estrutura de a pagar
Toda despesa vira um payable com:
- Descrição
- Valor lançado (
amount) - Vencimento
- Categoria (FK em
finance_categories— sem CHECK constraint legado) - Centro de custo (opcional)
- Conta bancária prevista
- Status:
pending,paid,partially_paid,overdue,cancelled
Acesso: Financeiro → A Pagar.
Por que categoria é tão importante
Categoria é o que vira DRE. Combustível, energia, química, folha, manutenção, marketing — cada um é um item separado no relatório.
Se você lança despesa sem categoria ou em “outros”, ela some no DRE. Categoria errada distorce a análise. Treine a equipe.
Categorias dinâmicas
Ana e Moisés podem criar novas categorias em Financeiro → Categorias sem precisar de dev. Cada nova categoria aparece imediatamente no dropdown de “A Pagar”.
Antes do A7X, isso era CHECK constraint hardcoded no banco — quando Ana queria “Copa e Cozinha” ou “Pró-Labore”, precisava chamar suporte. Não mais.
Lançamento ≠ pagamento
Mesmo princípio do “a receber”:
| Etapa | O que acontece | Quando |
|---|---|---|
| Lançamento | Cria payable com amount | Recebe boleto/NF |
| Pagamento | Atualiza paid_amount, paid_at, payment_method | Banco confirma saída |
Importante: o pagamento pode ter desconto, multa, juros. O A7 registra os 3 separadamente. O
paid_amounté o valor líquido que saiu da conta — pode ser menor queamountse houve desconto.
O trigger de comprovante (F1 Fix-3)
Quando uma despesa é > R$ 500, o A7X bloqueia a transição pra
paid sem attachment_url. Trigger no banco:
“Comprovantes obrigatórios pra valores > R$ 500.”
Por que isso
Auditoria. Se o fiscal pede prova, comprovante existe. Se houve fraude, comprovante delata. Se o pagamento foi duplicado, comprovante mostra qual é qual.
Os 2 escapes
Casos em que você legitimamente quer pagar sem comprovante:
- Tag em notas: escreva
[SEM_COMPROVANTE_OK]no camponotesdo payable. Trigger libera. - Service role: chamadas administrativas via backend bypass o trigger (raro, só em scripts de migração).
A Ana foi treinada no escape. Documenta o porquê em
notesem vez de só pôr a tag.
Pagamento parcial
Se o cliente pagou só parte da fatura, marque como partially_paid
com paid_amount proporcional. O sistema:
- Mostra saldo restante na lista
- Cria entry parcial em
financial_entries - Permite múltiplos pagamentos parciais até quitar
Erros comuns
- Lançar despesa sem categoria: vai pro “uncategorized” e some do DRE. Sempre preencha.
- Marcar como paid sem comprovante > R$ 500: trigger bloqueia. Mensagem do erro é clara.
- Confundir paid_amount com amount: amount é lançado, paid_amount é pago. Se houve desconto, divergem.
Insight
O sistema força higiene financeira via constraint de banco, não via “discurso de boas práticas”. Categoria + comprovante > R$ 500 são lei, não sugestão.
Próximo passo
Próxima aula: cheques de terceiros — o ciclo completo de receber, depositar e tratar devolução.
Seu progresso fica salvo nesse navegador. Continue de onde parou quando voltar.
Você concluiu essa trilha
Agora você já domina esse processo. Volte e revise quando quiser — ou avance pra próxima trilha do seu papel.
Ver todas as trilhas