Files
sigrhapf/Documents/sigfip/sigefp/ANALISE_REAL_FLUXO_NEGOCIO.md
T
2026-05-19 11:41:28 +00:00

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

  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