Contrato de Trabajo(Url Contrato de trabajo PDF (1)) - [printContractPerDesignation] 🧾 Descripción Genera y descarga el Contrato de Trabajo correspondiente a un empleado, seleccionando de forma automática el formato de contrato correcto según: Tipo de documento del empleado (DNI / PAS / CE) Modalidad laboral (Full time, Part time, Teletrabajo) Tipo de puesto (Ej. Conductor, Vigilante) Número de contratos previos Funciones asociadas al contrato (solo extranjeros) El servicio determina internamente qué plantilla PDF debe usarse y devuelve el archivo final generado. Es un servicio interno que consulta múltiples recursos del ERP: Employee Contrato de Trabajo Funciones del Contrato Otros contratos previos 🚀 Endpoint GET /print-contract-per-designation/{employee} 📥 Parámetros de ruta Parámetro Tipo Obligatorio Descripción employee string Sí Código único del empleado en ERP 🔐 Seguridad Requiere autenticación interna: Consulta ERP vía dbErp() Obtención de PDF vía PDF::loadView() 🧠 Flujo del Servicio (Resumen Real) 1️⃣ Validación del empleado Consulta al ERP: POST send-query- database FROM tabEmployee WHERE name = employee SELECT fecha_de_ingreso_real Si no existe → retorna error: "No existe empleado" . 2️⃣ Obtiene el contrato activo más reciente Se buscan contratos con: empleado = employee docstatus = 1 fecha_de_ingreso_real = fecha_ingreso_empleado Ordenado por creación descendente POST send - query - database FROM tabContrato de Trabajo LEFT JOIN tabEmployee Si no existe contrato → retorna "No cuenta con Contrato" . 3️⃣ Obtiene funciones asociadas (solo extranjeros) Busca funciones del contrato: FROM tabtabla_funcion_extranjero WHERE parent = contrato.name Estas funciones se agregan al contrato en el PDF. 4️⃣ Determina el número de contratos previos Solo aplica a empleados con documento PAS o CE . Consulta cantidad de contratos registrados después del ingreso real. Esto permite determinar si el contrato es: Primer contrato Segundo contrato Tercer contrato Etc. (usando arreglo ordinal: primero, segundo, tercero, …) 5️⃣ Selección automática de la plantilla PDF En base a reglas: Condición Plantilla modalidad_de_trabajo = Teletrabajo contrato_teletrabajo labor contiene "CONDUCTOR" contrato_conductor_interprovincial labor = "VIGILANTE" contrato_full_time_vigilante tipo_doc PAS o CE, primer contrato contrato_extranjero tipo_doc PAS o CE, más de 1 contrato contrato_extranjero_mas_de_segundo_contrato tipo_contrato = PART TIME, labor=CALL CENTER ATC contrato_call_center_part_time tipo_contrato = PART TIME contrato_part_time tipo_contrato = FULL TIME contrato_full_time El método retorna el PDF con: PDF:: loadView (...)-> download (); 📤 Response – Archivo PDF Retorna directamente la descarga del contrato correspondiente. Si ocurre algún error, retorna un JSON: ✔️ Empleado válido, pero sin contrato { "valor" : false , "msn" : "No cuenta con Contrato" } ❌ Empleado no encontrado { "valor" : false , "msn" : "No existe empleado" } ❗ Posibles Errores Error Descripción Empleado no existe No se encontró en tabEmployee No tiene contratos vigentes No existe Contrato de Trabajo activo Error DB ERP Respuesta inesperada en dbErp Plantilla no encontrada Error al cargar vista PDF (muy raro) 📚 Tablas y Campos Utilizados Employee (GET) Campos usados: { "fecha_de_ingreso_real" : "date" } Contrato de Trabajo { "name" : "string" , "fecha_de_ingreso_real" : "date" , "empleado" : "string" , "labor" : "string" , "tipo_de_documento" : "string" , "modalidad_de_trabajo" : "string" , "tipo_de_contrato" : "string" } Funciones del Contrato (Extranjeros) { "funcion" : "string" } 🗃 Lógica en Pseudocódigo employeeData = GET Employee where name = employee if not exists: return error contract = GET Contrato where empleado=employee and activo if not exists: return error funciones = GET Funciones where parent=contract if doc PAS/CE: countPrevious = GET Contratos after ingreso real determinar ordinal seleccionar plantilla PDF según reglas return descargar PDF