Ir al contenido principal

control/carguero/obtener - [show]

PATH: /var/www/html/qaservicesapp/app/Http/Controllers/ShalomControl/CargueroController.php

🧾 Descripción

Este servicio devuelve toda la información detallada de un carguero programado (cap_id), incluyendo:

  • Datos generales del carguero (choferes, placas, ruta, fechas).

  • Orígenes y destinos estructurados con su nombre de terminal.

  • Escalas calculadas (orígenes + destinos).

  • Cantidad de órdenes de servicio asociadas al carguero.

  • Suma de los montos finales de dichas OS.

Lee información combinada de emp_cargprogramado, emp_terminal y emp_ordenservicio.


🚀 Endpoint


POST /carguero/show

📥 Request Body

{ "cap_id": "number", "terminal": "string (opcional)", "usuario": "string (opcional)" }

Parámetros requeridos

Campo Tipo Obligatorio Descripción
cap_id number ID del carguero programado.
usuario string No Usuario que ejecuta el proceso.
terminal string No Terminal de operación.

🔐 Seguridad

Requiere sesión o token según la configuración del middleware (no validado en la función).


🧠 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, cap_id, chofer1, chofer2, ruta, placa1, placa2, cerrado, origen, destino FROM emp_cargprogramado WHERE cap_id = :cap_id
  3. Obtiene datos de terminales


    SELECT ter_id, ter_nombre FROM emp_terminal

    Construye un diccionario:


    listaTerminal[id] = nombre
  4. Procesa orígenes y destinos

    • Decodifica JSON almacenado en BD.

    • Convierte cada id de terminal a:


      "<id> <nombre>"
  5. Calcula escalas


    escalas = origenes ∪ destinos
  6. Busca órdenes de servicio asociadas al carguero


    SELECT ose_montofinal, ose_id FROM emp_ordenservicio WHERE ose_ultimo_carprog_embarque = :cap_id ORDER BY ose_ultima_fecha_embarque DESC
  7. Calcula:

    • cantidad = total de OS encontradas

    • suma = sumatoria de ose_montofinal

  8. Retorna el carguero con estructura final.


📤 Response 200 – Ejemplo

{ "success": true, "message": "Lista de cargueros", "data": { "fecha": "2025-01-21 14:00:00", "cap_id": 441, "chofer1": "CH00123", "chofer2": "CH00452", "ruta": "NORTE 01", "placa1": "ABC-123", "placa2": "XYZ-987", "cerrado": 0, "cantidad": 12, "suma": 1560.50, "escalas": [ "01 LIMA", "05 CHIMBOTE", "07 TRUJILLO" ], "origenes": [ "01 LIMA", "05 CHIMBOTE" ], "destinos": [ "07 TRUJILLO" ] } }

Posibles Errores

1. cap_id no enviado

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

2. No se encuentra carguero (si cap_id no existe)

(Laravel devolverá null y puede lanzar errores posteriores, según tu implementación)
Puedes documentarlo así:

{ "success": false, "message": "Carguero no encontrado" }

(Sugerencia: en tu función no validas esto, pero debería considerarse.)


📚 Schemas (estructuras usadas)

emp_cargprogramado

{ "cap_id": "number", "cap_fhsalidaprogramada": "datetime", "cap_chofer1id": "string", "cap_chofer2id": "string", "cap_rutacarguero": "string", "cap_cargueroid": "string", "cap_carguero_id2": "string", "cap_origen": "json[]", "cap_destino": "json[]", "cap_cerrado": "number" }

emp_terminal

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

emp_ordenservicio

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

🗃 Lógica en pseudo-código

if !cap_id -> error carguero = SELECT carguero WHERE cap_id terminales = SELECT id, nombre FROM terminal mapaTerminal = map(id => nombre) carguero.origenes = decodeJSON(carguero.origen) carguero.destinos = decodeJSON(carguero.destino) escalas = unique(origenes + destinos) convertir ids a "<id> <nombre>" usando mapaTerminal ordenes = SELECT OS WHERE os.ose_ultimo_carprog_embarque = cap_id carguero.cantidad = count(ordenes) carguero.suma = sum(ordenes.montofinal) return carguero