Skip to content

🏷️ Accessorials

Esta sección documenta los accessorials que el microservicio mapea desde Primus hacia GLT (Salesforce) durante el procesamiento de un BOL.

¿Qué es un accessorial?

Un accessorial es un servicio adicional asociado a un envío (por ejemplo, Liftgate, Residential Delivery, Hazmat). Primus entrega estos servicios como una lista de códigos dentro de cada booking, y GLT (Salesforce) los espera como registros con un accessorial_id y un name propios.

El microservicio actúa como capa de traducción entre ambos sistemas.

Origen y flujo del mapeo

Elemento Ubicación
Tabla de mapeo Primus → GLT app/services/mapper/primus_glt_mapping.json
Función de mapeo map_accesorials_to_glt() en app/services/mapper/mapper.py
Constante cargada en memoria MAPPER_ACCESORIALS_DATA
Modelo de salida Accessorial en app/models/schemas.py

Pasos que ejecuta map_accesorials_to_glt() por cada BOL:

  1. Lee la lista de códigos del campo accessorials del booking de Primus.
  2. Por cada código, busca su equivalente en primus_glt_mapping.json. Un código puede mapear a uno o varios accessorials de GLT.
  3. Si un código no existe en la tabla, lo omite y registra un warning (accessorial code '<X>' not in primus_glt_mapping.json).
  4. Agrega accessorials derivados del LLM según la propiedad stackable de los line items (ver tabla Derivados del LLM).
  5. Elimina duplicados (mismo accessorial_id + name).
  6. Devuelve { BOLNumber: { "accessorials": [...] } }, que luego consume build_final_loads_v3() para incluirlos en el load.

El resultado se inyecta en el campo accessorials del modelo FinalLoadV3 y viaja en el mismo POST load/v3 que crea la carga.

Mapeo: Delivery

Código Primus GLT Accessorial accessorial_id
ARD Airport Delivery a011I00000325IdQAI
APD Delivery Appointment a011I00000EI4izQAD
CPD Limited Access Delivery a011I00000325J1QAI
CHD Limited Access Delivery a011I00000325J1QAI
CSD Limited Access Delivery a011I00000325J1QAI
CTD CFS Delivery a013s00000SdwmFAAR
DCD Delivery Appointment + Limited Access Delivery A011I00000EI4izQAD, a011I00000325J1QAI
EMD Lumper Unloading Assistance a011I00000325J3QAI
FID Limited Access Delivery a011I00000325J1QAI
FAD Limited Access Delivery a011I00000325J1QAI
GVD Limited Access Delivery a011I00000325J1QAI
HDC Limited Access Delivery a011I00000325J1QAI
HOD Limited Access Delivery a011I00000325J1QAI
IND Inside Delivery a011I00000325IxQAI
LFD Liftgate Delivery a011I00000325IzQAI
LAD Limited Access Delivery a011I00000325J1QAI
MBD Limited Access Delivery a011I00000325J1QAI
MID Limited Access Delivery a011I00000325J1QAI
MND Limited Access Delivery a011I00000325J1QAI
NTD Delivery Appointment a011I00000EI4izQAD
NUD Limited Access Delivery a011I00000325J1QAI
PPD Port Delivery a013s00000TFO82AAH
PSD Limited Access Delivery a011I00000325J1QAI
RSD Residential Delivery a011I00000325JAQAY
SCD Limited Access Delivery a011I00000325J1QAI

Mapeo: Pick Up

Código Primus GLT Accessorial accessorial_id
BSC Blind Pick Up a013s00000TFO87AAH
ARO Airport Pick Up a011I00000325IeQAI
CPP Limited Access Pick Up a011I00000325J2QAI
CHO Limited Access Pick Up a011I00000325J2QAI
CSO Limited Access Pick Up a011I00000325J2QAI
CTO CFS Pick Up a013s00000SdwmEAAR
FAP Limited Access Pick Up a011I00000325J2QAI
GVO Limited Access Pick Up a011I00000325J2QAI
HPC Limited Access Pick Up a011I00000325J2QAI
HOO Limited Access Pick Up a011I00000325J2QAI
LFO Liftgate Pick Up a011I00000325J0QAI
LAO Limited Access Pick Up a011I00000325J2QAI
MPC Limited Access Pick Up a011I00000325J2QAI
MIO Limited Access Pick Up a011I00000325J2QAI
MNP Limited Access Pick Up a011I00000325J2QAI
NUP Limited Access Pick Up a011I00000325J2QAI
PPO Port Pick Up a013s00000TFO83AAH
PSO Limited Access Pick Up a011I00000325J2QAI
RSO Residential Pick Up a011I00000325JBQAY
SCO Limited Access Pick Up a011I00000325J2QAI
SWO Limited Access Pick Up a011I00000325J2QAI
SMO Limited Access Pick Up a011I00000325J2QAI
PWO Limited Access Delivery + Limited Access Pick Up a011I00000325J1QAI, a011I00000325J2QAI

Mapeo: Otros

Código Primus GLT Accessorial accessorial_id
HAZ Hazmat a011I00000325ItQAI
INB Bonded a011I00000EI9NdQAL
OS8 OVERLENGTH ⭐ nuevo a0hRc00000C8gsqIAB

OS8 → OVERLENGTH se agregó recientemente (fix/os8-accessorial-mapping) para cubrir cargas de longitud excedida reportadas por Primus.

Derivados del LLM (stackable)

Independientes de la tabla de Primus, se agregan a partir de la propiedad stackable que el agente de IA extrae de cada line item del BOL:

Condición GLT Accessorial accessorial_id
stackable = true Stackable a01Rc000002Fw8z
stackable = false Non Stackable - Fragile a013s00000PKXDc

Cómo agregar un nuevo accessorial

  1. Edita app/services/mapper/primus_glt_mapping.json.
  2. Agrega la clave con el código de Primus y una lista de objetos { "name", "accessorial_id" }. Ejemplo:

    "OS8": [
      {
        "name": "OVERLENGTH",
        "accessorial_id": "a0hRc00000C8gsqIAB"
      }
    ]
  3. El accessorial_id debe corresponder al Id del registro de accessorial en Salesforce.

  4. No requiere cambios de código: MAPPER_ACCESORIALS_DATA carga el JSON al iniciar la aplicación.