erp-construccion-database-v2/seeds/dev/07-avances-calidad.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

280 lines
16 KiB
PL/PgSQL

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