Antylogic
Probar demoAcceso app

399 guías operativas

Secciones de Docs
DocsReservas
Dispositivo

Cómo crear un cliente desde una reserva

Crea o reutiliza una ficha de cliente desde el editor interno de una reserva en Marea Gran Via y enlázala a la reserva que se está creando o completando.

En este artículo

Este flujo se usa cuando el operador registra una reserva desde el detalle de una ocurrencia de servicio y necesita capturar el cliente en el mismo formulario. Al guardar, Antylogic crea o reutiliza la ficha `Customer` a partir del teléfono y envía su `id` como `reservation.customer_id`.

La pantalla no ofrece un selector de cliente existente en este editor. La reutilización ocurre durante el guardado por `phone_e164`, y el alta del cliente y la reserva se persisten en llamadas separadas.

Antes de empezar

  • Trabajar dentro de Grupo Marea Demo y la ubicación Marea Gran Via.
  • Tener `reservation:view` o `reservation:manage` para abrir el detalle de la ocurrencia; para abrir y guardar el editor hace falta `reservation:manage`.
  • Tener `customer:manage` para que el guardado inline pueda crear o reutilizar el cliente; la pantalla también carga clientes con `customer:view`.
  • Existe una ocurrencia de servicio accesible desde `/:orgId/:locationId/reservations/:occurrenceId?returnRoute=LocationReservationsCalendar&returnMode=week`.
  • Para una reserva nueva, el operador puede pulsar `Nueva reserva`; para edición inline, existe una reserva sin `customer_id` vinculado.

Instrucciones

  1. 1.

    Abrir el detalle de la ocurrencia

    Entra en el detalle del servicio desde la agenda de reservas o con la ruta de la ocurrencia. La pantalla debe cargar el contexto del servicio, la lista de reservas, asignaciones de mesas y clientes disponibles.

  2. 2.

    Abrir el editor de reserva

    Pulsa `Nueva reserva` para crear una reserva o abre una reserva existente sin cliente desde la lista `Reservas` o desde el cronograma. El editor muestra `Nombre cliente` y `Teléfono cliente` dentro del formulario de reserva.

  3. 3.

    Rellenar los datos del cliente

    Introduce nombre y teléfono. Al guardar, la app envía esos datos a `POST /api/app/{orgId}/{locationId}/customers`; si ya existe un cliente local con el mismo `phone_e164`, el sistema reutiliza esa ficha y puede actualizar el nombre.

  4. 4.

    Completar la reserva

    Rellena comensales, estado, hora, duración y mesas cuando el modo de mesas lo requiera. En una reserva nueva creada desde este editor, la reserva se guarda con `channel: 'phone'`.

  5. 5.

    Guardar y comprobar el cierre

    Pulsa `Crear` o `Guardar`. La app recibe el `id` del cliente, lo incluye como `customer_id` en el alta o actualización de la reserva, refresca la ocurrencia y la lista de clientes, y cierra el editor si todo termina correctamente.

Validaciones y límites

  • Si faltan `orgId`, `locationId` u `occurrenceId`, la pantalla muestra un estado de no encontrado y no ejecuta el flujo.
  • Sin `reservation:view` ni `reservation:manage`, el usuario ve `No tienes permisos para ver reservas.`
  • `Nombre cliente` es obligatorio; si queda vacío, la pantalla muestra `El nombre del cliente es obligatorio.`
  • `Teléfono cliente` es obligatorio; si queda vacío, la pantalla muestra `El teléfono del cliente es obligatorio.` No se encontró validación de formato E.164 más allá del teclado `phone-pad`.
  • `partySize` debe ser numérico y mayor que 0 antes de crear cliente o reserva.
  • Si el modo de mesas no es `indifferent`, debe haber al menos una mesa válida seleccionada.
  • `POST /customers` requiere `customer:manage`; si el permiso falta, el operador puede abrir el editor con `reservation:manage`, pero el guardado inline fallará al crear el cliente.
  • El cliente se asigna a la ubicación del contexto backend; cualquier `location_id` enviado desde UI no decide el alcance.
  • El backend de reservas acepta `customer_id` solo si el cliente existe y pertenece a la misma ubicación o es global.
  • Cliente y reserva se guardan en llamadas separadas. Si se crea el cliente pero falla el `POST` o `PUT` de reservas, el editor muestra el error y permanece abierto, sin rollback compartido.
  • Si la actualización de la reserva requiere `confirm_manual_mode`, el cliente puede haberse creado antes de la confirmación; el vínculo con la reserva se persiste solo cuando el operador confirma.

Resultado esperado

La reserva queda creada o actualizada con `customer_id` enlazado al cliente creado o reutilizado, la ocurrencia se refresca, `customersQuery` vuelve a cargar y el editor se cierra cuando el guardado termina sin errores.

Artículos relacionados