# 📊 Análise Comparativa: Especificação vs Implementação - Módulo Tesouro

**Data:** 2025-01-XX  
**Objetivo:** Comparar especificação de requisitos com implementação atual e identificar gaps

---

## 📋 Resumo Executivo

| Requisito | Status | Prioridade | Complexidade |
|-----------|--------|------------|--------------|
| Hierarquia CUT | ❌ Não implementado | 🔴 Crítico | Alta |
| Atributos de Conta (IBAN, SWIFT, etc.) | ❌ Parcial | 🔴 Crítico | Baixa |
| Plano de Tesouraria (PT) | ❌ Não implementado | 🔴 Crítico | Média |
| Retenção de Impostos | ❌ Não implementado | 🟡 Alta | Média |
| Nivelamento Automático | ❌ Não implementado | 🟡 Alta | Alta |
| Importação MT940/CAMT.053 | ⚠️ Parcial | 🟡 Média | Média |
| Geração XML ISO 20022 | ❌ Não implementado | 🟡 Média | Alta |
| Dashboard KPIs | ❌ Não implementado | 🟢 Baixa | Baixa |

---

## 🔍 Análise Detalhada

### 1. Arquitetura de Dados: Estrutura da CUT

#### ✅ O que temos:
- `CashAccount` com campos básicos (code, name, type, accountNumber, branchCode)
- Suporte a `orgUnitId` (vínculo com unidade orgânica)
- Saldos (`currentBalance`, `availableBalance`)

#### ❌ O que falta (CRÍTICO):

**1.1 Hierarquia Virtual de Contas**
- ❌ Campo `parentAccountId` para hierarquia
- ❌ Tipo de conta: CUT Principal (BCEAO), Correspondente, Trânsito
- ❌ Agregação automática de saldos hierárquicos

**1.2 Atributos Obrigatórios**
- ❌ `iban` (IBAN da conta)
- ❌ `swiftCode` (Código SWIFT)
- ❌ `accountingCode` (Código Contabilístico - Classe 5)
- ❌ `accountType` (Receita/Despesa/Mista)
- ❌ `overdraftLimit` (Limite de descoberto)

**Impacto:** Sem hierarquia, não é possível consolidar saldos da CUT. Sem atributos, não há integração com sistemas bancários.

---

### 2. Processos Core

#### 2.1 Gestão do Plano de Tesouraria (PT)

**Especificação:**
- Criar planos mensais e semanais
- Previsões de receita + cronograma de despesas
- Validar se total de ordens do dia não excede teto aprovado

**Status Atual:**
- ❌ **Não implementado**
- ❌ Não há entidade `TreasuryPlan`
- ❌ Não há validação de tetos diários

**Impacto:** Sem planejamento, não há controle preventivo de liquidez.

---

#### 2.2 Execução de Pagamentos

**Especificação:**
- Gatilho: Despesa "Liquidada e Pronta a Pagar"
- Verificação de liquidez (subconta + CUT global)
- Transferência Eletrónica (STAR/SICA) - XML ISO 20022
- Pagamentos de Massa (folha de salário)
- Assinatura Digital (múltiplos níveis)

**Status Atual:**
- ✅ Verificação de liquidez básica (implementado)
- ✅ Pagamentos de massa (via PayrollRun)
- ✅ Aprovação hierárquica (implementado)
- ❌ Geração XML ISO 20022 (não implementado)
- ❌ Assinatura digital com certificados (não implementado)

**Impacto:** Sem XML ISO 20022, não há integração com STAR/SICA do BCEAO.

---

#### 2.3 Arrecadação e Nivelamento

**Especificação:**
- Integração com SYDONIA (Alfândegas) e CONTRIB (Impostos)
- Monitorização de saldos em bancos comerciais
- Regra de Ouro UEMOA: Alerta se saldo em Conta de Trânsito > 0 no fim do dia

**Status Atual:**
- ❌ **Não implementado**
- ❌ Não há integração com sistemas externos
- ❌ Não há processo de nivelamento automático
- ❌ Não há alertas de nivelamento pendente

**Impacto:** Sem nivelamento, não há conformidade com Regra de Ouro UEMOA.

---

### 3. Requisitos Técnicos

#### 3.1 Conciliação Bancária

**Especificação:**
- Importação automática MT940 ou CAMT.053
- Matching automático (valor, data, referência)
- Conciliação manual de exceções
- Geração automática de lançamentos contabilísticos

**Status Atual:**
- ✅ Estrutura básica de conciliação (implementado)
- ✅ Matching básico (implementado)
- ⚠️ Importação de extratos (parcial - apenas manual)
- ❌ Importação automática MT940/CAMT.053 (não implementado)
- ❌ Geração automática de lançamentos contabilísticos (não implementado)

**Impacto:** Sem importação automática, processo é manual e propenso a erros.

---

#### 3.2 Integração com Contabilidade

**Especificação:**
- Cada movimento gera lançamento automático
- Débito: Classe 6/2 (Despesa)
- Crédito: Classe 5 (Tesouraria)

**Status Atual:**
- ❌ **Não implementado**
- ❌ Não há módulo de Contabilidade
- ❌ Não há geração automática de lançamentos

**Impacto:** Sem integração contabilística, não há conformidade com Diretiva UEMOA.

---

### 4. Regras de Negócio

#### RN01 - Unidade de Caixa

**Especificação:** Nenhuma conta bancária do Estado pode existir fora da visibilidade do módulo Tesouro.

**Status Atual:**
- ⚠️ **Parcial**
- ✅ Contas registradas no sistema
- ❌ Não há validação que todas as contas do Estado estão registradas
- ❌ Não há processo de auditoria

**Impacto:** Risco de contas não registradas.

---

#### RN02 - Validação de Saldo

**Especificação:** Impedir ordens se não houver saldo suficiente na CUT, exceto com autorização de "Adiantamento do Banco Central".

**Status Atual:**
- ✅ Validação básica de saldo (implementado)
- ❌ Não considera hierarquia CUT (soma de subcontas)
- ❌ Não há tratamento de "Adiantamento do Banco Central"

**Impacto:** Validação incompleta sem considerar CUT global.

---

#### RN03 - Retenção de Impostos

**Especificação:** Ao pagar fornecedor, reter automaticamente IVA/Imposto Industrial, gerando dois fluxos (líquido + imposto).

**Status Atual:**
- ❌ **Não implementado**
- ❌ Não há cálculo de retenção
- ❌ Não há divisão de fluxos (líquido + imposto)

**Impacto:** Não há conformidade fiscal automática.

---

### 5. Segurança

**Especificação:** Autenticação Multifator (MFA) para todas as movimentações financeiras.

**Status Atual:**
- ❌ **Não implementado**
- ❌ Não há MFA
- ✅ Aprovação hierárquica (implementado)

**Impacto:** Risco de segurança sem MFA.

---

### 6. Dashboard KPIs

**Especificação:**
- Posição Global de Caixa (BCEAO + Bancos Comerciais)
- Pipeline de Pagamentos (faturas liquidadas aguardando)
- Rácio de Cobertura (Liquidez / Despesas Semanais)
- Mapa de Nivelamento (bancos com saldo não transferido)

**Status Atual:**
- ❌ **Não implementado**
- ❌ Não há dashboard
- ❌ Não há KPIs calculados

**Impacto:** Falta visibilidade gerencial.

---

## 🎯 Plano de Implementação

### Fase 1: Crítico (Prioridade Alta)

1. **Hierarquia CUT**
   - Adicionar `parentAccountId` em `CashAccount`
   - Adicionar `accountCategory` (CUT_PRINCIPAL, CORRESPONDENT, TRANSIT)
   - Implementar agregação de saldos hierárquicos

2. **Atributos de Conta**
   - Adicionar `iban`, `swiftCode`, `accountingCode`, `accountType`, `overdraftLimit`
   - Atualizar DTOs e validações

3. **Plano de Tesouraria (PT)**
   - Criar entidade `TreasuryPlan`
   - Criar `TreasuryPlanService`
   - Implementar validação de tetos diários em `PaymentOrderService`

### Fase 2: Alta Prioridade

4. **Retenção de Impostos**
   - Adicionar campos de retenção em `PaymentOrder`
   - Implementar cálculo automático
   - Criar dois fluxos (líquido + imposto)

5. **Nivelamento Automático**
   - Criar processo de nivelamento
   - Implementar alertas de nivelamento pendente
   - Agendar job diário

6. **Importação MT940/CAMT.053**
   - Criar parser para MT940
   - Criar parser para CAMT.053
   - Integrar com `BankReconciliationService`

### Fase 3: Média Prioridade

7. **Geração XML ISO 20022**
   - Criar gerador de XML ISO 20022
   - Integrar com STAR/SICA
   - Adicionar endpoint para download

8. **Dashboard KPIs**
   - Criar `TreasuryDashboardService`
   - Implementar cálculos de KPIs
   - Criar frontend do dashboard

9. **Integração Contabilística**
   - Criar módulo de Contabilidade (ou integração)
   - Implementar geração automática de lançamentos
   - Mapear para Plano de Contas UEMOA

---

## 📊 Matriz de Impacto vs Esforço

| Requisito | Impacto | Esforço | Prioridade |
|-----------|---------|---------|------------|
| Hierarquia CUT | 🔴 Alto | 🔴 Alto | 1 |
| Atributos Conta | 🔴 Alto | 🟢 Baixo | 1 |
| Plano Tesouraria | 🔴 Alto | 🟡 Médio | 1 |
| Retenção Impostos | 🟡 Médio | 🟡 Médio | 2 |
| Nivelamento | 🟡 Médio | 🔴 Alto | 2 |
| Importação MT940 | 🟡 Médio | 🟡 Médio | 2 |
| XML ISO 20022 | 🟡 Médio | 🔴 Alto | 3 |
| Dashboard KPIs | 🟢 Baixo | 🟢 Baixo | 3 |
| Integração Contábil | 🔴 Alto | 🔴 Alto | 3 |

---

**Documento gerado em:** 2025-01-XX  
**Versão:** 1.0

