control/embarque/paquete -[storeQuantities]
🧾 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
📥 Request Body
Campos requeridos
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| ose_id | number | Sí | ID de la Orden de Servicio a embarcar. |
| cantidad | number | Sí | Cantidad total declarada a embarcar. |
| cantidades | string (CSV) | Sí | Paquetes escaneados para este embarque. |
| usuario | string | Sí | Usuario que está realizando el proceso. |
| terminal | number | Sí | Terminal desde donde se embarca. |
| tipo_cierre | "APP" | "PDA" | Sí | Tipo de registro del embarque. |
| cap_id | number | Sí | Carguero (ruta programada) asignado. |
Campos opcionales
| Campo | Tipo | Descripción |
|---|---|---|
| cierre_aereo | number | ID del cierre a registrar si es embarque aéreo. |
| cooler | string | Código del cooler si se embarca desde uno. |
| placa | string | Para embarque masivo (opcional). |
| traspaso | number (0/1) | Indica si permite traspaso entre terminales. |
🔐 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.