Ciclo de vida de reservas

Estados de una reserva

Una reserva pasa por los siguientes estados a lo largo de su ciclo de vida:

pendiente_pago

Reserva creada, esperando confirmación de pago. El slot/rango queda ocupado temporalmente.

confirmada

Pago confirmado. La reserva es firme.

completada

El servicio fue prestado o la estadía finalizada.

cancelada

Reserva cancelada. El slot/rango se libera.

Flujo de creación

  1. El cliente selecciona un recurso y consulta disponibilidad.
  2. El sistema valida que el recurso esté publicado y disponible.
  3. Verificación anti-duplicados: si el mismo teléfono ya tiene una reserva activa para ese recurso, se rechaza.
  4. Se busca o crea el cliente en Strapi (por email o teléfono).
  5. Se ocupa el slot (experiencia) o rango (estadía) en la disponibilidad.
  6. Si el método de pago es "online", se crea un payment intent en Bold.
  7. Se genera el código de reserva (formato: RES-{fecha}-{nanoid}).
  8. Se notifica al sistema externo (n8n) si está configurado.

Cambio de estado

Los estados se pueden cambiar desde el panel administrativo o vía API:

  • Confirmar: POST /api/admin/reservas/{id}/estado con { estado: "confirmada" }.
  • Cancelar: POST /api/reservas/{codigo}/cancelar con motivo. Libera el slot/rango automáticamente.
  • Completar: cambio manual desde el panel cuando el servicio fue prestado.

Cancelación

Al cancelar una reserva, el sistema:

  • Cambia el estado a "cancelada".
  • Libera el slot o rango de fechas en la disponibilidad (para que otros puedan reservar).
  • Registra el motivo de cancelación.
  • Si hubo pago, se puede iniciar un reembolso desde el panel.

Reembolsos

Los reembolsos se gestionan desde el panel administrativo:

  • Reembolso de reserva: POST /api/admin/reservas/{id}/reembolsar
  • Reembolso de pago: POST /api/admin/pagos/{id}/reembolsar
  • El reembolso queda registrado en el historial del pago.

Notificaciones

El sistema puede enviar notificaciones automáticas a través de n8n (endpoint configurable). Cuando se crea una reserva, se dispara una notificación con los datos del cliente, recurso, fechas y monto. Esto permite integrar el sistema de reservas con flujos de comunicación externos (email, WhatsApp, etc.).

¿Te fue útil esta guía?