Ir al contenido principal

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:

{ "valor": false, "msn": "CTS no habilitado" }

3️⃣ Obtiene la CTS del ERP

Se consulta la API del ERP:

Compensacion por Tiempo de Servicios ?limit=None &order_by=creation desc &filters=[ ["empleado","=","<employee>"], ["mes","=","<MAYO/NOVIEMBRE>"], ["año","=","<year>"] ] &fields=[ ...campos... ]

Se recuperan campos como:

  • remuneración computable

  • días computables

  • banco del empleado

  • CTS total a pagar

  • datos personales

Si no existen registros → retorna:

{ "valor": false, "msn": "No cuenta con CTS para ese Periodo" }

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:

return PDF::loadView("pdf/cts", $dataPdf) ->setPaper('a4', 'wrapper') ->stream();

📥 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

{ "valor": false, "msn": "CTS no habilitado" }

2. CTS inexistente para el periodo

{ "valor": false, "msn": "No cuenta con CTS para ese Periodo" }

3. Parámetros mal enviados

{ "valor": false, "msn": "Parametros No Validos" }

4. Error interno del ERP

Retorna el error capturado del servicio apiService().


📚 Schemas involucrados

Compensación por Tiempo de Servicios (CTS)

Campos usados:

{ "dias_ausencias": int, "dias_de_licencia_sin_goce": int, "dias_de_descanso_medico": int, "descuento_de_dias_de_ausencia": number, "promedio_remunerativo": number, "name": string, "nombre_de_compañia": string, "ruc": string, "ubicacion": string, "nombre_completo": string, "mes": "MAYO/NOVIEMBRE", "año": string, "cuenta_de_banco": string, "nombre_de_banco": string, "asignacion_familiar": number, "gratificacion_entre_seis": number, "horas_extras_entre_seis": number, "horas_nocturnas_entre_seis": number, "remuneracion_computable_cts": number, "meses_computables_cts": number, "pago_meses": number, "dias_computables_cts": number, "pago_dias": number, "cts_total_a_pagar": number, "tipo_de_documento": string, "dni": string }

🗃 Lógica en pseudo-código

convert month to MAYO/NOVIEMBRE fechaBloqueo = (month == MAYO) ? "year-05-15" : "year-11-15" if hoy <= fechaBloqueo: return CTS no habilitado data = GET CTS where empleado, mes, año if data empty: return no CTS available pdf = render view pdf/cts with data return pdf stream