Gestión de Jornadas y Fichajes

Creado por Marta Paniagua, Modificado el Mar, 5 May a 9:11 A. M. por Marta Paniagua

Disponible a partir de la versión 9.0.0.1


Sistema centralizado para el registro de entradas y salidas, asignación automática de jornadas laborales, gestión de turnos y recálculo de métricas de asistencia.

¿Qué es el sistema de fichajes?

El sistema de fichajes registra automáticamente las entradas y salidas de los empleados. Cada fichaje que llega al sistema es procesado para determinar a qué jornada laboral pertenece y qué turno le corresponde. El circuito completo abarca desde la inserción del fichaje hasta el cálculo de métricas de horas trabajadas, incidencias y estado de validación.

Tipos de Empleados

EPF Empleado Planificado con Fichaje

Tiene un turno asignado (ej: 08:00 a 16:00). El sistema compara la hora del fichaje con la ventana de su turno y lo asigna automáticamente a la jornada correcta.

  • Asignación precisa y automática
  • Soporte de turnos nocturnos (cruce de medianoche)
  • Soporte de guardias largas (>12 horas)
  • Detección de fichajes fuera de horario
ETSP Empleado Sin Turno Planificado

No tiene turno asignado. El sistema agrupa sus fichajes en jornadas usando reglas de tiempo:

  • Descanso mínimo: gap mayor al umbral configurado → nueva jornada
  • Duración máxima: jornada supera el límite y el fichaje es de otro día → nueva jornada
Importante: Los turnos de guardia (>12h) deben ser siempre empleados planificados (EPF).

Jerarquía de Resolución de Turno

El sistema busca el turno más específico disponible para cada empleado y fecha. La fuente con menor nivel (más específica) siempre gana:

NivelOrigenTabla
-1Jornada ya calculadaEmployees_Assistence
0Horario individual del empleadoEmployees_Schedule
1Regla de turno modificadoEmployees_Rules_Periods + Rules
4Periodo de turno del empleadoEmployees_Shifts_Periods
5Horario de grupoGroups_Schedule
7Periodo de unidad organizativaUnits_Shifts_Periods
10Periodo de centro de trabajoOffice_Shifts_Periods

Flujo de Procesamiento de un Fichaje

1
Registro
Se graba la entrada (E) o salida (S) con hora exacta en Markings
2
Asignación de jornada
EPF: compara con ventana de turno. ETSP: aplica reglas de descanso mínimo.
3
Emparejamiento
Fichajes E/S se emparejan automáticamente en MarkingsPair
4
Actualización de jornada
Se crea/actualiza la fila en Employees_Assistence con métricas e incidencias.

Ventana de Turno (EPF)

Para empleados planificados, cada turno define una ventana temporal con márgenes de tolerancia. Un fichaje dentro del rango [LowerLimit, UpperLimit] se asigna a este turno:

LowerLimit
ShiftStart − ToleranciaEntrada
────────
ShiftStart
Inicio de turno
════════
ShiftEnd
Fin de turno
────────
UpperLimit
ShiftEnd + ToleranciaSalida
Un fichaje fuera de este rango recibe ShiftId = -1 (fallback sin planificación) o se asigna al siguiente nivel de la jerarquía.

Recálculo de Jornadas (Refresh)

¿Cuándo se ejecuta?

  • Al insertar, editar o borrar un fichaje
  • Al cambiar el turno o planificación
  • Al ejecutar recálculo manual desde la interfaz

Versiones del proceso

Incremental (por defecto)
Actualiza solo lo necesario. Sin riesgo de pérdida de horas extras manuales ni incidencias.
Destructiva (fallback)
Borra y reconstruye desde cero. Conservada para casos excepcionales. Usa Save/Restore de OT e incidencias.

Protecciones durante recálculo

  • Fichajes fijados (SetDateJourney=1): no se sobreescriben
  • Fichajes cerrados (Closed=1): no se procesan
  • Jornadas cerradas (StatusId ≥ 2): no se recalculan
  • Jornadas validadas (StatusId = 1): se recalculan y quedan marcadas como sucias

Flags Especiales de Fichajes

CampoComportamiento
SetDateJourney = 1Jornada fijada manualmente. El refresh no la sobreescribe. Útil para correcciones manuales.
Closed = 1Fichaje cerrado/bloqueado. No editable ni procesable por el sistema automático.
NoAutoCalculatePairs = 1Bypass del trigger de inserción. Para inserts masivos sin asignación automática.
Ignore = 1Fichaje ignorado en cálculos. No se tiene en cuenta para métricas ni pares.

Métricas de Descansos Individuales

El sistema persiste el detalle de cada pausa/descanso realizado durante la jornada, con tiempos teóricos, reales y redondeados, permitiendo un reporting granular y auditoría completa.

Importante: Las métricas de descansos se calculan exclusivamente durante la validación de jornadas (StatusId: 0 → 1), no durante el fichaje, para preservar el rendimiento del proceso crítico de clock-in.
Datos teóricos
  • Hora teórica inicio / fin
  • Duración teórica en minutos
  • Minutos computables configurados
Datos reales
  • Hora real inicio / fin
  • Duración real en minutos
  • Desviación vs. teórico
Datos redondeados
  • Hora redondeada inicio / fin
  • Duración redondeada
  • Aplica solo a NotBelongWorkingDay

Parámetros de Configuración Clave

ParámetroQué controlaAplica a
MinBreakBetweenWorkingDaysHoras de separación para que el sistema considere una nueva jornada (ej: 8h)ETSP
HoursUntilNewWorkdaySi la jornada supera estas horas y el fichaje es de otro día → nueva jornada. 0 = desactivado.ETSP
ShiftLimitMinutes[Lower/Upper]Minutos de tolerancia antes y después del turno para aceptar un fichajeEPF

Preguntas Frecuentes

¿Por qué un fichaje aparece en una jornada incorrecta?
  • Revisa si el empleado tiene el turno correcto asignado para esa fecha.
  • Si es ETSP, puede que el descanso mínimo configurado no sea adecuado.
  • Si el fichaje está "fijado" (SetDateJourney=1), el sistema no lo moverá aunque recalcule.
¿Por qué un fichaje no tiene jornada asignada?
  • El fichaje puede estar fuera de la ventana de cualquier turno.
  • El empleado puede no tener planificación para esa fecha (recibe ShiftId = -1).
¿Las horas extras manuales se pierden al recalcular?

No. El nuevo motor de recálculo incremental protege las horas extras registradas manualmente y las 

¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo