Ir al contenido principal

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


POST /carguero/show

📥 Request Body

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

Parámetros requeridos

Campo Tipo Obligatorio Descripción
cap_id number ID del carguero programado.
terminal string No Terminal origen (no se usa en la lógica actual).
usuario string No Usuario que consulta (no se usa en la lógica actual).

🔐 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


    SELECT fecha, choferes, ruta, placas, origen, destino, cerrado FROM emp_cargprogramado WHERE cap_id = <cap_id>
  3. Obtiene lista de terminales


    SELECT ter_id, ter_nombre FROM emp_terminal
    • 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


    SELECT ose_montofinal, ose_id FROM emp_ordenservicio WHERE ose_ultimo_carprog_embarque = <cap_id> ORDER BY ose_ultima_fecha_embarque DESC
  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

{ "success": true, "message": "Lista de cargueros", "data": { "fecha": "2025-01-15 10:00:00", "cap_id": 1287, "chofer1": "CHO123", "chofer2": "CHO456", "ruta": "RUTA-09", "placa1": "ABC-123", "placa2": "DEF-456", "cerrado": 0, "origenes": [ "1 Terminal Lima", "3 Terminal Arequipa" ], "destinos": [ "5 Terminal Piura" ], "escalas": [ "1 Terminal Lima", "3 Terminal Arequipa", "5 Terminal Piura" ], "cantidad": 42, "suma": 15789.50 } }

Posibles Errores

1. Falta cap_id

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

2. cap_id no existe en la BD

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

Ejemplo de respuesta:

{ "success": true, "message": "Lista de cargueros", "data": null }

(Opcionalmente podrías corregir esto en backend.)


📚 Schemas (estructuras usadas)

emp_cargprogramado

{ "cap_id": "number", "fecha": "datetime", "chofer1": "string", "chofer2": "string", "ruta": "string", "placa1": "string", "placa2": "string", "cerrado": "number", "origen": "json[]", "destino": "json[]" }

emp_terminal

{ "ter_id": "number", "ter_nombre": "string" }

emp_ordenservicio

{ "ose_id": "number", "ose_montofinal": "float", "ose_ultimo_carprog_embarque": "number" }

🗃 Lógica en pseudo-código

if !cap_id -> error carguero = SELECT * FROM emp_cargprogramado WHERE cap_id = cap_id terminales = SELECT ter_id, ter_nombre FROM emp_terminal mapaTerminal = {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_id carguero.cantidad = count(guias) carguero.suma = sum(ose_montofinal) return carguero