Skip to content

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órioEndpointServiço
Balanço PatrimonialGET /t/:slug/admin/accounting/balance-sheetbalance-sheet.service.ts
Demonstração do Fluxo de CaixaGET /t/:slug/admin/accounting/cash-flowcash-flow.service.ts
Exportação ERP/SPEDGET /t/:slug/admin/accounting/exportaccounting-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âmetroTipoDefaultDescrição
asOfstring (ISO date)hoje (fim do dia)Data base do balanço

Estrutura de resposta

json
{
  "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.ts
  • backend/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âmetroTipoDefaultDescrição
startstring (ISO date)1º dia do mês atualData inicial do período
endstring (ISO date)hojeData final do período
methoddirect | indirectdirectMétodo de apresentação

Métodos de cálculo

MétodoDescriçãoPreferido por
directLista fluxos reais de entrada e saída de caixa por naturezaGestores operacionais
indirectParte do lucro líquido + ajustes de variação de capital de giroContadores CFC

Estrutura de resposta

json
{
  "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.ts
  • backend/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âmetroObrigatórioDescrição
formatSimProvedor de destino
startSimData inicial (lançamentos postados)
endSimData final

Formatos suportados

FormatoTipo de arquivoPadrão
omieJSONAPI Omie /financas/contapagar/
contaazulJSONAPI Conta Azul — journal entries
sapCSVSAP Business One GL_Account Journal (campos: Account, Debit, Credit, Date, Ref)
spedTXTSPED 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.ts
  • backend/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:

  1. Acesse Contabilidade → Fechamento de Período
  2. Selecione o mês/ano
  3. Revise o balancete
  4. 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

Lançado sob a licença MIT.