-- FASE 03 - SALÁRIOS
-- A estrutura salarial já foi criada na Fase 01.
-- Este script apenas valida a estrutura e mostra consultas de conferência.

SELECT COUNT(*) AS total_historicos
FROM funcionarios_salarios_rh;

SELECT
    f.id,
    f.nome,
    f.salario_atual,
    s.salario AS salario_vigente,
    s.data_inicio,
    s.data_fim,
    s.motivo
FROM funcionarios_rh f
LEFT JOIN funcionarios_salarios_rh s
    ON s.funcionario_id = f.id
   AND s.data_inicio <= CURDATE()
   AND (s.data_fim IS NULL OR s.data_fim >= CURDATE())
ORDER BY f.nome;

-- Verifica possíveis sobreposições de períodos.
SELECT a.funcionario_id, a.id AS registro_a, b.id AS registro_b,
       a.data_inicio AS inicio_a, a.data_fim AS fim_a,
       b.data_inicio AS inicio_b, b.data_fim AS fim_b
FROM funcionarios_salarios_rh a
JOIN funcionarios_salarios_rh b
  ON b.funcionario_id = a.funcionario_id
 AND b.id > a.id
 AND (a.data_fim IS NULL OR b.data_inicio <= a.data_fim)
 AND (b.data_fim IS NULL OR a.data_inicio <= b.data_fim);

-- Confere se salario_atual corresponde ao registro vigente hoje.
SELECT f.id, f.nome, f.salario_atual,
       s.salario AS salario_vigente
FROM funcionarios_rh f
LEFT JOIN funcionarios_salarios_rh s
  ON s.funcionario_id = f.id
 AND s.data_inicio <= CURDATE()
 AND (s.data_fim IS NULL OR s.data_fim >= CURDATE())
WHERE f.status = 'Ativo'
  AND ROUND(COALESCE(f.salario_atual,0),2) <> ROUND(COALESCE(s.salario,0),2);
