Recurrencias — series repetitivas
Crea series de turnos que se repiten cada semana, quincena o mes. Solo plan Pro. Cancelar parte o toda la serie estilo Google Calendar.
Las recurrencias son series de turnos que se repiten automáticamente: «tinte cada 4 semanas para Valentina», «mantenimiento cada 6 meses para Don Pedro», «yoga grupal cada lunes 7am». En lugar de cargar 12 turnos a mano, defines el patrón una vez y el sistema genera los N bookings hijos automáticamente. Cada hijo es una reserva real con su propio horario, su propio estado y su propio tracking token — la serie es solo el «contenedor» que los une.
Las recurrencias son una feature exclusiva del plan Pro. En plan gratuito no puedes crear series — tienes que cargar los turnos uno a uno. La razón es la complejidad: una serie semanal de 12 ocurrencias suma 12 al cap mensual del plan; con 50 reservas/mes del plan gratuito, una sola serie agotaría el cupo. El plan Pro tiene 500 reservas/mes y la diferencia se vuelve viable.
Las 4 frecuencias disponibles son: semanal, quincenal (cada 2 semanas), mensual y custom (cada N días). La serie termina por cantidad de ocurrencias (ej. 12 sesiones) o por fecha de fin (ej. hasta diciembre). El motor genera los bookings dentro de una transacción atómica: si una de las fechas tiene conflicto con otro confirmed, el sistema reporta el conflicto y NO crea ese booking — los demás sí. Tú decides qué hacer con los conflictos después.
Cancelar una serie tiene 3 opciones estilo Google Calendar: solo esta (cancela un booking específico), esta y las siguientes (cancela este más todos los futuros, los pasados se conservan), o toda la serie (cancela todos los no-finales). Esto te da flexibilidad real para manejar cambios en la rutina del cliente.
Manual completo
Cuándo usar recurrencias
| Caso | Frecuencia |
|---|---|
| Cliente que viene a teñirse cada 4 semanas | Custom (cada 28 días) |
| Mantenimiento de auto cada 6 meses | Mensual (con interval 6) |
| Clase de yoga grupal todos los lunes | Semanal |
| Limpieza dental cada 6 meses | Mensual (con interval 6) |
| Sesión de fisioterapia cada 15 días | Quincenal |
| Curso de 10 clases todos los martes | Semanal con count 10 |
Si el cliente viene una sola vez o de forma irregular, no necesitas serie. Carga el turno suelto y listo.
Crear una serie (acceso pendiente de UI)
Nota importante: hoy la generación de series ya funciona por dentro, pero la pantalla dedicada en el panel para crearlas todavía no está disponible del todo (verás en el detalle el botón «Cancelar serie», pero la creación inicial se hace desde el picker público o con ayuda de soporte). Si necesitas crear series manualmente, contáctanos por WhatsApp — la pantalla para armarlas está en la cola de mejoras.
Cuando esté disponible la UI dedicada, el flujo será:
- Desde el detalle de un booking confirmado, opción «Convertir en serie» o desde un botón nuevo en Lista.
- Eliges frecuencia (semanal / quincenal / mensual / custom).
- Si es custom, ingresas el intervalo en días.
- Eliges terminación: por cantidad (ej. 12 sesiones) o por fecha (ej. hasta 31-dic-2026).
- El sistema calcula las fechas exactas y muestra preview.
- Confirmas creación. Las N reservas hijas se generan en una transacción.
Las 4 frecuencias
| Frecuencia | Cómo se calcula la próxima |
|---|---|
| Semanal | Anterior + 7 días. |
| Quincenal | Anterior + 14 días. |
| Mensual | Anterior + 1 mes calendario (mismo día del mes). |
| Custom | Anterior + N días (defines N, ej. cada 28 días). |
| Diaria | Anterior + N días (variante de custom con default 1). |
Terminación de la serie
Una serie termina por una de estas dos condiciones:
- Cantidad de ocurrencias: ej. 12 sesiones. El motor genera 12 turnos y se detiene.
- Fecha de fin: ej. 31 de diciembre. El motor genera turnos hasta que la próxima fecha calculada pasaría ese día.
Cap técnico: el motor no genera más de 200 ocurrencias por serie. Si pides más, el sistema rechaza explícitamente con error. Esto evita series infinitas que sobrecarguen tu agenda y tu cap mensual.
Conflictos al generar
Cuando el motor genera los bookings, por cada fecha verifica si hay otro confirmed en ese horario para el mismo recurso. Si hay conflicto:
- Esa fecha se omite (no se crea el booking).
- El conflicto se reporta en el resultado (al admin que creó la serie).
- Las demás fechas se crean normal.
Ejemplo: pides «yoga cada lunes 7am durante 12 semanas» para la Sala Grupal. Si en la semana 5 ya hay otra clase confirmada a las 7am de ese lunes, el motor omite ese booking y reporta el conflicto. Quedan 11 bookings creados de 12 — tú decides si modificas la semana 5 manualmente o lo dejas así.
Estado inicial de los bookings de la serie
Por default, los bookings hijos se crean en estado confirmed (no pending). Esto tiene sentido porque la serie la creas tú, no el cliente — ya hay acuerdo offline.
Cada turno hijo aparta su horario automáticamente al crearse. Si el cliente quiere cancelar uno o todos, lo manejas desde el detalle con las opciones de cancelación.
Cancelar la serie — 3 opciones
Desde el detalle de cualquier booking que pertenezca a una serie, ves un botón «Cancelar serie» que abre el modal con 3 opciones:
| Opción | Qué cancela |
|---|---|
| Solo esta | Solo este booking puntual. La serie sigue viva con los demás. |
| Esta y las siguientes | Este turno y todos los posteriores de la serie. Los pasados se conservan. |
| Toda la serie | Todos los turnos que no estén ya cerrados (no toca los ya completados ni los marcados como no asistió). |
Cómo se ve la serie en la Lista
Cada booking de una serie se muestra como una fila individual en la Lista. La columna cliente puede mostrar «(serie)» o un ícono pequeño para indicar pertenencia.
Los turnos de una misma serie comparten:
- La serie a la que pertenecen y su posición dentro de ella (1, 2, 3… hasta N).
- El cliente, el servicio, el recurso y la duración (heredados del patrón).
Pero cada uno tiene su propio:
- Día y hora de inicio y de fin.
- Estado (independiente de los demás).
- Código de seguimiento (distinto por turno).
- Notas internas y su propia línea de tiempo.
Caps de recurrencias por plan
| Plan | Recurrencias |
|---|---|
| Gratuito | No disponible |
| Pro | Sí, sin tope adicional |
Importante: cada booking hijo de la serie cuenta como 1 reserva en el cap mensual. Si creas una serie semanal de 12 ocurrencias en un mes con cap 500 (Pro), suma 12 al contador. El cap mensual se aplica al booking individual, no a la serie.
Cuando un cliente se mueve de horario
Si un cliente con serie semanal te pide cambiar de hora a partir de cierta fecha:
- Abre el detalle del booking de la fecha en que arranca el cambio.
- Botón «Cancelar serie» → «Esta y las siguientes».
- Crea una serie nueva con el horario nuevo desde esa fecha.
El histórico de la serie original se conserva (los pasados completados quedan donde estaban). Es la forma limpia de modelar un cambio de horario.
Cuando una serie se rompe
Si tú o el cliente cancelan «toda la serie» o «esta y las siguientes», la serie queda marcada como cancelada con su fecha de cancelación. Si cancelas solo «esta» (un turno puntual), la serie sigue activa.
FAQ
¿Puedo crear recurrencias en plan gratuito? No. Las series están disponibles solo en el plan Pro. El plan gratuito tiene 50 reservas/mes — series largas no son viables económicamente.
¿Las series se sincronizan con Google Calendar del cliente? Hoy no. Cada email de confirmación incluye un .ics adjunto (calendar invite) que el cliente puede agregar a su Google Calendar, pero la sincronización bidireccional no existe todavía.
¿Si edito el recurso del booking en una serie, afecta a los otros? No. Cada booking de la serie es independiente — editar uno solo afecta a ese. Si quieres cambiar el recurso de toda la serie, hazlo manualmente uno por uno o cancela y recrea.
¿Qué pasa si llego al cap mensual mientras genero una serie? El motor de recurrencias genera los bookings hasta que falla un check de capacidad o cap mensual. Por ahora no hay un guardarail explícito de cap mensual en el motor — la creación masiva puede llevarte sobre el cap, pero el catálogo público sí lo respeta. Si te preocupa, planifica series chicas en plan gratuito (no aplica) o estás en Pro y tienes 500/mes de margen.
¿Puedo crear una serie sin cliente asociado? No. Cada serie necesita un cliente asignado. Si quieres «bloquear» un horario recurrente sin cliente (ej. clase de yoga abierta), crea un cliente ficticio del MYPE o usa las Excepciones para bloquear el horario.
¿Reabrir un booking cancelado de una serie lo re-incluye? Sí. Si reabres un turno cancelado, vuelve a estado pendiente y forma parte activa de la serie de nuevo. El estado de cancelación de la serie no cambia — la serie y el turno son independientes.
¿Por qué algunos turnos de la misma serie apartan el horario y otros no? Si el recurso tiene capacidad 1, todos los turnos de la serie que se crean como confirmados apartan el horario. Si la capacidad es mayor a 1 (clase grupal), ninguno lo aparta en exclusiva — pueden coexistir varios confirmados. Es coherente con la regla general del sistema.