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 deserver_version), acotado a 10–19. - Edición — sufijo
+een la cadena de versión; si no, se sondea el móduloweb_enterprise(ir.module.module); si no,unknown. - Despliegue — host
*.odoo.com⇒saas, en otro casoonprem.
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_id → analytic_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.