Reportes PDF de Fichajes¶
Endpoints dedicados a la generación de reportes en formato PDF para el control de horas y cumplimiento normativo.
✅ Generar Reporte PDF Individual por Empleado¶
Método/Ruta: GET /api/v2/timerecord/history/employee/pdf/:employeeId
Auth: Bearer JWT (rol: Superadmin)
Descripción: Genera un PDF compilado con los fichajes de un empleado. Permite filtrar por mes, rango personalizado o curso escolar completo.
Params¶
| Param | Tipo | Ubicación | Requerido | Descripción | Ejemplo |
|---|---|---|---|---|---|
employeeId |
number | path | ✅ | ID del empleado | 4 |
mode |
string | query | ✅ | Modo: by_month, range, full_course |
range |
month |
number | query | ⚠️ | Mes (1-12). Requerido si mode=by_month |
1 |
year |
number | query | ⚠️ | Año. Requerido si mode=by_month |
2026 |
startDate |
string | query | ⚠️ | Inicio (ISO). Requerido si mode=range |
2025-12-15 |
endDate |
string | query | ⚠️ | Fin (ISO). Requerido si mode=range |
2025-12-31 |
schoolCourseId |
number | query | ❌ | ID del curso escolar (opcional, para contexto de festivos/lectivos) | 10 |
Variantes y Ejemplos¶
1. Reporte Mensual¶
Obtiene los fichajes de un mes específico.
curl -X GET "http://localhost:7001/api/v2/timerecord/history/employee/pdf/4?mode=by_month&month=1&year=2026" \
-H "Authorization: Bearer <TOKEN>" \
--output fichajes-empleado-4-enero-2026.pdf
2. Reporte por Rango de Fechas (Personalizado)¶
Útil para periodos irregulares (ej. vacaciones, bajas, auditorías). Se puede especificar schoolCourseId para asegurar el contexto correcto del calendario escolar.
curl -X GET "http://localhost:7001/api/v2/timerecord/history/employee/pdf/4?mode=range&startDate=2025-12-15&endDate=2025-12-31&schoolCourseId=10" \
-H "Authorization: Bearer <TOKEN>" \
--output fichajes-empleado-4-rango-dic.pdf
year es opcional en este modo si las fechas ya incluyen el año, pero puede enviarse por consistencia).
3. Reporte de Curso Escolar Completo¶
Genera un informe extenso con todos los fichajes del curso activo (o el especificado en schoolCourseId).
curl -X GET "http://localhost:7001/api/v2/timerecord/history/employee/pdf/4?mode=full_course" \
-H "Authorization: Bearer <TOKEN>" \
--output fichajes-empleado-4-curso-completo.pdf
✅ Generar Reporte Global de Fichajes¶
Método/Ruta: GET /api/v2/timerecord/history/report/pdf
Auth: Bearer JWT (rol: Superadmin)
Descripción: Genera un listado masivo de fichajes de todos los empleados. Diseñado para informes de RRHH, inspecciones o archivo mensual.
Params¶
| Param | Tipo | Requerido | Descripción | Ejemplo |
|---|---|---|---|---|
mode |
string | ❌ | by_month (default) o full_course |
full_course |
month |
number | ⚠️ | Requerido si mode=by_month |
1 |
year |
number | ⚠️ | Requerido si mode=by_month |
2026 |
schoolCourseId |
number | ❌ | Filtrar por curso específico | 5 |
onlyWithRecords |
boolean | ❌ | true: Ignora empleados sin fichajes |
true |
showOpenIncidents |
boolean | ❌ | false: Oculta tabla de incidencias abiertas |
false |
showProblemRecords |
boolean | ❌ | false: Oculta fichajes con problemas |
true |
compact |
boolean | ❌ | true: Ahorra papel cortando tablas |
false |
Variantes y Ejemplos¶
1. Reporte Mensual Global¶
El uso más común para el cierre de nóminas/mes.
curl -X GET "http://localhost:7001/api/v2/timerecord/history/report/pdf?month=1&year=2026" \
-H "Authorization: Bearer <TOKEN>" \
--output reporte-global-enero-2026.pdf
2. Reporte de Curso Completo (Filtrado)¶
Ejemplo avanzado: Curso completo, solo empleados que hayan fichado, y ocultando las incidencias para un reporte más limpio/externo.
curl -X GET "http://localhost:7001/api/v2/timerecord/history/report/pdf?mode=full_course&onlyWithRecords=true&showOpenIncidents=false" \
-H "Authorization: Bearer <TOKEN>" \
--output reporte-global-curso-clean.pdf
3. Reporte Compacto¶
Usa compact=true para reducir el número de páginas, permitiendo que las tablas de fichajes de un empleado continúen en la siguiente columna o página inmediatamente sin saltos de página forzados por empleado.