fase 2.4: recordatorios y notificaciones automaticas (modelo+cola+bitacora, cron cada 5 min, recordatorios por ventana, confirmacion, cumpleanos, post-visita, recuperacion de no-show, modo prueba, plantillas con glosario, historial y reintentos); apagado por defecto

This commit is contained in:
2026-10-11 09:05:19 +00:00
parent 9257586943
commit dabd8c6bd7
16 changed files with 1832 additions and 12 deletions

View File

@@ -254,14 +254,25 @@ class SkeenPublicBookingController(http.Controller):
return cita
def _encolar_confirmacion(self, cita):
"""Hook Fase 2.4: avisar al cliente que la clínica confirmará su cita.
"""Encola y dispara la confirmación al paciente que reservó en línea.
A propósito es un no-op: la Fase 2.4 enviará el mensaje de confirmación
por WhatsApp/WACRM (usando `cita.wacrm_conversation_id` o el teléfono del
paciente) cuando esas credenciales estén configuradas. Se deja el punto
de extensión listo, sin acoplar el portal público a WhatsApp todavía.
Solo actúa si `notificaciones.activo` y `confirmacion_al_crear` están
encendidos; el motor decide si envía o simula (modo prueba). Nunca debe
tumbar la reserva: cualquier fallo se registra y se ignora.
"""
return False
try:
from odoo.addons.skeen_citas.clinic_settings import get_notificaciones
cfg = get_notificaciones(request.env)
if not (cfg.get('activo') and cfg.get('confirmacion_al_crear')):
return False
service = request.env['skeen.notificacion.service'].sudo()
creadas = service.encolar(cita, 'confirmacion')
for notif in creadas:
service._intentar(notif, cfg)
return bool(creadas)
except Exception:
_logger.exception('No se pudo encolar la confirmación de la reserva en línea')
return False
# ------------------------------------------------------------------
# 1. Configuración pública del portal