Columnas de la exportación

La exportación del registro de jornada (ver Acceso y copia del registro) tiene columnas estables: el nombre de cada columna es una clave en inglés que no se traduce y no cambia de un idioma a otro. Si quieres importar el fichero en otro sistema, puedes confiar en ellas: cuando se añade una columna va al final de su sección, y ninguna se renombra ni se quita.

Cómo es el fichero

  • El CSV es un único fichero con todas las secciones. Su primera columna es section (entry, change, day_total o month_total) y después van las columnas de las cuatro secciones, una detrás de otra; las que no aplican a una fila quedan vacías. Lleva marca BOM (se abre bien en Excel) y las celdas que podrían interpretarse como una fórmula se neutralizan.
  • El Excel (XLSX) lleva una hoja info (empresa, CIF, rango, zona horaria, vista y fecha de la descarga) y una hoja por sección: entries, changes, day_totals y month_totals, cada una solo con sus columnas.
  • Los instantes van en ISO 8601 con el desfase de la zona horaria de la empresa (2026-10-15T09:00+02:00), los días como AAAA-MM-DD y los meses como AAAA-MM. Las duraciones son minutos enteros, los booleanos true o false y los valores enumerados van por su código.
  • Lo que no aplica o no se registró va vacío: People no inventa datos.
  • En la vista minimizada de la representación legal el NIF, las IP y las medidas de conciliación (clave y texto) siguen siendo columnas, pero vacías, para que el fichero tenga la misma forma para todos.

Tramos: entries (entry)

Una fila por tramo (el asiento de inicio y, si lo hay, el que lo cierra). Los tramos anulados también salen, marcados.

ColumnaQué contiene
employee_idIdentificador de la persona
employee_last_nameApellidos
employee_first_nameNombre
employee_tax_idNIF/NIE (vacío en la vista minimizada)
dateDía del inicio, en la zona de la empresa
kindSituación: WORK (jornada), BREAK (pausa), WAITING (espera), ON_CALL (a disposición) o DISCONNECTION_INTERRUPTION
startInstante de inicio
endInstante de fin (vacío si no hay salida)
duration_minutesDuración del tramo en minutos
start_clocking_idIdentificador del asiento de inicio
end_clocking_idIdentificador del asiento de fin
start_channelCanal con el que se practicó el inicio: WEB, MCP, CHAT, SYSTEM, TECHNICAL_INCIDENT o LEGACY (anterior al historial)
end_channelCanal del fin, con los mismos valores
modalityON_SITE (presencial) o REMOTE (a distancia)
hours_natureORDINARY, OVERTIME o COMPLEMENTARY
overtime_compensationREST (descanso) o PAY (retribuidas), en las extraordinarias
force_majeuretrue si son horas por fuerza mayor
conciliation_measure_keyClave de la medida de conciliación (vacía en la vista minimizada)
conciliation_measure_textDetalle de la medida (vacío en la vista minimizada)
automatic_endtrue si el fin lo puso el cierre automático anterior a este registro
incompletetrue si es una entrada sin salida de un día ya terminado
voided_atInstante en que se anuló el tramo
end_voided_atInstante en que se anuló solo la salida
has_conciliation_measuretrue si el tramo lleva una medida (es lo único que ve la representación)

Modificaciones: changes (change)

Una fila por cada revisión aplicada y por cada propuesta de cambio, con quién propone, quién autoriza, la discrepancia y las marcas de «posterior al cierre» y de incidencia técnica.

ColumnaQué contiene
employee_id, employee_last_name, employee_first_nameLa persona afectada
recordrevision (cambio aplicado) o proposal (propuesta)
idIdentificador de la fila
proposal_idPropuesta de la que viene una revisión
clocking_idAsiento afectado
actionCREATE (alta), MOVE (cambio de hora), VOID (anulación) o RECLASSIFY (reclasificación)
atInstante del cambio
statusPENDING, ACCEPTED, REJECTED o WITHDRAWN
channelCanal por el que se hizo
technical_incidenttrue si es una incidencia técnica
after_closetrue si es posterior al cierre del mes
reasonMotivo del cambio
before, afterCómo estaba y cómo queda el asiento (en JSON)
authorQuién hizo el cambio
author_ipIP desde la que se hizo (vacía en la vista minimizada)
proposed_byQuién propuso
proposed_forEn nombre de qué parte: EMPLOYEE o COMPANY
proposer_ipIP de quien propuso
decided_byQuién decidió
decided_forEn nombre de qué parte decidió
decided_atInstante de la decisión
decider_ipIP de quien decidió
decision_reasonMotivo de la decisión, si se rechazó
employee_discrepancyDiscrepancia de la persona
discrepancy_atCuándo la dejó
applied_atCuándo se aplicó al registro
representation_notified_atCuándo se avisó a la representación legal

Totales diarios: day_totals (day_total)

Una fila por persona y día. Todos los tiempos están en minutos.

ColumnaQué contiene
employee_id, employee_last_name, employee_first_nameLa persona
dateEl día
worked_minutesTrabajo efectivo (incluye las interrupciones de la desconexión)
ordinary_minutesDe ello, ordinarias
overtime_minutesDe ello, extraordinarias
complementary_minutesDe ello, complementarias
unclassified_minutesDe ello, sin clasificar (no se usa la propuesta, solo lo guardado)
break_minutesPausas
waiting_minutesEsperas
on_call_minutesTiempo a disposición
disconnection_minutesInterrupciones de la desconexión (ya incluidas en el trabajo efectivo)
incompletetrue si hay entradas sin salida ese día
workday_regimeFULL_TIME o PART_TIME, según el contrato vigente
part_time_percentagePorcentaje de la jornada parcial
schedule_modeFIXED o FLEXIBLE
ordinary_limit_exceededtrue si se supera el máximo diario de ordinarias
short_rest_minutesMinutos de descanso desde la jornada anterior, si fue menos de 12 horas

Totales mensuales: month_totals (month_total)

Una fila por persona y mes. Repite las nueve columnas de minutos de los totales diarios (worked_minutes … disconnection_minutes), ahora sumadas por mes, y añade:

ColumnaQué contiene
employee_id, employee_last_name, employee_first_nameLa persona
monthEl mes (AAAA-MM)
days_workedDías con trabajo
incomplete_daysDías incompletos
flexible_target_minutesObjetivo del mes en horario flexible
flexible_worked_minutesTrabajado en el mes en horario flexible
flexible_excess_minutesExceso sobre el objetivo (nunca negativo)
flexible_deficit_minutesDéficit respecto del objetivo (nunca negativo)

El cómputo flexible solo sale en los meses enteros que caen dentro del rango descargado. El saldo va partido en exceso y déficit, dos columnas que nunca son negativas.

Columnas de la exportación