345 lines
8.4 KiB
Markdown
345 lines
8.4 KiB
Markdown
|
|
# 🔄 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
|
||
|
|
|