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