2026-06-10 — Ausencias, llegadas tarde y horarios de comidas

Se mejoró el manejo de comidas de la inscripción en tres frentes: (1) cada ausencia a una comida ahora indica si la persona está Ausente o Llega tarde; (2) la actividad puede tener hora de inicio y hora de fin, que se muestran en la página del producto; y (3) la primera y la última comida de la actividad se calculan según los rangos horarios de cada comida.

Por qué

Antes una “ausencia” era todo o nada: la persona no se contaba en esa comida. Pero muchos llegan tarde y sí comen (solo que llegan sobre la hora): hacía falta contarlos pero distinguirlos. Y al cargar la hora real de llegada/salida de la actividad, conviene que el sistema acierte qué comidas corresponden el primer y el último día.

Ausente vs. Llega tarde

  • Cada omisión de comida tiene ahora un tipo:
    • Ausente: la persona no asiste a esa comida y no se cuenta (comportamiento de siempre).
    • Llega tarde: la persona sí se cuenta en esa comida, pero aparece marcada con (TARDE) y agrupada al final dentro de su régimen (desayuno, almuerzo, merienda/té o cena).
  • Las ausencias cargadas antes de este cambio siguen funcionando: si no tienen tipo, se toman como Ausente.

Dónde se carga y se cambia

El selector Ausente / Llega tarde (junto con el día y la comida) está disponible en todos los puntos donde se editan las ausencias:

  • Al inscribirse (checkout): en el checkout propio de cdc-landings. El texto de ayuda ahora dice “Indicá los días que no vas a estar en alguna comida durante la actividad. Podrás modificar esto más adelante.”
  • Panel personal: la persona puede editar sus ausencias desde el detalle de su inscripción.
  • Panel de administración: el staff puede editarlas desde la ficha de la inscripción.
  • Checkout clásico (tema WooCommerce): también se agregó el selector, para el flujo de compra heredado.

Dónde se ve el resultado

  • En la actividad, pestaña “Lista de comensales”: las personas que llegan tarde se cuentan en la comida, con (TARDE) y al final de cada régimen. Las ausencias siguen quedando fuera del conteo.

Hora de inicio y de fin de la actividad

  • La actividad tiene ahora Hora de inicio y Hora de fin (campos de hora), que se cargan junto a las fechas en la edición de la actividad (no aplica a promociones).
  • Son obligatorias para guardar la actividad. Junto a cada campo hay un tooltip que muestra los rangos horarios de cada comida (para entender cómo se arman las listas de comensales).
  • Al crear una actividad nueva, vienen precargadas por defecto con 20:00 (inicio) y 13:00 (fin).
  • Esas horas se muestran en la página del producto, entre paréntesis después de la fecha de inicio y de fin, porque son un dato importante para quien se inscribe.
  • Migración: todas las actividades históricas se actualizaron para tener esas horas por defecto (20:00 / 13:00) cuando no las tenían. Si una actividad quedara sin horas, se consideran todas las comidas del primer y del último día.

Rangos horarios de comidas (primera y última comida)

  • Se definieron ventanas horarias para cada comida:
    • Desayuno: 6:00 a 11:00
    • Almuerzo: 13:00 a 15:00
    • Merienda / té: 17:00 a 19:00
    • Cena: 20:30 a 23:00
  • Primer día: una comida se incluye si la actividad empieza antes del fin de su ventana. Ej.: si empieza 14:30, hay almuerzo; si empieza 12:30, no hay desayuno.
  • Último día: una comida se incluye si la actividad termina después del inicio de su ventana. Ej.: si termina 16:00, no hay merienda/té.
  • Días intermedios: se sirven todas las comidas, como hasta ahora.
  • Si una actividad no tiene horas cargadas (caso excepcional), se consideran todas las comidas del primer y del último día. En “Lista de comensales”, si por los horarios un día no tiene ninguna comida, se avisa explícitamente.

Pestañas de comensales

  • En el detalle de la actividad, la lista nueva pasó a llamarse simplemente “Lista de comensales”, y la vista anterior quedó como “Lista de comensales (vieja)” (se retirará más adelante).

Backend (API y plugin)

  • El modelo de excepción de comida incorporó el campo tipo (absence / late_arrival), con validación y compatibilidad hacia atrás (sin tipo = absence). El tipo viaja desde el checkout, se guarda en la orden y se conserva al crear la inscripción.
  • Al leer la actividad para la inscripción, ahora se combinan fecha + hora de inicio y fin.

Documentación (este sitio)

  • Se publicó esta entrada de Cambios.

A tener en cuenta

Las ventanas horarias de comidas (6–11, 13–15, 17–19, 20:30–23) están fijas en el sistema. Si en el futuro hace falta ajustarlas por sede o por actividad, habría que parametrizarlas.