Les Modèles de base d’Odoo

Introduction

Modèles de base Odoo

Dans les articles précédents, nous avons vu comment créer nos propres modèles comme les véhicules, les marques les agents, mais nous avons aussi utilisé des modèles de base d’Odoo, comme le modèle res.partner et le  modèle ir.ui.view par exemple.
Dans le cœur d’addons d’Odoo qui s’ajoutent lors de l’installation d’Odoo par défaut, Odoo possède un module nommé base, qui contient les classes nécessaires utilisés par les autres addons (modules) de base ou les modules personnalisés qui sont créés par les autres développeurs.
Dans cet article, nous découvrons ces modèles de base d’Odoo, qu’on utilise souvent, sans -peut-être- les bien comprendre. 
Pourtant, ils sont présents dans toutes les applications de base d’Odoo, ou dans les applications qu’on développe pour répondre à un besoin spécifique, d’où l’importance d’avoir une idée claire sur ces modèles.

Où Trouvez le module de base d’Odoo : 

Le module de base d’Odoo, se trouve dans le répertoire d’addons standard d’Odoo, qui se créé lors de notre installation ou copie d’Odoo à partir ces sources.
Pour l’ouvrir, il suffit donc d’ouvrir Odoo à partir de notre IDE Pycharm (ou un autre IDE), puis d’explorer le répertoire addons, et enfin ouvrir le répertoire base.

Catégorie des modèles de bases d’Odoo : 

Vous pouvez découvrir les classes qui existent dans ce répertoire en allant sur le fichier __init__, du répertoire models, du module base. 

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import assetsbundle
from . import qweb
from . import ir_model
from . import ir_sequence
from . import ir_ui_menu
from . import ir_ui_view
from . import ir_actions
from . import ir_actions_report
from . import ir_attachment
from . import ir_cron
from . import ir_filters
from . import ir_default
from . import ir_translation
from . import ir_exports
from . import ir_rule
from . import ir_config_parameter
from . import ir_autovacuum
from . import ir_mail_server
from . import ir_fields
from . import ir_qweb
from . import ir_qweb_fields
from . import ir_http
from . import ir_logging
from . import ir_property
from . import ir_module
from . import ir_demo
from . import ir_demo_failure
from . import report_layout
from . import report_paperformat
from . import image_mixin
from . import res_country
from . import res_lang
from . import res_partner
from . import res_bank
from . import res_config
from . import res_currency
from . import res_company
from . import res_users
from . import decimal_precision

En plus des modèles de précision décimale, des modèles de rapports, de qweb et des assets, On distingue deux catégories principales de modèles :

  • Les modèles du repository d’information, ou Information repository (IR) Models
  • Les modèles de ressources (RES

Les Modèles IR (Information Repository) : 

Les modèles IR, sont des modèles qu’Odoo utilise, pour créer les applications, à travers les menus, les actions, les rapports et les différentes vues, les autres éléments qui composent une application Odoo.
Nous les avons déjà utilisés plusieurs fois, dans la définition des menus, actions et vues dans notre exemple, agence de location de véhicules, comme par exemple le modèle ir.ui.view, ir.actions.act_window et ir.ui.menu.
Ces modèles contiennent donc, les informations nécessaires à Odoo pour construire les applications, et enregistre les informations qu’on trouve dans le menu :  configuration technique lorsqu’on active le mode développeur.
Parmi ces modèles on trouve les modèles suivants qu’on utilise souvent :

ir.model : Utilisé principalement pour la définition des modèles
ir.model.fields : la définition des champs des modèles,
ir.model.access : la définition des droits d’accès,
ir.model.data : définition des identifiants xml  
ir.sequence : Utilisé pour la définition des séquences des documents (Numéros de Bon de Commandes, BL, BR, Factures, …)
ir.ui.menu : Utilisé principalement pour la dentition des menus de notre application
ir.ui.view : Utilisé pour la définition des différentes vues de l’application (Vue formulaire, liste, recherche, pivot, graph,..)
ir.actions.act_window :utilisé  pour définir les actions Windows
ir.actions.report : pour l’impression des rapports

Les Modèles de ressources RES (Ressources) : 

Les modèles de ressources contiennent des informations, qui peuvent être utilisées par toutes les applications, comme par exemple le modèle res.partner qui représente les informations d’un partenaire (client, fournisseur,..), ou le fichier res.company qui représente les informations relatives à une société.
Ces modèles contiennent aussi les fichiers de configuration de base comme le fichier res.groups ou le fichier res.config 
Parmi les fichiers de ressources on trouve :
res.country : contient les informations de base d’un pays res.lang : ce modèle est utilisé pour configurer les langues res.partner : un modèle de base, utilisé largement par les applications Odoo, il peut représenter les contacts en générale, les fournisseurs les clients out tout autre entité.

res.bank : Ce modèle contient les informations des banques ainsi que leur  configuration res.config : C’est le modèle  de configuration de base, qui est utilisé pour la configuration des applications Odoo, et les autres configurations en générales 

res.currency : ce modèle est utilisé pour configurer les monnaies des pays avec leur conversion et symboles res.company : C’est le modèle qui permet de configurer les informations de votre/ vos entreprises. res.users : contient les éléments de configuration des utilisateurs du systèmes 

res.groups : c’est le modèle qui est utilisé pour définir les groupes de sécurité des utilisateurs

Quelques exemples d’utilisation des modèles de base d’Odoo : 

Durant notre découverte des modèles Odoo, à travers les articles précédents, nous avons fait appel plusieurs fois à ces modèles, ci-dessous-quelques exemples en générale qui démontre l’utilisation de ces fichiers :
Les IR Modèles (ir.*) :
Définition d’un menu : ir.ui.menu (menuitem)
<menuitem name="Marques" id="agence_marque_menu"
     parent="agence_base_menu" action="agence_marque_action"/>

Définition des vues (Formulaires, liste, kanban, etc.) :

<record id="agence_vehicule_tree" model="ir.ui.view">
            <field name="name">Agence Vehicule Liste</field>
            <field name="model">agence.vehicule</field>
            <field name="arch" type="xml">
                <tree>
                    <field name="marque"/>
                    <field name="modele"/>
                    <field name="date_achat"/>
                </tree>
            </field>
    </record>

Définition des droits d’accès des modèles (ir.model.access) :
Lors d’utilisation des droits d’accès des modèles de notre application à travers le fichier ir.model.access.csv, on fait appel au modèle ir.model.access :
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
acl_agence_users,agence.vehicule default,model_agence_vehicule,,1,0,0,0
acl_agence_admin,agence.vehicule_admin,model_agence_vehicule,group_ag_managers,1,1,1,1

Définition d’une action :
 <record id='agence_vehicule_action' model='ir.actions.act_window'>
        <field name="name"> Gestion des Véhicules  </field>
        <field name="res_model">agence.vehicule</field>
        <field name="view_mode">tree,form</field>
    </record>

Les modèles de ressources (Res Modeles) :
Le Modèle res.groups :

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="group_ag_managers" model="res.groups">
        <field name="name">Agence Managers</field>
        <field name="users" eval="[(4, ref('base.user_admin'))]"/>
</record>
</odoo>

Le modèle res.parnter :
Dans l’exemple ci-dessous on fait appel à un modèle IR et un Modèle Res :
<record id='agence_cond_action' model='ir.actions.act_window'>
        <field name="name"> Gestion des Conducteurs </field>
        <field name="res_model">res.partner</field>
        <field name="view_mode">tree,form</field>
    </record>

Les Vues des Modèles de base d’Odoo : 

Comme vous le saviez, on peut définir plusieurs vues à un modèle donné. Par exemple Le modèle de base res.config , est utilisé pour définir plusieurs vues de configurations différentes, qui permettent de  configurer les applications .
Vous pouvez trouver toutes les vues relatives aux modèles de base d’Odoo sur le répertoire /views .
On utilise ces vues principalement, pour les réutiliser en utilisant l’héritage, ou pour s’inspirer    lorsqu’on souhaite ajouter un autre objet ou autres données, basé sur ces modèles (comme par exemple les séquences, pour ajouter une autre séquence personnalisée on utilise le modèle ir.sequence, avec la vue ir_sequence_views.xml)

Ci-dessous quelques exemples des vues de base liées aux modèles de base d’Odoo
res_partner_views.xml : La vue principale des contacts, fournisseurs, clients,
res_users_views.xml : La vue des utilisateurs d’Odoo ainsi que leur configuration de leur droit d’accès
res_company_views.xml : La vue de d’introduction des informations d’une entreprise
decimal_precision_views.xml :   Cette vue, est utilisé pour ajouter d’autres précisions décimales, à par les précisions proposées par Odoo
ir_sequence_views.xml : Cette vue est utilisé pour ajouter d’autres séquences personnalisées, à part celles proposées par Odoo. 

Conclusion :

Dans cet article, nous avons expliqué le rôle est la signification des modèles de base d’Odoo.
L’importance de les comprendre, est primordiale, parce que autant que développeur Odoo, vous allez les utiliser dans tous vos applications, ce qui nécessite d’avoir une idée claire sur la provenance et la signification des parties de codes utilisés dans les fichiers XML et Python.

Télécharger gratuitement votre  guide odoo ! 

Télécharger Gratuitement votre guide Odoo

Découvrez comment , Odoo  est une vraie opportunité pour les entreprises et les développeurs !


Télécharger !