# control/embarque/paquete -[storeQuantities]

Path: /var/www/html/qaservicesapp/app/Http/Controllers/ShalomControl/EmbarqueController.php

## 🧾 **Descripción**

Este servicio registra el **embarque de paquetes** para una Orden de Servicio (OS).  
Valida toda la información crítica del embarque, verifica restricciones de rutas, valida si la OS está apta para embarque (QR / clave / no anulada), confirma cantidades, registra procesos históricos, actualiza estados de embarque y permite manejar escenarios:

- Embarque normal
- Embarque masivo
- Embarque aéreo
- Embarque desde cooler

Es uno de los servicios centrales del módulo logístico.

---

# 🚀 **Endpoint**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-post-%2Fstore-quantiti"><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">`POST /store-quantities`</div></div>---

# 📥 **Request Body**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22ose_id%22%3A-12345%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">"ose_id"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">12345</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"cantidad"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">12</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"cantidades"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"1,2,3,4"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"usuario"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"jlopez"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"terminal"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">7</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"tipo_cierre"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"APP"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"cap_id"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">881</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"cierre_aereo"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">null</span></span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"cooler"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">null</span></span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"placa"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">null</span></span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"traspaso"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">0</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>### Campos 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="1647" data-start="1084"><thead data-end="1128" data-start="1084"><tr data-end="1128" data-start="1084"><th data-col-size="sm" data-end="1092" data-start="1084">Campo</th><th data-col-size="sm" data-end="1099" data-start="1092">Tipo</th><th data-col-size="sm" data-end="1113" data-start="1099">Obligatorio</th><th data-col-size="sm" data-end="1128" data-start="1113">Descripción</th></tr></thead><tbody data-end="1647" data-start="1174"><tr data-end="1239" data-start="1174"><td data-col-size="sm" data-end="1183" data-start="1174">ose\_id</td><td data-col-size="sm" data-end="1192" data-start="1183">number</td><td data-col-size="sm" data-end="1197" data-start="1192">Sí</td><td data-col-size="sm" data-end="1239" data-start="1197">ID de la Orden de Servicio a embarcar.</td></tr><tr data-end="1305" data-start="1240"><td data-col-size="sm" data-end="1251" data-start="1240">cantidad</td><td data-col-size="sm" data-end="1260" data-start="1251">number</td><td data-col-size="sm" data-end="1265" data-start="1260">Sí</td><td data-col-size="sm" data-end="1305" data-start="1265">Cantidad total declarada a embarcar.</td></tr><tr data-end="1382" data-start="1306"><td data-col-size="sm" data-end="1319" data-start="1306">cantidades</td><td data-col-size="sm" data-end="1334" data-start="1319">string (CSV)</td><td data-col-size="sm" data-end="1339" data-start="1334">Sí</td><td data-col-size="sm" data-end="1382" data-start="1339">Paquetes escaneados para este embarque.</td></tr><tr data-end="1450" data-start="1383"><td data-col-size="sm" data-end="1393" data-start="1383">usuario</td><td data-col-size="sm" data-end="1402" data-start="1393">string</td><td data-col-size="sm" data-end="1407" data-start="1402">Sí</td><td data-col-size="sm" data-end="1450" data-start="1407">Usuario que está realizando el proceso.</td></tr><tr data-end="1512" data-start="1451"><td data-col-size="sm" data-end="1462" data-start="1451">terminal</td><td data-col-size="sm" data-end="1471" data-start="1462">number</td><td data-col-size="sm" data-end="1476" data-start="1471">Sí</td><td data-col-size="sm" data-end="1512" data-start="1476">Terminal desde donde se embarca.</td></tr><tr data-end="1583" data-start="1513"><td data-col-size="sm" data-end="1527" data-start="1513">tipo\_cierre</td><td data-col-size="sm" data-end="1544" data-start="1527">"APP" | "PDA"</td><td data-col-size="sm" data-end="1549" data-start="1544">Sí</td><td data-col-size="sm" data-end="1583" data-start="1549">Tipo de registro del embarque.</td></tr><tr data-end="1647" data-start="1584"><td data-col-size="sm" data-end="1593" data-start="1584">cap\_id</td><td data-col-size="sm" data-end="1602" data-start="1593">number</td><td data-col-size="sm" data-end="1607" data-start="1602">Sí</td><td data-col-size="sm" data-end="1647" data-start="1607">Carguero (ruta programada) asignado.</td></tr></tbody></table>

</div></div>### Campos opcionales

<div class="_tableContainer_1rjym_1" id="bkmrk-campo-tipo-descripci"><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="2003" data-start="1671"><thead data-end="1701" data-start="1671"><tr data-end="1701" data-start="1671"><th data-col-size="sm" data-end="1679" data-start="1671">Campo</th><th data-col-size="sm" data-end="1686" data-start="1679">Tipo</th><th data-col-size="md" data-end="1701" data-start="1686">Descripción</th></tr></thead><tbody data-end="2003" data-start="1734"><tr data-end="1809" data-start="1734"><td data-col-size="sm" data-end="1749" data-start="1734">cierre\_aereo</td><td data-col-size="sm" data-end="1758" data-start="1749">number</td><td data-col-size="md" data-end="1809" data-start="1758">ID del cierre a registrar si es embarque aéreo.</td></tr><tr data-end="1874" data-start="1810"><td data-col-size="sm" data-end="1819" data-start="1810">cooler</td><td data-col-size="sm" data-end="1828" data-start="1819">string</td><td data-col-size="md" data-end="1874" data-start="1828">Código del cooler si se embarca desde uno.</td></tr><tr data-end="1928" data-start="1875"><td data-col-size="sm" data-end="1883" data-start="1875">placa</td><td data-col-size="sm" data-end="1892" data-start="1883">string</td><td data-col-size="md" data-end="1928" data-start="1892">Para embarque masivo (opcional).</td></tr><tr data-end="2003" data-start="1929"><td data-col-size="sm" data-end="1940" data-start="1929">traspaso</td><td data-col-size="sm" data-end="1955" data-start="1940">number (0/1)</td><td data-col-size="md" data-end="2003" data-start="1955">Indica si permite traspaso entre terminales.</td></tr></tbody></table>

</div></div>---

# 🔐 **Seguridad**

Servicio protegido mediante autenticación de API interna del sistema.  
Requiere usuario autenticado y terminal válida.

---

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

A continuación, el flujo real y completo basado en tu código:

---

### 🔹 **1. Validación de parámetros obligatorios**

- ose\_id
- cantidades
- cantidad
- usuario
- terminal
- cap\_id
- tipo\_cierre (solo APP o PDA)

---

### 🔹 **2. Obtiene la Orden de Servicio**

Consulta: `emp_ordenservicio`  
Valida:

- Existe la OS
- No está anulada
- Tiene QR o clave (según reglas del contacto)
- Terminal de destino coincide para permitir embarque

---

### 🔹 **3. Valida retención de embarque aéreo**

Consulta: `emp_retencion_embarque_aereo`  
Si existe → no permite embarque.

---

### 🔹 **4. Valida terminales, rutas y restricciones del carguero**

Consulta: `emp_cargprogramado`

Verifica:

- Que el origen del carguero incluya la terminal actual (a menos que sea traspaso).
- Restricciones de destino.
- Que si es destino aéreo, la ruta sea aérea.

Si alguna restricción aplica → error.

---

### 🔹 **5. Obtiene cantidades totales de la OS**

Consulta: `emp_os_detalle`  
Calcula unidades totales.

---

### 🔹 **6. Verifica paquetes previamente desembarcados**

Consulta: `emp_procesos_historial_app`  
Si encuentra que todos los paquetes ya están en destino → bloquea embarque.

---

### 🔹 **7. Verifica embarques previos**

Consulta: `emp_embarque_historial`  
Evalúa:

- embarque actual
- cantidades ya registradas
- estado de guía
- si ya está 100% embarcada

Si ya embarcó todos los paquetes → error.

---

### 🔹 **8. Registra o actualiza el embarque**

Dos escenarios:

#### a) **Primer registro**

Inserta en:  
`emp_embarque_historial`

#### b) **Actualización**

Actualiza registro existente.

---

### 🔹 **9. Actualiza el estado de la Orden de Servicio**

Actualiza en `emp_ordenservicio`:

- estado de paquete
- último carguero
- estado de embarque general
- fecha de embarque
- marcas de validación

---

### 🔹 **10. Registra proceso histórico**

En:  
`emp_procesos_historial_app`

- Si no existe → inserta
- Si existe → actualiza cantidades

---

### 🔹 **11. Procesos adicionales**

- Si es embarque aéreo → actualiza `emp_embarque_aereo`
- Si embarca desde cooler → marca estado del registro en `emp_cooler_guias`

---

### 🔹 **12. Respuesta final**

Devuelve éxito y número de guía.

---

# 📤 **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">"Paquetes de la OS: 458822 embarcados con éxito."</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. Campos faltantes

<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">"Falta cantidad."</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. OS no encontrada

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22success%22%3A-false%2C--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">false</span></span><span class="hljs-punctuation">,</span> <span class="hljs-attr">"message"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Guia no encontrada."</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. OS anulada

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22success%22%3A-false%2C--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">"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">"La guía se encuentra anulada."</span> <span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>### 4. OS sin QR o clave válida

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22success%22%3A-false%2C--3"><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">"La Orden de Servicio no tiene código QR."</span> <span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>### 5. Terminal no permitida

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22success%22%3A-false%2C--4"><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">"La Orden de Servicio ya se encuentra en su destino."</span> <span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>### 6. Restricción de embarque aéreo

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22success%22%3A-false%2C--5"><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">"La guia tiene una retención de embarque aereo, no se puede embarcar"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>### 7. Restricción de ruta

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22success%22%3A-false%2C--6"><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">"En la ruta X no puede embarcar para el destino Y."</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>### 8. Paquetes ya embarcados

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22success%22%3A-false%2C--7"><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">"Ya fueron embarcados todos los paquetes de la guia."</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

</div></div></div><div class="overflow-y-auto p-4" dir="ltr">  
</div></div>### 9. Error al actualizar embarque aéreo o cooler

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22success%22%3A-false%2C--8"><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">"Ocurrió un error al embarcar la OS: XXXX"</span><span class="hljs-punctuation">}</span>`</td></tr></tbody></table>

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

# 📚 **Schemas (estructuras usadas)**

### **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_nroguiacliente"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"ose_estadoPago"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"ose_code_qr"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"ose_termorigenatencion"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"ose_termdestinoentrega"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"ose_fhpreferenciapartida"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"datetime"</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\_embarque\_historial**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22emb_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">"emb_id"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"emb_ose_id"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"emb_cant_paquetes_embarcados"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"emb_cant_paquetes_total"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"emb_terminal"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"emb_carg_id"</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>### **emp\_procesos\_historial\_app**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22id%22%3A-%22number%22%2C-%22i"><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">"id"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"idose"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"idcarguero"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"proceso"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"nombre_metodo"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"cant_paquetes"</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\_cooler\_guias**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22codigo_barra%22%3A-%22s"><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">"codigo_barra"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"string"</span><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">"estado_embarque"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0|1"</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\_embarque\_aereo**

<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary" id="bkmrk-%7B-%22ose_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">"ose_id"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"estado"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number"</span><span class="hljs-punctuation">,</span>  <span class="hljs-attr">"cierre_id"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"number|null"</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-validar-par%C3%A1metros-r"><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>`validar parámetros requeridosorden = obtener OSsi no existe o está anulada -> errorvalidar QR o clavevalidar terminal de destinovalidar retenciones aéreasvalidar rutas, orígenes, restriccionesdetalle = obtener total de paquetes de OSprocesos_previos = obtener historialsi todos los paquetes ya están en destino -> errorembarques_previos = obtener embarquessi ya embarcados todos -> errorsi no existe embarque actual:    insertar registro de embarquesino:    actualizar registro existenteactualizar estado de OSregistrar proceso históricosi cierre_aereo -> actualizar emp_embarque_aereosi cooler -> actualizar emp_cooler_guiasreturn éxito`</td></tr></tbody></table>

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