🏷️ 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:
- Lee la lista de códigos del campo
accessorialsdelbookingde Primus. - Por cada código, busca su equivalente en
primus_glt_mapping.json. Un código puede mapear a uno o varios accessorials de GLT. - Si un código no existe en la tabla, lo omite y registra un
warning(accessorial code '<X>' not in primus_glt_mapping.json). - Agrega accessorials derivados del LLM según la propiedad
stackablede los line items (ver tabla Derivados del LLM). - Elimina duplicados (mismo
accessorial_id+name). - Devuelve
{ BOLNumber: { "accessorials": [...] } }, que luego consumebuild_final_loads_v3()para incluirlos en el load.
El resultado se inyecta en el campo
accessorialsdel modeloFinalLoadV3y viaja en el mismo POSTload/v3que 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 → OVERLENGTHse 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
- Edita
app/services/mapper/primus_glt_mapping.json. -
Agrega la clave con el código de Primus y una lista de objetos
{ "name", "accessorial_id" }. Ejemplo:"OS8": [ { "name": "OVERLENGTH", "accessorial_id": "a0hRc00000C8gsqIAB" } ] -
El
accessorial_iddebe corresponder al Id del registro de accessorial en Salesforce. - No requiere cambios de código:
MAPPER_ACCESORIALS_DATAcarga el JSON al iniciar la aplicación.