Pre-launch · ERPlora is in active development. You're viewing a product preview.
Back to apps Customers, schedule and team

Appointments

Your diary: appointments by professional, free times, repeating bookings and charging them at the till.

Free
Start free
Turn it on from your Hub

Apps are turned on from the Apps page of your Hub. Create your free account to get one.

This documentation is only available in Spanish.

Para qué sirve y para quién

Citas es la agenda de un negocio que trabaja con cita previa (peluquería, estética, barbería). Cada cita une una clienta de Clientes, uno o varios servicios de Servicios (corte + color) y un profesional de Personal a una hora, sin pisar el horario del negocio (Horarios), el turno ni las ausencias del profesional ni otra cita suya, y guarda todo lo que le pasa desde que se reserva hasta que se atiende, se cobra o se anula.

Quién la usa:

  • El empleado ve su propia agenda: reserva citas para sí, las confirma, las empieza, las termina, las mueve, las anula y las cobra. Las citas de los compañeros no las ve.
  • El responsable ve y gestiona la agenda de todo el equipo, y bloquea tiempo.
  • El propietario y el administrador: además borran citas y cambian los ajustes de reserva.
  • La clienta reserva, mueve y cancela sola cuando el negocio lo permite (por WhatsApp o por la reserva online, a través de la API), siempre con las reglas de antelación del negocio.
  • El asistente (por voz o por texto, con la sesión de quien habla) hace todo lo anterior: «mañana a las 10 con Ana para corte a Lucía», «mueve la cita de Lucía al jueves», «cancela la de las 12».

Referencia adoptada

  • Fresha, Vagaro, Mangomint, Square Appointments, Booksy y Phorest: agenda del día por profesional, arrastrar la cita a otra hora o a otro profesional, vista de semana, varios servicios en una cita, estados reservada → confirmada → en curso → completada / cancelada / no presentada, cobro de la cita en el TPV sin volver a teclearla y política de cancelación que ata a la clienta, no al negocio.
  • Google Calendar / RFC 5545: editar una serie «solo esta cita» o «esta y las siguientes», nunca todas, y la serie conserva su hora de pared al cambiar la hora oficial.
  • Mindbody/Booker: el mostrador puede apuntar una cita que ya ha empezado.
  • Decisiones del producto actual que mandan aquí: el horario del negocio solo vive en Horarios, el cobro lo hace el TPV (Citas solo anota con qué venta se cobró), el reloj es siempre el del negocio y las series se editan con corte.

Antes de empezar

  1. Citas enciende con ella Clientes, Servicios, Personal y Horarios, y no se pueden apagar mientras Citas esté encendida.
  2. En Servicios, da de alta los servicios reservables con su precio y su duración, y asigna a cada uno los profesionales que lo hacen. Un servicio sin nadie asignado lo puede hacer todo el equipo reservable (la regla es de Citas).
  3. En Personal, da de alta a los profesionales y márcalos Reservables. Si quieres que la agenda respete su turno, crea su horario semanal; sin horario, solo sus ausencias aprobadas impiden reservarle.
  4. En Horarios, confirma la semana del negocio y pon los festivos. Un día sin ninguna regla de horario (ni semana ni excepción) deja reservar a cualquier hora.
  5. La agenda pinta siempre el reloj del negocio (en la fase 1, Europe/Madrid), nunca el del dispositivo: si el dispositivo está en otra zona, un aviso lo dice.
  6. Revisa los Ajustes de Citas (antelaciones, solapes, cancelación de la clienta, ventana del calendario).
  7. Para cobrar desde la agenda hace falta Venta encendida y poder vender en ella.

Pantallas

Citas se abre desde el menú Citas y tiene dos pestañas: Agenda y Ajustes (esta solo para quien puede cambiarlos). Lo que una persona no puede hacer sale en gris o no aparece, y la app lo rechaza aunque lo intente por la API o por el asistente.

Agenda

Una barra con el día (‹ fecha › y Hoy, y el botón del calendario para saltar a una fecha), Filtrar por estado, el aviso N por confirmar cuando hay reservas de clientas pendientes, y el conmutador Lista · Por profesional · Periódicas (en el móvil, solo iconos). En Por profesional, además, Día · Semana.

  • Lista: columnas Hora, Nº, Cliente, Servicio, Profesional y Estado, buscador «Buscar nº, cliente o servicio…» y, por fila, Cobrar, Editar, Confirmar, Iniciar, Completar, No-show, Cancelar, Historial y Borrar. La que no aplica al estado de la cita sale en gris, no se esconde; Cobrar sale en gris si la cita ya está cobrada y se llama Ir a la cuenta mientras su cuenta sigue abierta en el TPV (entonces No-show, Cancelar y Borrar salen en gris).
  • Por profesional · Día: una fila por profesional reservable y una fila «Sin asignar» si hay citas sin profesional; las horas del calendario van en horizontal y lo que el negocio tiene cerrado o bloqueado sale sombreado (lo cerrado, según Horarios; ahí no se puede tocar para reservar). Un profesional que ya no admite citas (no reservable, inactivo, de baja) conserva su fila, detrás de los reservables, los días en que aún tiene citas, y encima de la rejilla un aviso «Ana ya no admite citas nuevas: sus citas del día siguen en su fila para que puedas pasárselas a otra persona del equipo.». Tocar un hueco abre el alta con ese profesional y esa hora; tocar una cita abre su ficha; arrastrar una cita la mueve a otra hora o a otra fila (con el ratón, al soltar; en una pantalla táctil, manteniéndola pulsada antes de arrastrar).
  • Por profesional · Semana: una fila por profesional y una columna por día de la semana, con las citas de cada día en orden. Tocar una cita abre su ficha; arrastrarla a otro día u otra fila la mueve conservando la hora.
  • Periódicas: ver la pantalla Periódicas.
  • Botón Añadir cita → Nueva cita: Cliente (buscador «Busca por nombre o teléfono»; si no está, + Nuevo cliente la crea con nombre y teléfono sin salir), Servicios (uno o varios, en orden), Profesional (solo los que hacen todos esos servicios), Día, Hora (con las Horas libres como botones), Min. (la suma de las duraciones, cambiable), Notas para la clienta y Notas internas. Min. y el Total salen con la duración y el precio propios del profesional elegido para cada servicio (Servicios, «Quién lo hace»), o los del catálogo si no tiene; es lo que la cita reserva. Avisos: «Esta cita empieza en el pasado…» y el profesional que no hace un servicio.
  • Editar → Editar la cita: Día, Hora, Min., Servicios, Profesional, las notas y Guardar cambios; debajo, el historial. La clienta no se cambia.
  • Diálogos: Cita solapada (Reservar igual / Elegir otra hora), Editar cita periódica (Solo esta cita / Esta y todas las siguientes), Cancelar la cita (motivo opcional) y Borrar la cita (confirmación).

Periódicas

Tercer segmento de la Agenda. Tabla: Cliente, Servicio, Profesional, Repetición (por ejemplo «Cada semana · lunes · 11:00»), Empieza, Termina («Sin fin», «Tras {n} citas» o la fecha) y Activa (interruptor). Por fila: Editar serie, Reservar citas y Borrar (pide confirmación). El botón de añadir abre Nueva cita periódica (Cliente, Servicios, Profesional, Repetición, Día de la semana, Empieza el, Hora, Min., «Termina el (opcional)», «Número de citas (opcional)») con Crear cita periódica; editar abre Editar cita periódica con «Desde» y Guardar de esta cita en adelante. Tras reservar o guardar sale «{booked} citas reservadas · {skipped} no se han podido reservar:» con cada fecha y su motivo, y si quedan fechas, «Las fechas desde el {date} aún no están reservadas: pulsa «Reservar citas» en la serie para reservarlas.».

Ficha de la cita

Al tocar una cita: número, estado, clienta, servicios con su precio, profesional, hora, notas, si está cobrada y su Historial: cada cambio con su hora en el reloj del negocio, quién lo hizo («Lo pidió la clienta» cuando fue ella) y qué cambió.

Ajustes de Citas

Pestaña Ajustes (solo para quien puede cambiarlos): «Duración por defecto (minutos)», «Antelación mínima para reservar (minutos)» (solo para las reservas de la clienta), «Reservar como máximo con esta antelación (días)» (0 = sin límite), «Permitir citas solapadas», «Permitir que la clienta cancele su cita», «Antelación mínima para cancelar (horas)», «El calendario empieza a las (hora)», «El calendario termina a las (hora)», «Intervalo entre huecos (minutos)» y «Confirmar automáticamente las citas que reserva la clienta»; botón Guardar.

Historial de visitas (en la ficha de Clientes)

Bloque al final de la ficha de una clienta en Clientes, aportado por Citas: sus 10 últimas citas, la más reciente primero, con servicios, profesional, estado y notas (la interna primero).

Estados de cada pantalla

Estado Qué ve la persona
Cargando «Cargando…» mientras llega el primer resultado; bajo Servicios y Profesional, «Cargando servicios…» / «Cargando profesionales…».
Vacío «Sin citas para este día.», «Todavía no hay citas periódicas.»; sin profesionales reservables, «Aún no hay profesionales reservables.»; en el alta, «Todavía no hay servicios reservables. Dalos de alta en Servicios.».
Error El aviso de la tabla o de la rejilla con «Reintentar». Un rechazo de un formulario sale dentro del formulario, cada motivo bajo su campo, sin perder lo tecleado; un conflicto (409) sale encima del botón y en un aviso.
Reconectando Lo pintado se queda; una franja avisa «Reconectando…».
App inactiva «Esta app no está activa en este negocio».
Sin permiso No aparece lo que no puede hacer; si llega por otra puerta, «No tienes permiso».
Otra zona horaria «Este dispositivo está en otra zona horaria. La agenda muestra siempre el reloj del negocio: {zona}.»

Fechas, horas e importes salen con el formato del idioma de quien mira y en el reloj del negocio.

Flujos

ID Flujo Estado
APPOINTMENT-F01 Reservar una cita desde la agenda hecho
APPOINTMENT-F02 Ver qué horas quedan libres hecho
APPOINTMENT-F03 Confirmar una cita pendiente hecho
APPOINTMENT-F04 Mover una cita o cambiarle el profesional o los servicios hecho
APPOINTMENT-F05 Cancelar una cita desde la agenda hecho
APPOINTMENT-F06 La clienta cancela o mueve su propia cita hecho (API y asistente; la conversación de WhatsApp es de su app)
APPOINTMENT-F07 Empezar el servicio hecho
APPOINTMENT-F08 Completar la cita hecho
APPOINTMENT-F09 Marcar que la clienta no se presentó hecho
APPOINTMENT-F10 Ver el historial de una cita hecho
APPOINTMENT-F11 Borrar una cita hecho
APPOINTMENT-F12 Crear una cita periódica hecho
APPOINTMENT-F13 Reservar las citas de una serie hecho
APPOINTMENT-F14 Editar una serie de esta cita en adelante hecho
APPOINTMENT-F15 Pausar, reactivar o borrar una serie hecho
APPOINTMENT-F16 Bloquear tiempo en la agenda hecho (asistente y API; la rejilla lo pinta)
APPOINTMENT-F17 Cobrar la cita en el TPV hecho (Citas abre la cuenta; ver «Contrato con Ventas»)
APPOINTMENT-F18 Cita que reserva la clienta (WhatsApp, reserva online) hecho (API y asistente)
APPOINTMENT-F19 Ajustar las reglas de reserva hecho
APPOINTMENT-F20 Ver las citas de una clienta en su ficha hecho
APPOINTMENT-F21 Reservar varias citas de golpe (bono o curso) hecho (asistente y API)
APPOINTMENT-F22 Cambiar las notas o el contacto de una cita hecho
APPOINTMENT-F23 Unir las citas al fusionar dos fichas de clienta hecho
APPOINTMENT-F24 Vaciar los datos de una clienta al borrarla hecho
APPOINTMENT-F25 Un profesional se da de baja con citas futuras hecho
APPOINTMENT-F26 Un servicio se archiva con series que lo usan hecho
APPOINTMENT-F27 Ver la agenda de la semana hecho

APPOINTMENT-F01 Reservar una cita desde la agenda

Estado: hecho Actor: empleado (para sí), responsable, asistente Pantalla: Agenda Pasos: 1. Pulsa Añadir cita, o en «Por profesional» toca un hueco libre (rellena profesional y hora). 2. Elige la clienta (se busca por nombre, teléfono o email; si no está, + Nuevo cliente la crea con nombre y teléfono), uno o varios servicios y el profesional. Con servicios elegidos solo salen los profesionales Activos y Reservables que los hacen todos; si un servicio no tiene a nadie asignado, para ese servicio vale todo el equipo reservable. «Min.» se rellena con la suma de las duraciones (la propia del profesional si la tiene, si no la del catálogo). 3. Escribe el día y toca una de las Horas libres (o escribe otra hora). 4. Pulsa Añadir cita. Si el negocio permite solapes y esa hora choca con otra cita del profesional, responde a «Cita solapada». 5. La cita aparece como Confirmada con su número APT-AAAAMMDD-NNNN. Entra: la ficha de la clienta (Clientes), los servicios con su precio y duración (Servicios), el profesional y quién hace qué (Personal y Servicios), el horario del negocio (Horarios) y el turno y las ausencias del profesional (Personal). Sale: la cita con el nombre, el teléfono y el email de la clienta y el nombre, precio y duración de cada servicio congelados (cambiar el catálogo después no cambia la cita), su línea «Reservada» en el historial y el aviso de cita creada (appointment.appointment.created). Si falla: el motivo sale dentro del panel, sin perder lo tecleado: fuera del horario del negocio, el profesional no trabaja a esa hora, franja bloqueada, el profesional ya tiene una cita (appointment.slot_taken), demasiado lejos, la clienta, el servicio o el profesional no existen o no se pueden reservar. Desde el mostrador ni la antelación mínima ni una hora ya pasada rechazan (la hora pasada solo avisa antes de guardar). Dos personas que reservan a la vez el mismo hueco del mismo profesional: entra una y la otra recibe el rechazo.

APPOINTMENT-F02 Ver qué horas quedan libres

Estado: hecho Actor: empleado, asistente, clienta Pantalla: Agenda (alta y edición) Pasos: 1. Con servicios, profesional y día elegidos aparecen las Horas libres como botones. 2. Las horas candidatas salen cada «Intervalo entre huecos» dentro de la ventana del calendario («empieza a las», «termina a las»). Solo sale la que cabe entera: dentro del horario del negocio (Horarios: el tramo de ese día o la madrugada del anterior), dentro del turno del profesional y fuera de sus ausencias (Personal), sin bloqueo y sin otra cita suya; con los solapes permitidos, una hora ocupada también sale. La cita puede terminar justo a la hora de cierre. 3. Desde el mostrador salen también las horas dentro de la antelación mínima (marcadas), nunca las ya pasadas; a la clienta, solo las que respetan la antelación mínima. 4. Sin profesional (el asistente: «¿qué horas hay mañana para corte?»), cada hora dice qué profesionales la tienen libre. 5. Al preguntar si una hora concreta se puede reservar, se contesta por qué no; con qué citas choca se dice solo a quien puede ver esa agenda (a un empleado, de un compañero, solo «ya tiene una cita»). Entra: el horario del negocio, el turno y las ausencias, los bloqueos, las citas y los ajustes. Sale: la lista de horas; no guarda nada. Si falla: «No se han podido cargar las horas libres» con Reintentar; se puede escribir una hora y la reserva se juzga al guardar. Sin horas: «No quedan horas libres ese día…».

APPOINTMENT-F03 Confirmar una cita pendiente

Estado: hecho Actor: empleado (las suyas), responsable, asistente Pantalla: Agenda Pasos: 1. Entra desde el aviso N por confirmar o busca la cita Pendiente. 2. Pulsa Confirmar en su fila. 3. La cita pasa a Confirmada y el historial dice «Confirmada». Entra: una cita pendiente (la que reservó la clienta con la confirmación automática apagada). Sale: la cita confirmada, su línea de historial y el aviso appointment.appointment.confirmed. Si falla: «Esta cita ya no se puede confirmar: ya no está pendiente.»; no se escribe nada.

APPOINTMENT-F04 Mover una cita o cambiarle el profesional o los servicios

Estado: hecho Actor: empleado (las suyas), responsable, asistente Pantalla: Agenda Pasos: 1. Pulsa Editar (o toca la cita en «Por profesional»): se abre «Editar la cita». 2. Cambia Día, Hora, Min., Servicios o Profesional y pulsa Guardar cambios. Si la cita es de una serie, elige Solo esta cita o Esta y todas las siguientes (APPOINTMENT-F14). 3. Atajo: en «Por profesional» arrástrala a otra hora, otro día u otra fila. Arrastrando no se lleva a una hora ya pasada (eso, desde el panel). 4. La cita conserva su número y el historial dice «Cambio de hora», «Cambio de profesional» o «Cambio de servicio». Entra: una cita Pendiente o Confirmada. Sale: la cita movida (servicios nuevos traen su nombre y precio del catálogo y su duración, la propia del profesional si la tiene; un profesional nuevo conserva el precio y la duración), su historial y el aviso appointment.appointment.rescheduled. Si falla: el motivo en el panel y en un aviso; un bloque arrastrado vuelve a su sitio. Una cita en curso, completada, cancelada o no presentada no se mueve (Editar sale en gris).

APPOINTMENT-F05 Cancelar una cita desde la agenda

Estado: hecho Actor: empleado (las suyas), responsable, asistente Pantalla: Agenda Pasos: 1. Pulsa Cancelar en una cita pendiente, confirmada o no presentada. 2. «Cancelar la cita de Lucía (martes 14, 10:00)?» con el motivo opcional; pulsa Cancelar la cita. 3. La cita pasa a Cancelada (el hueco queda libre) y el historial dice «Cancelada», quién y el motivo. Sale: el aviso appointment.appointment.cancelled. Si falla: «Esta cita ya no se puede cancelar en su estado actual.» (en curso, completada o ya cancelada); con su cuenta abierta en el TPV, «Esta cita tiene una cuenta abierta en el TPV: cóbrala o anúlala allí primero.» (appointment.check_open).

APPOINTMENT-F06 La clienta cancela o mueve su propia cita

Estado: hecho (API y asistente) Actor: clienta (a través de WhatsApp o la reserva online) Pantalla: ninguna Pasos: 1. La automatización pide cancelar o mover en nombre de la clienta, diciendo quién es. 2. La cita tiene que ser suya; si no lo es, se contesta igual que si no existiera (no se deja averiguar qué citas hay). 3. Para cancelar se aplica la política: «Permitir que la clienta cancele su cita» y «Antelación mínima para cancelar». 4. Para mover se aplican la antelación mínima y las mismas reglas que una reserva de la clienta. 5. En el historial queda «Lo pidió la clienta» con el motivo, y también quién del equipo lo anotó. 6. Hacerlo en nombre de la clienta no da más permisos: quien lo anota solo cambia las citas que ya podía cambiar (un empleado, las suyas, y no se las pasa a un compañero). Si falla: appointment.customer_cancellation_disabled, appointment.cancellation_notice_required, appointment.too_soon, appointment.appointment_not_found o permission_denied.

APPOINTMENT-F07 Empezar el servicio

Estado: hecho Actor: empleado (las suyas), responsable Pantalla: Agenda Pasos: 1. Cuando llega la clienta, pulsa Iniciar en su cita pendiente o confirmada. 2. La cita pasa a En curso y el historial dice «Servicio iniciado». Sale: el aviso appointment.appointment.started. Si falla: «Esta cita no se puede iniciar en su estado actual.»

APPOINTMENT-F08 Completar la cita

Estado: hecho Actor: empleado (las suyas), responsable Pantalla: Agenda Pasos: 1. Al terminar, pulsa Completar en la cita en curso (o confirmada). 2. La cita pasa a Completada. Cobrarla también la completa (APPOINTMENT-F17). Sale: el aviso appointment.appointment.completed. Si falla: «Esta cita no se puede completar en su estado actual.»

APPOINTMENT-F09 Marcar que la clienta no se presentó

Estado: hecho Actor: empleado (las suyas), responsable Pantalla: Agenda Pasos: 1. Pasada la hora de la cita, pulsa No-show en una cita pendiente o confirmada. 2. La cita pasa a No-show, el hueco se libera y el historial dice «No se presentó». Sale: el aviso appointment.appointment.marked_no_show. Si falla: antes de su hora, «Todavía no es la hora de esta cita: no se puede marcar como no presentada.»; en otro estado, «Esta cita no se puede marcar como no presentada en su estado actual.»; con su cuenta abierta en el TPV, appointment.check_open.

APPOINTMENT-F10 Ver el historial de una cita

Estado: hecho Actor: empleado (las suyas), responsable Pantalla: Agenda Pasos: 1. Pulsa Historial en la fila (en cualquier estado) o abre la ficha de la cita. 2. Cada cambio con su hora en el reloj del negocio, quién lo hizo («Lo pidió la clienta» si fue ella) y qué cambió (de qué profesional o servicio a cuál, y la nueva hora). Si falla: «No se pudo cargar el historial de la cita.»

APPOINTMENT-F11 Borrar una cita

Estado: hecho Actor: propietario, administrador Pantalla: Agenda Pasos: 1. Pulsa Borrar y confirma «¿Borrar la cita APT-…? En el día a día es mejor Cancelar, que conserva el registro.». 2. La cita desaparece de la agenda (queda archivada, no destruida). Entra: una cita pendiente, confirmada, cancelada o no presentada que no esté cobrada. Sale: el aviso appointment.appointment.deleted. Si falla: «Esta cita no se puede borrar: está en curso, completada o cobrada.»; con su cuenta abierta en el TPV, appointment.check_open.

APPOINTMENT-F12 Crear una cita periódica

Estado: hecho Actor: empleado (para sí), responsable, asistente Pantalla: Periódicas Pasos: 1. En Periódicas, pulsa añadir: «Nueva cita periódica». 2. Elige la clienta, los servicios, el profesional (solo los que los hacen), la repetición (cada día, cada semana, cada dos semanas o cada mes), el día de la semana si aplica, el día de inicio, la hora, los minutos y, si quieres, «Termina el» o «Número de citas». 3. Pulsa Crear cita periódica: se crea la serie y se reservan sus citas de la ventana (APPOINTMENT-F13). Sale: la serie activa, sus citas y el aviso appointment.recurring.created. Si falla: el motivo en el panel; si la serie se creó y alguna fecha no cupo, se listan con su motivo.

APPOINTMENT-F13 Reservar las citas de una serie

Estado: hecho Actor: empleado, responsable, asistente Pantalla: Periódicas Pasos: 1. Pulsa Reservar citas en la fila de la serie. 2. Se reservan las fechas de la ventana (de hoy a la antelación máxima; con 0, 90 días) que aún no estaban dadas, como mucho 50 por vuelta; la pantalla sigue sola con la siguiente vuelta. 3. Una fecha que no cabe (cerrado, el profesional no trabaja, bloqueo, otra cita, pasado, demasiado pronto) se salta y se lista con su motivo; las demás se reservan. Una fecha que se canceló a mano no se vuelve a reservar. 4. Si la serie aún no tiene ninguna fecha en la ventana: «Aún no hay nada que reservar: la próxima fecha de esta serie, el {fecha}, queda más lejos que la antelación máxima». Si falla: una serie pausada pide reactivarla (appointment.recurring_inactive); una sin fechas, «Esta cita periódica ya no tiene fechas que reservar.» (appointment.recurring_ended).

APPOINTMENT-F14 Editar una serie de esta cita en adelante

Estado: hecho Actor: empleado (las suyas), responsable, asistente Pantalla: Periódicas, Agenda Pasos: 1. Pulsa Editar serie, o mueve en la Agenda una cita de la serie y elige Esta y todas las siguientes. 2. Cambia la hora, los minutos, la repetición, el día de la semana, el profesional o los servicios; el panel dice desde qué fecha se aplica, cuántas citas alcanza y cuántas no se tocarán por estar cobradas. 3. Pulsa Guardar de esta cita en adelante. 4. Lo anterior a hoy, lo cancelado, lo en curso, lo completado y lo cobrado no se toca. Las citas que siguen cayendo en la pauta se mueven; las que ya no caen se cancelan; las que no caben se quedan como estaban y se listan; las fechas nuevas se reservan solas (si la serie está activa: editar una serie pausada la deja pausada; la que se pausó porque su profesional se dio de baja vuelve a reservar al darle otro). Una cita cancelada por no caer ya en la pauta deja libre su fecha: si la pauta vuelve, se reserva otra vez. Lo que tiene su cuenta abierta en el TPV tampoco se toca. Sale: la serie partida en dos (la vieja termina el día antes) o, si el cambio empieza en su primera fecha, la misma serie editada; el aviso appointment.recurring.updated. Si falla: «Termina el» antes de la fecha del cambio o del inicio de la serie, 422 en ese campo («El final no puede ser anterior al inicio.»).

APPOINTMENT-F15 Pausar, reactivar o borrar una serie

Estado: hecho Actor: empleado (las suyas), responsable Pantalla: Periódicas Pasos: 1. Apaga el interruptor Activa para que deje de reservar; enciéndelo para reactivarla. 2. Borrar pide confirmar «¿Borrar las citas periódicas de {nombre}?»; las citas ya reservadas se conservan. Sale: appointment.recurring.updated o appointment.recurring.deleted.

APPOINTMENT-F16 Bloquear tiempo en la agenda

Estado: hecho (asistente y API; la rejilla lo pinta) Actor: responsable, asistente Pantalla: Agenda (lo pinta) Pasos: 1. Pide al asistente un bloqueo con título, inicio y fin, tipo (festivo, vacaciones, descanso, mantenimiento u otro), si es de día entero y, si es de un profesional, cuál. 2. Desde ese momento nadie puede reservar en esa franja; sin profesional, bloquea todo el negocio. Un bloqueo de día entero cubre esos días enteros, en la reserva y en las horas libres. Sale: appointment.blocked_time.created / appointment.blocked_time.deleted.

APPOINTMENT-F17 Cobrar la cita en el TPV

Estado: hecho Actor: responsable, empleado (sus propias citas), con permiso de vender en Venta Pantalla: Agenda Pasos: 1. Pulsa Cobrar en la fila de la cita. 2. Citas abre en el TPV una cuenta enlazada a la cita, titulada «{clienta} · {nº de cita}», con una línea de servicio por cada servicio de la cita (como si se tocara en «Servicios» del TPV, SALE-F38), con el profesional que lo hizo y al precio con que se reservó (el propio de la profesional incluido), aunque el catálogo haya cambiado desde entonces, y lleva a Venta con esa cuenta en pantalla (/sale/pos?order=<cuenta>). 3. En el TPV se añaden productos o descuentos, un servicio se puede pagar con un bono de la clienta (SALE-F27) y se cobra como cualquier venta. 4. Una cita tiene una sola cuenta: mientras sigue abierta, el botón se llama Ir a la cuenta y vuelve a ella (nunca abre otra, aunque se pulse a la vez en dos dispositivos); si se anula la cuenta en el TPV, Cobrar abre una nueva. Con la cuenta abierta, la cita no se cancela, ni se marca como no presentada, ni se borra: primero se cobra o se anula la cuenta (decisión de mercado). 5. Al cobrarla, la cita queda cobrada y, si no lo estaba, Completada; Cobrar sale en gris. Si la venta se anula, la cita deja de estar cobrada y Cobrar vuelve a estar activo. Entra: una cita pendiente, confirmada, en curso o completada que no esté cobrada. Sale: la cuenta abierta en Venta (sale.order.opened) y aquí appointment.appointment.check_opened; al cobrar, el aviso de Venta sale.sale.created_from_appointment y aquí appointment.appointment.charged; al anular la cuenta, sale.order.voided y aquí appointment.appointment.check_closed. Si falla: una cita cancelada o no presentada no se cobra (appointment.cannot_charge); ya cobrada, también si el TPV la acaba de cobrar y el aviso aún no ha llegado (appointment.already_charged); un servicio sin categoría fiscal (appointment.service_needs_tax_setup); Venta apagada (appointment.sale_unavailable); un servicio que ya no se ofrece o un precio que no es el de la cita, la frase de Venta (sale.service_not_available, sale.booked_price_mismatch); sin permiso de vender, el de Venta.

APPOINTMENT-F18 Cita que reserva la clienta

Estado: hecho (API y asistente) Actor: clienta (WhatsApp, reserva online) Pasos: 1. La automatización ofrece las horas libres (APPOINTMENT-F02) y reserva con origen «WhatsApp» u «Online». 2. Con Confirmar automáticamente las citas que reserva la clienta encendido (de fábrica), nace Confirmada; apagado, nace Pendiente y suma en N por confirmar. Si un servicio de la cita tiene Requiere confirmación (Servicios), nace Pendiente aunque esté encendido. 3. Siempre con la antelación mínima, nunca en el pasado ni encima de otra cita del profesional.

APPOINTMENT-F19 Ajustar las reglas de reserva

Estado: hecho Actor: propietario, administrador Pantalla: Ajustes Pasos: 1. Cambia los ajustes y pulsa Guardar: «Ajustes guardados.» Se guarda solo lo que cambia. Sale: appointment.settings.updated. Si falla: «Revisa los campos marcados y vuelve a guardar.»; «El calendario termina antes de empezar.»

APPOINTMENT-F20 Ver las citas de una clienta en su ficha

Estado: hecho Actor: quien ve la agenda Pantalla: Historial de visitas (ficha de Clientes) Pasos: 1. Abre la ficha en Clientes: el bloque Historial de visitas enseña sus 10 últimas citas. Si falla: «No se pudo cargar el historial de visitas.» · vacío: «Este cliente aún no tiene citas.»

APPOINTMENT-F21 Reservar varias citas de golpe (bono o curso)

Estado: hecho (asistente y API) Pasos: 1. Pide al asistente varias citas para la misma clienta, servicios y profesional (hasta 50). 2. Se reservan todas o ninguna: si una no cabe, se dice cuál y por qué.

APPOINTMENT-F22 Cambiar las notas o el contacto de una cita

Estado: hecho Pantalla: Agenda (Editar) y asistente Pasos: 1. En «Editar la cita» cambia las notas, o pide al asistente corregir el teléfono o el email. 2. Solo cambia lo que se envía. El teléfono se guarda en formato internacional (+34600111222); uno que no es un número válido se rechaza (appointment.phone_invalid) y no se guarda nada. Sale: appointment.appointment.updated (sin línea de historial si solo cambian notas o contacto).

APPOINTMENT-F23 Unir las citas al fusionar dos fichas de clienta

Estado: hecho Actor: sistema Pasos: 1. En Clientes se fusionan dos fichas (customer.customer.merged). 2. Todas las citas y series de la absorbida pasan a la que se queda; los nombres guardados en cada cita no cambian. Repetirlo no cambia nada más.

APPOINTMENT-F24 Vaciar los datos de una clienta al borrarla

Estado: hecho Actor: sistema Pasos: 1. En Clientes se borran los datos personales de una ficha (customer.customer.erased). 2. Sus citas (en cualquier estado, también las borradas) se quedan sin nombre, teléfono, email, notas y motivo de cancelación; sus series sin nombre, y pausadas; su historial sin nombres ni motivos. 3. Donde estaba el nombre, la agenda dice «Cliente borrado». Se quedan la cita, su número, los servicios, el precio, el profesional, la hora, el estado y la venta.

APPOINTMENT-F25 Un profesional se da de baja con citas futuras

Estado: hecho Actor: sistema Pasos: 1. En Personal se da de baja a alguien (staff.member.terminated). 2. Sus citas futuras pendientes o confirmadas pasan al carril Sin asignar, con «Profesional dado de baja: pendiente de reasignar» en su historial, y la agenda avisa «{n} citas sin profesional: asígnalas»; se reasignan editándolas o arrastrándolas a otra fila. Sus series se pausan. 3. Desactivar a alguien o marcarlo no reservable no toca sus citas: siguen en su fila con el aviso «… ya no admite citas nuevas».

APPOINTMENT-F26 Un servicio se archiva con citas o series que lo usan

Estado: hecho Actor: sistema Pasos: 1. En Servicios se archiva un servicio (service.service.archived). 2. Nada se cancela ni se cambia (el mercado: Fresha, Phorest, TimeTap): las citas ya reservadas lo conservan (nombre, precio y duración congelados) y se pueden cobrar; ya no se ofrece para reservar. 3. Una serie que lo usa salta sus fechas nuevas con el motivo «Un servicio de esta serie ya no se puede reservar.» (service_unavailable) hasta que se edita con otro servicio. 4. Antes de archivar, Servicios puede preguntar cuántas citas próximas lo usan (appointment.appointment.count_active_for_service).

APPOINTMENT-F27 Ver la agenda de la semana

Estado: hecho Pantalla: Agenda (Por profesional · Semana) Pasos: 1. En «Por profesional», pulsa Semana: una columna por día, de lunes a domingo, y una fila por profesional; ‹ › avanza de semana en semana.

Servicios: lo que entra y lo que sale

Todo se puede pedir por las pantallas, el asistente (por voz o por texto, con la sesión de quien habla) y la API, con las mismas reglas y los mismos permisos. Una cita se nombra por su id o por su número (APT-…); una clienta, por su id, su nombre, su teléfono o su email; un servicio y un profesional, por su id o su nombre; una hora, como fecha y hora de pared del negocio («2026-10-15 10:00»). Si un nombre vale para varios, se dice cuáles y se pide que elija.

Lo que ofrece: consultas (leen, no cambian nada)

Qué da Quién puede Flujos Servicio
Las citas de un rango de días, por profesional, estado, clienta o búsqueda, en páginas (hasta 100) ver citas (todas o las suyas) F01–F11, F27 appointment.appointment.list
Una cita completa ver citas F04, F10 appointment.appointment.get
El historial de una cita ver citas F10 appointment.appointment.history
Las últimas citas de una clienta, con notas ver citas F20 appointment.appointment.list_for_customer
Cuántas citas próximas usan un servicio ver citas F26 appointment.appointment.count_active_for_service
Cuántas reservas de clientas esperan confirmación ver citas F03, F18 appointment.appointment.count_to_confirm
Las filas de la agenda (profesionales reservables y los que conservan citas) ver citas F01, F04, F25, F27 appointment.agenda.lanes
Las horas libres de un día ver disponibilidad F02, F18 appointment.availability.slots
Si una hora concreta se puede reservar y por qué no ver disponibilidad F02 appointment.availability.check
Los bloqueos de un rango ver disponibilidad F16 appointment.blocked_time.list
Las series, con búsqueda y filtros ver citas F12–F15 appointment.recurring.list
Una serie con lo que alcanza un cambio desde una fecha ver citas F14 appointment.recurring.get
Los ajustes ver citas F19 appointment.settings.get

Lo que ofrece: acciones (cambian datos)

Qué hace Quién puede Flujos Servicio
Reserva una cita reservar (o reservarse) F01, F18 appointment.appointment.create
Reserva hasta 50 citas, todas o ninguna reservar F21 appointment.appointment.bulk_create
Mueve una cita, le cambia profesional o servicios cambiar citas (o las suyas) F04, F06 appointment.appointment.reschedule
Cambia notas, contacto (y, si se envía, la hora) cambiar citas F22 appointment.appointment.update
Confirma / inicia / completa cambiar citas F03, F07, F08 appointment.appointment.confirm, .start, .complete
Marca no presentada cambiar citas F09 appointment.appointment.mark_no_show
Cancela (también en nombre de la clienta) cambiar citas F05, F06 appointment.appointment.cancel
Borra una cita / varias borrar citas F11 appointment.appointment.delete, .bulk_delete
Abre la cuenta de la cita en el TPV cambiar citas + vender F17 appointment.appointment.charge
Crea / quita un bloqueo gestionar bloqueos F16 appointment.blocked_time.create, .delete
Crea una serie y reserva su ventana reservar F12, F13 appointment.recurring.create
Reserva las fechas de una serie reservar F13 appointment.recurring.materialize
Edita una serie desde una fecha cambiar citas F14 appointment.recurring.update
Pausa / reactiva / borra una serie cambiar citas F15 appointment.recurring.deactivate, .activate, .delete
Guarda los ajustes (solo lo enviado) ajustes F19 appointment.settings.update

Cancelar, marcar no presentada, cobrar y borrar son de riesgo alto para el asistente: pide confirmación antes de hacerlas.

Lo que avisa

Aviso Cuándo Qué lleva
appointment.appointment.created Reserva (una por cita del lote y de la serie) La cita, su número, la clienta, el profesional y su hora
appointment.appointment.confirmed, .started, .completed, .marked_no_show, .cancelled, .deleted Cada cambio de estado La cita
appointment.appointment.rescheduled Mover (hora, profesional o servicios) La cita, la hora y el profesional nuevos
appointment.appointment.updated Cambiar notas o contacto La cita
appointment.appointment.charged / .uncharged Venta cobrada / anulada La cita y la venta
appointment.appointment.check_opened / .check_closed Cobrar abre su cuenta / la cuenta se anula en el TPV La cita y la cuenta
appointment.appointment.unassigned Baja de su profesional La cita
appointment.appointment.reassigned Fusión de fichas La ficha que queda y la absorbida
appointment.blocked_time.created, .deleted Bloqueos El bloqueo
appointment.recurring.created, .updated, .deleted Series La serie
appointment.settings.updated Guardar ajustes con algún cambio Nada

Los avisos llevan identificadores, nunca notas ni motivos (pueden llevar datos de salud).

A qué reacciona

Aviso de otra app Qué hace Citas Flujos
customer.customer.merged (Clientes) Pasa citas y series de la ficha absorbida a la que queda F23
customer.customer.erased (Clientes) Vacía los datos de la clienta en citas, series e historial F24
staff.member.terminated (Personal) Sus citas futuras pasan a «Sin asignar»; sus series se pausan F25
sale.sale.created_from_appointment (Venta) Anota la venta en la cita y la completa (409 si la cita está cancelada, no presentada o borrada, o cobrada con otra venta) F17
sale.sale.voided (Venta) Quita la marca de cobrada a la cita de esa venta y su cuenta F17
sale.order.voided (Venta) Suelta la cuenta anulada: Cobrar abre una nueva F17

Contrato con Ventas

Venta no es requisito de Citas: Citas usa su operación sale.order.open por nombre, con la sesión de quien cobra (su permiso de vender), y reacciona a sus avisos. La cuenta lleva appointment_id, el título «{clienta} · {nº}» y una línea de servicio por servicio (service_lines, SALE-F38: service_id, staff_id = el profesional y booked_price = el precio reservado, que Venta comprueba contra appointment.appointment.get: services[].service_id y services[].price), para que un bono de la clienta pueda pagarla (sale.order.apply_voucher, SALE-F27); nunca líneas de precio abierto. Cobrar la cuenta emite sale.sale.created_from_appointment con sale_id y appointment_id; anular la venta, sale.sale.voided con sale_id; anular la cuenta abierta, sale.order.voided con order_id. La cita guarda su cuenta (order_id) mientras está abierta: volver a cobrar la consulta con sale.order.get y, si sigue abierta, la devuelve sin abrir otra (Venta, por su parte, devuelve la cuenta abierta de una cita con already = true).

Quién puede qué

Permiso Propietario Administrador Responsable Empleado Servicio
Ver toda la agenda sí sí sí no appointment.view_appointment
Ver su propia agenda sí sí sí sí appointment.view_own_appointment
Reservar para cualquiera sí sí sí no appointment.add_appointment
Reservarse citas sí sí sí sí appointment.add_own_appointment
Cambiar cualquier cita (estados, mover, cancelar, cobrar, series) sí sí sí no appointment.change_appointment
Cambiar sus propias citas sí sí sí sí appointment.change_own_appointment
Borrar citas sí sí no no appointment.delete_appointment
Ver disponibilidad y bloqueos sí sí sí sí appointment.view_schedule
Bloquear tiempo sí sí sí no appointment.manage_schedule
Ajustes sí sí no no appointment.manage_settings

«Sus propias» citas son las de la ficha de Personal vinculada a su cuenta; un empleado sin ficha vinculada ve la agenda vacía con el aviso «Tu cuenta no está vinculada a ninguna ficha de Personal.».