SlideShare une entreprise Scribd logo
1  sur  67
Télécharger pour lire hors ligne
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1 
Réalisé par : Ait-Mlouk Addi 
Blog : http://aitmlouk-addi.blogspot.com 
Site web : http://www.odoo-services.esy.es/ 
Laboratoire ETRI 
aitmlouk@gmail.com
Plan 
Prise en main 
Configuration et paramétrage 
Modules personnalisé 
Introduction 
Conclusion 
Développement spécifique 
Prise en main et paramétrage d’odoo 
(OpenERP)
•Prise en main complet d’odoo 
•Configuration complète 
•Caractéristiques techniques complète 
•Savoir crée un module personnalisé 
•Savoir développer un module spécifique 
2 
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et paramétrage d’OpenERP
Configuration OdooPartie 1: Prise en main 
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et paramétrage d’OpenERP
•Démarrer le serveur 
•Créer une nouvelle base de données formation, mot de passe admin 
•Se connecter à la nouvelle base 
de donnée 
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et paramétrage d’OpenERP
•Activer les menus de la configuration avancée : 
•Configuration -> Utilisateurs -> Modifier l’utilisateur -> Onglet droits d’accès 
•Cocher Caractéristiques techniques 
•Administration -> sélectionner l’option Configuration 
•Actualiser la page 
•Installer des modules 
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et paramétrage d’OpenERP
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et paramétrage d’OpenERP
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et paramétrage d’OpenERP
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et paramétrage d’OpenERP 
Pour une simple modification au niveau d’un module sous odooon peut passez tous simplement par Des objets et vues personnaliser et en crée les objets comme suite : 
•Configuration -> structure de la base de donnée -> Modèle puis crée un objet
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et paramétrage d’OpenERP 
Apres la définition de l’objet il reste a définir les champs comme suite :
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et paramétrage d’OpenERP 
Et les menus comme suite :
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et paramétrage d’OpenERP 
Apres que nous terminons notre module personnalisé on enregistre le module en question et on rafraichir la page pour que les modification soit apparaitre comme suite :
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et paramétrage d’OpenERP 
Le mode développeur 
Le mode développeur permet de debugger les modules afin d’identifier les objet , champs, vues, menus … techniquement Il est utiliser par un développeur pour identifier plus de détailles sur les objets … qui servira a paramétrer et a modifier les modules stocker dans la base de donnée et pas dans le code source. Pour activer le mode développeur on procède comme suite : 
Administrator-> Aproposde l’OpenERP
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et paramétrage d’OpenERP 
Pour debugger un module ou un objet on passe par le menu Déboguer et en choisie l’action qui convient.
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Développement spécifique d’un module 
Les différents phase d’un ERP 
UnERPpossèdegénéralementtroisphasesdetravail:
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Architecture modulaire sous odoo(openerp) 
•Tous les modules d’OpenERP sont créés au-dessous du répertoire 
openerp7/openerp/addons 
Développement spécifique d’un module
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Architecture modulaire sous odoo 
•Structure standard d’un module sous odoo 
Développement spécifique d’un module
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Structure d’un module Odoo 
•Les étapes suivantes sont nécessaires pour créer un nouveau module: 
•Créer un package python dans le répertoire /addonsportant le nom de votre module (required) 
•Créer un fichier de description du module: __openerp__.py (required) 
•Créer le fichier Python contenant les modèles (Classes + Méthodes) (required) 
•Créer des fichiers .XML pour définir les menus, les vues et les actions (required) 
•Créer des fichiers .XML qui téléchargent des données de démonstration 
•Créer éventuellement des rapports, des assistants (Wizard) ou des flux de travail (Workflow). 
Développement spécifique d’un module
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Obligatoires 
__init__.py 
InitialisationdupackagePython 
__openerp__.py 
Lafichedescriptivedumodule 
module.py 
LesclassesPython,lesobjetsdumodule 
module_view.xml 
Lesvues(Formulaires,listes,graph,…),menusetactions 
Optionnels 
demo 
Donnéesdetestetdedémonstration 
i18n 
Fichiersdetraduction–Internationalisation 
report 
Définitiondesrapports 
security 
Déclarationdesgroupesetdesdroitsd’accès 
workflow 
Définitiondesworkflow 
wizard 
Définitiondesassistants 
Structure d’un module Odoo 
Développement spécifique d’un module
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
__init__.py 
•C'est le fichier qui permet a OpenERPde charger notre module. Le contenu de ce fichier est très simple: 
importnom_module 
Développement spécifique d’un module 
Structure d’un module Odoo
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
__openerp__.py 
•name:le nom de votre module; 
•version:la version du module; 
•category:la catégorie dans laquelle vous classez votre module; 
•sequence:c'est un nombre qui permet de définir l’ordre 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 complète du module; 
•depends:les dépendances 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. C'est OpenERPqui délivre les certificats qui qualifient votre module d'application; 
•auto_install:laissez à False, nous l'installerons à la main. 
Développement spécifique d’un module
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
# -*-coding: utf-8 -*- 
{ 
'name' :"nom de module", 
'author' : "auteur", 
'version' :"0.1", 
'description' :"description…", 
'website' :"site web ou blog si il existe …", 
'category' :"catégorie 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, 
} 
Exemple de fichier de description du module 
__openerp__.py (Squelette) 
Développement spécifique d’un module
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Exercice 1 :Exemple de création de module 
•Créer un module vide formation_travaux 
•Créer les fichiers obligatoires __init__.py et __openerp__.py 
•Redémarrer le serveur 
•Installer le module à partir du menu 
•Configuration -> Modules -> Modules installés 
•Lancer l’installation du module on cliquant sur installé 
Développement spécifique d’un module
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
# -*-coding: utf-8 -*- 
{ 
'name' :"Formation Gestion des travaux", 
'author' : "Ait-Mlouk Addi", 
'version' :"0.1", 
'description' :"Module de gestiondes travauxsous odoo", 
'website' :"www.aitmlouk.esy.es", 
'category' :"Maintenance", 
'summary' :"Travaux, Taches, Incidents", 
'sequence' : 0, 
'depends' : ['base'], 
'update_xml' : [ 
#'travaux_view.xml', 
], 
'demo_xml' : [] 
'installable': True, 
'application': False, 
'auto_install': False, 
} 
Réponse 
__openerp__.py 
Développement spécifique d’un module
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Les classes 
Partie 2 
Développement spécifique d’un module 
Les classes
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La couche Model 
•Le Framework Object Service(OSV) met en oeuvre une couche complète de MappingObjet Relationnel. 
•Il permet aux développeurs de mettre en place l’architecture SQL de base. 
•Les objets métier sont déclarés comme des classes Python qui héritent de la classe osv.osv, ce qui les rend une partie du modèle OpenObjectmodèle, et qui seront automatiquement persistés par la couche ORM. 
Développement spécifique d’un module 
Les classes
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Les types des champs de l’ORM 
•Un objet peut avoir 3 types de champs 
•Simple: Integers, Floats, Date, Booleans, Char, Text, Binary… 
•Relationnel: Représente les relations entre les objets (one2many, many2one, many2many) 
•Fonctionnel : Des champs stocké ou non-stockés à la base de donnée, il sont calculés à la volé comme des fonctions Python 
Développement spécifique d’un module 
Les classes
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Champs simple 
boolean(...),integer(...),date(...),datetime(...) 
time(...),float(…) 
Exemple : 
'active': fields.boolean('Active'), 
'priority': fields.integer('Priority'), 
'start_date': fields.date('Start Date'), 
char(string,size,translate=False,..) text(string,size,translate=False,..) 
• translate: True sile champs peutêtretraduitpar l’utilisateur 
• size: la taillemaximum d’un champs caractère(→41,45) 
selection(values, string, ...) 
‘status' :fields.selection([('open','Open'),('closed','Closed')],'Status', 
required=True, translate=True), 
binary(string, filters=None, ...) 
Un champs pour stocker des fichiers ou des images 
• filters: Filtresoptionnelssurle nom du fichier'picture':fields.binary('Picture',filters='*.png,*.gif') 
Champs relationnel 
many2one(obj, ondelete='set null', …) 
Relationversl’objetcourant 
• obj: Le nom _namede l’objet destination (requis) 
• ondelete: e.g. 'set null', 'cascade', Voir la documentation PostgreSQL 
one2many(obj, field_id, …) 
L’inverse de many2one 
• obj: Le nom _namede l’objet destination (requis) 
• field_id: field name of inverse many2one 
many2many(obj, rel, field1, field2, …) 
Relation bidirectionnelmultiple entre deuxclasses 
• obj: Le nom _namede l’objet destination (requis) 
• rel: Le nom SQL de la table associative (requis) 
• field1: Le nom du champs de l’objetactueldansla table associative (requis) 
• field2: Le nom du champs de l’objetdestination dansla table associative (requis) 
Développement spécifique d’un module 
Les classes
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La couche Model 
L’architecture d’une classe (Model) vide 
classclasse_name(osv.osv): 
_name= 'object.name' 
_description = u"objectdescription" 
_columns= { 
'field1' : fields.char(u'Numéro', size=32, required=True), 
'field2' : fields.many2one('object.name', u'Responsable', required=True), 
… 
} 
_defaults = { 
'field': lambda self, cr, uid, context: '/', 
} 
Classe_name() 
# -*-coding: utf-8 -*- 
fromopenerp.osvimportfields, osv 
Les packages et el éléments nécessaires pour créer un model 
Développement spécifique d’un module 
Les classes
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Exercice 2 : Exemple de création des classes 
•Créer un nouveau fichier travaux.py dans le module formation_travaux 
•Importer les packages du frameworkosv 
•Créer une classe formation_workdans le fichier travaux.py 
•Redémarrer le serveur 
•Mettre à jour le module à partir du menu 
•Configuration -> Modules -> Modules installés 
•Lancer la mise à jour du module on cliquant sur Mettre à jour 
•Ouvrer le gestionnaire PgAdminet vérifier dans votre base de données si la table formation_worka été bien créée. 
Développement spécifique d’un module 
Les classes
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Réponse 
L’architecture d’une classe (Model) vide 
travaux.py 
classformation_work(osv.osv): 
_name= 'formation.work' 
_description = u"Thisis for managing works" 
_columns= { 
'name' : fields.char(u'Numéro', 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) 
} 
_defaults = { 
'name': lambda self, cr, uid, context: '/', 
} 
formation_work() 
# -*-coding: utf-8 -*- 
fromopenerp.osvimportfields, osv 
Les packages nécessaires pour créer un model 
Développement spécifique d’un module 
Les classes
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Exercice 3 
•Créer une nouvelle classe formation_work_linedans le fichier travaux.py 
•Ajouter des champs relationnelsdans les deux classes (formation_worket formation_work_line) pour représenter la relation suivante, 
formation_work 
name(char) 
responsable (many2one) 
user(many2one) 
line_ids(many2one) 
formation_work_line 
name(char) 
maintenance (one2many) 
description (text) 
* 
1 
many2one 
one2many 
Développement spécifique d’un module 
Les classes
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Réponse 1 : 
L’architecture d’une classe formation_work 
travaux.py 
classformation_work(osv.osv): 
_name= 'formation.work' 
_description = u"Thisis for managing works" 
_columns= { 
'name' : fields.char(u'Numéro', 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) 
} 
_defaults = { 
'name': lambda self, cr, uid, context: '/', 
} 
formation_work() 
# -*-coding: utf-8 -*- 
fromopenerp.osvimportfields, osv 
Les packages nécessaires pour créer un model 
Développement spécifique d’un module 
Les classes
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Réponse 2 : 
L’architecture d’une classe formation_work_line 
travaux.py 
classformation_work_line(osv.osv): 
_name= 'formation.work.line' 
_description = u"Thisis 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() 
# -*-coding: utf-8 -*- 
fromopenerp.osvimportfields, osv 
Les packages nécessaires pour créer un model 
Développement spécifique d’un module 
Les classes
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
vues, actions et Menus 
Partie 2 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Structure des modules Odoo 
•Structure standard d’un module sous OpenERP 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Les Vues 
•Déclaration générique d’une 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> 
•namenom de la vue (nomination séparée par des point) 
•modelmodèle d'objet sur lequel la vue est définie (comme res_modeldans les actions) 
•typeform, tree, graph, calendar, search, gantt, kanban 
•archarchitecture de la vue 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Formulaire (Form) 
•Exemple de la vue formulaire 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Formulaire (Form) 
•Déclaration XML 
<!--Formviewexample--> 
<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"> 
<formstring="Travaux"> 
<fieldname="name" /> 
<fieldname="responsable" /> 
<fieldname="user" /> 
<fieldname="line_ids" /> 
</form> 
</field> 
</record> 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Formulaire (Form) 
•Déclaration XML ( API Version 7) 
<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"> 
<formstring="Tables" version="7.0"> 
<sheet> 
<h1> 
<label for="name" string="Numéro" /> 
<fieldname="name" /> 
</h1> 
<label for="user" string="Utilisateur" /> 
<fieldname="user" /> 
<fieldname="responsable" /> 
<fieldname="description" /> 
</sheet> 
</form> 
</field> 
</record> 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Formulaire (Form) 
•Les attributs communs à tous les éléments : 
• string: label de l'élément ; 
• 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 élément doit allouer à ses éléments enfants ; 
• invisible: mettre à 1 pour cacher cet élément complètement ; 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Formulaire (Form) 
•Déclaration XML (Sheet, h1+ Group+ Notebook) 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Liste (Tree) 
•Exemple de la vue liste (Tree) 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Liste (Tree) 
•Déclaration XML 
<!--Treeviewexample--> 
<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"> 
<treestring="Travaux"> 
<fieldname="name" /> 
<fieldname="user" /> 
<fieldname="responsable" /> 
<fieldname="description" /> 
</tree> 
</field> 
</record> 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Liste (Tree) 
•Déclaration XML 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Kanban (Vignette) 
•Cette vue représente les données sous forme de colonnes / petite vignette regroupées par un critère. 
•Les vue Kanban sont personnalisable avec des balises HTML ou QWeb 
• Qweb: Un langage de Template HTML développé par OpenERPqui permet de définir une structure portable des composantes HTML. 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
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><fieldname="description"/></strong></li> </ul> 
</div> 
</div> 
</t> 
</templates> 
</kanban> 
</field> 
</record> 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Kanban (Colonnes) 
Développement spécifique d’un module 
Vues, Actions et Menus
Menus et actions 
•Les menus principales permette à l’utilisateur d’accéder au module 
•Chaque module est dispose d’un menu principale et d’autres sous menus 
•Les menus et leurs actions sont déclarés à l’intérieur d’un fichier xml: ( travaux_view.xml) 
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Menus et actions 
Menu sans action 
Menu 1 avec action 
Menu principal 
Menu 2 avec action 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
•Structure de la vue travaux_view.xmlvide 
<?xml version="1.0" encoding="UTF-8"?> 
<openerp> 
<data> 
[views definitions] 
[actions definitions] 
[menus definitions] 
</data> 
</openerp> 
Développement spécifique d’un module 
Vues, Actions et Menus 
Actions et menus 
Pour les bonnes pratique il est préférer de séparer les menus dans 
un fichier xml(menu_views.xml) a fin de facilité la maintenance.
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Actions 
•La déclaration XML d’une actionest la suivante 
•model: la table (base de données) pour stocker des actions 
•id: Identifiantde l’actiondansla table ir.action.act_windows, ildoitêtreunique 
•name: Le nom de l’action (requis) 
•res_model: Le model (classe python) objet de la vue (requis) 
•view_mode: La liste des modes alloués pour visualiser les enregistrements 
<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> 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Menus 
•La déclaration XML d’un menu principal, niveau 1 
•La déclaration d’un menu niveau 1.1 (Sans action = non cliquable) 
•La déclaration d’un menu niveau 1.1.1 (menu cliquable avec action) 
•REMARQUE: Avant d’utiliser les menus cliquables, il faut définir l’action action="[ACTION_ID]" qui va être déclenchée. 
<menuitemid="work_menu_root"name="Traveaux" /> 
<menuitemid="work_menu" parent="work_menu_root" name="Traveaux" /> 
<menuitemid="works_work_menu" parent="work_menu" name="Traveaux" action="[ACTION_ID]" /> 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Exercice 3 (Création des menus) 
Travaux 
Travaux 
Tache 
Travauxformation.work.lineformation.work 
Développement spécifique d’un module 
Vues, Actions et Menus
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Réponse : 
Développement spécifique d’un module 
Vues, Actions et Menus 
<menuitemid="work_menu_root"name="Traveaux" /> 
<menuitemid="work_menu" parent="work_menu_root" name="Traveaux" /> 
<menuitemid="works_work_menu" parent="work_menu" name="Traveaux" action="[ACTION_ID]" /> 
<menuitemid="works_task_menu" parent="work_menu" name="Tache" action="[ACTION_ID_TASK]" />
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Sécurité 
Partie 3 
Développement spécifique d’un module 
Sécurité
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Sécurité 
•LesutilisateursetlesrôlessontdespointscritiquesenmatièredesécuritéinternedansOpenERP. 
•OpenERPproposeplusieursconceptsdesécuritéconcernantlesrôlesdesutilisateurs: 
•Utilisateur:unepersonneidentifiéeparsonloginetmotdepasse.Notezquetouslesemployésd'uneentreprisenesontpasnécessairementlesutilisateursOpenERP,unutilisateurestunepersonnequiaccèdeàl'application. 
•Groupe:ungrouped'utilisateursquiadesdroitsd'accès.Ungroupedonnesesdroitsd'accèsàsesutilisateurs.Ex:responsabledesventes,comptable,etc 
•Règlesde sécurité: une règle qui définit les droits d'accès d'un groupe donné. Les règles de sécurité sont fixées à une ressource donnée, par exemple le modèle de facturation. 
Développement spécifique d’un module 
Sécurité
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Groupes 
•Lacréationdesgroupespeutsefaired’unemanièregraphique(Configuration-> Utilisateurs->Groupes)ouavecdesfichiersdedonnéesXML 
Développement spécifique d’un module 
Sécurité 
Méthode graphique
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
•ExempledefichierXMLdegroups 
<?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">userofrestaurant</field> 
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/> 
</record> 
</data> 
</openerp> 
Développement spécifique d’un module 
Sécurité 
Groupes
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Les états de sortie 
report 
Développement spécifique d’un moduleétats de sortie
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Développement spécifique d’un moduleinternationalisation 
•Odoo(Openerp)possèdedeuxtypesderapport: 
•Rapportsetstatistiques:cesontdesdonnéescalculées,souventreprésentéssouslaformegraphiques. 
•Etatdesortie:ilssontutiliséspourimprimerdesdocumentsdusystème.LerésultatestgénéralementunPDFgénéréparunesélectioneffectuéesurl'écran.Enoutre,OpenERPvouspermetd'ouvrircesrapportsdansOpenOffice.org. 
reports
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Développement spécifique d’un moduleinternationalisation 
•Pourlareprésentationdesmenusd’impressionondéfinieunfichierxmlcommesuite: 
<?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> 
</openerp>
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Développement spécifique d’un moduleinternationalisation 
•Leparseur 
importtimefromopenerp.reportimportreport_sxw 
classmadrassa_travaux(report_sxw.rml_parse): 
def__init__(self, cr, uid, name, context=None): 
super(madrassa_travaux, self).__init__(cr, uid, name, context=context) 
self.line_no= 0 
self.localcontext.update({ 
'time': time, 
'line_no':self._line_no, 
}) 
report_sxw.report_sxw('report.formation.work', 'formation.work', 'addons/formation_travaux/report/travaux.rml', parser=madrassa_travaux, header="external")
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Internationalisation 
i18n 
Développement spécifique d’un moduleinternationalisation
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Exercice 5 (Internationalisation) 
•Exporter la Template de traduction du module formation_travaux 
•Configuration -> Importer / Exporter -> Exporter une traduction 
•Sélectionner le module formation_travaux 
•Cliquer sur Exporter 
•Télécharger le fichier formation_travaux.po 
•Créer un sous répertoire i18n à l’intérieur le dossier du module 
•Coller le fichier formation_travaux.podedans 
•Créer une copie du fichier avec le nom fr.po 
•Ouvrer l’éditeur Poeditet traduire les messages du fichier fr.poen français 
•Enregistrer et redémarrer le serveur, puis lancer un mise à jour du module. 
•Si la base de données est installée en français, le module va prendre en considération le fichier fr.po 
Développement spécifique d’un moduleinternationalisation
Paramétrage et développement spécifique des modules odoo(OpenERP) 
Réalisé par : Ait-Mlouk Addi 
Blog : http://aitmlouk-addi.blogspot.com 
Site web : http://www.odoo-services.esy.es/ 
aitmlouk@gmail.com 
Laboratoire ETRI
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1 
Réalisé par : Ait-Mlouk Addi 
Site web : http://www.odoo-services.esy.es/ 
Blog : http://aitmlouk-addi.blogspot.com 
Twiter: https://twitter.com/aitmlouk 
Facebook: https://www.facebook.com/iminoika 
Viadeo: http://ma.viadeo.com/fr/profile/addi.mlk 
Linkedin: https://www.linkedin.com/pub/addi-ait-mlouk/56/850/32a 
Youtube: https://www.youtube.com/user/mloukaddi/videos 
Github: https://github.com/aitmlouk 
Slidshare: http://fr.slideshare.net/mloukaddi/ 
aitmlouk@gmail.com 
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Conclusion 
Laboratoire ETRI

Contenu connexe

Tendances

Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec OdooHassan WAHSISS
 
Présentation PFE : Mise en place d’une solution de gestion intégrée (OpenERP...
Présentation PFE :  Mise en place d’une solution de gestion intégrée (OpenERP...Présentation PFE :  Mise en place d’une solution de gestion intégrée (OpenERP...
Présentation PFE : Mise en place d’une solution de gestion intégrée (OpenERP...Mohamed Cherkaoui
 
Développement de modules pour odoo (anciennement OpenERP): exemples et exerci...
Développement de modules pour odoo (anciennement OpenERP): exemples et exerci...Développement de modules pour odoo (anciennement OpenERP): exemples et exerci...
Développement de modules pour odoo (anciennement OpenERP): exemples et exerci...Abdelouahed Abdou
 
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-ConsultingRapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-ConsultingMohamed Cherkaoui
 
Rapport de projet Odoo - gestion de projet et gestion de ressources humaines
Rapport de projet Odoo - gestion de projet et gestion de ressources humainesRapport de projet Odoo - gestion de projet et gestion de ressources humaines
Rapport de projet Odoo - gestion de projet et gestion de ressources humainesAyoub Ayyoub
 
Atelier1 mise en place d’odoo
Atelier1   mise en place d’odooAtelier1   mise en place d’odoo
Atelier1 mise en place d’odooAbdelouahed Abdou
 
ADAPTATION ET INTEGRATION D’OPENERP POUR LA GESTION D’OFFICINE
ADAPTATION ET INTEGRATION D’OPENERP POUR LA GESTION D’OFFICINEADAPTATION ET INTEGRATION D’OPENERP POUR LA GESTION D’OFFICINE
ADAPTATION ET INTEGRATION D’OPENERP POUR LA GESTION D’OFFICINEHORIYASOFT
 
Conception d'un module de gestion de la paie adapté au contexte marocain pour...
Conception d'un module de gestion de la paie adapté au contexte marocain pour...Conception d'un module de gestion de la paie adapté au contexte marocain pour...
Conception d'un module de gestion de la paie adapté au contexte marocain pour...HORIYASOFT
 
Rapport du Projet de Fin d'année Génie informatique ENSA AGADIR
Rapport du Projet de Fin d'année Génie informatique ENSA AGADIRRapport du Projet de Fin d'année Génie informatique ENSA AGADIR
Rapport du Projet de Fin d'année Génie informatique ENSA AGADIRAHMEDAKHACHKHOUCH
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFEHedi Riahi
 
Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux fehmi arbi
 
Rapport gestion de stock.pdf
Rapport gestion de stock.pdfRapport gestion de stock.pdf
Rapport gestion de stock.pdfAchrafAntri2
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...MOHAMMED MOURADI
 
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...Anas Riahi
 
Inventaires dans odoo
Inventaires dans odooInventaires dans odoo
Inventaires dans odooAkretion
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Ahmed Makni
 
Gestion des Chercheurs d’Emploi
Gestion des Chercheurs d’EmploiGestion des Chercheurs d’Emploi
Gestion des Chercheurs d’EmploiAzzeddine Elouadi
 
Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique ayoub daoudi
 
Mémoire de Projet de Fin d’Etudes
Mémoire de Projet de Fin d’EtudesMémoire de Projet de Fin d’Etudes
Mémoire de Projet de Fin d’EtudesAicha OUALLA
 

Tendances (20)

Python et son intégration avec Odoo
Python et son intégration avec OdooPython et son intégration avec Odoo
Python et son intégration avec Odoo
 
Présentation PFE : Mise en place d’une solution de gestion intégrée (OpenERP...
Présentation PFE :  Mise en place d’une solution de gestion intégrée (OpenERP...Présentation PFE :  Mise en place d’une solution de gestion intégrée (OpenERP...
Présentation PFE : Mise en place d’une solution de gestion intégrée (OpenERP...
 
Développement de modules pour odoo (anciennement OpenERP): exemples et exerci...
Développement de modules pour odoo (anciennement OpenERP): exemples et exerci...Développement de modules pour odoo (anciennement OpenERP): exemples et exerci...
Développement de modules pour odoo (anciennement OpenERP): exemples et exerci...
 
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-ConsultingRapport PFE - Mise en place d'OpenERP pour IT-Consulting
Rapport PFE - Mise en place d'OpenERP pour IT-Consulting
 
Rapport de projet Odoo - gestion de projet et gestion de ressources humaines
Rapport de projet Odoo - gestion de projet et gestion de ressources humainesRapport de projet Odoo - gestion de projet et gestion de ressources humaines
Rapport de projet Odoo - gestion de projet et gestion de ressources humaines
 
Atelier1 mise en place d’odoo
Atelier1   mise en place d’odooAtelier1   mise en place d’odoo
Atelier1 mise en place d’odoo
 
ADAPTATION ET INTEGRATION D’OPENERP POUR LA GESTION D’OFFICINE
ADAPTATION ET INTEGRATION D’OPENERP POUR LA GESTION D’OFFICINEADAPTATION ET INTEGRATION D’OPENERP POUR LA GESTION D’OFFICINE
ADAPTATION ET INTEGRATION D’OPENERP POUR LA GESTION D’OFFICINE
 
Conception d'un module de gestion de la paie adapté au contexte marocain pour...
Conception d'un module de gestion de la paie adapté au contexte marocain pour...Conception d'un module de gestion de la paie adapté au contexte marocain pour...
Conception d'un module de gestion de la paie adapté au contexte marocain pour...
 
Rapport du Projet de Fin d'année Génie informatique ENSA AGADIR
Rapport du Projet de Fin d'année Génie informatique ENSA AGADIRRapport du Projet de Fin d'année Génie informatique ENSA AGADIR
Rapport du Projet de Fin d'année Génie informatique ENSA AGADIR
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 
Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux
 
Rapport gestion de stock.pdf
Rapport gestion de stock.pdfRapport gestion de stock.pdf
Rapport gestion de stock.pdf
 
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
Rapport application web (Spring BOOT,angular4) et mobile(ionc3) gestion des a...
 
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
Rapport PFE : Réalisation d'une application web back-office de gestion pédago...
 
Inventaires dans odoo
Inventaires dans odooInventaires dans odoo
Inventaires dans odoo
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...
 
Modele-elearning
Modele-elearningModele-elearning
Modele-elearning
 
Gestion des Chercheurs d’Emploi
Gestion des Chercheurs d’EmploiGestion des Chercheurs d’Emploi
Gestion des Chercheurs d’Emploi
 
Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique
 
Mémoire de Projet de Fin d’Etudes
Mémoire de Projet de Fin d’EtudesMémoire de Projet de Fin d’Etudes
Mémoire de Projet de Fin d’Etudes
 

Similaire à Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1

Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
Cas integration open_erp
Cas integration open_erpCas integration open_erp
Cas integration open_erpJoubi Aaziz
 
CodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxCodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxThomasParaiso1
 
Alphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et ConfigurerAlphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et ConfigurerAlphorm
 
Les générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienLes générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienNicolas Carlo
 
DEVASC_Module_7 - Infrastructure & automatisation.pptx
DEVASC_Module_7 - Infrastructure & automatisation.pptxDEVASC_Module_7 - Infrastructure & automatisation.pptx
DEVASC_Module_7 - Infrastructure & automatisation.pptxTasnimBenAmmar
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Firas Kouẞàa
 
Florence Labord Moodle
Florence Labord  MoodleFlorence Labord  Moodle
Florence Labord MoodleWalibi
 
Joomla! Platform - Pourquoi l’API Joomla!
Joomla! Platform - Pourquoi l’API Joomla!Joomla! Platform - Pourquoi l’API Joomla!
Joomla! Platform - Pourquoi l’API Joomla!Bilel McSam
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
Installation et configuration d'openbravo
Installation et configuration d'openbravoInstallation et configuration d'openbravo
Installation et configuration d'openbravoSoumia Brabije
 
Zend Framework 2.0 - Le gestionnaire de modules
Zend Framework 2.0 - Le gestionnaire de modulesZend Framework 2.0 - Le gestionnaire de modules
Zend Framework 2.0 - Le gestionnaire de modulesVincent Blanchon
 
Plan de la formation technique de Odoo
Plan de la formation technique de OdooPlan de la formation technique de Odoo
Plan de la formation technique de OdooIsmail BAKKALI
 
Introduction à Zend Framework
Introduction à Zend FrameworkIntroduction à Zend Framework
Introduction à Zend FrameworkGauthier Delamarre
 
Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Maxime Bernard
 
StyleCop avec visual studio 2010
StyleCop avec visual studio 2010StyleCop avec visual studio 2010
StyleCop avec visual studio 2010Novencia Groupe
 

Similaire à Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1 (20)

Kick starting OpenERP
Kick starting OpenERPKick starting OpenERP
Kick starting OpenERP
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Cas integration open_erp
Cas integration open_erpCas integration open_erp
Cas integration open_erp
 
Installation open erp
Installation open erpInstallation open erp
Installation open erp
 
CodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxCodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptx
 
Alphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et ConfigurerAlphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et Configurer
 
Les générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidienLes générateurs de code, pour se simplifier la vie au quotidien
Les générateurs de code, pour se simplifier la vie au quotidien
 
DEVASC_Module_7 - Infrastructure & automatisation.pptx
DEVASC_Module_7 - Infrastructure & automatisation.pptxDEVASC_Module_7 - Infrastructure & automatisation.pptx
DEVASC_Module_7 - Infrastructure & automatisation.pptx
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances
 
Florence Labord Moodle
Florence Labord  MoodleFlorence Labord  Moodle
Florence Labord Moodle
 
J platform
J platformJ platform
J platform
 
Joomla! Platform - Pourquoi l’API Joomla!
Joomla! Platform - Pourquoi l’API Joomla!Joomla! Platform - Pourquoi l’API Joomla!
Joomla! Platform - Pourquoi l’API Joomla!
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
Installation et configuration d'openbravo
Installation et configuration d'openbravoInstallation et configuration d'openbravo
Installation et configuration d'openbravo
 
Zend Framework 2.0 - Le gestionnaire de modules
Zend Framework 2.0 - Le gestionnaire de modulesZend Framework 2.0 - Le gestionnaire de modules
Zend Framework 2.0 - Le gestionnaire de modules
 
Plan de la formation technique de Odoo
Plan de la formation technique de OdooPlan de la formation technique de Odoo
Plan de la formation technique de Odoo
 
Introduction à Zend Framework
Introduction à Zend FrameworkIntroduction à Zend Framework
Introduction à Zend Framework
 
Rapport open erp
Rapport open erpRapport open erp
Rapport open erp
 
Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?Comment réussir son projet en Angular 1.5 ?
Comment réussir son projet en Angular 1.5 ?
 
StyleCop avec visual studio 2010
StyleCop avec visual studio 2010StyleCop avec visual studio 2010
StyleCop avec visual studio 2010
 

Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1

  • 1. Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1 Réalisé par : Ait-Mlouk Addi Blog : http://aitmlouk-addi.blogspot.com Site web : http://www.odoo-services.esy.es/ Laboratoire ETRI aitmlouk@gmail.com
  • 2. Plan Prise en main Configuration et paramétrage Modules personnalisé Introduction Conclusion Développement spécifique Prise en main et paramétrage d’odoo (OpenERP)
  • 3. •Prise en main complet d’odoo •Configuration complète •Caractéristiques techniques complète •Savoir crée un module personnalisé •Savoir développer un module spécifique 2 Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Prise en main et paramétrage d’OpenERP
  • 4. Configuration OdooPartie 1: Prise en main Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Prise en main et paramétrage d’OpenERP
  • 5. •Démarrer le serveur •Créer une nouvelle base de données formation, mot de passe admin •Se connecter à la nouvelle base de donnée Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Prise en main et paramétrage d’OpenERP
  • 6. •Activer les menus de la configuration avancée : •Configuration -> Utilisateurs -> Modifier l’utilisateur -> Onglet droits d’accès •Cocher Caractéristiques techniques •Administration -> sélectionner l’option Configuration •Actualiser la page •Installer des modules Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Prise en main et paramétrage d’OpenERP
  • 7. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Prise en main et paramétrage d’OpenERP
  • 8. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Prise en main et paramétrage d’OpenERP
  • 9. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Prise en main et paramétrage d’OpenERP Pour une simple modification au niveau d’un module sous odooon peut passez tous simplement par Des objets et vues personnaliser et en crée les objets comme suite : •Configuration -> structure de la base de donnée -> Modèle puis crée un objet
  • 10. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Prise en main et paramétrage d’OpenERP Apres la définition de l’objet il reste a définir les champs comme suite :
  • 11. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Prise en main et paramétrage d’OpenERP Et les menus comme suite :
  • 12. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Prise en main et paramétrage d’OpenERP Apres que nous terminons notre module personnalisé on enregistre le module en question et on rafraichir la page pour que les modification soit apparaitre comme suite :
  • 13. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Prise en main et paramétrage d’OpenERP Le mode développeur Le mode développeur permet de debugger les modules afin d’identifier les objet , champs, vues, menus … techniquement Il est utiliser par un développeur pour identifier plus de détailles sur les objets … qui servira a paramétrer et a modifier les modules stocker dans la base de donnée et pas dans le code source. Pour activer le mode développeur on procède comme suite : Administrator-> Aproposde l’OpenERP
  • 14. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Prise en main et paramétrage d’OpenERP Pour debugger un module ou un objet on passe par le menu Déboguer et en choisie l’action qui convient.
  • 15. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Développement spécifique d’un module Les différents phase d’un ERP UnERPpossèdegénéralementtroisphasesdetravail:
  • 16. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Architecture modulaire sous odoo(openerp) •Tous les modules d’OpenERP sont créés au-dessous du répertoire openerp7/openerp/addons Développement spécifique d’un module
  • 17. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Architecture modulaire sous odoo •Structure standard d’un module sous odoo Développement spécifique d’un module
  • 18. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Structure d’un module Odoo •Les étapes suivantes sont nécessaires pour créer un nouveau module: •Créer un package python dans le répertoire /addonsportant le nom de votre module (required) •Créer un fichier de description du module: __openerp__.py (required) •Créer le fichier Python contenant les modèles (Classes + Méthodes) (required) •Créer des fichiers .XML pour définir les menus, les vues et les actions (required) •Créer des fichiers .XML qui téléchargent des données de démonstration •Créer éventuellement des rapports, des assistants (Wizard) ou des flux de travail (Workflow). Développement spécifique d’un module
  • 19. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Obligatoires __init__.py InitialisationdupackagePython __openerp__.py Lafichedescriptivedumodule module.py LesclassesPython,lesobjetsdumodule module_view.xml Lesvues(Formulaires,listes,graph,…),menusetactions Optionnels demo Donnéesdetestetdedémonstration i18n Fichiersdetraduction–Internationalisation report Définitiondesrapports security Déclarationdesgroupesetdesdroitsd’accès workflow Définitiondesworkflow wizard Définitiondesassistants Structure d’un module Odoo Développement spécifique d’un module
  • 20. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion __init__.py •C'est le fichier qui permet a OpenERPde charger notre module. Le contenu de ce fichier est très simple: importnom_module Développement spécifique d’un module Structure d’un module Odoo
  • 21. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion __openerp__.py •name:le nom de votre module; •version:la version du module; •category:la catégorie dans laquelle vous classez votre module; •sequence:c'est un nombre qui permet de définir l’ordre 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 complète du module; •depends:les dépendances 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. C'est OpenERPqui délivre les certificats qui qualifient votre module d'application; •auto_install:laissez à False, nous l'installerons à la main. Développement spécifique d’un module
  • 22. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion # -*-coding: utf-8 -*- { 'name' :"nom de module", 'author' : "auteur", 'version' :"0.1", 'description' :"description…", 'website' :"site web ou blog si il existe …", 'category' :"catégorie 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, } Exemple de fichier de description du module __openerp__.py (Squelette) Développement spécifique d’un module
  • 23. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Exercice 1 :Exemple de création de module •Créer un module vide formation_travaux •Créer les fichiers obligatoires __init__.py et __openerp__.py •Redémarrer le serveur •Installer le module à partir du menu •Configuration -> Modules -> Modules installés •Lancer l’installation du module on cliquant sur installé Développement spécifique d’un module
  • 24. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion # -*-coding: utf-8 -*- { 'name' :"Formation Gestion des travaux", 'author' : "Ait-Mlouk Addi", 'version' :"0.1", 'description' :"Module de gestiondes travauxsous odoo", 'website' :"www.aitmlouk.esy.es", 'category' :"Maintenance", 'summary' :"Travaux, Taches, Incidents", 'sequence' : 0, 'depends' : ['base'], 'update_xml' : [ #'travaux_view.xml', ], 'demo_xml' : [] 'installable': True, 'application': False, 'auto_install': False, } Réponse __openerp__.py Développement spécifique d’un module
  • 25. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Les classes Partie 2 Développement spécifique d’un module Les classes
  • 26. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion La couche Model •Le Framework Object Service(OSV) met en oeuvre une couche complète de MappingObjet Relationnel. •Il permet aux développeurs de mettre en place l’architecture SQL de base. •Les objets métier sont déclarés comme des classes Python qui héritent de la classe osv.osv, ce qui les rend une partie du modèle OpenObjectmodèle, et qui seront automatiquement persistés par la couche ORM. Développement spécifique d’un module Les classes
  • 27. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Les types des champs de l’ORM •Un objet peut avoir 3 types de champs •Simple: Integers, Floats, Date, Booleans, Char, Text, Binary… •Relationnel: Représente les relations entre les objets (one2many, many2one, many2many) •Fonctionnel : Des champs stocké ou non-stockés à la base de donnée, il sont calculés à la volé comme des fonctions Python Développement spécifique d’un module Les classes
  • 28. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Champs simple boolean(...),integer(...),date(...),datetime(...) time(...),float(…) Exemple : 'active': fields.boolean('Active'), 'priority': fields.integer('Priority'), 'start_date': fields.date('Start Date'), char(string,size,translate=False,..) text(string,size,translate=False,..) • translate: True sile champs peutêtretraduitpar l’utilisateur • size: la taillemaximum d’un champs caractère(→41,45) selection(values, string, ...) ‘status' :fields.selection([('open','Open'),('closed','Closed')],'Status', required=True, translate=True), binary(string, filters=None, ...) Un champs pour stocker des fichiers ou des images • filters: Filtresoptionnelssurle nom du fichier'picture':fields.binary('Picture',filters='*.png,*.gif') Champs relationnel many2one(obj, ondelete='set null', …) Relationversl’objetcourant • obj: Le nom _namede l’objet destination (requis) • ondelete: e.g. 'set null', 'cascade', Voir la documentation PostgreSQL one2many(obj, field_id, …) L’inverse de many2one • obj: Le nom _namede l’objet destination (requis) • field_id: field name of inverse many2one many2many(obj, rel, field1, field2, …) Relation bidirectionnelmultiple entre deuxclasses • obj: Le nom _namede l’objet destination (requis) • rel: Le nom SQL de la table associative (requis) • field1: Le nom du champs de l’objetactueldansla table associative (requis) • field2: Le nom du champs de l’objetdestination dansla table associative (requis) Développement spécifique d’un module Les classes
  • 29. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion La couche Model L’architecture d’une classe (Model) vide classclasse_name(osv.osv): _name= 'object.name' _description = u"objectdescription" _columns= { 'field1' : fields.char(u'Numéro', size=32, required=True), 'field2' : fields.many2one('object.name', u'Responsable', required=True), … } _defaults = { 'field': lambda self, cr, uid, context: '/', } Classe_name() # -*-coding: utf-8 -*- fromopenerp.osvimportfields, osv Les packages et el éléments nécessaires pour créer un model Développement spécifique d’un module Les classes
  • 30. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Exercice 2 : Exemple de création des classes •Créer un nouveau fichier travaux.py dans le module formation_travaux •Importer les packages du frameworkosv •Créer une classe formation_workdans le fichier travaux.py •Redémarrer le serveur •Mettre à jour le module à partir du menu •Configuration -> Modules -> Modules installés •Lancer la mise à jour du module on cliquant sur Mettre à jour •Ouvrer le gestionnaire PgAdminet vérifier dans votre base de données si la table formation_worka été bien créée. Développement spécifique d’un module Les classes
  • 31. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Réponse L’architecture d’une classe (Model) vide travaux.py classformation_work(osv.osv): _name= 'formation.work' _description = u"Thisis for managing works" _columns= { 'name' : fields.char(u'Numéro', 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) } _defaults = { 'name': lambda self, cr, uid, context: '/', } formation_work() # -*-coding: utf-8 -*- fromopenerp.osvimportfields, osv Les packages nécessaires pour créer un model Développement spécifique d’un module Les classes
  • 32. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Exercice 3 •Créer une nouvelle classe formation_work_linedans le fichier travaux.py •Ajouter des champs relationnelsdans les deux classes (formation_worket formation_work_line) pour représenter la relation suivante, formation_work name(char) responsable (many2one) user(many2one) line_ids(many2one) formation_work_line name(char) maintenance (one2many) description (text) * 1 many2one one2many Développement spécifique d’un module Les classes
  • 33. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Réponse 1 : L’architecture d’une classe formation_work travaux.py classformation_work(osv.osv): _name= 'formation.work' _description = u"Thisis for managing works" _columns= { 'name' : fields.char(u'Numéro', 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) } _defaults = { 'name': lambda self, cr, uid, context: '/', } formation_work() # -*-coding: utf-8 -*- fromopenerp.osvimportfields, osv Les packages nécessaires pour créer un model Développement spécifique d’un module Les classes
  • 34. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Réponse 2 : L’architecture d’une classe formation_work_line travaux.py classformation_work_line(osv.osv): _name= 'formation.work.line' _description = u"Thisis 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() # -*-coding: utf-8 -*- fromopenerp.osvimportfields, osv Les packages nécessaires pour créer un model Développement spécifique d’un module Les classes
  • 35. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion vues, actions et Menus Partie 2 Développement spécifique d’un module Vues, Actions et Menus
  • 36. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Structure des modules Odoo •Structure standard d’un module sous OpenERP Développement spécifique d’un module Vues, Actions et Menus
  • 37. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Les Vues •Déclaration générique d’une 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> •namenom de la vue (nomination séparée par des point) •modelmodèle d'objet sur lequel la vue est définie (comme res_modeldans les actions) •typeform, tree, graph, calendar, search, gantt, kanban •archarchitecture de la vue Développement spécifique d’un module Vues, Actions et Menus
  • 38. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion La vue Formulaire (Form) •Exemple de la vue formulaire Développement spécifique d’un module Vues, Actions et Menus
  • 39. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion La vue Formulaire (Form) •Déclaration XML <!--Formviewexample--> <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"> <formstring="Travaux"> <fieldname="name" /> <fieldname="responsable" /> <fieldname="user" /> <fieldname="line_ids" /> </form> </field> </record> Développement spécifique d’un module Vues, Actions et Menus
  • 40. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion La vue Formulaire (Form) •Déclaration XML ( API Version 7) <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"> <formstring="Tables" version="7.0"> <sheet> <h1> <label for="name" string="Numéro" /> <fieldname="name" /> </h1> <label for="user" string="Utilisateur" /> <fieldname="user" /> <fieldname="responsable" /> <fieldname="description" /> </sheet> </form> </field> </record> Développement spécifique d’un module Vues, Actions et Menus
  • 41. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion La vue Formulaire (Form) •Les attributs communs à tous les éléments : • string: label de l'élément ; • 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 élément doit allouer à ses éléments enfants ; • invisible: mettre à 1 pour cacher cet élément complètement ; Développement spécifique d’un module Vues, Actions et Menus
  • 42. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion La vue Formulaire (Form) •Déclaration XML (Sheet, h1+ Group+ Notebook) Développement spécifique d’un module Vues, Actions et Menus
  • 43. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion La vue Liste (Tree) •Exemple de la vue liste (Tree) Développement spécifique d’un module Vues, Actions et Menus
  • 44. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion La vue Liste (Tree) •Déclaration XML <!--Treeviewexample--> <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"> <treestring="Travaux"> <fieldname="name" /> <fieldname="user" /> <fieldname="responsable" /> <fieldname="description" /> </tree> </field> </record> Développement spécifique d’un module Vues, Actions et Menus
  • 45. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion La vue Liste (Tree) •Déclaration XML Développement spécifique d’un module Vues, Actions et Menus
  • 46. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion La vue Kanban (Vignette) •Cette vue représente les données sous forme de colonnes / petite vignette regroupées par un critère. •Les vue Kanban sont personnalisable avec des balises HTML ou QWeb • Qweb: Un langage de Template HTML développé par OpenERPqui permet de définir une structure portable des composantes HTML. Développement spécifique d’un module Vues, Actions et Menus
  • 47. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion 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><fieldname="description"/></strong></li> </ul> </div> </div> </t> </templates> </kanban> </field> </record> Développement spécifique d’un module Vues, Actions et Menus
  • 48. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion La vue Kanban (Colonnes) Développement spécifique d’un module Vues, Actions et Menus
  • 49. Menus et actions •Les menus principales permette à l’utilisateur d’accéder au module •Chaque module est dispose d’un menu principale et d’autres sous menus •Les menus et leurs actions sont déclarés à l’intérieur d’un fichier xml: ( travaux_view.xml) Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Développement spécifique d’un module Vues, Actions et Menus
  • 50. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Menus et actions Menu sans action Menu 1 avec action Menu principal Menu 2 avec action Développement spécifique d’un module Vues, Actions et Menus
  • 51. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion •Structure de la vue travaux_view.xmlvide <?xml version="1.0" encoding="UTF-8"?> <openerp> <data> [views definitions] [actions definitions] [menus definitions] </data> </openerp> Développement spécifique d’un module Vues, Actions et Menus Actions et menus Pour les bonnes pratique il est préférer de séparer les menus dans un fichier xml(menu_views.xml) a fin de facilité la maintenance.
  • 52. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Actions •La déclaration XML d’une actionest la suivante •model: la table (base de données) pour stocker des actions •id: Identifiantde l’actiondansla table ir.action.act_windows, ildoitêtreunique •name: Le nom de l’action (requis) •res_model: Le model (classe python) objet de la vue (requis) •view_mode: La liste des modes alloués pour visualiser les enregistrements <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> Développement spécifique d’un module Vues, Actions et Menus
  • 53. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Menus •La déclaration XML d’un menu principal, niveau 1 •La déclaration d’un menu niveau 1.1 (Sans action = non cliquable) •La déclaration d’un menu niveau 1.1.1 (menu cliquable avec action) •REMARQUE: Avant d’utiliser les menus cliquables, il faut définir l’action action="[ACTION_ID]" qui va être déclenchée. <menuitemid="work_menu_root"name="Traveaux" /> <menuitemid="work_menu" parent="work_menu_root" name="Traveaux" /> <menuitemid="works_work_menu" parent="work_menu" name="Traveaux" action="[ACTION_ID]" /> Développement spécifique d’un module Vues, Actions et Menus
  • 54. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Exercice 3 (Création des menus) Travaux Travaux Tache Travauxformation.work.lineformation.work Développement spécifique d’un module Vues, Actions et Menus
  • 55. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Réponse : Développement spécifique d’un module Vues, Actions et Menus <menuitemid="work_menu_root"name="Traveaux" /> <menuitemid="work_menu" parent="work_menu_root" name="Traveaux" /> <menuitemid="works_work_menu" parent="work_menu" name="Traveaux" action="[ACTION_ID]" /> <menuitemid="works_task_menu" parent="work_menu" name="Tache" action="[ACTION_ID_TASK]" />
  • 56. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Sécurité Partie 3 Développement spécifique d’un module Sécurité
  • 57. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Sécurité •LesutilisateursetlesrôlessontdespointscritiquesenmatièredesécuritéinternedansOpenERP. •OpenERPproposeplusieursconceptsdesécuritéconcernantlesrôlesdesutilisateurs: •Utilisateur:unepersonneidentifiéeparsonloginetmotdepasse.Notezquetouslesemployésd'uneentreprisenesontpasnécessairementlesutilisateursOpenERP,unutilisateurestunepersonnequiaccèdeàl'application. •Groupe:ungrouped'utilisateursquiadesdroitsd'accès.Ungroupedonnesesdroitsd'accèsàsesutilisateurs.Ex:responsabledesventes,comptable,etc •Règlesde sécurité: une règle qui définit les droits d'accès d'un groupe donné. Les règles de sécurité sont fixées à une ressource donnée, par exemple le modèle de facturation. Développement spécifique d’un module Sécurité
  • 58. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Groupes •Lacréationdesgroupespeutsefaired’unemanièregraphique(Configuration-> Utilisateurs->Groupes)ouavecdesfichiersdedonnéesXML Développement spécifique d’un module Sécurité Méthode graphique
  • 59. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion •ExempledefichierXMLdegroups <?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">userofrestaurant</field> <field name="implied_ids" eval="[(4, ref('base.group_user'))]"/> </record> </data> </openerp> Développement spécifique d’un module Sécurité Groupes
  • 60. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Les états de sortie report Développement spécifique d’un moduleétats de sortie
  • 61. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Développement spécifique d’un moduleinternationalisation •Odoo(Openerp)possèdedeuxtypesderapport: •Rapportsetstatistiques:cesontdesdonnéescalculées,souventreprésentéssouslaformegraphiques. •Etatdesortie:ilssontutiliséspourimprimerdesdocumentsdusystème.LerésultatestgénéralementunPDFgénéréparunesélectioneffectuéesurl'écran.Enoutre,OpenERPvouspermetd'ouvrircesrapportsdansOpenOffice.org. reports
  • 62. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Développement spécifique d’un moduleinternationalisation •Pourlareprésentationdesmenusd’impressionondéfinieunfichierxmlcommesuite: <?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> </openerp>
  • 63. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Développement spécifique d’un moduleinternationalisation •Leparseur importtimefromopenerp.reportimportreport_sxw classmadrassa_travaux(report_sxw.rml_parse): def__init__(self, cr, uid, name, context=None): super(madrassa_travaux, self).__init__(cr, uid, name, context=context) self.line_no= 0 self.localcontext.update({ 'time': time, 'line_no':self._line_no, }) report_sxw.report_sxw('report.formation.work', 'formation.work', 'addons/formation_travaux/report/travaux.rml', parser=madrassa_travaux, header="external")
  • 64. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Internationalisation i18n Développement spécifique d’un moduleinternationalisation
  • 65. Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Exercice 5 (Internationalisation) •Exporter la Template de traduction du module formation_travaux •Configuration -> Importer / Exporter -> Exporter une traduction •Sélectionner le module formation_travaux •Cliquer sur Exporter •Télécharger le fichier formation_travaux.po •Créer un sous répertoire i18n à l’intérieur le dossier du module •Coller le fichier formation_travaux.podedans •Créer une copie du fichier avec le nom fr.po •Ouvrer l’éditeur Poeditet traduire les messages du fichier fr.poen français •Enregistrer et redémarrer le serveur, puis lancer un mise à jour du module. •Si la base de données est installée en français, le module va prendre en considération le fichier fr.po Développement spécifique d’un moduleinternationalisation
  • 66. Paramétrage et développement spécifique des modules odoo(OpenERP) Réalisé par : Ait-Mlouk Addi Blog : http://aitmlouk-addi.blogspot.com Site web : http://www.odoo-services.esy.es/ aitmlouk@gmail.com Laboratoire ETRI
  • 67. Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1 Réalisé par : Ait-Mlouk Addi Site web : http://www.odoo-services.esy.es/ Blog : http://aitmlouk-addi.blogspot.com Twiter: https://twitter.com/aitmlouk Facebook: https://www.facebook.com/iminoika Viadeo: http://ma.viadeo.com/fr/profile/addi.mlk Linkedin: https://www.linkedin.com/pub/addi-ait-mlouk/56/850/32a Youtube: https://www.youtube.com/user/mloukaddi/videos Github: https://github.com/aitmlouk Slidshare: http://fr.slideshare.net/mloukaddi/ aitmlouk@gmail.com Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion Conclusion Laboratoire ETRI