Módulo Supervision
- Lista Sucursales (1) - [listSucursalSupervition]
- Informacion de sucursal (1) - [infosupervitionName]
- Puntajes de las categorias (1) - [listCategory]
- Respuestas formulario (1) - [missing_questions_form]
- Respuestas (1) - [missing_questions]
- Adjuntar imagen (1) - [uploadFileErp]
- Actualizar terminos de supervision (1) - [updatequestion]
Lista Sucursales (1) - [listSucursalSupervition]
🧾 Descripción
Este servicio obtiene todas las supervisiones realizadas por un Supervisor Nacional, junto con información adicional relacionada a:
-
Las sucursales supervisadas
-
La fecha de registro
-
El documento generado
-
La programación de supervisión vinculada
-
La fecha real en la que se ejecutó dicha supervisión
El servicio consolida datos procedentes de:
-
Check List del Supervisor Nacional 2 -
Tabla supervisores -
Programación de Supervisores
y devuelve una lista enriquecida de supervisiones.
🚀 Endpoint
POST /list-sucursal-supervition
📥 Parámetros de Entrada (Request)
Body / FormData
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
Employe |
string | ✔️ | Código del empleado supervisor cuyo historial de supervisiones será consultado. |
Ejemplo:
🔐 Seguridad
-
Requiere autenticación interna del ERP (token manejado por
ServiceErp()ydbErp()). -
Solo accesible para usuarios válidos dentro del entorno de capacitación.
🧠 Flujo del Servicio (Resumen Detallado)
1️⃣ Validar parámetro recibido
Si Employe viene vacío, se retorna un mensaje de validación.
2️⃣ Listar supervisiones creadas por el supervisor
Consulta en el ERP:
-
Si no hay resultados → Retorna mensaje indicando ausencia de registros.
3️⃣ Obtener la relación con Tabla Supervisores
Con los name obtenidos, se consulta:
Construye:
-
$datanew[parent] = name -
$data_alrevez[name] = parent
4️⃣ Obtener programación de supervisores
Si existen supervisiones relacionadas, consulta:
Se agrega esta información a cada supervisión detectada.
5️⃣ Unir los datos
Cada supervisión final contendrá:
-
sucursal
-
fecha del checklist
-
nombre del documento checklist
-
programación de supervisión (
prog_supervisores) -
fecha real de supervisión (
fecha_real_de_la_supervicion)
📤 Response (200 – Ejemplo)
❗ Posibles Errores
1. Supervisor no enviado
2. Error del servicio ERP
3. Supervisor sin supervisiones registradas
📚 Tablas / Recursos involucrados
Check List del Supervisor Nacional 2
Campos usados:
Tabla supervisores
Relación entre registros checklist y programaciones.
Programación de Supervisores
Campos utilizados:
🗃 Pseudocódigo del Servicio
Informacion de sucursal (1) - [infosupervitionName]
🧾 Descripción
Obtiene la información general de un checklist del Supervisor Nacional, incluyendo:
-
Datos principales de la cabecera del checklist
-
Promedio de progreso de todas las categorías evaluadas
-
Puntaje total acumulado
El servicio combina información proveniente de:
-
ERP (doc: Check List del Supervisor Nacional 2)
-
Servicio interno
listCategory()(el cual obtiene las secciones/categorías del checklist)
🚀 Endpoint
POST /infosupervition-name
🔸 Recibe un parámetro obligatorio en el body:
🔐 Seguridad
Requiere autenticación interna mediante ServiceErp() y dependencias del módulo general.
🧠 Flujo del Servicio (resumen real)
-
Valida parámetro
name
Si viene vacío, retorna error utilizandoresponseValidate(). -
Obtiene todas las categorías asociadas al checklist
Usa: -
Valida respuesta de categorías
-
Si ocurre error → retorna mensaje de fallo.
-
Si la data viene vacía → indica que no existen registros creados.
-
-
Calcula progresos y puntajes totales
Recorre cada categoría para:-
Sumar
section_puntaje -
Sumar
progreso -
Contar categorías
Luego obtiene:
-
all_progress = total_progreso / cantidad_categorias -
all_point = round(total_puntaje)
-
-
Consulta información de cabecera del checklist en ERP
Realiza:
Campos obtenidos:
-
sucursal
-
fecha
-
name
-
-
Agrega métricas calculadas al resultado:
-
all_progress -
all_point
-
-
Retorna respuesta final con la información consolidada
📥 Request Body
📤 Response 200 – Ejemplo
❗ Posibles Errores
1. name vacío
2. Error al obtener categorías
3. No existen registros en categorías
4. Error consultando al ERP
📚 Schemas usados
Categoría (respuesta de listCategory)
Check List del Supervisor Nacional 2 (ERP)
🗃 Lógica en pseudo-código
Puntajes de las categorias (1) - [listCategory]
🧾 Descripción
Obtiene y procesa dinámicamente todas las categorías, preguntas y porcentajes de avance del Check List del Supervisor Nacional 2, basándose en su estructura de campos del DocType y los valores registrados en un documento específico.
Este servicio:
-
Lee la estructura del DocType para identificar:
-
Secciones (categorías).
-
Preguntas tipo Check, Data, Attach Image.
-
-
Recupera los valores reales del documento filtrado por
name. -
Agrupa los campos por categoría.
-
Calcula el avance (%) y puntaje por sección.
-
Devuelve un resumen por categoría con:
-
Total de campos.
-
Campos completados.
-
Progreso (%).
-
Puntaje asignado.
-
🚀 Endpoint
POST /list-category
📥 Request Body
Parámetros
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| name | string | ✔ | ID del documento cuyo checklist se evaluará |
🔐 Seguridad
El servicio utiliza autenticación interna mediante: $this->general->ServiceErp()
Por lo tanto, requiere credenciales válidas para consumir el ERP.
🧠 Flujo del Servicio (Explicación Técnica Real)
1️⃣ Obtener estructura del DocType
Se consulta: GET resource/DocType/Check List del Supervisor Nacional 2
Esto trae todos los campos del formulario.
El servicio filtra únicamente:
-
Section Break → marca inicio de categoría
-
Check
-
Data
-
Attach Image
También omite los campos de puntaje global:
-
porcentaje_de_imagen_y_presentación
-
puntaje_de_imagen_y_presentación
2️⃣ Construcción dinámica de categorías y preguntas
Ejemplo de agrupación generada:
3️⃣ Recuperar valores del documento
Se unen todos los fields encontrados y se hace:
Esto trae los valores registrados del documento.
4️⃣ Agrupar los valores por categoría
El servicio arma una estructura:
5️⃣ Calcular puntajes y progreso
Para cada categoría:
-
Se cuenta el total de campos (Check, Data, Imagen)
-
Se cuentan los completados:
-
Check → valor 1
-
-
Se asigna un puntaje:
-
Cada check activo suma 1.82
-
-
Se calcula:
⚠ Nota: El servicio divide el total de campos entre 3 ($maxFields = $maxFields / 3) para compensar que cada pregunta tiene 3 tipos de fields (check, data, image).
📤 Response 200 – Ejemplo
❗ Posibles Errores
1. No se puede obtener el DocType
2. Documento no encontrado
(El servicio devolverá valores vacíos por categoría)
🗃 Estructuras Utilizadas
DocType (GET)
Campos analizados:
🧩 Lógica en pseudocódigo
Respuestas formulario (1) - [missing_questions_form]
🧾 Descripción
Este servicio identifica qué preguntas no han sido completadas dentro de un formulario del DocType:
Check List del Supervisor Nacional 2
El servicio analiza:
-
Una categoría específica del formulario (Section Break).
-
Un documento del Doctype, identificado por name.
-
Obtiene todos los campos relevantes (Check, Data, Attach Image).
-
Compara estos campos con los valores del documento
-
Devuelve solo los campos incompletos, agrupados por categoría.
Se usa principalmente para:
✔ Validar formularios incompletos
✔ Mostrar al usuario qué preguntas faltan llenar
✔ Controlar flujos de supervisión/inspecciones
🚀 Endpoint
POST /missing-questions-form
📥 Parámetros del Request
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| category | string | ✔ Sí | Nombre de la sección del formulario (label del Section Break). |
| name | string | ✔ Sí | ID del documento del Doctype "Check List del Supervisor Nacional 2". |
Ejemplo de request:
🔐 Seguridad
Utiliza autenticación interna a través de:
No requiere autenticación externa del usuario final.
Toda la data se obtiene desde el ERP.
🧠 Flujo del Servicio (Resumen Técnico)
1️⃣ Validaciones iniciales
-
Verifica que category no esté vacío.
-
Verifica que name no esté vacío.
Si falta un campo → retorna error inmediato.
2️⃣ Obtiene estructura del formulario
GET al Doctype: GET /resource/DocType/Check List del Supervisor Nacional 2
De ahí obtiene:
-
Section Breaks
-
Campos tipo Check
-
Campos tipo Data
-
Campos tipo Attach Image
Y construye un arreglo organizado por secciones:
Se excluyen automáticamente:
-
porcentaje_de_imagen_y_presentación
-
puntaje_de_imagen_y_presentación
3️⃣ Filtra solo la categoría solicitada
Busca dentro de todas las secciones y selecciona solo: questions[category]
Si no existe → retorna vacío.
4️⃣ Obtiene valores del documento filtrado por name
Aquí obtiene los valores reales del formulario.
5️⃣ Determina qué preguntas faltan completar
Compara para cada campo: si campo == 0 → está incompleto → se agrega a la lista
Guarda:
-
fieldnames faltantes
-
Texto de la pregunta
-
Identificación por sección
6️⃣ Retorna solo las preguntas faltantes
📤 Response 200 – Ejemplo Real
❗ Posibles Errores
1️⃣ category vacío
2️⃣ name vacío
3️⃣ El Doctype no responde
4️⃣ Error en consulta de valores del documento
🗃 Estructuras Usadas
📌 DocType: Check List del Supervisor Nacional 2
Campos analizados:
-
Section Break
-
Check
-
Data
-
Attach Image
Se ignoran:
-
porcentaje_de_imagen_y_presentación
-
puntaje_de_imagen_y_presentación
🧩 Algoritmo en Pseudocódigo
Respuestas (1) - [missing_questions]
🧾 Descripción
Este servicio obtiene las preguntas incompletas y completas de una categoría específica del Doctype “Check List del Supervisor Nacional 2”, basándose en un registro identificado por su name.
El servicio:
-
Obtiene toda la estructura de campos del Doctype.
-
Identifica qué campos pertenecen a cada categoría (Section Break).
-
Filtra únicamente los campos tipo:
-
Check
-
Data (comentado actualmente)
-
Attach Image (comentado actualmente)
-
-
Consulta los valores reales del formulario (
0o1). -
Determina qué preguntas están completas o incompletas.
-
Devuelve solo la categoría solicitada.
Es un servicio orientado a auditorías y evaluación operacional.
🚀 Endpoint
POST /missing-questions
📥 Parámetros (Request Body)
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name |
string | ✔️ | Identificador del documento del Doctype “Check List del Supervisor Nacional 2”. |
category |
string | ✔️ | Nombre de la categoría (Section Break) a analizar. |
Ejemplo:
🔐 Seguridad
Requiere autenticación ERP válida, manejada internamente por ServiceErp().
🧠 Flujo del Servicio (Resumen)
-
Validación de parámetros
Sinameocategoryvienen vacíos → error inmediato. -
Obtener estructura del Doctype
GET/resource/DocType/Check List del Supervisor Nacional 2-
Extrae los campos agrupados por sección (Section Break).
-
Identifica solo campos tipo Check.
-
-
Agrupar preguntas por categoría
-
Mapea
category→ lista de campos (fieldname → label).
-
-
Construir lista total de fields para consultar sus valores
Ejemplo: -
Consultar valores reales del registro
GET/resource/Check List del Supervisor Nacional 2?fields=[...]&filters=[["name","=",name]] -
Clasificar por categoría:
-
Si campo =
0→ Incompleta -
Si campo =
1→ Completa
-
-
Retornar solo la categoría solicitada.
📤 Response 200 – Ejemplo
❗ Posibles Errores
1. Parámetro vacío
2. Error al consultar el DocType
3. Error consultando los valores del registro
📚 Estructuras utilizadas
✔️ Doctype: Check List del Supervisor Nacional 2
Campos relevantes:
| Tipo | Uso |
|---|---|
| Section Break | Agrupar preguntas por categoría |
| Check | Representa preguntas de Sí/No |
| Data | (comentado, no procesado actualmente) |
| Attach Image | (comentado, no procesado actualmente) |
Ejemplo de estructura procesada:
🧠 Pseudocódigo Real
Adjuntar imagen (1) - [uploadFileErp]
🧾 Descripción
Este servicio permite subir un archivo al ERP utilizando el endpoint interno method/upload_file.
Funciona enviando el archivo recibido desde el request PHP ($_FILES["file"]) mediante cURL hacia el servicio de carga del ERP y devuelve los metadatos del archivo subido:
-
URL pública
-
Fecha de creación
-
Nombre del archivo
-
Tamaño del archivo
Es un servicio auxiliar utilizado por funcionalidades que requieren cargar documentos o imágenes hacia el servidor del ERP.
🚀 Endpoint
POST /upload-file-erp
📌 Requiere enviar un archivo en el campo file del formulario.
🔐 Seguridad
No utiliza el token del usuario.
El servicio realiza la subida como Guest, usando los headers de cookie:
➡️ Esto significa que la API de ERP ya está configurada para permitir carga de archivos desde clientes externos bajo permisos Guest.
🧠 Flujo del Servicio (resumen)
-
Captura el archivo enviado en
$_FILES["file"]. -
Crea un objeto
CURLFilecon:-
ruta temporal (
tmp_name) -
tipo MIME
-
nombre original
-
-
Envía el archivo al endpoint:
-
Espera la respuesta del ERP.
-
Decodifica la respuesta JSON.
-
Retorna un objeto con:
-
url del archivo
-
fecha de creación
-
nombre
-
tamaño
-
📥 Request Body
Debe enviarse como multipart/form-data.
Ejemplo (form-data):
| Campo | Tipo | Descripción |
|---|---|---|
| file | File | Archivo a subir |
Ejemplo en HTML:
📤 Response 200 – Ejemplo
❗ Posibles Errores
1. Error al procesar el archivo
2. Error en cURL
3. El ERP no devuelve estructura válida
📚 Estructura de respuesta del ERP
El ERP retorna algo como:
🗃 Lógica en pseudo-código
Actualizar terminos de supervision (1) - [updatequestion]
🧾 Descripción
Actualiza los campos (preguntas) de un documento del Doctype “Check List del Supervisor Nacional 2” dentro del ERP, permitiendo modificar dinámicamente cualquier grupo de preguntas o valores enviados desde la aplicación.
El servicio solo actualiza los campos enviados, y valida previamente que realmente existan cambios antes de ejecutar la operación.
🚀 Endpoint
POST /updatequestion
📥 Request Body
📌 Parámetros
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| questions | string (JSON-stringified) | ✔️ | Objeto JSON con los campos a modificar. |
| name | string | ✔️ | ID del documento del check list que se actualizará. |
Ejemplo del campo questions:
🔐 Seguridad
Requiere autenticación interna mediante: $this->general->ServiceErp(...)
➡️ Se usa el token y contexto configurado internamente para comunicarse con el ERP.
🧠 Flujo del Servicio (resumen real)
-
Valida parámetros obligatorios
Siquestionsonameviene vacío, retorna error de validación. -
Valida que existan cambios reales
Siquestions == '{}', se considera que no hubo modificación. -
Convierte a array el JSON recibido
-
Genera el payload a actualizar
Todos los campos recibidos se envían directamente al ERP. -
Realiza la actualización mediante API ERP
-
Retorna el resultado de la operación
📤 Response 200 – Ejemplos
✅ Actualización correcta
⚠️ No hubo cambios enviados
❌ Error de validación
❌ Falla en el PUT
❗ Posibles Errores
| Error | Descripción |
|---|---|
| Parámetros vacíos | Si questions o name está vacío. |
| Sin cambios | Cuando el JSON está vacío ({}). |
| Error en ERP | Si el PUT falla por permisos, campos inexistentes o problemas del servidor. |
| Error inesperado | Respuesta falsa o nula desde ServiceErp. |
📚 Schemas (datos usados)
✔ Check List del Supervisor Nacional 2 (PUT)
Campos dinámicos según las preguntas.
Ejemplo: