Ir al contenido principal

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:

{ "category": "Limpieza y Orden", "name": "CHK-SUP-00015" }


🔐 Seguridad

Utiliza autenticación interna a través de:


$this->general->ServiceErp()

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:

{ "Nombre de Sección": { "fields_name": { fieldname : label }, "data_name": { fieldname : label }, "img_name": { fieldname : label } } }

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


GET /resource/Check List del Supervisor Nacional 2?filters=[["name","=",<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

{ "valor": true, "msn": "Missing Questions", "data": { "Limpieza y Orden": [ "pregunta_1", "pregunta_3" ], "questions": [ "¿Los ambientes se encuentran limpios?", "¿El personal cumple con el orden establecido?" ] } }


❗ Posibles Errores

1️⃣ category vacío

{ "valor": false, "msn": "El campo category es requerido" }


2️⃣ name vacío

{ "valor": false, "msn": "El campo name es requerido" }


3️⃣ El Doctype no responde

{ "valor": false, "msn": "Ocurrio un error al consular" }


4️⃣ Error en consulta de valores del documento

{ "valor": false, "msn": "Ocurrio un error durante el proceso, intente de nuevo." }


🗃 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

validar(category) validar(name) doctype = GET DocType structure preguntas = extraer_secciones_y_campos(doctype) selectedCategory = preguntas[category] campos = obtener_fieldnames(selectedCategory) valores = GET Documento ERP con esos campos missing = [] para cada campo en selectedCategory: si valor == 0: agregar a missing return missing