AchieveApex: app reservations
Generado desde
achieveApex-Frontend/public/ai-docsel 2026-10-15. Contiene 47 archivos de la appreservations. Para el contexto general del producto verapex-resumen.md.
Reservations
Citas, servicios, recursos y booking publico.
- Etapa: Produccion
- Landing:
/{orgId}/reservations/calendar
Modulos
| Modulo | Slug | Estado | Proposito |
|---|---|---|---|
| Calendar | calendar |
shipped | Calendario de citas. |
| Services | services |
shipped | Servicios reservables. |
| Resources | resources |
shipped | Recursos y disponibilidad. |
| Booking links | booking-links |
shipped | Links de reserva de staff. |
| Notifications | notifications |
shipped | Emails de confirmacion y reminder. |
| Booking publico | booking-publico |
public | Self-booking /b/{orgId}/{slug}. |
Funcionalidades internas
40 funcionalidades documentadas en 6 modulos. Ver la tabla de cada modulo.
id: booking-links app: reservations nombre: Booking links estado: shipped permiso: can_access_reservations
Booking links
Configura URLs públicas de reserva con servicios, formulario y presentación por enlace.
Para que sirve
- Una barbería comparte un enlace por cada profesional o servicio para captar citas sin intervención manual.
- Una clínica inserta su reserva en el sitio web con un formulario y políticas propias.
- Un coworking comparte una URL para reservar salas o todos los servicios disponibles.
Que lo hace diferente
- El enlace publica servicios y disponibilidad definidos dentro del calendario operativo de Apex.
- Cada reserva del enlace termina vinculada a un contacto CRM, no solo a una cuenta externa.
- Puede convivir con asistentes IA, automatizaciones y notificaciones de la organización.
- Permite seleccionar servicios, formulario y presentación por enlace.
Acceso
- Ruta principal:
/[orgId]/reservations/booking-links - Como se llega:
Header app switcher > Reservations > Booking Links - Permiso requerido:
can_access_reservations; gestión para propietarios y administradores.
Alcance tecnico
- Frontend:
BookingLinksManagement.tsx,BookingLinkEditorPage.tsxy secciones de editor. - Backend:
reservation-booking-linksypublic-reservation-booking. - Superficies publicas:
/b/[orgId]/[slug].
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Crear booking link | create-booking-link.md | Crea una URL pública. |
| Editar servicios incluidos | booking-link-services.md | Publica uno, varios o todos los servicios. |
| Configurar formulario | booking-link-form.md | Personaliza datos del cliente e identificación. |
| Personalizar contenido | booking-link-content.md | Edita hero, textos y políticas. |
| Personalizar tema | booking-link-theme.md | Define colores, medios y diseño. |
| Compartir e insertar | share-and-embed.md | Copia URL o iframe. |
| Activar, desactivar o eliminar | booking-link-lifecycle.md | Gestiona disponibilidad del enlace. |
Relaciones
- Depende de: Services.
- Usado por: Booking público.
Limitaciones y notas
- Solo servicios activos y públicos son visibles a visitantes.
id: booking-link-content modulo: booking-links app: reservations nombre: Contenido de booking link tipo: configuracion
Contenido de booking link
Define los textos que se muestran en la página pública y tras la confirmación.
Que se logra
- Resultado: Explica el servicio y las políticas que el visitante debe conocer antes de reservar.
- Caso de uso: Un coworking añade instrucciones de acceso y reglas de uso de salas.
- Se combina con: Booking público y Notifications.
Donde esta
- Ruta:
/[orgId]/reservations/booking-links/[bookingLinkId] - Acceso en UI: editor > pestañas de contenido.
- Componente(s):
BookingLinkEditorPage.tsx
Como funciona
- Edita título, subtítulo, descripción e instrucciones.
- Define el texto de agradecimiento y la política visible al final.
- Previsualiza antes de guardar.
Backend
- Servicios:
reservation-booking-links(patch).
Relaciones
- Afecta: contenido de
/b/[orgId]/[slug].
id: booking-link-form modulo: booking-links app: reservations nombre: Formulario de booking link tipo: configuracion
Formulario de booking link
Configura qué información solicita la página pública antes de confirmar una reserva.
Que se logra
- Resultado: Recoge los datos necesarios para identificar al visitante y crear una reserva completa.
- Caso de uso: Un spa solicita teléfono y preferencias antes de confirmar un tratamiento.
- Se combina con: Contacts, campos personalizados y Booking público.
Donde esta
- Ruta:
/[orgId]/reservations/booking-links/[bookingLinkId] - Acceso en UI: editor >
Form. - Componente(s):
BookingLinkCustomFieldsSection.tsx,BookingLinkEditorPage.tsx
Como funciona
- Activa o desactiva nombre, apellido, email, teléfono, asistentes y notas.
- Selecciona campos personalizados de contacto o reserva.
- Opcionalmente activa identificación previa por email o teléfono.
Reglas y validaciones
- Si se muestra algún dato de contacto, el visitante debe aportar al menos uno.
- Los campos personalizados obligatorios se validan antes de crear la reserva.
- La identificación devuelve datos solo si hay una coincidencia única.
Backend
- Servicios:
reservation-booking-links(patch),public-reservation-booking(create).
id: booking-link-lifecycle modulo: booking-links app: reservations nombre: Activar, desactivar o eliminar booking link tipo: accion
Activar, desactivar o eliminar booking link
Controla si un enlace acepta reservas y permite retirarlo del catálogo.
Que se logra
- Resultado: Controla cuándo un enlace deja de aceptar nuevas reservas.
- Caso de uso: Una clínica desactiva temporalmente un enlace durante un cambio de agenda.
- Se combina con: Booking público y Services.
Donde esta
- Ruta:
/[orgId]/reservations/booking-links - Acceso en UI: interruptor
Activeo icono de eliminación. - Componente(s):
BookingLinksManagement.tsx
Como funciona
- Activa o desactiva
Activepara controlar recepción de reservas. - Para retirarlo, selecciona eliminar y confirma.
Reglas y validaciones
- Un enlace inactivo responde como no disponible al visitante.
- La eliminación es lógica.
Backend
- Servicios:
reservation-booking-links(patch, remove),public-reservation-booking(get).
id: booking-link-services modulo: booking-links app: reservations nombre: Servicios incluidos en un booking link tipo: configuracion
Servicios incluidos en un booking link
Controla el catálogo que verá el visitante y su orden o agrupación.
Que se logra
- Resultado: Controla qué servicios verá y podrá seleccionar cada audiencia pública.
- Caso de uso: Una clínica comparte un enlace exclusivo para consultas iniciales.
- Se combina con: Services y Booking público.
Donde esta
- Ruta:
/[orgId]/reservations/booking-links/[bookingLinkId] - Acceso en UI: editor >
Basicsy secciones de servicios. - Componente(s):
BookingLinkEditorPage.tsx,BookingLinkServiceSectionsEditor.tsx
Como funciona
- Elige
all_services,selected_servicesosingle_service. - Para uno o varios, selecciona los servicios permitidos.
- Opcionalmente ordena o agrupa los servicios con títulos.
Reglas y validaciones
- El backend rechaza servicios fuera del alcance del enlace.
- Los visitantes solo ven servicios activos y públicos.
Backend
- Servicios:
reservation-booking-links(create, patch),public-reservation-booking(get, find).
id: booking-link-theme modulo: booking-links app: reservations nombre: Tema y marca de booking link tipo: configuracion
Tema y marca de booking link
Personaliza la apariencia del enlace público, incluidos logo, portada, colores y disposición.
Que se logra
- Resultado: Hace reconocible el enlace público con colores, imágenes y diseño de la organización.
- Caso de uso: Una clínica adapta el formulario de reserva a su identidad visual.
- Se combina con: Booking link content y Booking público.
Donde esta
- Ruta:
/[orgId]/reservations/booking-links/[bookingLinkId] - Acceso en UI: editor >
Hero & media,Logo layoutyTheme. - Componente(s):
BookingLinkEditorPage.tsx,BookingLinkColorField.tsx
Como funciona
- Añade logo y portada opcionales.
- Ajusta posición, forma, tamaño y estilo del logo.
- Configura tema, colores y presentación de la lista de servicios.
- Usa la vista previa para revisar el resultado.
Reglas y validaciones
- El enlace puede ocultar la atribución
Powered by AchieveApex.
Backend
- Servicios:
reservation-booking-links(patch).
id: create-booking-link modulo: booking-links app: reservations nombre: Crear booking link tipo: accion
Crear booking link
Crea una página pública para aceptar reservas.
Que se logra
- Resultado: Crea una dirección pública desde la que visitantes pueden iniciar una reserva.
- Caso de uso: Una barbería genera un enlace para que clientes reserven con el equipo.
- Se combina con: Services y Booking público.
Donde esta
- Ruta:
/[orgId]/reservations/booking-links/new - Acceso en UI:
Booking Links > New Booking Link. - Componente(s):
BookingLinkEditorPage.tsx
Como funciona
- Define nombre, slug, modo de servicios y estado.
- Completa las pestañas opcionales de formulario y diseño.
- Guarda con
Save.
Reglas y validaciones
- El slug se normaliza a minúsculas, números y guiones.
- Debe ser único dentro de la organización.
Backend
- Servicios:
reservation-booking-links(create).
id: share-and-embed modulo: booking-links app: reservations nombre: Compartir e insertar booking link tipo: accion
Compartir e insertar booking link
Entrega la URL pública o un iframe para mostrar el flujo de reserva en otro sitio.
Que se logra
- Resultado: Lleva el flujo de reserva a campañas, mensajes o sitios web mediante URL e iframe.
- Caso de uso: Una barbería inserta su agenda en su página de servicios.
- Se combina con: Booking público, Conversations y campañas.
Donde esta
- Ruta:
/[orgId]/reservations/booking-links - Acceso en UI: fila del enlace >
Share. - Componente(s):
BookingLinksManagement.tsx
Como funciona
- Abre
Shareen un enlace. - Selecciona
Direct linkoiframe. - Copia el contenido y pégalo donde se necesite.
Reglas y validaciones
- El iframe abre la página con el parámetro
embed=true.
Backend
- Servicios: no necesita una operación adicional; la URL usa Booking público.
id: booking-publico app: reservations nombre: Booking publico estado: public permiso: ninguno
Booking publico
Permite a visitantes reservar desde una URL sin iniciar sesión.
Para que sirve
- Una clínica permite que pacientes soliciten una consulta desde una URL sin crear una cuenta.
- Una barbería capta citas desde un enlace o iframe y muestra solo horarios disponibles.
- Un coworking recibe reservas de salas y las incorpora al calendario de su equipo.
Que lo hace diferente
- La reserva pública crea o identifica al contacto dentro del CRM de Apex.
- Los horarios se calculan con servicios, recursos, disponibilidad y excepciones reales.
- La confirmación puede activar los correos organizacionales y automatizaciones de reserva.
- El asistente IA puede operar sobre la misma disponibilidad y crear reservas cuando tiene las herramientas habilitadas.
Acceso
- Ruta principal:
/b/[orgId]/[slug] - Como se llega: URL compartida o iframe del booking link.
- Permiso requerido: ninguno.
Alcance tecnico
- Frontend: página pública de booking.
- Backend:
public-reservation-booking,reservation-available-slotsyreservations. - Superficies publicas: página, consulta de slots y creación de reserva.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Elegir servicio | select-service.md | Muestra los servicios permitidos. |
| Elegir fecha y horario | select-slot.md | Consulta disponibilidad mensual y slots. |
| Identificar contacto | identify-contact.md | Precarga por email o teléfono si está activado. |
| Confirmar reserva | confirm-public-booking.md | Crea contacto y reserva pública. |
| Confirmación y calendario | booking-confirmation.md | Muestra resumen y opciones de calendario. |
Relaciones
- Depende de: Booking links, Services y Resources.
- Dispara / afecta: Calendar, Contactos y Notifications.
Limitaciones y notas
- El enlace debe estar activo; los servicios deben ser activos y públicos.
- El flujo público no expone una pantalla para gestionar o cancelar una reserva después de confirmarla.
id: booking-confirmation modulo: booking-publico app: reservations nombre: Confirmación y calendario del visitante tipo: publico
Confirmación y calendario del visitante
Muestra el resultado de una reserva creada y permite añadirla al calendario personal.
Que se logra
- Resultado: Entrega un resumen final para que el visitante conozca los datos de su reserva.
- Caso de uso: Un paciente guarda la confirmación de su consulta después de reservar.
- Se combina con: Notifications y Calendar.
Donde esta
- Ruta:
/b/[orgId]/[slug] - Acceso en UI: pantalla posterior a
Confirm booking. - Componente(s): página pública de booking.
Como funciona
- Muestra el mensaje de agradecimiento y resumen del servicio, fecha y hora.
- El visitante puede abrir Google Calendar u Outlook.
- También puede descargar un archivo
ICS.
Reglas y validaciones
- La sección aparece solo cuando hay un horario confirmado.
Backend
- Servicios:
public-reservation-booking(create).
Relaciones
- Afecta: calendario externo del visitante.
id: confirm-public-booking modulo: booking-publico app: reservations nombre: Confirmar reserva pública tipo: publico
Confirmar reserva pública
Recoge los datos configurados y crea la reserva desde el enlace público.
Que se logra
- Resultado: Convierte la elección pública en una reserva vinculada al contacto correspondiente.
- Caso de uso: Un visitante confirma una cita de barbería desde un enlace compartido.
- Se combina con: Calendar, Contacts y Notifications.
Donde esta
- Ruta:
/b/[orgId]/[slug] - Acceso en UI: paso
Details>Confirm booking. - Componente(s): página pública de booking.
Como funciona
- Completa los datos de contacto, asistentes, notas y campos personalizados visibles.
- Confirma la reserva.
- El sistema vincula un contacto existente o crea uno nuevo y crea la cita.
Reglas y validaciones
- Debe aportarse al menos un detalle de contacto cuando alguno es visible.
- El tamaño de grupo se limita al máximo del servicio.
- Solo se aceptan campos personalizados configurados en el enlace.
Backend
- Servicios:
public-reservation-booking(create),contacts(find, create, patch),reservations(create). - Efectos: asignación de recursos, notificaciones y automatizaciones.
id: identify-contact modulo: booking-publico app: reservations nombre: Identificar contacto antes de reservar tipo: publico
Identificar contacto antes de reservar
Puede solicitar email o teléfono primero para recuperar datos de un contacto existente.
Que se logra
- Resultado: Reconoce un contacto existente y evita pedir de nuevo datos ya conocidos cuando la coincidencia es única.
- Caso de uso: Un cliente recurrente de un spa se identifica con su correo antes de reservar.
- Se combina con: Contacts y Booking público.
Donde esta
- Ruta:
/b/[orgId]/[slug] - Acceso en UI: paso
Identify, si está configurado en el enlace. - Componente(s): página pública de booking.
Como funciona
- El visitante aporta email o teléfono según la configuración.
- El sistema busca una coincidencia exacta.
- Si existe una sola coincidencia, completa datos y continúa.
Reglas y validaciones
- La identificación debe estar habilitada por el booking link.
- Se rechaza una búsqueda ambigua, datos inválidos o el tipo de dato no esperado.
Backend
- Servicios:
public-reservation-booking(create).
id: select-service modulo: booking-publico app: reservations nombre: Elegir servicio público tipo: publico
Elegir servicio público
Permite al visitante elegir una oferta autorizada por el booking link.
Que se logra
- Resultado: Guía al visitante para elegir una oferta habilitada en el enlace.
- Caso de uso: Un cliente de una barbería selecciona el corte que desea agendar.
- Se combina con: Services y Booking links.
Donde esta
- Ruta:
/b/[orgId]/[slug] - Acceso en UI: primer paso de la página pública.
- Componente(s): página pública de booking.
Como funciona
- Carga el enlace activo y sus servicios visibles.
- El visitante selecciona un servicio.
- Si hay un único servicio, se omite este paso.
Reglas y validaciones
- El modo del enlace puede publicar un servicio, servicios seleccionados o todos.
- Solo aparecen servicios activos y públicos.
Backend
- Servicios:
public-reservation-booking(get).
id: select-slot modulo: booking-publico app: reservations nombre: Elegir fecha y horario tipo: publico
Elegir fecha y horario
Muestra los días y horarios disponibles para el servicio elegido.
Que se logra
- Resultado: Muestra solo horarios calculados como disponibles para el servicio elegido.
- Caso de uso: Un paciente selecciona una consulta entre las franjas libres de la clínica.
- Se combina con: Resources, disponibilidad y Calendar.
Donde esta
- Ruta:
/b/[orgId]/[slug] - Acceso en UI: paso
Schedule. - Componente(s): página pública de booking.
Como funciona
- El visitante navega el calendario mensual.
- Selecciona un día disponible.
- Elige un horario libre y continúa.
Reglas y validaciones
- Las fechas pasadas y los días sin disponibilidad no pueden seleccionarse.
- Los slots aplican reglas de servicio, recursos, excepciones, capacidad y solapes.
Backend
- Servicios:
public-reservation-booking(find),reservation-available-slots(find).
id: calendar app: reservations nombre: Calendario de reservas estado: shipped permiso: can_access_reservations
Calendario de reservas
Consulta y administra las reservas de la organización desde CRM o desde la app Reservations.
Para que sirve
- Una clínica agenda y reprograma consultas vinculadas al paciente y al profesional disponible.
- Una barbería administra citas del equipo desde un calendario compartido y evita saturar recursos.
- Un coworking organiza reservas de salas con contactos, empresas y oportunidades del CRM.
- Un gimnasio programa clases o sesiones y controla cancelaciones, ausencias y completadas.
Que lo hace diferente
- Cada reserva se relaciona con un contacto, empresa u oportunidad del CRM de Apex.
- El asistente IA puede consultar disponibilidad y crear reservas mediante sus herramientas internas habilitadas.
- Las reservas y cambios de estado pueden disparar automatizaciones y correos de la organización.
- La disponibilidad considera servicios, recursos y sus excepciones, no solo un calendario personal.
Acceso
- Ruta principal:
/[orgId]/reservations/calendar - Como se llega:
Header app switcher > Reservations > Reservations - Permiso requerido:
can_access_reservations; las acciones dependen de los permisos granulares de Reservations.
Alcance tecnico
- Frontend:
ReservationsView.tsx,ReservationsCalendarView.tsxyReservationFormDialog.tsx. - Backend:
reservations,reservation-available-slotsyreservations-bulk-actions. - Superficies publicas: ninguna.
- Integraciones externas: Automatizaciones y emails de reservas.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Vistas del calendario | calendar-views.md | Vistas Month, Week y Day. |
| Buscar y filtrar reservas | reservation-filters.md | Filtra por texto y estado. |
| Crear reserva manual | create-manual-reservation.md | Registra una cita desde el calendario o un registro CRM. |
| Editar y reprogramar reserva | edit-reservation.md | Cambia datos, recurso o horario. |
| Cambiar estado de reserva | reservation-statuses.md | Gestiona el ciclo operativo de una cita. |
| Cancelar reserva | cancel-reservation.md | Cancela desde la ficha de la reserva. |
| Eliminar reserva | delete-reservation.md | Quita una reserva mediante borrado lógico. |
| Acciones masivas | bulk-actions.md | Aplica acciones a varias reservas. |
| Reserva vinculada al CRM | crm-linked-reservations.md | Vincula contacto, empresa y deal. |
| Asignación de recursos | reservation-resource-assignment.md | Valida y asigna recursos al crear. |
| Asistente de configuración | setup-wizard.md | Prepara el flujo de reservas públicas. |
| Guía de configuración | setup-guide.md | Ofrece ayuda integrada de Reservations. |
Relaciones
- Depende de: Services, Resources, Contactos y campos personalizados.
- Usado por: Booking público, Automatizaciones y notificaciones.
Limitaciones y notas
- La app abre en
Week; CRM conserva/[orgId]/reservations. - Las reservas canceladas, completadas y
no_showno ocupan capacidad.
id: bulk-actions modulo: calendar app: reservations nombre: Acciones masivas de reservas tipo: accion
Acciones masivas de reservas
Permite procesar un conjunto de reservas desde la operación de acciones masivas.
Que se logra
- Resultado: Asigna en conjunto reservas a un responsable mediante una sola operación.
- Caso de uso: Una clínica asigna las citas de una jornada a la recepcionista que las gestionará.
- Se combina con: Calendar y permisos de Reservations.
Donde esta
- Ruta:
/[orgId]/reservations - Acceso en UI: selección de reservas en la vista de lista.
- Componente(s):
ReservationsView.tsx
Como funciona
- Selecciona reservas o aplica un filtro.
- Elige una acción disponible y confirma.
Reglas y validaciones
- La operación valida que quien la ejecuta sea propietario o administrador.
Backend
- Servicios:
reservations-bulk-actions(create).
Notas
- La acción masiva disponible es
assign; puede aplicarse a reservas seleccionadas o al conjunto definido por el filtro.
id: calendar-views modulo: calendar app: reservations nombre: Vistas del calendario tipo: vista
Vistas del calendario
Muestra las reservas por mes, semana o día y permite navegar entre periodos.
Que se logra
- Resultado: Visualiza la agenda en la escala adecuada para coordinar operación y disponibilidad.
- Caso de uso: Una clínica cambia entre día, semana y mes para distribuir la agenda de sus profesionales.
- Se combina con: Services y Resources.
Donde esta
- Ruta:
/[orgId]/reservations/calendar - Acceso en UI:
Month,Week,Day, flechas yToday - Componente(s):
ReservationsCalendarView.tsx
Como funciona
- El calendario abre en
Week. - El usuario cambia la vista, navega el periodo o vuelve a hoy.
- Las reservas muestran hora, contacto, servicio y color de estado.
Reglas y validaciones
- En semana y día, la cuadrícula distingue
:00y:30; un clic en cada mitad crea una cita en esa hora. - En mes se muestran tres reservas por día y el resto como contador.
Backend
- Servicios:
reservations(find).
Relaciones
- Requiere: Calendar de Reservations.
- Dispara / afecta: creación y edición de reservas.
id: cancel-reservation modulo: calendar app: reservations nombre: Cancelar reserva tipo: accion
Cancelar reserva
Cancela una cita conservando su historial operativo.
Que se logra
- Resultado: Cancela una cita y libera el cupo que ocupaba en la agenda.
- Caso de uso: Una clínica cancela una consulta solicitada por el paciente.
- Se combina con: Calendar, Resources y Notifications.
Donde esta
- Ruta:
/[orgId]/reservations/calendar - Acceso en UI: reserva >
Actions>Cancel. - Componente(s):
ReservationFormDialog.tsx
Como funciona
- Abre la reserva.
- Selecciona
Cancel. - La cita pasa a estado cancelado.
Reglas y validaciones
- Las reservas canceladas dejan de participar en los cálculos de capacidad y solapes.
Backend
- Servicios:
reservations(patch). - Efectos: puede enviar notificaciones y activar automatizaciones de actualización.
id: create-manual-reservation modulo: calendar app: reservations nombre: Crear reserva manual tipo: accion
Crear reserva manual
Registra una cita para un contacto desde el calendario o desde un registro CRM.
Que se logra
- Resultado: Registra una cita válida con servicio, contacto, horario y recursos disponibles.
- Caso de uso: Una clínica agenda por teléfono una consulta para un paciente ya registrado.
- Se combina con: Contacts, Services y Resources.
Donde esta
- Ruta:
/[orgId]/reservations/calendar - Acceso en UI:
New Reservationo un espacio vacío del calendario. - Componente(s):
ReservationFormDialog.tsx
Como funciona
- Selecciona servicio, contacto y fecha.
- Elige un horario disponible y, si aplica, un recurso preferido.
- Añade tamaño de grupo, notas y campos personalizados.
- Confirma con
Create Reservation.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Servicio | selector | Sí | Determina duración y disponibilidad. |
| Contacto | selector | Sí | Puede acompañarse de empresa o deal. |
| Fecha y horario | fecha/selector | Sí | Solo se muestran horarios disponibles. |
| Recurso preferido | selector | No | Disponible si el servicio tiene recursos. |
| Notas y campos personalizados | texto | No | Incluye notas internas. |
Reglas y validaciones
- No permite fechas pasadas, exceder el tamaño máximo de grupo ni reservar fuera de los límites del servicio.
- Puede confirmar automáticamente según el servicio.
Backend
- Servicios:
reservation-available-slots(find),reservations(create). - Efectos: asigna recursos, puede enviar emails y dispara automatizaciones.
Relaciones
- Requiere: un servicio activo y un contacto.
id: crm-linked-reservations modulo: calendar app: reservations nombre: Reserva vinculada al CRM tipo: integracion
Reserva vinculada al CRM
Asocia una reserva con el contacto obligatorio y, opcionalmente, con una empresa o deal.
Que se logra
- Resultado: Conserva el contexto comercial y relacional de la persona al gestionar su cita.
- Caso de uso: Un coworking vincula la visita de un prospecto con su empresa y oportunidad.
- Se combina con: Contacts, Companies y Deals.
Donde esta
- Ruta:
/[orgId]/reservations - Acceso en UI:
New Reservationdesde el calendario o los paneles de contactos, empresas y deals. - Componente(s):
ReservationFormDialog.tsx,RelatedEntitySelector
Como funciona
- Selecciona el contacto.
- Opcionalmente relaciona empresa y deal.
- Al abrirse desde un registro CRM, la relación se precarga.
Reglas y validaciones
- No se puede guardar sin contacto.
Backend
- Servicios:
contacts,companies,deals,reservations(create, patch).
Relaciones
- Usado por: detalle de contactos, empresas, deals y conversaciones.
id: delete-reservation modulo: calendar app: reservations nombre: Eliminar reserva tipo: accion
Eliminar reserva
Retira una reserva desde el diálogo de edición tras solicitar confirmación.
Que se logra
- Resultado: Retira una reserva de forma lógica para que deje de aparecer en la operación.
- Caso de uso: Un equipo elimina un registro de prueba creado durante la configuración.
- Se combina con: Calendar y registros CRM.
Donde esta
- Ruta:
/[orgId]/reservations/calendar - Acceso en UI: reserva >
Actions>Delete. - Componente(s):
ReservationFormDialog.tsx
Como funciona
- Abre una reserva existente.
- Selecciona
Deletey confirma.
Reglas y validaciones
- La eliminación usa el borrado lógico global; no es una eliminación física.
Backend
- Servicios:
reservations(remove).
Relaciones
- Afecta: calendario y disponibilidad futura.
id: edit-reservation modulo: calendar app: reservations nombre: Editar y reprogramar reserva tipo: accion
Editar y reprogramar reserva
Permite ajustar los datos, horario y relaciones de una reserva existente.
Que se logra
- Resultado: Actualiza una cita sin perder su vínculo con el contacto y la operación.
- Caso de uso: Un spa reprograma el tratamiento de un cliente cuando cambia su disponibilidad.
- Se combina con: Calendar, Resources y Notifications.
Donde esta
- Ruta:
/[orgId]/reservations/calendar - Acceso en UI: clic sobre una reserva >
Update Reservation. - Componente(s):
ReservationFormDialog.tsx
Como funciona
- Abre una reserva en calendario o lista.
- Cambia servicio, contacto, fecha, horario, recurso o notas.
- Guarda con
Update Reservation.
Reglas y validaciones
- Al mover la fecha u hora se vuelve a calcular el final y se restablece el registro de recordatorios enviados.
- El selector deja conservar el horario original incluso si aparece ocupado al editar.
Backend
- Servicios:
reservations(get, patch),reservation-available-slots(find). - Efectos: puede reenviar notificaciones y dispara la automatización de actualización.
Relaciones
- Afecta: disponibilidad, recursos asignados y recordatorios.
id: reservation-filters modulo: calendar app: reservations nombre: Buscar y filtrar reservas tipo: vista
Buscar y filtrar reservas
Reduce la lista o calendario a reservas que coinciden con texto y estado.
Que se logra
- Resultado: Encuentra rápidamente reservas relevantes por su estado o información asociada.
- Caso de uso: Una barbería localiza las citas pendientes de confirmar antes de abrir.
- Se combina con: Calendar y contactos CRM.
Donde esta
- Ruta:
/[orgId]/reservations/calendar - Acceso en UI: controles de búsqueda y estado de Reservations.
- Componente(s):
ReservationsView.tsx,ReservationsCalendarView.tsx
Como funciona
- Escribe un término de búsqueda o selecciona un estado.
- La vista recarga las reservas del periodo actual ordenadas por hora.
Reglas y validaciones
- El filtro de estado admite
pending,confirmed,cancelled,completedyno_show. - La búsqueda se procesa en el servicio de reservas.
Backend
- Servicios:
reservations(find). - Hooks relevantes: búsqueda y rango de fechas.
Relaciones
- Requiere: reservas existentes.
id: reservation-resource-assignment modulo: calendar app: reservations nombre: Asignación de recursos en reservas tipo: automatizacion
Asignación de recursos en reservas
Comprueba recursos vinculados y los asigna después de crear una reserva.
Que se logra
- Resultado: Reserva los recursos necesarios y evita aceptar un horario incompatible.
- Caso de uso: Un spa asigna simultáneamente una cabina y una terapeuta al tratamiento.
- Se combina con: Services, Resources y disponibilidad.
Donde esta
- Ruta:
/[orgId]/reservations/calendar - Acceso en UI: selección de recurso preferido en
New Reservation. - Componente(s):
ReservationFormDialog.tsx
Como funciona
- El sistema revisa los recursos asociados al servicio.
- Evalúa horario semanal, fechas bloqueadas, capacidad y solapes.
- Para recursos de tipo disponible, encuentra uno activo del mismo tipo.
- Crea la reserva y registra los recursos elegidos.
Reglas y validaciones
- Un recurso requerido sin disponibilidad bloquea la reserva; uno opcional no.
- La reserva puede solicitar un recurso preferido.
Backend
- Servicios:
reservation-service-resources,reservation-resources,reservation-resource-availability,reservation-resource-exceptions,reservation-assigned-resources. - Hooks relevantes: validación de disponibilidad y asignación automática.
id: reservation-statuses modulo: calendar app: reservations nombre: Cambiar estado de reserva tipo: accion
Cambiar estado de reserva
Controla el estado operativo de una cita desde su menú de acciones.
Que se logra
- Resultado: Refleja si una cita se confirmó, completó, canceló o quedó como ausencia.
- Caso de uso: Un gimnasio marca una sesión a la que el cliente no asistió para liberar seguimiento.
- Se combina con: Automatizaciones y Notifications.
Donde esta
- Ruta:
/[orgId]/reservations/calendar - Acceso en UI: reserva >
Actions. - Componente(s):
ReservationFormDialog.tsx
Como funciona
- Abre la reserva.
- Selecciona
Confirm,Mark Completed,Mark No Show,CanceloPending. - El calendario se actualiza con el nuevo estado.
Reglas y validaciones
- Al cancelar se identifica la cancelación como realizada por la organización.
- Al volver a un estado no cancelado se limpia la información de cancelación.
Backend
- Servicios:
reservations(patch). - Efectos: puede enviar emails y dispara automatizaciones de actualización.
id: setup-guide modulo: calendar app: reservations nombre: Guía de configuración de reservas tipo: vista
Guía de configuración de reservas
Proporciona documentación integrada para configurar servicios, recursos y enlaces públicos.
Que se logra
- Resultado: Orienta al equipo para completar la configuración antes de compartir un enlace público.
- Caso de uso: Un coworking revisa los pasos necesarios para empezar a recibir reservas de salas.
- Se combina con: Setup wizard, Services y Resources.
Donde esta
- Ruta:
/[orgId]/reservations/documentation - Acceso en UI:
Reservations > Setup Guide. - Componente(s):
ReservationDocumentation.tsx
Como funciona
- Abre la guía desde la barra lateral o desde las páginas de catálogos.
- Consulta las explicaciones de servicio, capacidad, recursos y booking links.
Backend
- Servicios: no requiere un servicio específico.
Relaciones
- Requiere: app Reservations.
id: setup-wizard modulo: calendar app: reservations nombre: Asistente de configuración tipo: configuracion
Asistente de configuración
Guía a propietarios y administradores para dejar Reservations listo para aceptar reservas.
Que se logra
- Resultado: Deja lista una cadena mínima para aceptar reservas públicas.
- Caso de uso: Una barbería configura servicio, horarios, recursos y enlace de reserva por primera vez.
- Se combina con: Services, Resources y Booking links.
Donde esta
- Ruta:
/[orgId]/reservations/setup - Acceso en UI:
Reservations > Setup. - Componente(s):
ReservationSetupView.tsx
Como funciona
- Crea al menos un servicio activo.
- Añade y vincula recursos o reconoce el horario predeterminado de 8:00 AM–6:00 PM.
- Define horas semanales para cada recurso vinculado.
- Crea un booking link activo.
Reglas y validaciones
- El avance se calcula con los servicios existentes y no se guarda como estado independiente.
- La confirmación de horario predeterminado dura solo la sesión del navegador.
Backend
- Servicios:
reservation-services,reservation-resources,reservation-service-resources,reservation-resource-availability,reservation-booking-links.
Relaciones
- Requiere: Services, Resources y Booking links.
id: notifications app: reservations nombre: Notifications estado: shipped permiso: can_access_reservations
Notificaciones de reservas
Configura correos organizacionales de confirmación, aviso al personal y recordatorios de reservas.
Para que sirve
- Una clínica confirma citas y reduce ausencias con recordatorios previos.
- Un spa avisa a cada profesional cuando recibe una reserva asociada.
- Un gimnasio comunica cambios de reserva con plantillas organizacionales.
Que lo hace diferente
- Los correos usan los datos reales de la reserva, el servicio y el contacto CRM.
- Los recordatorios los ejecuta la organización desde Apex, junto con el calendario operativo.
- Para recorridos más complejos, los cambios de reserva se conectan con Automatizaciones y sus canales.
Acceso
- Ruta principal:
/[orgId]/reservations/settings - Como se llega:
Header app switcher > Reservations > Notifications - Permiso requerido:
can_access_reservations; configuración para propietarios y administradores.
Alcance tecnico
- Frontend:
ReservationNotificationsSettingsView.tsx. - Backend:
organization-reservations-settings,reservationsycron-reservation-reminders. - Integraciones externas: AWS SES y Email Builder.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Confirmación al cliente | confirmation-email.md | Activa y diseña el email posterior a la reserva. |
| Aviso al personal | staff-notification.md | Notifica recursos de persona vinculados a usuarios. |
| Recordatorios | reservation-reminders.md | Configura hasta tres avisos previos. |
| Plantillas y vista previa | email-templates-preview.md | Selecciona Email Builder y revisa el resultado. |
Relaciones
- Depende de: Email Builder y datos de contacto.
- Usado por: Calendar y Booking público.
Limitaciones y notas
- La configuración aplica a toda la organización, no a un booking link.
- WhatsApp y SMS personalizados se gestionan con Automatizaciones.
id: confirmation-email modulo: notifications app: reservations nombre: Email de confirmación al cliente tipo: configuracion
Email de confirmación al cliente
Activa o desactiva el email que se envía al contacto al crear o actualizar una reserva.
Que se logra
- Resultado: Envía al cliente una confirmación con la información útil de su cita.
- Caso de uso: Una clínica confirma la hora y servicio de una consulta recién reservada.
- Se combina con: Calendar y Booking público.
Donde esta
- Ruta:
/[orgId]/reservations/settings - Acceso en UI:
Notifications > Guest confirmation. - Componente(s):
ReservationNotificationsSettingsView.tsx
Como funciona
- Activa
Guest confirmation. - Selecciona diseño predeterminado o personalizado.
- Añade una nota y guarda con
Save.
Reglas y validaciones
- Un diseño personalizado exige una plantilla seleccionada.
Backend
- Servicios:
organization-reservations-settings(find, create),reservations(create, patch). - Efectos: envía correo después de crear o actualizar.
id: email-templates-preview modulo: notifications app: reservations nombre: Plantillas y vista previa de emails tipo: configuracion
Plantillas y vista previa de emails
Permite elegir el diseño estándar o uno de Email Builder y revisar el remitente, asunto y cuerpo.
Que se logra
- Resultado: Permite elegir y revisar el contenido que recibirá cada destinatario.
- Caso de uso: Un gimnasio verifica el diseño de sus avisos antes de activarlos.
- Se combina con: Email Builder y Notifications.
Donde esta
- Ruta:
/[orgId]/reservations/settings - Acceso en UI:
Guest confirmationoReminders>Default email/Custom design. - Componente(s):
ReservationNotificationsSettingsView.tsx
Como funciona
- Elige
Default emailoCustom design. - En diseño personalizado, selecciona o crea una plantilla.
- Añade una nota adicional y revisa el preview antes de guardar.
Reglas y validaciones
- La nota se inserta en el diseño predeterminado; en un diseño personalizado se usa la etiqueta
{{extra_note}}o se añade al inicio.
Backend
- Servicios:
email-builder-templates(find),email-builder-render(create),organization-reservations-settings(create). - Integraciones externas: AWS SES.
id: reservation-reminders modulo: notifications app: reservations nombre: Recordatorios de reserva tipo: automatizacion
Recordatorios de reserva
Programa hasta tres correos previos a una cita.
Que se logra
- Resultado: Reduce ausencias al programar avisos antes de la hora reservada.
- Caso de uso: Una clínica recuerda una consulta con antelación para disminuir inasistencias.
- Se combina con: Calendar y confirmation email.
Donde esta
- Ruta:
/[orgId]/reservations/settings - Acceso en UI:
Notifications > Reminders. - Componente(s):
ReservationNotificationsSettingsView.tsx
Como funciona
- Añade hasta tres recordatorios.
- Define cantidad y unidad: minutos, horas, días o semanas.
- Selecciona diseño y guarda.
Reglas y validaciones
- La configuración inicial contiene 24 horas y 1 hora.
- Solo se recuerdan reservas pendientes o confirmadas con contacto que tenga email.
- Reprogramar una reserva permite calcular recordatorios nuevamente.
Backend
- Servicios:
organization-reservations-settings(create),cron-reservation-reminders(create). - Efectos: el cron procesa el envío y evita duplicados.
id: staff-notification modulo: notifications app: reservations nombre: Aviso al personal asignado tipo: configuracion
Aviso al personal asignado
Envía el email predeterminado a recursos de tipo persona que tienen un usuario vinculado.
Que se logra
- Resultado: Avisa al integrante responsable cuando una reserva le afecta.
- Caso de uso: Un spa notifica a la terapeuta al recibir una nueva cita.
- Se combina con: Resources y Calendar.
Donde esta
- Ruta:
/[orgId]/reservations/settings - Acceso en UI:
Notifications > Staff notifications. - Componente(s):
ReservationNotificationsSettingsView.tsx
Como funciona
- Activa o desactiva
Staff notifications. - Revisa la vista previa del email del sistema.
- Guarda los cambios.
Backend
- Servicios:
organization-reservations-settings(create),reservations(create, patch). - Efectos: correo transaccional al personal asignado.
id: resources app: reservations nombre: Resources estado: shipped permiso: can_access_reservations
Recursos de reservas
Administra personas, espacios, equipos y otros recursos que entregan servicios reservables.
Para que sirve
- Una clínica asigna consultorios y profesionales con horarios y cierres específicos.
- Un spa administra cabinas, terapeutas y equipos para no prometer el mismo recurso dos veces.
- Un coworking bloquea festivos o define horarios especiales para salas y espacios compartidos.
Que lo hace diferente
- La disponibilidad combina recursos, horarios semanales y excepciones de fecha.
- Un recurso puede asociarse a varios servicios y participa en la validación de disponibilidad.
- Los recursos respaldan reservas CRM, booking público y las consultas del asistente IA.
Acceso
- Ruta principal:
/[orgId]/reservations/resources - Como se llega:
Header app switcher > Reservations > Resources - Permiso requerido:
can_access_reservations; catálogo para propietarios y administradores.
Alcance tecnico
- Frontend:
ReservationSettingsView.tsx,ImportResourcesDialog.tsxy diálogos de recursos. - Backend:
reservation-resources,reservation-resource-availability,reservation-resource-exceptions.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Crear recurso | create-resource.md | Añade un recurso al catálogo. |
| Editar recurso | edit-resource.md | Actualiza sus datos y estado. |
| Eliminar recurso | delete-resource.md | Lo retira mediante borrado lógico. |
| Disponibilidad semanal | weekly-availability.md | Configura franjas por día. |
| Excepciones de fecha | resource-exceptions.md | Bloquea fechas o define horarios especiales. |
| Importar recursos | import-resources.md | Importa Excel con horarios y excepciones. |
| Calendario por recurso | resource-calendar.md | Consulta las reservas de un recurso. |
Relaciones
- Depende de: Services para vincularlos.
- Usado por: Calendar y Booking público.
Limitaciones y notas
- Las excepciones pueden aplicarse a un recurso o a toda la organización.
id: create-resource modulo: resources app: reservations nombre: Crear recurso tipo: accion
Crear recurso
Añade una persona, sala, equipo, vehículo u otro elemento reservable.
Que se logra
- Resultado: Añade la capacidad real que debe validarse antes de confirmar una reserva.
- Caso de uso: Un coworking registra una sala para empezar a ofrecerla en su agenda.
- Se combina con: Services y Calendar.
Donde esta
- Ruta:
/[orgId]/reservations/resources - Acceso en UI:
Add Resource. - Componente(s):
ResourceFormDialog
Como funciona
- Abre
Add Resource. - Define nombre, tipo, capacidad y opciones visuales.
- Guarda el recurso.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Nombre y tipo | texto/selector | Sí | Tipos: persona, sala, equipo, vehículo u otro. |
| Capacidad | número | No | Predeterminado: 1. |
| Descripción, color y estado | configuración | No | Aparecen en la gestión. |
Backend
- Servicios:
reservation-resources(create).
id: delete-resource modulo: resources app: reservations nombre: Eliminar recurso tipo: accion
Eliminar recurso
Quita un recurso del catálogo de Reservations.
Que se logra
- Resultado: Retira un recurso que dejó de operar sin borrar el historial de reservas.
- Caso de uso: Una clínica da de baja un consultorio que ya no utiliza.
- Se combina con: Services y Calendar.
Donde esta
- Ruta:
/[orgId]/reservations/resources - Acceso en UI: fila del recurso > icono de eliminación.
- Componente(s):
ReservationSettingsView.tsx
Como funciona
- Selecciona eliminar y confirma.
Reglas y validaciones
- La eliminación es lógica.
Backend
- Servicios:
reservation-resources(remove).
id: edit-resource modulo: resources app: reservations nombre: Editar recurso tipo: configuracion
Editar recurso
Actualiza el nombre, tipo, capacidad y disponibilidad comercial de un recurso.
Que se logra
- Resultado: Mantiene actualizados los datos y estado operativo de un recurso.
- Caso de uso: Un spa inactiva temporalmente una cabina en mantenimiento.
- Se combina con: Services, Calendar y Booking público.
Donde esta
- Ruta:
/[orgId]/reservations/resources - Acceso en UI: fila del recurso > icono de edición.
- Componente(s):
ResourceFormDialog
Como funciona
- Abre un recurso del catálogo.
- Ajusta sus opciones y guarda.
Reglas y validaciones
- Solo recursos activos participan al buscar una alternativa disponible.
Backend
- Servicios:
reservation-resources(patch).
id: import-resources modulo: resources app: reservations nombre: Importar recursos desde Excel tipo: accion
Importar recursos desde Excel
Importa recursos y, opcionalmente, sus horarios semanales y excepciones desde un libro Excel.
Que se logra
- Resultado: Carga en lote recursos, horarios y excepciones desde un archivo de Excel.
- Caso de uso: Una red de clínicas incorpora decenas de consultorios y agendas al iniciar operaciones.
- Se combina con: Resources, disponibilidad semanal y excepciones.
Donde esta
- Ruta:
/[orgId]/reservations/resources - Acceso en UI:
Import. - Componente(s):
ImportResourcesDialog.tsx
Como funciona
- Sube un archivo Excel o descarga
Template. - Mapea las columnas de recursos.
- Si existen, mapea hojas de disponibilidad y excepciones.
- Ejecuta la importación y revisa resultados.
Reglas y validaciones
- Se requiere la hoja Resources; Availability y Exceptions son opcionales.
- Se crean lotes de 10 con pausas entre lotes.
- Nombre y tipo de recurso son obligatorios.
Backend
- Servicios:
reservation-resources,reservation-resource-availability,reservation-resource-exceptions(create).
Notas
- El procesamiento ocurre en el navegador; no existe servicio de importación dedicado.
id: resource-calendar modulo: resources app: reservations nombre: Calendario por recurso tipo: vista
Calendario por recurso
Abre una vista de calendario para consultar la ocupación de un recurso.
Que se logra
- Resultado: Muestra cuándo un recurso está ocupado, disponible o afectado por excepciones.
- Caso de uso: Un coworking revisa el mes de una sala antes de asignarla a una reserva especial.
- Se combina con: Calendar, Services y Resources.
Donde esta
- Ruta:
/[orgId]/reservations/resources - Acceso en UI: clic sobre el nombre del recurso.
- Componente(s):
ResourceCalendarDialog
Como funciona
- Selecciona el nombre de un recurso en el listado.
- Revisa su calendario en un diálogo.
Backend
- Servicios:
reservations,reservation-assigned-resources.
Notas
- El diálogo muestra un mes por vez e incluye la disponibilidad, excepciones y reservas activas asociadas al recurso.
id: resource-exceptions modulo: resources app: reservations nombre: Excepciones de disponibilidad tipo: configuracion
Excepciones de disponibilidad
Registra fechas bloqueadas, horarios especiales o días festivos para un recurso o toda la organización.
Que se logra
- Resultado: Resuelve cierres, festivos y horarios especiales sin alterar la agenda habitual.
- Caso de uso: Un coworking bloquea una sala durante un festivo o mantenimiento.
- Se combina con: Weekly availability y Calendar.
Donde esta
- Ruta:
/[orgId]/reservations/resources - Acceso en UI: fila del recurso > icono de calendario.
- Componente(s):
ExceptionsDialog
Como funciona
- Abre las excepciones de un recurso.
- Crea o edita una excepción de fecha.
- Guarda o elimina la excepción.
Reglas y validaciones
- Las excepciones bloqueadas de alcance organizacional también bloquean el recurso.
Backend
- Servicios:
reservation-resource-exceptions(find, create, patch, remove). - Efectos: bloquea la disponibilidad del slot.
id: weekly-availability modulo: resources app: reservations nombre: Disponibilidad semanal de recursos tipo: configuracion
Disponibilidad semanal de recursos
Define las franjas recurrentes en que un recurso puede atender reservas.
Que se logra
- Resultado: Establece las franjas regulares en las que un recurso puede atender reservas.
- Caso de uso: Una barbería define el horario semanal de cada profesional.
- Se combina con: Resources, Services y Booking público.
Donde esta
- Ruta:
/[orgId]/reservations/resources - Acceso en UI: fila del recurso > icono de reloj.
- Componente(s):
AvailabilityDialog
Como funciona
- Abre la disponibilidad de un recurso.
- Añade, ajusta o desactiva franjas por día de semana.
- Guarda los cambios.
Reglas y validaciones
- Un horario solicitado debe estar enteramente dentro de una franja activa del recurso.
- Un recurso vinculado sin horas impide completar Setup hasta que se configure.
Backend
- Servicios:
reservation-resource-availability(find, create, patch, remove). - Efectos: determina slots y validación de reservas.
id: services app: reservations nombre: Services estado: shipped permiso: can_access_reservations
Servicios reservables
Define qué puede reservar un cliente y las reglas operativas de cada oferta.
Para que sirve
- Una clínica define consulta inicial, control y procedimiento con distinta duración y capacidad.
- Una barbería publica cortes, tratamientos y turnos grupales con sus reglas de reserva.
- Un coworking ofrece salas, escritorios o equipos como servicios reservables.
Que lo hace diferente
- Cada servicio puede requerir, aceptar o elegir entre recursos reales de la organización.
- Los servicios alimentan la disponibilidad que ve el booking público y puede consultar el asistente IA.
- Se conectan al calendario, booking links y contactos CRM en lugar de vivir en un catálogo aislado.
Acceso
- Ruta principal:
/[orgId]/reservations/services - Como se llega:
Header app switcher > Reservations > Services - Permiso requerido:
can_access_reservations; catálogo visible para propietarios y administradores.
Alcance tecnico
- Frontend:
ReservationSettingsView.tsxy diálogos desetup/dialogs.tsx. - Backend:
reservation-servicesyreservation-service-resources. - Superficies publicas: los servicios activos y públicos aparecen en Booking público.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Crear servicio | create-service.md | Define una oferta reservable. |
| Editar servicio | edit-service.md | Ajusta configuración y visibilidad. |
| Eliminar servicio | delete-service.md | Retira el servicio del catálogo. |
| Configurar capacidad y reservas | service-capacity.md | Controla grupo, cupos y límites de reserva. |
| Asociar recursos | service-resources.md | Define recursos requeridos, opcionales o alternativos. |
Relaciones
- Depende de: Resources y Currencies.
- Usado por: Calendar, Booking links y Booking público.
Limitaciones y notas
- Un servicio inactivo no puede reservarse.
id: create-service modulo: services app: reservations nombre: Crear servicio reservable tipo: accion
Crear servicio reservable
Crea una oferta que podrá usarse al reservar manualmente o públicamente.
Que se logra
- Resultado: Incorpora una oferta que clientes y equipo pueden agendar con sus propias reglas.
- Caso de uso: Una clínica añade una consulta inicial de 45 minutos al catálogo.
- Se combina con: Resources y Booking links.
Donde esta
- Ruta:
/[orgId]/reservations/services - Acceso en UI:
Add Service. - Componente(s):
ServiceFormDialog
Como funciona
- Abre
Add Service. - Define nombre, duración y opciones disponibles.
- Guarda el servicio.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Nombre | texto | Sí | Identifica el servicio. |
| Duración | número | Sí | Determina el fin de la reserva. |
| Precio, color e imagen | configuración | No | Se usan en catálogos y página pública. |
Backend
- Servicios:
reservation-services(create).
id: delete-service modulo: services app: reservations nombre: Eliminar servicio tipo: accion
Eliminar servicio
Retira un servicio del catálogo tras confirmación del usuario.
Que se logra
- Resultado: Retira una oferta para que deje de estar disponible en nuevas reservas.
- Caso de uso: Una barbería elimina un servicio que ya no presta.
- Se combina con: Booking links y Booking público.
Donde esta
- Ruta:
/[orgId]/reservations/services - Acceso en UI: fila del servicio > icono de eliminación.
- Componente(s):
ReservationSettingsView.tsx
Como funciona
- Selecciona eliminar en la fila.
- Confirma la operación.
Reglas y validaciones
- La eliminación es lógica y el servicio deja de aparecer en las consultas estándar.
Backend
- Servicios:
reservation-services(remove).
id: edit-service modulo: services app: reservations nombre: Editar servicio reservable tipo: configuracion
Editar servicio reservable
Actualiza la definición y disponibilidad de un servicio existente.
Que se logra
- Resultado: Ajusta una oferta existente sin crear un catálogo paralelo.
- Caso de uso: Un spa cambia la duración de un masaje al modificar su protocolo.
- Se combina con: Resources, Calendar y Booking público.
Donde esta
- Ruta:
/[orgId]/reservations/services - Acceso en UI: fila del servicio > icono de edición.
- Componente(s):
ServiceFormDialog
Como funciona
- Abre el editor del servicio.
- Ajusta duración, precio, capacidad o estado.
- Guarda los cambios.
Reglas y validaciones
- La duración se usa para recalcular el final al crear o reprogramar una reserva.
Backend
- Servicios:
reservation-services(patch).
Relaciones
- Afecta: slots futuros y Booking público.
id: service-capacity modulo: services app: reservations nombre: Capacidad y límites del servicio tipo: configuracion
Capacidad y límites del servicio
Configura cuántas reservas o asistentes admite cada oferta y cuándo se puede reservar.
Que se logra
- Resultado: Define cuántas personas pueden reservar una misma sesión y bajo qué límites.
- Caso de uso: Un gimnasio configura una clase para que admita solo los cupos reales.
- Se combina con: Calendar y Resources.
Donde esta
- Ruta:
/[orgId]/reservations/services - Acceso en UI:
Add Serviceo editar servicio. - Componente(s):
ServiceFormDialog
Como funciona
- Establece capacidad del horario y máximo de asistentes.
- Configura anticipación mínima, máximo de días y límite diario cuando corresponda.
- Guarda la definición.
Reglas y validaciones
- El tamaño de grupo no puede superar el máximo del servicio.
- La capacidad por horario cuenta reservas pendientes y confirmadas con solapamiento.
- Se rechazan fechas pasadas, demasiado próximas o más allá del máximo definido.
Backend
- Servicios:
reservation-services,reservations. - Hooks relevantes: cálculo de fin y validación de disponibilidad.
id: service-resources modulo: services app: reservations nombre: Asociar recursos a un servicio tipo: configuracion
Asociar recursos a un servicio
Define qué recursos intervienen al reservar un servicio.
Que se logra
- Resultado: Indica qué personas, espacios o equipos hacen posible una reserva.
- Caso de uso: Una clínica relaciona un procedimiento con el consultorio y profesional requeridos.
- Se combina con: Resources y disponibilidad.
Donde esta
- Ruta:
/[orgId]/reservations/services - Acceso en UI: fila del servicio > icono de recursos.
- Componente(s):
ServiceResourcesDialog
Como funciona
- Abre la gestión de recursos del servicio.
- Vincula recursos del catálogo y define su modo de asignación.
- Guarda los vínculos.
Reglas y validaciones
- Los recursos pueden ser requeridos, opcionales o seleccionados entre disponibles del mismo tipo.
- Si no se vincula ningún recurso, el flujo usa la franja predeterminada de 8:00 AM–6:00 PM.
Backend
- Servicios:
reservation-service-resources(find, create, patch, remove). - Efectos: las reservas verifican recursos y capacidad antes de crearse.