Citas: solapamiento permitido entre medicos distintos (chequeo por doctor_id)
This commit is contained in:
@@ -218,22 +218,25 @@ class SkeenCita(models.Model):
|
|||||||
def action_send_reminder(self):
|
def action_send_reminder(self):
|
||||||
self.write({'reminder_sent': True, 'reminder_date': fields.Datetime.now()})
|
self.write({'reminder_sent': True, 'reminder_date': fields.Datetime.now()})
|
||||||
|
|
||||||
@api.constrains('date', 'time', 'servicio_id')
|
@api.constrains('date', 'time', 'doctor_id', 'servicio_id')
|
||||||
def _check_availability(self):
|
def _check_availability(self):
|
||||||
for cita in self:
|
for cita in self:
|
||||||
if cita.state in ('cancelled', 'no_show'):
|
if cita.state in ('cancelled', 'no_show'):
|
||||||
continue
|
continue
|
||||||
# Verificar solapamiento
|
# Verificar solapamiento SOLO dentro del mismo médico:
|
||||||
|
# la clínica permite citas simultáneas con doctores distintos.
|
||||||
|
# Criterio para citas sin médico: solo traslapan con otras sin médico.
|
||||||
domain = [
|
domain = [
|
||||||
('id', '!=', cita.id),
|
('id', '!=', cita.id),
|
||||||
('date', '=', cita.date),
|
('date', '=', cita.date),
|
||||||
('state', 'not in', ('cancelled', 'no_show')),
|
('state', 'not in', ('cancelled', 'no_show')),
|
||||||
|
('doctor_id', '=', cita.doctor_id.id if cita.doctor_id else False),
|
||||||
('datetime_start', '<', cita.datetime_end),
|
('datetime_start', '<', cita.datetime_end),
|
||||||
('datetime_end', '>', cita.datetime_start),
|
('datetime_end', '>', cita.datetime_start),
|
||||||
]
|
]
|
||||||
overlapping = self.search(domain)
|
overlapping = self.search(domain)
|
||||||
if overlapping:
|
if overlapping:
|
||||||
raise ValidationError(_('Ya existe una cita en ese horario!'))
|
raise ValidationError(_('Ya existe una cita en ese horario para ese médico!'))
|
||||||
|
|
||||||
@api.constrains('date', 'time', 'doctor_id', 'servicio_id')
|
@api.constrains('date', 'time', 'doctor_id', 'servicio_id')
|
||||||
def _check_bloqueos(self):
|
def _check_bloqueos(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user