Relatórios Contábeis — Balanço, DFC e Exportação
Visão Geral
O módulo contábil gera os três principais demonstrativos contábeis diretamente a partir dos lançamentos em partidas dobradas armazenados em JournalEntry. Todos os cálculos são feitos em tempo real via MongoDB aggregation — não existe schema de snapshot além do PeriodClosing.
| Relatório | Endpoint | Serviço |
|---|---|---|
| Balanço Patrimonial | GET /t/:slug/admin/accounting/balance-sheet | balance-sheet.service.ts |
| Demonstração do Fluxo de Caixa | GET /t/:slug/admin/accounting/cash-flow | cash-flow.service.ts |
| Exportação ERP/SPED | GET /t/:slug/admin/accounting/export | accounting-export.service.ts |
Permissão: Admin, Superadmin ou Accountant (role accountant).
Balanço Patrimonial
Endpoint
GET /t/:slug/admin/accounting/balance-sheet?asOf=YYYY-MM-DD| Parâmetro | Tipo | Default | Descrição |
|---|---|---|---|
asOf | string (ISO date) | hoje (fim do dia) | Data base do balanço |
Estrutura de resposta
{
"asOf": "2026-05-28T23:59:59.999Z",
"ativo": {
"circulante": [ { "code": "1.1", "name": "Caixa e Bancos", "balance": 4500000 } ],
"naoCirculante": [ ... ],
"total": 12000000
},
"passivoEPatrimonio": {
"circulante": [ ... ],
"naoCirculante": [ ... ],
"patrimonioLiquido": [ ... ],
"total": 12000000
}
}Valores em centavos (inteiros). ativo.total deve ser igual a passivoEPatrimonio.total — se diferir, há lançamentos sem contra-partida.
Como o saldo é calculado
O serviço agrega todos os JournalEntry com status: 'posted' e createdAt ≤ asOf. Para cada conta analítica do plano, calcula:
saldo = Σ débitos - Σ créditos (natureza devedora: Ativo, Custo, Despesa)
saldo = Σ créditos - Σ débitos (natureza credora: Passivo, PL, Receita)Frontend
- View:
frontend-react/src/views/admin/accounting/BalanceSheetView.tsx - Rota:
/t/:slug/admin/accounting/balance-sheet
Backend
backend/src/accounting/services/balance-sheet.service.tsbackend/src/accounting/controllers/balance-sheet.controller.ts
Demonstração do Fluxo de Caixa (DFC)
Endpoint
GET /t/:slug/admin/accounting/cash-flow?start=YYYY-MM-DD&end=YYYY-MM-DD&method=direct|indirect| Parâmetro | Tipo | Default | Descrição |
|---|---|---|---|
start | string (ISO date) | 1º dia do mês atual | Data inicial do período |
end | string (ISO date) | hoje | Data final do período |
method | direct | indirect | direct | Método de apresentação |
Métodos de cálculo
| Método | Descrição | Preferido por |
|---|---|---|
direct | Lista fluxos reais de entrada e saída de caixa por natureza | Gestores operacionais |
indirect | Parte do lucro líquido + ajustes de variação de capital de giro | Contadores CFC |
Estrutura de resposta
{
"period": { "start": "2026-05-01", "end": "2026-05-28" },
"method": "direct",
"operacional": {
"entradas": [ { "description": "Receita de Vendas", "amount": 35000000 } ],
"saidas": [ { "description": "Pag. Fornecedores", "amount": -8000000 } ],
"total": 18000000
},
"investimento": { "entradas": [], "saidas": [], "total": 0 },
"financiamento": { "entradas": [], "saidas": [], "total": 0 },
"saldoFinal": 18000000
}Valores em centavos.
Frontend
- View:
frontend-react/src/views/admin/accounting/CashFlowStatementView.tsx - Rota:
/t/:slug/admin/accounting/cash-flow
Backend
backend/src/accounting/services/cash-flow.service.tsbackend/src/accounting/controllers/cash-flow.controller.ts
Exportação Contábil
Endpoint
GET /t/:slug/admin/accounting/export?format=omie|contaazul|sap|sped&start=YYYY-MM-DD&end=YYYY-MM-DD| Parâmetro | Obrigatório | Descrição |
|---|---|---|
format | Sim | Provedor de destino |
start | Sim | Data inicial (lançamentos postados) |
end | Sim | Data final |
Formatos suportados
| Formato | Tipo de arquivo | Padrão |
|---|---|---|
omie | JSON | API Omie /financas/contapagar/ |
contaazul | JSON | API Conta Azul — journal entries |
sap | CSV | SAP Business One GL_Account Journal (campos: Account, Debit, Credit, Date, Ref) |
sped | TXT | SPED Contábil — Registros I010/I020/I050/I075/I150/I155/I200/I350 |
A resposta inclui o header Content-Disposition: attachment; filename=... para download direto.
O que é exportado
Todos os JournalEntry com status: 'posted' e createdAt dentro do período. Lançamentos draft ou reversed são excluídos.
Backend
backend/src/accounting/services/accounting-export.service.tsbackend/src/accounting/controllers/accounting-export.controller.ts
Integração com Fechamento de Período
Os relatórios podem ser gerados a qualquer momento. Para "congelar" o balanço e impedir novos lançamentos em um período:
- Acesse Contabilidade → Fechamento de Período
- Selecione o mês/ano
- Revise o balancete
- Clique em Fechar Período
O PeriodClosing captura um snapshot do balancete (trialBalanceSnapshot) no momento do fechamento. Períodos fechados podem ser reabertos com status: 'reopened'.
Relacionados
- Módulo Contábil — Visão geral do módulo, schemas e serviços
- DRE — P&L por competência
- Integrações ERP — Configurar credenciais Omie/ContaAzul/SAP/SPED
- Guia: Relatórios Contábeis