Ir al contenido principal

Obtiene descarga boleta de pago (1,2,3,4,5,6,7,8) - [getDownloadBoletaPago]

🧾 Descripción General

Este servicio valida si un empleado debe descargar su boleta de pago (Salary Slip) correspondiente al mes anterior.
La validación depende:

  • Del día del mes actual

  • Del estado del empleado

  • De si existe o no una boleta generada

  • De si dicha boleta está habilitada

  • De si ya registró una descarga previa

La lógica se usa para bloquear marcaciones o solicitudes cuando un trabajador tiene una boleta pendiente por descargar.


🚀 Endpoint


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

Parámetro Path:

Parámetro Tipo Requerido Descripción
empleado string Código del empleado (Employee.name en ERPNext).

🔐 Seguridad

No usa autenticación dentro de esta función, pero depende de endpoints internos ERPNext vía dbErp.
Se recomienda incluirlo dentro de rutas protegidas.


🧠 Flujo Lógico (Resumen Ejecutivo)

  1. Validación de fechas

    • Si el día actual es mayor a 3, no se hace validación → se retorna éxito.

  2. Consultar datos del empleado

    • Obtiene desde ERP:

      • fecha_de_ingreso_real

      • status

  3. Casos especiales por estado

    • Si el empleado está en PreActivo, no se valida.

  4. Determinar si corresponde validar

    • Calcula el último día del mes anterior.

    • Si el ingreso del trabajador es posterior a ese mes → no se valida.

  5. Validar si existe boleta generada

    • Consulta Salary Slip del mes anterior.

    • Si no existe boleta → no corresponde validar.

  6. Validar si la boleta mensual está habilitada (Estado Boleta Mensual)

    • Revisa si está habilitada para ese mes.

  7. Verificar si ya descargó boleta

    • Revisa tabla historial_procesos_app en MySQL.

    • Si no descargó → retorna mensaje de pendiente.

  8. Caso final

    • Si todo está correcto → retorna éxito.


📥 Request

Sin body.
Solo recibe el parámetro {empleado} en la URL.


📤 Responses

✔️ 200 – No corresponde validación (día mayor a 3)



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

✔️ 200 – Empleado en PreActivo



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

✔️ 200 – No corresponde validación (ingresó después)



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

❌ 200 – Boleta pendiente por descargar (validación negativa)



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

✔️ 200 – Boleta descargada previamente



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

✔️ 200 – Error capturado (retorna como éxito)

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

Este mensaje parece incorrecto para el contexto (habla de contrato en vez de boleta), pero se documenta tal como el código lo retorna.


📚 Lógica de Consultas Usadas

1. Obtener datos del empleado

Consulta a ERP:

SELECT fecha_de_ingreso_real, status FROM `tabEmployee` WHERE name = %(name)s

2. Validar Salary Slip del mes anterior

SELECT posting_date FROM `tabSalary Slip` WHERE employee = %(employee)s AND posting_date BETWEEN %(fecha_inicio)s AND %(fecha_fin)s

3. Validar estado de boleta (habilitado)

SELECT name FROM `tabEstado Boleta Mensual` WHERE mes = %(mes)s AND año = %(año)s AND habilitado = 1

4. Validar si el empleado ya descargó su boleta

Tabla: historial_procesos_app (mysql2)
Filtro:

  • proceso = NOMINA

  • employee

  • month

  • year


🧩 Posibles Errores de Diseño (para tu control interno)

  • El catch retorna mensaje incorrecto: “Se ha descargado el contrato de trabajo”.

  • En validación final siempre retorna “status: true” aunque haya fallas.

  • Se usa POST en algunas consultas SQL cuando debería ser GET.

(Solo informativo; no se incluye en documentación oficial si no lo deseas.)