lista de espera: salas consultoria/cabina (toggle + etiqueta) y scroll de WhatsApp
- skeen_citas: campo sala en skeen.lista.espera (consultoria/cabina, indexado) - frontend.py: sala en _lista_espera_to_dict, create y update (toggle desde la etiqueta; valor invalido vuelve a sin sala; cambio queda en historial) - ListaEspera.tsx: toggle Todas/Consultoria/Cabina con conteo, etiqueta clicable en cada tarjeta que alterna de sala, selector en el modal de alta - Agenda.tsx: cambiarSala() conectado al panel - WacrmMessages.tsx: el auto-refresco ya no empuja el scroll abajo si el usuario esta leyendo mensajes anteriores (solo baja al cambiar de conversacion, por deep-link o al enviar respuesta propia) Verificacion API: 7/7 tests OK (alta con sala, toggle, valor invalido, GET)
This commit is contained in:
@@ -45,6 +45,14 @@ class SkeenListaEspera(models.Model):
|
||||
('tarde', 'Tarde'),
|
||||
], string='Preferencia', default='')
|
||||
|
||||
# Dónde espera el paciente: consultoría (consulta con el médico) o cabina
|
||||
# (tratamiento/valoración). Recepción lo mueve con un click en la etiqueta.
|
||||
sala = fields.Selection([
|
||||
('', 'Sin asignar'),
|
||||
('consultoria', 'Consultoría'),
|
||||
('cabina', 'Cabina'),
|
||||
], string='Sala de espera', default='', index=True)
|
||||
|
||||
date_from = fields.Date(string='Desde')
|
||||
date_to = fields.Date(string='Hasta')
|
||||
notes = fields.Text(string='Nota')
|
||||
|
||||
@@ -1362,6 +1362,8 @@ class SkeenFrontendController(http.Controller):
|
||||
'priority': r.priority,
|
||||
'priority_label': dict(r._fields['priority'].selection).get(r.priority, ''),
|
||||
'franja': r.franja or '',
|
||||
'sala': r.sala or '',
|
||||
'sala_label': dict(r._fields['sala'].selection).get(r.sala, '') if r.sala else '',
|
||||
'date_from': r.date_from.strftime('%Y-%m-%d') if r.date_from else None,
|
||||
'date_to': r.date_to.strftime('%Y-%m-%d') if r.date_to else None,
|
||||
'notes': r.notes or '',
|
||||
@@ -1446,6 +1448,7 @@ class SkeenFrontendController(http.Controller):
|
||||
'servicio_id': int(data['service_id'] or data['servicio_id']) if (data.get('service_id') or data.get('servicio_id')) else False,
|
||||
'priority': data.get('priority') or 'normal',
|
||||
'franja': data.get('franja') or '',
|
||||
'sala': data.get('sala') if data.get('sala') in ('consultoria', 'cabina') else False,
|
||||
'date_from': data.get('date_from') or False,
|
||||
'date_to': data.get('date_to') or False,
|
||||
'notes': data.get('notes') or '',
|
||||
@@ -1485,6 +1488,12 @@ class SkeenFrontendController(http.Controller):
|
||||
):
|
||||
if key in data:
|
||||
vals[field] = data[key] or False
|
||||
if 'sala' in data:
|
||||
# Toggle de sala desde la etiqueta: '' vuelve a "Sin asignar"
|
||||
vals['sala'] = data['sala'] if data['sala'] in ('consultoria', 'cabina') else False
|
||||
if vals['sala']:
|
||||
record._log('Sala: %s' % dict(record._fields['sala'].selection).get(vals['sala'], vals['sala']),
|
||||
user=request.frontend_user.login)
|
||||
if data.get('cita_id'):
|
||||
vals['cita_id'] = int(data['cita_id'])
|
||||
new_state = data.get('state')
|
||||
|
||||
Reference in New Issue
Block a user