Módulo Convocatorias
- Lista de convocatorias internas (1) - [getInternalCalls]
- Obtiene combos (1) - [combosJobApplicant]
- Aplicar convocatoria (1) - [setJobApplicantPerApp]
Lista de convocatorias internas (1) - [getInternalCalls]
🧾 Descripción
Obtiene todas las convocatorias internas vigentes dentro del ERP, incluyendo información del puesto, sede y su archivo adjunto (PDF u otro documento del Job Opening).
El servicio cruza información entre:
-
Job Opening
-
File (archivos adjuntos al Job Opening)
Solo trae convocatorias internas activas (status = "Open") y marcadas como convocatoria interna = 1.
🚀 Endpoint
GET /get-internal-calls
No recibe parámetros.
Toda la información se obtiene mediante apiService() hacia el ERP.
🔐 Seguridad
Requiere conexión autorizada vía apiService(), usando token interno del ERP.
🧠 Flujo del Servicio (Resumen)
-
Obtener todos los Job Openings internos activos
-
Obtener todos los archivos relacionados al Job Opening
-
Si alguno de los endpoints devuelve error, se retorna:
-
Si no hay convocatorias abiertas:
-
Para cada convocatoria se agrega:
-
La descripción de la sede:
"PARA LA SEDE {sucursal}" -
El archivo correspondiente (
file_url), si existe.
-
-
Se retorna listado de convocatorias internas enriquecidas.
📥 Request Body
No tiene body.
📤 Response 200 – Ejemplo
❗ Posibles Errores
1. Error en consulta de Job Opening
2. Error en consulta de archivos File
3. No existen convocatorias internas activas
4. Error inesperado del servidor
📚 Esquemas (estructuras utilizadas)
Job Opening
Campos usados:
File
Campos usados:
🗃 Pseudo-código de la lógica
Obtiene combos (1) - [combosJobApplicant]
🧾 Descripción
Este servicio obtiene y devuelve todos los combos (listas de valores) necesarios para el registro o postulación de un Job Applicant (Postulante) dentro del sistema.
Los datos se obtienen directamente desde el ERP mediante el método interno getCombo(), que consulta tablas maestras como Country, Branch, Department y Gender.
Además, incluye una lista estática de tipos de documentos admitidos (DNI, Pasaporte, Carnet de Extranjería).
🚀 Endpoint
GET /combos-job-applicant
No requiere parámetros.
🔐 Seguridad
Requiere autenticación válida en la API del ERP, ya que las consultas internas se realizan mediante: $this->getCombo("<Doctype>")
🧠 Flujo del Servicio (resumen real)
-
Inicializa un arreglo vacío
$combo. -
Obtiene desde el ERP las siguientes listas:
-
Países → Doctype:
Country -
Sucursales → Doctype:
Branch -
Departamentos → Doctype:
Department -
Género → Doctype:
Gender
-
-
Agrega una lista fija de tipos de documentos:
-
Retorna la estructura completa con todos los combos.
-
En caso de error, devuelve una respuesta controlada.
📥 Request Body
Este servicio no recibe body, ni parámetros.
📤 Response 200 – Ejemplo
❗ Posibles Errores
1. Error de ejecución o conexión con el ERP
📚 Schemas (estructuras usadas)
Resultado de getCombo()
El servicio asume que getCombo() devuelve una estructura similar a:
Lista fija de tipos de documentos:
🗃 Lógica en pseudo-código
Aplicar convocatoria (1) - [setJobApplicantPerApp]
🧾 Descripción
Registra una nueva solicitud de postulación (Job Applicant) desde la aplicación móvil, validando previamente:
-
Que el usuario autenticado no tenga ya una solicitud creada para el mismo puesto.
-
Que exista un empleado vinculado al email de sesión.
-
Que los campos obligatorios del formulario estén correctamente enviados.
-
Que la información personal del empleado se complemente para generar el registro.
Este servicio crea un documento Job Applicant en el ERP y también registra un Error Log con la data enviada al ERP (para auditoría).
🚀 Endpoint
POST /set-job-applicant-per-app
📥 Parámetros requeridos (Request Body)
🔐 Seguridad
-
Requiere usuario autenticado en la app.
-
La comunicación con el ERP se realiza mediante
apiService(). -
No requiere token específico del usuario final, es un servicio interno controlado.
🧠 Flujo del Servicio (Explicación Detallada)
1️⃣ Validaciones iniciales
-
Verifica que exista
email_logued. -
Verifica que el email del formulario (
email_id) sea válido y contenga “@”. -
Valida campos obligatorios: dirección, documentos, sucursal, CV, grado de instrucción, job_title.
2️⃣ Verifica si ya existe una postulación previa
Consulta en el ERP:
Si ya existe un registro → retorna error.
3️⃣ Obtiene datos del empleado
Busca el empleado vinculado al email logueado:
Si no existe → retorna error.
4️⃣ Calcula la edad del postulante
Usando la fecha de nacimiento del empleado mediante DateTime::diff.
5️⃣ Construye el cuerpo del nuevo Job Applicant
Incluye:
-
Datos del empleado (nombres, apellidos, género, fecha de nacimiento, DNI, nacionalidad).
-
Datos enviados desde la app (CV, copia de documento, email, sucursal, carrera, etc.).
-
Estado inicial del proceso:
"status": "Open" -
Email logueado para relacionarlo a la cuenta APP.
6️⃣ Crea el registro Job Applicant
7️⃣ Registra error interno en Error Log (auditoría)
La respuesta del ERP se envía también a: POST Error Log
8️⃣ Retorna la respuesta al cliente
Si se creó correctamente:
Si falló:
📤 Respuesta 200 – Ejemplo (Éxito)
❌ Respuesta 200 – Ejemplo (Error)
❗ Posibles Errores Comunes
1. Falta email_logued
2. Email sin “@”
3. Empleado no existe
4. Solicitud duplicada
5. Error al crear Job Applicant
🗃 Estructuras usadas (Schemas)
▶ Employee (GET)
Campos consultados:
▶ Job Applicant (POST)
Campos enviados: