Módulo de Solicitudes
- Solicitud de Adelanto( Solicitar de adelanto de sueldo (1) ) - [guardarAdelantosMensual]
- Solicitud de Adelanto(Estado solicitud (1,2,3,4) - Adelante de sueldo) - [show]
- Cambio de cuenta bancaria(Solicitar cambio de cuenta (1)) - [store]
- Solicitud de Licencias(Combo tipos de licencias (1)) - [combos]
- Solicitud de Licencias(Solicitar solicitud de licencia (1)) - [store]
- Asignación Familiar(Buscar dni empleado (1)) - [searchJobApplicant]
- Asignación Familiar(Solicitar asignacion familiar (1)) - [store]
- Solicitudes de Pagos(Obtener Lista de Solicitudes (1)) - [paymentRequestList]
- Solicitudes de Pagos(Obtener Combos Conceptos (1)) - [getComboSolicitudPago]
- Solicitudes de Pagos(Validar Solicitud (1)) - [validatePaymentRequest]
- Cambio Salarial Administrativo(Empleados Activos (1)) - [getEmployeeActive]
- Cambio Salarial Administrativo(Obtener Salario (1)) - [getEmployeeActive]
- Cambio Salarial Administrativo(Actualizar Salario (1)) - [updateSalarialbyEmployee]
- Cambio de Sistema Pensionario(Sistema de Pension Combos (1)) - [combos]
- Cambio de Sistema Pensionario(Enviar solicitud cambio AFP (1)) - [store]
Solicitud de Adelanto( Solicitar de adelanto de sueldo (1) ) - [guardarAdelantosMensual]
🧾 Descripción
Registra la solicitud de adelanto salarial mensual para un empleado, validando una serie de reglas de negocio relacionadas con:
-
Fecha permitida para solicitar adelanto
-
Tipo de trabajador
-
Área, puesto y compañía
-
Situación laboral (activo/licencia)
-
Contratos y antigüedad mínima
-
Restricciones internas por área o cargo
-
Estructura mensual del ERP (“Solicitud de Adelanto Mensual”)
El servicio crea o actualiza el registro correspondiente al empleado dentro del documento mensual de adelantos.
🚀 Endpoint
POST /guardar-adelantos-mensual/{employee}/{amount}
✔ Recibe:
-
employee(string) — ID del empleado -
amount(int/string) — Monto seleccionado
🔐 Seguridad
Requiere autenticación del ERP (realizada internamente vía ServiceErp()).
🧠 Flujo del Servicio (lógica real)
1️⃣ Validación inicial del monto
-
Si el monto es
"Seleccionar"→ error
2️⃣ Obtiene la ficha del empleado
Se validan:
-
Compañía = "Shalom Empresarial"
-
Estado = "Active"
3️⃣ Validaciones por fecha
-
Solo se puede solicitar entre el día 1 y 14
-
Excepción especial: julio 2023 (solo hasta el día 13)
-
Si el empleado ingresó este mes y su día de ingreso ≥ 5 → no puede solicitar
4️⃣ Validaciones por tipo de trabajo
-
Part time → máximo S/ 100
-
Gerencia → no permitido
-
Jefes o Supervisores (excepto Atención al cliente - SE)
-
Administrativos (excepto Atención al cliente - SE)
-
Conductores → prohibido solicitar
5️⃣ Validación de asistencia
Se verifica si hoy está con licencia:
Si está con licencia → no puede solicitar adelanto.
6️⃣ Ubica o crea el documento mensual tipo "Solicitud de Adelanto Mensual"
Se busca:
-
Si no existe, se crea un nuevo documento para el mes
7️⃣ Registra o actualiza al trabajador dentro de la tabla interna table_12
-
Si el empleado no existe → se crea un nuevo registro (POST)
-
Si ya existe → se actualiza solo el campo
monto(PUT)
8️⃣ Devuelve la respuesta con todos los registros procesados.
📥 Request Body
No recibe body (los parámetros son por URL).
📤 Response 200 – Ejemplo
❗ Posibles Errores
1. Monto inválido
2. Empresa no permitida
3. Empleado deshabilitado
4. Fecha fuera de rango
5. Restricción por área o tipo de empleado
6. Empleado con licencia
7. Error al crear documento mensual
📚 Schemas utilizados
Employee (GET Employee/{id})
Campos relevantes:
Solicitud de Adelanto Mensual (GET/POST)
Campos usados:
Registro en tabla interna (table_12)
🧠 Lógica en pseudo-código
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
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:
-
Construye los filtros del ERP.
-
Busca la última solicitud activa (
docstatus < 2). -
Si no encuentra registros → devuelve un mensaje indicando que no existe solicitud.
-
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
-
Obtiene el adelanto salarial del mes (
tabSolicitud de Adelanto Mensual+ tabla interna hija). -
Si no existe solicitud → devuelve mensaje correspondiente.
-
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
📤 Response 200 – Ejemplo para adelanto salarial
❗ Posibles Errores
1. Proceso enviado no existe
2. No existen solicitudes del tipo indicado
3. No existe adelanto salarial para el mes
4. Falla consultando al ERP
📚 Schemas (Estructuras utilizadas)
Solicitud de Licencias
Solicitud Adelanto Mensual
🗃 Lógica en pseudo-código simplificada
Cambio de cuenta bancaria(Solicitar cambio de cuenta (1)) - [store]
🧾 Descripción
Registra una nueva solicitud de cambio de cuenta bancaria para un empleado, validando previamente:
-
Que la información esté completa.
-
Que el formato del número de cuenta coincida con las reglas del banco seleccionado.
-
Que el empleado no tenga ya una solicitud en estado Borrador.
-
Que se adjunte el documento de acreditación de la nueva cuenta bancaria.
Si todo es correcto, crea un nuevo documento en el ERP: Cambio de Cuenta Bancaria
🚀 Endpoint
POST /cambio-cuenta-bancaria/store
📥 Request Body
Campos requeridos
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| empleado | string | ✔️ | ID del empleado |
| nuevo_banco | string | ✔️ | Nuevo banco elegido |
| nueva_cuenta_bancaria | string | ✔️ | Número de cuenta del nuevo banco |
| documento_cuenta | string | ✔️ | Archivo previamente cargado en ERP |
🔐 Seguridad
Requiere autenticación interna mediante ServiceErp() y dbErp() hacia el ERP corporativo.
🧠 Flujo del Servicio (resumen real)
1. Validaciones iniciales
-
Verifica que todos los campos obligatorios estén presentes.
-
Valida longitud del número de cuenta según el banco:
| Banco | Longitudes válidas |
|---|---|
| BCP | 14 o 20 |
| BBVA | 16, 18 o 20 |
| Interbank | 18 o 20 |
| Otros | 20 |
Si no cumple → devuelve error.
2. Verifica si el empleado ya tiene una solicitud en estado Borrador
Se consulta en el ERP:
Si ya existe un documento en borrador → error.
3. Registrar la nueva solicitud
Si no existe borrador, crea el documento:
📤 Response 200 – Éxitoso
❗ Posibles Errores
1. Falta un dato obligatorio
2. Número de cuenta inválido
3. Ya existe solicitud en borrador
4. Error al registrar en ERP
📚 Schemas utilizados
Cambio de Cuenta Bancaria (POST)
Consulta de solicitudes
🗃 Lógica en pseudo-código
Solicitud de Licencias(Combo tipos de licencias (1)) - [combos]
🧾 Descripción
Servicio que devuelve los valores preconfigurados para el combo tipos_licencias, utilizado por el frontend o aplicación móvil para poblar listas desplegables relacionadas a licencias.
Este servicio no realiza operaciones en base de datos, no consume ERP ni APIs externas.
Simplemente retorna valores estáticos cargados en la propiedad $this->tipos_licencias.
🚀 Endpoint
POST /combos
No requiere parámetros.
🔐 Seguridad
No requiere validación adicional.
El servicio solo retorna data estática, sin acceso a información sensible del ERP.
🧠 Flujo del Servicio (resumen real)
-
Obtiene el array interno
$this->tipos_licencias, previamente definido en el controlador. -
Construye un arreglo
comboscon la estructura:
-
Retorna una respuesta JSON estándar:
📥 Request Body
No requiere parámetros.
Ejemplo:
📤 Response 200 – Ejemplo
(La estructura real depende del contenido de $this->tipos_licencias.)
❗ Posibles Errores
Este servicio no genera errores internos, pues no consulta APIs externas.
Solo pueden ocurrir fallas del servidor:
1. Error por variable no definida
2. Error inesperado del servidor
📚 Schemas (estructuras usadas)
Response
🗃 Lógica en pseudo-código
Solicitud de Licencias(Solicitar solicitud de licencia (1)) - [store]
🧾 Descripción
Crea una Solicitud de Licencias para un empleado, validando previamente:
-
Tipo de licencia permitido
-
Fechas y rangos máximos establecidos por normativa interna
-
Archivos obligatorios según el tipo de licencia
-
Que el empleado no tenga otra solicitud en borrador
El servicio registra en el ERP un nuevo documento "Solicitud de Licencias" si cumple todas las reglas definidas.
🚀 Endpoint
POST /solicitud-licencias/store
📥 Request Body – Parámetros
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| empleado | string | sí | ID del empleado |
| tip_licencia | string | sí | Tipo de licencia (validado contra $this->tipos_licencias) |
| fecha_ini | date | sí | Fecha de inicio de la licencia |
| fecha_fin | date | sí | Fecha fin de la licencia |
| declaracion_jurada | file/url | depende | Obligatorio si tip_licencia = "Familiar Enfermo" |
| hoja_hospitalizacion | file/url | depende | Obligatorio si tip_licencia = "Familiar Enfermo" |
| uci | file/url | depende | Obligatorio si tip_licencia = "Familiar Enfermo" |
| acta_nacimiento | file/url | depende | Obligatorio si tip_licencia = "Paternidad" |
| acta_defuncion | file/url | depende | Obligatorio si tip_licencia = "Licencia Por Luto" |
🧠 Flujo del Servicio (resumen real)
-
Validación de campos obligatorios
-
Verifica empleado, tipo de licencia válido, fecha_ini y fecha_fin.
-
-
Cálculo de días de licencia
-
Validaciones específicas por tipo de licencia
Tipo de licencia Requisitos Máximo días Familiar Enfermo declaracion_jurada, hoja_hospitalizacion, uci 7 Paternidad acta_nacimiento 10 Licencia Por Luto acta_defuncion 5 Licencia sin goce — 30 -
Validación: El empleado no debe tener una solicitud en borrador
-
Construcción del body para enviar al ERP
-
Incluye campos adicionales dependiendo del tipo de licencia.
-
-
Creación de la solicitud
-
Retorno de respuesta estándar
📤 Response 200 – Ejemplo exitoso
(El campo data retorna el borrador encontrado, si existía.)
⚠️ Posibles Errores
1. Falta de parámetros
2. Tipo de licencia inválido
3. Fechas incompletas
4. Exceso de días permitidos
5. Documentación obligatoria faltante
6. Solicitud duplicada en borrador
7. Error al registrar en ERP
🗃 Lógica en Pseudocódigo
📚 Estructuras usadas
Solicitud de Licencias (POST)
Campos enviados:
Asignación Familiar(Buscar dni empleado (1)) - [searchJobApplicant]
🧾 Descripción
Este servicio consulta información de un postulante (Job Applicant) enviando su número de documento a un endpoint externo.
El servicio actúa como un proxy directo: recibe un documento, llama por cURL al endpoint de EMPRESARIAL y retorna la respuesta tal cual viene de la API.
No realiza validaciones ni transformaciones adicionales.
🚀 Endpoint interno
POST /search-job-applicant
📥 Parámetros de entrada (Request Body)
Campo | Tipo | Obligatorio | Descripción
---|---|---|---
document | string | Sí | Número de documento del postulante a buscar.
🔐 Seguridad
No usa autenticación interna ni tokens propios.
El servicio simplemente reenvía el dato al endpoint: POST {EMPRESARIAL}/api/search_job_applicant
🧠 Flujo del Servicio (Resumen Real)
-
Recibe el campo
documentdesde la solicitud. -
Prepara una petición cURL hacia:
-
Envía el documento como parámetro form-data:
-
Ejecuta la llamada.
-
Decodifica la respuesta JSON.
-
Retorna la data al cliente sin modificaciones.
📤 Respuesta 200 – Ejemplo
Respuesta depende totalmente del servicio externo.
Un ejemplo típico puede ser:
❗ Posibles Errores
1. No se puede conectar con EMPRESARIAL
2. EMPRESARIAL devuelve error interno
3. Respuesta no válida o JSON corrupto
📚 Esquema esperado desde el API externo (referencial)
El API no está documentado en tu código, pero normalmente una estructura de Job Applicant incluye:
La estructura real depende 100% del sistema EMPRESARIAL.
🗃 Lógica en pseudo-código
🧩 Código documentado
Asignación Familiar(Solicitar asignacion familiar (1)) - [store]
🧾 Descripción
Este servicio registra una Solicitud de Asignación Familiar para un empleado, validando previamente que:
-
Se hayan enviado las dos imágenes del DNI (anverso y reverso).
-
El empleado tenga un género válido y registrado.
-
No exista ya una asignación familiar duplicada para el mismo hijo (DNI del menor).
-
No existan más de dos solicitudes asociadas al mismo DNI de hijo (límite máximo permitido).
El registro se almacena directamente en el ERP mediante el recurso Solicitud Asignacion Familiar.
🚀 Endpoint
POST /solicitud-asignacion-familiar
📥 Request Body
🔐 Seguridad
✔ Requiere autenticación interna vía ServiceErp() del ERP.
✔ Se validan datos del empleado antes de crear la solicitud.
🧠 Flujo del Servicio (Resumen)
-
Validación de archivos obligatorios
Verifica que se envíenimg_dniyreverso.
Si falta uno → retorna error. -
Obtiene datos del empleado
Usa el métodoverifyEmployeeGender($empleado)para traer:-
género
-
fecha de ingreso real
-
-
Revisa si ya existe una solicitud similar
Busca solicitudes para:-
el mismo DNI del hijo
-
la misma fecha de ingreso del empleado
-
-
Valida duplicidades según reglas
-
Si existe 1 solicitud previa, compara géneros:
-
Si el género coincide → ❌ ya tiene asignación familiar.
-
-
Si existen 2 solicitudes previas → ❌ no puede registrar más.
-
-
Crea la nueva solicitud
Realiza un POST hacia:POST /resource/Solicitud Asignacion FamiliarCon los campos:
-
Retorna respuesta final
📤 Response 200 – Ejemplos
✔ Registro exitoso
❌ Faltan imágenes del DNI
❌ Asignación ya existente para el DNI del menor
❌ DNI ya usado en dos asignaciones previas
❌ Error al registrar en el ERP
📚 Schemas utilizados
🔹 Solicitud Asignacion Familiar (POST)
🔹 Solicitud Asignacion Familiar (GET/FILTER)
🔹 Datos del empleado (verifyEmployeeGender)
🗃 Lógica en pseudocódigo
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:
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:
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:
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:
7️⃣ Construcción de la respuesta final
Cada solicitud incluye:
📤 Response 200 – Ejemplo exitoso
❌ Posibles Errores
1️⃣ Usuario sin permisos para usar el módulo
2️⃣ Error al cargar solicitudes
3️⃣ No existen solicitudes dentro de los filtros
📚 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
Solicitudes de Pagos(Obtener Combos Conceptos (1)) - [getComboSolicitudPago]
🧾 Descripción
Obtiene la lista de conceptos permitidos para un usuario específico, basándose en la tabla del ERP "Validación de Pagos Gerencia".
El servicio filtra los registros por el usuario ingresado y retorna un array único de conceptos asociados a dicho usuario.
Se utiliza para validar qué tipos de pagos puede solicitar un trabajador.
🚀 Endpoint
POST /get-combo-solicitud-pago
📥 Request Body
Debe incluir el campo:
❗ Validación
Si no se envía usuario, responde:
🔐 Seguridad
El servicio usa el método interno dbErp() que requiere autenticación interna vía ERPNext.
Por ello, se asume que el cliente ya cuenta con token/credenciales válidas.
🧠 Flujo del Servicio (Explicación Real)
-
Validar parámetro usuario
-
Si está vacío → responde error de validación.
-
-
Construir filtros para ERP
-
Consultar al ERP
Usando:con el SQL:
-
SELECT concepto
-
FROM
tabValidacion de Pagos Gerencia -
WHERE usuario = %(usuario)s
-
-
Obtener resultados
-
Se extrae la columna
conceptode la respuesta. -
Se eliminan duplicados mediante
array_unique.
-
-
Retornar los conceptos permitidos.
📤 Response 200 – Ejemplo
❗ Posibles Errores
1. Usuario no enviado
2. Usuario sin conceptos asignados
(El servicio no devuelve error — solo retorna lista vacía.)
3. Error del ERP
Si dbErp() falla internamente, el servicio responderá una lista vacía debido a su estructura actual.
📚 Tablas y Estructuras Usadas
Tabla: tabValidacion de Pagos Gerencia
Campos utilizados:
🗃 Lógica en Pseudocódigo
Solicitudes de Pagos(Validar Solicitud (1)) - [validatePaymentRequest]
🧾 Descripción
Servicio encargado de validar o rechazar una Solicitud de Pagos en el ERP.
Actualiza el campo estado_de_validación del documento Solicitud de Pagos y devuelve una respuesta indicando si la operación fue exitosa.
El servicio no procesa lógica adicional más allá de actualizar el estado del documento y devolver el resultado.
🚀 Endpoint
PUT /validate-payment-request
📩 Recibe parámetros mediante el body del Request (Laravel Request):
🔐 Seguridad
Requiere autenticación contra el ERP, manejada internamente mediante: $this->general->ServiceErp()
No requiere headers adicionales desde el lado del cliente.
🧠 Flujo del Servicio (explicación real)
-
Recibe:
-
name → ID del documento (Solicitud de Pagos)
-
status → Puede ser
"Validado"o"Rechazado"
-
-
Determina internamente mensajes para usuario según status:
-
"Validado"→ aprobar -
"Rechazado"→ rechazar
-
-
Construye el body con el nuevo estado:
-
Envía:
-
Si el ERP responde con error → devuelve mensaje indicando fallo al aprobar o rechazar.
-
Si la operación es correcta → responde con:
-
valor = true
-
mensaje: "Solicitud de Pago Aprobado/Rechazado correctamente"
-
data → respuesta del ERP
-
📥 Request Body (Laravel)
📤 Response 200 – Ejemplo (Aprobado)
Ejemplo (Rechazado)
❗ Posibles Errores
1. Error durante el PUT
2. El ERP responde con "valor = false"
3. Excepción inesperada
📚 Schema del documento afectado
Solicitud de Pagos (PUT)
Campos utilizados: {
"estado_de_validación": "string"
}
🗃 Lógica en pseudo-código
Cambio Salarial Administrativo(Empleados Activos (1)) - [getEmployeeActive]
🧾 Descripción
Servicio que obtiene el listado completo de empleados activos desde el ERP.
Solo devuelve empleados cuyo status = "active" y expone información básica:
-
nombre_completo -
passport_number(DNI u otro documento) -
name(ID interno del empleado)
Este servicio se utiliza para obtener la lista de empleados habilitados dentro del sistema.
🚀 Endpoint
POST /get-employee-active
📌 El método es POST, pero internamente realiza una consulta GET al ERP.
📥 Request Body
El servicio no requiere parámetros en el body.
Todo se obtiene directamente del ERP mediante ServiceErp().
🔐 Seguridad
Requiere conexión autorizada al ERP.
La autenticación se maneja internamente mediante: $this->general->ServiceErp(...)
🧠 Flujo del Servicio (Resumen Real)
-
Construye la solicitud hacia el ERP:
-
Envía la solicitud al ERP mediante:
$this->general->ServiceErp('GET', null, $body, APICAPACITACION . 'resource/Employee'); |
-
Verifica:
-
Si el ERP respondió con error.
-
Si no existen registros de empleados activos.
-
-
En caso de éxito:
-
Devuelve la lista completa de empleados encontrados.
-
📤 Response 200 – Ejemplo
✅ Caso exitoso
❗ Error interno del ERP
❗ Sin registros encontrados
❗ Posibles Errores
1. Error en la llamada al ERP
Ocurre cuando ServiceErp() devuelve valor = false.
2. No existen empleados activos
3. Error inesperado del servidor
(si se implementara un try/catch)
📚 Schemas utilizados
Employee (GET)
Campos usados:
🗃 Lógica en Pseudo-Código
Cambio Salarial Administrativo(Obtener Salario (1)) - [getEmployeeActive]
🧾 Descripción
Este servicio obtiene todos los empleados activos desde el ERP, retornando únicamente la información básica necesaria para listarlos:
-
nombre_completo
-
passport_number
-
name (ID interno del empleado)
Es un servicio de consulta que solo consume los datos de la API del ERP usando ServiceErp().
🚀 Endpoint
GET /get-employee-active
No recibe parámetros en el body; todo se obtiene del ERP.
🔐 Seguridad
Requiere autenticación válida hacia el ERP (manejada internamente por ServiceErp()).
🧠 Flujo del Servicio (Resumen Real)
-
Construye el body de consulta para el ERP:
-
Realiza el request:
GET Employee -
Valida:
-
Si hubo error en el ERP → retorna error.
-
Si la respuesta está vacía → retorna mensaje "No se encontraron registros".
-
-
Si hay resultados, retorna:
-
valor = true
-
msn = "Busqueda Exitosa"
-
data = lista de empleados activos
-
📥 Request Body
Este endpoint no recibe body.
📤 Response 200 – Ejemplo
✔️ Con empleados encontrados
❗ Sin registros
❌ Error interno
❗ Posibles Errores
1️⃣ Error del ERP
Ocurre cuando ServiceErp() retorna "valor" => false
2️⃣ No hay registros activos
3️⃣ Error inesperado en servidor
📚 Schemas Usados
📄 Employee (GET)
Campos utilizados:
🗃 Lógica en Pseudo-código
Cambio Salarial Administrativo(Actualizar Salario (1)) - [updateSalarialbyEmployee]
🧾 Descripción
Este servicio registra una solicitud de actualización salarial para un empleado.
Envía al ERP los nuevos valores de:
-
Sueldo
-
Movilidad
-
Bono nocturno
-
Fecha de actualización
El servicio solo valida la estructura y los datos requeridos, mientras que el proceso interno de aprobación o registro es manejado por el ERP a través del recurso Cambio Salarial Administrativo.
🚀 Endpoint
POST /update-salarial-by-employee
📥 Request Body (JSON)
Todos los campos son obligatorios.
| Campo | Tipo | Descripción |
|---|---|---|
| empleado | string | ID del empleado |
| sueldo | number | Nuevo sueldo propuesto |
| movilidad | number | Nuevo monto de movilidad |
| bono_nocturno | number | Monto de bono nocturno |
| fecha | string (YYYY-MM-DD) | Fecha de aplicación del cambio salarial |
Ejemplo de entrada
🔐 Seguridad
Requiere token válido del ERP (interno), administrado desde:
🧠 Flujo del Servicio (resumen real)
-
Valida que se hayan enviado todos los campos requeridos.
Si falta alguno, retorna error. -
Valida formato de fecha usando
validateDate(). -
Construye el body que será enviado al ERP:
-
Envía la solicitud al ERP:
POST resource/Cambio Salarial Administrativo
-
Devuelve al cliente el resultado, incluyendo la respuesta del ERP.
📤 Response 200 – Ejemplo exitoso
❗ Posibles Errores
1. Campos faltantes
2. Empleado vacío
3. Sueldo vacío
4. Movilidad vacío
5. Bono nocturno vacío
6. Fecha inválida
📚 Schemas
Cambio Salarial Administrativo (ERP)
Body enviado:
🗃 Lógica en Pseudocódigo
Cambio de Sistema Pensionario(Sistema de Pension Combos (1)) - [combos]
🧾 Descripción
Este servicio retorna un conjunto de listas predefinidas utilizadas en la aplicación móvil, específicamente los tipos de AFP disponibles para selección en formularios o procesos del sistema.
No realiza consultas a base de datos ni al ERP; solo devuelve información estática utilizada para poblar combos (selects) en la interfaz.
Es un servicio simple y de uso general dentro del módulo de onboarding o actualización de datos personales.
🚀 Endpoint
POST /combos
Este servicio no requiere parámetros en el body ni en la URL.
🔐 Seguridad
Utiliza el flujo regular del controlador.
No solicita autenticación directa dentro de la función, pero su acceso depende de la configuración del backend (middleware del módulo).
No realiza llamadas externas al ERP.
🧠 Flujo del Servicio (resumen real)
-
Define internamente una lista fija con los tipos de AFP:
-
AFP Habitat
-
AFP Profuturo
-
AFP Prima
-
AFP Integra
-
-
Organiza los datos dentro de un arreglo asociado a la clave
"tipos_afp". -
Retorna un JSON con:
-
valor: true -
data: { "tipos_afp": [...] }
-
📥 Request Body
Este servicio no recibe parámetros.
📤 Response 200 – Ejemplo
❗ Posibles Errores
Este servicio no genera errores, dado que devuelve datos estáticos.
Sin embargo, errores genéricos podrían producirse por:
-
Error interno del servidor
📚 Schemas usados
Respuesta del servicio
🗃 Lógica en pseudo-código
Cambio de Sistema Pensionario(Enviar solicitud cambio AFP (1)) - [store]
🧾 Descripción
Este servicio registra una solicitud de cambio de sistema pensionario para un empleado, validando previamente:
-
Que el empleado exista.
-
Que el sistema pensionario seleccionado sea válido (ONP o AFP).
-
Que el tipo de AFP sea correcto cuando corresponda.
-
Que no se intente cambiar al mismo sistema actual.
-
Regla especial: si el empleado está en ONP, solo puede migrar a AFP Integra.
-
Que no exista un documento previo en estado “Borrador”.
-
Validación de estructura del CUSPP cuando aplica.
El servicio crea un nuevo documento en el ERP: Solicitud de Cambio de Sistema Pensionario
🚀 Endpoint
POST /cambio-sistema-pensionario/store
🔐 Seguridad
-
Requiere autenticación interna vía
ServiceErp(). -
Solo accesible desde el backend con credenciales del ERP.
🧠 Flujo del Servicio (resumen real)
1. Validación de parámetros
El servicio valida:
-
empleadoobligatorio. -
sistema_pensionariodebe serAFPuONP. -
Si es AFP → validar AFP válida.
-
tipo_cambiodebe estar dentro de:-
"ENTRE AFP" -
"DE ONP A AFP" -
"DE AFP A ONP"
-
2. Trae los datos del empleado
Si el empleado no existe → error.
3. Determina si el cambio es permitido
Reglas del negocio:
-
No puede cambiar al mismo sistema.
-
Si está en ONP, solo puede pasar a AFP Integra.
-
Cuando el cambio involucra AFP, se valida el CUSPP:
-
Longitud 12
-
Primeros 6 caracteres numéricos
-
Último caracter numérico
-
4. Verifica si ya existe una solicitud "Borrador"
Consulta a la base ERP:
Si existe una, retorna error.
5. Crea la solicitud de cambio
📥 Request Body (ejemplo)
📤 Response 200 – Ejemplo
✔ Cambio enviado correctamente
❌ Tipo de cambio inválido
❌ Ya existe solicitud en borrador
❌ No puede cambiar al mismo sistema
❌ Error al crear solicitud
📚 Validaciones importantes del servicio
✔ Validación de CUSPP
-
Debe medir 12 caracteres.
-
Primeros 6 numéricos.
-
Último carácter numérico.
✔ Validación de sistema pensionario
-
Solo AFP o ONP.
-
Tipos válidos AFP:
"AFP Habitat","AFP Profuturo","AFP Prima","AFP Integra".
✔ Regla especial ONP → AFP
Si el empleado está en ONP, solo puede migrar a AFP Integra: