Ir al contenido principal

control/embarque/obtener - [show]

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

 

🧾 Descripción

Obtiene la información completa de una Orden de Servicio (OSE), incluyendo:

  • Datos generales de la guía

  • Datos del remitente, destino y ruta

  • Contenido (tipos y cantidades de unidades)

  • Estado de embarque y paquetes embarcados

  • Atributos del tipo de pago

  • Usuario creador

  • Validaciones de estado

Es un servicio para consulta detallada de una guía antes o durante el proceso de embarque.


🚀 Endpoint


POST /show

📥 Request Body

{ "ose_id": "number", "cap_id": "number", "terminal": "string" }

Parámetros requeridos

Campo Tipo Obligatorio Descripción
ose_id number ID de la orden de servicio a consultar.
cap_id number ID de carga (embarque) asociado.
terminal string No Terminal desde donde se consulta.

🔐 Seguridad

El servicio depende del middleware global (token/sesión del sistema).
No hace validación explícita dentro de la función.


🧠 Flujo del Servicio (resumen real)

1. Validación inicial

  • Verifica obligatorio ose_id.

  • Verifica obligatorio cap_id.

2. Obtiene datos de la orden

Consulta principal:

SELECT fecha, monto, guia, remitente, destinatario, tipo_pago, origen, destino, usuario, ose_id, estado_pago, tipo_entrega, contenido = null, ruta = null, embarque_guia = 'SIN GUIA', cant_paq = 0, cant_total = 0, embarcados = null, cap_id = '' FROM emp_ordenservicio WHERE ose_id = <ose_id>

Si no existe → "Orden de servicio no encontrada"
Si está anulada (estado_pago = 'AN') → error.


3. Obtiene nombres de terminales

Se reemplazan los IDs de origen/destino por su nombre y alias:

SELECT nombre, alias FROM emp_terminal WHERE ter_id = origen SELECT nombre, alias FROM emp_terminal WHERE ter_id = destino

Crea la ruta: ruta = origen_alias + ' - ' + destino_alias


4. Obtiene contenido de la OSE

Consulta:

SELECT tipo, cantidad FROM emp_os_detalle WHERE osd_osid = <ose_id> AND osd_eliminado = 0

Construye:

  • contenido → "5 CAJA / 2 SOBRE / ..."

  • cant_total → sumatoria de cantidades


5. Obtiene estado de embarque

Consulta:

SELECT emb_estado_guia, emb_cant_paquetes_embarcados FROM emp_embarque_historial WHERE emb_ose_id = <ose_id> AND emb_carg_id = <cap_id> AND status = 1

Calcula:

  • emb_guia → GUIA EMBARCADA si existe algún registro con valor > 0

  • cant_paq → cantidad de paquetes registrados

  • embarcados → array de los paquetes embarcados


6. Traduce tipo de pago

Consulta atributos:

SELECT abreviatura, valor FROM emp_atributos WHERE concepto = 'tipospago' AND atr_idpadre = 90

Aplica la conversión: orden.tipo_pago = abreviatura del valor recibido


7. Obtiene nombre del remitente

SELECT documento, nombre_completo FROM emp_persona WHERE documento = orden.remitente


8. Obtiene usuario creador

SELECT usr_alias FROM emp_usuario WHERE usr_id = orden.usuario


9. Devuelve respuesta final

Incluye:

  • datos completos de la OSE

  • contenido

  • tipo de pago traducido

  • cantidades

  • ruta

  • paquetes embarcados


📤 Response 200 – Ejemplo

{ "success": true, "message": "Orden encontrada", "data": { "ose_id": 152233, "fecha": "2025-01-12", "guia": "G-998877", "remitente": "EMPRESA S.A.", "destinatario": "CLIENTE SAC", "tipo_pago": "CR", "origen": "LIMA", "destino": "AREQUIPA", "ruta": "LIM - AQP", "contenido": "5 CAJA / 2 SOBRE", "cant_total": 7, "embarque_guia": "SIN GUIA", "cant_paq": 0, "usuario": "jrojas", "cap_id": 22, "embarcados": [] } }


Posibles Errores

1. Falta ose_id

{ "success": false, "message": "Es obligatorio enviar un ose_id" }

2. Falta cap_id

{ "success": false, "message": "Es obligatorio enviar un cap_id" }

3. OSE no encontrada

{ "success": true, "message": "Orden de servicio no encontrada" }

4. Guía anulada

{ "success": false, "message": "La guía se encuentra anulada." }


📚 Schemas (estructuras usadas)

Orden de Servicio (emp_ordenservicio)

{ "ose_id": "number", "fecha": "datetime", "monto": "number", "guia": "string", "remitente": "string", "destinatario": "string", "tipo_pago": "string", "origen": "number", "destino": "number", "usuario": "number", "estado_pago": "string" }

Detalle OSE (emp_os_detalle)

{ "tipo": "string", "cantidad": "number" }

Terminal (emp_terminal)

{ "nombre": "string", "alias": "string" }

Embarque Historial

{ "emb_estado_guia": "number", "emb_cant_paquetes_embarcados": "string" }


🗃 Lógica en pseudo-código

if !ose_id -> error if !cap_id -> error orden = SELECT from emp_ordenservicio if not found -> return mensaje if anulada -> error origen = SELECT terminal destino = SELECT terminal orden.ruta = origen.alias + " - " + destino.alias detalles = SELECT detalle OSE contenido = concatenar tipo + cantidad cant_total = sum cantidades embarques = SELECT embarques para ose_id y cap_id calcular emb_guia, cant_paq, embarcados[] tipo_pago = traducir via emp_atributos remitente = SELECT persona usuario = SELECT usuario return orden completa