Ir al contenido principal

Solicitudes de Pagos(Obtener Lista de Solicitudes (1)) - [paymentRequestList]

🧾 Descripción

Este servicio obtiene la lista de solicitudes de pago realizadas en el ERP, aplicando restricciones dependientes del usuario, su departamento y reglas de validación definidas por el área de Gerencia.

El módulo:

  • Valida si el usuario tiene configuraciones de validación personalizadas (Validacion de Pagos Gerencia).

  • Filtra solicitudes de pago según:

    • Estado de validación

    • Concepto

    • Montos permitidos según reglas del usuario

    • Solicitudes de los últimos 6 meses

  • Obtiene y agrupa los archivos transados (imágenes, documentos y archivos) asociados a cada solicitud.

Si el usuario no está autorizado, el módulo devuelve un mensaje de bloqueo.


🚀 Endpoint

POST /payment-request-list


📥 Request Body

Ejemplo:

{ "department": "LOGISTICA", "concepto": "Compras abastecimiento interno", "usuario": "usuario@empresa.com", "status": "Validado" }

Campos:

Campo Tipo Descripción
department string Departamento del usuario
concepto string Concepto filtrado (opcional)
usuario string User ID
status string Estado de validación (opcional). Si es vacío, se excluyen "No requiere" y "Rechazado".

🔐 Seguridad

Requiere conexión válida con el ERP vía dbErp() y ServiceErp().


🧠 Flujo del Servicio (resumen funcional)

1️⃣ Validación de permisos del usuario

Se consulta: tabValidacion de Pagos Gerencia

Si no existe configuración para ese usuario:

{ "valor": false, "msn": "El modulo esta inhabilitado para su departamento", "data": [] }

2️⃣ Construcción de filtros principales

  • Se restringe a solicitudes con:

    • estado_documento NOT IN ('Pago Rechazado')

    • Fecha dentro de los últimos 6 meses.

Si existen reglas personalizadas:

  • Se aplican límites de concepto/monto por cada configuración.

  • Se agregan múltiples filtros OR en el WHERE.

3️⃣ Filtrado por estado

  • Si se envía un estado explícito → búsqueda exacta.

  • Si no → se excluyen "No requiere" y "Rechazado".

4️⃣ Filtrado por concepto

Si el body incluye un concepto → se agrega un WHERE concepto = X.

5️⃣ Consulta principal

Se obtiene:

name, fecha, estado_de_validación, moneda, departamento, proveedor, ruc, concepto, monto, number_factura, voucher

Desde: tabSolicitud de Pagos

6️⃣ Obtención de archivos transados

Por cada solicitud encontrada se consultan los archivos: tabArchivos Transados

Clasifica:

  • Imagen (.jpg, .jpeg, .png)

  • Documento (.pdf, .xlsx, .xls)

  • Archivo (otros)

Y asigna nombres:

Imagen 1 Documento 1 Archivo 1

7️⃣ Construcción de la respuesta final

Cada solicitud incluye:

{ "archivos_transados": [...], "documento_factura": "url o vacío", ... }

📤 Response 200 – Ejemplo exitoso

{ "valor": true, "msn": "Lista de Solicitudes generada correctamente", "data": [ { "name": "SP-0001", "fecha": "2025-01-10", "estado": "Validado", "moneda": "PEN", "departamento": "LOGISTICA", "proveedor": "Proveedor SAC", "ruc": "20123456789", "concepto": "Transacción / Compensaciones", "monto": 1500, "numero": "F001-12345", "documento_factura": "/files/factura.pdf", "archivos_transados": [ { "name": "ARCH-001", "parent": "SP-0001", "url": "/file-download/123.jpg", "nombre_archivo": "Imagen 1" } ] } ] }

❌ Posibles Errores

1️⃣ Usuario sin permisos para usar el módulo

{ "valor": false, "msn": "El modulo esta inhabilitado para su departamento", "data": [] }

2️⃣ Error al cargar solicitudes

{ "valor": false, "msn": "Surgió un error al cargar la lista de solicitudes, intente nuevamente", "data": { ... } }

3️⃣ No existen solicitudes dentro de los filtros

{ "valor": true, "msn": "No existen solicitudes", "data": [] }

📚 Tablas / Recursos Usados

tabValidacion de Pagos Gerencia

Campos usados:

  • usuario

  • concepto

  • monto

tabSolicitud de Pagos

Campos:

  • name, fecha, estado_de_validación, moneda, proveedor, ruc, concepto

  • monto, number_factura, voucher

tabArchivos Transados

Campos:

  • name, url, parent


🗃 Lógica en pseudo-código

usuario_rules = GET ValidacionPagos where usuario = X if empty(usuario_rules): return módulo inhabilitado build base filters: estado_documento NOT IN ('Pago Rechazado') fecha >= hoy - 6 meses if usuario_rules exist: for each rule: add OR (concepto = rule.concepto AND monto > rule.monto) if status enviado: add estado_de_validación = X else: exclude ['No requiere', 'Rechazado'] if concepto enviado: add concepto = X requests = query SolicitudPagos with filters if no requests: return lista vacía get archivos_transados for all requests group and classify archivos by type return lista final con archivos agrupados