Saltar a contenido

Cumplimiento RD 8/2019 - Registro de Jornada

Este documento describe cómo DENPORA 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 (tope ordinario derivado de weekly_hours y periodo)

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 (informe, no sustituye convenio)

  • El RD-ley 8/2019 exige registro fiable de jornada; no define en el propio texto cómo debe calcularse el desglose «ordinarias / extraordinarias» en nómina. Eso depende del contrato, del convenio colectivo y del Estatuto de los Trabajadores (límites, compensación, registro de extras, etc.).
  • En DENPORA el informe usa staff.weekly_hours y un tope ordinario mensual por mes natural: en cada mes, tope_mes = weekly_hours × (días del periodo del informe que caen en ese mes) / 7; las horas fichadas en ese mes por encima del tope se muestran como extra. Es una aproximación orientativa alineada con un cómputo mensual típico de nómina; la empresa debe contrastar con su convenio (periodo de cómputo semanal/mensual, horas complementarias, etc.).
  • 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.