Ir al contenido principal

Documento de Ingresos (Verificar Registro de Postulación (1)) - [validatePersonalRequirement]

🧾 Descripción

Este servicio valida si un postulante (que ya es empleado o está en proceso de contratación) cumple con las condiciones necesarias para continuar el proceso de Alta y Requerimiento de Personal.

La validación se basa en:

  • Información del Employee

  • Su postulación (Job Applicant)

  • Su Convocatoria (Job Opening)

  • Su Terminal / Sucursal (Branch)

  • El Requerimiento de Personal asociado a la convocatoria

Este servicio permite determinar si se puede generar su trámite de contratación y qué parámetros corresponden a su modalidad de trabajo y tipo de jornada.


🚀 Endpoint

POST /validate-personal-requirement

📥 Request Body

{ "document": "12345678" }

Parámetros:

  • document: DNI o pasaporte del postulante.


🔐 Seguridad

Requiere autenticación interna hacia el ERP mediante dbErp() y rutas definidas en APICAPACITACION.


🧠 Flujo del Servicio (Resumen)

1️⃣ Validar si el documento pertenece a un Employee

Consulta en tabEmployee:

SELECT employment_type, tipo_de_jornada FROM tabEmployee WHERE passport_number = :document
  • Si no existe → ❌ devuelve error.


2️⃣ Buscar su postulación más reciente (Job Applicant)

Consulta:

SELECT job_title FROM tabJob Applicant WHERE numero_de_documento = :document AND docstatus != 2 ORDER BY creation DESC
  • Si no tiene postulación → ❌ retorna error.


3️⃣ Obtener información de la Convocatoria (Job Opening)

Consulta:

SELECT modalidad_de_trabajo, modalidad, sucursal FROM tabJob Opening WHERE name = :job_title AND docstatus != 2
  • Determina:

    • Tipo de jornada / modalidad de la convocatoria.

    • Sucursal asignada al postulante.


4️⃣ Obtener información de la Sucursal (Branch)

Consulta:

SELECT division_nacional FROM tabBranch WHERE name = :sucursal AND docstatus != 2
  • Determina la zona RRHH responsable.

  • Según la zona, define qué tabla usar para el Requerimiento de Personal:

    • Lima → tabRequerimiento de Personal Lima

    • Otros → tabRequerimiento de Personal


5️⃣ Obtener el Requerimiento de Personal asociado a la convocatoria

SELECT tipo_de_jornada FROM {RequerimientoTabla} WHERE documento_convocatoria = :job_title AND docstatus != 2
  • Si no existe RP → ❌ el proceso de contratación debe repetirse.


6️⃣ Respuesta exitosa

Devuelve:

  • Tipo de jornada

  • Modalidad del puesto

  • Código de convocatoria


📤 Response 200 – Ejemplo

{ "valor": true, "Message": "Exito.", "data": { "tipo_jornada": "Tiempo completo", "modalidad": "Presencial", "convocatoria": "JOB-2025-00123" } }

❗ Posibles Errores

1. No existe empleado con el documento

{ "valor": false, "Message": "Surgió un error, contactar con soporte.", "data": [] }

2. No existen postulaciones válidas

{ "valor": false, "Message": "No se encontró un registró de su postulación a una de nuestras convocatorias, comuniquese con su administrador.", "data": [] }

3. Convocatoria no encontrada

{ "valor": false, "Message": "No se encontró la convocatoria vinculada a su postulación, comuniquese con su administrador.", "data": [] }

4. Sucursal/Terminal inexistente

{ "valor": false, "Message": "No existe la terminal del usuario.", "data": [] }

5. Requerimiento de Personal no creado

{ "valor": false, "Message": "La convocatoria del postulante no tiene REQUERIMIENTO DE PERSONAL creada, realizar nuevamente el proceso de contratación.", "data": [] }

6. Error del servidor

{ "valor": false, "Message": "Ocurrio un error en el servidor.", "data": [] }

📚 Esquemas utilizados

Employee

Campos consultados:

{ "employment_type": "string", "tipo_de_jornada": "string" }


Job Applicant

{ "job_title": "string" }

Job Opening

{ "modalidad_de_trabajo": "string", "modalidad": "string", "sucursal": "string" }

Branch

{ "division_nacional": "string", "name": "string" }

Requerimiento de Personal

{ "tipo_de_jornada": "string", "name": "string" }

🗃 Lógica en Pseudocódigo

employee = GET Employee WHERE passport_number = document if not employee: error("Empleado no encontrado") postulacion = GET Job Applicant WHERE document = document ORDER BY creation DESC if not postulacion: error("Postulación no encontrada") convocatoria = GET Job Opening WHERE name = postulacion.job_title if not convocatoria: error("Convocatoria no encontrada") branch = GET Branch WHERE name = convocatoria.sucursal select RP_table = Branch.zone == Lima ? RP_Lima : RP_Normal rp = GET RP_table WHERE documento_convocatoria = job_title if not rp: error("RP no creada") return { tipo_jornada: rp.tipo_de_jornada, modalidad: convocatoria.modalidad || modalidad_de_trabajo, convocatoria: job_title }