-- ═══════════════════════════════════════════════════════════════════════════════
-- SEED 10: ACTIVOS Y DOCUMENTOS
-- ═══════════════════════════════════════════════════════════════════════════════
-- Proyecto: ERP Construcción
-- Autor: Claude Opus 4.5
-- Fecha: 2026-02-03
-- Descripción: Equipos, maquinaria, mantenimientos, categorías y documentos
-- Dependencias: 03-empresa-tenant.sql, 04-proyectos-obras.sql
-- ═══════════════════════════════════════════════════════════════════════════════

-- UUIDs: 00000000-0000-0000-000a-XXXXXXXXXXXX

BEGIN;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 1. CATEGORÍAS DE ACTIVOS
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO assets.asset_categories (
    id, tenant_id, code, name, description, parent_id, is_active,
    created_at
) VALUES
('00000000-0000-0000-000a-000000000001', '00000000-0000-0000-0003-000000000001',
 'MAQ', 'Maquinaria Pesada', 'Equipos de excavación y movimiento de tierra', NULL, true, NOW()),

('00000000-0000-0000-000a-000000000002', '00000000-0000-0000-0003-000000000001',
 'VEH', 'Vehículos', 'Unidades de transporte', NULL, true, NOW()),

('00000000-0000-0000-000a-000000000003', '00000000-0000-0000-0003-000000000001',
 'HER', 'Herramienta', 'Herramienta menor y equipo portátil', NULL, true, NOW()),

('00000000-0000-0000-000a-000000000004', '00000000-0000-0000-0003-000000000001',
 'EQU', 'Equipo de Construcción', 'Equipo especializado de construcción', NULL, true, NOW()),

('00000000-0000-0000-000a-000000000005', '00000000-0000-0000-0003-000000000001',
 'OFI', 'Equipo de Oficina', 'Mobiliario y equipo de oficina', NULL, true, NOW())
ON CONFLICT (id) DO NOTHING;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 2. ACTIVOS / EQUIPOS
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO assets.assets (
    id, tenant_id, asset_code, name, category_id,
    asset_type, status, ownership_type,
    brand, model, serial_number, year_manufactured,
    purchase_date, purchase_price,
    current_hours, current_kilometers,
    fuel_capacity, fuel_consumption_rate,
    useful_life_years, depreciation_method,
    current_project_id,
    is_active, created_at, created_by
) VALUES
-- Maquinaria pesada
('00000000-0000-0000-000a-000000000101', '00000000-0000-0000-0003-000000000001',
 'MAQ-001', 'Retroexcavadora CAT 420F2', '00000000-0000-0000-000a-000000000001',
 'heavy_machinery', 'assigned', 'owned',
 'Caterpillar', '420F2', 'CAT420F2-2022-12345', 2022,
 '2022-06-15', 1850000.00,
 2500, NULL, 200, 12.5, 10, 'straight_line',
 '00000000-0000-0000-0004-000000000101',
 true, NOW(), '00000000-0000-0000-0002-000000000106'),

('00000000-0000-0000-000a-000000000102', '00000000-0000-0000-0003-000000000001',
 'MAQ-002', 'Excavadora CAT 320', '00000000-0000-0000-000a-000000000001',
 'heavy_machinery', 'assigned', 'owned',
 'Caterpillar', '320', 'CAT320-2021-67890', 2021,
 '2021-03-20', 3200000.00,
 4200, NULL, 400, 25.0, 10, 'straight_line',
 '00000000-0000-0000-0004-000000000101',
 true, NOW(), '00000000-0000-0000-0002-000000000106'),

('00000000-0000-0000-000a-000000000103', '00000000-0000-0000-0003-000000000001',
 'MAQ-003', 'Cargador Frontal 966M', '00000000-0000-0000-000a-000000000001',
 'heavy_machinery', 'available', 'leased',
 'Caterpillar', '966M', 'CAT966M-2023-11111', 2023,
 '2024-01-01', NULL,
 800, NULL, 350, 22.0, NULL, NULL,
 NULL,
 true, NOW(), '00000000-0000-0000-0002-000000000106'),

-- Vehículos
('00000000-0000-0000-000a-000000000104', '00000000-0000-0000-0003-000000000001',
 'VEH-001', 'Camioneta Nissan NP300', '00000000-0000-0000-000a-000000000002',
 'vehicle', 'assigned', 'owned',
 'Nissan', 'NP300 Frontier', 'NISSNP300-2023-XXXXX', 2023,
 '2023-02-10', 450000.00,
 NULL, 35000, 80, 10.5, 5, 'straight_line',
 '00000000-0000-0000-0004-000000000101',
 true, NOW(), '00000000-0000-0000-0002-000000000106'),

('00000000-0000-0000-000a-000000000105', '00000000-0000-0000-0003-000000000001',
 'VEH-002', 'Camión Volteo Kenworth', '00000000-0000-0000-000a-000000000002',
 'vehicle', 'assigned', 'owned',
 'Kenworth', 'T800', 'KENT800-2020-YYYYY', 2020,
 '2020-08-15', 1200000.00,
 NULL, 125000, 300, 3.5, 10, 'straight_line',
 '00000000-0000-0000-0004-000000000101',
 true, NOW(), '00000000-0000-0000-0002-000000000106'),

-- Equipo de construcción
('00000000-0000-0000-000a-000000000106', '00000000-0000-0000-0003-000000000001',
 'EQU-001', 'Revolvedora de concreto', '00000000-0000-0000-000a-000000000004',
 'light_equipment', 'assigned', 'owned',
 'Cipsa', 'Ultra 10', 'CIPSA-U10-2022-001', 2022,
 '2022-04-01', 85000.00,
 1200, NULL, 15, 4.0, 8, 'straight_line',
 '00000000-0000-0000-0004-000000000101',
 true, NOW(), '00000000-0000-0000-0002-000000000106'),

('00000000-0000-0000-000a-000000000107', '00000000-0000-0000-0003-000000000001',
 'EQU-002', 'Vibrador de concreto', '00000000-0000-0000-000a-000000000004',
 'light_equipment', 'assigned', 'owned',
 'Wacker', 'M2500', 'WACKER-M2500-2023-002', 2023,
 '2023-05-15', 25000.00,
 600, NULL, NULL, 2.0, 5, 'straight_line',
 '00000000-0000-0000-0004-000000000101',
 true, NOW(), '00000000-0000-0000-0002-000000000106'),

('00000000-0000-0000-000a-000000000108', '00000000-0000-0000-0003-000000000001',
 'EQU-003', 'Placa vibradora', '00000000-0000-0000-000a-000000000004',
 'light_equipment', 'available', 'owned',
 'Wacker', 'WP1550', 'WACKER-WP1550-2022-003', 2022,
 '2022-07-20', 45000.00,
 800, NULL, 8, 3.5, 8, 'straight_line',
 NULL,
 true, NOW(), '00000000-0000-0000-0002-000000000106'),

('00000000-0000-0000-000a-000000000109', '00000000-0000-0000-0003-000000000001',
 'EQU-004', 'Cortadora de concreto', '00000000-0000-0000-000a-000000000004',
 'light_equipment', 'in_maintenance', 'owned',
 'Stihl', 'TS 800', 'STIHL-TS800-2021-004', 2021,
 '2021-11-10', 35000.00,
 1500, NULL, 1.5, 2.5, 5, 'straight_line',
 NULL,
 true, NOW(), '00000000-0000-0000-0002-000000000106'),

('00000000-0000-0000-000a-000000000110', '00000000-0000-0000-0003-000000000001',
 'EQU-005', 'Andamio tubular (lote 20 pzas)', '00000000-0000-0000-000a-000000000004',
 'tool', 'assigned', 'owned',
 'Scaffolding', 'Standard', 'SCAF-STD-2022-LOT01', 2022,
 '2022-03-01', 120000.00,
 NULL, NULL, NULL, NULL, 10, 'straight_line',
 '00000000-0000-0000-0004-000000000101',
 true, NOW(), '00000000-0000-0000-0002-000000000106')
ON CONFLICT (id) DO NOTHING;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 3. PLANES DE MANTENIMIENTO
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO assets.maintenance_plans (
    id, tenant_id, plan_code, name,
    asset_id, maintenance_type, frequency,
    estimated_duration_hours, estimated_cost,
    tasks_description, is_active,
    created_at, created_by
) VALUES
('00000000-0000-0000-000a-000000000201', '00000000-0000-0000-0003-000000000001',
 'PM-MAQ-001', 'Mantenimiento preventivo retroexcavadora',
 '00000000-0000-0000-000a-000000000101', 'preventive', 'monthly',
 4, 15000.00,
 'Cambio de aceite, filtros, revisión de niveles, inspección de mangueras',
 true, NOW(), '00000000-0000-0000-0002-000000000106'),

('00000000-0000-0000-000a-000000000202', '00000000-0000-0000-0003-000000000001',
 'PM-MAQ-002', 'Mantenimiento 500 horas excavadora',
 '00000000-0000-0000-000a-000000000102', 'preventive', 'by_hours',
 8, 35000.00,
 'Servicio mayor: cambio de aceites, filtros, revisión de sistema hidráulico',
 true, NOW(), '00000000-0000-0000-0002-000000000106'),

('00000000-0000-0000-000a-000000000203', '00000000-0000-0000-0003-000000000001',
 'PM-VEH-001', 'Servicio camioneta 10,000 km',
 '00000000-0000-0000-000a-000000000104', 'preventive', 'by_kilometers',
 2, 5000.00,
 'Cambio de aceite, filtros, revisión de frenos y suspensión',
 true, NOW(), '00000000-0000-0000-0002-000000000106')
ON CONFLICT (id) DO NOTHING;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 4. CATEGORÍAS DE DOCUMENTOS
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO documents.document_categories (
    id, tenant_id, code, name, description, parent_id, level, is_active,
    created_at
) VALUES
('00000000-0000-0000-000a-000000000301', '00000000-0000-0000-0003-000000000001',
 'PLANOS', 'Planos', 'Planos arquitectónicos y de ingeniería', NULL, 1, true, NOW()),

('00000000-0000-0000-000a-000000000302', '00000000-0000-0000-0003-000000000001',
 'PERMISOS', 'Permisos y Licencias', 'Permisos de construcción y licencias', NULL, 1, true, NOW()),

('00000000-0000-0000-000a-000000000303', '00000000-0000-0000-0003-000000000001',
 'CONTRATOS', 'Contratos', 'Contratos y addendas', NULL, 1, true, NOW()),

('00000000-0000-0000-000a-000000000304', '00000000-0000-0000-0003-000000000001',
 'FACTURAS', 'Facturas y Comprobantes', 'CFDIs y comprobantes fiscales', NULL, 1, true, NOW()),

('00000000-0000-0000-000a-000000000305', '00000000-0000-0000-0003-000000000001',
 'ESTIMACIONES', 'Estimaciones', 'Estimaciones y generadores', NULL, 1, true, NOW()),

('00000000-0000-0000-000a-000000000306', '00000000-0000-0000-0003-000000000001',
 'SEGURIDAD', 'Documentos HSE', 'Documentación de seguridad e higiene', NULL, 1, true, NOW()),

('00000000-0000-0000-000a-000000000307', '00000000-0000-0000-0003-000000000001',
 'CALIDAD', 'Control de Calidad', 'Reportes e inspecciones de calidad', NULL, 1, true, NOW()),

('00000000-0000-0000-000a-000000000308', '00000000-0000-0000-0003-000000000001',
 'GARANTIAS', 'Garantías', 'Garantías de equipos y materiales', NULL, 1, true, NOW()),

-- Subcategorías de Planos
('00000000-0000-0000-000a-000000000311', '00000000-0000-0000-0003-000000000001',
 'PLANOS-ARQ', 'Planos Arquitectónicos', 'Planos de arquitectura', '00000000-0000-0000-000a-000000000301', 2, true, NOW()),

('00000000-0000-0000-000a-000000000312', '00000000-0000-0000-0003-000000000001',
 'PLANOS-EST', 'Planos Estructurales', 'Planos de estructura', '00000000-0000-0000-000a-000000000301', 2, true, NOW()),

('00000000-0000-0000-000a-000000000313', '00000000-0000-0000-0003-000000000001',
 'PLANOS-INS', 'Planos de Instalaciones', 'Planos de instalaciones', '00000000-0000-0000-000a-000000000301', 2, true, NOW())
ON CONFLICT (id) DO NOTHING;

-- ─────────────────────────────────────────────────────────────────────────────────
-- 5. DOCUMENTOS
-- ─────────────────────────────────────────────────────────────────────────────────

INSERT INTO documents.documents (
    id, tenant_id, document_code, title, category_id,
    document_type, status, access_level,
    author, document_date,
    project_id, description,
    requires_approval, is_locked,
    created_at, created_by
) VALUES
('00000000-0000-0000-000a-000000000401', '00000000-0000-0000-0003-000000000001',
 'DOC-PALMAS-001', 'Plano Arquitectónico General - Las Palmas E1', '00000000-0000-0000-000a-000000000311',
 'plan', 'approved', 'internal',
 'Arq. Juan Pérez', '2024-01-15',
 '00000000-0000-0000-0004-000000000101', 'Plano general de distribución Etapa 1',
 true, true,
 NOW(), '00000000-0000-0000-0002-000000000103'),

('00000000-0000-0000-000a-000000000402', '00000000-0000-0000-0003-000000000001',
 'DOC-PALMAS-002', 'Plano Estructural Cimentación - Las Palmas E1', '00000000-0000-0000-000a-000000000312',
 'plan', 'approved', 'internal',
 'Ing. Roberto García', '2024-01-20',
 '00000000-0000-0000-0004-000000000101', 'Plano de cimentación con detalles estructurales',
 true, true,
 NOW(), '00000000-0000-0000-0002-000000000103'),

('00000000-0000-0000-000a-000000000403', '00000000-0000-0000-0003-000000000001',
 'DOC-PALMAS-003', 'Licencia de Construcción Municipal', '00000000-0000-0000-000a-000000000302',
 'permit', 'approved', 'confidential',
 'Municipio de Aguascalientes', '2024-02-01',
 '00000000-0000-0000-0004-000000000101', 'Licencia de construcción vigente',
 false, true,
 NOW(), '00000000-0000-0000-0002-000000000102'),

('00000000-0000-0000-000a-000000000404', '00000000-0000-0000-0003-000000000001',
 'DOC-PALMAS-004', 'Contrato Subcontratista Cimentaciones', '00000000-0000-0000-000a-000000000303',
 'contract', 'approved', 'restricted',
 'Constructora Demo', '2024-02-28',
 '00000000-0000-0000-0004-000000000101', 'Contrato firmado con Cimientos del Norte',
 true, true,
 NOW(), '00000000-0000-0000-0002-000000000102'),

('00000000-0000-0000-000a-000000000405', '00000000-0000-0000-0003-000000000001',
 'DOC-PALMAS-005', 'Reporte de Inspección Calidad - Cimentación Lote A-01', '00000000-0000-0000-000a-000000000307',
 'report', 'approved', 'internal',
 'Diego Calidad Rodríguez', '2024-03-28',
 '00000000-0000-0000-0004-000000000101', 'Reporte de inspección de cimentación aprobado',
 true, false,
 NOW(), '00000000-0000-0000-0002-000000000110')
ON CONFLICT (id) DO NOTHING;

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

DO $$
DECLARE
    v_categorias_activos INTEGER;
    v_activos INTEGER;
    v_planes_mant INTEGER;
    v_categorias_docs INTEGER;
    v_documentos INTEGER;
BEGIN
    SELECT COUNT(*) INTO v_categorias_activos FROM assets.asset_categories;
    SELECT COUNT(*) INTO v_activos FROM assets.assets;
    SELECT COUNT(*) INTO v_planes_mant FROM assets.maintenance_plans;
    SELECT COUNT(*) INTO v_categorias_docs FROM documents.document_categories;
    SELECT COUNT(*) INTO v_documentos FROM documents.documents;

    RAISE NOTICE '══════════════════════════════════════════════════════════════';
    RAISE NOTICE 'SEED 10 - ACTIVOS Y DOCUMENTOS - COMPLETADO';
    RAISE NOTICE '══════════════════════════════════════════════════════════════';
    RAISE NOTICE 'Categorías de activos: %', v_categorias_activos;
    RAISE NOTICE 'Activos/Equipos: %', v_activos;
    RAISE NOTICE 'Planes de mantenimiento: %', v_planes_mant;
    RAISE NOTICE 'Categorías de documentos: %', v_categorias_docs;
    RAISE NOTICE 'Documentos: %', v_documentos;
    RAISE NOTICE '══════════════════════════════════════════════════════════════';
END $$;

COMMIT;

-- ═══════════════════════════════════════════════════════════════════════════════
-- FIN SEED 10
-- ═══════════════════════════════════════════════════════════════════════════════
