-- ═══════════════════════════════════════════════════════════════════════════════
-- SEED 02b: PUESTOS Y EMPLEADOS
-- ═══════════════════════════════════════════════════════════════════════════════
-- Proyecto: ERP Construcción
-- Autor: Claude Opus 4.5
-- Fecha: 2026-02-03
-- Descripción: Puestos de trabajo y empleados para demo HSE y RRHH
-- Dependencias: 02-users-profiles.sql, 03-empresa-tenant.sql
-- Nota: Requerido por HSE para asignaciones de EPP y capacitaciones
-- ═══════════════════════════════════════════════════════════════════════════════

-- UUIDs: 00000000-0000-0000-002b-XXXXXXXXXXXX

BEGIN;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 1. PUESTOS DE TRABAJO
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO hr.puestos (
    id, tenant_id, codigo, nombre, descripcion,
    nivel_riesgo, requiere_capacitacion_especial, activo,
    created_at
) VALUES
-- Administración
('00000000-0000-0000-002b-000000000001', '00000000-0000-0000-0003-000000000001',
 'PTO-DIR', 'Director General', 'Máxima autoridad ejecutiva',
 'bajo', false, true, NOW()),

('00000000-0000-0000-002b-000000000002', '00000000-0000-0000-0003-000000000001',
 'PTO-GER', 'Gerente de Proyectos', 'Responsable de múltiples proyectos',
 'bajo', false, true, NOW()),

('00000000-0000-0000-002b-000000000003', '00000000-0000-0000-0003-000000000001',
 'PTO-ADM', 'Administrativo', 'Personal de oficina y administración',
 'bajo', false, true, NOW()),

-- Obra
('00000000-0000-0000-002b-000000000004', '00000000-0000-0000-0003-000000000001',
 'PTO-RES', 'Residente de Obra', 'Responsable directo de una obra',
 'medio', true, true, NOW()),

('00000000-0000-0000-002b-000000000005', '00000000-0000-0000-0003-000000000001',
 'PTO-SUP', 'Supervisor de Campo', 'Supervisa trabajos de campo',
 'alto', true, true, NOW()),

('00000000-0000-0000-002b-000000000006', '00000000-0000-0000-0003-000000000001',
 'PTO-ALB', 'Albañil', 'Trabajos de albañilería y acabados',
 'alto', true, true, NOW()),

('00000000-0000-0000-002b-000000000007', '00000000-0000-0000-0003-000000000001',
 'PTO-FIE', 'Fierrero', 'Armado y habilitado de acero',
 'alto', true, true, NOW()),

('00000000-0000-0000-002b-000000000008', '00000000-0000-0000-0003-000000000001',
 'PTO-CAR', 'Carpintero', 'Cimbra y trabajos de carpintería',
 'alto', true, true, NOW()),

('00000000-0000-0000-002b-000000000009', '00000000-0000-0000-0003-000000000001',
 'PTO-ELE', 'Electricista', 'Instalaciones eléctricas',
 'alto', true, true, NOW()),

('00000000-0000-0000-002b-000000000010', '00000000-0000-0000-0003-000000000001',
 'PTO-PLO', 'Plomero', 'Instalaciones hidráulicas y sanitarias',
 'medio', true, true, NOW()),

('00000000-0000-0000-002b-000000000011', '00000000-0000-0000-0003-000000000001',
 'PTO-OPE', 'Operador de Maquinaria', 'Opera maquinaria pesada',
 'alto', true, true, NOW()),

('00000000-0000-0000-002b-000000000012', '00000000-0000-0000-0003-000000000001',
 'PTO-AYU', 'Ayudante General', 'Apoyo en diversas actividades',
 'medio', true, true, NOW()),

-- Especializados
('00000000-0000-0000-002b-000000000013', '00000000-0000-0000-0003-000000000001',
 'PTO-HSE', 'Coordinador HSE', 'Seguridad, salud y medio ambiente',
 'medio', true, true, NOW()),

('00000000-0000-0000-002b-000000000014', '00000000-0000-0000-0003-000000000001',
 'PTO-CAL', 'Inspector de Calidad', 'Control de calidad en obra',
 'bajo', false, true, NOW()),

('00000000-0000-0000-002b-000000000015', '00000000-0000-0000-0003-000000000001',
 'PTO-ALM', 'Almacenista', 'Control de almacén e inventarios',
 'bajo', false, true, NOW())
ON CONFLICT (id) DO NOTHING;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 2. EMPLEADOS DEMO
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO hr.employees (
    id, tenant_id, codigo, nombre, apellido_paterno, apellido_materno,
    curp, rfc, nss, fecha_nacimiento, genero,
    email, telefono,
    fecha_ingreso, puesto_id, departamento, tipo_contrato, salario_diario,
    estado, created_at, created_by
) VALUES
-- Personal administrativo vinculado a usuarios
('00000000-0000-0000-002b-000000000101', '00000000-0000-0000-0003-000000000001',
 'EMP-001', 'Juan Carlos', 'Director', 'Méndez',
 'DIMJ800515HAGRXN01', 'DIMJ800515ABC', '12345678901', '1980-05-15', 'M',
 'director@demo.com', '+52 449 200 0002',
 '2020-01-15', '00000000-0000-0000-002b-000000000001', 'Dirección', 'indefinido', 5000.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

('00000000-0000-0000-002b-000000000102', '00000000-0000-0000-0003-000000000001',
 'EMP-002', 'María Elena', 'Gerente', 'Torres',
 'GETM850320MAGRRL02', 'GETM850320ABC', '12345678902', '1985-03-20', 'F',
 'gerente1@demo.com', '+52 449 200 0003',
 '2021-03-01', '00000000-0000-0000-002b-000000000002', 'Construcción', 'indefinido', 3500.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

('00000000-0000-0000-002b-000000000103', '00000000-0000-0000-0003-000000000001',
 'EMP-003', 'Carlos Alberto', 'Residente', 'López',
 'RELC880810HAGSPS03', 'RELC880810ABC', '12345678903', '1988-08-10', 'M',
 'residente1@demo.com', '+52 449 200 0004',
 '2022-06-15', '00000000-0000-0000-002b-000000000004', 'Construcción', 'indefinido', 2500.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

('00000000-0000-0000-002b-000000000104', '00000000-0000-0000-0003-000000000001',
 'EMP-004', 'Ana María', 'Supervisora', 'García',
 'SAGA900125MASPRN04', 'SAGA900125ABC', '12345678904', '1990-01-25', 'F',
 'supervisor1@demo.com', '+52 449 200 0005',
 '2022-08-01', '00000000-0000-0000-002b-000000000005', 'Construcción', 'indefinido', 2000.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

('00000000-0000-0000-002b-000000000105', '00000000-0000-0000-0003-000000000001',
 'EMP-005', 'Elena Patricia', 'Seguridad', 'Sánchez',
 'SASE870605MASGLN05', 'SASE870605ABC', '12345678905', '1987-06-05', 'F',
 'hse1@demo.com', '+52 449 200 0009',
 '2023-01-10', '00000000-0000-0000-002b-000000000013', 'HSE', 'indefinido', 2200.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

('00000000-0000-0000-002b-000000000106', '00000000-0000-0000-0003-000000000001',
 'EMP-006', 'Diego Armando', 'Calidad', 'Rodríguez',
 'CARD850715HASLDS06', 'CARD850715ABC', '12345678906', '1985-07-15', 'M',
 'calidad1@demo.com', '+52 449 200 0010',
 '2023-02-01', '00000000-0000-0000-002b-000000000014', 'Calidad', 'indefinido', 2000.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

-- Personal de obra (sin usuario del sistema)
('00000000-0000-0000-002b-000000000107', '00000000-0000-0000-0003-000000000001',
 'EMP-007', 'Roberto', 'Martínez', 'Hernández',
 'MAHR750420HASRRB07', 'MAHR750420ABC', '12345678907', '1975-04-20', 'M',
 NULL, '+52 449 300 0001',
 '2023-03-15', '00000000-0000-0000-002b-000000000006', 'Construcción', 'obra_determinada', 450.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

('00000000-0000-0000-002b-000000000108', '00000000-0000-0000-0003-000000000001',
 'EMP-008', 'José Luis', 'Pérez', 'Gómez',
 'PEGJ800830HASPRX08', 'PEGJ800830ABC', '12345678908', '1980-08-30', 'M',
 NULL, '+52 449 300 0002',
 '2023-04-01', '00000000-0000-0000-002b-000000000007', 'Construcción', 'obra_determinada', 500.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

('00000000-0000-0000-002b-000000000109', '00000000-0000-0000-0003-000000000001',
 'EMP-009', 'Francisco', 'López', 'Ruiz',
 'LORF780315HASPPR09', 'LORF780315ABC', '12345678909', '1978-03-15', 'M',
 NULL, '+52 449 300 0003',
 '2023-04-15', '00000000-0000-0000-002b-000000000008', 'Construcción', 'obra_determinada', 480.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

('00000000-0000-0000-002b-000000000110', '00000000-0000-0000-0003-000000000001',
 'EMP-010', 'Miguel Ángel', 'Jiménez', 'Morales',
 'JIMM850912HASMGR10', 'JIMM850912ABC', '12345678910', '1985-09-12', 'M',
 NULL, '+52 449 300 0004',
 '2023-05-01', '00000000-0000-0000-002b-000000000009', 'Construcción', 'indefinido', 550.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

('00000000-0000-0000-002b-000000000111', '00000000-0000-0000-0003-000000000001',
 'EMP-011', 'Ricardo', 'Sánchez', 'Flores',
 'SAFR820607HASSNC11', 'SAFR820607ABC', '12345678911', '1982-06-07', 'M',
 NULL, '+52 449 300 0005',
 '2023-05-15', '00000000-0000-0000-002b-000000000010', 'Construcción', 'indefinido', 520.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

('00000000-0000-0000-002b-000000000112', '00000000-0000-0000-0003-000000000001',
 'EMP-012', 'Jesús Manuel', 'Herrera', 'Castro',
 'HECJ901225HASRRS12', 'HECJ901225ABC', '12345678912', '1990-12-25', 'M',
 NULL, '+52 449 300 0006',
 '2023-06-01', '00000000-0000-0000-002b-000000000011', 'Construcción', 'indefinido', 700.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

('00000000-0000-0000-002b-000000000113', '00000000-0000-0000-0003-000000000001',
 'EMP-013', 'Pedro', 'Ramírez', 'Díaz',
 'RADP950503HASPRD13', 'RADP950503ABC', '12345678913', '1995-05-03', 'M',
 NULL, '+52 449 300 0007',
 '2024-01-15', '00000000-0000-0000-002b-000000000012', 'Construcción', 'obra_determinada', 350.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

('00000000-0000-0000-002b-000000000114', '00000000-0000-0000-0003-000000000001',
 'EMP-014', 'Juan Pablo', 'Vargas', 'Mendoza',
 'VAMJ970817HASRGN14', 'VAMJ970817ABC', '12345678914', '1997-08-17', 'M',
 NULL, '+52 449 300 0008',
 '2024-02-01', '00000000-0000-0000-002b-000000000012', 'Construcción', 'obra_determinada', 350.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101'),

('00000000-0000-0000-002b-000000000115', '00000000-0000-0000-0003-000000000001',
 'EMP-015', 'Marco Antonio', 'Ortiz', 'Luna',
 'OILM880422HASRTN15', 'OILM880422ABC', '12345678915', '1988-04-22', 'M',
 NULL, '+52 449 300 0009',
 '2024-03-01', '00000000-0000-0000-002b-000000000006', 'Construcción', 'obra_determinada', 450.00,
 'activo', NOW(), '00000000-0000-0000-0002-000000000101')
ON CONFLICT (id) DO NOTHING;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 3. ASIGNACIÓN DE EMPLEADOS A FRACCIONAMIENTOS
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO hr.employee_fraccionamientos (
    id, tenant_id, employee_id, fraccionamiento_id,
    fecha_inicio, fecha_fin, rol, activo,
    created_at
) VALUES
-- Las Palmas
('00000000-0000-0000-002b-000000000201', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-002b-000000000103', '00000000-0000-0000-0004-000000000101',
 '2024-03-01', NULL, 'Residente', true, NOW()),

('00000000-0000-0000-002b-000000000202', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-002b-000000000104', '00000000-0000-0000-0004-000000000101',
 '2024-03-01', NULL, 'Supervisor', true, NOW()),

('00000000-0000-0000-002b-000000000203', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-002b-000000000105', '00000000-0000-0000-0004-000000000101',
 '2024-03-01', NULL, 'HSE', true, NOW()),

('00000000-0000-0000-002b-000000000204', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-002b-000000000107', '00000000-0000-0000-0004-000000000101',
 '2024-03-15', NULL, 'Albañil', true, NOW()),

('00000000-0000-0000-002b-000000000205', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-002b-000000000108', '00000000-0000-0000-0004-000000000101',
 '2024-04-01', NULL, 'Fierrero', true, NOW()),

('00000000-0000-0000-002b-000000000206', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-002b-000000000112', '00000000-0000-0000-0004-000000000101',
 '2024-03-01', NULL, 'Operador', true, NOW()),

-- Torre Diamante
('00000000-0000-0000-002b-000000000207', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-002b-000000000105', '00000000-0000-0000-0004-000000000102',
 '2024-06-01', NULL, 'HSE', true, NOW()),

('00000000-0000-0000-002b-000000000208', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-002b-000000000110', '00000000-0000-0000-0004-000000000102',
 '2024-06-01', NULL, 'Electricista', true, NOW())
ON CONFLICT (id) DO NOTHING;

-- ─────────────────────────────────────────────────────────────────────────────────
-- VERIFICACIÓN
-- ─────────────────────────────────────────────────────────────────────────────────

DO $$
DECLARE
    v_puestos INTEGER;
    v_empleados INTEGER;
    v_asignaciones INTEGER;
BEGIN
    SELECT COUNT(*) INTO v_puestos FROM hr.puestos;
    SELECT COUNT(*) INTO v_empleados FROM hr.employees;
    SELECT COUNT(*) INTO v_asignaciones FROM hr.employee_fraccionamientos;

    RAISE NOTICE '══════════════════════════════════════════════════════════════';
    RAISE NOTICE 'SEED 02b - HR EMPLOYEES - COMPLETADO';
    RAISE NOTICE '══════════════════════════════════════════════════════════════';
    RAISE NOTICE 'Puestos: %', v_puestos;
    RAISE NOTICE 'Empleados: %', v_empleados;
    RAISE NOTICE 'Asignaciones a obra: %', v_asignaciones;
    RAISE NOTICE '══════════════════════════════════════════════════════════════';
END $$;

COMMIT;

-- ═══════════════════════════════════════════════════════════════════════════════
-- FIN SEED 02b
-- ═══════════════════════════════════════════════════════════════════════════════
