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
- El cliente selecciona un recurso y consulta disponibilidad.
- El sistema valida que el recurso esté publicado y disponible.
- Verificación anti-duplicados: si el mismo teléfono ya tiene una reserva activa para ese recurso, se rechaza.
- Se busca o crea el cliente en Strapi (por email o teléfono).
- Se ocupa el slot (experiencia) o rango (estadía) en la disponibilidad.
- Si el método de pago es "online", se crea un payment intent en Bold.
- Se genera el código de reserva (formato:
RES-{fecha}-{nanoid}). - 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}/estadocon{ estado: "confirmada" }. - Cancelar:
POST /api/reservas/{codigo}/cancelarcon 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?