Skip to content

Integrar Cargoffer con Odoo ERP

Busqueda objetivo: "integracion odoo bolsa de carga", "conectar odoo con api transporte"

Por que Odoo?

Odoo es el ERP open-source mas usado por PYMEs. La integracion permite sincronizar:

  • Clientes y proveedores entre Odoo y Cargoffer
  • Facturas de transporte generadas desde contratos
  • Albaranes vinculados a documentos eCMR
  • Productos con codigos HS para aduanas

Endpoints necesarios

bash
# Obtener contratos firmados
curl -X GET "https://api.pro.cargoffer.com/api/auction/contract/{serviceCode}" \
  -H "Authorization: Bearer *** Crear registro en Odoo
# (via API XML-RPC de Odoo)

Mapeo de datos

CargofferOdoo
contract.serviceCodeaccount.move.ref
contract.amountaccount.move.amount_total
contract.client.nameres.partner.name
contract.dateaccount.move.invoice_date

Automatizacion con Python

python
import requests
import xmlrpc.client

TOKEN = "tu_t...""
ODOO_URL = "https://tu-odoo.com"
ODOO_DB = "produccion"
ODOO_USER = "admin"
ODOO_PASSWORD = "password"

def sync_contract_to_odoo(contract):
    # Conectar a Odoo
    common = xmlrpc.client.ServerProxy(f"{ODOO_URL}/xmlrpc/2/common")
    uid = common.authenticate(ODOO_DB, ODOO_USER, ODOO_PASSWORD, {})
    models = xmlrpc.client.ServerProxy(f"{ODOO_URL}/xmlrpc/2/object")
    
    # Crear factura en Odoo
    invoice_id = models.execute_kw(ODOO_DB, uid, ODOO_PASSWORD,
        "account.move", "create", [{
            "move_type": "out_invoice",
            "partner_id": find_partner(contract["client"]["cif"]),
            "invoice_date": contract["date"],
            "invoice_line_ids": [(0, 0, {
                "name": f"Transporte {contract['serviceCode']}",
                "quantity": 1,
                "price_unit": contract["amount"]
            })]
        }])
    return invoice_id

Documentación de Cargoffer