Cómo registrar una salida
Cierra el turno abierto de un empleado desde la pantalla de asistencia y deja registrada la hora de salida en el historial del equipo.
En este artículo
Registrar una salida sirve para cerrar una jornada que ya tiene entrada abierta. En el demo se documenta con Marta Ruiz en Grupo Marea Demo / Marea Gran Via.
La app detecta el turno abierto del empleado, confirma la acción `Salida` y guarda la salida como cierre del `staff_shift` correspondiente. Si no hay entrada abierta, deriva el caso a una corrección para mantener trazabilidad.
Antes de empezar
- Sesión iniciada en Grupo Marea Demo y en la ubicación Marea Gran Via.
- Marta Ruiz debe existir como empleada de la ubicación seleccionada.
- Para una salida normal, Marta Ruiz debe tener una entrada registrada sin salida.
- El usuario debe tener `staff-shifts:notify` en la ubicación o estar registrando su propia salida por autoservicio.
Instrucciones
- 1.
Abre la asistencia del empleado
Entra en `attendance?staff=${STAFF_ID}` para abrir Asistencia con Marta Ruiz seleccionada. La pantalla carga el personal y los turnos para localizar si hay un turno abierto.
- 2.
Pulsa Salida
En la tarjeta de Marta Ruiz, pulsa `Salida`. La aplicación prepara la acción de cierre y abre el modal `Confirmar salida`.
- 3.
Confirma la salida
Revisa el modal y confirma. Si no se introduce una hora manual, la app usa la hora local actual en formato `HH:mm`; si la salida queda antes que la entrada local, se interpreta como salida del día siguiente.
- 4.
Comprueba el turno cerrado
Tras guardar, la app cierra el modal, actualiza los datos de asistencia y muestra `Turno actualizado`. El turno queda con hora de entrada y hora de salida.
- 5.
Resuelve una salida sin entrada abierta
Si se pulsa `Salida` sin turno abierto, la app muestra `No hay turno abierto. Se creará una corrección.` y solicita `Hora de entrada` para crear una corrección antes de registrar la salida.
Validaciones y límites
- La pantalla necesita un empleado seleccionado; si falta, muestra `Selecciona un empleado`.
- La salida directa requiere un turno abierto; si hay varios, se cierra el más reciente por hora de entrada.
- La acción enviada debe ser `exit` y `exit_time` debe tener formato `HH:mm`.
- La salida calculada debe ser posterior a la entrada y no puede quedar en el futuro.
- `staff-shifts:manage` no sustituye a `staff-shifts:notify` para registrar una salida como manager.
- El autoservicio solo permite fichar para el staff vinculado al usuario autenticado.
- `attendance/corrections` corresponde a la revisión de correcciones, no al registro normal de salida.
Resultado esperado
El turno abierto de Marta Ruiz queda cerrado como `StaffShift`, el `calendar_event` de tipo `staff_shift` guarda `exit_at` y la pantalla de asistencia se refresca con el cambio.