odoo découverte technique - perso.liris.cnrs.fr · présentation et construction des éléments de...

36
ODOO – Découverte Technique Découverte Technico – Fonctionnelle d’Odoo

Upload: vanthien

Post on 10-Sep-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

ODOO – Découverte Technique

Découverte Technico – Fonctionnelle d’Odoo

Page 2: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Sommaire du cours

Découverte du framework et de l'ORM : Champs, modèles, relations entre

objets

Méthodes associées, héritage des modèles

Présentation et construction des éléments de l'interface : Les différentes vues

Les actions et menus

Les assistants (wizards)

Approche rapide sur les droits des objets

Création d'un module

Page 3: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

ERP : Enterprise Ressource Plannning

PGI : Programme de Gestion Intégrée

Workflow : Flux de travail

Page 4: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Découverte du framework et de l'ORM :

Champs, modèles, relations entre objets

Méthodes associées, héritage des modèles

.

Page 5: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Présentation et construction des éléments de l'interface :

Les différentes vues Vu lors du cours et TP Prise en main Odoo

Les actions et menus Les actions définissent le comportement du système en réponse aux actions de

l'utilisateur: login, bouton d'action, sélection d'une facture, ...

Les actions peuvent être stockées dans la base de données ou renvoyées

directement en tant que dictionnaires, par ex. méthodes de bouton. Toutes les

actions partagent deux attributs obligatoires:

type

la catégorie de l'action en cours, détermine quels champs peuvent être utilisés et

comment l'action est interprétée

nom

une courte description lisible par l'utilisateur de l'action, peut être affichée dans

l'interface du client

Page 6: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Présentation et construction des éléments de l'interface (suite) :

Les actions et menus (suite) 5 types d’actions :

Windows actions (ir.actions.act_windows)Type d'action le plus courant, utilisé pour présenter les visualisations d'un modèle à travers des vues: une action de fenêtre définit un ensemble de types de vue (et éventuellement de vues spécifiques) pour un modèle (et éventuellement un enregistrement spécifique du modèle).

Url actions (ir.actions.act_url)Autoriser l'ouverture d'une URL (site web / page web) via une action Odoo. Peut être personnalisé via deux champs : url et target

Server actions (ir.actions.server)Autoriser le déclenchement du code de serveur complexe à partir de n'importe quel emplacement d'action valide.

Report actions (ir.actions.report.xml)Déclenche l'impression d'un rapport

Client actions (ir.actions.client)Déclenche une action implémentée dans le client Odoo

.

Page 7: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Présentation et construction des éléments de l'interface (suite) :

Les assistants (wizards) Les assistants décrivent des sessions interactives avec l'utilisateur (ou des boîtes de

dialogue) via des formulaires dynamiques. Un assistant est simplement un modèle qui

étend la classe TransientModel au lieu de Model. La classe TransientModel étend Modèle

et réutilise tous ses mécanismes existants, avec les particularités suivantes:

Les enregistrements d'assistant ne sont pas destinés à être persistants. ils sont automatiquement

supprimés de la base de données après un certain temps. C'est pourquoi ils sont appelés

transitoires.

Les modèles d'assistant ne nécessitent pas de droits d'accès explicites: les utilisateurs disposent

de toutes les autorisations sur les enregistrements de l'assistant.

Les enregistrements d'assistant peuvent faire référence à des enregistrements réguliers ou à des

enregistrements d'assistant via des champs many2one, mais les enregistrements réguliers ne

peuvent pas faire référence aux enregistrements d'assistant via un champ many2one

.

Page 8: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

• La gestion des droits d'accès applicatifs aux modules Odoo repose sur : • les groupes

• les ACL (Access Control List)

• Un "groupe" (objet "res.groups") caractérise une typologie d'utilisation d'un ou plusieurs modules (ex: utilisateur simple de vente, responsable des ventes).

• Un utilisateur est affecté à un ou plusieurs groupes lors de sa création ou de sa modification.

• Une ACL définit les droits d'accès d'un groupe sur (en général) un objet Odoo.

• Groupe Un groupe est déclaré dans un fichier xml "<nom module>_security.xml" présent sous le répertoire "security" du module.

.

Page 9: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

• Une ACL définit les droits d'accès au format "CRUD" (lecture, création, modification, suppression) d'un groupe sur un objet Odoo.

• Si l'information "groupe" n'est pas renseignée dans l'ACL, c'est que l'objet est accessible à tous (sauf droits restrictifs sur menus et actions).

• Une ACL peut adresser aussi une vue PostgreSQL (cas des rapports).

• Les ACL d'un module sont déclarées dans un fichier nommé "ir.model.access.csv" présent dans le répertoire "security" du module.

Ci-dessous un exemple d'ACL (exemple de l'appli YD vue précédemment) :

.

Page 10: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Composition d'un module

Un module Odoo peut contenir un certain nombre d'éléments:

Objets métierdéclarées en tant que classes Python, ces ressources sont

automatiquement conservées par Odoo en fonction de leur configuration

Fichiers de donnéesFichiers XML ou CSV déclarant des métadonnées (vues ou flux de

travail), des données de configuration (paramétrage de modules), des données de démonstration et plus

Contrôleurs WebGérer les demandes des navigateurs Web

Données Web statiquesImages, CSS ou fichiers javascript utilisés par l'interface web ou le

site web.

Page 11: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Structure d’un module

Chaque module est un dossier inclus dans un des

répertoires des modules complémentaires. Les

répertoires de modules complémentaires sont spécifiés

en utilisant l'option --addons-path.

Généralement les dossiers suivants sont utilisés :

dev-addons : contient les développements spécifiques

extra-addons : contient les modules de la communauté

Page 12: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Structure d’un module (suite) Il est préférable (et + propre) de créer des sous dossiers pour chaque type de fichier

Un module Odoo est déclaré grâce à son fichier « manifest » : __manifest__.py

Le fichier « manifest » contient des informations relatives à votre module telles que :

son nom,

sa version

ses dépendances

son auteur

ses données: fichier XML, csv, CSS, JS…

Page 13: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Exemple de __manifest__.py

Page 14: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Structure d’un module (suite)

Un module contient un fichier principal __init__.py qui se

charge d'importer les différents fichiers python du module. Il

permet ainsi de déclarer les .py ou les sous dossiers qui eux-

mêmes contiennent un fichier __init__.py déclarant l’import

des fichiers python.

from . import controllers

from . import models

Odoo fournit une commande qui génère la structure de base

d'un module (scaffolding):

Odoo.py scaffold "nom du module" "chemin où est stocké le module"

Page 15: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Cette commande vous crée un répertoire avec la structure

suivante :

Un fichier non obligatoire mais important doit être créé : le

readme.rst qui décrit les fonctionnalités du module.

Page 16: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Fichiers pythons

Ils permettent de déclarer de nouveaux modèles ou d’enrichir des modèles existants. Ils décrivent des objets métier, tels qu'une opportunité, une commande client ou un partenaire (client, fournisseur, etc.). Un modèle a une liste d'attributs et peut également définir des fonctions spécifiques.

Les modèles sont implémentés à l'aide d'une classe Python dérivée d'une classe de modèle Odoo. Ils traduisent directement vers des objets de base de données, et Odoo s'en charge automatiquement lors de l'installation ou de la mise à niveau du module. Le mécanisme responsable est le modèle relationnel objet (ORM).

Il est recommandé de créer un fichier python par modèle pour une lecture et une maintenance plus rapide

Page 17: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Fichiers pythons

Un mot clé à retenir : _inherit qui permet d’hériter d’un

modèle et de redéfinir ses attributs ou fonctions

Page 18: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Fichiers VuesLa couche Vue décrit l'interface utilisateur. Les vues sont définies à l'aide de XML, qui est utilisé

par l'infrastructure client Web pour générer des vues HTML sensibles aux données.

Les vues sont activées et affichées par les actions la majorité au travers de menus qui appellent

ces actions. Par exemple, l'élément de menu Utilisateurs traite une action également appelée

Utilisateurs, qui à son tour rend une série de vues. Plusieurs types de vue sont disponibles, tels

que les vues liste et formulaire, et les options de filtrage disponibles sont également définies par

type de vue particulier, la vue de recherche.

Les directives de développement d'Odoo indiquent que les fichiers XML définissant l'interface

utilisateur doivent être placés dans un sous-répertoire views

Page 19: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Créer votre module sous dev-addons

Page 20: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Fichier product_family.py

Page 21: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Fichier product_sub_family.py

Page 22: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Fichier product.py

Page 23: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Fichier product.py

Page 24: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Vue product_family_view.xml

Page 25: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Vue product_family_view.xml (suite)

Page 26: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Vue product_sub_family_view.xml

Page 27: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Vue product_sub_family_view.xml (suite)

Page 28: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Vue product_view.xml

Page 29: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Vue product_view.xml (suite)

Page 30: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Une fois votre module créé

Créer votre module sous dev-addons

Relancer le service Odoo

Aller dans Odoo puis activer le mode développeur

Aller dans le menu applications puis mettez à jour la liste des

applications

Rechercher désormais votre module dans la liste des

applications

Installer votre module

Page 31: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Résultat attendu

Page 32: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Résultat attendu – Menu et vue liste Famille

Page 33: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Résultat attendu –Vue formulaire Famille

Page 34: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Résultat attendu Menu et vue liste sous famille

Page 35: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Résultat attendu Menu et vue formulaire sous famille

Page 36: ODOO Découverte Technique - perso.liris.cnrs.fr · Présentation et construction des éléments de l'interface : Les différentes vues Vu lors du cours et TP Prise en main Odoo Les

Résultat attendu article