Saltar a contenido

Compatibilidad entre versiones (Odoo 10–19)

El servidor MCP resuelve nombres de modelos, campos y capacidades según la versión, edición y despliegue detectados. La fuente autoritativa y verificable es el mapa de deltas del repositorio (server/src/odoo_mcp/compat/deltas.py); esta página lo resume.

Detección

  • Versión — entero mayor de common.version() (server_version_info[0], o parseado de server_version), acotado a 10–19.
  • Edición — sufijo +e en la cadena de versión; si no, se sondea el módulo web_enterprise (ir.module.module); si no, unknown.
  • Despliegue — host *.odoo.comsaas, en otro caso onprem.

Renombres de modelos

Nombre moderno Nombre histórico Frontera
account.move account.invoice nuevo en v13
account.move.line account.invoice.line nuevo en v13
stock.package stock.quant.package nuevo en v19 (best-effort)

Puedes pasar cualquiera de los dos nombres; el resolver devuelve el válido en la instancia destino.

Cambios de campos

Modelo Campo Cambio Frontera
account.move.line analytic_account_idanalytic_distribution renombre v16
product.template uom_po_id eliminado (usar uom_id) v17 (best-effort)
res.partner company_type eliminado (usar is_company) v19 (best-effort)

Los campos eliminados se descartan de la consulta con una advertencia dropped_fields, en lugar de hacer fallar toda la llamada.

Capacidades

Capacidad Disponibilidad
api_key_auth Odoo ≥ 14 (las anteriores requieren contraseña)
jsonrpc_api_key solo Odoo ≤ 16; v17+ rechaza API keys en /jsonrpc → fallback automático a XML-RPC
update_field_translations Odoo ≥ 16 (las anteriores usan escritura con contexto de idioma)

Ediciones

Los modelos exclusivos de Enterprise (lista heurística: documents.document, sign.request, account.consolidation.period, quality.check, helpdesk.ticket, planning.slot, appraisal.appraisal) lanzan un CompatError cuando la instancia se detecta como Community. El sondeo de módulos en tiempo de ejecución es la fuente autoritativa.

Fronteras "best-effort"

Algunas fronteras de versión (marcadas arriba) son aproximadas y conviene confirmarlas contra una instancia real. Como el mapa es dato plano cubierto por pruebas dirigidas por tabla, corregir una frontera es una edición de una línea más una fila de prueba (ver Contribuir).

En la práctica

Escribe siempre contra el nombre moderno. El agente no necesita saber la versión: la capa resuelve por ti. Si una consulta devuelve dropped_fields, significa que ese campo no existe en la versión destino — revisa el nombre moderno equivalente en la tabla de arriba.

Referencia de skill: /odoo-tools:odoo-crossversion.