Développement Odoo 16

I- Introduction

Versions et éditions d’Odoo
Le logiciel de gestion d’entreprise ‘Odoo’ vous aide à gérer vos opérations commerciales telles que les ventes, le CRM, la comptabilité, les achats, le commerce électronique, etc. Et il est disponible en deux versions : Odoo Community et Odoo Enterprise

Communauté Odoo (open-source)

Odoo Community est la version Open Source d’Odoo. Il est disponible gratuitement. La version communautaire n’offre que des fonctionnalités limitées. Il aide à intégrer des applications gratuites et tierces dans votre communauté Odoo.

Odoo Enterprise (sous licence)

C’est la version payante d’Odoo. Il offre la fonctionnalité de la communauté Odoo et quelques autres fonctionnalités supplémentaires. Les modules tels que Data Cleaning, Field Service, Help Desk, Marketing Automation, Maintenance, Sign, Subscription et Studio ne sont disponibles que dans l’édition entreprise.

Odoo Entreprise Vs. Communauté Odoo

Odoo EntrepriseCommunauté Odoo
Général
Bureau (navigateur Web)OuiOui
Mobile (androïd et ios)Oui>Non
Hébergement cloud public ou privéOuiNon
Mises à niveau de versionOuiNon
Interface utilisateur
Assistance fonctionnelle illimitéeOuiNon
Multi-langueOuiOui
Studio Odoo
Création d’applicationsOuiNon
Éditeur de menusOuiNon
Concepteur de rapportsOuiNon
Personnalisation de l’écranOuiNon
Finance
ComptabilitéOuiNon
FacturationOuiOui
PaieOuiNon
SigneOuiNon
Ventes
GRCOuiOui
VentesOuiOui
Point de venteOuiOui
AbonnementsOuiNon
De locationOuiNon
Connecteur AmazonOuiNon
Bureau d’aideOuiNon
Service sur le terrainOuiNon
Connecteur AmazonOuiNon
Sites Internet
Générateur de site WebOuiOui
Commerce électroniqueOuiOui
Blog, Forum, Apprentissage en ligneOuiOui
Chat en directOuiOui
Projet
Feuille de temps et tâchesOuiOui
PrévisionsOuiNon
Ressources humaines
EmployésOuiOui
ParrainagesOuiNon
ÉvaluationsOuiNon
Temps libreOuiOui
Commercialisation
Publicité par e-mailOuiOui
Marketing socialOuiNon
Marketing par SMSOuiOui
Automatisation du marketingOuiNon
Inventaire et MRP
Gestion de l’inventaireOuiOui
Gestion des achatsOuiOui
PLMOuiNon
QualitéOuiOui
code à barreOuiOui

II- Applications Odoo

Les applications Odoo comprennent diverses applications commerciales libres qui couvrent tous les besoins de votre entreprise. Elles comprennent les ventes, les services, la comptabilité, l’inventaire, la fabrication, le site web, le marketing, les ressources humaines, la productivité et la personnalisation.

odoo-crm

Ventes

GESTION DE LA RELATION CLIENT (CRM)

Gestion de la relation client, le CRM vous permet de gérer les activités de vente, le suivi des prospects et la planification des activités.

Point de vente

Permet d’intégrer les opérations de vente au détail de l’entreprise avec Odoo et de continuer à travailler même lorsque vous n’êtes pas en ligne.

Ventes

L’application Ventes vous permet d’effectuer toutes les opérations de vente telles que l’envoi de devis, de commandes, la gestion de l’équipe de vente et des vendeurs, ainsi que la gestion complète du département des ventes.

Finances

Facturation

Permet de créer des factures, de les envoyer au client et de gérer les paiements.

Comptabilité

Il s’agit d’une application de comptabilité complète avec des fonctionnalités telles que les opérations par lots, l’automatisation des paiements, le rapprochement rapide, la synchronisation automatisée, les alertes automatisées, les avertissements, etc.

Site web

Site web

Créez et concevez facilement votre site web grâce à des blocs de construction par glisser-déposer.

Commerce électronique

Permet d’effectuer des opérations de vente en ligne et d’intégrer la vente, l’inventaire et les factures.

Marketing

Marketing par courriel

Permet de créer, d’envoyer et de suivre les courriels.

Marketing par SMS

Permet de créer des messages SMS et aide à planifier, organiser et suivre les campagnes.

Automatisation du marketing

Permet de créer des campagnes de marketing automatisées et ciblées.

Services

Projet

Permet de créer et de gérer vos projets.

Feuille de temps

Permet de suivre et d’analyser le temps de travail des employés.

Service sur le terrain

Permet de planifier, d’attribuer, d’exécuter et d’évaluer les tâches de service sur le terrain.

Service d’assistance

Permet d’organiser et de suivre tous les tickets d’assistance

Inventaire et MRP

Inventaire

L’inventaire peut également être considéré comme une gestion d’entrepôt. Il permet de gérer les délais, la traçabilité et le routage avancé (cross-docking et drop shifting).

Fabrication

Permet de gérer, de planifier et de traiter les ordres de fabrication.

Achats

Permet de créer des devis, des bons de commande et de gérer les fournisseurs.

III- Forum Odoo

Le forum Odoo est une communauté de questions et de réponses pour les utilisateurs professionnels et enthousiastes, les partenaires et les programmeurs. Grâce à cette fonctionnalité, les gens peuvent poser des questions, discuter, étudier, partager des connaissances techniques, et bien d’autres choses encore. Il aide les gens à trouver les réponses quand ils en ont besoin.

Postez vos questions et réponses

Postez toutes les questions relatives à Odoo.

odoo-crm

Trouvez rapidement la réponse à votre question.

Parcourez le contenu lié à la question et trouvez tous les contenus connexes. Les meilleures réponses sont marquées d’une coche verte et apparaissent en haut de la page pour optimiser la recherche.

odoo-crm

Odoo runbot

Odoo runbot est un environnement de test pour Odoo. Le serveur hébergera les éditions installées ou les branches de toutes les versions d’Odoo. Le serveur runbot supporte à la fois les éditions entreprise et communauté. Comme il s’agit d’une plateforme ouverte, tout le monde peut l’utiliser pour exécuter ou tester les fonctionnalités d’Odoo.

Presque toutes les dernières versions d’Odoo sont disponibles sur cette plateforme. Supposons qu’un utilisateur rencontre des difficultés ou qu’une erreur survienne au moment du développement en local, on peut vérifier que sur le runbot odoo, la même erreur est apparue sur le runbot, c’est un bug pour odoo ; sinon c’est une erreur sur la copie locale d’odoo ou une erreur sur le module de développement.

Comment accéder à odoo runbot ?
Il suffit de rechercher odoo runbot dans le navigateur et de choisir le lien affiché dans le navigateur. Maintenant, la vue ci-dessous sera affichée. Ou vous pouvez accéder à l’aide de runbot

odoo-crm

La page d’accueil de runbot affiche des carrés de couleur verte ou rouge pour indiquer si le build est actif ou non. Le vert indique que la version est active, et le rouge indique que la version n’est pas encore active.

Cliquez sur le bouton bleu dans les rangées pour ouvrir la version de construction Odoo requise. Sur cette page, nous pouvons choisir la version community ou enterprise.

odoo-crm

Dans Odoo Runbot, deux bases de données sont disponibles :  » all  » et  » base « . Chaque module sera installé et les données de démonstration seront stockées dans la base de données « all ». Aucun module ne sera installé dans la base de données « base ».

Vous pouvez également vérifier les dernières fonctionnalités du logiciel avec Odoo Runbot. Il s’agit d’un environnement multi-utilisateurs, ce qui signifie que de nombreuses personnes du monde entier peuvent l’utiliser simultanément. Vous pouvez donc voir des preuves que d’autres personnes utilisent le système en même temps que vous.

Cliquez sur le bouton d’engrenage dans n’importe laquelle des branches non actives pour voir le fichier journal détaillé montrant les erreurs de construction.

Cliquez sur le bouton de l’engrenage dans l’une des branches non actives pour voir le fichier journal détaillé montrant les erreurs de construction.

odoo-crm

Voici un simple fichier journal.

odoo-crm

Ici, nous pouvons voir les raisons de l’échec et les erreurs sur la construction. Il suffit de cliquer sur le bouton bleu dans les rangées pour afficher la vue.

odoo-crm

Un simple clic sur le bouton d’ouverture de session permet de se connecter à la session.

odoo-crm

Saisissez les informations d’identification correctes pour entrer dans la session. Le login et le mot de passe sont principalement admin. Après avoir saisi les détails, cliquez sur le bouton de connexion. Nous pouvons voir la vue ci-dessous qui correspond à la session que nous avons choisie, communauté ou entreprise.

odoo-crm

VI- Git

Il s’agit d’un système de contrôle des versions de fichiers informatiques qui permet de suivre les modifications. Il est couramment utilisé dans le développement de logiciels pour la gestion du code source. Git est un système de contrôle de version distribué, ce qui signifie que l’ordinateur de chaque développeur a accès à l’ensemble de la base de code et à l’historique, ce qui simplifie les branchements et les fusions. Il est conçu pour gérer un large éventail de travaux, des plus petits aux plus grands, avec rapidité et efficacité.

Git permet et encourage la création de plusieurs branches locales complètement séparées les unes des autres. La création, la fusion et la suppression de ces branches ne prennent que quelques secondes.

Vous pouvez installer n’importe quel code à partir de git. Pour cela, installez d’abord git à l’aide de la commande suivante

sudo apt-get install git

Après l’installation, vous pouvez obtenir la dernière version de développement via Git lui-même :

git clone https://github.com/git/git

Git est utilisé pour suivre les modifications apportées au code source. Il permet la collaboration entre de nombreux développeurs. Ses millions de branches parallèles favorisent une évolution non linéaire.

Commandes de base de Git
Créer des dépôts

Créer un dépôt local –

git init

Apporter des modifications

Ajouter un fichier à l’étape –

git add

Livrer tous les fichiers à l’étape à git –

git commit

Lister les fichiers nouveaux ou modifiés qui n’ont pas encore été livrés –

git status

Développement parallèle

Ajouter un fichier à l’étape de développement –

git add

Fusionner tous les commits en un nouveau commit-

git merge :

Rebaser une branche sur une autre –

git rebase

synchroniser les dépôts

Télécharger le contenu local vers le dépôt distant –

git push

Récupérer la copie de la branche courante dans le dépôt distant –

git pull

Ajouter un dépôt amont par défaut –

git add origin

Dépôts Odoo
Tout le code d’Odoo est hébergé sur GitHub. Vous pouvez poster des bugs/problèmes pour les versions stables ici, et aussi, nous pouvons accéder aux codes de ce dépôt, que ce soit un dépôt privé.Vous pouvez également soumettre des Pull Requests pour suggérer une nouvelle fonctionnalité (PR). Nous pouvons créer des demandes d’extraction au lieu de pousser directement sur GitHub. Voir quelques informations sur les dépôts centraux d’Odoo.

Odoo git his est l’édition communautaire d’Odoo. C’est un dépôt public, donc tout le monde peut accéder au dépôt pour se référer aux codes.

Odoo Enterprise Il s’agit de l’édition entreprise d’Odoo. C’est un dépôt privé. Seuls les partenaires officiels d’Odoo peuvent y accéder.

Odoo Dev Il s’agit d’un référentiel de développement continu. Il s’agit d’un dépôt public auquel tout le monde peut accéder.

Chaque année, Odoo sort une nouvelle version d’Odoo, et il y a une version majeure et quelques versions mineures. Les versions mineures sont principalement utilisées pour les services SAAS. Les versions majeures sont 13.0, 14.0, 15.0 et 16.0 etc. Les versions mineures sont les suivantes : saas-14.1, saas-14.2, etc.

Nous pouvons télécharger le code d’une version spécifique sur les branches correspondantes.

Odoo Documentation

The theoretical form of odoo is odoo documentation; it will be like a user manual. Each and everything with examples on the odoo is explained in the documentation. At the time of development, we can refer to the documents if we have any doubts. On that four categories of things

  • User docs: On the user docs, discover the Odoo guide to help you use and configure the platform by applications.
  • Install and maintain: On the install and maintain Learn how to install, deploy and upgrade Odoo on-premise or on Odoo.sh.
  • Developer: According to the developer documentation, Read the framework references and programmer tutorials to learn how to develop in Odoo. There are also tutorials available for various odoo features.
  • Contributing: On contributing, you want to help Odoo but aren’t sure where to begin. The lessons and recommendations are designed to assist you in improving Odoo.

It is public documentation, so anyone can access the documentation using Odoo Documentation this link. This is the access link for odoo 15 documentation, all versions of the documentation are available.

V- OCA (Odoo Community Association)

L’Odoo Community Association, ou OCA, est une organisation à but non lucratif dont l’objectif est de promouvoir l’adoption d’Odoo et d’encourager le développement collaboratif des fonctionnalités d’Odoo. L’association soutient la communauté Open Source Odoo financièrement, organisationnellement et légalement. Elle fonctionne également comme un organisme juridique distinct où les membres de la communauté peuvent contribuer au code, au financement et à d’autres ressources avec l’assurance que leurs contributions seront préservées pour le bien public.

https://github.com/OCA Le dépôt officiel GitHub de l’OCA se trouve ici. Il s’agit d’un dépôt public, ce qui signifie que tout le monde peut l’utiliser.

Tous les modules oca sont des sources libres et sont maintenus par des membres de la communauté Odoo. Les modules oca peuvent également être trouvés dans l’app store Odoo. Ils favorisent la croissance d’Odoo et de ses fonctionnalités tout en coordonnant et en organisant le développement collaboratif de logiciels. Les développeurs tiers créent les modules OCA. Ils travaillent en tandem avec l’édition communautaire. Les auteurs des modules sont responsables des modules OCA. Les politiques régulières d’Odoo ne s’appliquent pas à eux.

VI – Environnement de developpement

PyCharm

PyCharm est un environnement de développement intégré (IDE) qui peut être utilisé pour la programmation informatique. PyCharm est principalement axé sur la programmation Python et intègre les contrôles d’erreurs PEP8. Il nous aide à créer un code soigné et facile à maintenir. Ses suggestions de code intégrées et son inspection du code permettent de réduire le temps nécessaire à l’écriture et au débogage du code. Nous pouvons installer des plugins supplémentaires pour faciliter la programmation. PyCharm est un IDE très utile pour le développement d’Odoo.

Getting Started:

PyCharm a deux éditions principales : Professional Edition et Community Edition. L’édition professionnelle est payante et dispose de plus de fonctionnalités que l’édition communautaire, qui est gratuite. Nous pouvons télécharger PyCharm directement depuis son site officiel ou depuis le terminal. Dans le système Linux, exécutez la commande

sudo snap install pycharm-community --classic

Après l’installation, ouvrez PyCharm et allez dans Fichier->Ouvrir pour ouvrir un fichier/projet.

Conf File

Le fichier Conf ou fichier de configuration est utilisé pour définir les paramètres et les réglages initiaux pour faire fonctionner l’instance Odoo dans le système.

Paramètres :

  • addons_path: Specifies the addons_path folders and they are added in order based on the priority.
  • admin_passwd: Specifies the Master password, which can also be set from the front end. If we set or change the Master password from Odoo, it will be stored in the conf file in hashed form.
  • csv_internal_sep: Specifies the separator to be used within the CSV files.
  • data_dir: Specifies the path to the directory where the data related Odoo like filestore is stored.
  • db_host: Specifies the database host. localhost is set by default.
  • db_maxconn: Specifies the maximum number of physical connections to PostgreSQL.
  • db_name: Specifies the database name. False is set by default. If we specify any database name, we can only see that database in the Odoo database selector and manager.
  • db_password: Specifies the database password for db_user. The default value is None.
  • db_port: Specifies the database port. The default value is None.
  • db_user: Specifies the database user name. The default value is None.
  • dbfilter: Filters the database using the REGEXP.
  • db_template: Default value is template0.
  • email_from: Specifies the SMTP email address for sending an email.
  • http_port: Specifies the HTTP port for Odoo.
  • import_partial: Used for big data importation. If the process crashes, we can continue at the current state. If we have any intermediate importation states, we can provide a filename to store them.
  • limit_memory_hard: Specifies the hard limit on virtual memory. If any worker exceeds the limit, it will be killed immediately without waiting for the end of the current request processing
  • limit_memory_soft: Specifies the maximum virtual memory allowed per worker. If any worker exceeds this limit, the worker will be killed and then recycled at the end of the current request.
  • limit_request: Specifies the number of requests a worker can process before it gets recycled and restarted.
  • limit_time_cpu: The worker will be killed if the worker uses more time than the specified CPU seconds for a request.
  • limit_time_real: The worker will be killed if the worker uses more time than the specified seconds to process a request.
  • list_db: True/ False. If False hides the database list.
  • log_db: True/False. If True, also write log to the ‘ir_logging’ table in the database.
  • log_level: We can assign any of these values; info, debug_rpc, warn, test, critical, debug_sql, error, debug, debug_rpc_answer.
  • log_handler: Specifies a value pair from the list of ‘module:log_level’ pairs. The default value is ‘:INFO’, which means all modules’ default logging level is ‘INFO’
  • logfile: Specifies the log filename. If not set, use stdout.
  • logrotate: True/False. If True, create a daily log file and keep up to 30 log files.
  • interface: Specifies the IP address on which the server will bind(or localhost). It will bind on all interfaces if it is empty. It is kept empty by default.
  • port: Specifies the TCP port on which the server will listen. The default value is 8069.
  • secure: Specifies whether to launch the server over HTTPS instead of HTTP. The default value is False.
  • secure_cert_file: Specifies the certificate file, which is used for the SSL connection.
  • secure_pkey_file: Specifies the private key file, which is used for the SSL connection.
  • longpolling_port: Specifies the TCP port used for long-polling connections in multiprocessing or gevent mode. Default value is 8072. It is not used in the default mode(threaded mode).
  • max_cron_threads: Specifies the number of workers, which are dedicated to the cron jobs. Default value is 2.
  • osv_memory_age_limit: Specifies a force limit on the maximum age of records kept in the virtual osv_memory tables. This is a float value, which is expressed in hours, and the default value is 1 hour.
  • osv_memory_count_limit: Specifies a force limit on the maximum number of records kept in the virtual osv_memory tables. The default value is False, which indicates no limit for records..
  • pidfile: The server pid will be stored in the file specified here. The default value is False. The init script will create the pid.
  • proxy_mode: We can set it to True if we are deploying our App behind a proxy. Default value is True.
  • server_wide_modules: Specifies a comma-separated list of server-wide modules. The default value is ‘web’.
  • smtp_password: Specifies the SMTP password for sending the email. The default value is False.
  • smtp_port: Specifies the SMTP port.
  • smtp_server: Specifies the SMTP server for sending an email. The default value is ‘localhost’
  • smtp_ssl: True/ False. If True, SMTP connections will be encrypted with SSL (STARTTLS).
  • smtp_user: Specifies the SMTP user for sending an email. The default value is False.
  • syslog: True/ False, logs to the system’s event logger: syslog.
  • test_enable: True/ False, enables YAML and unit tests.
  • test_file: Used to launch a python or YML test file. The default value is False.
  • test_report_directory: Specifies the directory to save samples of all reports. The default value is False.
  • test_commit: Used to commit database changes performed by YAML or XML tests. The default value is False.
  • translate_modules: Specifies modules to export. Use in combination with –i18n-export. Default value is [‘all’].
  • unaccent: Specifies whether to use the unaccent function or not.. Default value is False.
  • without_demo: It is used to disable loading demo data for modules to be installed. We can specify the modules separated by commas and use “all” to apply for all modules. Default value is False.
  • workers: Specifies the number of workers. Default value is 0.
  • xmlrpcs: It is used to enable or disable the XML-RPC Secure protocol. Set to False to disable it.
  • xmlrpcs_interface: Specifies the TCP IP address for the XML-RPC Secure protocol. We can use the empty string, which binds to all interfaces.
  • xmlrpcs_port: Specifies the TCP port for the XML-RPC Secure protocol.
  • xmlrpc: It is used to enable or disable the XML-RPC protocol. Set to False to disable it.
  • xmlrpc_interface: Specifies the TCP IP address for the XML-RPC protocol. We can use the empty string, which binds to all interfaces.
  • xmlrpc_port: Specifies the TCP port for the XML-RPC protocol.
  • timezone: Specifies the reference timezone for the server. For example Europe/Berlin. Default value is False.

Mode développeur

Le mode développeur nous permet d’accéder à des fonctionnalités plus techniques et à des outils plus avancés. Après avoir activé le mode développeur, nous aurons accès à la personnalisation des vues, des rapports, des modèles, des champs, des menus, de l’accès des utilisateurs, des filtres, des actions, etc. Nous pouvons activer le mode développeur de différentes manières :

Activer par l’URL :

Dans l’URL, ajoutez ?debug=1 ou ?debug=true après /web pour activer le mode développeur.

odoo-crm

Ajoutez ?debug=0 ou ?debug=false après /web pour désactiver le mode développeur.

odoo-crm

Activer par le biais des paramètres :

Allez dans Paramètres->Outils de développement et cliquez sur le lien. Activez le mode développeur pour lancer le mode développeur.

odoo-crm

Allez dans Paramètres->Outils de développement et cliquez sur le lien. Désactivez le mode développeur pour désactiver le mode développeur.

odoo-crm

Activation par la palette de commandes :

Ouvrez la palette de commandes en utilisant le raccourci clavier (ctrl + k). Tapez « debug », ce qui affichera l’option permettant d’activer le mode développeur.

odoo-crm

Ouvrez la palette de commandes et tapez « debug », ce qui affichera l’option permettant de désactiver le mode développeur.

odoo-crm

Activer par le biais d’une extension de navigateur :

Ouvrez les extensions à partir des paramètres du navigateur et recherchez « Odoo Debug » pour obtenir l’extension dans le navigateur. Après avoir installé l’extension dans le navigateur, nous pouvons voir une icône pour l’extension avec les autres extensions dans le navigateur. Un simple clic sur l’icône activera le mode développeur.

odoo-crm

Un simple clic sur l’icône désactive le mode développeur lorsqu’il est actif.

odoo-crm

Ajout et installation d’un nouveau module complémentaire

Nous avons les addons de la communauté Odoo et les addons d’entreprise dans le cas où nous utilisons l’édition entreprise. Si nous devons faire des personnalisations ou si nous avons besoin d’ajouter plus d’applications ou de modules, alors nous pouvons les ajouter à Odoo en les ajoutant dans un dossier personnalisé dans le répertoire du projet. Dans la capture d’écran, un module d’Odoo Apps est ajouté dans le dossier custom_addons, qui est créé dans le répertoire du projet.

odoo-crm

Pour utiliser ce nouvel addon dans Odoo, nous devons ajouter le chemin absolu du nouveau répertoire dans addons_path dans le fichier conf d’Odoo.

odoo-crm

Nous pouvons mettre à jour le chemin des addons « addons_path » dans le fichier conf sur le serveur à travers le terminal. Supposons que le fichier conf soit situé dans /etc/odoo.conf, nous pouvons l’ouvrir en lançant la commande sudo nano /etc/odoo.conf et en ajoutant le chemin vers les addons personnalisés. Supposons que les addons personnalisés soient situés dans /opt/odoo/custom, alors ajoutez le chemin vers addons_path dans le fichier conf avec les autres addons.

Exemple: addons_path = /opt/odoo/addons, /opt/odoo/enterprise, /opt/odoo/custom

Pour installer le nouveau module, activez le mode développeur et ouvrez Apps. De nouveaux menus seront disponibles dans les applications après avoir activé le mode développeur. Cliquez sur le menu Mettre à jour la liste des applications « Update Apps List » pour charger les applications et modules nouvellement ajoutés.

odoo-crm

Cliquez sur le bouton Installer ou « Activer » pour installer l’application/module.

odoo-crm

VII- créer des modules odoo

Module structure

While creating a module, it definitely has its own structure, and you should make sure that you have followed the module structure. A module comprises different components such as models, views, security, etc.

Mainly an Odoo module is declared by its manifest

All modules must have a python file and a manifest file that are __init__.py file and __manifest__.py file.

We can take a look at the structure.

odoo-crm

The basic structure of the module is shown above. Basically, the odoo module contains an __init__.py file and __manifest__.py file.

A module is also a Python package that includes a __init .py file that contains import instructions for the module’s numerous Python files. For example, if the module has a single pythonfile.py file __init__.py might contain:

from . import pythonfile 

__manifest__.py

Dans le fichier __manifest__.py d’un module Odoo, vous devez décrire plusieurs informations importantes sur le module lui-même. Voici l’explication de certains des champs clés :

  1. name (Nom) : Il s’agit du nom du module tel qu’il sera affiché dans Odoo. Ce champ permet de donner un nom explicite au module pour faciliter son identification.
  2. description (Description) : Ce champ permet de fournir une brève description du module. Il doit donner une idée claire des fonctionnalités et de l’objectif du module.
  3. version (Version) : Il s’agit du numéro de version du module. Il est recommandé de suivre une convention de numérotation des versions (par exemple, 1.0, 2.0, etc.) pour indiquer les différentes versions du module.
  4. license (Licence) : Ce champ spécifie la licence de distribution du module. Il indique les conditions sous lesquelles le module peut être utilisé, distribué et modifié.
  5. author (Auteur) : Ce champ contient le nom de l’auteur ou des auteurs du module. Il permet d’attribuer la paternité du module à ses créateurs.
  6. website (Site web) : Ce champ contient l’URL du site web de l’auteur du module. Cela permet aux utilisateurs de trouver plus d’informations sur l’auteur et d’éventuellement contacter l’auteur pour obtenir du support ou des services supplémentaires liés au module.

Ces informations fournies dans le fichier __manifest__.py sont importantes pour décrire et identifier correctement le module. Elles facilitent également la recherche, l’installation et la compréhension du module par d’autres utilisateurs d’Odoo.

Dans le fichier __manifest__.py, il existe d’autres champs importants à décrire :

  1. category (Catégorie) : Ce champ spécifie la catégorie à laquelle le module appartient. Il peut s’agir de catégories pré-définies telles que « Ventes », « Achats », « Comptabilité », « Ressources humaines », etc. La catégorie permet de regrouper les modules en fonction de leur fonctionnalité principale.
  2. depends (Dépendances) : Ce champ indique la liste des autres modules Odoo qui doivent être installés avant d’installer le module actuel. Les dépendances assurent que les modules requis sont présents et fonctionnels avant d’installer le module en question.
  3. data (Données) : Ce champ spécifie les fichiers de données qui sont installés ou mis à jour lors de l’installation du module. Ces fichiers peuvent inclure des données initiales, des configurations, des vues, des rapports, des séquences, etc. Ils permettent de configurer et de personnaliser le module lors de son installation.
  4. demo (Démo) : Ce champ spécifie les fichiers de données qui sont installés ou mis à jour en mode de démonstration active. Ces fichiers de données sont utilisés pour fournir des exemples ou des données de démonstration qui mettent en valeur les fonctionnalités du module. Ils sont utiles pour présenter le module aux utilisateurs et pour leur permettre de tester ses fonctionnalités sans impacter les données réelles.

En effet, lors du développement d’un module Odoo, vous pouvez organiser votre code et vos ressources dans des répertoires spécifiques. Voici une explication de certains des répertoires couramment utilisés :

  1. models (Modèles) : Ce répertoire contient les fichiers Python qui définissent les modèles de données, c’est-à-dire les classes Python qui représentent les tables de base de données et les enregistrements associés. Ces modèles définissent la structure des données, les relations entre les tables et les comportements associés.
  2. views (Vues) : Ce répertoire contient les fichiers XML qui définissent l’apparence et le comportement des vues dans l’interface utilisateur d’Odoo. Les vues permettent de présenter les données aux utilisateurs, d’interagir avec les enregistrements et de définir des workflows spécifiques. Les fichiers de vues peuvent inclure des formulaires, des listes, des arbres, des rapports, des menus, etc.
  3. security (Sécurité) : Ce répertoire contient les fichiers XML qui définissent les règles de sécurité et les autorisations d’accès aux enregistrements et aux fonctionnalités du module. Vous pouvez spécifier quels utilisateurs ou groupes d’utilisateurs ont accès à certaines parties du module ou à certaines actions. (ir.model.access.csv)
  4. data (Données) : Ce répertoire contient les fichiers XML ou CSV qui définissent les données initiales ou de configuration du module. Ces fichiers peuvent inclure des enregistrements préchargés, des configurations de menu, des séquences, des règles de validation, etc.
  5. demo (Démo) : Ce répertoire contient les fichiers XML ou CSV qui fournissent des données de démonstration ou d’exemple pour le module. Ces fichiers sont utilisés lors de l’installation du module en mode de démonstration pour montrer les fonctionnalités du module aux utilisateurs.
  6. static (Statique) : Ce répertoire contient les ressources statiques telles que les fichiers CSS, JavaScript, les images, les fichiers de police, etc. Ces ressources sont utilisées pour personnaliser l’apparence et le comportement des pages web générées par Odoo.
  7. wizards (Assistant) : Ce répertoire contient les fichiers Python et XML qui définissent les assistants, également appelés « wizards », dans Odoo. Les assistants permettent de guider les utilisateurs à travers des étapes spécifiques pour effectuer des tâches ou des actions particulières.
  8. Reports : Odoo propose une fonctionnalité permettant de générer des documents PDF tels que des commandes de vente et des factures. Ce répertoire de rapports contient tous les fichiers relatifs aux rapports
  9. i18n : Le fichier i18n contient les fichiers de traduction. Les fichiers .po et .pot sont contenus dans le fichier i18n. Ces fichiers ne doivent pas être mentionnés dans le fichier manifeste.

Ces répertoires structurent votre module et vous aident à organiser votre code, vos ressources et vos configurations d’une manière cohérente. Ils facilitent la gestion et la maintenance de votre module Odoo.

Ajout de modèles

Dans Odoo, un modèle est une classe qui correspond à une relation de données (table). Il comprend tous les champs et comportements nécessaires pour les données que vous allez stocker. Dans la grande majorité des cas, chaque modèle est associé à une seule table de la base de données.

Il existe principalement trois types de modèles.

  • 1. Abstract model(Modèle abstrait)
  • 2. Transient model(Modèle transitoire)
  • 3. Models.(Modèles)

Models

Les champs du modèle sont définis comme des attributs du modèle lui-même :

from . import models, fields
class ExampleModel(models.Model):
	_name = "model name"
	Field = fields.Char(string="fields label")

Dans cet exemple, nous importons les modules models et fields depuis le package courant (représenté par .). Ensuite, nous définissons une classe appelée ExampleModel qui hérite de la classe models.Model fournie par le module models.

Voici une explication ligne par ligne :

  1. from . import models, fields : Cette ligne importe les modules models et fields depuis le package courant (représenté par .). Cela permet d’accéder aux classes et aux fonctions définies dans ces modules.
  2. class ExampleModel(models.Model): : Cette ligne définit une nouvelle classe appelée ExampleModel qui hérite de la classe models.Model. La classe models.Model fournit une base pour la création de modèles de données dans Odoo.
  3. _name = "model name" : Cette ligne spécifie le nom du modèle. Le nom du modèle doit être unique et permet d’identifier ce modèle dans Odoo.
  4. Field = fields.Char(string="fields label") : Cette ligne définit un champ dans le modèle ExampleModel. Le champ est de type Char du module fields et est assigné à la variable Field. Le paramètre string est utilisé pour spécifier l’étiquette ou le libellé du champ qui sera affiché dans l’interface utilisateur d’Odoo.

En utilisant cet exemple, vous pouvez créer un modèle personnalisé dans Odoo en définissant des champs spécifiques et en leur attribuant des types de données appropriés. Ces champs peuvent ensuite être utilisés pour stocker et manipuler les données dans le modèle ExampleModel.

Abstract Model

Super-classe principale pour les modèles Odoo ordinaires basés sur une base de données.

Tous les modèles Odoo sont créés en héritant de cette classe :

from . import models, fields
class AbstractModel(models.AbstractModel):
   _name = "model name"
   Field = fields.Char(string="field label")

Dans cet exemple, nous importons les modules models et fields depuis le package courant (représenté par .). Ensuite, nous définissons une classe appelée AbstractModel qui hérite de la classe models.AbstractModel fournie par le module models.

Voici une explication ligne par ligne :

  1. from . import models, fields : Cette ligne importe les modules models et fields depuis le package courant (représenté par .). Cela permet d’accéder aux classes et aux fonctions définies dans ces modules.
  2. class AbstractModel(models.AbstractModel): Cette ligne définit une nouvelle classe appelée AbstractModel qui hérite de la classe models.AbstractModel. La classe models.AbstractModel fournit une base pour la création de modèles abstraits dans Odoo. Un modèle abstrait ne peut pas être instancié directement, mais il peut être utilisé comme classe parente pour d’autres modèles concrets.
  3. _name = "model name" : Cette ligne spécifie le nom du modèle. Le nom du modèle doit être unique et permet d’identifier ce modèle dans Odoo.
  4. Field = fields.Char(string="field label") : Cette ligne définit un champ dans le modèle AbstractModel. Le champ est de type Char du module fields et est assigné à la variable Field. Le paramètre string est utilisé pour spécifier l’étiquette ou le libellé du champ qui sera affiché dans l’interface utilisateur d’Odoo.

En utilisant cet exemple, vous pouvez créer un modèle abstrait dans Odoo en définissant des champs spécifiques et en leur attribuant des types de données appropriés. Les modèles concrets peuvent ensuite hériter de ce modèle abstrait et bénéficier des champs et des fonctionnalités définis dans le modèle AbstractModel. Les modèles abstraits sont utiles lorsque vous souhaitez partager des fonctionnalités communes entre plusieurs modèles concrets.

Transient model

Super-classe de modèle pour les enregistrements transitoires destinés à n’être que temporairement persistants et à être nettoyés régulièrement.

La gestion des droits d’accès a été simplifiée en utilisant un paradigme temporaire. Tous les utilisateurs ont la possibilité de créer de nouveaux documents. Cependant, ils ne peuvent accéder qu’aux enregistrements qu’ils ont produits. Tous les enregistrements du modèle transitoire sont accessibles au superutilisateur sans restriction.

from . import models, fields
class TransientModel(models.Transientmodel):
	_name = "model name"
	Field = fields.Char(string="field label")

Dans cet exemple, nous importons les modules models et fields depuis le package courant (représenté par .). Ensuite, nous définissons une classe appelée TransientModel qui hérite de la classe models.TransientModel fournie par le module models.

Voici une explication ligne par ligne :

  1. from . import models, fields : Cette ligne importe les modules models et fields depuis le package courant (représenté par .). Cela permet d’accéder aux classes et aux fonctions définies dans ces modules.
  2. class TransientModel(models.TransientModel): : Cette ligne définit une nouvelle classe appelée TransientModel qui hérite de la classe models.TransientModel. La classe models.TransientModel est utilisée pour créer des modèles transitoires dans Odoo. Les modèles transitoires sont utilisés pour stocker temporairement des données et ne nécessitent pas de persistance à long terme.
  3. _name = "model name" : Cette ligne spécifie le nom du modèle. Le nom du modèle doit être unique et permet d’identifier ce modèle dans Odoo.
  4. Field = fields.Char(string="field label") : Cette ligne définit un champ dans le modèle TransientModel. Le champ est de type Char du module fields et est assigné à la variable Field. Le paramètre string est utilisé pour spécifier l’étiquette ou le libellé du champ qui sera affiché dans l’interface utilisateur d’Odoo.

En utilisant cet exemple, vous pouvez créer un modèle transitoire dans Odoo en définissant des champs spécifiques et en leur attribuant des types de données appropriés. Les modèles transitoires sont utiles lorsque vous souhaitez stocker des données de manière temporaire, par exemple lors de la création d’un formulaire de saisie ou d’une boîte de dialogue qui n’a pas besoin de stocker des données à long terme.

Il est important de noter que les modèles transitoires ne créent pas de tables dans la base de données et ne sont pas persistants. Les données sont stockées en mémoire et sont supprimées après leur utilisation.

Création de modèles

Pour créer un nouveau modèle, nous devons ajouter un fichier python le décrivant et ensuite mettre à jour le module. Les chemins utilisés sont relatifs au chemin de notre module complémentaire.

1. Ajouter un fichier python aux modèles nommé demo.py

from odoo import models, fields
class DemoClass(models.Model):
	_name = "demo.class"
	name = fields.Char("Name")
	date = fields.Date("Date")

Dans cet exemple, nous importons les modules models et fields depuis le package odoo. Ensuite, nous définissons une classe appelée DemoClass qui hérite de la classe models.Model fournie par le module odoo.

Voici une explication ligne par ligne :

  1. from odoo import models, fields : Cette ligne importe les modules models et fields depuis le package odoo. Cela permet d’accéder aux classes et aux fonctions définies dans ces modules.
  2. class DemoClass(models.Model): : Cette ligne définit une nouvelle classe appelée DemoClass qui hérite de la classe models.Model. La classe models.Model est la classe de base pour la création de modèles de données dans Odoo.
  3. _name = "demo.class" : Cette ligne spécifie le nom du modèle. Le nom du modèle est utilisé pour identifier ce modèle dans Odoo. Dans cet exemple, le nom du modèle est défini comme « demo.class ». Il est généralement recommandé d’utiliser une notation en point (.) pour définir le nom du modèle, afin de le rendre unique et éviter les conflits avec d’autres modules.
  4. name = fields.Char("Name") : Cette ligne définit un champ appelé name dans le modèle DemoClass. Le champ est de type Char du module fields et est utilisé pour stocker une valeur textuelle représentant le nom. Le paramètre "Name" est utilisé comme étiquette ou libellé du champ qui sera affiché dans l’interface utilisateur d’Odoo.
  5. date = fields.Date("Date") : Cette ligne définit un autre champ appelé date dans le modèle DemoClass. Le champ est de type Date du module fields et est utilisé pour stocker une valeur de date. Le paramètre "Date" est utilisé comme étiquette ou libellé du champ.

En utilisant cet exemple, vous pouvez créer un modèle appelé DemoClass avec deux champs, name et date, qui sont utilisés pour stocker respectivement un nom et une date. Vous pouvez ajouter d’autres champs et fonctionnalités à ce modèle en fonction de vos besoins spécifiques.

2. Ajouter un fichier d’initialisation python pour charger les modèles qui sont le fichier init.py

from . import demo

3. Modifier le fichier d’initialisation python du module pour que le répertoire models soit chargé par le module

from . import models

4. Mettre à jour le module odoo à partir du menu apps dans l’interface utilisateur. Nous pouvons vérifier si le modèle est ajouté. Activer le mode développeur et aller dans General Settings > Technical > Database Structure> models rechercher notre modèle « demo.class » sur cette page.

Ajout de menus et de vues

Odoo propose de bonnes façons de définir le menu, le sous-menu, les vues et les actions. Le principal attrait est qu’un menu et un sous-menu peuvent être créés en utilisant à la fois le code et l’interface utilisateur, ce qui rend Odoo plus convivial.

Un utilisateur peut directement créer un menu et un sous-menu à partir de l’interface utilisateur d’Odoo. Nous pouvons commencer par construire un menu en utilisant du xml, ou du code.

Pour cela, nous pouvons créer un nouveau module nommé hôpital et créer un répertoire de vues sur le module hôpital.

Pour ajouter une vue, nous ajouterons au module un fichier XML contenant sa définition.

name – Nom de l’action.

res model – Modèle dans lequel le menu est créé.

view mode – Différents modes d’affichage. Ce mode doit être défini par l’action précédente.

view_id – La vue par défaut qui doit être chargée lorsque l’action est invoquée est view id.

4. Ajouter un élément de menu au fichier patient.xml pour qu’il soit visible par les utilisateurs.

<menuitem id="menu_id"
         name="Menu Name"
         parent="parent_menu_root"
         action="record_action"
         sequence="10"/>

id – identifiant du menu

name – Nom du menu à afficher

sequence – Séquence d’affichage du menu

Action – Nous utilisons l’identifiant de l’action de la fenêtre que nous avons créée à l’étape précédente

Parent – Il s’agit de l’identifiant de l’élément de menu parent

5. Ajouter une vue au fichier

<record id="record_view_form" model="ir.ui.view">
    <field name="name">record.name.form</field>
    <field name="model">record.model</field>
    <field name="arch" type="xml">
        <form>
            <sheet>
                <div class="oe_title">
                    <h1>
                        <field name="reference_no" readonly="1"/>
                    </h1>
                </div>
                <group>
                    <group>
                        <field name="name_id"/>
                        <field name="date"/>
                        <field name="age"/>
                        <field name="gender"/>
                        <field name="note"/>
                    </group>
                </group>
            </sheet>
        </form>
    </field>
 </record>

name: Pour identifier la vue. Ajoutez un titre lisible par l’homme comme nom.

model: Identifier le modèle cible.

arch: Il s’agit de l’architecture de la vue, où sa structure est réellement définie.

6. Ajouter une vue arborescente au fichier

<record id="record_view_tree" model="ir.ui.view">
   <field name="name">record.name.tree</field>
   <field name="model">record.model</field>
   <field name="arch" type="xml">
       <tree>
           <field name="name_id"/>
           <field name="age"/>
           <field name="gender"/>
       </tree>
   </field>
</record>

7. Vérifier l’interface utilisateur.

odoo-crm

Les détails du menu pour les patients peuvent être consultés ici.

odoo-crm

L’image ci-dessus montre la vue du formulaire pour la carte de patient.

odoo-crm

L’arborescence de la fiche patient est représentée dans l’image ci-dessus.

Nous pouvons créer un menu, une action et une vue dans Odoo de cette manière.