Skip to content

TMS - Integracion con Odoo ​

Lo que conecta ​

Los datos operativos del TMS (rutas, costes, conductores) se sincronizan con los modulos de Odoo para tener trazabilidad completa.

Datos que fluyen ​

Dato TMSModulo OdooUso
Rutas diariasproject.taskOrdenes de trabajo
Costes por kmhr.expenseGastos de flota
Horas conductorhr.attendanceParte de horas
Km vehiculofleet.vehicle.logMantenimiento flota

Integracion via XML-RPC ​

python
import xmlrpc.client
import requests

ODOO_URL = "https://tu-odoo.com"
ODOO_DB = "prod"
ODOO_USER = "admin"
ODOO_PASS = "pass"

TMS_TOKEN = "tu_t...n
common = xmlrpc.client.ServerProxy(f"{ODOO_URL}/xmlrpc/2/common")
uid = common.authenticate(ODOO_DB, ODOO_USER, ODOO_PASS, {})
models = xmlrpc.client.ServerProxy(f"{ODOO_URL}/xmlrpc/2/object")

def crear_parte_ruta(origen, destino, conductor_id):
    """Crea un parte de trabajo en Odoo con datos del TMS."""
    
    ruta = requests.get(
        f"https://back.transcend.cargoffer.com/api/route?origin={origen}&destination={destino}",
        headers={"Authorization": f"Bearer {TMS_TOKEN}"}
    ).json()
    
    # Crear tarea en Odoo
    task_id = models.execute_kw(ODOO_DB, uid, ODOO_PASS,
        "project.task", "create", [{
            "name": f"Ruta {origen} - {destino}",
            "description": f"Distancia: {ruta.get('distance')} km\nDuracion: {ruta.get('duration')} min",
            "user_ids": [(4, conductor_id)],
            "planned_hours": ruta.get("duration", 0) / 60
        }])
    
    return task_id

Automatizacion nocturna ​

bash
# Cada noche a las 23:00
0 23 * * * python3 /scripts/tms_to_odoo.py

Documentación de Cargoffer