456 lines
16 KiB
Markdown
456 lines
16 KiB
Markdown
|
|
# 🔄 Análise Completa do Fluxo de Negócio - SIGEFP
|
||
|
|
|
||
|
|
**Data:** 2025-01-XX
|
||
|
|
**Objetivo:** Analisar o fluxo completo de negócio desde a elaboração do orçamento até o pagamento, identificando lacunas e melhorias necessárias
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎯 Problema Identificado
|
||
|
|
|
||
|
|
O usuário está tendo dificuldade em:
|
||
|
|
1. **Iniciar o processo de elaboração de orçamento**
|
||
|
|
2. **Entender como a execução se conecta com o Tesouro**
|
||
|
|
3. **Compreender o fluxo completo end-to-end**
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 Fluxo de Negócio Completo (Como DEVERIA ser)
|
||
|
|
|
||
|
|
### Fase 1: Elaboração e Aprovação do Orçamento
|
||
|
|
|
||
|
|
```
|
||
|
|
1. Criar Exercício Fiscal
|
||
|
|
└─> FiscalYearsPage: Criar novo exercício (status: DRAFT)
|
||
|
|
|
||
|
|
2. Criar Linhas Orçamentárias
|
||
|
|
└─> BudgetLinesPage: Criar rubricas (ex: "Aquisição de Medicamentos")
|
||
|
|
|
||
|
|
3. Registrar Dotações (LEI DO ORÇAMENTO) ⚠️ FALTANDO NO MENU
|
||
|
|
└─> BudgetEntryPage: Registrar dotação inicial via Lei
|
||
|
|
└─> Tipo: INITIAL_ALLOCATION
|
||
|
|
└─> Referência: "Lei nº X/2024"
|
||
|
|
└─> Atualiza: BudgetLine.totalAllocated
|
||
|
|
|
||
|
|
4. Aprovar e Abrir Exercício Fiscal
|
||
|
|
└─> FiscalYearsPage: Abrir exercício (status: OPEN)
|
||
|
|
```
|
||
|
|
|
||
|
|
**Status Atual:**
|
||
|
|
- ✅ Exercício Fiscal: Implementado
|
||
|
|
- ✅ Linhas Orçamentárias: Implementado
|
||
|
|
- ❌ **Dotações (BudgetEntry): FALTANDO NO MENU PRINCIPAL**
|
||
|
|
- Existe apenas dentro do modal de Linhas Orçamentárias
|
||
|
|
- Não há página dedicada para gestão de dotações
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Fase 2: Execução Orçamentária
|
||
|
|
|
||
|
|
```
|
||
|
|
1. Empenho (COMMITMENT)
|
||
|
|
└─> Origem: Módulo RH (folha de pagamento) ou Compras
|
||
|
|
└─> BudgetExecutionService: Criar COMMITMENT
|
||
|
|
└─> Validação: Verifica availableBalance
|
||
|
|
└─> Atualiza: BudgetLine.totalCommitted
|
||
|
|
|
||
|
|
2. Liquidação (LIQUIDATION)
|
||
|
|
└─> Origem: Após entrega de bem/serviço
|
||
|
|
└─> BudgetExecutionService: Criar LIQUIDATION
|
||
|
|
└─> Validação: Deve ter COMMITMENT correspondente
|
||
|
|
└─> Atualiza: BudgetLine (cálculo de saldo)
|
||
|
|
|
||
|
|
3. Pagamento (PAYMENT)
|
||
|
|
└─> Origem: Módulo Tesouro (após confirmação de pagamento)
|
||
|
|
└─> TreasuryPaymentService: Confirma pagamento
|
||
|
|
└─> BudgetIntegrationService: Cria PAYMENT automaticamente
|
||
|
|
└─> Atualiza: BudgetLine (cálculo final)
|
||
|
|
```
|
||
|
|
|
||
|
|
**Status Atual:**
|
||
|
|
- ✅ COMMITMENT: Implementado (via RH)
|
||
|
|
- ✅ LIQUIDATION: Implementado (via RH)
|
||
|
|
- ✅ PAYMENT: Implementado (via Tesouro - automático)
|
||
|
|
- ⚠️ **Visualização: BudgetExecutionPage mostra tudo, mas não permite criar manualmente**
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Fase 3: Processo de Pagamento (Tesouro)
|
||
|
|
|
||
|
|
```
|
||
|
|
1. Criação de Ordem de Pagamento
|
||
|
|
└─> PaymentOrdersPage: Criar ordem
|
||
|
|
└─> Origem: PayrollRun (RH) ou Manual
|
||
|
|
└─> Validação: Verifica saldo orçamentário (se aplicável)
|
||
|
|
|
||
|
|
2. Autorização de Pagamento
|
||
|
|
└─> PaymentAuthorizationsPage: Criar autorização
|
||
|
|
└─> Workflow: Aprovação hierárquica (níveis 1, 2, 3)
|
||
|
|
└─> Validação: Verifica disponibilidade de caixa
|
||
|
|
|
||
|
|
3. Programação de Pagamento
|
||
|
|
└─> PaymentBatchesPage: Criar lote
|
||
|
|
└─> Adicionar ordens ao lote
|
||
|
|
└─> Compromete: CashAccount.availableBalance
|
||
|
|
|
||
|
|
4. Execução de Pagamento
|
||
|
|
└─> TreasuryPaymentsPage: Confirmar pagamento
|
||
|
|
└─> Atualiza: CashAccount.currentBalance
|
||
|
|
└─> Cria: BudgetExecution (PAYMENT) automaticamente
|
||
|
|
└─> Registra: CashFlow (OUTFLOW)
|
||
|
|
|
||
|
|
5. Conciliação Bancária
|
||
|
|
└─> BankReconciliationPage: Importar extrato
|
||
|
|
└─> Matching automático
|
||
|
|
└─> Ajustes manuais (se necessário)
|
||
|
|
```
|
||
|
|
|
||
|
|
**Status Atual:**
|
||
|
|
- ✅ Todas as funcionalidades implementadas
|
||
|
|
- ✅ Integração com Orçamento funcionando
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔍 Problemas Identificados
|
||
|
|
|
||
|
|
### 1. **Menu de Orçamento Incompleto** 🔴 CRÍTICO
|
||
|
|
|
||
|
|
**Menu Atual:**
|
||
|
|
```
|
||
|
|
Orçamento
|
||
|
|
├── Exercícios Fiscais
|
||
|
|
├── Linhas Orçamentais
|
||
|
|
└── Execução
|
||
|
|
```
|
||
|
|
|
||
|
|
**O que está faltando:**
|
||
|
|
- ❌ **"Dotações" ou "Elaboração de Orçamento"** (BudgetEntry)
|
||
|
|
- Esta é a funcionalidade PRINCIPAL para iniciar o processo
|
||
|
|
- Atualmente só acessível via modal dentro de Linhas Orçamentárias
|
||
|
|
- Não há página dedicada para gestão de dotações
|
||
|
|
|
||
|
|
**Impacto:**
|
||
|
|
- Usuário não sabe como iniciar o processo de elaboração
|
||
|
|
- Não há visão consolidada de todas as dotações
|
||
|
|
- Dificulta auditoria e rastreamento
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 2. **Menu de Tesouro Desorganizado** 🟡 MÉDIO
|
||
|
|
|
||
|
|
**Menu Atual:**
|
||
|
|
```
|
||
|
|
Tesouro
|
||
|
|
├── Contas de Caixa
|
||
|
|
├── Autorizações
|
||
|
|
├── Lotes de Pagamento
|
||
|
|
├── Ordens de Pagamento
|
||
|
|
├── Conciliação
|
||
|
|
└── Confirmações
|
||
|
|
```
|
||
|
|
|
||
|
|
**Problemas:**
|
||
|
|
- Ordem não segue o fluxo lógico de negócio
|
||
|
|
- Falta "Entradas de Tesouraria" (TreasuryEntry) no menu
|
||
|
|
- "Fluxo de Caixa" não está no menu (existe a página)
|
||
|
|
|
||
|
|
**Ordem Sugerida (seguindo o fluxo):**
|
||
|
|
```
|
||
|
|
Tesouro
|
||
|
|
├── Contas de Caixa (pré-requisito)
|
||
|
|
├── Entradas de Tesouraria (novo)
|
||
|
|
├── Autorizações (workflow de aprovação)
|
||
|
|
├── Ordens de Pagamento (criação)
|
||
|
|
├── Lotes de Pagamento (agrupamento)
|
||
|
|
├── Confirmações (execução)
|
||
|
|
├── Fluxo de Caixa (monitoramento)
|
||
|
|
└── Conciliação (fechamento)
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 3. **Falta de Página para BudgetEntry** 🔴 CRÍTICO
|
||
|
|
|
||
|
|
**Situação Atual:**
|
||
|
|
- BudgetEntry só pode ser criado via modal dentro de BudgetLineEntriesModal
|
||
|
|
- Não há página dedicada para:
|
||
|
|
- Listar todas as dotações
|
||
|
|
- Criar dotações independentemente
|
||
|
|
- Visualizar histórico de alterações
|
||
|
|
- Filtrar por exercício fiscal, rubrica, tipo
|
||
|
|
|
||
|
|
**Necessário:**
|
||
|
|
- Criar `BudgetEntriesPage.tsx`
|
||
|
|
- Adicionar rota `/budget/entries`
|
||
|
|
- Adicionar ao menu de navegação
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 4. **Falta de Página para TreasuryEntry** 🟡 MÉDIO
|
||
|
|
|
||
|
|
**Situação Atual:**
|
||
|
|
- TreasuryEntry existe no backend
|
||
|
|
- Existe `TreasuryEntriesPage.tsx`
|
||
|
|
- Mas não está no menu de navegação
|
||
|
|
|
||
|
|
**Necessário:**
|
||
|
|
- Adicionar ao menu de navegação
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📋 Correções Necessárias
|
||
|
|
|
||
|
|
### Prioridade 1: Crítico
|
||
|
|
|
||
|
|
#### 1. Adicionar "Dotações" ao Menu de Orçamento
|
||
|
|
|
||
|
|
**Arquivo:** `sigefp-frontend/src/config/navigation.ts`
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
{
|
||
|
|
id: 'budget',
|
||
|
|
name: 'Orçamento',
|
||
|
|
description: 'Gestão orçamental',
|
||
|
|
icon: Wallet,
|
||
|
|
color: 'budget',
|
||
|
|
items: [
|
||
|
|
{ name: 'Exercícios Fiscais', href: '/budget/fiscal-years', icon: Calendar },
|
||
|
|
{ name: 'Linhas Orçamentais', href: '/budget/lines', icon: PiggyBank },
|
||
|
|
{ name: 'Dotações', href: '/budget/entries', icon: FileText }, // NOVO
|
||
|
|
{ name: 'Execução', href: '/budget/execution', icon: TrendingUp },
|
||
|
|
],
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 2. Criar BudgetEntriesPage
|
||
|
|
|
||
|
|
**Arquivo:** `sigefp-frontend/src/modules/budget/pages/BudgetEntriesPage.tsx`
|
||
|
|
|
||
|
|
**Funcionalidades:**
|
||
|
|
- Listar todas as dotações (BudgetEntry)
|
||
|
|
- Criar nova dotação
|
||
|
|
- Filtrar por:
|
||
|
|
- Exercício Fiscal
|
||
|
|
- Linha Orçamentária
|
||
|
|
- Tipo (INITIAL_ALLOCATION, SUPPLEMENTARY_CREDIT, etc.)
|
||
|
|
- Período
|
||
|
|
- Visualizar histórico
|
||
|
|
- Exportar relatórios
|
||
|
|
|
||
|
|
#### 3. Adicionar Rota
|
||
|
|
|
||
|
|
**Arquivo:** `sigefp-frontend/src/App.tsx`
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
{/* Budget Module */}
|
||
|
|
<Route path="/budget/fiscal-years" element={<FiscalYearsPage />} />
|
||
|
|
<Route path="/budget/lines" element={<BudgetLinesPage />} />
|
||
|
|
<Route path="/budget/entries" element={<BudgetEntriesPage />} /> {/* NOVO */}
|
||
|
|
<Route path="/budget/execution" element={<BudgetExecutionPage />} />
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Prioridade 2: Médio
|
||
|
|
|
||
|
|
#### 4. Reorganizar Menu de Tesouro
|
||
|
|
|
||
|
|
**Arquivo:** `sigefp-frontend/src/config/navigation.ts`
|
||
|
|
|
||
|
|
```typescript
|
||
|
|
{
|
||
|
|
id: 'treasury',
|
||
|
|
name: 'Tesouro',
|
||
|
|
description: 'Pagamentos e transferências',
|
||
|
|
icon: Landmark,
|
||
|
|
color: 'treasury',
|
||
|
|
items: [
|
||
|
|
{ name: 'Contas de Caixa', href: '/treasury/cash-accounts', icon: Wallet },
|
||
|
|
{ name: 'Entradas', href: '/treasury/entries', icon: FileText }, // NOVO
|
||
|
|
{ name: 'Autorizações', href: '/treasury/authorizations', icon: ShieldCheck },
|
||
|
|
{ name: 'Ordens de Pagamento', href: '/treasury/orders', icon: FileText },
|
||
|
|
{ name: 'Lotes de Pagamento', href: '/treasury/batches', icon: Send },
|
||
|
|
{ name: 'Confirmações', href: '/treasury/confirmations', icon: CheckCircle },
|
||
|
|
{ name: 'Fluxo de Caixa', href: '/treasury/cash-flow', icon: TrendingUp }, // NOVO
|
||
|
|
{ name: 'Conciliação', href: '/treasury/reconciliation', icon: Layers },
|
||
|
|
],
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔄 Fluxo Visual Completo
|
||
|
|
|
||
|
|
### Fluxo 1: Elaboração do Orçamento
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────────────────────────────────────────────────────┐
|
||
|
|
│ 1. CRIAR EXERCÍCIO FISCAL │
|
||
|
|
│ /budget/fiscal-years │
|
||
|
|
│ Status: DRAFT │
|
||
|
|
└─────────────────┬───────────────────────────────────────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────────────────────────────────────────────────┐
|
||
|
|
│ 2. CRIAR LINHAS ORÇAMENTÁRIAS │
|
||
|
|
│ /budget/lines │
|
||
|
|
│ Ex: "Aquisição de Medicamentos" │
|
||
|
|
└─────────────────┬───────────────────────────────────────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────────────────────────────────────────────────┐
|
||
|
|
│ 3. REGISTRAR DOTAÇÕES (LEI DO ORÇAMENTO) ⚠️ FALTANDO │
|
||
|
|
│ /budget/entries (NOVO) │
|
||
|
|
│ Tipo: INITIAL_ALLOCATION │
|
||
|
|
│ Referência: "Lei nº 12/2024" │
|
||
|
|
│ Valor: 10.000.000 XOF │
|
||
|
|
└─────────────────┬───────────────────────────────────────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────────────────────────────────────────────────┐
|
||
|
|
│ 4. ABRIR EXERCÍCIO FISCAL │
|
||
|
|
│ /budget/fiscal-years │
|
||
|
|
│ Status: OPEN │
|
||
|
|
│ ✅ Orçamento pronto para execução │
|
||
|
|
└─────────────────────────────────────────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Fluxo 2: Execução Orçamentária
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────────────────────────────────────────────────────┐
|
||
|
|
│ 1. EMPENHO (COMMITMENT) │
|
||
|
|
│ Origem: RH (folha) ou Compras │
|
||
|
|
│ BudgetExecutionService.createCommitment() │
|
||
|
|
│ ✅ Saldo comprometido │
|
||
|
|
└─────────────────┬───────────────────────────────────────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────────────────────────────────────────────────┐
|
||
|
|
│ 2. LIQUIDAÇÃO (LIQUIDATION) │
|
||
|
|
│ Origem: Após entrega de bem/serviço │
|
||
|
|
│ BudgetExecutionService.createLiquidation() │
|
||
|
|
│ ✅ Dívida reconhecida │
|
||
|
|
└─────────────────┬───────────────────────────────────────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────────────────────────────────────────────────┐
|
||
|
|
│ 3. PAGAMENTO (PAYMENT) │
|
||
|
|
│ Origem: Tesouro (após confirmação) │
|
||
|
|
│ BudgetIntegrationService.createPayment() │
|
||
|
|
│ ✅ Pagamento efetivado │
|
||
|
|
└─────────────────────────────────────────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### Fluxo 3: Processo de Pagamento (Tesouro)
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────────────────────────────────────────────────────┐
|
||
|
|
│ 1. CRIAR ORDEM DE PAGAMENTO │
|
||
|
|
│ /treasury/orders │
|
||
|
|
│ Origem: PayrollRun ou Manual │
|
||
|
|
└─────────────────┬───────────────────────────────────────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────────────────────────────────────────────────┐
|
||
|
|
│ 2. AUTORIZAR PAGAMENTO │
|
||
|
|
│ /treasury/authorizations │
|
||
|
|
│ Workflow: Aprovação hierárquica │
|
||
|
|
└─────────────────┬───────────────────────────────────────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────────────────────────────────────────────────┐
|
||
|
|
│ 3. CRIAR LOTE DE PAGAMENTO │
|
||
|
|
│ /treasury/batches │
|
||
|
|
│ Adicionar ordens ao lote │
|
||
|
|
└─────────────────┬───────────────────────────────────────┘
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
┌─────────────────────────────────────────────────────────┐
|
||
|
|
│ 4. CONFIRMAR PAGAMENTO │
|
||
|
|
│ /treasury/confirmations │
|
||
|
|
│ ✅ Cria BudgetExecution (PAYMENT) automaticamente │
|
||
|
|
└─────────────────────────────────────────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 Integrações Entre Módulos
|
||
|
|
|
||
|
|
### RH → Orçamento
|
||
|
|
|
||
|
|
```
|
||
|
|
PayrollRun (COMPLETED)
|
||
|
|
↓
|
||
|
|
PaymentOrder criado
|
||
|
|
↓
|
||
|
|
BudgetExecution (COMMITMENT) criado
|
||
|
|
↓
|
||
|
|
BudgetExecution (LIQUIDATION) criado (no encerramento)
|
||
|
|
```
|
||
|
|
|
||
|
|
### Orçamento → Tesouro
|
||
|
|
|
||
|
|
```
|
||
|
|
BudgetExecution (LIQUIDATION) existe
|
||
|
|
↓
|
||
|
|
PaymentOrder criado (com budgetLineId)
|
||
|
|
↓
|
||
|
|
PaymentOrder executado
|
||
|
|
↓
|
||
|
|
TreasuryPayment confirmado
|
||
|
|
↓
|
||
|
|
BudgetExecution (PAYMENT) criado automaticamente
|
||
|
|
```
|
||
|
|
|
||
|
|
### Tesouro → Orçamento
|
||
|
|
|
||
|
|
```
|
||
|
|
TreasuryPayment (status: PAID)
|
||
|
|
↓
|
||
|
|
BudgetIntegrationService.createPaymentFromTreasury()
|
||
|
|
↓
|
||
|
|
BudgetExecution (PAYMENT) criado
|
||
|
|
↓
|
||
|
|
BudgetLine.totalPaid atualizado
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Checklist de Correções
|
||
|
|
|
||
|
|
### Crítico
|
||
|
|
- [ ] Criar `BudgetEntriesPage.tsx`
|
||
|
|
- [ ] Adicionar rota `/budget/entries`
|
||
|
|
- [ ] Adicionar "Dotações" ao menu de navegação
|
||
|
|
- [ ] Criar documentação do fluxo completo
|
||
|
|
|
||
|
|
### Médio
|
||
|
|
- [ ] Reorganizar menu de Tesouro (ordem lógica)
|
||
|
|
- [ ] Adicionar "Entradas" ao menu de Tesouro
|
||
|
|
- [ ] Adicionar "Fluxo de Caixa" ao menu de Tesouro
|
||
|
|
- [ ] Criar guia visual do fluxo end-to-end
|
||
|
|
|
||
|
|
### Baixo
|
||
|
|
- [ ] Adicionar breadcrumbs nas páginas
|
||
|
|
- [ ] Adicionar links de navegação entre páginas relacionadas
|
||
|
|
- [ ] Criar dashboard com visão consolidada do fluxo
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎯 Próximos Passos
|
||
|
|
|
||
|
|
1. **Imediato:** Criar BudgetEntriesPage e adicionar ao menu
|
||
|
|
2. **Curto Prazo:** Reorganizar menu de Tesouro
|
||
|
|
3. **Médio Prazo:** Criar guia visual interativo do fluxo
|
||
|
|
4. **Longo Prazo:** Dashboard consolidado com visão end-to-end
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Documento gerado em:** 2025-01-XX
|
||
|
|
**Versão:** 1.0
|
||
|
|
|