Obtiene descarga Renovación de contrato (3) - [getRenovacionContrato]

🧾 Descripción

Valida si un empleado debe descargar la renovación de contrato antes de poder registrar marcaciones o realizar solicitudes dentro del aplicativo.

El servicio evalúa:

Este servicio actúa como una regla de negocio obligatoria para habilitar o bloquear el uso del aplicativo.


🚀 Endpoint

POST /get-renovacion-contrato

📌 Recibe un único parámetro:

{ "empleado": "EMP-0001" }

🔐 Seguridad


🧠 Flujo del Servicio (Resumen Real)

1️⃣ Validación inicial por fecha

{ "status": true, "msn": "No es el día correcto para la renovación de contrato" }

2️⃣ Obtener fecha real de ingreso del empleado

Consulta al ERP:

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

Si no existe → el servicio simplemente finaliza sin error.


3️⃣ Determinar si el empleado ya debería tener renovación


4️⃣ Consultar renovación en ERP (contratos validados)

Busca registros de:

Consulta ejecutada:

SELECT doc.name FROM `tabSolicitud de Renovaciones` doc LEFT JOIN `tabTrabajadores pendiete de renovar` tab ON doc.name = tab.parent WHERE doc.data_12 = <mes_actual_texto> AND doc.año = <year> AND tab.codigo = <empleado> AND tab.renueva = 'Si' AND doc.estado_de_documento = 'Validado'

5️⃣ Validar si el empleado YA descargó la renovación

Consulta en base de datos interna:

historial_procesos_app WHERE proceso = 'descargaContratoRenovacion' AND empleado = <empleado>
{ "status": false, "msn": "Para poder registrar su marcación o realizar alguna solicitud, descargar su renovación de contrato" }

6️⃣ Si todo está correcto

Retorna éxito:

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

📥 Request Body

{ "empleado": "EMP-0001" }

📤 Response 200 – Ejemplos

✔ Caso correcto (ya descargó renovación)

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

❌ Debe descargar renovación antes de usar el app

{ "status": false, "msn": "Para poder registrar su marcación o realizar alguna solicitud, descargar su renovación de contrato" }

✔ Aún no es día válido

{ "status": true, "msn": "No es el día correcto para la renovación de contrato" }

❗ Posibles Errores

Error Respuesta
Día inválido para la operación "No es el día correcto para la renovación de contrato"
Empleado sin renovación validada "Para poder registrar su marcación..."
Error inesperado en ejecución Se devuelve mensaje genérico, pero siempre con status: true
No existe el empleado El flujo simplemente finaliza sin error explícito

📚 Consultas y estructuras usadas

✔ ERP — Employee

Campos consultados:

{ "fecha_de_ingreso_real": "date" }

✔ ERP — Solicitud de Renovaciones

Consulta combinada mediante JOIN:

✔ Base interna MySQL (mysql2)

Tabla: historial_procesos_app

Campo crítico: proceso = 'descargaContratoRenovacion'


🗃 Lógica en Pseudo-código

if (dia_actual < 26) return "No es el día correcto" empleado = GET fecha_ingreso_real FROM Employee if fecha_ingreso < ultimo_dia_mes_anterior: renovacion = GET renovacion_validada FROM SolicitudRenovaciones if renovacion existe: descarga = buscar en historial_procesos_app if no hay descarga: return "Debe descargar renovación" return "OK"

Revisión #1
Creado 2025-11-25 16:31:19 -05 por Elian
Actualizado 2025-11-25 16:35:30 -05 por Elian