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']
|
CitaModel = env.registry['skeen.cita']
|
||||||
Cita = env['skeen.cita'].sudo()
|
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
|
original_check = CitaModel._check_availability
|
||||||
CitaModel._check_availability = lambda self: None
|
CitaModel._check_availability = lambda self: None
|
||||||
|
original_bloqueos = CitaModel._check_bloqueos
|
||||||
|
CitaModel._check_bloqueos = lambda self: None
|
||||||
|
|
||||||
# ---------- Cachés Odoo ----------
|
# ---------- Cachés Odoo ----------
|
||||||
log('Cargando cachés de Odoo...')
|
log('Cargando cachés de Odoo...')
|
||||||
@@ -125,6 +127,11 @@ def main():
|
|||||||
if name:
|
if name:
|
||||||
service_by_name.setdefault(normalize_name(name), sid)
|
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 = {}
|
doctor_by_name = {}
|
||||||
cr.execute("SELECT id, name FROM hr_employee")
|
cr.execute("SELECT id, name FROM hr_employee")
|
||||||
for eid, name in cr.fetchall():
|
for eid, name in cr.fetchall():
|
||||||
@@ -153,9 +160,15 @@ def main():
|
|||||||
if key in service_by_name:
|
if key in service_by_name:
|
||||||
return service_by_name[key]
|
return service_by_name[key]
|
||||||
code = 'HIST_' + hashlib.md5(key.encode('utf-8')).hexdigest()[:12]
|
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',
|
new_s = Servicio.create({'name': name, 'code': code, 'category': 'tratamiento',
|
||||||
'price': 0, 'duration_min': 30})
|
'price': 0, 'duration_min': 30})
|
||||||
service_by_name[key] = new_s.id
|
service_by_name[key] = new_s.id
|
||||||
|
service_by_code[code] = new_s.id
|
||||||
return new_s.id
|
return new_s.id
|
||||||
|
|
||||||
# ---------- Login legacy ----------
|
# ---------- Login legacy ----------
|
||||||
@@ -340,6 +353,7 @@ def main():
|
|||||||
|
|
||||||
# Restaurar validación y cerrar
|
# Restaurar validación y cerrar
|
||||||
CitaModel._check_availability = original_check
|
CitaModel._check_availability = original_check
|
||||||
|
CitaModel._check_bloqueos = original_bloqueos
|
||||||
cr.commit()
|
cr.commit()
|
||||||
cr.close()
|
cr.close()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user