8.4 KiB
🔄 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
-
Exercícios Fiscais (
/budget/fiscal-years)- ✅ Criar, abrir, fechar exercícios
- ✅ Status: DRAFT → OPEN → CLOSED
-
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.
-
Execução (
/budget/execution)- ✅ Visualizar COMMITMENT, LIQUIDATION, PAYMENT
- ✅ Filtros por tipo, período, linha orçamentária
Módulo Tesouro
- Contas de Caixa (
/treasury/cash-accounts) - Autorizações (
/treasury/authorizations) - Lotes de Pagamento (
/treasury/batches) - Ordens de Pagamento (
/treasury/orders) - Conciliação (
/treasury/reconciliation) - 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:
- Criar Exercício Fiscal (DRAFT)
- Criar Linhas Orçamentárias
- Clicar no botão Wallet (💼) em cada linha → Criar dotações
- 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