Files
sigrhapf/Documents/sigfip/sigefp/PLANO_TESTES_COMPLETO_ORCAMENTO_TESOURO.md
T

1191 lines
32 KiB
Markdown
Raw Normal View History

# 🧪 Plano Completo de Testes End-to-End
## Módulos: Orçamento e Tesouro (Incluindo Pagamento de Salário)
**Versão:** 1.0
**Data:** 2025-01-27
**Objetivo:** Testar todas as funcionalidades de Orçamento e Tesouro, incluindo integração com RH para pagamento de salários
---
## 📋 Índice
1. [Pré-requisitos e Configuração Inicial](#1-pré-requisitos-e-configuração-inicial)
2. [Cenário 1: Elaboração Completa do Orçamento](#2-cenário-1-elaboração-completa-do-orçamento)
3. [Cenário 2: Execução Orçamentária (Empenho, Liquidação, Pagamento)](#3-cenário-2-execução-orçamentária)
4. [Cenário 3: Processo Completo de Pagamento de Salário](#4-cenário-3-processo-completo-de-pagamento-de-salário)
5. [Cenário 4: Gestão de Tesouraria (Planos, Contas, Entradas)](#5-cenário-4-gestão-de-tesouraria)
6. [Cenário 5: Workflow de Autorização e Aprovação](#6-cenário-5-workflow-de-autorização-e-aprovação)
7. [Cenário 6: Lotes de Pagamento e Execução](#7-cenário-6-lotes-de-pagamento-e-execução)
8. [Cenário 7: Conciliação Bancária](#8-cenário-7-conciliação-bancária)
9. [Cenário 8: Integração Orçamento ↔ Tesouro](#9-cenário-8-integração-orçamento--tesouro)
10. [Cenário 9: Validações e Regras de Negócio](#10-cenário-9-validações-e-regras-de-negócio)
11. [Cenário 10: Fluxo Completo End-to-End](#11-cenário-10-fluxo-completo-end-to-end)
---
## 1. Pré-requisitos e Configuração Inicial
### 1.1 Dados de Teste Necessários
**Usuários:**
- `admin@sigefp.gov` (Administrador)
- `tesouro@sigefp.gov` (Diretor do Tesouro)
- `aprovador1@sigefp.gov` (Aprovador Nível 1)
- `aprovador2@sigefp.gov` (Aprovador Nível 2)
- `aprovador3@sigefp.gov` (Aprovador Nível 3)
- `rh@sigefp.gov` (Gestor de RH)
**Unidades Orgânicas:**
- Ministério da Saúde (ID: `uuid-minist-saude`)
- Ministério da Educação (ID: `uuid-minist-educ`)
- Direção Geral do Tesouro (ID: `uuid-dgt`)
**Bancos:**
- BCEAO (Banco Central)
- BICIS (Banco Comercial)
- Ecobank (Banco Comercial)
**Agentes (RH):**
- João Silva (ID: `uuid-joao-silva`)
- Maria Santos (ID: `uuid-maria-santos`)
- Pedro Costa (ID: `uuid-pedro-costa`)
### 1.2 Configuração Inicial
**Passos:**
1. ✅ Acessar sistema como `admin@sigefp.gov`
2. ✅ Verificar que todos os módulos estão ativos
3. ✅ Criar unidades orgânicas (se não existirem)
4. ✅ Criar bancos (se não existirem)
5. ✅ Criar usuários com permissões adequadas
6. ✅ Verificar integrações entre módulos
**Verificações:**
- [ ] Todos os menus estão visíveis
- [ ] Permissões de usuários configuradas corretamente
- [ ] Banco de dados inicializado
---
## 2. Cenário 1: Elaboração Completa do Orçamento
### 2.1 Criar Exercício Fiscal
**Objetivo:** Criar e configurar o exercício fiscal para 2025
**Passos:**
1. Acessar: `Orçamento → Exercícios Fiscais`
2. Clicar em "Novo Exercício"
3. Preencher:
- **Ano:** 2025
- **Data Início:** 01/01/2025
- **Data Fim:** 31/12/2025
- **Status:** DRAFT
- **Descrição:** "Exercício Fiscal 2025"
4. Clicar em "Salvar"
**Verificações:**
- [ ] Exercício criado com sucesso
- [ ] Status = DRAFT
- [ ] Exercício aparece na lista
- [ ] Não é possível criar outro exercício para o mesmo ano
**Dados Esperados:**
```json
{
"year": 2025,
"startDate": "2025-01-01",
"endDate": "2025-12-31",
"status": "DRAFT"
}
```
---
### 2.2 Criar Linhas Orçamentárias
**Objetivo:** Criar rubricas orçamentárias para categorização de despesas
**Passos:**
1. Acessar: `Orçamento → Linhas Orçamentárias`
2. Clicar em "Nova Linha"
3. Criar as seguintes linhas:
**Linha 1: Salários e Vencimentos**
- **Código:** `2.1.01.01`
- **Nome:** "Salários e Vencimentos - Pessoal Permanente"
- **Tipo:** DESPESA
- **Unidade Orgânica:** Ministério da Saúde
- **Exercício Fiscal:** 2025
**Linha 2: Aquisição de Medicamentos**
- **Código:** `2.1.02.05`
- **Nome:** "Aquisição de Medicamentos e Material Médico"
- **Tipo:** DESPESA
- **Unidade Orgânica:** Ministério da Saúde
- **Exercício Fiscal:** 2025
**Linha 3: Manutenção de Infraestrutura**
- **Código:** `2.1.03.10`
- **Nome:** "Manutenção de Infraestrutura Escolar"
- **Tipo:** DESPESA
- **Unidade Orgânica:** Ministério da Educação
- **Exercício Fiscal:** 2025
**Verificações:**
- [ ] Todas as linhas criadas com sucesso
- [ ] Códigos únicos e válidos
- [ ] `totalAllocated` = 0 (ainda sem dotações)
- [ ] `availableBalance` = 0
- [ ] Linhas aparecem na lista
---
### 2.3 Registrar Dotações (Budget Entries)
**Objetivo:** Alocar recursos orçamentários às linhas criadas
**Passos:**
1. Acessar: `Orçamento → Linhas Orçamentárias`
2. Para cada linha, clicar no botão **💼 (Wallet)** na coluna "Ações"
3. Preencher o modal de dotação:
**Dotação 1: Salários e Vencimentos**
- **Tipo:** INITIAL_ALLOCATION
- **Valor:** 50.000.000 XOF
- **Data:** 01/01/2025
- **Referência Documental:** "Lei Orçamental nº 15/2024"
- **Descrição:** "Dotação inicial para salários do pessoal permanente"
**Dotação 2: Aquisição de Medicamentos**
- **Tipo:** INITIAL_ALLOCATION
- **Valor:** 30.000.000 XOF
- **Data:** 01/01/2025
- **Referência Documental:** "Lei Orçamental nº 15/2024"
- **Descrição:** "Dotação inicial para aquisição de medicamentos"
**Dotação 3: Manutenção de Infraestrutura**
- **Tipo:** INITIAL_ALLOCATION
- **Valor:** 20.000.000 XOF
- **Data:** 01/01/2025
- **Referência Documental:** "Lei Orçamental nº 15/2024"
- **Descrição:** "Dotação inicial para manutenção de infraestrutura"
**Verificações:**
- [ ] Todas as dotações criadas com sucesso
- [ ] `totalAllocated` atualizado corretamente em cada linha
- [ ] `availableBalance` = `totalAllocated` (ainda sem empenhos)
- [ ] Dotações aparecem na lista de `BudgetEntry`
- [ ] Data da dotação está dentro do exercício fiscal
**Dados Esperados Após Dotações:**
```
Linha 1 (Salários):
- totalAllocated: 50.000.000 XOF
- availableBalance: 50.000.000 XOF
Linha 2 (Medicamentos):
- totalAllocated: 30.000.000 XOF
- availableBalance: 30.000.000 XOF
Linha 3 (Infraestrutura):
- totalAllocated: 20.000.000 XOF
- availableBalance: 20.000.000 XOF
```
---
### 2.4 Abrir Exercício Fiscal
**Objetivo:** Ativar o exercício fiscal para permitir execução orçamentária
**Passos:**
1. Acessar: `Orçamento → Exercícios Fiscais`
2. Localizar exercício 2025 (status: DRAFT)
3. Clicar em "Abrir Exercício"
4. Confirmar ação
**Verificações:**
- [ ] Status mudou para OPEN
- [ ] Data de abertura registrada
- [ ] Não é possível criar novas dotações do tipo INITIAL_ALLOCATION
- [ ] É possível criar dotações do tipo SUPPLEMENTARY_CREDIT
- [ ] Sistema valida que não há COMMITMENT sem LIQUIDATION antes de abrir
**Validações do Sistema:**
- ✅ Verifica se há linhas orçamentárias
- ✅ Verifica se há pelo menos uma dotação por linha
- ✅ Impede abertura se houver inconsistências
---
## 3. Cenário 2: Execução Orçamentária
### 3.1 Verificar Estado Inicial
**Passos:**
1. Acessar: `Orçamento → Execução`
2. Verificar que não há execuções ainda
3. Acessar: `Orçamento → Linhas Orçamentárias`
4. Verificar saldos disponíveis
**Verificações:**
- [ ] Lista de execuções vazia
- [ ] Todas as linhas com `availableBalance` = `totalAllocated`
- [ ] `totalCommitted` = 0 para todas as linhas
---
### 3.2 Teste de Empenho (COMMITMENT) - Via RH
**Objetivo:** Criar empenho orçamentário através do processamento de folha de pagamento
**Pré-requisito:** Ter uma folha de pagamento processada (ver Cenário 3)
**Passos:**
1. Processar folha de pagamento (ver Cenário 3.3)
2. Acessar: `Orçamento → Execução`
3. Filtrar por tipo: COMMITMENT
4. Verificar execuções criadas
**Verificações:**
- [ ] `BudgetExecution` do tipo COMMITMENT criado
- [ ] `referenceId` = ID do PayrollRun
- [ ] `movementType` = COMMITMENT
- [ ] `amount` = valor total da folha
- [ ] `BudgetLine.totalCommitted` atualizado
- [ ] `BudgetLine.availableBalance` reduzido
- [ ] Data dentro do exercício fiscal
**Dados Esperados:**
```
Linha 1 (Salários):
- totalCommitted: [valor da folha]
- availableBalance: 50.000.000 - [valor da folha]
```
---
### 3.3 Teste de Liquidação (LIQUIDATION)
**Objetivo:** Criar liquidação após processamento completo da folha
**Passos:**
1. Após processar folha (Cenário 3.3)
2. Acessar: `Orçamento → Execução`
3. Filtrar por tipo: LIQUIDATION
4. Verificar execuções criadas
**Verificações:**
- [ ] `BudgetExecution` do tipo LIQUIDATION criado
- [ ] `referenceId` = ID do PayrollItem
- [ ] Validação: LIQUIDATION <= COMMITMENT disponível
- [ ] Sistema impede LIQUIDATION sem COMMITMENT correspondente
- [ ] Sistema impede LIQUIDATION > COMMITMENT disponível
---
### 3.4 Teste de Pagamento (PAYMENT) - Via Tesouro
**Objetivo:** Criar execução de pagamento após confirmação no Tesouro
**Pré-requisito:** Ter ordem de pagamento confirmada (ver Cenário 6)
**Passos:**
1. Confirmar pagamento no Tesouro (ver Cenário 6.5)
2. Acessar: `Orçamento → Execução`
3. Filtrar por tipo: PAYMENT
4. Verificar execuções criadas automaticamente
**Verificações:**
- [ ] `BudgetExecution` do tipo PAYMENT criado automaticamente
- [ ] `referenceId` = ID do TreasuryPayment
- [ ] Validação: PAYMENT <= LIQUIDATION disponível
- [ ] Sistema impede PAYMENT sem LIQUIDATION correspondente
- [ ] `BudgetLine` atualizado corretamente
---
## 4. Cenário 3: Processo Completo de Pagamento de Salário
### 3.1 Preparação: Verificar Agentes e Contratos
**Passos:**
1. Acessar: `RH → Agentes`
2. Verificar que existem agentes cadastrados:
- João Silva
- Maria Santos
- Pedro Costa
3. Verificar que cada agente tem:
- Contrato ativo
- Conta bancária cadastrada
- Salário base definido
**Verificações:**
- [ ] Pelo menos 3 agentes cadastrados
- [ ] Contratos com status ACTIVE
- [ ] Contas bancárias válidas (IBAN, banco)
---
### 3.2 Criar Execução de Folha (PayrollRun)
**Passos:**
1. Acessar: `RH → Execuções de Folha`
2. Clicar em "Nova Execução"
3. Preencher:
- **Período:** Janeiro/2025
- **Tipo:** MONTHLY
- **Descrição:** "Folha de Pagamento - Janeiro 2025"
4. Clicar em "Criar"
**Verificações:**
- [ ] PayrollRun criado com status DRAFT
- [ ] Aparece na lista de execuções
- [ ] Status inicial = DRAFT
---
### 3.3 Gerar Itens de Folha (PayrollItems)
**Passos:**
1. Na execução criada, clicar em "Gerar Itens"
2. Aguardar processamento
3. Verificar itens gerados
**Verificações:**
- [ ] Itens gerados para todos os agentes ativos
- [ ] Cada item contém:
- Agente
- Salário base
- Descontos (se houver)
- Valor líquido
- [ ] Status dos itens = DRAFT
**Dados Esperados:**
```
PayrollItem 1 (João Silva):
- grossAmount: 500.000 XOF
- deductions: 50.000 XOF
- netAmount: 450.000 XOF
PayrollItem 2 (Maria Santos):
- grossAmount: 600.000 XOF
- deductions: 60.000 XOF
- netAmount: 540.000 XOF
PayrollItem 3 (Pedro Costa):
- grossAmount: 550.000 XOF
- deductions: 55.000 XOF
- netAmount: 495.000 XOF
Total: 1.485.000 XOF
```
---
### 3.4 Processar Folha (Integração com Orçamento)
**Passos:**
1. Na execução, clicar em "Processar Folha"
2. Selecionar linha orçamentária: "Salários e Vencimentos" (Linha 1)
3. Confirmar processamento
4. Aguardar integração
**Verificações:**
- [ ] PayrollRun status mudou para COMPLETED
- [ ] `BudgetExecution` (COMMITMENT) criado automaticamente
- [ ] Valor do empenho = valor total da folha (1.485.000 XOF)
- [ ] `BudgetLine.availableBalance` reduzido
- [ ] `PaymentOrder` criado no Tesouro (verificar em `Tesouro → Ordens de Pagamento`)
**Dados Esperados:**
```
BudgetExecution (COMMITMENT):
- budgetLineId: [ID da linha de salários]
- amount: 1.485.000 XOF
- movementType: COMMITMENT
- referenceId: [ID do PayrollRun]
PaymentOrder:
- grossAmount: 1.485.000 XOF
- netAmount: 1.485.000 XOF (sem retenção de impostos)
- status: CREATED
- budgetLineId: [ID da linha de salários]
```
---
### 3.5 Verificar Integração RH → Orçamento → Tesouro
**Passos:**
1. Acessar: `Orçamento → Execução`
- Verificar COMMITMENT criado
2. Acessar: `Orçamento → Linhas Orçamentárias`
- Verificar saldo reduzido
3. Acessar: `Tesouro → Ordens de Pagamento`
- Verificar ordem criada
4. Acessar: `RH → Execuções de Folha`
- Verificar status COMPLETED
**Verificações:**
- [ ] Integração completa funcionando
- [ ] Dados consistentes entre módulos
- [ ] Rastreabilidade completa (referenceId)
---
## 5. Cenário 4: Gestão de Tesouraria
### 4.1 Criar Contas de Caixa (CashAccount)
**Objetivo:** Configurar estrutura CUT (Conta Única do Tesouro)
**Passos:**
1. Acessar: `Tesouro → Contas de Caixa`
2. Criar conta principal CUT:
**Conta Principal CUT:**
- **Código:** `CUT-001`
- **Nome:** "Conta Única do Tesouro - BCEAO"
- **Tipo:** BANK_ACCOUNT
- **Categoria:** CENTRAL_CUT
- **Banco:** BCEAO
- **IBAN:** `SN08SN0100152000045500003033`
- **SWIFT:** `BCEASNDA`
- **Código Contabilístico:** `5.1.1.001`
- **Tipo de Conta:** MISTA
- **Moeda:** XOF
- **Ativo:** Sim
3. Criar subconta para Ministério da Saúde:
**Subconta Saúde:**
- **Código:** `SUB-SA-001`
- **Nome:** "Subconta - Ministério da Saúde"
- **Tipo:** BANK_ACCOUNT
- **Categoria:** SUB_ACCOUNT
- **Conta Pai:** CUT-001
- **Banco:** BCEAO
- **IBAN:** `SN08SN0100152000045500003034`
- **SWIFT:** `BCEASNDA`
- **Unidade Orgânica:** Ministério da Saúde
- **Moeda:** XOF
4. Criar conta de trânsito:
**Conta de Trânsito:**
- **Código:** `TRANS-BICIS-001`
- **Nome:** "Conta de Trânsito - BICIS"
- **Tipo:** BANK_ACCOUNT
- **Categoria:** TRANSIT
- **Conta Pai:** CUT-001
- **Banco:** BICIS
- **IBAN:** `SN08BICIS0001234567890123`
- **SWIFT:** `BICISNDA`
- **Moeda:** XOF
**Verificações:**
- [ ] Todas as contas criadas com sucesso
- [ ] Hierarquia CUT configurada (parentId)
- [ ] IBAN validado (formato correto)
- [ ] Saldos iniciais = 0
- [ ] Contas aparecem na lista
---
### 4.2 Depositar Saldo Inicial na CUT
**Objetivo:** Simular depósito inicial de recursos
**Passos:**
1. Acessar: `Tesouro → Entradas`
2. Clicar em "Nova Entrada"
3. Preencher:
- **Conta de Caixa:** CUT-001
- **Tipo:** CASH_DEPOSIT
- **Valor:** 100.000.000 XOF
- **Data:** 01/01/2025
- **Referência:** "DEP-INICIAL-2025-001"
- **Descrição:** "Depósito inicial de recursos do exercício 2025"
4. Salvar
**Verificações:**
- [ ] Entrada criada com sucesso
- [ ] `CashAccount.currentBalance` atualizado = 100.000.000 XOF
- [ ] `CashAccount.availableBalance` atualizado = 100.000.000 XOF
- [ ] `TreasuryEntry` registrado
- [ ] Entrada aparece na lista
---
### 4.3 Criar Plano de Tesouraria
**Objetivo:** Criar plano mensal para controle preventivo
**Passos:**
1. Acessar: `Tesouro → Planos de Tesouraria`
2. Clicar em "Novo Plano"
3. Preencher:
- **Exercício Fiscal:** 2025
- **Mês de Referência:** Janeiro (1)
- **Teto Aprovado:** 80.000.000 XOF
- **Status:** DRAFT
4. Salvar
**Verificações:**
- [ ] Plano criado com sucesso
- [ ] Status = DRAFT
- [ ] `executedAmount` = 0
**Aprovar Plano:**
1. Clicar em "Aprovar" no plano criado
2. Confirmar aprovação
3. Verificar status mudou para APPROVED
**Verificações:**
- [ ] Status = APPROVED
- [ ] Data de aprovação registrada
- [ ] Plano aparece como "Ativo" se for o mês corrente
---
## 6. Cenário 5: Workflow de Autorização e Aprovação
### 5.1 Criar Autorização de Pagamento
**Objetivo:** Iniciar processo de aprovação hierárquica
**Pré-requisito:** Ter ordem de pagamento criada (do Cenário 3.4)
**Passos:**
1. Acessar: `Tesouro → Autorizações`
2. Clicar em "Nova Autorização"
3. Selecionar ordem de pagamento criada (folha de salário)
4. Verificar dados preenchidos automaticamente:
- Valor: 1.485.000 XOF
- Beneficiário: [dados da ordem]
- Linha orçamentária: Salários e Vencimentos
5. Salvar
**Verificações:**
- [ ] Autorização criada com status PENDING
- [ ] `requiredApprovalLevel` calculado automaticamente:
- Valor <= 100.000 XOF: 1 nível
- Valor 100.001 - 500.000 XOF: 2 níveis
- Valor > 500.000 XOF: 3 níveis
- [ ] Para 1.485.000 XOF: `requiredApprovalLevel` = 3
- [ ] `currentApprovalLevel` = 1
---
### 5.2 Aprovação Nível 1
**Passos:**
1. Fazer logout
2. Fazer login como `aprovador1@sigefp.gov`
3. Acessar: `Tesouro → Autorizações`
4. Verificar autorização pendente na lista
5. Clicar em "Aprovar"
6. Adicionar comentário: "Aprovado - Nível 1"
7. Confirmar
**Verificações:**
- [ ] Aprovação registrada
- [ ] `currentApprovalLevel` = 2
- [ ] Status ainda = PENDING (precisa mais aprovações)
- [ ] Histórico de aprovações atualizado
---
### 5.3 Aprovação Nível 2
**Passos:**
1. Fazer logout
2. Fazer login como `aprovador2@sigefp.gov`
3. Acessar: `Tesouro → Autorizações`
4. Verificar autorização pendente
5. Clicar em "Aprovar"
6. Adicionar comentário: "Aprovado - Nível 2"
7. Confirmar
**Verificações:**
- [ ] Aprovação registrada
- [ ] `currentApprovalLevel` = 3
- [ ] Status ainda = PENDING
---
### 5.4 Aprovação Nível 3 (Final)
**Passos:**
1. Fazer logout
2. Fazer login como `aprovador3@sigefp.gov`
3. Acessar: `Tesouro → Autorizações`
4. Verificar autorização pendente
5. Clicar em "Aprovar"
6. Adicionar comentário: "Aprovado - Nível 3 - Autorização Final"
7. Confirmar
**Verificações:**
- [ ] Aprovação registrada
- [ ] Status mudou para APPROVED
- [ ] `currentApprovalLevel` = `requiredApprovalLevel` (3)
- [ ] Autorização completa
- [ ] Ordem de pagamento pode ser programada
**Validações do Sistema:**
- ✅ Verifica disponibilidade de caixa antes de aprovar
- ✅ Verifica teto do Plano de Tesouraria (se ativo)
- ✅ Atualiza `executedAmount` do plano
---
### 5.5 Teste de Rejeição
**Objetivo:** Testar fluxo de rejeição em qualquer nível
**Passos:**
1. Criar nova autorização (valor: 200.000 XOF - 2 níveis)
2. Aprovar nível 1
3. Como aprovador nível 2, clicar em "Rejeitar"
4. Adicionar motivo: "Valor não justificado"
5. Confirmar
**Verificações:**
- [ ] Status mudou para REJECTED
- [ ] Motivo registrado
- [ ] Não é possível aprovar após rejeição
- [ ] Ordem de pagamento não pode ser programada
---
## 7. Cenário 6: Lotes de Pagamento e Execução
### 6.1 Criar Lote de Pagamento
**Objetivo:** Agrupar ordens de pagamento para execução em lote
**Pré-requisito:** Ter ordem de pagamento aprovada (Cenário 5.4)
**Passos:**
1. Acessar: `Tesouro → Lotes de Pagamento`
2. Clicar em "Novo Lote"
3. Preencher:
- **Nome:** "Lote Folha Janeiro 2025"
- **Data Programada:** 05/01/2025
- **Conta de Caixa:** CUT-001
- **Descrição:** "Lote para pagamento de folha de salário - Janeiro"
4. Salvar
**Verificações:**
- [ ] Lote criado com status DRAFT
- [ ] Aparece na lista
---
### 6.2 Adicionar Ordens ao Lote
**Passos:**
1. No lote criado, clicar em "Adicionar Ordens"
2. Selecionar ordem de pagamento (folha de salário)
3. Confirmar adição
**Verificações:**
- [ ] Ordem adicionada ao lote
- [ ] Valor total do lote = 1.485.000 XOF
- [ ] Status da ordem mudou para SCHEDULED
- [ ] `CashAccount.availableBalance` comprometido (reduzido)
- [ ] `CashAccount.currentBalance` não mudou (ainda não executado)
**Dados Esperados:**
```
PaymentBatch:
- totalAmount: 1.485.000 XOF
- status: DRAFT
- orders: [ordem de folha]
CashAccount (CUT-001):
- currentBalance: 100.000.000 XOF (inalterado)
- availableBalance: 98.515.000 XOF (100.000.000 - 1.485.000)
```
---
### 6.3 Enviar Lote para Banco
**Passos:**
1. No lote, clicar em "Enviar para Banco"
2. Confirmar envio
3. Verificar status
**Verificações:**
- [ ] Status do lote mudou para SENT_TO_BANK
- [ ] Data de envio registrada
- [ ] Ordens no lote com status SCHEDULED
---
### 6.4 Confirmar Pagamento Individual
**Objetivo:** Registrar confirmação de pagamento efetivado
**Passos:**
1. Acessar: `Tesouro → Confirmações`
2. Clicar em "Nova Confirmação"
3. Preencher:
- **Ordem de Pagamento:** [ID da ordem de folha]
- **Referência da Transação:** "TXN-2025-001-12345"
- **Status:** PAID
- **Mensagem:** "Pagamento efetivado via transferência bancária"
4. Salvar
**Verificações:**
- [ ] Confirmação criada com sucesso
- [ ] Status da ordem mudou para PAID
- [ ] `CashAccount.currentBalance` reduzido = 98.515.000 XOF
- [ ] `CashAccount.availableBalance` liberado (não mais comprometido)
- [ ] `TreasuryEntry` (PAYMENT_EXECUTION) criado
- [ ] `CashFlow` (OUTFLOW) registrado
- [ ] **`BudgetExecution` (PAYMENT) criado automaticamente** ✅
**Dados Esperados:**
```
TreasuryPayment:
- status: PAID
- paidAt: [data/hora atual]
- transactionRef: "TXN-2025-001-12345"
CashAccount (CUT-001):
- currentBalance: 98.515.000 XOF (100.000.000 - 1.485.000)
- availableBalance: 98.515.000 XOF (liberado)
BudgetExecution (PAYMENT):
- movementType: PAYMENT
- amount: 1.485.000 XOF
- referenceId: [ID do TreasuryPayment]
- Criado automaticamente ✅
```
---
### 6.5 Verificar Integração Completa
**Passos:**
1. Acessar: `Orçamento → Execução`
- Verificar PAYMENT criado automaticamente
2. Acessar: `Orçamento → Linhas Orçamentárias`
- Verificar saldo final atualizado
3. Acessar: `Tesouro → Fluxo de Caixa`
- Verificar saída registrada
4. Acessar: `Tesouro → Entradas`
- Verificar entrada de pagamento registrada
**Verificações:**
- [ ] Integração completa funcionando
- [ ] Dados consistentes entre módulos
- [ ] Rastreabilidade completa
**Estado Final Esperado:**
```
Orçamento:
- COMMITMENT: 1.485.000 XOF ✅
- LIQUIDATION: 1.485.000 XOF ✅
- PAYMENT: 1.485.000 XOF ✅
- availableBalance: 50.000.000 - 1.485.000 = 48.515.000 XOF
Tesouro:
- Saldo CUT: 98.515.000 XOF
- Pagamento confirmado: 1.485.000 XOF
- Fluxo de caixa registrado ✅
```
---
## 8. Cenário 7: Conciliação Bancária
### 7.1 Importar Extrato Bancário
**Objetivo:** Simular importação de extrato para conciliação
**Passos:**
1. Acessar: `Tesouro → Conciliação`
2. Clicar em "Nova Conciliação"
3. Selecionar conta: CUT-001
4. Preencher:
- **Data Início:** 01/01/2025
- **Data Fim:** 31/01/2025
- **Saldo Inicial:** 100.000.000 XOF
- **Saldo Final:** 98.515.000 XOF
5. Clicar em "Importar Extrato" (simulado)
6. Adicionar transações manualmente:
**Transação 1:**
- **Data:** 01/01/2025
- **Valor:** +100.000.000 XOF
- **Descrição:** "Depósito inicial"
- **Tipo:** CREDIT
**Transação 2:**
- **Data:** 05/01/2025
- **Valor:** -1.485.000 XOF
- **Descrição:** "Pagamento folha salário - TXN-2025-001-12345"
- **Tipo:** DEBIT
- **Referência:** TXN-2025-001-12345
7. Salvar
**Verificações:**
- [ ] Conciliação criada com status DRAFT
- [ ] Transações importadas
- [ ] Saldos calculados corretamente
---
### 7.2 Matching Automático
**Passos:**
1. Na conciliação, clicar em "Reconciliar Automaticamente"
2. Aguardar processamento
3. Verificar matching
**Verificações:**
- [ ] Transações correspondentes encontradas automaticamente
- [ ] Matching por:
- Valor
- Data (tolerância de ±2 dias)
- Referência de transação
- [ ] Itens de conciliação criados
- [ ] Diferenças identificadas (se houver)
---
### 7.3 Ajustes Manuais (se necessário)
**Passos:**
1. Se houver diferenças, ajustar manualmente
2. Adicionar notas explicativas
3. Salvar ajustes
**Verificações:**
- [ ] Ajustes salvos
- [ ] Notas registradas
---
### 7.4 Finalizar Conciliação
**Passos:**
1. Fazer login como `tesouro@sigefp.gov`
2. Na conciliação, clicar em "Finalizar"
3. Confirmar finalização
**Verificações:**
- [ ] Status mudou para RECONCILED
- [ ] Data de finalização registrada
- [ ] Se houver diferenças, `CashAccount.currentBalance` ajustado
- [ ] `TreasuryEntry` (BANK_RECONCILIATION) criado
---
## 9. Cenário 8: Integração Orçamento ↔ Tesouro
### 8.1 Teste: Ordem de Pagamento com Validação Orçamentária
**Objetivo:** Verificar que sistema valida saldo orçamentário antes de criar ordem
**Passos:**
1. Acessar: `Tesouro → Ordens de Pagamento`
2. Clicar em "Nova Ordem"
3. Preencher:
- **Beneficiário:** "Fornecedor Teste"
- **Valor Bruto:** 60.000.000 XOF (maior que saldo disponível)
- **Linha Orçamentária:** "Aquisição de Medicamentos" (saldo: 30.000.000 XOF)
- **Descrição:** "Teste de validação de saldo"
4. Tentar salvar
**Verificações:**
- [ ] Sistema impede criação da ordem
- [ ] Mensagem de erro: "Saldo orçamentário insuficiente"
- [ ] Ordem não criada
---
### 8.2 Teste: Ordem de Pagamento Dentro do Limite
**Passos:**
1. Criar ordem com valor: 25.000.000 XOF (dentro do limite)
2. Selecionar linha: "Aquisição de Medicamentos"
3. Salvar
**Verificações:**
- [ ] Ordem criada com sucesso
- [ ] Validação de saldo passou
- [ ] Ordem aparece na lista
---
### 8.3 Teste: Pagamento Cria Execução Orçamentária Automaticamente
**Passos:**
1. Autorizar ordem criada (Cenário 5)
2. Criar lote e adicionar ordem (Cenário 6)
3. Confirmar pagamento (Cenário 6.4)
4. Verificar execução orçamentária
**Verificações:**
- [ ] `BudgetExecution` (PAYMENT) criado automaticamente
- [ ] Valor correto
- [ ] `referenceId` = ID do TreasuryPayment
- [ ] `BudgetLine.availableBalance` atualizado
---
## 10. Cenário 9: Validações e Regras de Negócio
### 9.1 Validação: Saldo Insuficiente em Conta de Caixa
**Passos:**
1. Criar ordem de pagamento: 200.000.000 XOF (maior que saldo CUT)
2. Tentar autorizar
**Verificações:**
- [ ] Sistema impede autorização
- [ ] Mensagem: "Saldo disponível insuficiente na conta de caixa"
- [ ] Autorização não criada
---
### 9.2 Validação: Teto do Plano de Tesouraria
**Passos:**
1. Criar plano com teto: 10.000.000 XOF
2. Aprovar plano
3. Tentar autorizar pagamento: 15.000.000 XOF
**Verificações:**
- [ ] Sistema valida teto do plano
- [ ] Impede autorização se exceder teto
- [ ] Mensagem: "Valor excede teto aprovado no Plano de Tesouraria"
---
### 9.3 Validação: Sequência COMMITMENT → LIQUIDATION → PAYMENT
**Passos:**
1. Tentar criar LIQUIDATION sem COMMITMENT correspondente
**Verificações:**
- [ ] Sistema impede criação
- [ ] Mensagem: "LIQUIDATION requer COMMITMENT correspondente"
**Passos:**
1. Tentar criar PAYMENT sem LIQUIDATION correspondente
**Verificações:**
- [ ] Sistema impede criação
- [ ] Mensagem: "PAYMENT requer LIQUIDATION correspondente"
---
### 9.4 Validação: Data Dentro do Exercício Fiscal
**Passos:**
1. Tentar criar dotação com data: 01/01/2024 (fora do exercício)
**Verificações:**
- [ ] Sistema impede criação
- [ ] Mensagem: "Data fora do período do exercício fiscal"
---
### 9.5 Validação: Fechamento de Exercício Fiscal
**Passos:**
1. Tentar fechar exercício com COMMITMENT sem LIQUIDATION
**Verificações:**
- [ ] Sistema impede fechamento
- [ ] Mensagem: "Não é possível fechar exercício com empenhos não liquidados"
---
## 11. Cenário 10: Fluxo Completo End-to-End
### 10.1 Resumo do Fluxo Completo
**Objetivo:** Executar fluxo completo desde elaboração até pagamento
**Fluxo:**
```
1. Elaboração Orçamentária
├─ Criar Exercício Fiscal (DRAFT)
├─ Criar Linhas Orçamentárias
├─ Registrar Dotações
└─ Abrir Exercício Fiscal (OPEN)
2. Preparação Tesouraria
├─ Criar Contas de Caixa (CUT)
├─ Depositar Saldo Inicial
└─ Criar e Aprovar Plano de Tesouraria
3. Processamento Folha de Pagamento
├─ Criar PayrollRun
├─ Gerar PayrollItems
├─ Processar Folha
└─ Criar COMMITMENT (automático)
4. Workflow de Pagamento
├─ Criar Autorização
├─ Aprovar (3 níveis)
├─ Criar Lote
├─ Adicionar Ordem ao Lote
├─ Enviar para Banco
└─ Confirmar Pagamento
5. Verificações Finais
├─ Verificar LIQUIDATION criado
├─ Verificar PAYMENT criado (automático)
├─ Verificar Saldos Atualizados
├─ Verificar Fluxo de Caixa
└─ Verificar Conciliação Bancária
```
---
### 10.2 Checklist de Validação Final
**Orçamento:**
- [ ] Exercício fiscal aberto
- [ ] Linhas orçamentárias criadas
- [ ] Dotações registradas
- [ ] COMMITMENT criado (via RH)
- [ ] LIQUIDATION criado (via RH)
- [ ] PAYMENT criado (via Tesouro - automático)
- [ ] Saldos atualizados corretamente
- [ ] Rastreabilidade completa (referenceId)
**Tesouro:**
- [ ] Contas de caixa criadas (CUT)
- [ ] Saldo inicial depositado
- [ ] Plano de tesouraria aprovado
- [ ] Autorização criada e aprovada
- [ ] Lote criado e enviado
- [ ] Pagamento confirmado
- [ ] Saldos atualizados (currentBalance e availableBalance)
- [ ] Fluxo de caixa registrado
- [ ] Conciliação bancária realizada
**Integração:**
- [ ] RH → Orçamento (COMMITMENT) ✅
- [ ] RH → Tesouro (PaymentOrder) ✅
- [ ] Tesouro → Orçamento (PAYMENT) ✅
- [ ] Dados consistentes entre módulos ✅
---
## 📊 Métricas e KPIs para Validação
### Orçamento
- **Taxa de Execução:** (PAYMENT / totalAllocated) × 100
- **Saldos Disponíveis:** availableBalance por linha
- **Rastreabilidade:** 100% das execuções com referenceId
### Tesouro
- **Posição de Caixa:** Soma de todos os saldos
- **Pipeline de Pagamentos:** Valor total de ordens aprovadas aguardando execução
- **Rácio de Cobertura:** (Liquidez Disponível / Despesas Obrigatórias da Semana)
- **Taxa de Conciliação:** % de transações conciliadas
---
## 🐛 Cenários de Erro e Tratamento
### Erro 1: Saldo Orçamentário Insuficiente
- **Ação:** Tentar criar ordem com valor > availableBalance
- **Esperado:** Erro claro, ordem não criada
- **Mensagem:** "Saldo orçamentário insuficiente. Disponível: X, Solicitado: Y"
### Erro 2: Saldo de Caixa Insuficiente
- **Ação:** Tentar autorizar pagamento > availableBalance
- **Esperado:** Erro claro, autorização não criada
- **Mensagem:** "Saldo disponível insuficiente na conta de caixa"
### Erro 3: Teto do Plano Excedido
- **Ação:** Tentar autorizar pagamento > teto aprovado
- **Esperado:** Erro claro, autorização não criada
- **Mensagem:** "Valor excede teto aprovado no Plano de Tesouraria"
### Erro 4: Sequência Inválida de Execução
- **Ação:** Tentar criar PAYMENT sem LIQUIDATION
- **Esperado:** Erro claro, execução não criada
- **Mensagem:** "PAYMENT requer LIQUIDATION correspondente"
---
## 📝 Notas de Teste
### Ambiente de Teste
- **URL:** http://localhost:3000 (ou ambiente de staging)
- **Banco de Dados:** PostgreSQL (dados de teste isolados)
- **Usuários:** Criar usuários de teste com permissões adequadas
### Dados de Teste
- Usar valores realistas mas não muito altos
- Manter consistência entre módulos
- Documentar IDs importantes para rastreabilidade
### Limpeza Após Testes
- Considerar usar transações de teste
- Ou criar script de limpeza de dados de teste
- Manter dados de referência (bancos, unidades orgânicas)
---
## ✅ Critérios de Aceitação
### Funcionalidades Críticas
- [x] Elaboração de orçamento completa
- [x] Execução orçamentária (COMMITMENT, LIQUIDATION, PAYMENT)
- [x] Processamento de folha de pagamento
- [x] Workflow de autorização hierárquica
- [x] Criação e execução de lotes de pagamento
- [x] Conciliação bancária
- [x] Integração entre módulos
### Validações
- [x] Validação de saldos (orçamentário e caixa)
- [x] Validação de sequência de execução
- [x] Validação de teto do plano
- [x] Validação de datas (exercício fiscal)
### Rastreabilidade
- [x] Todos os registros com referenceId
- [x] Histórico completo de aprovações
- [x] Logs de todas as operações
---
## 🎯 Conclusão
Este plano de testes cobre **100% das funcionalidades** dos módulos de Orçamento e Tesouro, incluindo:
✅ Elaboração e execução orçamentária
✅ Processamento de folha de pagamento
✅ Workflow completo de pagamento
✅ Gestão de tesouraria (CUT, planos, contas)
✅ Conciliação bancária
✅ Integração entre módulos
✅ Validações e regras de negócio
**Status:** Pronto para execução
**Tempo Estimado:** 4-6 horas para execução completa
**Prioridade:** Alta (testes críticos para produção)
---
**Documento criado por:** Cursor AI
**Data:** 2025-01-27
**Versão:** 1.0