Ir al contenido principal

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

🧾 Descripción

Valida si un empleado debe descargar su boleta de pago del mes anterior antes de poder registrar marcaciones o realizar solicitudes en el sistema.
La validación se aplica únicamente dentro de un periodo permitido (del día 1 al 3 del mes).

Este servicio combina datos entre:

  • Employee (ERP)

  • Salary Slip (Boleta de pago, ERP)

  • Estado Boleta Mensual (ERP)

  • historial_procesos_app (Base MySQL interna)

Permite determinar si el usuario:

  • No debe validar nada.

  • No tiene boleta para ese mes.

  • Tiene boleta habilitada y aún no la descargó → Debe descargarla.

  • Ya descargó → Se libera el acceso.


🚀 Endpoint

POST /get-download-boleta-pago

📥 Parámetros

Campo Tipo Requerido Descripción
empleado string ID del empleado (Employee.name)

🔐 Seguridad

El servicio requiere:

  • Acceso API válido al ERP (vía dbErp()).

  • Acceso a la base interna MySQL (mysql2).


🧠 Flujo del Servicio (resumen real)

1️⃣ Verifica si está dentro del rango permitido

  • Solo valida del día 1 al 3.

  • Si el día es mayor a 3 → no valida nada.

2️⃣ Obtiene datos del empleado

Consulta: 

GET tabEmployee fields = ["fecha_de_ingreso_real", "status"]

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

3️⃣ Determina el mes anterior

Se calcula:

  • Primer día del mes anterior

  • Último día del mes anterior

Se verifica que el empleado haya ingresado antes del fin del mes anterior.

4️⃣ Verifica si existe boleta del mes anterior

Consulta a ERP: 

tabSalary Slip WHERE employee = empleado AND posting_date BETWEEN primer_día_mes_pasado AND último_día_mes_pasado

Si no tiene boleta, no se valida nada.

5️⃣ Valida si el mes está habilitado para descarga

Consulta: 

tabEstado Boleta Mensual WHERE mes = <mes anterior en texto> AND año = <año> AND habilitado = 1

6️⃣ Consulta si el usuario ya descargó la boleta

Busca en MySQL: 

historial_procesos_app WHERE empleado = empleado AND proceso = 'NOMINA' AND month = mes AND year = año

Si no existe descarga previa y el mes está habilitado → debe descargar.


📤 Respuestas Posibles

✔️ 1. No está en rango de validación

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

✔️ 2. Empleado PreActivo

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

✔️ 3. No tiene boleta del mes

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

❌ 4. Debe descargar la boleta (regla principal)

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

✔️ 5. Ya descargó la boleta

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

✔️ 6. Error controlado

{ "status": true, "msn": "Se ha descargado el contrato de trabajo" }


📚 Tablas y esquemas usados

🔹 Employee (ERP)

Campos utilizados:

fecha_de_ingreso_real status

🔹 Salary Slip (ERP)

Campo utilizado: posting_date

🔹 Estado Boleta Mensual (ERP)

Campos utilizados:

mes año habilitado

🔹 historial_procesos_app (MySQL)

Campos usados:

empleado proceso month year

🗃 Lógica en pseudocódigo

if dia > 3: return OK empleado = GET Employee[name] if empleado.status == PreActivo: return OK fecha_ingreso < fin_mes_anterior ? if no tiene SalarySlip en mes anterior: return OK mes_habilitado = GET EstadoBoletaMensual[mes,año] descarga = buscar en historial_procesos_app if mes_habilitado AND no descarga: return OBLIGAR DESCARGA return OK