📄 Documento de Execução — Card 20: [M4] Financeiro da Unidade
| Campo |
Valor |
| Card Trello |
[20] [M4] Financeiro da Unidade |
| URL Trello |
https://trello.com/c/AF6ninuK |
| Marco |
M4 — Painel Direção/Unidade LOCAL |
| Data execução |
04/08/2026 |
| Responsável |
Wellington Santiago (via ZCode) |
| Doc anterior |
Card 19: Gestão de Turmas & Grade |
| Próximo card |
Card 21: Comunicados & Avisos da Unidade |
| Commits |
aee19ba |
🎯 1. O que foi implementado
O Card 20 entrega o painel financeiro completo para a direção da unidade (LOCAL/SUPERVISOR/MASTER). Cobre fluxo de caixa, inadimplência, geração de cobranças e baixa manual.
Backend — local.financial (7 procedures)
financial.dashboard — KPIs do período (mês/ano selecionável): previsto, recebido, pendente, inadimplência (valor + %), com contagens por status. Usa 4 aggregates + 1 groupBy em paralelo.
financial.cashflow — Série temporal de recebimentos (PAID) agrupados por dia, por período (WEEK/MONTH/QUARTER). Inclui breakdown por método de pagamento.
financial.inadimplencia — Lista pagamentos OVERDUE com dias de atraso calculados, dados do responsável e aluno vinculado. Retorna total, valor acumulado e atraso médio.
financial.generateMonthly — Gera cobranças mensais para todos os alunos ativos. Calcula valores (base - desconto - pontualidade), define vencimento por dueDay. Pula cobranças já existentes e matrículas sem responsável financeiro. No Go-Live (M7) vira Job Bull automático dia 1 às 03:00.
financial.markPaid — Baixa manual de pagamento com método (PIX/BOLETO/CASH/etc).
financial.applyDiscount — Aplica desconto percentual manual com motivo.
financial.list — Lista pagamentos com filtros (status, mês, ano) para tabela detalhada.
Frontend — 2 páginas
/local/financeiro (REESCRITA) — Dashboard com 4 KPIs coloridos (Previsto/Recebido/Pendente/Inadimplência), gráfico AreaChart (Recharts) de fluxo de caixa 30 dias, distribuição por status, tabela de cobranças do período com botão "Baixar", seletor de mês/ano, e modal "Gerar Cobranças".
/local/financeiro/inadimplencia (NOVA) — KPIs de inadimplência (total, quantidade, atraso médio), tabela com severidade colorida por dias de atraso (>30 vermelho, >7 amarelo), ações por pagamento (quitar, aplicar desconto, contato), e modal de desconto.
Decisões do cliente aplicadas (9/9)
| # |
Pergunta |
Resposta aplicada |
| 1 |
Dia de vencimento |
5 ou 10 (por matrícula, campo dueDay) |
| 2 |
Geração automática |
Dia 1 do mês (Job Bull no Go-Live; manual no DEV) |
| 3 |
Desconto por irmão |
Manual (campo discountPercent, atendente define) |
| 4 |
Bolsa |
Tipos: NONE, PARTIAL_10/20/30, FULL, AGREEMENT |
| 5 |
Multa por atraso |
Configurável (campo lateFeeApplied) |
| 6 |
Juros de mora |
SEM juros — só perde desconto de pontualidade |
| 7 |
Inadimplência |
Status OVERDUE (após dueDate+1, Job Bull marca) |
| 8 |
Relatórios |
Mensal (seletor mês/ano na dashboard) |
| 9 |
Formato contador |
Excel/PDF (Puppeteer — Card 33/37) |
✅ Critérios de aceite validados
| # |
Critério |
Status |
| 1 |
Fluxo de caixa |
✅ AreaChart Recharts |
| 2 |
Inadimplência |
✅ Tabela com dias de atraso + ações |
| 3 |
Conciliação bancária |
⏳ Upload arquivo retorno (refinamento futuro) |
| 4 |
Relatórios contábeis |
⏳ PDF/Excel (Puppeteer — Card 33) |
📁 2. Arquivos criados/modificados
Criados
| Arquivo |
Função |
src/app/(dashboard)/local/financeiro/inadimplencia/page.tsx |
Tabela de inadimplência com ações |
docs/execucao/20-m4-financeiro-unidade.md |
Este documento |
Modificados
| Arquivo |
Mudança |
src/server/trpc/routers/local.ts |
+sub-router financial (7 procedures) |
src/app/(dashboard)/local/financeiro/page.tsx |
Reescrita: mock → tRPC real + KPIs + AreaChart + tabela |
🗄️ 3. Schema do banco (mudanças)
Nenhuma mudança de schema. O model Payment já tinha todos os campos necessários:
amount, discountAmount, finalAmount, punctualityAmount, lateFeeApplied
dueDate, dueDay, paidAt, status (PENDING/PAID/OVERDUE/CANCELLED/REFUNDED)
method (PIX/BOLETO/CREDIT_CARD/DEBIT_CARD/CASH/TRANSFER)
- Campos NFSe:
nfseNumber, nfseXmlUrl, nfsePdfUrl
🔌 4. Handoff para o próximo card
Procedures disponíveis
local.financial.dashboard/cashflow/inadimplencia/list — leituras
local.financial.generateMonthly/markPaid/applyDiscount — mutations
Pendências para Go-Live (M7)
- Job Bull
payment-generator: automação dia 1 às 03:00 (hoje é manual)
- Job Bull
payment-reminder: lembretes 3d antes, 1d antes, no dia
- Job Bull
overdue-marker: marcar OVERDUE após dueDate+1
- NFSe: integração real (hoje campos existem mas não são preenchidos)
- Conciliação bancária: upload de arquivo retorno CNAB
- Relatórios PDF/Excel: Puppeteer
📋 5. Checklist do Trello
[Entregas] 4/4 (2 diretos + 2 pendências M7)
Fluxo de caixa ✅, Inadimplência ✅, Conciliação ⏳ (M7), Relatórios ⏳ (M7)
[Especificação Técnica] — 7 rotas marcadas ✅
[Validar com Cliente] 9/9 ✅
🚀 6. Deploy DEV
🎯 8. Próximo card
Card 21: [M4] Comunicados & Avisos da Unidade — CRM de comunicados da direção para alunos/pais/professores. Aprovação prévia (decisão cliente), canais (app+email+WhatsApp), e templates.