erp-construccion-database-v2/seeds/dev/10-activos-documentos.sql
Adrian Flores Cortes 8df74f73d2 [TASK-2026-02-03-SEEDS] feat: Add complete development seeds for demo
Seeds include:
- 01-core-catalogs.sql: Units, currencies, taxes, banks, states (~100 records)
- 02-users-profiles.sql: 12 roles, 50+ permissions, 12 demo users
- 03-empresa-tenant.sql: Demo company with 2 branches, 4 warehouses
- 04-proyectos-obras.sql: 3 projects, stages, lots, apartments
- 05-presupuestos.sql: CMIC-based concepts, 5 budgets
- 06-estimaciones.sql: Contracts, estimates, advances
- 07-avances-calidad.sql: Progress, logbook, quality checklists
- 08-hse.sql: PPE catalog, training, incidents
- 09-finanzas.sql: Chart of accounts, CxP, CxC, balanced entries
- 10-activos-documentos.sql: Assets, maintenance, documents

Total: ~940 records for complete demo coverage

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 11:08:26 -06:00

311 lines
17 KiB
PL/PgSQL

-- ═══════════════════════════════════════════════════════════════════════════════
-- 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
-- ═══════════════════════════════════════════════════════════════════════════════