# 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

<div class="_tableContainer_1rjym_1" id="bkmrk-par%C3%A1metro-tipo-oblig"><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="1130" data-start="924"><thead data-end="972" data-start="924"><tr data-end="972" data-start="924"><th data-col-size="sm" data-end="936" data-start="924">Parámetro</th><th data-col-size="sm" data-end="943" data-start="936">Tipo</th><th data-col-size="sm" data-end="957" data-start="943">Obligatorio</th><th data-col-size="md" data-end="972" data-start="957">Descripción</th></tr></thead><tbody data-end="1130" data-start="1021"><tr data-end="1130" data-start="1021"><td data-col-size="sm" data-end="1033" data-start="1021">`Employe`</td><td data-col-size="sm" data-end="1042" data-start="1033">string</td><td data-col-size="sm" data-end="1047" data-start="1042">✔️</td><td data-col-size="md" data-end="1130" data-start="1047">Código del empleado supervisor cuyo historial de supervisiones será consultado.</td></tr></tbody></table>

</div></div>Ejemplo:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22employe%22%3A-%22emp-00"><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">"Employe"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"EMP-001245"</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 del ERP (token manejado por `ServiceErp()` y `dbErp()`).
- 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:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-get-resource%2Fcheck-l"><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-keyword">GET</span> resource/Check List del Supervisor Nacional <span class="hljs-number">2</span><span class="hljs-symbol">Filters:</span> supervisor = Employe<span class="hljs-symbol">Fields:</span> sucursal, fecha, name`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>- Si no hay resultados → Retorna mensaje indicando ausencia de registros.

### **3️⃣ Obtener la relación con Tabla Supervisores**

Con los `name` obtenidos, se consulta:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-post-send-query-data"><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>`POST send<span class="hljs-operator">-</span>query<span class="hljs-operator">-</span>database<span class="hljs-keyword">FROM</span> tabCheck List del Supervisor Nacional <span class="hljs-number">2</span> spr<span class="hljs-keyword">LEFT</span> <span class="hljs-keyword">JOIN</span> tabTabla supervisores tab <span class="hljs-keyword">ON</span> spr.name <span class="hljs-operator">=</span> tab.id_doctype<span class="hljs-keyword">WHERE</span> spr.name <span class="hljs-keyword">IN</span> (...)<span class="hljs-keyword">SELECT</span> spr.name, tab.parent`</td></tr></tbody></table>

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

- `$datanew[parent] = name`
- `$data_alrevez[name] = parent`

### **4️⃣ Obtener programación de supervisores**

Si existen supervisiones relacionadas, consulta:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-post-send-query-data-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>`POST send-query-<span class="hljs-keyword">database</span><span class="hljs-keyword">FROM</span> tabProgramacion de Supervisores<span class="hljs-keyword">WHERE</span> <span class="hljs-type">name</span> <span class="hljs-keyword">IN</span> parents<span class="hljs-keyword">SELECT</span> <span class="hljs-type">name</span>, prog_supervisores, fecha_real_de_la_supervicion`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>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)

<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">"Lista de Sucursales"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"data"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span>    <span class="hljs-punctuation">{</span>      <span class="hljs-attr">"sucursal"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"SUC-014"</span><span class="hljs-punctuation">,</span>      <span class="hljs-attr">"fecha"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"2024-10-03"</span><span class="hljs-punctuation">,</span>      <span class="hljs-attr">"name"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"CHK-SUP-00045"</span><span class="hljs-punctuation">,</span>      <span class="hljs-attr">"supervision"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"SUP-NACIONAL-05"</span><span class="hljs-punctuation">,</span>      <span class="hljs-attr">"fechaSupervision"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"2024-10-04"</span>    <span class="hljs-punctuation">}</span>  <span class="hljs-punctuation">]</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

### 1. Supervisor no enviado

<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">"El campo empleado es obligatorio"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"data"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>### 2. Error del servicio ERP

<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">"Ocurrio un error al listar"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"data"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>### 3. Supervisor sin supervisiones registradas

<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">"No hay ningun registro creado"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"data"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

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

## 📚 Tablas / Recursos involucrados

### **Check List del Supervisor Nacional 2**

Campos usados:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22sucursal%22%3A-%22strin"><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">"sucursal"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"fecha"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"date"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"name"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"supervisor"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>### **Tabla supervisores**

Relación entre registros checklist y programaciones.

### **Programación de Supervisores**

Campos utilizados:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22name%22%3A-%22string%22%2C-"><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">"name"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"prog_supervisores"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"fecha_real_de_la_supervicion"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"date"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

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

## 🗃 Pseudocódigo del Servicio

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-if-employe-is-empty%3A"><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>`if Employe is empty:    return errorlistName = GET Check List supervisor where supervisor=Employeif listName empty:    return sin registrosnames = extract "name" from listNamerelations = QUERY tabla supervisores WHERE spr.name IN namesparents = extract unique parentprogramaciones = QUERY programacion supervisores WHERE name IN parentsmerge programaciones into listNamereturn listName enriched`</td></tr></tbody></table>

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