Modulo Información Personal
- Obtener Usuario (2) - [get-user3]
- Actualizar Datos del Usuario (1) - [update-perfil-info]
- Actualizar Imagen de Perfil del Usuario (1) - [update-img-user]
Obtener Usuario (2) - [get-user3]
🧾 Descripción
Obtiene la información completa de un usuario del sistema, ya sea Empleado o Estudiante, de acuerdo al identificador enviado (email o DNI/pasaporte).
Retorna datos personales, laborales, de contrato y estado del usuario.
Si es empleado, consulta tablas de Employee —si no existe— consulta Student.
🚀 Endpoint
La ruta final depende de tus archivos
api.php.
🔐 Seguridad
-
No valida token aquí, pero depende del mecanismo usado dentro de
general->dbErpygeneral->ServiceErp. -
Debe ser usado desde una app autenticada.
📥 Request Body
{
"username": "string"
} |
Parámetros
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Email del usuario o número de documento/pasaporte. |
📤 Respuestas
✔️ 200 – Usuario encontrado (Empleado)
✔️ 200 – Usuario encontrado (Estudiante)
❌ Usuario no encontrado en Employee ni Student
{
"valor": false,
"msn": "Sin Estudiante: Su usuario no tiene permisos para acceder al aplicativo. Contactar con soporte.",
"data": []
} |
❌ Empleado inactivo
{
"valor": false,
"msn": "Empleado Inactivo: Comuníquese con su administrador para que pueda verificar el estado de su empleado.",
"data": [ ... ]
} |
❌ Usuario estudiante deshabilitado
{
"valor": false,
"msn": "Usuario Deshabilitado: Comuníquese con su administrador para que pueda verificar el estado de su empleado.",
"data": [ ... ]
} |
🧩 Lógica del Servicio
1️⃣ Determinar tipo de búsqueda
Si el username contiene @, se busca por: Employee.user_id = username
Si no: Employee.passport_number = username
2️⃣ Consulta principal (Employee)
Usa dbErp con una consulta SQL dinámica unida a:
-
tabEmployee
-
tabUser
-
tabBranch
-
tabContrato de Trabajo
-
tabDepartment
Si no hay resultados → se intenta en Student.
3️⃣ Consulta secundaria (Student)
Busca en:
-
tabStudent
-
tabUser
-
tabBranch
-
tabJob Applicant
-
tabRequerimiento de Personal
-
tabDesignation
-
tabDepartment
Si no existe → usuario sin permisos.
4️⃣ Validaciones adicionales
-
Employee con status
"Inactive"→ error. -
Student con
enabled = 0→ error. -
Formatear
fecha_de_nacimiento→"m-d".
5️⃣ Validación de contratos
Se consulta: resource/Contrato de Trabajo
Se determina:
-
"primer_contrato"o -
"renovacion"
6️⃣ Ajuste final de campos
-
pets → transformado a “0” si viene null.
-
Se asignan alias y campos calculados.
📚 Response Schema
Para Empleado
Incluye (parcial):
| Campo | Descripción |
|---|---|
| name | ID del Employee |
| employee_name | Nombre completo |
| tipo_usuario | "Empleado" |
| status | Active, PreActivo, Inactive |
| vigencia_contrato | Rango de fechas |
| contratacion | primer_contrato / renovacion |
| pets | Valor convertido a string |
| fecha_de_nacimiento | mm-dd |
Más de 40 campos adicionales según tu SQL.
Para Estudiante
Incluye:
| Campo | Descripción |
|---|---|
| name | ID del Student |
| employee_name | Nombre completo |
| tipo_usuario | Estudiante |
| statusUser | 1 ó 0 |
| user_image | Foto |
| gender | Género |
| dni | Documento |
🧪 Ejemplo curl
Actualizar Datos del Usuario (1) - [update-perfil-info]
🧾 Descripción
Actualiza la información de perfil del empleado dentro del ERP (doctype Employee) mediante una petición PUT, modificando uno o varios de los siguientes datos:
-
Número de celular (
cell_number) -
Correo personal (
personal_email) -
Dirección permanente (
permanent_address)
Solo actualiza los campos enviados; los no enviados no se modifican.
🚀 Endpoint
La ruta real depende del archivo
routes/api.php.
🔐 Seguridad
-
Requiere que la app ya tenga autenticación o sesión aplicada.
-
Internamente el servicio usa
ServiceErp(ERPNext API con permiso necesario).
📥 Request Body
{
"employe": "HR-EMP-001",
"celular": "987654321",
"correo": "example@correo.com",
"direccion": "Av. Los Olivos 123"
} |
Campos
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| employe | string | ✔️ Sí | ID del empleado en ERPNext (Employee.name). |
| celular | string | No | Nuevo número de celular. |
| correo | string | No | Nuevo correo personal. (Actualiza personal_email). |
| direccion | string | No | Nueva dirección permanente del empleado. |
🧩 Validaciones
-
employe vacío → se devuelve error mediante
responseValidate(). -
Los demás campos son opcionales.
-
Solo se actualizan los campos enviados.
📤 Responses
✔️ 200 – Actualización exitosa
Nota: El valor
"value": falseparece un bug en tu código, ya que indica éxito pero devuelvefalse.
Te lo dejo documentado según tu implementación real.
❌ 400 – Faltan parámetros requeridos
Ejemplo cuando no se envía employe:
{
"valor": false,
"msn": "Debe enviar el empleado",
"data": []
} |
(Respuesta generada por responseValidate())
🧠 Lógica Interna (Resumen)
-
Recibe parámetros del request.
-
Si
employeestá vacío → error. -
Crea un arreglo
updateKeyssolo con los campos enviados. -
Llama a:
Con el body:
-
Devuelve la respuesta del ERP.
📚 Schemas
Request
{
"employe": "string",
"celular": "string (opcional)",
"correo": "string (opcional)",
"direccion": "string (opcional)"
} |
Response
🧪 Ejemplo de Uso (curl)
Actualizar Imagen de Perfil del Usuario (1) - [update-img-user]
🧾 Descripción
Actualiza la imagen de perfil de un usuario en ERPNext.
El proceso incluye:
-
Recepción de un archivo enviado desde la app.
-
Subida del archivo al endpoint de ERPNext:
method/upload_file. -
Obtención de la URL generada del archivo.
-
Actualización del campo
user_imagedel User. -
Actualización del campo
imageen el Employee asociado (si existe).
🚀 Endpoint
La ruta exacta dependerá del archivo de rutas Laravel (
api.php).
🔐 Seguridad
-
La función no valida sesión o token, pero el endpoint llamado en ERPNext usa cookies de sesión Guest, lo que indica que debe usarse desde un backend confiable.
-
Se recomienda protegerla en la API propia.
📥 Request (Multipart / Form-Data)
Campos requeridos
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| file | file | Sí | Imagen a subir (jpg, png, etc.) |
| user | string | Sí | Nombre del usuario en ERPNext para actualizar (User.name). |
Ejemplo (form-data)
file: avatar.png
user: user@example.com |
📤 Responses
✔️ 200 – Imagen actualizada correctamente
{
"valor": true,
"msn": "Imagen de usuario actualizado correctamente",
"data": { ... }
} |
❌ 400 – Faltan datos o error al subir archivo
Ejemplo de error al no recibir archivo:
{
"msn": "File could not be processed"
} |
❌ 500 – Error de carga o actualización
{
"valor": false,
"msn": "Error al actualizar la imagen de usuario",
"data": { ... }
} |
🧩 Lógica Interna
1. Lectura del archivo
2. Subida a ERPNext
-
Endpoint usado:
POST /method/upload_file
-
Cabecera usada:
Cookie: full_name=Guest; sid=Guest; system_user=no; user_id=Guest; user_image=
⚠️ Se sube el archivo como usuario Guest.
3. Validación de respuesta
Debe existir: message.file_url
Si no existe → error.
4. Actualizar información del User
PUT resource/User/{user}
{
"user_image": "<file_url>"
} |
5. Actualizar Employee si corresponde
-
Busca Employee cuyo
user_idcoincida:
Si existe:
📚 Request/Response Schemas
Request (multipart/form-data)
file: File
user: string |
Response (success)
{
"valor": true,
"msn": "Imagen de usuario actualizado correctamente",
"data": { "user_image": "url_file" }
} |