Agenda: horario 8-19h, bloques de 15 min, cita rapida, vista restringida para rol medico y chips de pacientes por doctor
This commit is contained in:
@@ -256,19 +256,20 @@ class SkeenCita(models.Model):
|
||||
"""Retorna slots disponibles para una fecha y servicio"""
|
||||
servicio = self.env['skeen.servicio'].browse(servicio_id)
|
||||
duration = servicio.duration_min if servicio else 30
|
||||
|
||||
# Horario de la clínica
|
||||
start_time = 9.0 # 9:00 AM
|
||||
end_time = 18.0 # 6:00 PM
|
||||
|
||||
|
||||
# Horario de la clínica: 8:00 AM a 7:00 PM
|
||||
start_time = 8.0 # 8:00 AM
|
||||
end_time = 19.0 # 7:00 PM
|
||||
|
||||
# Generar slots
|
||||
slots = []
|
||||
current = start_time
|
||||
while current + (duration / 60.0) <= end_time:
|
||||
while current + (duration / 60.0) <= end_time + 1e-9:
|
||||
# Verificar si está ocupado
|
||||
slot_start = datetime.combine(date, datetime.min.time().replace(hour=int(current), minute=int((current % 1) * 60)))
|
||||
minutes = int(round((current % 1) * 60))
|
||||
slot_start = datetime.combine(date, datetime.min.time().replace(hour=int(current), minute=minutes))
|
||||
slot_end = slot_start + timedelta(minutes=duration)
|
||||
|
||||
|
||||
domain = [
|
||||
('date', '=', date),
|
||||
('state', 'not in', ('cancelled', 'no_show')),
|
||||
@@ -278,8 +279,8 @@ class SkeenCita(models.Model):
|
||||
if not self.search(domain):
|
||||
slots.append({
|
||||
'time': current,
|
||||
'time_str': f"{int(current):02d}:{int((current % 1) * 60):02d}",
|
||||
'time_str': f"{int(current):02d}:{minutes:02d}",
|
||||
})
|
||||
current += 0.5 # Slots cada 30 min
|
||||
|
||||
current += 0.25 # Slots cada 15 min
|
||||
|
||||
return slots
|
||||
|
||||
Reference in New Issue
Block a user