Vous êtes sur la page 1sur 31

04/11/2016

UNIVERSITE CADI AYYAD


Progiciels de gestion intgre
ERP
2016/ 2017

Tarik AGOUTI

Dpartement dInformatique Facult des Sciences Semlalia de Marrakech

Configuration de lERP Odoo

1
04/11/2016

Dmarrer le serveur
Crer une nouvelle base de donnes formation
(mot de passe : admin)
Se connecter la nouvelle base
de donnes

Activer les menus de la configuration avance :


Configuration -> Utilisateurs -> Modifier lutilisateur
-> Onglet droits daccs
Cocher : Caractristiques techniques
Administration -> slectionner loption Configuration

Actualiser la page

Installer des modules

2
04/11/2016

3
04/11/2016

Modification au niveau dun module :

Configuration -> structure de la base de donne -> Modle

Dfinition des champs suite :

4
04/11/2016

Enregistre le module et actualiser la page (pour valider les modifications) :

10

5
04/11/2016

Le mode dveloppeur

11

12

6
04/11/2016

Les phases :

13

Dveloppement spcifique dun module

Architecture modulaire sous odoo


(openerp)
Tous les modules dOpenERP sont crs sous le
rpertoire
openerp7/openerp/addons

14

7
04/11/2016

Architecture modulaire sous odoo


Structure standard dun module sous odoo

15

Structure dun module Odoo


Les tapes suivantes sont ncessaires pour crer un nouveau module :
Crer un package python dans le rpertoire /addons portant le nom de votre
module (required)
Crer un fichier de description du module : __openerp__.py (required)
Crer le fichier Python contenant les modles (Classes + Mthodes) (required)
Crer des fichiers .XML pour dfinir les menus, les vues et les actions (required)
Crer des fichiers .XML qui tlchargent des donnes de dmonstration
Crer ventuellement des rapports, des assistants (Wizard) ou des flux de travail
(Workflow).

16

8
04/11/2016

Structure dun module Odoo


__init__.py Initialisation du package Python

__openerp__.py La fiche descriptive du module

Obligatoires module.py Les classes Python, les objets du module


module_view.xml Les vues (Formulaires, listes, graph,), menus et
actions
demo Donnes de test et de dmonstration

i18n Fichiers de traduction Internationalisation

report Dfinition des rapports


Optionnels security Dclaration des groupes et des droits daccs

workflow Dfinition des workflow

wizard Dfinition des assistants 17

Structure dun module Odoo

__init__.py

C'est le fichier qui permet a OpenERP de charger notre


module.
Le contenu de ce fichier est trs simple :

import
nom_module

18

9
04/11/2016

__openerp__.
py
name : le nom de votre module ;
version : la version du module ;
category : la catgorie dans laquelle vous classez votre module ;
sequence : c'est un nombre qui permet de dfinir lordre de votre module dans la liste
des modules. 1, il sera en haut, 100 il sera en bas
author : l'auteur du module ;
description : la description complte du module ;
depends : les dpendances de votre module ;
data : les fichiers charger ;
installable : si votre module est installable ou non ;
application : laissez False. Votre module ne sera pas reconnu comme une
application.
auto_install : laissez False, nous l'installerons la main.
19

Dveloppement spcifique dun module


Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Exemple de fichier de description du module


__openerp__.py (Squelette)
# -*- coding: utf-8 -*-
{
'name' : "nom de module",
'author' : "auteur",
'version' : "0.1",
'description' : "description",
'website' : "site web ou blog si il existe ",
'category' : "catgorie de module",
'summary' : "les mots clef de description",
'sequence' : 0,
'depends' : ['base'],

'update_xml' : [
#'travaux_view.xml',
],
'demo_xml' : []
'installable' : True,
'application' : False,
'auto_install' : False,
20
}

10
04/11/2016

Exercice 1 :Exemple de cration de module

Crer un module vide formation_travaux


Crer les fichiers obligatoires __init__.py et
__openerp__.py
Redmarrer le serveur
Installer le module partir du menu
Configuration -> Modules -> Modules installs
Lancer linstallation du module

21

Dveloppement spcifique dun module


Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Rponse
__openerp__.py

# -*- coding: utf-8 -*-


{
'name' : "Formation Gestion des travaux",
'author' : "A",
'version' : "0.1",
'description' : "Module de gestion des travaux sous odoo",
'website' : "www.",
'category' : "Maintenance",
'summary' : "Travaux, Taches, Incidents",
'sequence' : 0,
'depends' : ['base'],

'update_xml' : [
#'travaux_view.xml',
],
'demo_xml' : []
'installable' : True,
'application' : False,
'auto_install' : False,
22
}

11
04/11/2016

Dveloppement spcifique dun module


Les classes
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Les classes
Partie 2

23

Dveloppement spcifique dun module


Les classes
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

La couche Model

Le Framework Object Service (OSV) met en uvre une couche


complte de Mapping Objet Relationnel.

Il permet aux dveloppeurs de mettre en place larchitecture SQL de


base.

Les objets mtier sont dclars comme des classes Python qui hritent
de la classe osv.osv, ce qui les rend une partie du modle OpenObject
modle, et qui seront automatiquement persistants par la couche ORM.

24

12
04/11/2016

Dveloppement spcifique dun module


Les classes
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
Les types des champs de lORM

Un objet peut avoir 3 types de champs


Simple : Integers, Floats, Date, Booleans, Char, Text, Binary
Relationnel : Reprsente les relations entre les objets (one2many,
many2one, many2many)
Fonctionnel : Des champs stock ou non-stocks la base de
donne, il sont calculs (comme des fonctions Python)

25

Dveloppement spcifique dun module


Les classes
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
boolean(...), integer(...), date(...), Exemple :
'active': fields.boolean('Active'),
datetime(...) 'priority': fields.integer('Priority'),
time(...), float() 'start_date': fields.date('Start Date'),

char(string,size,translate=False,..) translate: True si le champs peut tre


Champs simple

text(string,size,translate=False,..) traduit par lutilisateur


size: la taille maximum dun champs
caractre (41,45)
status'
selection(values, string, ...) :fields.selection([('open','Open'),('closed','Closed')]
,'Status',
required=True, translate=True),

binary(string, filters=None, ...) filters: Filtres optionnels sur le nom du


Un champs pour stocker des fichier
fichiers ou des images 'picture':fields.binary('Picture',filters=
'*.png,*.gif')
many2one(obj, ondelete='set null', obj: Le nom _name de lobjet destination (requis)
) ondelete: e.g. 'set null', 'cascade', Voir la
Relation vers lobjet courant documentation PostgreSQL
Champs relationnel

26
one2many(obj, field_id, ) obj: Le nom _name de lobjet destination

13
04/11/2016

Dveloppement spcifique dun module


Les classes
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
La couche Model
Les packages et el lments ncessaires pour crer un model
# -*- coding: utf-8 -*-
from openerp.osv import fields, osv

Larchitecture dune classe (Model) vide


class classe_name(osv.osv):
_name = 'object.name'
_description = u"object description"
_columns = {
'field1' : fields.char(u'Numro', size=32, required=True),
'field2' : fields.many2one('object.name', u'Responsable',
required=True),

}

_defaults = {
'field': lambda self, cr, uid, context: '/',
}
27
Classe_name()

Dveloppement spcifique dun module


Les classes
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Exercice 2 : Exemple de cration des classes


Crer un nouveau fichier travaux.py dans le module
formation_travaux
Importer les packages du framework osv
Crer une classe formation_work dans le fichier travaux.py
Redmarrer le serveur
Mettre jour le module partir du menu
Configuration -> Modules -> Modules installs
Lancer la mise jour du module on cliquant sur Mettre jour
Ouvrir le gestionnaire PgAdmin et vrifier dans votre base de
donnes si la table formation_work a t bien cre.

28

14
04/11/2016

Dveloppement spcifique dun module


Les classes
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
Rponse
Les packages ncessaires pour crer un model
# -*- coding: utf-8 -*- travaux.py
from openerp.osv import fields, osv

Larchitecture dune classe (Model) vide


class formation_work(osv.osv):
_name = 'formation.work'
_description = u"This is for managing works"
_columns = {
'name' : fields.char(u'Numro', size=32, required=True),
'responsable': fields.many2one('hr.employee', u'Responsable',
required=True),
'user' : fields.many2one('res.users',u'Note',
translate=True),
'line_ids' : fields.many2one('formation.work.line',
u'maintenance', required=True)
}
29
_defaults = {
'name': lambda self, cr, uid, context: '/',

Dveloppement spcifique dun module


Les classes
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Exercice 3
Crer une nouvelle classe formation_work_line dans le fichier travaux.py
Ajouter des champs relationnels dans les deux classes (formation_work et
formation_work_line) pour reprsenter la relation suivante,

one2m
formation_work any formation_work_l
name (char) 1 ine
*
responsable name (char)
(many2one) maintenance
user(many2one) (one2many)
line_ids many2 description (text)
(many2one) one
30

15
04/11/2016

Dveloppement spcifique dun module


Les classes
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
Rponse 1 :
Les packages ncessaires pour crer un model
# -*- coding: utf-8 -*- travaux.py
from openerp.osv import fields, osv

Larchitecture dune classe formation_work


class formation_work(osv.osv):
_name = 'formation.work'
_description = u"This is for managing works"
_columns = {
'name' : fields.char(u'Numro', size=32, required=True),
'responsable': fields.many2one('hr.employee', u'Responsable',
required=True),
'user' : fields.many2one('res.users',u'Note',
translate=True),
'line_ids' : fields.many2one('formation.work.line',
u'maintenance', required=True)
}
31
_defaults = {
'name': lambda self, cr, uid, context: '/',

Dveloppement spcifique dun module


Les classes
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
Rponse 2 :
Les packages ncessaires pour crer un model
# -*- coding: utf-8 -*- travaux.py
from openerp.osv import fields, osv

Larchitecture dune classe formation_work_line


class formation_work_line(osv.osv):
_name = 'formation.work.line'
_description = u"This is for managing works line"
_columns = {

'name' : fields.char(u'Nom', size=32, required=True),


'maintenance' : fields.one2many('formation.work', u'Maintenance',
required=True),
'description' : fields.text(u'Description', translate=True),
}
_defaults = {
'name': lambda self, cr, uid, context: '/',
}
formation_work_line() 32

16
04/11/2016

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

vues, actions et Menus


Partie 2

33

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Structure des modules Odoo


Structure standard dun module sous OpenERP

34

17
04/11/2016

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Les Vues
Dclaration gnrique dune vue :
<record model="ir.ui.view" id="VIEW_ID">
<field name="name">VIEW.NAME</field>
<field name="model">PYTHON.CLASS.NAME</field>
<field name="arch" type="xml">
<!-- contenu de la vue: <form>, <tree>, <graph>, -->
</field>
</record>

name nom de la vue (nomination spare par des point)


model modle d'objet sur lequel la vue est dfinie (comme res_model dans les
actions)
type form, tree, graph, calendar, search, gantt, kanban
arch architecture de la vue
35

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

La vue Formulaire (Form)


Exemple de la vue formulaire

36

18
04/11/2016

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
La vue Formulaire (Form)
Dclaration XML
<!-- Form view example -->
<record model="ir.ui.view" id="formation_work_form">
<field name="name">formation.work.form</field>
<field name="model">formation.work</field>
<field name="arch" type="xml">
<form string="Travaux">
<field name="name" />
<field name="responsable" />
<field name="user" />
<field name="line_ids" />
</form>
</field>
</record>

37

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
La vue Formulaire (Form)
Dclaration XML (
<record model="ir.ui.view"
API Version 7) id="formation_work_form">
<field name="name">formation.work.form</field>
<field name="model">formation.work</field>
<field name="arch" type="xml">
<form string="Tables" version="7.0">
<sheet>
<h1>
<label for="name" string="Numro" />
<field name="name" />
</h1>
<label for="user" string="Utilisateur" />
<field name="user" />
<field name="responsable" />
<field name="description" />
</sheet>
</form>
</field>
</record> 38

19
04/11/2016

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
La vue Formulaire (Form)
Les attributs communs tous les lments :

string : label de l'lment ;


nolabel : mettre 1 pour cacher l'tiquette du champ ;
colspan : nombre de colonnes sur lesquelles le champ doit s'tendre ;
rowspan : nombre de lignes sur lesquelles le champ doit s'tendre ;
col: nombre de colonnes que cet lment doit allouer ses lments enfants ;
invisible : mettre 1 pour cacher cet lment compltement ;

39

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
La vue Formulaire (Form)
Dclaration XML (Sheet, h1 + Group + Notebook)

40

20
04/11/2016

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
La vue Liste (Tree)
Exemple de la vue liste (Tree)

41

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
La vue Liste (Tree)
Dclaration XML
<!-- Tree view example -->
<record model="ir.ui.view" id="formation_work_tree">
<field name="name">formation.work.tree</field>
<field name="model">formation.work</field>
<field name="arch" type="xml">
<tree string= "Travaux">
<field name="name" />
<field name="user" />
<field name="responsable" />
<field name="description" />
</tree>
</field>
</record>

42

21
04/11/2016

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
La vue Liste (Tree)
Dclaration XML

43

Dveloppement spcifique dun module


Vues, Actions et Menus

Prise en main complet Configuration complte Module personnalis Module Conclusion


dodoo spcifique
La vue Kanban (Vignette)
Cette vue reprsente les donnes sous forme de colonnes / petite vignette
regroupes par un critre.
Les vue Kanban sont personnalisable avec des balises HTML ou QWeb

Qweb : Un langage de Template HTML dvelopp par OpenERP qui permet


de dfinir une structure portable des composantes HTML. 44

22
04/11/2016

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
La vue Kanban (Vignette)
<record model="ir.ui.view" id="formation_work_tree">

<field name="name">formation.work.kanban</field>

<field name="model">formation.work</field>

<field name="arch" type="xml">


<kanban>
<templates>
<t t-name="kanban-box">
<div class="oe_module_vignette"
style="background:#EEE">
<div class="oe_module_desc">
<h2><a type="edit"><field
name="name"/></a></h2>
<ul>
<li><strong><field
name="description"/></strong></li>
</ul>
</div> 45
</div>

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
La vue Kanban (Colonnes)

46

23
04/11/2016

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Menus et actions
Le menu principal permet lutilisateur daccder aux modulex
Chaque module dispose dun menu principal et de sous menus
Les menus et les actions sont dclars lintrieur dun fichier xml :
( travaux_view.xml)

47

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
Menus et actions
Menu
principal
Menu sans
action
Menu 1 avec
action

Menu 2 avec
action

48

24
04/11/2016

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
Actions et menus
Structure de la vue travaux_view.xml vide

<?xml version="1.0" encoding="UTF-8"?>


<openerp>
<data>
[views definitions]
[actions definitions]
[menus definitions]
</data>
</openerp>

49

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Actions
La dclaration XML dune action est la suivante
<record model="ir.actions.act_window" id="work_action_work">
<field name="name">Works</field>
<field name="res_model">formation.work</field>
<field name="view_mode">tree,form</field>
</record>

model : la table (base de donnes) pour stocker des actions


id : Identifiant de laction dans la table ir.action.act_windows, il doit tre
unique
name : Le nom de laction (requis)
res_model : Le model (classe python) objet de la vue (requis)
view_mode : La liste des modes allous pour visualiser les enregistrements 50

25
04/11/2016

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Menus
La dclaration XML dun menu principal, niveau 1

<menuitem id="work_menu_root" name="Traveaux" />

La dclaration dun menu niveau 1.1 (Sans action = non cliquable)


<menuitem id="work_menu" parent="work_menu_root"
name="Traveaux" />
La dclaration dun menu niveau 1.1.1 (menu cliquable avec action)

<menuitem id="works_work_menu" parent="work_menu" name="Traveaux"


action="[ACTION_ID]" />
REMARQUE : Avant dutiliser les menus cliquables, il faut dfinir laction
action="[ACTION_ID]" qui va tre dclenche.

51

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Exercice 3 (Cration des menus)

Travaux

Travaux
formation.work
Travaux

formation.work.line
Tache

52

26
04/11/2016

Dveloppement spcifique dun module


Vues, Actions et Menus
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Rponse :

<menuitem id="work_menu_root" name="Traveaux" />


<menuitem id="work_menu" parent="work_menu_root"
name="Traveaux" />
<menuitem id="works_work_menu" parent="work_menu" name="Traveaux"
action="[ACTION_ID]" />
<menuitem id="works_task_menu" parent="work_menu" name="Tache"
action="[ACTION_ID_TASK]" />

53

Dveloppement spcifique
dun module
Prise en main complet Configuration complte Module personnalis ModuleScurit Conclusion
dodoo spcifique

Scurit
Partie 3

54

27
04/11/2016

Dveloppement spcifique dun module


Scurit
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
Scurit
Les utilisateurs et les rles sont des points critiques en matire de
scurit interne dans OpenERP.
OpenERP propose plusieurs concepts de scurit concernant les rles
des utilisateurs :
Utilisateur: une personne identifie par son login et mot de passe.
Notez que tous les employs d'une entreprise ne sont pas
ncessairement des utilisateurs OpenERP, un utilisateur est une
personne qui accde l'application.
Groupe: un groupe d'utilisateurs qui a des droits d'accs. Un groupe
donne ses droits d'accs ses utilisateurs. Ex: responsable des ventes,
comptable, etc
Rgles de scurit: une dfinition des droits d'accs d'un groupe
donn. Les rgles de scurit sont fixes une ressource donne, par
exemple le modle de facturation.

55

Dveloppement spcifique dun module


Scurit
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
Groupes
La cration des groupes peut se faire dune manire graphique
(Configuration -> Utilisateurs -> Groupes) ou avec des fichiers de
donnes XML

Mthode graphique

56

28
04/11/2016

Dveloppement spcifique dun module


Scurit
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
Groupes
Exemple de fichier XML de groups

<?xml version="1.0" encoding="utf-8"?>


<openerp>
<data noupdate="1">

<record id="group_work_manager" model="res.groups">


<field name="name">work/ Manager</field>
<field name="comment">Manager of works</field>
<field name="implied_ids" eval="[(4,
ref('base.group_user'))]"/>
</record>

<record id="group_work_user" model="res.groups">


<field name="name">Restaurant / user</field>
<field name="comment">userof restaurant</field>
<field name="implied_ids" eval="[(4,
ref('base.group_user'))]"/>
</record>

</data>
</openerp> 57

Dveloppement spcifique dun module


tats de sortie
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Les tats de sortie


report

58

29
04/11/2016

Dveloppement spcifique dun module


internationalisation
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

reports
Odoo (Openerp) possde deux types de rapport:
Rapports et statistiques: sont des donnes calcules,
souvent reprsents sous la forme graphiques.
Etat de sortie: sont utiliss pour imprimer des documents. Le
rsultat est gnralement un PDF gnr par une slection
effectue sur l'cran. En outre, OpenERP vous permet
d'ouvrir ces rapports dans OpenOffice.org.

59

Dveloppement spcifique dun module


internationalisation
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Pour la reprsentation des menus dimpression on dfinie un fichier


xml comme suite :

<?xml version="1.0" encoding="utf-8"?>


<openerp>
<data>

<report auto ="False" id="report_formation_travaux" model="formation.work"


name="formation.work"
rml="formation_travaux/report/travaux.rml" string="Fiche de Travau"
usage="default"/>

<report auto ="False" id="report_formation_travaux" model="formation.work"


name="formation.work"
rml="formation_travaux/report/travaux.rml" string="Fiche de Travau"
usage="default"/>

<report auto ="False" id="report_formation_travaux" model="formation.work"


name="formation.work"
rml="formation_travaux/report/travaux.rml" string="Fiche de Travau"
usage="default"/>
</data>
60
</openerp>

30
04/11/2016

Dveloppement spcifique
dun module
internationalisation
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique

Internationalisation
i18n

61

Dveloppement spcifique dun module


internationalisation
Prise en main complet Configuration complte Module personnalis Module Conclusion
dodoo spcifique
Exercice 5 (Internationalisation)
Exporter la Template de traduction du module formation_travaux
Configuration -> Importer / Exporter -> Exporter une traduction
Slectionner le module formation_travaux
Cliquer sur Exporter
Tlcharger le fichier formation_travaux.po

Ouvrir le dossier du module


Crer un sous rpertoire i18n
Ouvrir le rpertoire i18n
Coller le fichier formation_travaux.po
Crer une copie du fichier avec le nom fr.po
Ouvrir lditeur Poedit et traduire les messages du fichier fr.po en
franais
Enregistrer et redmarrer le serveur, puis lancer une mise jour du
module.
Si la base de donnes est installe en franais, le module va prendre en
considration le fichier fr.po
62

31