El mayor punto fuerte de Odoo empieza donde terminan los módulos listos. Con Python y XML es posible incorporar al sistema reglas de negocio propias de la empresa y ejecutarlas en la interfaz estándar de Odoo. En este artículo abordamos los pasos, las buenas prácticas y las estrategias de despliegue del desarrollo de módulos a medida.
01. Anatomía de un módulo
La estructura de carpetas de un módulo de Odoo:
- manifest.py (metadatos)
- models/ (reglas de negocio en Python)
- views/ (definiciones de interfaz en XML)
- security/ (reglas de acceso)
- data/ (registros por defecto)
- static/ (iconos, CSS, JS)
Un módulo corto funciona con 50-100 líneas de código.
02. Definición del modelo y herencia
El ORM de Odoo (mapeador objeto-relacional) empareja la base de datos con las clases de Python. Para definir un modelo nuevo: class MyModel(models.Model): _name = "my.model"; y se definen los campos. Para añadir un campo a un modelo existente se usa _inherit.
03. Definir la vista
Los formularios, las listas y los filtros de búsqueda se definen en XML. Con el atributo inherit_id es posible añadir un campo a un formulario existente de Odoo; con expresiones xpath se determina dónde se coloca.
04. Studio frente a código
Los cambios sencillos (añadir un campo, modificar un formulario) pueden hacerse con Studio sin escribir código. Pero para reglas de negocio complejas, cálculos automáticos o integración con API externas hace falta escribir código Python. Los módulos basados en código son más fáciles de mantener que Studio.
05. Despliegue y control de versiones
Los módulos a medida deben versionarse en Git. odoo.sh es una plataforma que construye automáticamente su propio repositorio de Git. En las instalaciones self-hosted, el despliegue se automatiza con pipelines de CI/CD.