2. Le langage Python :
◦ C’est quoi python ?
◦ Utilisateurs du python
◦ Caractéristiques du python
◦ Que peut-on faire avec python ?
L’ERP Odoo :
◦ Introduction
◦ Architecture d’odoo
◦ Structure d’un module
◦ Outils de développement des modules Odoo
◦ Exemples d’utilisation de Python dans Odoo
◦ Les différents vues de Odoo
◦ Qweb reports
◦ Les workflows
19/11/2015 2
4. Il est un langage et une plateforme de développement
logiciel complète et généraliste,
Il permet une approche modulaire et orientée objet de la
programmation.
Il est développé depuis 1989 par Guido van Rossum.
19/11/2015 4
5. Des développeurs web professionnels,
Des chercheurs en intelligence artificielle ou en bioinformatique,
Des administrateurs systèmes,
Des programmeurs occasionnels.
19/11/2015 5
6. Multiplateforme
Ouvert et libre
Sa syntaxe est très simple et combinée à des types de données
évolués
19/11/2015 6
8. Deux manières de coder en Python:
◦ Ecrire des fichiers de code source (dont l'extension est .py), puis les
exécuter
◦ Exécuter instruction par instruction avec l’interpréteur de commande de
Python
19/11/2015 8
9. Services fournis en standard
◦ Intégration directe de tous les types et les services de base (les chaînes de
caractères, les types numériques, la gestion des erreurs, la gestion des
fichiers, …)
◦ Intégration des structures de haut niveau (listes, les ensembles, les
tableaux, …)
◦ Présence de nombreux modules spécialisés (math, datetime, sqlite3, …)
19/11/2015 9
10. Accès aux bases de données
◦ Les pilotes des BD suivent une spécification commune BD-API
◦ Même code pour accéder aux base de données et lancer une requête
19/11/2015 10
11. Sites et applications web
◦ Serveurs web : Apache, Nginx , IIS
◦ Interface CGI : permet d’exécuter des programmes en Python sur un
serveur HTTP.
◦ Frameworks de développement web : Django, Karrigell, Cherrypy
19/11/2015 11
12. Gestion de contenu (CMS) :
◦ Utilisation : près de quinze ans
◦ Industrialisé
◦ Supporté par une importante communauté
internationale
◦ Très grand nombre de modules d'extension
19/11/2015 12
13. Gestion d’Entreprise (ERP) :
◦ ERP5
◦ Odoo:
Fonctionnement en mode web
Construire rapidement un site web, boutique e-commerce,
blog, …
Basé sur le Framework OpenObject
19/11/2015 13
14. Calcul scientifique : NumPy, SciPy, …
Interfaces graphiques : TkInter
Traitement du son et la synthèse vocale : eSpeak
Traitement d'image : PIL
19/11/2015 14
17. Odoo, Progiciel de Gestion Intégrée, est une suite
moderne d'Applications Métiers; publiée sous la licence
AGPL; il permet l’administration et la gestion des
principaux services de l’entreprise : gestion des achats,
ventes, stocks, ressources humaines, comptabilité…, et
plus encore.
19/11/2015 17
18. Odoo est basé sur une architecture client/serveur :
On trouve 3 couches:
◦ 1- Couche présentation (interface utilisateur),
◦ 2- Couche métier (business ou aussi fonctionnelle) responsable
de la mise en œuvre de l’ensemble des règles de gestion et de la
logique applicative
◦ 3- Couche d’accès aux données
Alors avec cette approche tous les développements sont
réalisés sur le côté serveur.
19/11/2015 18
19. Odoo utilise le système de gestion de base de données
relationnelles PostgreSQL pour l’enregistrement de ses
données
Odoo utilise le langage de balisage XML pour :
◦ La description des données,
◦ La description des interfaces ( les vues ),
◦ La description des rapports.
Le langage de programmation d’ Odoo est le langage Python :
◦ Langage de programmation interprété
◦ Langage de programmation orienté objet
19/11/2015 19
20. Odoo possède une structure modulaire qui permet d’ajouter
de nouveaux modules facilement pour étendre les
fonctionnalités
Pour créer un nouveau module, il y a quelques étapes à
suivre:
◦ Créer un sous répertoire dans le répertoire ‘Odoo
8serveropenerpaddons’ avec comme nom le nom du module
qu’on veut créer,
◦ Créer un fichier d’initialisation ‘__init__.py’ : ce fichier est
exécuté au lancement du serveur Odoo pour lui indiquer les
fichiers python à charger
19/11/2015 20
21. Créer un fichier de description ‘__openerp__.py’:
ce fichier contient toutes les informations sur le module : son
nom, son nom technique, sa version, une description de l’utilité
du module, la dépendance : si le module utilisent des
informations issues des autres modules; il faut les installer eux
aussi …
Créer un fichier Python pour définir les objets métiers
Créer les fichiers XML pour définir les interfaces, les données
de démonstration, et la description des menus
19/11/2015 21
22. Pour développer des modules Odoo, il existe plusieurs
environnements de développement pour faire ce travail:
ERIC IDE: c’est un environnement de développement écrit en
Python, mais il a de très sérieux inconvénients, l’interface est
très complexe, et il y a très peu de documentation
Komodo IDE : cet IDE fournit une excellente répartition de
Python, mais c’est très chère de payer 300euro pour un IDE
19/11/2015 22
23. Pycharm: il a vraiment tout comme IDE;
Code évidence, l’indentation automatique qui fonctionne bien,
meilleur python auto-complétion, détection d’erreur sur la volé,
suggestions automatiques de correction d’erreurs … et bien plus
Il est disponible en deux version: une édition de la communauté
(gratuite), et une édition professionnelle dont le prix varie entre
29 et 199euro
19/11/2015 23
24. Eclipse et Pydev : ils font un assez bon IDE dans l’ensemble, la
navigation dans le code est bien faite et efficace, l’auto-
indentation fonctionne à merveille, l’auto-complétion
fonctionne bien et fait d'excellentes suggestions
Comparaison et résumé :
Si vous voulez un IDE gratuit qui fonctionne bien, utilisez Eclipse
et Pydev, si vous êtes prêts à payer de l’argent, utilisez pycharm
c’est un exellent IDE.
19/11/2015 24
25. Selon le besoin, on pourrait soit modifier et ajouter des
ajustements sur les modules déjà existants, soit créer des
nouveaux modules
19/11/2015 25
26. Exemple 1 :
Par exemple un client qui implémente déjà son système
d’information sous l’ERP Odoo et il voudrait pouvoir mettre dans
l’horaire du travail une durée de tolérance du retard, le
minimum des heures supplémentaires, et quand commencent
ces heures, la durée de la pause et une case à cocher Free Day …
tout ça parce que ça va aider dans le calcul des bulletins de paie
Alors que dans le standard de Odoo, quand on veut créer un
horaire de travail, on ne trouve pas ce qu’il demande.
19/11/2015 26
28. Exemple 1 :
On pourrait accéder au fichier XML de la vue et ajouter les
champs nécessaires, et modifier le fichier python pour ajouter
le traitement qui doit se faire derrière ces champs ajoutés
On pourrait avoir un horaire de travail personnalisé comme
celui ci-dessous :
19/11/2015 28
30. Exemple 2:
Supposons qu’un client voudrait, lors de la création des
départements, définir un compte analytique et un horaire de
travail pour chacun de ceux-ci
Dans le module « ressources humaines » de Odoo, on trouve le
menu « département » comme suit :
19/11/2015 30
32. En faisant un développement dans les fichiers python et XML on
pourrait avoir un menu personnalisé comme celui là :
19/11/2015 32
33. Supposons qu’un client, dans le menu de création de bulletin de
paie, il veut voir le solde de congé de l’employé, et son numéro de
compte bancaire, et pouvoir ajouter le nombre d’heures
supplémentaires travaillées, et les congés pris, dans la rubrique
« Jours travaillés », pour le calcul du bulletin de paie
Voila le menu de création de bulletin de paie dans Odoo:
19/11/2015 33
35. Voila un menu qu’on pourrait faire en développement Python
et XML:
19/11/2015 35
36. Plusieurs modes de visualisation des résultats peuvent être
affichés en fonction du module sélectionné. on les retrouve
en haut à droite :
◦ Vue Kanban
◦ Vue Liste
◦ Vue Formulaire
◦ Vue Calendrier
19/11/2015 36
41. Les rapports dans Odoo v8 sont rédigés en Qweb : c’est un
langage de templates XML, il est utilisé pour la génération
des fragments de pages en HTML ou en PDF.
En utilisant le Qweb, on peut soit modifier les rapports déjà
existants ou bien créer des nouveaux rapports
Exemple :
À titre d’exemple, j’ai essayé de customiser le rapport des
factures clients
19/11/2015 41
42. Voila le menu pour la création des factures clients:
19/11/2015 42
43. Et voila le rapport généré en format PDF:
19/11/2015 43
44. Supposons qu’un client veut pouvoir récupérer le compte aussi
dans les factures:
19/11/2015 44
45. En faisant quelques développement et modifications, j’ai ajouté
un rapport test qui va pouvoir gérer cet exigence:
19/11/2015 45
46. Et voila le nouveau rapport PDF avec le champ compte ajouté:
19/11/2015 46
47. un workflow est un artefact technique pour gérer un
ensemble de «choses à faire» associés aux
enregistrements d'un modèle
Plus précisément, un workflow est un graphe orienté
dont les nœuds sont appelés «activités» et les arcs sont
appelés «transitions »:
◦ Activités définissent le travail qui devrait être fait dans le serveur
Odoo, comme le changement de l'état de certains dossiers, ou
l'envoi de courriels.
◦ Transitions contrôlent la façon dont le flux de travail progresse
d'une activité à une autre
19/11/2015 47
C’est la partie visible et interactive avec l’utilisateur
C’est le serveur Odoo, qui se charge de faire des calculs et des traitements en fonction des requêtes des utilisateurs
La couche d’accès aux données, c’est la partie qui gère l’accès aux données du système, sur Odoo elles sont gérées par le SGBD postgresql
ERP est constitué d’un ensemble de modules qui fonctionnent les uns avec les autres, cela est possible grace à l’utilisatio d’une base d’information unique