-- ============================================================ -- Donna — Schema 013: normalizar strings legacy de "abogado" -- ============================================================ -- Antes de la migración 007 (drop apellido) los dropdowns guardaban -- solo el apellido o variantes parciales en tramites_hours.abogado, -- tramites_obs.abogado y escrituras_tramites.abogado. Eso rompe los -- filtros del Reporte de Horas porque `users.name` es ahora el nombre -- completo y el WHERE exacto no encuentra los registros viejos. -- -- Esta migración reemplaza esos strings por el nombre completo del -- usuario cuando hay UN solo match no ambiguo (LIKE %legacy%). -- Si hubiera dos usuarios cuyo nombre contiene el string viejo, -- la fila no se toca (hay que decidir a mano cuál es). -- 1. tramites_hours UPDATE tramites_hours h JOIN users u ON u.activo = 1 AND h.abogado != u.name AND u.name LIKE CONCAT('%', h.abogado, '%') SET h.abogado = u.name WHERE (SELECT COUNT(*) FROM users u2 WHERE u2.activo = 1 AND u2.name LIKE CONCAT('%', h.abogado, '%')) = 1; -- 2. tramites_obs UPDATE tramites_obs o JOIN users u ON u.activo = 1 AND o.abogado != u.name AND u.name LIKE CONCAT('%', o.abogado, '%') SET o.abogado = u.name WHERE (SELECT COUNT(*) FROM users u2 WHERE u2.activo = 1 AND u2.name LIKE CONCAT('%', o.abogado, '%')) = 1; -- 3. escrituras_tramites UPDATE escrituras_tramites e JOIN users u ON u.activo = 1 AND e.abogado != u.name AND u.name LIKE CONCAT('%', e.abogado, '%') SET e.abogado = u.name WHERE (SELECT COUNT(*) FROM users u2 WHERE u2.activo = 1 AND u2.name LIKE CONCAT('%', e.abogado, '%')) = 1;