🔄 Fluxos - ecosif-reports

📋 Visão Geral

Este documento descreve os principais fluxos de geração de relatórios do serviço ecosif-reports.


🔄 Fluxo 1: Gerar Balancete Mensal

Descrição

Geração de balancete mensal com saldos e movimentações do período.

Diagrama de Sequência

sequenceDiagram
    participant Client as Cliente
    participant Controller as ReportsController
    participant Service as PrintReportService
    participant ProcService as ProcedureBalanceteMensalService
    participant Repo as MonthlyAccountBalanceRepository
    participant JR as JasperReports
    participant Export as ExportReportsHelper
    participant DB as PostgreSQL

    Client->>Controller: POST /reports/monthlyTrialBalance
    Controller->>Service: getMonthlyTrialBalance(dto)
    Service->>ProcService: buscarDados(dto)
    ProcService->>Repo: findAccountBalanceByYearAndMonth(...)
    Repo->>DB: SELECT * FROM ct_plano_saldo WHERE...
    DB-->>Repo: List<MonthlyAccountBalance>
    Repo-->>ProcService: Dados
    ProcService-->>Service: Dados preparados

    Service->>JR: compilarTemplate("balancete_mensal.jrxml")
    JR-->>Service: CompiledReport

    Service->>JR: preencherTemplate(report, dados)
    JR-->>Service: JasperPrint

    Service->>Export: exportarParaPDF(jasperPrint)
    Export-->>Service: byte[] PDF

    Service->>Service: converterParaBase64(PDF)
    Service-->>Controller: RetornoGenerico (base64)
    Controller-->>Client: 200 OK

🔄 Fluxo 2: Consultar Saldos Mensais

Descrição

Consulta paginada de saldos mensais do plano de contas.

Diagrama de Sequência

sequenceDiagram
    participant Client as Cliente
    participant Controller as PlanoSaldoController
    participant Service as PlanoSaldoService
    participant Repo as MonthlyAccountBalanceRepository
    participant DB as PostgreSQL

    Client->>Controller: GET /api/v1/saldos/plano-saldo?empresa=...&filial=...&ano=...&mes=...
    Controller->>Controller: Criar PageRequest
    Controller->>Service: buscarPlanoSaldo(empresa, filial, ano, mes, pageable)
    Service->>Repo: findByEmpresaAndFilialAndYearAndMonth(..., pageable)
    Repo->>DB: SELECT * FROM ct_plano_saldo WHERE ... LIMIT ... OFFSET ...
    DB-->>Repo: Page<MonthlyAccountBalance>
    Repo-->>Service: Page com dados
    Service->>Service: Transformar em DTOs (PlanoSaldoResponse)
    Service-->>Controller: PlanoSaldoResponse
    Controller->>Controller: Embrulhar em RetornoGenerico
    Controller-->>Client: 200 OK

🔄 Fluxo 3: Gerar Razão Contábil

Descrição

Geração de relatório de razão contábil com histórico detalhado.

Diagrama de Sequência

sequenceDiagram
    participant Client as Cliente
    participant Controller as ReportsController
    participant Service as PrintReportService
    participant RazaoService as ProcedureRazaoService
    participant Repo as EntryRepository
    participant JR as JasperReports
    participant Export as ExportReportsHelper
    participant DB as PostgreSQL

    Client->>Controller: POST /reports/relatorioRazao
    Controller->>Service: getReportRazao(dto)
    Service->>RazaoService: buscarDados(dto)
    RazaoService->>Repo: findEntriesByAccountAndPeriod(...)
    Repo->>DB: SELECT com JOINs complexos
    DB-->>Repo: List<Entry> com detalhes
    Repo-->>RazaoService: Dados agregados
    RazaoService-->>Service: Dados preparados (DTOs)

    Service->>JR: compilarTemplate("razao.jrxml")
    JR-->>Service: CompiledReport

    Service->>JR: preencherTemplate(report, dados)
    JR-->>Service: JasperPrint

    Service->>Export: exportarParaPDF(jasperPrint)
    Export-->>Service: byte[] PDF
    Service->>Service: converterParaBase64(PDF)
    Service-->>Controller: RetornoGenerico
    Controller-->>Client: 200 OK

Última Atualização: 2025-12-01