Cumplimiento RD 8/2019 - Registro de Jornada
Este documento describe cómo GekkoCheckin cumple con el Real Decreto-ley 8/2019 de 8 de marzo (medidas urgentes de registro de jornada laboral).
Requisitos legales
| Requisito | Estado | Implementación |
|---|---|---|
| Registro diario de inicio y fin | ✅ | Tabla time_control con timein, timeout |
| Identificación del trabajador | ✅ | Campo user (FK a usuario) |
| Registro fiable e inalterable | ✅ | Base de datos, auditoría en time_change |
| Trazabilidad de modificaciones | ✅ | Tabla time_change con old/new, quien solicitó, quien aprobó |
| Horas extraordinarias identificables | ✅ | Informes con desglose regular/extra según weekly_hours |
Registros de actividad
1. Fichajes (clock-in / clock-out)
- time_control: Cada entrada/salida se registra con timestamp exacto.
- timein_session / timeout_session: Se guarda la sesión que realizó el fichaje (quién fichó).
- No se permite modificación directa: cualquier cambio pasa por
time_changecon flujo de aprobación.
2. Modificaciones (time_change)
Cuando un empleado o gestor solicita cambiar una hora:
- Se crea un registro en
time_changecon: old_value,new_value: valores antes y despuésrequested_by: quien solicitómodified_session: sesión que realizó la peticiónreason: motivo opcionalaccepted: NULL (pendiente), 1 (aceptada), 0 (rechazada)accepted_by,reviewed_by: quien aprobó/rechazó-
accepted_at: cuándo se resolvió -
El registro en
time_controlno se modifica hasta que un gestor apruebe. - Historial completo e inmutable (no se borran registros de
time_change).
Cálculo de jornadas
Horas trabajadas
- Por cada registro cerrado:
timeout - timein= horas de la jornada. - Sin pausas intermedias: el tiempo entre entrada y salida se considera trabajo efectivo (presunción legal si no se registran pausas).
Horas extras
- Se usa
staff.weekly_hours(horas contratadas semanales). - Por periodo:
contracted = weekly_hours × (días_periodo / 7). overtime = max(0, total_horas - contracted).- Los informes muestran desglose: horas regulares vs horas extra por empleado.
Pausas
- No implementadas en el modelo actual.
- La ley no exige registrar pausas, pero si no se registran, todo el tiempo entrada–salida se presume trabajado.
- Para futuro: se podría añadir eventos PAUSE/RESUME como en Pispas.
Endpoints relevantes
| Endpoint | Uso |
|---|---|
POST /time-control/clock-in |
Registrar entrada |
POST /time-control/clock-out |
Registrar salida |
GET /time-control/places/:id/history?start=&end= |
Historial con filtro de fechas |
POST /time-control/:id/changes |
Solicitar modificación |
GET /places/:id/pending-changes |
Modificaciones pendientes |
POST /time-change/:id/review |
Aprobar/rechazar modificación |
Conservación de datos
- Los registros de
time_controlytime_changese conservan sin borrado lógico en operación normal. - El esquema incluye
createdyupdatedpara trazabilidad temporal.