Après l'installation d'OpenERP, vous pouvez vérifier le processus d'exécution avec la commande :
ps -aux|grep openerp
Cette commande vous fournira des informations sur l'installation d'OpenERP, y compris le chemin d'exécution come :
/usr/bin/python /usr/bin/openerp-server --config=/etc/openerp/openerp-server.conf --logfile=/var/log/openerp/openerp-server.log
Ce résultat indique le répertoire Python, l'emplacement d'OpenERP, ainsi que les chemins vers le fichier de configuration et le fichier journal.
En ouvrant le fichier de configuraton (openerp-server.conf), vous pouvez observer les paramètres de configuration :
1 [options]
2 ; Mot de passe permettant les opérations sur la base de données :
3 ; admin_passwd = admin
4 db_host = False
5 db_port = False
6 db_user = openerp
7 db_password = False
Pour une installation via apt, les modules d'OpenERP se trouvent dans : /usr/lib/pymodules/python2.7/openerp/addons
Voici un module démo que j'ai développé et testé avec succès :
L'objectif est de créer un module gérant les inscriptions des étudiants aux cours. Voici les étapes détaillées pour créer ce module :
Étape 1 : Naviguez dans le répertoire des modules mentionné précédemment et créez un nouveau dosier nommé "demo_formation".
Étape 2 : Dans le dossier "demo_formation", créez quatre fichiers : init.py, openerp.py, formation.py et formation_vue.xml
Explication rapide des fichiers :
- init.py : fichier requis pour tout module Python, effectuant des initialisations de base
- openerp.py : fichier spécifique à OpenERP contenant les métadonnées du module
- formation.py : contient les classes et logiques métier de notre module
- formation_vue.xml : définit l'interface utilisateur du module dans OpenERP
Étape 3 : Contenu du fichier init.py
1 # -*- coding: utf-8 -*-
2 import formation # Importation des fichiers Python du module
La première ligne spécifie l'encodage UTF-8 du fichier, essentiel pour les caractères spéciaux.
Étape 4 : Contenu du fichier openerp.py
1 # -*- coding: utf-8 -*-
2 {
3 "name" : "demo_formation", # Nom du module
4 "version" : "1.0", # Version du module
5 "description" : 'Module de démonstration pour la gestion des formations', # Description
6 "author" : "Développeur OpenERP", # Auteur
7 "website" : "http://www.openerp-demo.com", # Site web
8 "depends" : [], # Modules requis
9 "update_xml" : ["formation_vue.xml"], # Fichiers XML à charger lors de la mise à jour
10 "installable" : True, # Module installable
11 "category":'Modules Génériques/Éducation' # Catégorie du module
12 }
Ceci est un dictionnaire Python contenant les métadonnées essentielles du module.
Étape 5 : Contenu du fichier formation.py
1 # -*- coding: utf-8 -*-
2 from openerp.osv import fields, osv
3
4 class formation_cours(osv.osv):
5 _name = 'demo_formation.cours'
6 _description = 'Module de démonstration pour les formations'
7 _columns = {
8 'nom':fields.char( u'Nom du cours',size=64,select=True),
9 'date_debut':fields.date(u'Date de début',select=True),
10 'duree_total':fields.float(u'Durée totale (jours)',digits=(16,1)),
11 'formateur':fields.many2one('res.users',u'Formateur'),
12 'participants':fields.many2many('res.partner',string=u'Participants'),
13 'tarif':fields.float(u'Tarif (€)',digits=(16,2)),
14 }
15 formation_cours()
Étape 6 : Contenu du fichier formation_vue.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Définition de la vue formulaire -->
<record model="ir.ui.view" id="demo_formation_cours_form_view">
<field name="name">Vue formulaire des cours</field>
<field name="type">form</field>
<field name="model">demo_formation.cours</field>
<field name="arch" type="xml">
<form string="Formulaire de cours">
<field name="nom"/>
<field name="date_debut"/>
<field name="duree_total"/>
<field name="tarif"/>
<field name="formateur"/>
<field name="participants" colspan="4"/>
</form>
</field>
</record>
<!-- Définition de la vue liste -->
<record model="ir.ui.view" id="demo_formation_cours_tree_view">
<field name="name">Vue liste des cours</field>
<field name="type">tree</field>
<field name="model">demo_formation.cours</field>
<field name="arch" type="xml">
<tree string="Liste des cours">
<field name="nom"/>
<field name="date_debut"/>
<field name="formateur"/>
<field name="tarif" sum="Total"/>
</tree>
</field>
</record>
<!-- Définition de l'action de la vue -->
<record model="ir.actions.act_window" id="action_demo_formation_cours">
<field name="name">Cours</field>
<field name="res_model">demo_formation.cours</field>
<field name="view_type">form</field>
<field name="view_mode">form,tree</field>
<field name="view_id" ref="demo_formation_cours_tree_view"/>
</record>
<!-- Définition du menu -->
<menuitem id="menu_demo" name="Démonstration"/>
<menuitem id="menu_demo_formation" name="Formations" parent="menu_demo"/>
<menuitem id="menu_demo_formation_cours" name="Gestion des cours" parent="menu_demo_formation" action="action_demo_formation_cours"/>
</data>
</openerp>
Après avoir créé ces fichiers, mettez à jour les modules et vous verrez votre nouveau module dans la liste des modules non installés.
Bien que le copier-coller puisse donner rapidement des résultats, la création réelle révèle plusieurs problèmes potentiels. Si vous rencontrez les erreurs suivantes, voici quelques solutions :
- "SyntaxError: Non-ASCII character" : le fichier ne contient pas la déclaration "# -- coding: utf-8 --" ou il y a une faute de frappe.
- "You try to install module '' that depends on module 'lesson'. But the latter module is not available in your system" : bien que certains attribuent cela à des problèmes d'importation, dans mon expérience, cette erreur disparaît une fois les autres problèmes corrigés. N'oubliez pas que les modifications de vue nécessitent une mise à jour du module pour être appliquées.
- "AttributeError: 'NoneType' object has no attribute 'fields_view_get'" : consultez http://help.openerp.com/question/35163/attributeerror-nonetype-object-has-no-attribute-fields_view_get/
- "Error occurred while validating the field(s) arch:Invalid XML for View Architecture!" : cette erreur est généralement due à une faute de frappe dans le fichier XML. Consultez le fichier journal pour identifier la ligne exacte de l'erreur. Assurez-vous également que le nom de la classe du module est correct, en utilisant le format "nom_dossier.nom_module".