-- ═══════════════════════════════════════════════════════════════════════════════
-- SEED 07: AVANCES DE OBRA Y CONTROL DE CALIDAD
-- ═══════════════════════════════════════════════════════════════════════════════
-- Proyecto: ERP Construcción
-- Autor: Claude Opus 4.5
-- Fecha: 2026-02-03
-- Descripción: Avances, fotos, bitácora, checklists, inspecciones, tickets
-- Dependencias: 04-proyectos-obras.sql, 05-presupuestos.sql, 02-users-profiles.sql
-- ═══════════════════════════════════════════════════════════════════════════════

-- UUIDs: 00000000-0000-0000-0007-XXXXXXXXXXXX

BEGIN;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 1. AVANCES DE OBRA
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO construction.avances_obra (
    id, tenant_id, concepto_id, lote_id,
    capture_date, quantity_executed, percentage_executed,
    status, notes,
    captured_by, reviewed_by, reviewed_at, approved_by, approved_at,
    created_at, created_by
) VALUES
-- Avances Lote A-01 (entregado)
('00000000-0000-0000-0007-000000000001', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0005-000000000101', '00000000-0000-0000-0004-000000000601',
 '2024-03-15', 120.00, 100.00, 'approved', 'Limpieza completada',
 '00000000-0000-0000-0002-000000000104', '00000000-0000-0000-0002-000000000105',
 '2024-03-16', '00000000-0000-0000-0002-000000000103', '2024-03-17',
 NOW(), '00000000-0000-0000-0002-000000000104'),

('00000000-0000-0000-0007-000000000002', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0005-000000000204', '00000000-0000-0000-0004-000000000601',
 '2024-03-25', 8.50, 100.00, 'approved', 'Zapatas completadas',
 '00000000-0000-0000-0002-000000000104', '00000000-0000-0000-0002-000000000105',
 '2024-03-26', '00000000-0000-0000-0002-000000000103', '2024-03-27',
 NOW(), '00000000-0000-0000-0002-000000000104'),

('00000000-0000-0000-0007-000000000003', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0005-000000000401', '00000000-0000-0000-0004-000000000601',
 '2024-04-10', 185.00, 100.00, 'approved', 'Muros planta baja terminados',
 '00000000-0000-0000-0002-000000000104', '00000000-0000-0000-0002-000000000105',
 '2024-04-11', '00000000-0000-0000-0002-000000000103', '2024-04-12',
 NOW(), '00000000-0000-0000-0002-000000000104'),

-- Avances Lote A-03 (en construcción)
('00000000-0000-0000-0007-000000000004', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0005-000000000204', '00000000-0000-0000-0004-000000000603',
 '2024-04-20', 6.00, 70.59, 'approved', 'Zapatas en proceso',
 '00000000-0000-0000-0002-000000000104', '00000000-0000-0000-0002-000000000105',
 '2024-04-21', '00000000-0000-0000-0002-000000000103', '2024-04-22',
 NOW(), '00000000-0000-0000-0002-000000000104'),

('00000000-0000-0000-0007-000000000005', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0005-000000000401', '00000000-0000-0000-0004-000000000603',
 '2024-05-05', 120.00, 64.86, 'reviewed', 'Muros planta baja al 65%',
 '00000000-0000-0000-0002-000000000104', '00000000-0000-0000-0002-000000000105',
 '2024-05-06', NULL, NULL,
 NOW(), '00000000-0000-0000-0002-000000000104'),

('00000000-0000-0000-0007-000000000006', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0005-000000000303', '00000000-0000-0000-0004-000000000603',
 '2024-05-10', 45.00, 47.37, 'pending', 'Losa en proceso de colado',
 '00000000-0000-0000-0002-000000000104', NULL, NULL, NULL, NULL,
 NOW(), '00000000-0000-0000-0002-000000000104')
ON CONFLICT (id) DO NOTHING;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 2. BITÁCORA DE OBRA
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO construction.bitacora_obra (
    id, tenant_id, fraccionamiento_id,
    entry_date, entry_number, weather, temperature_max, temperature_min,
    workers_count, description, observations, incidents,
    registered_by,
    created_at
) VALUES
('00000000-0000-0000-0007-000000000101', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0004-000000000101',
 '2024-05-01', 1, 'Soleado', 28.5, 15.2, 45,
 'Inicio de trabajos de cimentación en manzana B. Se realizó trazo y nivelación.',
 'Personal completo. Maquinaria operando al 100%.',
 NULL,
 '00000000-0000-0000-0002-000000000104', NOW()),

('00000000-0000-0000-0007-000000000102', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0004-000000000101',
 '2024-05-02', 2, 'Parcialmente nublado', 26.0, 14.8, 48,
 'Continuación de excavación para zapatas. Armado de acero en lotes B-01 y B-02.',
 'Se recibió material de acero y cemento.',
 NULL,
 '00000000-0000-0000-0002-000000000104', NOW()),

('00000000-0000-0000-0007-000000000103', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0004-000000000101',
 '2024-05-03', 3, 'Lluvioso', 22.0, 13.5, 32,
 'Trabajos suspendidos parcialmente por lluvia. Solo actividades bajo techo.',
 'Lluvia desde las 10:00 hrs. Se protegieron materiales.',
 'Suspensión parcial por clima',
 '00000000-0000-0000-0002-000000000104', NOW()),

('00000000-0000-0000-0007-000000000104', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0004-000000000101',
 '2024-05-04', 4, 'Soleado', 27.0, 15.0, 52,
 'Colado de zapatas lotes B-01 y B-02. Inicio de muros planta baja lote A-05.',
 'Concreto premezclado de calidad verificada.',
 NULL,
 '00000000-0000-0000-0002-000000000104', NOW()),

('00000000-0000-0000-0007-000000000105', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0004-000000000101',
 '2024-05-05', 5, 'Soleado', 29.0, 16.5, 55,
 'Desencofrado de zapatas. Relleno compactado. Instalación eléctrica en lote A-01.',
 'Visita de supervisión de INFONAVIT.',
 NULL,
 '00000000-0000-0000-0002-000000000104', NOW())
ON CONFLICT (id) DO NOTHING;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 3. CHECKLISTS DE CALIDAD
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO construction.checklists (
    id, tenant_id, prototipo_id, code, name, is_active,
    created_at, created_by
) VALUES
('00000000-0000-0000-0007-000000000201', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0004-000000000001',
 'CHK-CIM-90', 'Checklist Cimentación Casa 90', true,
 NOW(), '00000000-0000-0000-0002-000000000110'),

('00000000-0000-0000-0007-000000000202', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0004-000000000001',
 'CHK-EST-90', 'Checklist Estructura Casa 90', true,
 NOW(), '00000000-0000-0000-0002-000000000110'),

('00000000-0000-0000-0007-000000000203', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0004-000000000001',
 'CHK-ACAB-90', 'Checklist Acabados Casa 90', true,
 NOW(), '00000000-0000-0000-0002-000000000110'),

('00000000-0000-0000-0007-000000000204', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0004-000000000001',
 'CHK-ENTREGA', 'Checklist Entrega Final', true,
 NOW(), '00000000-0000-0000-0002-000000000110')
ON CONFLICT (id) DO NOTHING;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 4. ITEMS DE CHECKLIST
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO construction.checklist_items (
    id, tenant_id, checklist_id, sequence, name, is_required,
    created_at
) VALUES
-- Items Checklist Cimentación
('00000000-0000-0000-0007-000000000301', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000201', 1, 'Profundidad de excavación correcta', true, NOW()),
('00000000-0000-0000-0007-000000000302', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000201', 2, 'Plantilla de concreto pobre', true, NOW()),
('00000000-0000-0000-0007-000000000303', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000201', 3, 'Armado de acero según planos', true, NOW()),
('00000000-0000-0000-0007-000000000304', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000201', 4, 'Recubrimientos de acero correctos', true, NOW()),
('00000000-0000-0000-0007-000000000305', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000201', 5, 'Resistencia del concreto verificada', true, NOW()),

-- Items Checklist Entrega
('00000000-0000-0000-0007-000000000310', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000204', 1, 'Limpieza general de la vivienda', true, NOW()),
('00000000-0000-0000-0007-000000000311', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000204', 2, 'Funcionamiento de instalaciones eléctricas', true, NOW()),
('00000000-0000-0000-0007-000000000312', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000204', 3, 'Funcionamiento de instalaciones hidráulicas', true, NOW()),
('00000000-0000-0000-0007-000000000313', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000204', 4, 'Estado de acabados', true, NOW()),
('00000000-0000-0000-0007-000000000314', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000204', 5, 'Funcionamiento de puertas y ventanas', true, NOW()),
('00000000-0000-0000-0007-000000000315', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000204', 6, 'Documentación entregada', true, NOW())
ON CONFLICT (id) DO NOTHING;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 5. INSPECCIONES DE CALIDAD
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO construction.inspecciones (
    id, tenant_id, checklist_id, lote_id,
    inspection_date, status,
    inspector_id, approved_by, approved_at,
    created_at, created_by
) VALUES
('00000000-0000-0000-0007-000000000401', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000201', '00000000-0000-0000-0004-000000000601',
 '2024-03-28', 'approved',
 '00000000-0000-0000-0002-000000000110',
 '00000000-0000-0000-0002-000000000103', '2024-03-29',
 NOW(), '00000000-0000-0000-0002-000000000110'),

('00000000-0000-0000-0007-000000000402', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000204', '00000000-0000-0000-0004-000000000601',
 '2024-05-15', 'approved',
 '00000000-0000-0000-0002-000000000110',
 '00000000-0000-0000-0002-000000000103', '2024-05-16',
 NOW(), '00000000-0000-0000-0002-000000000110'),

('00000000-0000-0000-0007-000000000403', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0007-000000000201', '00000000-0000-0000-0004-000000000603',
 '2024-04-25', 'in_review',
 '00000000-0000-0000-0002-000000000110', NULL, NULL,
 NOW(), '00000000-0000-0000-0002-000000000110')
ON CONFLICT (id) DO NOTHING;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 6. TICKETS POSTVENTA
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO construction.tickets_postventa (
    id, tenant_id, lote_id,
    ticket_number, reported_date, category, description, priority, status,
    assigned_to, resolution, resolved_at,
    created_at, created_by
) VALUES
('00000000-0000-0000-0007-000000000501', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0004-000000000601',
 'TKT-2024-001', '2024-06-01', 'Plomería',
 'Fuga de agua en llave de lavabo del baño principal',
 'medium', 'closed',
 '00000000-0000-0000-0002-000000000105',
 'Se reemplazó empaque de llave. Fuga corregida.',
 '2024-06-03',
 NOW(), '00000000-0000-0000-0002-000000000112'),

('00000000-0000-0000-0007-000000000502', '00000000-0000-0000-0003-000000000001',
 '00000000-0000-0000-0004-000000000602',
 'TKT-2024-002', '2024-06-10', 'Electricidad',
 'Apagador de recámara 2 no funciona correctamente',
 'low', 'open',
 NULL, NULL, NULL,
 NOW(), '00000000-0000-0000-0002-000000000112')
ON CONFLICT (id) DO NOTHING;

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

DO $$
DECLARE
    v_avances INTEGER;
    v_bitacora INTEGER;
    v_checklists INTEGER;
    v_inspecciones INTEGER;
    v_tickets INTEGER;
BEGIN
    SELECT COUNT(*) INTO v_avances FROM construction.avances_obra;
    SELECT COUNT(*) INTO v_bitacora FROM construction.bitacora_obra;
    SELECT COUNT(*) INTO v_checklists FROM construction.checklists;
    SELECT COUNT(*) INTO v_inspecciones FROM construction.inspecciones;
    SELECT COUNT(*) INTO v_tickets FROM construction.tickets_postventa;

    RAISE NOTICE '══════════════════════════════════════════════════════════════';
    RAISE NOTICE 'SEED 07 - AVANCES Y CALIDAD - COMPLETADO';
    RAISE NOTICE '══════════════════════════════════════════════════════════════';
    RAISE NOTICE 'Avances de obra: %', v_avances;
    RAISE NOTICE 'Entradas de bitácora: %', v_bitacora;
    RAISE NOTICE 'Checklists: %', v_checklists;
    RAISE NOTICE 'Inspecciones: %', v_inspecciones;
    RAISE NOTICE 'Tickets postventa: %', v_tickets;
    RAISE NOTICE '══════════════════════════════════════════════════════════════';
END $$;

COMMIT;

-- ═══════════════════════════════════════════════════════════════════════════════
-- FIN SEED 07
-- ═══════════════════════════════════════════════════════════════════════════════
