Saltar a contenido

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_change con flujo de aprobación.

2. Modificaciones (time_change)

Cuando un empleado o gestor solicita cambiar una hora:

  • Se crea un registro en time_change con:
  • old_value, new_value: valores antes y después
  • requested_by: quien solicitó
  • modified_session: sesión que realizó la petición
  • reason: motivo opcional
  • accepted: NULL (pendiente), 1 (aceptada), 0 (rechazada)
  • accepted_by, reviewed_by: quien aprobó/rechazó
  • accepted_at: cuándo se resolvió

  • El registro en time_control no 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_control y time_change se conservan sin borrado lógico en operación normal.
  • El esquema incluye created y updated para trazabilidad temporal.