-- ═══════════════════════════════════════════════════════════════════════════════ -- SEED 05: PRESUPUESTOS Y CONCEPTOS DE OBRA -- ═══════════════════════════════════════════════════════════════════════════════ -- Proyecto: ERP Construcción -- Autor: Claude Opus 4.5 -- Fecha: 2026-02-03 -- Descripción: Catálogo de conceptos CMIC, presupuestos, partidas, programa de obra -- Dependencias: 03-empresa-tenant.sql, 04-proyectos-obras.sql -- ═══════════════════════════════════════════════════════════════════════════════ -- UUIDs: 00000000-0000-0000-0005-XXXXXXXXXXXX BEGIN; -- ───────────────────────────────────────────────────────────────────────────────── -- 1. CONCEPTOS DE OBRA (Catálogo jerárquico basado en CMIC) -- ───────────────────────────────────────────────────────────────────────────────── INSERT INTO construction.conceptos ( id, tenant_id, code, name, parent_id, level, path, unit_id, unit_price, is_composite, is_active, created_at, created_by ) VALUES -- NIVEL 1: Capítulos principales ('00000000-0000-0000-0005-000000000001', '00000000-0000-0000-0003-000000000001', '01', 'PRELIMINARES', NULL, 1, '01', NULL, 0, true, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000002', '00000000-0000-0000-0003-000000000001', '02', 'CIMENTACIÓN', NULL, 1, '02', NULL, 0, true, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000003', '00000000-0000-0000-0003-000000000001', '03', 'ESTRUCTURA', NULL, 1, '03', NULL, 0, true, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000004', '00000000-0000-0000-0003-000000000001', '04', 'ALBAÑILERÍA', NULL, 1, '04', NULL, 0, true, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000005', '00000000-0000-0000-0003-000000000001', '05', 'INSTALACIÓN HIDRÁULICA', NULL, 1, '05', NULL, 0, true, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000006', '00000000-0000-0000-0003-000000000001', '06', 'INSTALACIÓN SANITARIA', NULL, 1, '06', NULL, 0, true, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000007', '00000000-0000-0000-0003-000000000001', '07', 'INSTALACIÓN ELÉCTRICA', NULL, 1, '07', NULL, 0, true, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000008', '00000000-0000-0000-0003-000000000001', '08', 'ACABADOS', NULL, 1, '08', NULL, 0, true, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000009', '00000000-0000-0000-0003-000000000001', '09', 'CARPINTERÍA', NULL, 1, '09', NULL, 0, true, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000010', '00000000-0000-0000-0003-000000000001', '10', 'HERRERÍA', NULL, 1, '10', NULL, 0, true, true, NOW(), '00000000-0000-0000-0002-000000000103'), -- NIVEL 2: Subcapítulos PRELIMINARES ('00000000-0000-0000-0005-000000000101', '00000000-0000-0000-0003-000000000001', '01.01', 'Limpieza del terreno', '00000000-0000-0000-0005-000000000001', 2, '01.01', '00000000-0000-0000-0001-000000000010', 25.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000102', '00000000-0000-0000-0003-000000000001', '01.02', 'Trazo y nivelación', '00000000-0000-0000-0005-000000000001', 2, '01.02', '00000000-0000-0000-0001-000000000010', 35.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000103', '00000000-0000-0000-0003-000000000001', '01.03', 'Demolición de estructuras existentes', '00000000-0000-0000-0005-000000000001', 2, '01.03', '00000000-0000-0000-0001-000000000020', 450.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), -- NIVEL 2: Subcapítulos CIMENTACIÓN ('00000000-0000-0000-0005-000000000201', '00000000-0000-0000-0003-000000000001', '02.01', 'Excavación a máquina', '00000000-0000-0000-0005-000000000002', 2, '02.01', '00000000-0000-0000-0001-000000000020', 85.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000202', '00000000-0000-0000-0003-000000000001', '02.02', 'Excavación a mano', '00000000-0000-0000-0005-000000000002', 2, '02.02', '00000000-0000-0000-0001-000000000020', 180.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000203', '00000000-0000-0000-0003-000000000001', '02.03', 'Plantilla de concreto pobre', '00000000-0000-0000-0005-000000000002', 2, '02.03', '00000000-0000-0000-0001-000000000010', 180.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000204', '00000000-0000-0000-0003-000000000001', '02.04', 'Zapata de concreto armado fc=250 kg/cm2', '00000000-0000-0000-0005-000000000002', 2, '02.04', '00000000-0000-0000-0001-000000000020', 3500.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000205', '00000000-0000-0000-0003-000000000001', '02.05', 'Contratrabe de concreto armado', '00000000-0000-0000-0005-000000000002', 2, '02.05', '00000000-0000-0000-0001-000000000002', 1850.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000206', '00000000-0000-0000-0003-000000000001', '02.06', 'Relleno compactado al 95% Proctor', '00000000-0000-0000-0005-000000000002', 2, '02.06', '00000000-0000-0000-0001-000000000020', 120.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), -- NIVEL 2: Subcapítulos ESTRUCTURA ('00000000-0000-0000-0005-000000000301', '00000000-0000-0000-0003-000000000001', '03.01', 'Columna de concreto armado fc=250', '00000000-0000-0000-0005-000000000003', 2, '03.01', '00000000-0000-0000-0001-000000000020', 4200.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000302', '00000000-0000-0000-0003-000000000001', '03.02', 'Trabe de concreto armado fc=250', '00000000-0000-0000-0005-000000000003', 2, '03.02', '00000000-0000-0000-0001-000000000002', 2100.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000303', '00000000-0000-0000-0003-000000000001', '03.03', 'Losa de concreto armado e=12cm', '00000000-0000-0000-0005-000000000003', 2, '03.03', '00000000-0000-0000-0001-000000000010', 850.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000304', '00000000-0000-0000-0003-000000000001', '03.04', 'Escalera de concreto armado', '00000000-0000-0000-0005-000000000003', 2, '03.04', '00000000-0000-0000-0001-000000000040', 18500.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), -- NIVEL 2: Subcapítulos ALBAÑILERÍA ('00000000-0000-0000-0005-000000000401', '00000000-0000-0000-0003-000000000001', '04.01', 'Muro de block hueco 15x20x40', '00000000-0000-0000-0005-000000000004', 2, '04.01', '00000000-0000-0000-0001-000000000010', 420.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000402', '00000000-0000-0000-0003-000000000001', '04.02', 'Muro de tabique rojo recocido', '00000000-0000-0000-0005-000000000004', 2, '04.02', '00000000-0000-0000-0001-000000000010', 380.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000403', '00000000-0000-0000-0003-000000000001', '04.03', 'Castillo de concreto armado', '00000000-0000-0000-0005-000000000004', 2, '04.03', '00000000-0000-0000-0001-000000000002', 650.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000404', '00000000-0000-0000-0003-000000000001', '04.04', 'Dala de cerramiento', '00000000-0000-0000-0005-000000000004', 2, '04.04', '00000000-0000-0000-0001-000000000002', 580.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), -- NIVEL 2: Subcapítulos ACABADOS ('00000000-0000-0000-0005-000000000801', '00000000-0000-0000-0003-000000000001', '08.01', 'Aplanado fino en muros', '00000000-0000-0000-0005-000000000008', 2, '08.01', '00000000-0000-0000-0001-000000000010', 185.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000802', '00000000-0000-0000-0003-000000000001', '08.02', 'Yeso en plafones', '00000000-0000-0000-0005-000000000008', 2, '08.02', '00000000-0000-0000-0001-000000000010', 220.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000803', '00000000-0000-0000-0003-000000000001', '08.03', 'Pintura vinílica 2 manos', '00000000-0000-0000-0005-000000000008', 2, '08.03', '00000000-0000-0000-0001-000000000010', 95.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000804', '00000000-0000-0000-0003-000000000001', '08.04', 'Piso cerámico 45x45', '00000000-0000-0000-0005-000000000008', 2, '08.04', '00000000-0000-0000-0001-000000000010', 450.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000000805', '00000000-0000-0000-0003-000000000001', '08.05', 'Azulejo en baños', '00000000-0000-0000-0005-000000000008', 2, '08.05', '00000000-0000-0000-0001-000000000010', 520.00, false, true, NOW(), '00000000-0000-0000-0002-000000000103') ON CONFLICT (id) DO NOTHING; -- ───────────────────────────────────────────────────────────────────────────────── -- 2. PRESUPUESTOS -- ───────────────────────────────────────────────────────────────────────────────── INSERT INTO construction.presupuestos ( id, tenant_id, fraccionamiento_id, prototipo_id, code, name, version, is_active, total_amount, approved_at, approved_by, created_at, created_by ) VALUES -- Presupuesto Casa 90 - Las Palmas ('00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0004-000000000101', '00000000-0000-0000-0004-000000000001', 'PPTO-PALMAS-C90-V1', 'Presupuesto Casa Tipo 90 - Las Palmas', 1, true, 850000.00, '2024-02-15', '00000000-0000-0000-0002-000000000102', NOW(), '00000000-0000-0000-0002-000000000103'), -- Presupuesto Casa 120 - Las Palmas ('00000000-0000-0000-0005-000000001002', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0004-000000000101', '00000000-0000-0000-0004-000000000002', 'PPTO-PALMAS-C120-V1', 'Presupuesto Casa Tipo 120 - Las Palmas', 1, true, 1150000.00, '2024-02-15', '00000000-0000-0000-0002-000000000102', NOW(), '00000000-0000-0000-0002-000000000103'), -- Presupuesto Casa Premium 150 - Las Palmas ('00000000-0000-0000-0005-000000001003', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0004-000000000101', '00000000-0000-0000-0004-000000000003', 'PPTO-PALMAS-C150-V1', 'Presupuesto Casa Premium 150 - Las Palmas', 1, true, 1550000.00, '2024-02-15', '00000000-0000-0000-0002-000000000102', NOW(), '00000000-0000-0000-0002-000000000103'), -- Presupuesto Depto 85 - Torre Diamante ('00000000-0000-0000-0005-000000001004', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0004-000000000102', '00000000-0000-0000-0004-000000000005', 'PPTO-DIAMANTE-D85-V1', 'Presupuesto Departamento 85 - Torre Diamante', 1, true, 780000.00, '2024-05-20', '00000000-0000-0000-0002-000000000102', NOW(), '00000000-0000-0000-0002-000000000103'), -- Presupuesto Depto Premium 110 - Torre Diamante ('00000000-0000-0000-0005-000000001005', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0004-000000000102', '00000000-0000-0000-0004-000000000006', 'PPTO-DIAMANTE-D110-V1', 'Presupuesto Departamento Premium 110 - Torre Diamante', 1, true, 1050000.00, '2024-05-20', '00000000-0000-0000-0002-000000000102', NOW(), '00000000-0000-0000-0002-000000000103') ON CONFLICT (id) DO NOTHING; -- ───────────────────────────────────────────────────────────────────────────────── -- 3. PARTIDAS DE PRESUPUESTO (Ejemplo para Casa 90) -- ───────────────────────────────────────────────────────────────────────────────── INSERT INTO construction.presupuesto_partidas ( id, tenant_id, presupuesto_id, concepto_id, quantity, unit_price, created_at, created_by ) VALUES -- Preliminares ('00000000-0000-0000-0005-000000002001', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000101', 120.00, 25.00, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000002002', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000102', 120.00, 35.00, NOW(), '00000000-0000-0000-0002-000000000103'), -- Cimentación ('00000000-0000-0000-0005-000000002003', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000201', 45.00, 85.00, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000002004', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000203', 35.00, 180.00, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000002005', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000204', 8.50, 3500.00, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000002006', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000205', 42.00, 1850.00, NOW(), '00000000-0000-0000-0002-000000000103'), -- Estructura ('00000000-0000-0000-0005-000000002007', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000301', 6.50, 4200.00, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000002008', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000302', 35.00, 2100.00, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000002009', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000303', 95.00, 850.00, NOW(), '00000000-0000-0000-0002-000000000103'), -- Albañilería ('00000000-0000-0000-0005-000000002010', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000401', 185.00, 420.00, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000002011', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000403', 52.00, 650.00, NOW(), '00000000-0000-0000-0002-000000000103'), -- Acabados ('00000000-0000-0000-0005-000000002012', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000801', 280.00, 185.00, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000002013', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000803', 320.00, 95.00, NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000002014', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0005-000000001001', '00000000-0000-0000-0005-000000000804', 90.00, 450.00, NOW(), '00000000-0000-0000-0002-000000000103') ON CONFLICT (id) DO NOTHING; -- ───────────────────────────────────────────────────────────────────────────────── -- 4. PROGRAMA DE OBRA -- ───────────────────────────────────────────────────────────────────────────────── INSERT INTO construction.programa_obra ( id, tenant_id, fraccionamiento_id, code, name, version, is_active, start_date, end_date, created_at, created_by ) VALUES ('00000000-0000-0000-0005-000000003001', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0004-000000000101', 'PROG-PALMAS-E1-V1', 'Programa de Obra Las Palmas Etapa 1', 1, true, '2024-03-01', '2025-06-30', NOW(), '00000000-0000-0000-0002-000000000103'), ('00000000-0000-0000-0005-000000003002', '00000000-0000-0000-0003-000000000001', '00000000-0000-0000-0004-000000000102', 'PROG-DIAMANTE-V1', 'Programa de Obra Torre Diamante', 1, true, '2024-06-01', '2027-06-30', NOW(), '00000000-0000-0000-0002-000000000103') ON CONFLICT (id) DO NOTHING; -- ───────────────────────────────────────────────────────────────────────────────── -- VERIFICACIÓN -- ───────────────────────────────────────────────────────────────────────────────── DO $$ DECLARE v_conceptos INTEGER; v_presupuestos INTEGER; v_partidas INTEGER; v_programas INTEGER; BEGIN SELECT COUNT(*) INTO v_conceptos FROM construction.conceptos; SELECT COUNT(*) INTO v_presupuestos FROM construction.presupuestos; SELECT COUNT(*) INTO v_partidas FROM construction.presupuesto_partidas; SELECT COUNT(*) INTO v_programas FROM construction.programa_obra; RAISE NOTICE '══════════════════════════════════════════════════════════════'; RAISE NOTICE 'SEED 05 - PRESUPUESTOS - COMPLETADO'; RAISE NOTICE '══════════════════════════════════════════════════════════════'; RAISE NOTICE 'Conceptos de obra: %', v_conceptos; RAISE NOTICE 'Presupuestos: %', v_presupuestos; RAISE NOTICE 'Partidas: %', v_partidas; RAISE NOTICE 'Programas de obra: %', v_programas; RAISE NOTICE '══════════════════════════════════════════════════════════════'; END $$; COMMIT; -- ═══════════════════════════════════════════════════════════════════════════════ -- FIN SEED 05 -- ═══════════════════════════════════════════════════════════════════════════════