delta_import: desactivar _check_bloqueos y dedup de servicios HIST por codigo (reimport robusto)
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user