diff --git a/sql/013_normalize_abogado_names.sql b/sql/013_normalize_abogado_names.sql new file mode 100644 index 0000000..b93cfa9 --- /dev/null +++ b/sql/013_normalize_abogado_names.sql @@ -0,0 +1,37 @@ +-- ============================================================ +-- 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;