Ir al contenido principal

Lista de Asistencias (1) - [getMarkingsApp]

🧾 Descripción

Este servicio obtiene y consolida todas las asistencias de un empleado en un mes específico, calculando:

  • Porcentaje de asistencia del mes.

  • Total de días asistidos.

  • Permisos.

  • Faltas.

  • Feriados.

  • Días de descanso.

  • Marcaciones incompletas.

  • Fechas únicas de asistencia.

Además, toma en cuenta:

  • Fecha de ingreso del trabajador (para no contar días previos como faltas).

  • Domingos y feriados declarados en holidays.json.

  • Validación de límites según el mes actual.

Es un endpoint fundamental para el módulo de Control de Asistencias dentro del aplicativo.


🚀 Endpoint

POST /get-markings-app

📥 Requiere parámetros obligatorios en el body:

{ "employee": "EMP-0001", "month": "02", "anio": "2025", "fechaIngreso": "2024-10-15" }


🔐 Seguridad

Requiere autenticación interna del sistema ERP mediante:

  • dbErp() para consultas SQL internas.

  • Acceso a archivo local /public/recursos_humanos/holidays.json.


🧠 Flujo del Servicio (resumen real)

  1. Recibe parámetros del empleado y mes a consultar.

    employee, month, anio, fechaIngreso

  2. Calcula rango real del mes a evaluar, tomando en cuenta:

    • Si es el mes actual.

    • Si el empleado ingresó después del día 1.

    • Días previos al ingreso del trabajador.

  3. Carga feriados y domingos del archivo JSON:

    /public/recursos_humanos/holidays.json

  4. Determina cuántos días del mes son feriados o domingos dentro del rango permitido.

  5. Valida campos obligatorios.

  6. Consulta en el ERP todas las asistencias del empleado en el mes:

FROM tabAttendance WHERE employee = <empleado> AND attendance_date BETWEEN 1 y último día del mes AND status IN ('Present','Marcacion Incompleta','On Leave','Absent','Día de Descanso','Feriado')

  1. Recorre todas las asistencias y clasifica:

    • Present → Suma asistencia

    • On Leave → Permisos

    • Absent → Faltas

    • Feriado → Feriados

    • Día de Descanso → Descansos

    • Marcacion Incompleta → Marcaciones incompletas

  2. Calcula porcentaje de asistencia, considerando:

    • Días previos al ingreso.

    • Si el mes es el actual → hasta el día de hoy.

    • Casos especiales de permisos dominicales.

  3. Construye respuesta final con totales y fechas.


📥 Request Body

{ "employee": "EMP-0001", "month": "03", "anio": "2025", "fechaIngreso": "2024-10-10" }

📌 Todos son obligatorios.


📤 Response 200 – Ejemplo

{ "valor": true, "msn": "LISTA DE ASISTENCIAS", "data": { "porcentage": "92.55", "dias_aistidos": "25", "dias_totales": "27", "permisos": "1", "faltas": "0", "marcacion_incompleta": "1", "fechas_asistidas": [ "2025-03-01", "2025-03-02", "2025-03-03" ], "feriados": "1", "descansos": "4", "dias_permisos": [ "2025-03-08" ], "dias_tardanzas": [ "2025-03-15" ], "dias_faltas": [], "dias_feriados": [ "2025-03-29" ], "dias_descansos": [ "2025-03-02", "2025-03-09" ] } }


❗ Posibles Errores

1. Faltan parámetros obligatorios

{ "valor": false, "msn": "Complete todos los campos" }

2. No existe asistencia registrada

{ "valor": true, "msn": "LISTA DE ASISTENCIAS", "data": { "porcentage": "0", "dias_asistidos": "0", "dias_totales": "0", ... } }

3. Error interno inesperado

{ "valor": false, "msn": "Error inesperado en el servicio", "data": [] }


📚 Estructuras usadas

Attendance (tabAttendance)

Campos consultados:

  • attendance_date

  • status

  • horas_trabajadas

  • horas_extras

  • name

Archivo holidays.json

Estructura:

{ "Sunday": ["2025-03-02", "2025-03-09"], "Holidays": ["2025-03-29"] }


🧩 Lógica en pseudo-código

input: employee, month, anio, fechaIngreso validar campos requeridos calcular fecha_inicio y fecha_fin según: - mes actual - fecha de ingreso del empleado cargar feriados y domingos (holidays.json) contar días dentro del rango consultar asistencias en ERP: SELECT attendance_date, status FROM tabAttendance WHERE employee = employee AND status IN (...) inicializar contadores foreach asistencia in resultado: clasificar según status acumular días, permisos, faltas, descansos, feriados calcular porcentaje de asistencia return { valor: true, data: {...} }