# control/carguero/obtener - [show]

**PATH:** /var/www/html/qaservicesapp/app/Http/Controllers/ShalomControl/CargueroController.php

## 🧾 **Descripción**

Obtiene la **información detallada de un carguero programado** (`cap_id`) incluyendo:

- Datos del carguero (fecha, placas, choferes, ruta)
- Listado de terminales (para reemplazar IDs por nombres)
- Orígenes, destinos y escalas (transformados a formato legible)
- Cantidad de guías embarcadas asociadas al carguero
- Suma total del monto final de dichas guías

Este servicio consolida datos provenientes de varias tablas del sistema Empresarial.

---

# 🚀 **Endpoint**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-post-%2Fcarguero%2Fshow"><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 style="color: rgb(224, 62, 45);">`POST /carguero/show`</span>**</div></div>---

# 📥 **Request Body**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22cap_id%22%3A-%22number%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">"cap_id"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"terminal"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"usuario"</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>### Parámetros requeridos

<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="1138" data-start="816"><thead data-end="866" data-start="816"><tr data-end="866" data-start="816"><th data-col-size="sm" data-end="828" data-start="816">Campo</th><th data-col-size="sm" data-end="837" data-start="828">Tipo</th><th data-col-size="sm" data-end="851" data-start="837">Obligatorio</th><th data-col-size="md" data-end="866" data-start="851">Descripción</th></tr></thead><tbody data-end="1138" data-start="918"><tr data-end="975" data-start="918"><td data-col-size="sm" data-end="930" data-start="918">cap\_id</td><td data-col-size="sm" data-end="939" data-start="930">number</td><td data-col-size="sm" data-end="944" data-start="939">Sí</td><td data-col-size="md" data-end="975" data-start="944">ID del carguero programado.</td></tr><tr data-end="1054" data-start="976"><td data-col-size="sm" data-end="988" data-start="976">terminal</td><td data-col-size="sm" data-end="997" data-start="988">string</td><td data-col-size="sm" data-end="1002" data-start="997">No</td><td data-col-size="md" data-end="1054" data-start="1002">Terminal origen (no se usa en la lógica actual).</td></tr><tr data-end="1138" data-start="1055"><td data-col-size="sm" data-end="1067" data-start="1055">usuario</td><td data-col-size="sm" data-end="1076" data-start="1067">string</td><td data-col-size="sm" data-end="1081" data-start="1076">No</td><td data-col-size="md" data-end="1138" data-start="1081">Usuario que consulta (no se usa en la lógica actual).</td></tr></tbody></table>

</div></div>---

# 🔐 **Seguridad**

El servicio depende del middleware configurado (token, sesión, etc).  
No valida autenticación dentro del método.

---

# 🧠 **Flujo del Servicio (resumen real)**

1. **Validación inicial**
    
    
    - Si no se envía `cap_id` → retorna error.
2. **Obtiene datos del carguero**
    
    <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-keyword">SELECT</span> fecha, choferes, ruta, placas, origen, destino, cerrado<span class="hljs-keyword">FROM</span> emp_cargprogramado<span class="hljs-keyword">WHERE</span> cap_id <span class="hljs-operator">=</span> <span class="hljs-operator"><</span>cap_id<span class="hljs-operator">></span>`</div></div>
3. **Obtiene lista de terminales**
    
    <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-keyword">SELECT</span> ter_id, ter_nombre<span class="hljs-keyword">FROM</span> emp_terminal`</div></div>
    - Se genera un mapa `ter_id → nombre`.
4. **Convierte origen/destino (JSON) a texto descriptivo**
    
    
    - Decodifica arrays JSON.
    - Reemplaza cada ID por: `ID + nombre_terminal`
    - Calcula campos:
        
        
        - `origenes`
        - `destinos`
        - `escalas` (unión única de ambos)
5. **Obtiene guías relacionadas al carguero**
    
    <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-keyword">SELECT</span> ose_montofinal, ose_id<span class="hljs-keyword">FROM</span> emp_ordenservicio<span class="hljs-keyword">WHERE</span> ose_ultimo_carprog_embarque = <cap_id><span class="hljs-keyword">ORDER</span> <span class="hljs-keyword">BY</span> ose_ultima_fecha_embarque <span class="hljs-keyword">DESC</span>`</div></div>
6. Calcula:
    
    
    - `cantidad`: número de guías
    - `suma`: suma total de `ose_montofinal`
7. Elimina campos originales `origen` y `destino` del objeto final.
8. **Retorna JSON con todos los datos del carguero.**

---

# 📤 **Response 200 – Ejemplo**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22success%22%3A-true%2C-%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">"success"</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">"message"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Lista de cargueros"</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-attr">"fecha"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"2025-01-15 10:00:00"</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"cap_id"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1287</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"chofer1"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"CHO123"</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"chofer2"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"CHO456"</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"ruta"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"RUTA-09"</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"placa1"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"ABC-123"</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"placa2"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"DEF-456"</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"cerrado"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">0</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"origenes"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span>      <span class="hljs-string">"1 Terminal Lima"</span><span class="hljs-punctuation">,</span>      <span class="hljs-string">"3 Terminal Arequipa"</span>    <span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"destinos"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span>      <span class="hljs-string">"5 Terminal Piura"</span>    <span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"escalas"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span>      <span class="hljs-string">"1 Terminal Lima"</span><span class="hljs-punctuation">,</span>      <span class="hljs-string">"3 Terminal Arequipa"</span><span class="hljs-punctuation">,</span>      <span class="hljs-string">"5 Terminal Piura"</span>    <span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"cantidad"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">42</span><span class="hljs-punctuation">,</span>    <span class="hljs-attr">"suma"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">15789.50</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. Falta `cap_id`

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22success%22%3A-false%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">"success"</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">"message"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Es obligatorio enviar un id"</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. `cap_id` no existe en la BD

*(La función no valida explícitamente este caso, pero retornará `data = null`)*

Ejemplo de respuesta:

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22success%22%3A-true%2C-%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">"success"</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">"message"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Lista de cargueros"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"data"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">null</span></span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>*(Opcionalmente podrías corregir esto en backend.)*

---

# 📚 **Schemas (estructuras usadas)**

### **emp\_cargprogramado**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22cap_id%22%3A-%22number%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">"cap_id"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"fecha"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"datetime"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"chofer1"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"chofer2"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"ruta"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"placa1"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"placa2"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"cerrado"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"origen"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"json[]"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"destino"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"json[]"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>### **emp\_terminal**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22ter_id%22%3A-%22number%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">"ter_id"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"ter_nombre"</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>### **emp\_ordenservicio**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22ose_id%22%3A-%22number%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">"ose_id"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"ose_montofinal"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"float"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"ose_ultimo_carprog_embarque"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</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-if-%21cap_id--%3E-error-"><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 !cap_id -> errorcarguero = SELECT * FROM emp_cargprogramado WHERE cap_id = cap_idterminales = SELECT ter_id, ter_nombre FROM emp_terminalmapaTerminal = {ter_id: nombre}carguero.origenes = parseJSON(carguero.origen)carguero.destinos = parseJSON(carguero.destino)escalas = union(origenes, destinos)reemplazar cada ID por "ID + nombre_terminal"guias = SELECT ose_id, ose_montofinal FROM emp_ordenservicio        WHERE ose_ultimo_carprog_embarque = cap_idcarguero.cantidad = count(guias)carguero.suma = sum(ose_montofinal)return carguero`</td></tr></tbody></table>

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