La plus grande force d'Odoo commence là où s'arrêtent les modules prêts à l'emploi. Avec Python et XML, il est possible d'intégrer au système les règles métier propres à l'entreprise et de les faire fonctionner dans l'interface standard. Cet article détaille les étapes du développement sur mesure, les bonnes pratiques et les stratégies de déploiement.
01. L'anatomie d'un module
La structure de dossiers d'un module Odoo :
- manifest.py (métadonnées)
- models/ (règles métier en Python)
- views/ (définitions d'interface en XML)
- security/ (règles d'accès)
- data/ (enregistrements par défaut)
- static/ (icônes, CSS, JS)
Un module court fonctionne avec 50 à 100 lignes de code.
02. Définir un modèle et hériter
L'ORM d'Odoo fait correspondre la base de données et les classes Python. Pour définir un nouveau modèle : class MyModel(models.Model): _name = "my.model", puis on déclare les champs. Pour ajouter un champ à un modèle existant, on utilise _inherit.
03. Définir les vues
Formulaires, listes et filtres de recherche se définissent en XML. L'attribut inherit_id permet d'ajouter un champ à un formulaire Odoo existant ; les expressions xpath déterminent son emplacement.
04. Studio ou code
Les modifications simples — ajouter un champ, remanier un formulaire — se font dans Studio sans écrire de code. Mais les règles métier complexes, les calculs automatiques ou l'intégration d'une API externe exigent du Python. Les modules écrits en code se maintiennent mieux que ceux produits par Studio.
05. Déploiement et gestion de versions
Les modules sur mesure doivent être versionnés dans Git. odoo.sh est une plateforme qui construit automatiquement votre dépôt Git. Sur une installation auto-hébergée, le déploiement s'automatise par des chaînes d'intégration et de déploiement continus.