Oleada B: fusion Expedientes en Pacientes (+chip sin visita 6m), sidebar colapsable SKEEN, edicion completa de citas, autocompletado de paciente, bloqueos excluidos de slots

This commit is contained in:
2026-09-11 10:38:08 +00:00
parent 0b45abc197
commit 4f49188deb
9 changed files with 295 additions and 65 deletions

View File

@@ -647,10 +647,11 @@ class SkeenFrontendController(http.Controller):
try:
date_str = kw.get('date')
servicio_id = int(kw.get('servicio_id', 0))
doctor_id = int(kw.get('doctor_id', 0)) if kw.get('doctor_id') else None
if not date_str or not servicio_id:
return json_response({'status': 'error', 'message': 'Falta date o servicio_id'}, 400)
d = datetime.strptime(date_str, '%Y-%m-%d').date()
slots = request.env['skeen.cita'].sudo().get_available_slots(d, servicio_id)
slots = request.env['skeen.cita'].sudo().get_available_slots(d, servicio_id, doctor_id=doctor_id)
return json_response({'status': 'success', 'slots': slots})
except Exception as e:
return json_response({'status': 'error', 'message': str(e)}, 500)
@@ -1085,6 +1086,10 @@ class SkeenFrontendController(http.Controller):
if kw.get('recent') == '1':
seis_meses = (date.today() - timedelta(days=183)).strftime('%Y-%m-%d')
domain.append(('last_visit', '>=', seis_meses))
elif kw.get('recent') == '0':
# Sin visita en los últimos 6 meses (incluye sin visita registrada)
seis_meses = (date.today() - timedelta(days=183)).strftime('%Y-%m-%d')
domain += ['|', ('last_visit', '=', False), ('last_visit', '<', seis_meses)]
page = max(int(kw.get('page', 1) or 1), 1)
page_size = min(max(int(kw.get('page_size', 50) or 50), 1), 200)
Pacientes = request.env['res.partner'].sudo()

View File

@@ -54,7 +54,6 @@ DEFAULT_MENU_ROLES = {
'/pos': ['admin', 'recepcion', 'gerencia'],
'/visitas': ['admin', 'recepcion', 'medico', 'gerencia'],
'/consultas': ['admin', 'recepcion', 'medico', 'gerencia'],
'/expedientes': ['admin', 'recepcion', 'medico', 'gerencia'],
'/medicos': ['admin', 'recepcion', 'gerencia'],
'/servicios': ['admin', 'recepcion', 'medico', 'lectura', 'gerencia'],
'/productos': ['admin', 'recepcion', 'lectura', 'gerencia'],