diff --git a/migracion/delta_import.py b/migracion/delta_import.py index 414ba08..5927b31 100644 --- a/migracion/delta_import.py +++ b/migracion/delta_import.py @@ -104,9 +104,11 @@ def main(): CitaModel = env.registry['skeen.cita'] Cita = env['skeen.cita'].sudo() - # Desactivar validación de solapamiento durante la importación + # Desactivar validaciones durante la importación original_check = CitaModel._check_availability CitaModel._check_availability = lambda self: None + original_bloqueos = CitaModel._check_bloqueos + CitaModel._check_bloqueos = lambda self: None # ---------- Cachés Odoo ---------- log('Cargando cachés de Odoo...') @@ -125,6 +127,11 @@ def main(): if name: service_by_name.setdefault(normalize_name(name), sid) + service_by_code = {} + cr.execute("SELECT id, code FROM skeen_servicio WHERE code IS NOT NULL AND code != ''") + for sid, code in cr.fetchall(): + service_by_code[code] = sid + doctor_by_name = {} cr.execute("SELECT id, name FROM hr_employee") for eid, name in cr.fetchall(): @@ -153,9 +160,15 @@ def main(): if key in service_by_name: return service_by_name[key] code = 'HIST_' + hashlib.md5(key.encode('utf-8')).hexdigest()[:12] + if code in service_by_code: + # Mismo servicio creado en una importación anterior con nombre + # que ya no normaliza igual: reusar por código, no duplicar. + service_by_name[key] = service_by_code[code] + return service_by_code[code] new_s = Servicio.create({'name': name, 'code': code, 'category': 'tratamiento', 'price': 0, 'duration_min': 30}) service_by_name[key] = new_s.id + service_by_code[code] = new_s.id return new_s.id # ---------- Login legacy ---------- @@ -340,6 +353,7 @@ def main(): # Restaurar validación y cerrar CitaModel._check_availability = original_check + CitaModel._check_bloqueos = original_bloqueos cr.commit() cr.close()