Introduction
Odoo est une plateforme ERP puissante et modulable, offrant des solutions prêtes à l’emploi pour de nombreux domaines comme la comptabilité, les ventes, le stock, et bien plus. Toutefois, chaque entreprise a des besoins uniques, ce qui peut rendre nécessaires des développements sur mesure. Dans ce guide, nous allons explorer comment créer un module personnalisé dans Odoo pour ajouter des fonctionnalités spécifiques. Nous partirons de la base pour que même les débutants puissent suivre.
Prérequis
Avant de commencer le développement, assurez-vous de posséder les éléments suivants :
- Odoo installé sur votre système (de préférence une version 15 ou plus récente).
- Connaissances de base en Python et XML.
- Un éditeur de texte ou un IDE, comme Visual Studio Code ou PyCharm.
- Accès administrateur à la base de données Odoo pour tester et déployer le module.
1. Structure d’un Module Odoo
Un module Odoo est essentiellement un dossier contenant divers fichiers organisés suivant une structure précise. Voici la structure typique d’un module :
my_module/
├── __init__.py
├── __manifest__.py
├── models/
│ └── my_model.py
├── views/
│ └── my_view.xml
└── security/
└── ir.model.access.csv
Fichiers et dossiers clés :
__init__.py
: Ce fichier permet de déclarer les fichiers Python à charger dans le module.__manifest__.py
: Le fichier manifest contient des informations essentielles sur le module comme le nom, la version, la description, et les dépendances.models/
: Contient les modèles de données définis en Python.views/
: Contient les vues et interfaces utilisateur en XML.security/
: Contient les règles d’accès et les permissions de sécurité.
2. Création du Module
Étape 1 : Création du dossier du module
Créez un dossier pour votre module dans le répertoire des modules d’Odoo (par exemple odoo/addons
). Nommez-le de façon descriptive, par exemple, my_custom_module
.
Étape 2 : Configuration du fichier __manifest__.py
Le fichier __manifest__.py
est essentiel car il permet à Odoo de reconnaître le module. Créez ce fichier dans le dossier du module et ajoutez-y les informations suivantes :
{
'name': 'My Custom Module',
'version': '1.0',
'summary': 'Un module personnalisé pour Odoo',
'description': 'Ce module ajoute des fonctionnalités spécifiques pour notre entreprise',
'author': 'Votre Nom',
'website': 'http://www.votresite.com',
'category': 'Uncategorized',
'depends': ['base'],
'data': [
'security/ir.model.access.csv',
'views/my_view.xml',
],
'installable': True,
'application': True,
}
Étape 3 : Créer le fichier __init__.py
Dans le dossier du module, créez un fichier __init__.py
. Ce fichier va permettre d’initialiser le module et de charger les modèles définis. Ajoutez cette ligne pour indiquer à Odoo de charger les fichiers dans models
:
from . import models
3. Création d’un Modèle de Données
Un modèle de données dans Odoo correspond à une table dans la base de données. Dans notre exemple, nous allons créer un modèle simple pour gérer des “tâches” avec un titre, une description, et un état.
Étape 1 : Création du fichier de modèle
Dans le dossier models
, créez un fichier my_model.py
et définissez le modèle :
from odoo import models, fields
class Task(models.Model):
_name = 'my_module.task'
_description = 'Task Model'
name = fields.Char(string='Title', required=True)
description = fields.Text(string='Description')
status = fields.Selection([
('new', 'New'),
('in_progress', 'In Progress'),
('done', 'Done')
], default='new', string='Status')
Explications :
_name
: Définit le nom technique du modèle (utilisé en interne par Odoo).name
: Champ de typeChar
pour le titre de la tâche.description
: Champ de typeText
pour ajouter une description.status
: Champ de typeSelection
pour le statut de la tâche.
4. Création de la Vue (Interface Utilisateur)
Les vues dans Odoo sont définies en XML et permettent de contrôler l’interface utilisateur. Créons une vue pour afficher les tâches.
Étape 1 : Création du fichier de vue
Dans le dossier views
, créez un fichier nommé my_view.xml
et définissez la vue :
<odoo>
<record id="view_task_tree" model="ir.ui.view">
<field name="name">task.tree</field>
<field name="model">my_module.task</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="status"/>
</tree>
</field>
</record>
<record id="view_task_form" model="ir.ui.view">
<field name="name">task.form</field>
<field name="model">my_module.task</field>
<field name="arch" type="xml">
<form>
<sheet>
<field name="name"/>
<field name="description"/>
<field name="status"/>
</sheet>
</form>
</field>
</record>
<menuitem id="menu_task_root" name="Tasks" sequence="1"/>
<menuitem id="menu_task_management" name="Task Management" parent="menu_task_root" sequence="2"/>
<menuitem id="menu_task" name="Tasks" parent="menu_task_management" action="action_task"/>
</odoo>
Explications :
- Vue en liste (Tree) : Affiche les tâches sous forme de liste.
- Vue formulaire (Form) : Affiche les détails d’une tâche en vue détaillée.
5. Configuration des Droits d’Accès
Les droits d’accès sont gérés dans le fichier security/ir.model.access.csv
. Ce fichier définit les règles pour qui peut voir, créer, modifier, ou supprimer des enregistrements.
Dans le dossier security
, créez un fichier nommé ir.model.access.csv
et ajoutez-y le contenu suivant:
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_task_user,my_module.task,model_my_module_task,,1,1,1,1
6. Chargement et Activation du Module
Étape 1 : Mettre à jour la liste des modules
Accédez à Odoo en tant qu’administrateur, puis allez dans Applications > Mises à jour des applications. Cliquez sur “Mettre à jour” pour que le module apparaisse dans la liste.
Étape 2 : Installer le module
Recherchez votre module par son nom dans la liste des applications. Cliquez sur “Installer” pour activer le module.
7. Test et Validation
Allez dans le menu Tasks
nouvellement ajouté pour créer et tester des tâches. Essayez les différentes fonctionnalités de votre module pour vous assurer que tout fonctionne comme prévu.
8. Conseils et Bonnes Pratiques
- Modularisez le code : Segmentez les fonctionnalités dans des modules distincts pour faciliter la maintenance.
- Testez dans un environnement de développement : Ne testez jamais un nouveau module directement en production.
- Documentez le code : Ajoutez des commentaires pour que d’autres développeurs puissent facilement comprendre votre code.
- Mises à jour régulières : Assurez-vous que votre module est compatible avec les nouvelles versions d’Odoo.
Conclusion
Développer un module personnalisé dans Odoo peut sembler complexe au premier abord, mais en suivant les étapes de base, vous pouvez créer des solutions adaptées à vos besoins. Ce guide fournit les fondations pour démarrer et personnaliser votre ERP de manière efficace. Avec de la pratique, vous serez bientôt en mesure d’ajouter des fonctionnalités de plus en plus sophistiquées, rendant Odoo encore plus précieux pour votre entreprise.