1191 lines
32 KiB
Markdown
1191 lines
32 KiB
Markdown
|
|
# 🧪 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
|
|||
|
|
|