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:

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

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:


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:


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:


📤 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


Revisión #2
Creado 2025-11-27 15:09:37 -05 por Elian
Actualizado 2025-11-27 15:16:31 -05 por Elian