Módulo Boletas de Pago
- Boleta Mensual(Obtener Proceso de Descarga (1)) - [obtener]
- Utilidades(Consultar Utilidades (1)) - [getYearUtilidades]
- Utilidades(Obtener Proceso de Descarga (1, 2, 3,4,5)) - [show]
- CTS(Url CTS PDF (1)) - [pdfCTS]
- Reconocimiento de deuda( Url Reconocimiento de deuda PDF (1) ) - [debtRecognition]
Boleta Mensual(Obtener Proceso de Descarga (1)) - [obtener]
🧾 Descripción
Este servicio permite buscar y obtener información detallada de una denuncia registrada en el ERP, usando un código aleatorio generado para consulta pública.
La función:
-
Busca la denuncia usando el campo
codigo_aleatorio. -
Retorna información clave como:
-
estado de la denuncia,
-
fecha de creación,
-
fecha de atención,
-
fecha de proceso,
-
respuesta,
-
y un archivo asociado (si existe).
-
-
Construye la URL completa del archivo para ser descargado por el cliente.
Es un servicio de consulta directa, sin dependencias entre módulos.
🚀 Endpoint
POST /obtener
📥 Request Body
🔐 Seguridad
No requiere token especial más allá del utilizado internamente por apiService() o ServiceErp().
La autenticación se maneja dentro del sistema ERP.
🧠 Flujo del Servicio (resumen real)
-
Recibe el parámetro:
codigo = $request->codigo -
Construye un request hacia el ERP:
GET Denuncias?fields=[...]&filters=[["codigo_aleatorio","=",codigo]]
Campos obtenidos:
-
name
-
creation
-
estado_denuncias
-
fecha_atendido
-
fecha_proceso
-
archivo_denuncia
-
respuesta_de_denuncia_atendido
-
Si no existe la denuncia → se responde:
-
Si existe y tiene archivo, se concatena la URL base:
-
Se devuelve la primera denuncia encontrada, ya que el código es único.
📤 Response 200 – Ejemplo
❗ Posibles Errores
1. No se encuentra la denuncia
2. Error del ERP
3. Código vacío o inválido
📚 Schemas Usados
Denuncias (GET)
Campos usados:
🗃 Lógica del Servicio (Pseudo-código)
Utilidades(Consultar Utilidades (1)) - [getYearUtilidades]
🧾 Descripción
Este servicio obtiene:
-
La lista de años registrados en el ERP (tabla Year), ordenados de forma descendente.
-
Valida si el empleado tiene utilidades asignadas para al menos un año (tabla Utilidades).
El objetivo es determinar si el empleado cuenta con utilidades cargadas y retornar la lista de años disponibles para consulta.
🚀 Endpoint
POST /get-year-utilidades
📥 Parámetros de entrada (Request Body)
Campos
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| employee | string | ✔ | ID del empleado para validar si tiene utilidades. |
🔐 Seguridad
Utiliza autenticación mediante ServiceErp() (token interno del ERP).
No requiere permisos adicionales, ya que solo consulta información.
🧠 Flujo del Servicio (explicación real)
1️⃣ Obtener los años disponibles (tabla Year)
Llama al ERP: GET Year?limit=None&fields=["name"]
-
Extrae todos los registros.
-
Toma únicamente la columna
name. -
Ordena los años de forma descendente.
2️⃣ Validar si el empleado tiene utilidades registradas
Consulta al ERP: GET Utilidades?limit=None&fields=["name"]&filters=[["empleado","=", employee]]
-
Si no existe ningún registro → El empleado no tiene utilidades asignadas.
-
Si existe al menos un registro → El empleado sí tiene utilidades asignadas.
📤 Response 200 – Ejemplo
Caso 1 — El empleado NO tiene utilidades
Caso 2 — El empleado SÍ tiene utilidades
📌 Nota: El mensaje es el mismo en ambos escenarios, siguiendo el comportamiento del código original.
❗ Posibles Errores
| Caso | Respuesta |
|---|---|
| Error al obtener años del ERP | years → [] (no rompe el flujo) |
| Error de conexión con el ERP | years → [] |
| El empleado no tiene utilidades | "valor": false |
| El empleado sí tiene utilidades | "valor": true" |
📚 Tablas usadas (schemas)
📄 Year (GET)
Campos usados: {
"name": "string"
}
📄 Utilidades (GET)
Campos usados: {
"name": "string"
}
🗃 Lógica en pseudo-código
Utilidades(Obtener Proceso de Descarga (1, 2, 3,4,5)) - [show]
🧾 Descripción
Este servicio permite consultar el último registro almacenado en la tabla historial_procesos_app según:
-
Empleado
-
Proceso
-
(Opcional) Año
-
(Opcional) Mes
Es usado para validar si un empleado ya realizó o no un proceso específico dentro del aplicativo.
🚀 Endpoint
POST /show
📥 Parámetros de Entrada (Request Body)
🔎 Descripción de parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| empleado | string | ✔ | Código del empleado a consultar |
| proceso | string | ✔ | Nombre del proceso a buscar |
| anio | int | ✖ | Año del proceso (filtrado opcional) |
| mes | int | ✖ | Mes del proceso (filtrado opcional) |
🔐 Seguridad
Utiliza conexión directa a la base de datos dbapp.
No requiere token ERP, pero depende de la autenticación interna del backend.
🧠 Flujo del Servicio (Resumen real)
-
Validar parámetros obligatorios
-
Si no se envía empleado → retorna error
-
Si no se envía proceso → retorna error
-
-
Construir filtros dinámicos
-
Base: empleado + proceso
-
Si llega año → se agrega al
WHERE -
Si llega mes → se agrega al
WHERE
-
-
Consultar la tabla interna
Query sobre:Utiliza
first()para obtener el último registro. -
Validar si existe registro
-
Si no existe, devuelve mensaje informando que no se encontró el proceso.
-
-
Retornar información del proceso encontrado
Incluye toda la fila obtenida desde la base de datos.
📤 Response 200 – Ejemplos
✅ Caso exitoso
❌ Faltan parámetros
❌ No existe el proceso
❗ Posibles Errores
-
No se envía
empleado -
No se envía
proceso -
No se encontró el registro
-
Error interno de base de datos
(Puede retornar error 500 desde DB, manejado por Laravel)
📚 Estructura usada (historial_procesos_app)
🗃 Lógica en Pseudo-código
CTS(Url CTS PDF (1)) - [pdfCTS]
🧾 Descripción
Genera el PDF de la Compensación por Tiempo de Servicios (CTS) de un empleado para un periodo específico (mes y año).
El servicio consulta la información almacenada en el ERP y retorna el archivo PDF ya renderizado desde una vista Blade (pdf/cts).
También valida si la descarga está habilitada según la fecha definida por la empresa:
-
CTS de Mayo se habilita desde el 16 de mayo
-
CTS de Noviembre se habilita desde el 16 de noviembre
Si el usuario intenta descargar antes de esas fechas, el servicio lo bloquea.
🚀 Endpoint
GET /pdf-cts/{employee}/{month}/{year}
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| employee | string | ID del empleado |
| month | string/int | 5 ó 11 (Mayo / Noviembre) |
| year | string/int | Año del cálculo CTS |
🔐 Seguridad
Este servicio requiere una autenticación interna mediante apiService() para consumir los datos del ERP.
No necesita token del cliente, pero sí credenciales válidas para el ERP.
🧠 Flujo del Servicio (resumen real)
1️⃣ Validación del Mes
Convierte el mes recibido:
| Valor recibido | Se interpreta como |
|---|---|
"5" |
"MAYO" |
"11" |
"NOVIEMBRE" |
2️⃣ Validación de Fecha de Bloqueo
El servicio verifica si la fecha actual está dentro del periodo permitido:
-
Para Mayo:
📅 Debe ser a partir del 16-05-<año> -
Para Noviembre:
📅 Debe ser a partir del 16-11-<año>
Si aún no llega la fecha → se retorna:
3️⃣ Obtiene la CTS del ERP
Se consulta la API del ERP:
Se recuperan campos como:
-
remuneración computable
-
días computables
-
banco del empleado
-
CTS total a pagar
-
datos personales
Si no existen registros → retorna:
4️⃣ Genera el PDF
Si existe el registro, el servicio envía la información a la vista:
resources/views/pdf/cts.blade.php
Luego devuelve el PDF:
📥 Request Body
No utiliza body.
📤 Response – Ejemplo exitoso
El servicio no retorna JSON cuando es exitoso, sino un PDF vía stream, por lo que la respuesta es un archivo.
Ejemplo conceptual: <PDF STREAM - CTS Mayo 2024>
❗ Posibles Errores
1. CTS no habilitado por fecha
2. CTS inexistente para el periodo
3. Parámetros mal enviados
4. Error interno del ERP
Retorna el error capturado del servicio apiService().
📚 Schemas involucrados
Compensación por Tiempo de Servicios (CTS)
Campos usados:
🗃 Lógica en pseudo-código
Reconocimiento de deuda( Url Reconocimiento de deuda PDF (1) ) - [debtRecognition]
🧾 Descripción
Este servicio valida si un empleado tiene un Reconocimiento de Deuda pendiente de firma, y en caso afirmativo, genera y descarga el archivo PDF del documento, incluyendo el detalle de cuotas asociadas.
El servicio consume directamente información del ERP, consultando tanto el documento principal como sus tablas hijas (detalles de deuda por mes).
🚀 Endpoint
POST /debt-recognition
📥 Parámetros
Recibe como parámetro directo el ID del empleado:
🔐 Seguridad
El servicio requiere autenticación interna vía dbErp() para consultas SQL y usa PDF::loadView() para generar el documento final.
🧠 Flujo del Servicio (resumen real)
1. Verifica si existe un Reconocimiento de Deuda pendiente
Consulta en el ERP:
-
Documento: Reconociemientos de Deuda
-
Condiciones:
-
docstatus = 0(borrador) -
empleado = <employee> -
El archivo firmado no existe →
reconocimiento_escaneado_firmado IS NULL or = ''
-
Si no encuentra ningún registro:
2. Obtiene los datos del Reconocimiento de Deuda
Si existe un documento pendiente:
-
Recupera el primer registro encontrado.
-
Extrae datos generales del reconocimiento.
3. Obtiene el detalle (tabla hija) del reconocimiento
Consulta:
-
Tabla hija: tabtable_reconocimiento_deuda
-
Llaves:
-
parent: ID del reconocimiento -
parentfield = table_21 -
parenttype = Reconociemientos de Deuda
-
Los campos recuperados:
4. Construye la data final
Une:
-
Información principal del reconocimiento (
dataEmployee) -
Detalle de cuotas (
dataTable)
5. Genera el documento PDF
Renderiza la vista:
pdf/Doctype/ReconocimientoDeDeuda/reconocimiento_de_deuda.blade.php
Y retorna la descarga del PDF.
📤 Response – Archivo PDF
El servicio retorna directamente un PDF generado con domPDF:
No devuelve un JSON en caso de éxito, sino una descarga directa del documento.