# 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

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22questions%22%3A-%22%7B..."><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"questions"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"{...}"</span><span class="hljs-punctuation">,</span>   <span class="hljs-attr">"name"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"CHK-LIST-0001"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>### 📌 Parámetros

<div class="_tableContainer_1rjym_1" id="bkmrk-campo-tipo-obligator"><div class="group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="1040" data-start="754"><thead data-end="807" data-start="754"><tr data-end="807" data-start="754"><th data-col-size="sm" data-end="769" data-start="754">Campo</th><th data-col-size="sm" data-end="778" data-start="769">Tipo</th><th data-col-size="sm" data-end="792" data-start="778">Obligatorio</th><th data-col-size="md" data-end="807" data-start="792">Descripción</th></tr></thead><tbody data-end="1040" data-start="862"><tr data-end="954" data-start="862"><td data-col-size="sm" data-end="878" data-start="862">**questions**</td><td data-col-size="sm" data-end="906" data-start="878">string (JSON-stringified)</td><td data-col-size="sm" data-end="911" data-start="906">✔️</td><td data-col-size="md" data-end="954" data-start="911">Objeto JSON con los campos a modificar.</td></tr><tr data-end="1040" data-start="955"><td data-col-size="sm" data-end="971" data-start="955">**name**</td><td data-col-size="sm" data-end="980" data-start="971">string</td><td data-col-size="sm" data-end="985" data-start="980">✔️</td><td data-col-size="md" data-end="1040" data-start="985">ID del documento del check list que se actualizará.</td></tr></tbody></table>

</div></div>Ejemplo del campo **questions**:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22pregunta_1%22%3A-%22si%22"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"pregunta_1"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"SI"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"pregunta_2"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"NO"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"observacion"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Todo conforme"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>---

## 🔐 Seguridad

Requiere autenticación interna mediante: `<span class="hljs-variable language_">$this</span>->general-><span class="hljs-title function_ invoke__">ServiceErp</span>(...)`

➡️ Se usa el token y contexto configurado internamente para comunicarse con el ERP.

---

## 🧠 Flujo del Servicio (resumen real)

1. **Valida parámetros obligatorios**  
    Si `questions` o `name` viene vacío, retorna error de validación.
2. **Valida que existan cambios reales**  
    Si `questions == '{}'`, se considera que no hubo modificación.
3. **Convierte a array el JSON recibido**
    
    <div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
    </div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-variable">$questions</span> = <span class="hljs-title function_ invoke__">json_decode</span>(<span class="hljs-variable">$questionsForm</span>, <span class="hljs-literal">true</span>);`</div></div>
4. **Genera el payload a actualizar**  
    Todos los campos recibidos se envían directamente al ERP.
5. **Realiza la actualización mediante API ERP**
    
    <div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
    </div></div></div><div class="overflow-y-auto p-4" dir="ltr">`PUT resource/Check List del Supervisor Nacional <span class="hljs-number">2</span>/{name}`</div></div>
6. **Retorna el resultado de la operación**

---

## 📤 Response 200 – Ejemplos

### ✅ Actualización correcta

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22valor%22%3A-true%2C-%22ms"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"valor"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">true</span></span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"msn"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Actualizado Correctamente"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>### ⚠️ No hubo cambios enviados

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22valor%22%3A-false%2C-%22m"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"valor"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"msn"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Usted no realizo ningun cambio"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>### ❌ Error de validación

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22valor%22%3A-false%2C-%22m-1"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"valor"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"msn"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"El campo questions es obligatorio"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>### ❌ Falla en el PUT

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22valor%22%3A-false%2C-%22m-2"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"valor"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"msn"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Error al actualizar"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>---

## ❗ Posibles Errores

<div class="_tableContainer_1rjym_1" id="bkmrk-error-descripci%C3%B3n-pa"><div class="group _tableWrapper_1rjym_13 flex w-fit flex-col-reverse" tabindex="-1"><table class="w-fit min-w-(--thread-content-width)" data-end="2819" data-start="2485"><thead data-end="2508" data-start="2485"><tr data-end="2508" data-start="2485"><th data-col-size="sm" data-end="2493" data-start="2485">Error</th><th data-col-size="md" data-end="2508" data-start="2493">Descripción</th></tr></thead><tbody data-end="2819" data-start="2533"><tr data-end="2596" data-start="2533"><td data-col-size="sm" data-end="2557" data-start="2533">**Parámetros vacíos**</td><td data-col-size="md" data-end="2596" data-start="2557">Si `questions` o `name` está vacío.</td></tr><tr data-end="2652" data-start="2597"><td data-col-size="sm" data-end="2615" data-start="2597">**Sin cambios**</td><td data-col-size="md" data-end="2652" data-start="2615">Cuando el JSON está vacío (`{}`).</td></tr><tr data-end="2751" data-start="2653"><td data-col-size="sm" data-end="2672" data-start="2653">**Error en ERP**</td><td data-col-size="md" data-end="2751" data-start="2672">Si el PUT falla por permisos, campos inexistentes o problemas del servidor.</td></tr><tr data-end="2819" data-start="2752"><td data-col-size="sm" data-end="2775" data-start="2752">**Error inesperado**</td><td data-col-size="md" data-end="2819" data-start="2775">Respuesta falsa o nula desde ServiceErp.</td></tr></tbody></table>

</div></div>---

## 📚 Schemas (datos usados)

### ✔ Check List del Supervisor Nacional 2 (PUT)

Campos dinámicos según las preguntas.  
Ejemplo:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22pregunta_1%22%3A-%22si%22-1"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`<span class="hljs-punctuation">{</span>  <span class="hljs-attr">"pregunta_1"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"SI"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"pregunta_2"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"NO"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"observacion"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Correcto"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>---

## 🗃 Lógica en pseudo-código

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-questionsform-%3D-requ"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"><table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 99.881%;"></col></colgroup><tbody><tr><td>`questionsForm = request.questions<span class="hljs-type">name</span> = request.name<span class="hljs-keyword">if</span> questionsForm empty → <span class="hljs-keyword">return</span> error<span class="hljs-keyword">if</span> <span class="hljs-type">name</span> empty → <span class="hljs-keyword">return</span> error<span class="hljs-keyword">if</span> questionsForm == "{}" → <span class="hljs-keyword">return</span> "no hizo cambios"questions = decode(questionsForm)fields = questions<span class="hljs-keyword">update</span> = PUT /resource/<span class="hljs-keyword">Check</span> List del Supervisor Nacional <span class="hljs-number">2</span>/{<span class="hljs-type">name</span>} <span class="hljs-keyword">with</span> fields<span class="hljs-keyword">if</span> <span class="hljs-keyword">update</span> fails → <span class="hljs-keyword">return</span> error<span class="hljs-keyword">return</span> success`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>