From 012c4e1c6601f3be43ef1ebb60aad227fc708147 Mon Sep 17 00:00:00 2001 From: Soporte ZH Consultores Date: Thu, 4 Jun 2026 22:14:53 -0500 Subject: [PATCH] fix(horas): normalizar nombres legacy de abogado en hours/obs/escrituras MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Antes de la migración 007 los dropdowns guardaban variantes parciales (ej. "Altafulla" en vez de "Julio Altafulla"). El filtro del Reporte de Horas no encontraba esos registros viejos porque users.name ahora es el nombre completo. Migración 013 hace un UPDATE con JOIN a users donde haya match único LIKE %legacy%. Aplicó a 4 filas: 2 en tramites_hours, 1 en tramites_obs, 1 en escrituras_tramites. --- sql/013_normalize_abogado_names.sql | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 sql/013_normalize_abogado_names.sql 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;