Ir al contenido principal

Obtiene descarga boleta de pago (2) - [getDownloadBoletaPago]

🧾 Descripción

Este servicio valida si un empleado debe descargar obligatoriamente su boleta de pago del último mes antes de poder realizar acciones como:

  • Registrar marcación

  • Registrar solicitudes en la app

  • Acceder a otros módulos operativos

El servicio evalúa:

  1. Si está dentro del rango de validación (solo del día 1 al 3 de cada mes).

  2. La fecha de ingreso del trabajador.

  3. Si tiene boleta generada el mes anterior.

  4. Si el mes correspondiente está habilitado para descarga.

  5. Si el empleado ya descargó la boleta (se revisa historial en MySQL).

  6. Si el empleado está PreActivo, no se valida la descarga.


🚀 Endpoint

GET /get-download-boleta-pago/{empleado}

📌 Parámetro obligatorio:

  • empleado → ID del Employee (name)


🔐 Seguridad

  • Requiere autenticación interna por el ERP mediante dbErp() y conexión MySQL interna.

  • El servicio está pensado solo para uso interno de la aplicación móvil corporativa.


🧠 Flujo del Servicio (resumen)

1️⃣ Validación de fecha

Solo se ejecuta validación si el día actual está entre 1 y 3.
Si el día > 3 → se omite toda validación:

{ "status": true, "msn": "No está dentro del rango de fecha de validación" }

2️⃣ Obtener información del empleado

Consulta ERP:

SELECT fecha_de_ingreso_real, status FROM `tabEmployee` WHERE name = <empleado>

Si el empleado está PreActivo, no se valida boleta:

{ "status": true, "msn": "No validar descarga de boleta en PreActivo" }

3️⃣ Comparar fecha de ingreso vs fecha límite

Se calcula:

  • Mes anterior

  • Último día del mes anterior

Solo se valida si el empleado ingresó antes del cierre del mes previo.


4️⃣ Verificar en MySQL si ya descargó la boleta

Consulta tabla historial_procesos_app:

WHERE empleado = ? AND proceso = 'NOMINA' AND month = <mes_anterior> AND year = <year_anterior>

Si no existe registro se sigue validación.


5️⃣ Validar si EXISTE boleta en ERP

Consulta Salary Slip del último mes:

SELECT posting_date FROM `tabSalary Slip` WHERE employee = ? AND posting_date between <primer_día_mes_anterior> AND <último_día_mes_anterior>

Si no tiene boleta:

{ "status": true, "msn": "No tiene boleta de pago por lo tanto no se valida" }

6️⃣ Validar si el mes está habilitado para descarga

Consulta:

SELECT name FROM `tabEstado Boleta Mensual` WHERE mes = <mes_texto> AND año = <year> AND habilitado = 1

Si está habilitado pero el trabajador NO la descargó, se bloquea:

{ "status": false, "msn": "Para poder registrar su marcación o realizar alguna solicitud, descargar su boleta pendiente del mes" }

7️⃣ Si pasa todas las validaciones → OK

{ "status": true, "msn": "Se ha descargado la boleta de pago" }

📥 Request

No usa body, solo el parámetro de ruta: empleado: string


📤 Response – Ejemplos

✔ Caso permitido (día fuera de rango)

{ "status": true, "msn": "No está dentro del rango de fecha de validación" }

✔ Empleado en PreActivo

{ "status": true, "msn": "No validar descarga de boleta en PreActivo" }

✔ No tiene boleta generada

{ "status": true, "msn": "No tiene boleta de pago por lo tanto no se valida" }

❌ No ha descargado la boleta y es obligatoria

{ "status": false, "msn": "Para poder registrar su marcación o realizar alguna solicitud, descargar su boleta pendiente del mes" }

✔ Todo correcto

{ "status": true, "msn": "Se ha descargado la boleta de pago" }

❗ Posibles errores

Error Descripción
Empleado no existe No se encuentra en ERP
No tiene boleta generada Salary Slip del mes anterior vacío
Boleta habilitada pero no descargada Bloquea marcación y solicitudes
Error en ERP o MySQL Respuesta capturada por el catch

🧩 Tablas consultadas

ERP (Frappe/ERPNext)

  • tabEmployee

  • tabSalary Slip

  • tabEstado Boleta Mensual

MySQL externo

  • historial_procesos_app


🗃 Pseudocódigo del servicio

if day > 3: return OK (no validar) empleado = GET Employee if empleado.status == PreActivo: return OK if fecha_ingreso < ultimo_dia_mes_anterior: verificar si ya descargó boleta en MySQL verificar si tiene boleta en ERP if no tiene: return OK verificar si mes habilitado if habilitado y no descargado: bloquear return OK