Skip to main content
Open ERP

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 :

  1. Le langage de programmation Python : Un fichier exécutable (python-2.7.amd64.msi)

  2. OpenERP : un fichier exécutable (openerp-allinone-setup-7.0-latest.exe)

  3. 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

Launching Open ERP

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/

Connexion Interface

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 ».

DB Creation

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 :

  1. Il faut cliquer sur le Menu Users

  2. Cliquer sur l’utilisateur Administrator

    Admin user

     

  3. 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.

    Admin Access Rights

     

  4. 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é.

    Mode développeur

     

b- Ajout Module

Pour ajouter un module il faut cliquer sur Mettre à jours la liste des modules

Modules update

c- Liste des modules installés

Pour accéder à la liste des modules installés, il faut cliquer sur le lien « Installed Modules »

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 :

Language management

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 :

Heritage mechanism

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

xpath configuraion

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

    Entity creation
    Création de l'entité

     

  1. 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>

    Entity details
    Détails sur l'entité

    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>

    Record

    Il est possible de personnaliser l’accès au formulaire par la barre de menu via l’attribut statusbar_visible

    Menu bar customization

    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

    Status transition graph

    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"

    Python Class Matching

    Les nœuds sont caractérisés par l’attribut model="workflow.activity"

    Workflow attribute

    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.

    Signal attribute

    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.

    Action attribute

    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.