# 🔄 Análise Real do Fluxo de Negócio - SIGEFP **Data:** 2025-01-XX **Objetivo:** Analisar o fluxo REAL de negócio e identificar problemas na lógica e integrações --- ## ✅ Funcionalidades Existentes (Confirmadas) ### Módulo Orçamento 1. **Exercícios Fiscais** (`/budget/fiscal-years`) - ✅ Criar, abrir, fechar exercícios - ✅ Status: DRAFT → OPEN → CLOSED 2. **Linhas Orçamentárias** (`/budget/lines`) - ✅ Criar, editar linhas - ✅ **Dotações:** Botão Wallet (💼) abre modal `BudgetLineEntriesModal` - ✅ Modal permite criar, visualizar todas as dotações da linha - ✅ Tipos: INITIAL_ALLOCATION, SUPPLEMENTARY_CREDIT, etc. 3. **Execução** (`/budget/execution`) - ✅ Visualizar COMMITMENT, LIQUIDATION, PAYMENT - ✅ Filtros por tipo, período, linha orçamentária ### Módulo Tesouro 1. **Contas de Caixa** (`/treasury/cash-accounts`) 2. **Autorizações** (`/treasury/authorizations`) 3. **Lotes de Pagamento** (`/treasury/batches`) 4. **Ordens de Pagamento** (`/treasury/orders`) 5. **Conciliação** (`/treasury/reconciliation`) 6. **Confirmações** (`/treasury/confirmations`) --- ## 🔍 Análise do Fluxo Real de Negócio ### Fluxo 1: Elaboração do Orçamento (Como Funciona) ``` 1. Orçamento → Exercícios Fiscais └─> Criar exercício (DRAFT) 2. Orçamento → Linhas Orçamentais └─> Criar rubricas 3. Orçamento → Linhas Orçamentais → Botão Wallet (💼) └─> Modal: BudgetLineEntriesModal └─> Criar dotação (INITIAL_ALLOCATION) └─> Referência: "Lei nº X/2024" └─> ✅ Atualiza BudgetLine.totalAllocated 4. Orçamento → Exercícios Fiscais └─> Abrir exercício (OPEN) ``` **✅ Status:** Funcional e correto --- ### Fluxo 2: Execução Orçamentária (Como Funciona) #### 2.1 Empenho (COMMITMENT) **Origem:** Módulo RH (folha de pagamento) ``` PayrollRun processado ↓ PaymentOrder criado (com budgetLineId) ↓ BudgetIntegrationService.createCommitmentFromPayroll() ↓ BudgetExecution (COMMITMENT) criado ↓ BudgetLine.totalCommitted atualizado ↓ BudgetLine.availableBalance reduzido ``` **Onde visualizar:** `Orçamento → Execução` (filtro: COMMITMENT) **✅ Status:** Implementado e funcionando --- #### 2.2 Liquidação (LIQUIDATION) **Origem:** Módulo RH (no encerramento da folha) ``` PayrollRun encerrado ↓ BudgetIntegrationService.createLiquidationFromPayrollItem() ↓ BudgetExecution (LIQUIDATION) criado ↓ Validação: Deve ter COMMITMENT correspondente ↓ BudgetLine atualizado ``` **Onde visualizar:** `Orçamento → Execução` (filtro: LIQUIDATION) **✅ Status:** Implementado e funcionando --- #### 2.3 Pagamento (PAYMENT) **Origem:** Módulo Tesouro (após confirmação) ``` TreasuryPayment confirmado (status: PAID) ↓ TreasuryPaymentService.confirmPayment() ↓ BudgetIntegrationService.createPaymentFromTreasury() ↓ BudgetExecution (PAYMENT) criado ↓ Validação: Deve ter LIQUIDATION correspondente ↓ BudgetLine atualizado ``` **Onde visualizar:** `Orçamento → Execução` (filtro: PAYMENT) **✅ Status:** Implementado e funcionando --- ### Fluxo 3: Processo de Pagamento (Tesouro) ``` 1. Tesouro → Ordens de Pagamento └─> Criar ordem (origem: PayrollRun ou Manual) └─> Validação: Verifica saldo orçamentário (se budgetLineId presente) 2. Tesouro → Autorizações └─> Criar autorização para ordem └─> Workflow: Aprovação hierárquica (níveis 1, 2, 3) └─> Validação: Verifica disponibilidade de caixa 3. Tesouro → Lotes de Pagamento └─> Criar lote └─> Adicionar ordens ao lote └─> Compromete: CashAccount.availableBalance 4. Tesouro → Confirmações └─> Confirmar pagamento └─> Atualiza: CashAccount.currentBalance └─> ✅ Cria BudgetExecution (PAYMENT) automaticamente └─> Registra: CashFlow (OUTFLOW) ``` **✅ Status:** Implementado e funcionando --- ## 🔗 Integrações Entre Módulos ### RH → Orçamento **Fluxo:** ``` PayrollRun (status: COMPLETED) ↓ PaymentOrderService.createFromPayrollRun() ↓ BudgetIntegrationService.createCommitmentFromPayroll() ↓ BudgetExecution (COMMITMENT) criado ``` **Validações:** - ✅ Verifica se há saldo disponível (availableBalance) - ✅ Cria COMMITMENT com referenceId = PayrollRun.id **Status:** ✅ Funcionando --- ### RH → Tesouro **Fluxo:** ``` PayrollRun (status: COMPLETED) ↓ PaymentOrderService.createFromPayrollRun() ↓ PaymentOrder criado (com budgetLineId) ↓ PaymentOrder.status = CREATED ``` **Validações:** - ✅ Verifica se há saldo orçamentário (se budgetLineId presente) - ✅ Cria ordem com referência ao PayrollRun **Status:** ✅ Funcionando --- ### Tesouro → Orçamento **Fluxo:** ``` TreasuryPayment (status: PAID) ↓ TreasuryPaymentService.confirmPayment() ↓ BudgetIntegrationService.createPaymentFromTreasury() ↓ BudgetExecution (PAYMENT) criado ``` **Validações:** - ✅ Verifica se há LIQUIDATION correspondente - ✅ Valida que PAYMENT <= LIQUIDATION disponível - ✅ Cria PAYMENT com referenceId = TreasuryPayment.id **Status:** ✅ Funcionando --- ## ❓ Questões para Investigar ### 1. Como iniciar o processo de elaboração? **Resposta:** 1. Criar Exercício Fiscal (DRAFT) 2. Criar Linhas Orçamentárias 3. **Clicar no botão Wallet (💼) em cada linha** → Criar dotações 4. Abrir Exercício Fiscal (OPEN) **Problema Potencial:** - ⚠️ O botão Wallet pode não ser intuitivo para novos usuários - ⚠️ Não há indicação clara de que é necessário criar dotações antes de abrir o exercício --- ### 2. Como a execução se conecta com o Tesouro? **Resposta:** - RH cria PaymentOrder → Cria COMMITMENT automaticamente - Tesouro confirma pagamento → Cria PAYMENT automaticamente - A conexão é automática via `BudgetIntegrationService` **Problema Potencial:** - ⚠️ Pode não estar claro que a integração é automática - ⚠️ Falta visibilidade do link entre PaymentOrder e BudgetExecution --- ### 3. Como visualizar o fluxo completo? **Resposta:** - `Orçamento → Execução`: Mostra todos os movimentos (COMMITMENT, LIQUIDATION, PAYMENT) - `Orçamento → Linhas Orçamentais`: Mostra saldos (Alocado, Comprometido, Disponível) **Problema Potencial:** - ⚠️ Falta visão consolidada do fluxo end-to-end - ⚠️ Não há rastreamento visual do link entre PaymentOrder e BudgetExecution --- ## 🎯 Recomendações ### 1. Melhorar UX do Botão de Dotações **Problema:** Botão Wallet pode não ser intuitivo **Solução:** - Adicionar tooltip mais descritivo: "Gerir Dotações" - Adicionar badge com número de dotações (se houver) - Adicionar indicador visual se linha não tem dotações --- ### 2. Adicionar Validação ao Abrir Exercício **Problema:** Pode abrir exercício sem dotações **Solução:** - Validar se há pelo menos uma dotação antes de abrir - Mostrar aviso se linhas não têm dotações - Opção: Bloquear abertura se não houver dotações --- ### 3. Melhorar Rastreabilidade **Problema:** Difícil rastrear link entre PaymentOrder e BudgetExecution **Solução:** - Adicionar coluna "Referência" em BudgetExecution mostrando PaymentOrder.id - Adicionar link para PaymentOrder na página de Execução - Adicionar link para BudgetExecution na página de Ordens de Pagamento --- ### 4. Criar Dashboard de Fluxo **Problema:** Falta visão consolidada **Solução:** - Dashboard mostrando: - Exercício Fiscal atual - Total alocado vs comprometido vs pago - Gráfico de execução (COMMITMENT → LIQUIDATION → PAYMENT) - Status de integrações (RH, Tesouro) --- ## 📋 Checklist de Melhorias ### UX/UI - [ ] Melhorar tooltip do botão Wallet - [ ] Adicionar badge com número de dotações - [ ] Adicionar indicador se linha não tem dotações - [ ] Adicionar validação ao abrir exercício ### Rastreabilidade - [ ] Adicionar coluna "Referência" em BudgetExecution - [ ] Adicionar links entre PaymentOrder e BudgetExecution - [ ] Adicionar breadcrumbs nas páginas ### Documentação - [ ] Criar guia visual do fluxo end-to-end - [ ] Documentar integrações automáticas - [ ] Criar diagrama de sequência ### Dashboard - [ ] Criar dashboard consolidado - [ ] Adicionar gráficos de execução - [ ] Mostrar status de integrações --- **Documento gerado em:** 2025-01-XX **Versão:** 1.0