# 🚀 Guia Rápido de Testes - SIGEFP

**Para testadores e desenvolvedores**  
**Versão:** 1.0

---

## 📋 Checklist de Testes por Módulo

Use este guia para verificar rapidamente se cada funcionalidade está funcionando corretamente.

---

## ✅ Módulo Administração

### Utilizadores
- [ ] Criar utilizador com dados válidos
- [ ] Tentar criar com username duplicado (deve dar erro)
- [ ] Tentar criar com email inválido (deve dar erro)
- [ ] Editar utilizador existente
- [ ] Atribuir perfis a utilizador
- [ ] Desativar utilizador

### Perfis
- [ ] Criar perfil com código único
- [ ] Tentar criar com código duplicado (deve dar erro)
- [ ] Atribuir permissões ao perfil
- [ ] Editar perfil existente

### Auditoria
- [ ] Consultar todos os logs
- [ ] Filtrar por utilizador
- [ ] Filtrar por módulo
- [ ] Filtrar por período
- [ ] Exportar logs

---

## ✅ Módulo Organização

### Ministérios
- [ ] Criar ministério
- [ ] Tentar criar com código duplicado (deve dar erro)
- [ ] Editar ministério
- [ ] Buscar ministério

### Unidades Orgânicas
- [ ] Criar unidade de nível 1 (sem pai)
- [ ] Criar unidade de nível 2 (com pai)
- [ ] Verificar hierarquia
- [ ] Filtrar por ministério

### Cargos
- [ ] Criar cargo
- [ ] Tentar criar com código duplicado (deve dar erro)
- [ ] Editar cargo
- [ ] Buscar cargo

---

## ✅ Módulo RH & Folha

### Agentes
- [ ] Criar agente completo
- [ ] Tentar criar com matrícula duplicada (deve dar erro)
- [ ] Editar agente
- [ ] Visualizar detalhes completos
- [ ] Filtrar por status
- [ ] Filtrar por ministério
- [ ] Exportar lista (PDF/Excel)

### Contratos
- [ ] Criar contrato permanente
- [ ] Criar contrato temporário
- [ ] Tentar criar dois contratos ativos (deve dar erro)
- [ ] Editar contrato
- [ ] Filtrar por agente

### Contas Bancárias
- [ ] Criar conta bancária
- [ ] Marcar como primária
- [ ] Tentar criar segunda primária (deve desmarcar anterior)
- [ ] Editar conta

### Grelha Salarial
- [ ] Visualizar estrutura completa
- [ ] Criar categoria
- [ ] Criar grau
- [ ] Criar escalão
- [ ] Definir valor para escalão

### Períodos de Folha
- [ ] Criar período
- [ ] Abrir período (DRAFT → OPEN)
- [ ] Tentar abrir dois períodos (deve dar erro)
- [ ] Fechar período (OPEN → CLOSED)

### Processamento
- [ ] Criar processamento
- [ ] Processar folha (calcular itens)
- [ ] Verificar cálculos:
  - [ ] Vencimento base
  - [ ] Proventos (abono)
  - [ ] Descontos (INPS, IRPS, Selo)
- [ ] Gerar ordens de pagamento
- [ ] Exportar folha

### Regras de Imposto
- [ ] Visualizar regras ativas
- [ ] Criar regra de INPS
- [ ] Criar regra de Selo
- [ ] Desativar regra antiga

### Escalões IRPS
- [ ] Visualizar escalões
- [ ] Criar novo escalão
- [ ] Verificar que não há sobreposição
- [ ] Editar escalão

### Avaliações
- [ ] Visualizar avaliações
- [ ] Finalizar avaliação DRAFT
- [ ] Verificar cálculo de menção
- [ ] Filtrar por agente
- [ ] Filtrar por ano

---

## ✅ Módulo Orçamento

### Exercícios Fiscais
- [ ] Criar exercício
- [ ] Abrir exercício (DRAFT → OPEN)
- [ ] Tentar abrir dois exercícios (deve dar erro)
- [ ] Fechar exercício (OPEN → CLOSED)

### Linhas Orçamentais
- [ ] Criar linha
- [ ] Verificar saldos iniciais
- [ ] Após processar folha, verificar comprometimento
- [ ] Após liquidação, verificar saldo liquidado
- [ ] Após pagamento, verificar saldo pago

### Execução
- [ ] Visualizar todos os movimentos
- [ ] Filtrar por linha
- [ ] Filtrar por período
- [ ] Filtrar por tipo (COMMITMENT, LIQUIDATION, PAYMENT)
- [ ] Verificar sequência correta

---

## ✅ Módulo Tesouraria

### Lotes de Pagamento
- [ ] Criar lote
- [ ] Atualizar status (CREATED → SENT_TO_BANK)
- [ ] Atualizar status (SENT_TO_BANK → CONFIRMED)
- [ ] Filtrar por período
- [ ] Filtrar por ministério

### Ordens de Pagamento
- [ ] Visualizar ordens geradas
- [ ] Verificar valores (bruto vs líquido)
- [ ] Filtrar por lote
- [ ] Filtrar por status
- [ ] Visualizar detalhes

### Confirmações
- [ ] Registrar confirmação
- [ ] Marcar como PAID
- [ ] Verificar criação de PAYMENT no orçamento
- [ ] Verificar atualização de saldo
- [ ] Filtrar por status

---

## ✅ Módulo Dados Comuns

### Bancos
- [ ] Criar banco
- [ ] Tentar criar com código duplicado (deve dar erro)
- [ ] Editar banco
- [ ] Verificar uso em contas bancárias

---

## 🔄 Fluxo Integrado Completo

### Teste End-to-End

**Pré-requisitos:**
- [ ] Banco criado
- [ ] Ministério criado
- [ ] Unidade orgânica criada
- [ ] Cargo criado

**Passos:**
1. [ ] Criar exercício fiscal 2025 e abrir
2. [ ] Criar linha orçamentária (valor: 10.000.000 XOF)
3. [ ] Criar período de folha Janeiro 2025 e abrir
4. [ ] Criar agente completo
5. [ ] Criar contrato (salário: 600.000 XOF)
6. [ ] Criar conta bancária primária
7. [ ] Criar processamento de folha
8. [ ] Processar folha
9. [ ] Verificar:
   - [ ] Itens calculados corretamente
   - [ ] COMMITMENT criado
   - [ ] Saldo disponível atualizado
10. [ ] Gerar ordens de pagamento
11. [ ] Criar lote de pagamento
12. [ ] Enviar lote ao banco
13. [ ] Registrar confirmação (PAID)
14. [ ] Verificar:
   - [ ] PAYMENT criado
   - [ ] Saldo disponível atualizado

**Resultado Esperado:**
- ✅ Todos os passos executados sem erros
- ✅ Valores calculados corretamente
- ✅ Integração funcionando
- ✅ Saldos corretos

---

## 🧮 Teste de Cálculos

### Cenário: Agente com Salário 600.000 XOF

**Dados:**
- Salário base: 600.000 XOF
- 2 dependentes (abono: 2.000 XOF cada)
- INPS: 7%
- Selo: 0.3%
- IRPS: conforme escalões

**Cálculos Esperados:**
- Vencimento Base: **600.000 XOF**
- Abono de Família: **4.000 XOF** (2 × 2.000)
- Total Bruto: **604.000 XOF**
- INPS (7%): **42.280 XOF**
- Selo (0.3%): **1.812 XOF**
- Base IRPS: **561.720 XOF** (604.000 - 42.280)
- IRPS: **~46.172 XOF** (conforme escalão)
- Total Descontos: **~90.264 XOF**
- Valor Líquido: **~513.736 XOF**

**Verificações:**
- [ ] Vencimento base correto
- [ ] Abono calculado corretamente
- [ ] INPS calculado corretamente
- [ ] Selo calculado corretamente
- [ ] IRPS calculado corretamente
- [ ] Valor líquido correto

---

## ⚠️ Teste de Validações

### Cenários de Erro Esperados

- [ ] Criar agente com matrícula duplicada → **ERRO**
- [ ] Criar contrato sem agente → **ERRO**
- [ ] Processar folha com período fechado → **ERRO**
- [ ] Criar linha com exercício fechado → **ERRO**
- [ ] Gerar ordens sem folha processada → **ERRO**
- [ ] Registrar pagamento sem ordem → **ERRO**
- [ ] Abrir dois períodos para mesmo mês → **ERRO**
- [ ] Abrir dois exercícios → **ERRO**
- [ ] Criar dois contratos ativos para mesmo agente → **ERRO**
- [ ] Criar duas contas primárias para mesmo agente → **ERRO**

**Verificações:**
- [ ] Mensagem de erro apropriada exibida
- [ ] Dados não foram salvos
- [ ] Sistema permanece em estado consistente

---

## 📊 Teste de Integração Orçamentária

### Cenário: Folha de 800.000 XOF em linha com 1.000.000 XOF

**Passos:**
1. [ ] Criar linha com saldo: 1.000.000 XOF
2. [ ] Processar folha bruto: 800.000 XOF
3. [ ] Verificar COMMITMENT: 800.000 XOF
4. [ ] Verificar saldo disponível: 200.000 XOF
5. [ ] Processar liquidação
6. [ ] Verificar LIQUIDATION: 800.000 XOF
7. [ ] Confirmar pagamento líquido: 700.000 XOF
8. [ ] Verificar PAYMENT: 700.000 XOF
9. [ ] Verificar saldo disponível: 200.000 XOF (mantido)

**Verificações:**
- [ ] COMMITMENT criado corretamente
- [ ] LIQUIDATION criado corretamente
- [ ] PAYMENT criado corretamente
- [ ] Saldos atualizados corretamente
- [ ] Sequência respeitada

---

## 🔍 Checklist de Coerência e Lógica

### Validações de Negócio

- [ ] Período deve estar aberto para processar folha
- [ ] Exercício deve estar aberto para criar linhas
- [ ] Agente deve ter contrato ativo
- [ ] Agente deve ter conta bancária primária
- [ ] Linha deve ter saldo disponível
- [ ] Folha deve estar COMPLETED para gerar ordens
- [ ] Ordem deve estar em lote para enviar
- [ ] Status só pode avançar (não retroceder)

### Integridade de Dados

- [ ] IDs referenciados existem
- [ ] Relacionamentos são válidos
- [ ] Valores não são negativos
- [ ] Datas são válidas (não futuras onde aplicável)
- [ ] Códigos são únicos
- [ ] Status são consistentes

### Cálculos

- [ ] Vencimento = valor do escalão
- [ ] Proventos somados corretamente
- [ ] Descontos calculados corretamente
- [ ] Valor líquido = bruto - descontos
- [ ] Saldo disponível = alocado - comprometido
- [ ] Percentuais aplicados corretamente

---

## 📝 Notas para Testes

1. **Use dados de teste** do banco (`insert_all_test_data.sql` e `insert_functional_test_data.sql`)
2. **Teste em ordem** recomendada (Dados Comuns → Organização → Orçamento → RH → Folha → Tesouraria)
3. **Verifique logs** do backend para erros
4. **Compare valores** com cálculos manuais
5. **Teste casos extremos** (valores zero, valores muito altos, datas inválidas)
6. **Teste validações** tentando ações inválidas
7. **Verifique integração** entre módulos

---

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

