Ir al contenido principal

Solicitud de Adelanto(Estado solicitud (1,2,3,4) - Adelante de sueldo) - [show]

🧾 Descripción

Este servicio permite obtener el estado actual de distintos procesos vinculados a un trabajador, tales como:

  • Cambio de cuenta bancaria

  • Solicitud de licencia

  • Asignación familiar

  • Adelanto salarial del mes en curso

El servicio analiza dinámicamente el tipo de proceso solicitado.
Si se envía un tipo de proceso específico, consulta su última solicitud pendiente.
Si no se envía proceso, valida automáticamente si el trabajador tiene adelanto salarial en el mes actual y devuelve su estado.

📌 Es un servicio que depende totalmente de la API del ERP para obtener la información.


🚀 Endpoint

POST /estado-solicitud


📥 Request Body

{ "empleado": "EMP-0001", "proceso": "licencia" }

Parámetros

Campo Tipo Obligatorio Descripción
empleado string ✔️ Código del empleado en ERP
proceso string opcional Tipo de solicitud a consultar (“cambio de cuenta”, “licencia”, “asignación familiar”). Si no se envía, se valida “adelanto salarial”.

🔐 Seguridad

Requiere autenticación interna y comunicación con el ERP vía dbErp() y ServiceErp().


🧠 Flujo del Servicio (resumen real)

🔸 1. Validación Inicial

Obtiene:

  • mes actual

  • año actual

  • día actual

Define tablas ERP según el proceso solicitado.


🔸 2. Cuando se envía un proceso específico

Los procesos admitidos son:

Proceso enviado Tabla consultada Campo de relación
"cambio de cuenta" tabCambio de Cuenta Bancaria empleado
"licencia" tabSolicitud de Licencias id_empleado
"asignación familiar" tabSolicitud Asignacion Familiar id_empleado

El servicio:

  1. Construye los filtros del ERP.

  2. Busca la última solicitud activa (docstatus < 2).

  3. Si no encuentra registros → devuelve un mensaje indicando que no existe solicitud.

  4. Si existe:

    • Lee motivo

    • Lee validacion_solicitud

    • Lee docstatus

    • Devuelve estado traducido a texto.

Estados interpretados:

docstatus Estado
0 En proceso
1 Aprobado
2 Pagado
3 Rechazado

🔸 3. Cuando NO se envía proceso: Validación de adelanto salarial

  1. Obtiene el adelanto salarial del mes (tabSolicitud de Adelanto Mensual + tabla interna hija).

  2. Si no existe solicitud → devuelve mensaje correspondiente.

  3. Si existe, continúa:

    • Revisa si existe Solicitud de Pagos pagada relacionada al mes.

    • Si se encuentra, asigna estado "Pagado".

    • Si docstatus = 0 y el día es >= 17, se marca como "Rechazado".

    • Caso contrario usa el estado según docstatus.


📤 Response 200 – Ejemplo de solicitud por proceso

{ "valor": true, "msn": "Estado de la solicitud encontrado", "data": { "motivo": "Actualización de datos", "validacion_solicitud": "Pendiente", "fecha": "2025-01-22 12:30:00", "estado": "En proceso" } }


📤 Response 200 – Ejemplo para adelanto salarial

{ "valor": true, "msn": "Estado de la solicitud encontrado", "data": { "monto": 300, "fecha": "2025-01-18 15:04:22", "estado": "Pagado" } }


❗ Posibles Errores

1. Proceso enviado no existe

{ "valor": false, "msn": "Usted no cuenta con una solicitud" }

2. No existen solicitudes del tipo indicado

{ "valor": false, "msn": "Usted no cuenta con una solicitud de licencia" }

3. No existe adelanto salarial para el mes

{ "valor": false, "msn": "Usted no ha solicitado un adelanto salarial para este mes" }

4. Falla consultando al ERP

{ "valor": false, "msn": "Hubo un inconveniente al consultar los datos." }


📚 Schemas (Estructuras utilizadas)

Solicitud de Licencias

{ "name": "string", "modified": "datetime", "docstatus": 0, "motivo": "string", "validacion_solicitud": "string" }

Solicitud Adelanto Mensual

{ "mes": "string", "anio": "string", "docstatus": 0, "modified": "datetime", "monto": 0 }


🗃 Lógica en pseudo-código simplificada

if request.proceso exists: tabla, where = procesos_config[proceso] data = dbErp(tabla, where) if empty(data): return sin solicitud estado = traducir_docstatus(data.docstatus) return estado, motivo, fecha else: adelanto = dbErp(Solicitud Adelanto Mensual) if no adelanto: return "no ha solicitado" if solicitud_pagos_pagada AND adelanto.docstatus == 1: estado = Pagado else if docstatus==0 AND día >=17: estado = Rechazado else: estado = según tabla return monto, fecha, estado