Cómo crear un cierre por vacaciones de ubicación
Registra un cierre total de la ubicación activa durante un rango de fechas. Antylogic lo guarda como evento `location_vacation` y lo muestra en el calendario de vacaciones.
En este artículo
Este flujo sirve para cerrar temporalmente toda la ubicación, como Marea Gran Via en Grupo Marea Demo. No registra vacaciones de un empleado: el cierre queda asociado al local completo.
Antes de guardar, conviene revisar el calendario y las reservas del periodo. Las reservas activas bloquean el cierre; las reservas canceladas no lo bloquean.
Antes de empezar
- Sesión iniciada con Grupo Marea Demo y la ubicación Marea Gran Via activas.
- Permiso `vacation:manage` sobre la ubicación. `vacation:view` permite consultar el calendario, pero no guardar el cierre.
- Fechas de comienzo y fin definidas para el cierre.
- El rango no debe tener reservas activas.
- Para capturas sin modificar datos, usar el cierre sembrado del demo ES, como `Cierre parcial por inventario`.
Instrucciones
- 1.
Abre el calendario de vacaciones
Entra en `calendars/vacations?mode=month` para revisar vacaciones, bloqueos y cierres existentes antes de crear uno nuevo.
- 2.
Inicia el formulario de creación
Desde el calendario, crea una vacación y cambia el alcance con `Cierre total por vacaciones`. En un flujo documental también se puede abrir directamente `calendars/create?kind=location_vacation&preset=vacations`.
- 3.
Confirma el cierre de ubicación
Mantén activado `Cierre total por vacaciones`. Con este alcance, el formulario crea un evento `location_vacation`; no muestra selector de empleado ni guarda `staff_id`.
- 4.
Define comienzo y fin
Selecciona las fechas de `Comienzo` y `Fin`. La app guarda el cierre como evento de día completo, con inicio a `00:00` y fin a `23:59` en la zona horaria de Marea Gran Via, `Europe/Madrid`.
- 5.
Añade notas opcionales
Usa `Notas` para indicar el motivo del cierre. Si se rellena, se guarda como `payload.reason`; si queda vacío, el cierre se puede crear sin motivo.
- 6.
Guarda el cierre
Pulsa `Crear vacaciones`. La app llama a `POST /api/app/{orgId}/{locationId}/calendar-events`, crea el evento `location_vacation` y vuelve a la ruta indicada por `returnRoute`.
- 7.
Comprueba el resultado
Vuelve al calendario mensual de vacaciones y revisa el rango creado. El cierre aparece como evento de ubicación, separado de las vacaciones del personal.
Validaciones y límites
- La app necesita `selectedOrgId` y `selectedLocationId`; si faltan, muestra `No encontramos la ubicación solicitada.`
- El formulario queda bloqueado si el usuario no cumple `canManageVacationForm`.
- Las fechas deben ser parseables y `Comienzo` debe ser anterior a `Fin`; para `location_vacation` no se exige `staffId`.
- Si hay reservas activas dentro del rango, el backend rechaza el cierre con `error.calendar.location_vacation.reservations` e informa los días afectados.
- Si solo hay ocurrencias de servicio solapadas sin reservas bloqueantes, el backend puede limpiar esas ocurrencias antes de persistir el cierre.
- `payload.reason` solo se acepta como string opcional. El cierre no guarda `payload.status`.
- La recurrencia no está permitida para `location_vacation`.
- No existe endpoint específico de `location_vacation`; la creación usa la superficie genérica `calendar-events`.
Resultado esperado
El cierre queda registrado como `calendar_event` de tipo `location_vacation`, con `all_day` activo, sin empleado asociado y visible en el calendario de vacaciones de la ubicación.