Ir al contenido principal

control/embarque/listar - [index]

🧾 Descripción

Este servicio retorna la lista de órdenes de servicio embarcadas asociadas a un cargoprogramación (cap_id).
Además, incluye:

  • Datos de origen/destino

  • Estado de embarque

  • Contenido detallado de las unidades (KG, sobres, bultos, etc.)

  • Cantidades totales

  • Nombre del remitente

  • Guía de cliente

  • Ruta generada (origen - destino)

Adicionalmente, permite filtrar por número de guía del cliente.


🚀 Endpoint


POST /ordenes-embarque

📥 Request Body

{ "cap_id": "number", "pagina": "number", "guia": "string (opcional)" }

Parámetros requeridos

Campo Tipo Obligatorio Descripción
cap_id number ID de carga programación (embarque).
pagina number Página para paginación.
guia string No Número de guía del cliente.

🔐 Seguridad

Autenticación estándar del sistema (token/cabecera middleware). No validado directamente en la función.


🧠 Flujo del Servicio (resumen real)

  1. Valida que cap_id exista.
    Si no → “Es obligatorio enviar un id”

  2. Construye filtros

    • Siempre por: ose_ultimo_carprog_embarque = cap_id

    • Opcional: ose_nroguiacliente = guia

  3. Obtiene las órdenes de servicio (emp_ordenservicio), paginadas (15 registros por página).
    Incluye campos como:

    • fecha de preferencia de partida

    • monto final

    • remitente/destinatario

    • tipo de pago

    • origen / destino

    • usuario creador

    • estado de pago

    • etc.

  4. Carga los terminales (emp_terminal) para convertir IDs → nombres y alias.

  5. Si no existen órdenes
    “No ha embarcado nada aun”

  6. Obtiene detalles de contenido (emp_os_detalle) por OSE:

    • Agrupa por tipo de precio

    • Suma cantidades

    • Genera estructura como: "5 KG, 2 SB"

  7. Obtiene historial de embarque (emp_embarque_historial)

    • Determina si la guía está embarcada o no

    • Paquetes embarcados

    • Total de paquetes

  8. Obtiene abreviaturas de tipos de pago (emp_atributos)

    • Convierte código → abreviatura

  9. Integra la información para cada OSE

    • contenido

    • cantidad total

    • estado de guía (“GUIA EMBARCADA” / “SIN GUIA”)

    • paquetes embarcados

    • origen y destino por nombre

    • ruta generada (alias-origen → alias-destino)

  10. Obtiene nombres de remitentes (emp_persona)
    Convierte DNI → nombre completo.

  11. Reemplaza remitente DNI → nombre.

  12. Retorna lista final con toda la información enriquecida.


📤 Response 200 – Ejemplo

{ "success": true, "message": "Lista de ordenes", "data": [ { "fecha": "2025-02-24 08:15:00", "monto": 150.50, "guia": "GC-2300122", "remitente": "JUAN PÉREZ GARCÍA", "destinatario": "EMPRESA XYZ", "tipo_pago": "CR", "origen": "LIMA", "destino": "AREQUIPA", "usuario": "amendoza", "ose_id": 554433, "estado_pago": "PAGADO", "tipo_entrega": "DELIVERY", "contenido": "3 KG, 2 SB", "ruta": "LIM - AQP", "embarque_guia": "GUIA EMBARCADA", "cant_paq": 5, "cant_total": 5, "embarcados": ["PKG001", "PKG002", "PKG003", "PKG004", "PKG005"] } ] }

Posibles Errores

1. Falta cap_id

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

2. No hay órdenes embarcadas aún

{ "success": false, "message": "No ha embarcado nada aun" }

3. No hay órdenes coincidentes con la guía filtrada

{ "success": false, "message": "No ha embarcado nada aun" }

📚 Schemas (estructuras usadas)

emp_ordenservicio

{ "ose_id": "number", "ose_nroguiacliente": "string", "ose_remiteempresa": "string (DNI)", "ose_destinaempresa": "string", "ose_servpagotipo": "string", "ose_termorigenatencion": "number", "ose_termdestinoentrega": "number", "ose_montofinal": "number" }

emp_os_detalle

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

emp_embarque_historial

{ "emb_ose_id": "number", "emb_estado_guia": "boolean", "emb_cant_paquetes_embarcados": "string (coma separada)", "emb_cant_paquetes_total": "number" }

emp_terminal

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

emp_persona

{ "documento": "string", "nombre": "string" }

🗃 Lógica en pseudo-código

if !cap_id -> error where = { ose_ultimo_carprog_embarque = cap_id } if guia -> add filter guia ordenes = get OS with pagination if empty -> error ose_ids = extract ids detalles = query emp_os_detalle grouped by tipo and ose_id armar contenido y cantidad total embarques = query emp_embarque_historial for cap_id armar estado de guía y paquetes embarcados atributos = abreviaturas de tipo de pago terminales = mapear origen/destino for each orden: combinar detalles + embarques + terminales + atributos construir ruta guardar remitente DNI personas = query emp_persona for remitentes reemplazar DNI → nombre return lista enriquecida