Installation de Open ERP
1. Installation de Open ERP
L’installation de OpenERP se fait sur un serveur dédié. Dans ce document l’installation est faite sur Windows 7 avec accès administrateur. Pour installer OpenERP il faut installer les éléments suivants :
-
Le langage de programmation Python : Un fichier exécutable (python-2.7.amd64.msi)
-
OpenERP : un fichier exécutable (openerp-allinone-setup-7.0-latest.exe)
-
Des modules complémentaires pour OpenERP (en option : openerp-7.0-latest.tar.gz)
Après l’installation des éléments précédents, pour accéder à OpenERP il faut ouvrir le lien html qui se trouve dans le dossier crée OpenERP
Pour ajouter des modules complémentaires, il faut aller dossier suivant : C:\Program Files (x86)\OpenERP 7.0-20130930-231020\Server\server\openerp\addons
2. Interface graphique
a- Connexion Interface
L’interface graphique est une page Web. Vous devez cliquer sur le lien donné par OpenERP après l’installation (vu dans le paragraphe précédant) : http://localhost:8069/
Lors de la première Utilisation, il faut créer la base de données en cliquant sur le lien « Gestion de bases de données ».
Les données de connexion sont configurées lors de l’installation. Dans notre cas de figure :
-
Login : admin (Par défaut)
-
Mot de passe : 123456
b- Configuration compte utilisateur
Après la connexion, il faut donner à l’utilisateur Admin les droits d’Administration, en effet par défaut l’utilisateur Admin ne possède pas des droits Root :
-
Il faut cliquer sur le Menu Users
-
Cliquer sur l’utilisateur Administrator
-
Une nouvelle page s’affiche, cliquer sur l’onglet Access Rights, ensuite pour éditer les informations, cliquer sur le bouton Edit. Enfin, cocher Technical Features.
-
Il y a une possibilité de voir plus de détail sur l’interface en activant le mode développeur qui permet d’afficher des informations comme à quelle classe appartient tel entité.
b- Ajout Module
Pour ajouter un module il faut cliquer sur Mettre à jours la liste des modules
c- Liste des modules installés
Pour accéder à la liste des modules installés, il faut cliquer sur le lien « Installed Modules »
Les modules qui présentent les plus d’intérêt sont :
Warehouse : Gestion de stock.
Purchase : Gestion des achats et d’utilisateurs.
Sales management : Gestion des clients et des ventes.
d- Gestion de langue
Il est possible d’importer et d’exporter les termes et de les traduire via le menu de traduction :
3. Développement des modules
a- Architecture d’un dossier qui contient un module
Pour la création d’un module, il faut avoir l’architecture minimale des fichiers suivants :
-
_init_.py : c’est un fichier qui permet d’importer d’autre modules que je peux avoir besoin dans le module que je vais créer.
-
_openerp_.py : c’est un fichier qui décrit le module.
-
mymodule.py : le fichier du module
-
mymodule_view.xml : définit la vue du module
b- Architecture interne des fichiers modules
_init_.py
Importation d’autres modules
import quick_note
import wizard
_openerp_.py
L’architecture interne de ce fichier est la suivante :
{
'name': 'Quick Note', Nom du module
'version': '0.1', Version du module
'category': 'Tools', Catégorie du module
'description': """This module allows users to add quick note""", Description du module
'author': 'Baher Rais', Auteur
'update_xml': [
'wizard/send_new_mail_view.xml',
'quick_note_view.xml', Déclarer le fichier Vue du module
],
'installable': True,
}
mymodule.py
Le fichier est créé sous forme de classe.
La première étape consiste à importer les classes que nous allons utiliser. Dans notre cas de figure, nous allons importer deux classes, le premier est « osv », et la deuxième classe « fields » .
Exemple : from openerp.osv import osv, fields
Une classe est décrite par les éléments suivants :
Name
Description
Column
Pour la création d’une classe, cette dernière doit hériter de la classe osv.osv.
Exemple :
class quick_note(osv.osv):
_name = 'quick.note' : Nom de la classe
_description = 'Quick Note' : Une description
_columns = { : Ajout des colonnes supplémentaire pour la table quick_note
'title': fields.char('Title', size=64, required=True),
'content': fields.text('Content', help="Content of the note"),
'tool_id': fields.many2one('quicknote.tool', 'Tool', required=True)
}
Si le module personnalisé possède des dépendances avec des modules existants nous pouvons déclarer dans le fichier mymodule/__openerp__.py
Les fichiers View peuvent implémenter un mécanisme d’héritage de façon qu’on récupère les champs des formulaires des modules existants :
Une fois qu’on référence le module hérité on peut positionner des nouveaux champs via des appels par le tag xpath notant l’attribut position peut être before ou after
Remarque :
-
Les paramètres dans « Columns » permettent de spécifier les types de champs dans la table.
Exemple :
'title': fields.char('Title', size=64, required=True) : c’est une colonne de type caractère est de taille 64 avec un champ obligatoire qui se traduit par un champ texte dans l’interface graphique.
-
Pour chaque classe crée il y a une automatique une colonne id créer.
-
Field.many2one signifie que nous avons créé une clé étrangère avec le concept JPA
-
La nomenclature du nom de la classe est la suivante : mymodule_classname
-
Les menus des entités sont crée par défaut
-
mymodule.xml
Le fichier mymodule.xml contient les différents vus du module.
Nous commençons par créer le menu principale de ce module par l’ajout de la balise XML menuitem. A cette balise on donne un nom « name » et un identificateur unique « id ».
Exemple : <menuitem name="Quick Note" id="base.menu_quick_note" sequence="16"/>
Chaque vue est définie soit par la balise <record> et ses attributs ou la balise <menuitem>.
Il existe plus type de Vue peut être sous forme :
-
Form : Affichage détaillé
-
Tree : Affichage tabulaire
-
Search : Affichage sous forme de recherche
-
Sheet
-
Notebook : pour les onglets
Exemple :
Imbrication de l’affichage Form+sheet :
<record model="ir.ui.view" id="view_quicknote_tool_form">
<field name="arch" type="xml">
<form string="Tool" version="7.0">
<sheet>
<label for="name"/>
<field name="name"/>
<label for="desciption"/>
<field name="desciption"/>
</sheet>
</form>
</field>
</record>
Affichage Tree :
<record model="ir.ui.view" id="view_quicknote_tool_tree">
<field name="name">quicknote.tool.tree</field>
<field name="model">quicknote.tool</field>
<field name="arch" type="xml">
<tree string="Tool">
<field name="name"/>
<field name="desciption"/>
</tree>
</field>
</record>
Il est possible de personnaliser l’accès au formulaire par la barre de menu via l’attribut statusbar_visible
c- Menu
Pour créer un sous menu il faut commencer par la balise menuitem ensuite on donne à cette balise, l’attribut parent, et l’action qui va faire :
<menuitem name="Quick Note" parent="base.menu_quick_note" id="base.menu_quick_note_root" sequence="20" />
<menuitem name="Tools" parent="base.menu_quick_note_root" id="menu_quicknote_tools" sequence="1" action="action_quicknote_tool_search"/>
<menuitem name="Quick Note" parent="base.menu_quick_note_root" id="menu_quick_note" sequence="2" action="action_quick_note_search"/>
<menuitem name="Send Mail" parent="base.menu_quick_note_root" id="menu_send_new_mail" sequence="3" action="action_send_new_mail"/>
L’action est définit par la balise record, dans l’attribut id, le model ir.actions.act_window et l’id de ce record :
<record model="ir.actions.act_window" id="action_quicknote_tool_search">
<field name="name">Tool</field>
<field name="res_model">quicknote.tool</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_quicknote_tool_search"/>
</record>
4. Notion de workflow
Open peut implémenter un processus sur la base d’un graphe à état-transition
Au niveau du fichier XML on représente chaque nœud en précisant avec les autres nœuds.
Le graphe est défini par l’attribut model="workflow".
Le référencement vers la classe python correspondante se fait par l’attribut name="osv"
Les nœuds sont caractérisés par l’attribut model="workflow.activity"
Les flèches de transition sont caractérisés par un attribut model="workflow.transition". Une transition doit mentionner son nœud départ et son nœud arrivé respectivement par des attributs act_from et act_to.
L’attribut signal mentionne la fonction qui déclenche la transition.
A noter que les nœuds final et initial sont caractérisés par flow_start et flow_stop. On remarque également que certaine activité déclenche des appels vers des fonctions personnalisés grâce à l’attribut action.
5. Conclusion
Cette prise en main a permis d’identifier et de faire une première analyse sur les possibilités offertes par Open ERP qui se révèlent très prometteuses ; si vous désirez adapter Open ERP à vos besoins, n'hésitez pas à nous contacter pour une analyse profonde.