Cómo editar una asistencia manual
Permite corregir la hora de entrada o salida de una asistencia ya registrada para un empleado, manteniendo el empleado y el origen original del registro.
En este artículo
La edición de asistencia manual trabaja sobre un evento de calendario de tipo `staff_shift`. El responsable abre una asistencia existente, ajusta la entrada o salida y Antylogic conserva la relación con el empleado, la ubicación y el origen del registro.
En el ejemplo documental se usa Grupo Marea Demo, la ubicación Marea Gran Via y Marta Ruiz. La pantalla está pensada para una corrección operativa de manager, no para cambiar el empleado ni recrear el turno desde cero.
Antes de empezar
- Tener sesión iniciada en Grupo Marea Demo con Marea Gran Via seleccionada.
- Contar con `staff-shifts:view` para cargar la asistencia y `staff-shifts:manage` para guardarla.
- Debe existir una asistencia de tipo `staff_shift` en la ubicación activa, con empleado asignado, entrada y salida válidas.
- Si la pantalla necesita mostrar nombres o avatar, el usuario puede necesitar `staff:view`.
Instrucciones
- 1.
Abre el historial de asistencia
Entra en Asistencia del empleado o en el calendario de personal. En el ejemplo, localiza los registros de Marta Ruiz en Marea Gran Via antes de abrir el turno que necesita ajuste.
- 2.
Abre la asistencia que vas a editar
Selecciona el registro. La app abre `calendars/edit/:eventId?kind=staff_shift`; si el evento no existe, es de otra ubicación o no es `staff_shift`, muestra que no encuentra el evento solicitado.
- 3.
Comprueba empleado y origen
Antes de cambiar horas, revisa empleado y origen. En edición el empleado aparece en solo lectura y el origen se conserva como `manual`, `clock_in`, `import` o `correction`.
- 4.
Ajusta entrada o salida
Modifica `Empieza` o `Termina` usando la hora local de la ubicación. Para Marea Gran Via se trabaja con `Europe/Madrid` y pasos de 15 minutos.
- 5.
Guarda los cambios
Pulsa Guardar cuando haya cambios válidos. Antylogic actualiza el evento de calendario, refresca calendarios y listados, muestra `Evento actualizado correctamente.` y vuelve a la pantalla de origen.
- 6.
Resuelve una corrección pendiente si aparece
Si la asistencia trae `correction_requested`, el mismo formulario bloquea las fechas, deja editable solo la hora pendiente y cambia el CTA a aceptar o rechazar la corrección. La resolución observada se persiste como `correction_made`, sin estado `rejected` independiente.
Validaciones y límites
- La organización y ubicación activas deben existir antes de renderizar el formulario.
- `eventId` debe venir en la ruta y el detalle cargado debe tener `kind === 'staff_shift'`.
- Para guardar desde esta UI hace falta `staff-shifts:manage`; `staff-shifts:notify` no habilita esta edición manual de responsable.
- La entrada y la salida deben ser fechas y horas válidas, y la entrada debe ser anterior a la salida.
- El formulario exige empleado y salida informada; aunque el backend admita conceptualmente turnos abiertos, esta pantalla no guarda sin salida.
- Guardar queda deshabilitado si no hay cambios, si el formulario es inválido o mientras la actualización está pendiente.
- El backend no permite cambiar `kind`, no acepta recurrencia para `staff_shift` y valida que `source` sea `manual`, `clock_in`, `import` o `correction`.
- El empleado y el origen no se editan desde esta pantalla en modo edición.
- El flujo implementado usa `PUT /api/app/{orgId}/{locationId}/calendar-events/{eventId}`; la ruta histórica `/staff/{staffId}/shifts/{shiftId}` no debe documentarse como edición manual implementada.
- Si la API falla, el usuario permanece en el formulario y ve el error recibido o `No se pudo actualizar el evento.`
Resultado esperado
La asistencia queda actualizada en `calendar_events`, los calendarios y listados se refrescan, y el historial mantiene el empleado y el origen original del registro.