Ir al contenido principal

Otros descuentos de Nomina (1, 2) - [listar]

🧾 Descripción

Obtiene y lista los otros descuentos de nómina registrados para un empleado en un año y mes específicos.
El servicio consulta la información en el ERP (Doctype: Otros Descuentos Nomina) y devuelve únicamente los registros que coinciden con el mes y año enviados.

Permite también filtrar por todos los meses del año enviando "TODOS" en el parámetro month.


🚀 Endpoint

POST /listar-descuentos


📥 Parámetros (Request Body)

{ "employee": "EMP-0001", "year": "2024", "month": "Marzo" }

Campos requeridos:

Campo Tipo Obligatorio Descripción
employee string ✔️ Sí Código del empleado
year string ✔️ Sí Año a filtrar
month string ✔️ Sí Mes a filtrar. Si se envía "TODOS" devuelve todos los meses del año.

🔐 Seguridad

Requiere token válido del ERP.
La comunicación se realiza mediante ServiceErp(), usando cabeceras internas de autenticación.


🧠 Flujo del Servicio (Resumen real)

  1. Valida que el parámetro employee exista.

  2. Valida que el parámetro year exista.

  3. Consulta al ERP:


GET Otros Descuentos Nomina/<employee>?fields=["table_22"]
  1. Verifica que exista información.

  2. Recorre la tabla interna table_22 (donde vienen los descuentos mensuales):

    • Compara:

      • item.mes == mes enviado

      • item.ano == año enviado

    • Si month == "TODOS", ignora el filtro del mes.

  3. Para cada coincidencia arma un objeto con:

    • motivo

    • monto

    • año

    • mes

    • creation (en formato "d de Mes")

  4. Si no hay coincidencias, retorna "Sin Descuentos".

  5. Si hay registros, los devuelve ordenados por creación.


📤 Response 200 – Ejemplo exitoso

{ "valor": true, "data": [ { "motivo": "Adelanto", "monto": 150.00, "mes": "Marzo", "anio": "2024", "creation": "05 de Marzo" }, { "motivo": "Descuento EPS", "monto": 35.00, "mes": "Marzo", "anio": "2024", "creation": "12 de Marzo" } ] }


⚠️ Respuestas de Error

1. Falta employee

{ "valor": false, "msn": "Falta employee" }

2. Falta año

{ "valor": false, "msn": "Ingrese un año" }

3. El ERP no devuelve información

{ "valor": false, "msn": "Sin Descuentos", "error": [] }

4. No existen descuentos para el filtro solicitado

{ "valor": false, "msn": "Sin Descuentos" }


🗃 Estructuras usadas (Schemas)

Otros Descuentos Nomina

Campos usados:

{ "table_22": [ { "motivo": "string", "monto": "float", "mes": "string", "ano": "string", "creation": "datetime" } ] }


🧩 Pseudocódigo

if employee is null → error if year is null → error otros_desc = GET Otros Descuentos Nomina/employee if no data → error foreach item in table_22: if (mes == month AND ano == year) OR (month == "TODOS" AND ano == year): agregar item a lista if lista vacía → error return lista formateada