# 📊 Scripts de Dados de Teste - SIGEFP

Este diretório contém scripts SQL para popular o banco de dados com dados de teste completos.

## 📋 Scripts Disponíveis

### 1. `insert_all_test_data.sql` (BASE)
**O que faz:**
- Cria a estrutura base de dados de teste
- Popula tabelas fundamentais: ministérios, unidades orgânicas, cargos
- Cria estrutura salarial completa
- Adiciona tipos de proventos e descontos
- Cria agentes, contratos e contas bancárias
- Cria ano fiscal e linhas orçamentárias
- Adiciona um período de folha básico

**Quando usar:**
- Primeira carga de dados de teste
- Reset do banco de dados de desenvolvimento
- Base para testes unitários

**Execução:**
```sql
\i sigefp-database/insert_all_test_data.sql
```

---

### 2. `insert_functional_test_data.sql` (COMPLEMENTAR)
**O que faz:**
- Adiciona períodos de folha adicionais (Fevereiro, Março 2025)
- Cria execuções de folha completas com status COMPLETED
- Adiciona itens de folha completos com todos os cálculos:
  - Vencimento Base
  - Abono de Família
  - INPS (7%)
  - IRPS (escalonado)
  - Imposto de Selo (0.3%)
- Cria execuções orçamentárias (COMMITMENT, LIQUIDATION, PAYMENT)
- Adiciona lotes de pagamento
- Cria ordens de pagamento geradas a partir da folha
- Adiciona confirmações de pagamento do tesouro
- Completa o fluxo RH → Budget → Treasury

**Quando usar:**
- Após executar `insert_all_test_data.sql`
- Para testes funcionais completos
- Para testar fluxos end-to-end
- Para validar integrações entre módulos

**Execução:**
```sql
\i sigefp-database/insert_functional_test_data.sql
```

---

### 3. `insert_complete_test_data.sql` (ALTERNATIVO)
**O que faz:**
- Versão simplificada que usa dados existentes
- Adiciona dados complementares básicos
- Útil quando já existe alguma estrutura no banco

**Quando usar:**
- Quando já há dados no banco e quer apenas complementar
- Para adicionar dados específicos sem sobrescrever

---

## 🚀 Sequência Recomendada de Execução

### Para Testes Completos:
```sql
-- 1. Executar script base
\i sigefp-database/insert_all_test_data.sql

-- 2. Executar script complementar para testes funcionais
\i sigefp-database/insert_functional_test_data.sql
```

### Para Testes Básicos:
```sql
-- Apenas o script base
\i sigefp-database/insert_all_test_data.sql
```

---

## 📊 Dados Criados

### Após `insert_all_test_data.sql`:
- ✅ 3 Ministérios
- ✅ 4 Unidades Orgânicas
- ✅ 4 Cargos
- ✅ 3 Bancos
- ✅ 1 Ano Fiscal (2025)
- ✅ 3 Linhas Orçamentárias
- ✅ 3 Alocações Orçamentárias
- ✅ Estrutura Salarial Completa
- ✅ 3 Tipos de Proventos
- ✅ 3 Tipos de Descontos
- ✅ Regras Globais de Desconto
- ✅ 5 Escalões de IRPS
- ✅ 5 Agentes
- ✅ 3 Contas Bancárias
- ✅ 2 Contratos
- ✅ 1 Período de Folha (Janeiro 2025)
- ✅ 1 Execução de Folha (DRAFT)
- ✅ 3 Itens de Folha Básicos

### Após `insert_functional_test_data.sql`:
- ✅ +2 Períodos de Folha (Fevereiro, Março)
- ✅ +2 Execuções de Folha (COMPLETED)
- ✅ +12 Itens de Folha Completos (com todos os cálculos)
- ✅ 6 Execuções Orçamentárias (COMMITMENT, LIQUIDATION, PAYMENT)
- ✅ 2 Lotes de Pagamento
- ✅ 3 Ordens de Pagamento
- ✅ 3 Confirmações de Pagamento do Tesouro
- ✅ Fluxo completo RH → Budget → Treasury

---

## 🧪 Cenários de Teste Cobertos

### ✅ Testes Unitários:
- Cálculos de INPS, IRPS e Selo
- Geração de itens de folha
- Validações de saldo orçamentário
- Criação de ordens de pagamento

### ✅ Testes de Integração:
- Fluxo completo: Folha → Compromisso → Liquidação → Pagamento
- Integração RH → Budget
- Integração Treasury → Budget
- Validações cruzadas entre módulos

### ✅ Testes Funcionais:
- Processamento de folha completa
- Geração de lotes de pagamento
- Confirmação de pagamentos
- Consultas e relatórios
- Dashboard com dados reais

---

## 📝 Notas Importantes

1. **Ordem de Execução**: Sempre execute `insert_all_test_data.sql` antes de `insert_functional_test_data.sql`

2. **Conflitos**: Os scripts usam `ON CONFLICT DO NOTHING`, então podem ser executados múltiplas vezes sem erro

3. **IDs Fixos**: Alguns IDs são fixos (UUIDs) para facilitar testes e referências

4. **Dados Realistas**: Os valores são baseados em valores típicos de Guiné-Bissau (em Francos CFA)

5. **Cálculos**: Os valores de descontos são calculados corretamente:
   - INPS: 7% sobre o bruto
   - Selo: 0.3% sobre o bruto
   - IRPS: Escalonado conforme faixas (10-25%)

---

## 🔍 Verificação dos Dados

Após executar os scripts, você pode verificar os dados com:

```sql
-- Verificar contagens
SELECT 'PERIODOS FOLHA' as tipo, COUNT(*)::text as total 
FROM payroll_period WHERE fiscal_year = 2025
UNION ALL
SELECT 'EXECUCOES FOLHA', COUNT(*)::text 
FROM payroll_run WHERE period_id IN (
    SELECT id FROM payroll_period WHERE fiscal_year = 2025
)
UNION ALL
SELECT 'ITENS FOLHA', COUNT(*)::text 
FROM payroll_item WHERE payroll_run_id IN (
    SELECT id FROM payroll_run WHERE period_id IN (
        SELECT id FROM payroll_period WHERE fiscal_year = 2025
    )
)
UNION ALL
SELECT 'EXECUCOES ORCAMENTARIAS', COUNT(*)::text 
FROM budget_execution WHERE period_id >= 202501
UNION ALL
SELECT 'LOTES PAGAMENTO', COUNT(*)::text 
FROM payment_batch WHERE period_id >= 202501
UNION ALL
SELECT 'ORDENS PAGAMENTO', COUNT(*)::text 
FROM payment_order WHERE payment_batch_id IN (
    SELECT id FROM payment_batch WHERE period_id >= 202501
)
UNION ALL
SELECT 'CONFIRMACOES TESOURO', COUNT(*)::text 
FROM treasury_payment WHERE payment_order_id IN (
    SELECT id FROM payment_order WHERE payment_batch_id IN (
        SELECT id FROM payment_batch WHERE period_id >= 202501
    )
)
ORDER BY tipo;
```

---

## 🎯 Próximos Passos

Com esses dados, você pode:
1. ✅ Testar todas as funcionalidades do sistema
2. ✅ Validar cálculos de folha de pagamento
3. ✅ Testar integrações entre módulos
4. ✅ Validar fluxos de negócio completos
5. ✅ Testar relatórios e dashboards
6. ✅ Validar regras de negócio do Decreto 12-A/94

---

**Última atualização:** 2024-12-22

