Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1 
Réalisé par : Ait-Mlouk Addi 
Blog : http://ai...
Plan 
Prise en main 
Configuration et paramétrage 
Modules personnalisé 
Introduction 
Conclusion 
Développement spécifiqu...
•Prise en main complet d’odoo 
•Configuration complète 
•Caractéristiques techniques complète 
•Savoir crée un module pers...
Configuration OdooPartie 1: Prise en main 
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Modu...
•Démarrer le serveur 
•Créer une nouvelle base de données formation, mot de passe admin 
•Se connecter à la nouvelle base ...
•Activer les menus de la configuration avancée : 
•Configuration -> Utilisateurs -> Modifier l’utilisateur -> Onglet droit...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Prise en main et...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Développement sp...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Architecture mod...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Architecture mod...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Structure d’un m...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Obligatoires 
__...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
__init__.py 
•C'...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
__openerp__.py 
...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
# -*-coding: utf...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Exercice 1 :Exem...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
# -*-coding: utf...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Les classes 
Par...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La couche Model ...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Les types des ch...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Champs simple 
b...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La couche Model ...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Exercice 2 : Exe...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Réponse 
L’archi...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Exercice 3 
•Cré...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Réponse 1 : 
L’a...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Réponse 2 : 
L’a...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
vues, actions et...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Structure des mo...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Les Vues 
•Décla...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Formulair...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Formulair...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Formulair...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Formulair...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Formulair...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Liste (Tr...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Liste (Tr...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Liste (Tr...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Kanban (V...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Kanban (V...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
La vue Kanban (C...
Menus et actions 
•Les menus principales permette à l’utilisateur d’accéder au module 
•Chaque module est dispose d’un men...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Menus et actions...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
•Structure de la...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Actions 
•La déc...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Menus 
•La décla...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Exercice 3 (Créa...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Réponse : 
Dével...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Sécurité 
Partie...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Sécurité 
•Lesut...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Groupes 
•Lacréa...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
•Exempledefichie...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Les états de sor...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Développement sp...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Développement sp...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Développement sp...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Internationalisa...
Prise en main complet d’odoo 
Configuration complète 
Module personnalisé 
Module spécifique 
Conclusion 
Exercice 5 (Inte...
Paramétrage et développement spécifique des modules odoo(OpenERP) 
Réalisé par : Ait-Mlouk Addi 
Blog : http://aitmlouk-ad...
Paramétrage et développement spécifique des modules odoo(OpenERP) Partie 1 
Réalisé par : Ait-Mlouk Addi 
Site web : http:...
Prochain SlideShare
Chargement dans…5
×

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

26 242 vues

Publié le

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

Publié dans : Logiciels
3 commentaires
22 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
26 242
Sur SlideShare
0
Issues des intégrations
0
Intégrations
68
Actions
Partages
0
Téléchargements
2 818
Commentaires
3
J’aime
22
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

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

×