# 🔄 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

