paramétrage et développement spécifique des modules odoo(openerp) partie 1

67
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 [email protected]

Upload: ait-mlouk-addi

Post on 09-Jul-2015

7.909 views

Category:

Software


2 download

DESCRIPTION

Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1 •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

TRANSCRIPT

Page 1: Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 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.comSite web : http://www.odoo-services.esy.es/Laboratoire ETRI

[email protected]

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

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)

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

• 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

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

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

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

• 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

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

• 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

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Prise en main et paramétrage d’OpenERP

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Prise en main et paramétrage d’OpenERP

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

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 odoo on 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

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

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 :

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

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 :

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

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 :

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

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 -> Apropos de l’OpenERP

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

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.

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

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

Un ERP possède généralement trois phases de travail :

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

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

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

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

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

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 /addons portant 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

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Obligatoires

__init__.py Initialisation du package Python

__openerp__.py La fiche descriptive du module

module.py Les classes Python, les objets du module

module_view.xml Les vues (Formulaires, listes, graph,…), menus et actions

Optionnels

demo Données de test et de démonstration

i18n Fichiers de traduction – Internationalisation

report Définition des rapports

security Déclaration des groupes et des droits d’accès

workflow Définition des workflow

wizard Définition des assistants

Structure d’un module Odoo

Développement spécifique d’un module

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

__init__.py

• C'est le fichier qui permet a OpenERP de charger notre module.Le contenu de ce fichier est très simple :

import nom_module

Développement spécifique d’un module

Structure d’un module Odoo

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

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 OpenERP qui 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

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

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

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

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

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

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 gestion des travaux sous 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

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Les classesPartie 2

Développement spécifique d’un moduleLes classes

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

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 œuvre une couche complète de Mapping Objet 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 OpenObject modèle, et qui seront automatiquement persistés par la couche ORM.

Développement spécifique d’un moduleLes classes

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

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 moduleLes classes

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Ch

amp

s simp

le

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 si le champs peut être traduit par l’utilisateur• size: la taille maximum 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: Filtres optionnels sur le nom du fichier'picture':fields.binary('Picture',filters='*.png,*.gif')

Ch

amp

s relation

nel

many2one(obj, ondelete='set null', …)Relation vers l’objet courant

• obj: Le nom _name de 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 _name de l’objet destination (requis)• field_id: field name of inverse many2one

many2many(obj, rel, field1, field2, …)Relation bidirectionnel multiple entre deux classes

• obj: Le nom _name de l’objet destination (requis)• rel: Le nom SQL de la table associative (requis)• field1: Le nom du champs de l’objet actuel dans la table associative (requis)• field2: Le nom du champs de l’objet destination dans la table associative (requis)

Développement spécifique d’un moduleLes classes

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

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

class classe_name(osv.osv):_name = 'object.name'_description = u"object description"_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 -*-from openerp.osv import fields, osv

Les packages et el éléments nécessaires pour créer un model

Développement spécifique d’un moduleLes classes

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

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 framework osv

• Créer une classe formation_work dans 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 PgAdmin et vérifier dans votre base de données si la table formation_work a été bien créée.

Développement spécifique d’un moduleLes classes

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

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

class formation_work(osv.osv):_name = 'formation.work'_description = u"This is 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 -*-from openerp.osv import fields, osv

Les packages nécessaires pour créer un model

Développement spécifique d’un moduleLes classes

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Exercice 3

• Créer 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 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 moduleLes classes

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

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

class formation_work(osv.osv):_name = 'formation.work'_description = u"This is 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 -*-from openerp.osv import fields, osv

Les packages nécessaires pour créer un model

Développement spécifique d’un moduleLes classes

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

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

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()

# -*- coding: utf-8 -*-from openerp.osv import fields, osv

Les packages nécessaires pour créer un model

Développement spécifique d’un moduleLes classes

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

vues, actions et MenusPartie 2

Développement spécifique d’un moduleVues, Actions et Menus

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

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 moduleVues, Actions et Menus

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

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>

• name nom de la vue (nomination séparée par des point)

• model modèle d'objet sur lequel la vue est définie (comme res_model dans les actions)

• type form, tree, graph, calendar, search, gantt, kanban

• arch architecture de la vue

Développement spécifique d’un moduleVues, Actions et Menus

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

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 moduleVues, Actions et Menus

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

La vue Formulaire (Form)

• Déclaration 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>

Développement spécifique d’un moduleVues, Actions et Menus

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

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">

<form string="Tables" version="7.0"><sheet>

<h1><label for="name" string="Numéro" /><field name="name" />

</h1><label for="user" string="Utilisateur" /><field name="user" /><field name="responsable" /><field name="description" />

</sheet></form>

</field></record>

Développement spécifique d’un moduleVues, Actions et Menus

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

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 moduleVues, Actions et Menus

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

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 moduleVues, Actions et Menus

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

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 moduleVues, Actions et Menus

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

La vue Liste (Tree)

• Déclaration 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>

Développement spécifique d’un moduleVues, Actions et Menus

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

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 moduleVues, Actions et Menus

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

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 OpenERP qui permet de définir une structure portable

des composantes HTML.

Développement spécifique d’un moduleVues, Actions et Menus

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

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><field name="description"/></strong></li> </ul>

</div></div>

</t></templates>

</kanban></field>

</record>

Développement spécifique d’un moduleVues, Actions et Menus

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

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 moduleVues, Actions et Menus

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

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 moduleVues, Actions et Menus

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

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 moduleVues, Actions et Menus

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

• 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>

Développement spécifique d’un moduleVues, Actions et Menus

Actions et menus

Pour les bonnes pratique il est préférer de séparer les menus dansun fichier xml (menu_views.xml) a fin de facilité la maintenance.

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Actions

• La déclaration XML d’une action est la suivante

• model : la table (base de données) pour stocker des actions

• id : Identifiant de l’action dans la table ir.action.act_windows, il doit être unique

• 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 moduleVues, Actions et Menus

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

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.

<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]" />

Développement spécifique d’un moduleVues, Actions et Menus

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Exercice 3 (Création des menus)

Travaux

Travaux

Tache

Travaux

formation.work.line

formation.work

Développement spécifique d’un moduleVues, Actions et Menus

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Réponse :

Développement spécifique d’un moduleVues, Actions et Menus

<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]" />

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

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 moduleSécurité

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Sécurité

• Les utilisateurs et les rôles sont des points critiques en matière de sécurité interne dansOpenERP.

• OpenERP propose plusieurs concepts de sécurité concernant les rôles des utilisateurs :

• Utilisateur: une personne identifiée par son login et mot de passe. Notez que tous lesemployés d'une entreprise ne sont pas nécessairement les utilisateurs OpenERP, unutilisateur est une personne qui accède à l'application.

• Groupe: un groupe d'utilisateurs qui a des droits d'accès. Un groupe donne ses droitsd'accès à ses utilisateurs. Ex: responsable des ventes, comptable, etc

• Règles de 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 moduleSécurité

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Groupes

• La création des groupes peut se faire d’une manière graphique (Configuration ->Utilisateurs -> Groupes) ou avec des fichiers de données XML

Développement spécifique d’un moduleSécurité

Méthode graphique

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

• 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>

Développement spécifique d’un moduleSécurité

Groupes

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Les états de sortiereport

Développement spécifique d’un moduleétats de sortie

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

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ède deux types de rapport:

• Rapports et statistiques: ce sont des données calculées, souvent représentés sous la forme

graphiques.

• Etat de sortie: ils sont utilisés pour imprimer des documents du système. Le résultat est

généralement un PDF généré par une sélection effectuée sur l'écran. En outre, OpenERP

vous permet d'ouvrir ces rapports dans OpenOffice.org.

reports

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Développement spécifique d’un moduleinternationalisation

• Pour la représentation des menus d’impression on définie 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></openerp>

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Développement spécifique d’un moduleinternationalisation

• Le parseur

import timefrom openerp.report import report_sxwclass madrassa_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")

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

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Internationalisationi18n

Développement spécifique d’un moduleinternationalisation

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

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.po dedans

• Créer une copie du fichier avec le nom fr.po

• Ouvrer l’éditeur Poedit et traduire les messages du fichier fr.po en 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

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

Paramétrage et développement spécifique

des modules odoo (OpenERP)

Réalisé par : Ait-Mlouk Addi

Blog : http://aitmlouk-addi.blogspot.comSite web : http://www.odoo-services.esy.es/

[email protected]

Laboratoire ETRI

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

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/

[email protected]

Prise en main complet d’odoo Configuration complète Module personnalisé Module spécifique Conclusion

Conclusion

Laboratoire ETRI