-
Mmento technique OpenERP en franais
Open Source RAD avec OpenERP 7,0
Par Thierry Godin
Date de publication : 19 novembre 2013
Dernire mise jour : 18 dcembre 2014
Cet article est une traduction franaise du Memento Technique
d'OpenERP v7.0Version du fichier original : 08/11/2013.
Avec l'aimable autorisation de la socit OpenERP SA.Commentez
-
Mmento technique OpenERP en franais par Thierry Godin
- 2 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
I -
Prambule...............................................................................................................................................................
3II - Installer
OpenERP.................................................................................................................................................
3
II-A - Packages
d'installation..................................................................................................................................3II-B
- Installer depuis les
sources..........................................................................................................................
4II-C - Cration de la base de
donnes..................................................................................................................4
III - Construire un module OpenERP : Idea
(Ide).....................................................................................................
4III-A -
Contexte.......................................................................................................................................................
4III-B - Composition d'un
module............................................................................................................................
4III-C - Structure typique d'un
module.....................................................................................................................5III-D
- Service de mappage
objet-relationnel.........................................................................................................
5III-E - Types de champs de
l'ORM........................................................................................................................
7
III-E-1 - Noms de champs
spciaux/rservs..................................................................................................
9III-F - Travailler avec
l'ORM.................................................................................................................................
10
IV - Construire l'interface du
module.........................................................................................................................13IV-A
- Structure XML
commune...........................................................................................................................13IV-B
- Syntaxe CSV
commune............................................................................................................................
14IV-C - Menus et
actions.......................................................................................................................................
15
IV-C-1 - Dclaration d'une
action...................................................................................................................
15IV-C-2 - Dclaration d'un
menu......................................................................................................................15
V - Vues et
hritage..................................................................................................................................................
16V-A - Vues formulaires (pour voir/modifier les
enregistrements).........................................................................
16
V-A-1 - Les lments de
formulaire...............................................................................................................
17V-B - Vues
dynamiques.......................................................................................................................................
18V-C - Vues listes et listes d'arborescence
hirarchique......................................................................................
18V-D - Vues fiches
Kanban...................................................................................................................................
18V-E - Vues
calendrier...........................................................................................................................................
19V-F - Diagrammes de
Gantt.................................................................................................................................19V-G
- Vues diagrammes
(graphes)......................................................................................................................
19V-H - Vues de
recherche.....................................................................................................................................
20V-I - Hritage des
vues........................................................................................................................................20
VI -
Rapports..............................................................................................................................................................21VI-A
- Diffrents formats de
rapports...................................................................................................................21VI-B
- Les expressions utilises dans les modles de rapport
OpenERP...........................................................21
VII - Les Flux de travail
(Workflows).........................................................................................................................22VII-A
- Dclaration d'un flux de
travail.................................................................................................................
23VII-B - Activits du flux de travail
(nuds)..........................................................................................................23VII-C
- Transitions du flux de travail
(bords)........................................................................................................24
VIII -
Scurit.............................................................................................................................................................
24VIII-A - Mcanismes de contrle d'accs bass sur le
groupe...........................................................................
24VIII-B -
Roles........................................................................................................................................................
25
IX - Les assistants
(Wizards)....................................................................................................................................
25IX-A - Les modles d'assistant
(TransientModel)................................................................................................
25IX-B - Vues
assistant............................................................................................................................................25IX-C
- Excution de
l'assistant.............................................................................................................................26
X - WebServices -
XML-RPC....................................................................................................................................
26XI - Optimisation des
performances..........................................................................................................................27XII
-
Communaut/contribution..................................................................................................................................
27XIII -
Licence..............................................................................................................................................................28XIV
-
Remerciements.................................................................................................................................................28
-
Mmento technique OpenERP en franais par Thierry Godin
- 3 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
I - Prambule
OpenERP est une suite moderne de d'Applications Mtiers, publie
sous la licence AGPL qui comprend les modulesCRM, RH, ventes,
comptabilit, fabrication, gestion d'entrepts, gestion de projets,
et plus encore. Il est bas sur unsystme modulaire, une plate-forme
Rapid Application Development (RAD) volutive et intuitive crite en
Python.
OpenERPdispose d'une bote outils complte et modulaire pour
construire rapidement des applications : Object-Relationship
Mapping (ORM) intgr, un patron Modle-Vue-Contrleur (MVC), un systme
de gnration de rapport,l'internationalisation automatise, et bien
plus encore.
Python est un langage de programmation dynamique de haut niveau,
idal pour RAD, alliant la puissance avec unesyntaxe claire, et un
noyau maintenu petit par sa conception.
Astuce : Liens utiles Le site Web principal OpenERP et
tlchargements : www.openerp.com Documentation fonctionnelle et
technique : doc.openerp.com Ressources communautaires :
www.openerp.com/community Le serveur d'intgration permanent :
runbot.openerp.com Apprendre Python : doc.python.org
II - Installer OpenERP
OpenERP est distribu sous forme de paquets/installeurs pour la
plupart des plates-formes, mais peut galementtre install partir des
sources sur n'importe quelle plate-forme.
L'architecture d'OpenERP
OpenERP utilise le paradigme client-serveur bien connu : le
client s'excute comme une application JavaScript dansvotre
navigateur, se connectant au serveur en utilisant le protocole
JSON-RPC sur HTTP(S). Des clients peuventtre facilement crits selon
vos besoins et se connecter au serveur en utilisant XML-RPC ou
JSON-RPC.
Astuce : Procdure d'installation La procdure d'installation
OpenERP est susceptible d'voluer (dpendances et ainsi de
suite), alors assurez-vous de toujours consulter la
documentation spcifique (fournie avecles packages et sur le site
Internet) pour les dernires procdures.
Voir : http://doc.openerp.com/v7.0/install
II-A - Packages d'installation
Windows : installeur tout-en-un. Linux : packages tout-en-un
pour les systmes bass sur Debian (*.deb), et Red-Hat (*.rpm). Mac :
pas d'installeur tout-en-un, il faut installer depuis les
sources.
-
Mmento technique OpenERP en franais par Thierry Godin
- 4 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
II-B - Installer depuis les sources
Il y a deux possibilits : utiliser une archive fournie sur le
site, ou obtenir directement les sources l'aide de Bazaar(systme de
contrle de version). Vous devez galement installer les dpendances
ncessaires (PostgreSQL etquelques bibliothques Python - voir la
documentation sur doc.openerp.com).
Astuce : CompilationOpenERP tant bas sur Python, aucune
compilation n'est ncessaire.
Procdure de commandes Bazaar typique (sur base Debian Linux)1. $
sudo apt-get install bzr # Installer Bazaar (version control
software)2. $ bzr cat -d lp:~openerp-dev/openerp-tools/trunk
setup.sh | sh # Rcuprer l'Installeur3. $ make init-v70 # Installer
OpenERP 7.04. $ make server # Dmarrer OpenERP Server avec
l'interface Web
II-C - Cration de la base de donnes
Aprs le dmarrage du serveur, ouvrez http://localhost:8069 dans
votre navigateur prfr. Vous verrez l'cran dugestionnaire de bases
de donnes o vous pouvez crer une nouvelle base de donnes. Chaque
base de donnespossde ses propres modules et sa propre
configuration, et peut tre cre en mode dmo pour tester une base
dedonnes prremplie (ne pas utiliser le mode de dmonstration pour
une vritable base de donnes !).
III - Construire un module OpenERP : Idea (Ide)
III-A - Contexte
Les exemples de code utiliss dans ce mmento sont pris partir
d'un module hypothtique d'ides. Le but de cemodule serait d'aider
les esprits cratifs, qui viennent souvent avec des ides qui ne
peuvent pas tre ralisesimmdiatement, et sont trop facilement
oublies si elles ne sont pas notes quelque part. Ce module pourrait
treutilis pour enregistrer ces ides, les trier et les valuer.
Note : dveloppement modulaireOpenERP utilise des modules comme
des conteneurs de fonctionnalits, afin de favoriser unrobuste
dveloppement et leur maintenance. Les modules offrent une isolation
des fonctions,un niveau appropri d'abstraction et des modles
vidents MVC.
III-B - Composition d'un module
Un module peut contenir n'importe lequel des lments suivants
:
objets mtier : dclars comme des classes Python qui tendent la
classe osv.Model. La persistance deces ressources est entirement
gre par OpenERP ;
donnes : les fichiers XML/CSV avec des mtadonnes (vues et
dclarations des flux de travail), lesdonnes de configuration
(paramtrage des modules) et des donnes de dmonstration
(facultatives, maisrecommandes pour tester, par exemple, des
chantillons d'ides) ;
assistants : formulaires interactifs utiliss pour aider les
utilisateurs, souvent disponibles en actionscontextuelles sur les
ressources ;
rapports : RML (format XML), MAKO ou OpenOffice modles de
rapports, qui seront fusionns avecn'importe quel type de donnes de
l'entreprise et gnreront du HTML, ODT ou des rapports PDF.
-
Mmento technique OpenERP en franais par Thierry Godin
- 5 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
III-C - Structure typique d'un module
Chaque module est contenu dans son propre rpertoire, dans le
rpertoire d'installation du serveur server/bin/addons.
Note :Vous pouvez dclarer votre propre rpertoire addons dans le
fichier de configurationd'OpenERP en utilisant l'option addons_path
(transmis au serveur avec l'option -c).
5. addons/6. |- idea/ # Le rpertoire du module7. |- demo/ #
Donnes de dmonstration et tests unitaires8. |- i18n/ # Fichiers de
traduction9. |- report/ # Rapports10. |- security/ # Dclaration des
groupes et droits d'accs11. |- view/ # Vues (formulaires,listes),
menus et actions12. |- wizard/ # Assistants13. |- workflow/ # Flux
de travail14. |- __init__.py # Fichier d'initialisation Python
(requis)15. |- __openerp__.py # Dclaration du module (requis)16. |-
idea.py # Classes Python, les objets du module
Le fichier __ init__.py est le descripteur de module Python, car
un module OpenERP est aussi un module Pythonrgulier.
__init__.py17. # Importe tous les fichiers et dossiers qui
contiennent du code Python18. import idea, wizard, report
Le fichier __openerp__.py est le manifeste du module OpenERP et
contient un dictionnaire unique Python avec ladclaration du module
: son nom, les dpendances, la description et la composition.
__openerp__.py19. {20. 'name' : 'Idea',21. 'version' : '1.0',22.
'author' : 'OpenERP',23. 'description' : 'Ideas management
module',24. 'category': 'Enterprise Innovation',25. 'website':
'http://www.openerp.com',26. 'depends' : ['base'], # liste des
dpendances conditionnant l'ordre de dmarrage27. 'data' : [ # les
fichiers de donnes charger lors de l'installation du module28.
'security/groups.xml', # toujours charger les groupes en
premier!29. 'security/ir.model.access.csv', # charger les droits
d'accs aprs les groupes30. 'workflow/workflow.xml',31.
'view/views.xml',32. 'wizard/wizard.xml',33.
'report/report.xml',34. ],35. 'demo': ['demo/demo.xml'], # donnes
de dmo (pour les tests unitaires)36. }
III-D - Service de mappage objet-relationnel
lment-cl d'OpenERP, l'ORM est une couche de mappage
objet-relationnel complet, qui permet aux dveloppeursde ne pas
avoir crire la plomberie SQL de base. Les objets mtiers sont dclars
comme les classes Python quihritent de la classe osv.Model, ce qui
les rend magiquement persistants par la couche ORM.
Des attributs prdfinis sont utiliss dans la classe Python pour
spcifier les caractristiques d'un objet mtier pourl'ORM :
-
Mmento technique OpenERP en franais par Thierry Godin
- 6 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
idea.py37. from osv import osv, fields38. class
idea(osv.Model):39. _name = 'idea.idea'40. _columns = {41. 'name':
fields.char('Title', size=64, required=True, translate=True),42.
'state': fields.selection([('draft','Draft'),43.
('confirmed','Confirmed')],'State',required=True,readonly=True),44.
# Description est en lecture seule quand elle n est pas en
brouillon!45. 'description': fields.text('Description',
readonly=True,46. states={'draft': [('readonly', False)]} ),47.
'active': fields.boolean('Active'),48. 'invent_date':
fields.date('Invent date'),49. # par convention, les champs
many2one se terminent par '_id'50. 'inventor_id':
fields.many2one('res.partner','Inventor'),51.
'inventor_country_id': fields.related('inventor_id','country',52.
readonly=True, type='many2one',53. relation='res.country',
string='Country'),54. # par convention, les champs *2many se
terminent par '_ids'55. 'vote_ids':
fields.one2many('idea.vote','idea_id','Votes'),56. 'sponsor_ids':
fields.many2many('res.partner','idea_sponsor_rel',57.
'idea_id','sponsor_id','Sponsors'),58. 'score':
fields.float('Score',digits=(2,1)),59. 'category_id' =
fields.many2one('idea.category', 'Category'),60. }61. _defaults =
{62. 'active': True, # les ides sont actives par dfaut63. 'state':
'draft', # les ides sont l'tat de brouillon par dfaut64. }65. def
_check_name(self,cr,uid,ids):66. for idea in self.browse(cr, uid,
ids):67. if 'spam' in idea.name: return False # On ne peut pas crer
une ide avec spam!68. return True69. _sql_constraints =
[('name_uniq','unique(name)', 'Ideas must be unique!')]70.
_constraints = [(_check_name, 'Please avoid spam in ideas !',
['name'])]
Attributs prdfinis de osv.osv pour les objets mtier_name
(requis) Nom de l'objet mtier, en notation pointe
(dans le module d'espace de nom)_columns (requis) Dictionnaire
{nom du champ dclaration
du champ}_defaults Dictionnaire : {nom du champ littral ou
une fonction fournissant la valeur par dfaut}_defaults['name'] =
lambdaself,cr,uid,context: 'eggs'
_auto Si True (par dfaut) l'ORM va crer la tablede base de
donnes - Mettre False pourcrer votre propre table/vue dans la
mthodeinit()
_inherit _name : nom de l'objet mtier parent (parhritage)
_inherits Pour la dcoration de l'hritage : dictionnairemappant
le nom (_name) de l'objet(s) mtierparent avec les noms des champs
de cltrangre correspondante utiliser
_constraints Liste des tuples qui dfinissent descontraintes
Python, sous la forme(func_name, message, champs) (70)
_sql_constraints Liste des tuples qui dfinissent descontraintes
SQL, sous la forme(nom, sql_def, message) (69)
_log_access Si True (par dfaut), 4 champs
(create_uid,create_date, write_uid, write_date) serontutiliss pour
identifier les oprations au
-
Mmento technique OpenERP en franais par Thierry Godin
- 7 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
niveau des enregistrements, accessible viala fonction
perm_read()
_order Nom du champ utilis pour trier lesenregistrements dans
des listes (par dfaut :'id')
_rec_name Champ alternatif utiliser comme nom,utilis par
name_get() (par dfaut : 'name')
_sql Code SQL pour crer la table/vue decet objet (si _auto est
False) - Peut treremplac par l'excution SQL dans lamthode
init()
_table Nom de la table SQL utiliser (par dfaut :'.'_name avec
des points remplacs par desunderscores '_')
Hritage
III-E - Types de champs de l'ORM
Les objets peuvent contenir trois types de champs : simples,
relationnels et fonctionnels.
Les types simples sont des nombres entiers, flottants, boolens,
chanes, etc.
Les champs relationnels reprsentent les relations entre les
objets (one2many, many2one, many2many). Les champsfonctionnels ne
sont pas stocks dans la base de donnes, mais calculs la vole comme
des fonctions Python.Des exemples pertinents dans la classe idea
ci-dessus sont indiqus avec les numros de ligne correspondants( XX,
XX).
Types de champs de l'ORM string : tiquette de champ
(obligatoire) required : True si obligatoire readonly : True si non
modifiable help : info-bulle select : True pour crer un index
de
base de donnes sur cette colonne
context : dictionnaire avec contexte siles paramtres sont
obligatoires (pourles champs relationnels)
change_default : True si le champ doittre utilisable comme
condition pour lesvaleurs par dfaut de clients
-
Mmento technique OpenERP en franais par Thierry Godin
- 8 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
states : changements dynamiques auxattributs ordinaires de ce
champ sur labase du champ state
Champs simplesboolean () integer () date () datetime () time
()
'active' : fields.boolean('Active'),'priority' :
fields.integer('Priority'),'start_date' : fields.date('Start
Date'),
char(string,size,translate=False)text(string,
translate=False)Champs de texte
translate : True si les valeurs dechamp peuvent tre traduites
parles utilisateurs, pour les champs dechar/text
size : taille max facultative pour leschamps texte( 41,45)
float(string, digits=None)Valeur dcimale
digits : tuple (prcision, chelle)( 58)
selection(values, string)Champ permettant la slection entre
unensemble de valeurs prdfinies
values : liste de valeurs (cl tuples)ou fonction retournant une
telle liste(obligatoire)( 42)
binary(string, filters=None)Champ pour stocker un fichier ou du
contenubinaire.
filters : filtres de noms de fichiers enoption pour la
slection'picture' :
fields.binary('Picture',filters='*.png,*.gif')
reference(string, selection, size,..)Champ en relation dynamique
avecn'importe quel autre objet, associ unwidget assistant
selection : nom de modle (_name) destypes d'objets autoriss avec
l'tiquettecorrespondante (mme format que levalue des champs
selection)
size : la taille de la colonne de texteutilise pour stocker
(format destockage est 'model_name, object_id ')'contact' :
fields.reference('Contact',[('res.partner' ,
'Partner'),('res.partner.contact' , 'Contact')])
Champs relationnelsLes attributs communs pris en charge pardes
champs relationnels
domain : filtre en option sous la formed'arguments pour la
recherche (voirsearch())
many2one(obj, ondelete='set null')(50)Relation un objet parent
(en utilisant unecl trangre)
obj : _name (nom) de l'objet dedestination (obligatoire)
ondelete : manipulation desuppression, par exemple 'setnull',
'cascade'; consultez la
documentation de PostgreSQLone2many(obj, field_id)(55)Relation
virtuelle vers plusieurs objets(inverse de many2one)
obj : _name (nom) de l'objet dedestination (obligatoire)
field_id : nom du champ many2oneinverse, c'est--dire : cl
trangrecorrespondante (obligatoire)
many2many(obj, rel, field1, field2)( 56)Relation
bidirectionnelle entre plusieursobjets
obj : _name (nom) de l'objet dedestination (obligatoire)
rel : nom optionnel de la tablede relation utiliser (par dfaut
:autoattribu sur la base des noms demodles)
-
Mmento technique OpenERP en franais par Thierry Godin
- 9 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
field1 : nom du champ dans la tablerel stockant l'id de l'objet
courant (pardfaut : en fonction du modle)
field2 : nom du champ de la table relstockant l'id de l'objet
cible (par dfaut :en fonction du modle)
Champs fonctionnelsfunction(fnct, arg=None, fnct_inv=None,
fnct_inv_arg=None, type='float',fnct_search=None, obj=None,
store=False, multi=False,)Champ fonctionnel simulant un champ rel,
calcul plutt que stock fnct: : fonction pour calculer la valeur du
champ (obligatoire)
def fnct(self, cr, uid, ids, field_name, arg, context)Retourne
un dictionnaire {ids valeurs} avec les valeurs de type de type
fnct_inv : fonction utilise pour crire une valeur dans le champ
l'inversedef fnct_inv(obj, cr, uid, id, name, value, fnct_inv_arg,
context)
type : type de champs simul (peut tre n'importe quel autre type,
sauf 'fonction') fnct_search : fonction utilise pour la recherche
dans ce champ
def fnct_search (obj, cr, uid, obj, nom, args)Retourne une liste
de tuples d'arguments pour search(), par exemple [('id',
'in',[1,3,5])]
obj : _name (nom) du modle du champ simul s'il s'agit d'un champ
relationnel store, multi : mcanismes d'optimisation (voir
utilisation dans la section Performance)related(f1, f2, ,
type='float', )Champ raccourci quivalent la navigation sur des
champs relis f1,f2, : champs relis pour atteindre la cible (f1
obligatoire) (51) type : type de champ cibleproperty(obj,
type='float', view_load=None, group_name=None, )Attribut dynamique
avec des droits d'accs spcifiques obj : objet (obligatoire) type :
type de champ quivalent
Astuce : symtrie des champs relationnels one2many many2one sont
symtriques many2many many2many sont symtriques lorsque inverss
(inverse field1 et field2 si
explicite) one2many many2one + many2one one2many = many2many
III-E-1 - Noms de champs spciaux/rservs
Quelques noms de champs sont rservs avec un comportement prdfini
dans OpenERP. Certains d'entre eux sontcrs automatiquement par le
systme, et dans ce cas tout champ avec ce nom sera ignor.
Noms de champs spciaux/rservsid Identificateur systme unique
pour l'objetname Champ dont la valeur est utilise pour
afficher l'enregistrement dans les listes, etc.
-
Mmento technique OpenERP en franais par Thierry Godin
- 10 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
S'il est manquant, mettre _rec_name pourspcifier un autre champ
utiliser
active Basculer la visibilit : les enregistrementsavec active
dfini False sont masqus pardfaut
sequence Dfinit l'ordre et permet la rorganisationglisser-dposer
si visible dans les vues deliste
state tapes du cycle de vie de l'objet, utilise parles attributs
states
parent_id Dfinit la structure de tableau sur desenregistrements,
et permet l'oprateur dechild_of
parent_left, parent_right Utilis en conjonction avec le
signal_parent_store sur l'objet, permet un accsplus rapide des
structures de tableau(voir galement section
OptimisationPerformance)
create_date,create_uid,write_date,write_uid
Utilis pour enregistrer l'utilisateur crateur,l'utilisateur qui
a mis jour, la date decration et la date de dernire mise jourde
l'enregistrement. Dsactive si le signal_log_access est dfini sur
False(cr par ORM, ne pas les ajouter)
III-F - Travailler avec l'ORM
Hritant de la classe de osv.Model, rend toutes les mthodes de
l'ORM disponibles sur des objets mtier. Cesmthodes peuvent tre
appeles sur l'objet lui-mme (self) au sein de la classe Python
(voir les exemples dans letableau ci-dessous), ou de l'extrieur de
la classe en obtenant d'abord une instance via le systme pool de
l'ORM.
Exemple d'utilisation de l'ORM
Exemple d'utilisation de l'ORM72. class idea2(osv.Model):73.
_inherit = 'idea.idea'74. def
_score_calc(self,cr,uid,ids,field,arg,context=None):75. res = {}76.
# Cette boucle gnre seulement deux requtes grce browse()!77. for
idea in self.browse(cr,uid,ids,context=context):78. sum_vote =
sum([v.vote for v in idea.vote_ids])79. avg_vote =
sum_vote/len(idea.vote_ids)80. res[idea.id] = avg_vote81. return
res82. _columns = {83. # Remplace le score statique avec une
moyenne des scores84.
'score':fields.function(_score_calc,type='float')85. }
Mthodes de l'ORM sur les objets osv.ModelAccesseur gnrique OSV
self.pool.get('object_name')
peut tre utilis pour obtenir un modlede n'importe quel autre
Les paramtres communs, utiliss par demultiples mthodes
uid : identifiant de l'utilisateur quieffectue l'opration
ids : ids d'enregistrement sur lesquelson effectue
l'opration
-
Mmento technique OpenERP en franais par Thierry Godin
- 11 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
context : dictionnaire facultatif decontexteparametres, ex. : {
'lang': 'en_US', ... }
domain : filtre spcifiant des critres derecherche
offset : nombre optionneld'enregistrements sauter
limit : nombre optionnel maximumd'enregistrements renvoyer
order : colonnes optionnelles de tri (pardfaut :
self._order)
count : si True, renvoie seulementle nombre
d'enregistrementscorrespondant aux critres, et nonleurs id
search (cr, uid, domain, offset=0,limit=None, order=None,
context=None,count=False)Renvoie : liste des identifiants
desenregistrements correspondant aux critresdonns
#Operateurs: =, !=, >, >=,
-
Mmento technique OpenERP en franais par Thierry Godin
- 12 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
})
copy (cr, uid, id, defaults,context=None)Duplique
l'enregistrement de l'id donn en lemettant jour avec des valeurs
par dfaut.Renvoie : True
defaults : dictionnaire des valeurs dechamps modifier dans les
valeurscopies lors de la cration de l'objetdupliqu
unlink (cr, uid, ids, context=None)Supprime les enregistrements
des idspcifisRenvoie : True
self.unlink(cr, uid, [42,43])
browse (cr, uid, ids, context=None)Rcupre les enregistrements
comme desobjets, ce qui permet d'utiliser la notation point pour
parcourir les champs et lesrelations.Renvoie : objet ou une liste
d'objetsdemands
idea = self.browse(cr, uid, 42)print 'Idea description:',
idea.descriptionprint 'Inventor country code:',
idea.inventor_id.address[0].country_id.codefor vote in
idea.vote_ids: print 'Vote %2.2f' % vote.vote
fields : liste de noms de champsdefault_get (cr, uid,
fields,context=None)Renvoie : dictionnaire des valeurs par
dfautpour les champs (dfinies sur la classed'objets, par les
prfrences d'utilisateur, oupar l'intermdiaire du contexte)
defs = self.default_get(cr,uid, ['name','active'])# active
devrait tre True par dfautassert defs['active']
details : si True, les valeurs deschamps *_uid sont remplaces
par despaires (id, name_of_user)
Les dictionnaires retournscontiennent : id de l'objet (id), id
del'utilisateur crateur (create_uid),date de cration (create_date),
id del'utilisateur qui a mis jour (write_uid),date de mise jour
(write_date)
perm_read (cr, uid, ids, details=True)Renvoie : une liste de
dictionnaires deproprits pour chaque enregistrementdemand
perms = self.perm_read(cr,uid,[42,43])print 'creator:',
perms[0].get('create_uid', 'n/a')
fields : liste de noms de champsfields_get (cr, uid,
fields=None,context=None)Renvoie un dictionnaire de dictionnairesde
champs, chacun dcrivant un champ del'objet mtier
class idea(osv.osv): (...) _columns = { 'name' :
fields.char('Name',size=64) (...)def test_fields_get(self,cr,uid):
assert(self.fields_get('name')['size'] == 64)
view_type : type de vue renvoyer siview_id est None
('form','tree', )
toolbar : True pour renvoyer galementdes actions de contexte
fields_view_get(cr, uid, view_id=None,view_type='form',
context=None,toolbar=False)Renvoie un dictionnaire dcrivant
lacomposition de la vue demande (y comprisles vues hrites)
def test_fields_view_get(self,cr,uid): idea_obj =
self.pool.get('idea.idea') form_view =
idea_obj.fields_view_get(cr,uid)
name_get (cr, uid, ids, context=None)Renvoie des tuples avec la
reprsentationtextuelle des objets demands pour lesrelations
to-many
# Les ides doivent tre prsentes avec la date d'inventiondef
name_get(self,cr,uid,ids,context=None): res = [] for r in
self.read(cr,uid,ids,['name','create_date']) res.append((r['id'],
'%s (%s)' (r['name'],year)))
-
Mmento technique OpenERP en franais par Thierry Godin
- 13 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
return res
name : nom de l'objet rechercher operator : l'oprateur pour le
critre de
noms domain, limit : pareil que pour search()
name_search (cr, uid, name='',domain=None,
operator='ilike',context=None, limit=80)Renvoie une liste de noms
d'objetscorrespondant aux critres utiliss pourpermettre l'achvement
des relations to-many. quivalent desearch() sur le name (nom) +
name_get()
# Les pays peuvent tre recherchs par code ou par nomdef
name_search(self,cr,uid,name='', domain=[], operator='ilike',
context=None,limit=80): ids = [] if name and len(name) == 2: ids =
self.search(cr, user, [('code', '=', name)] + args, limit=limit,
context=context) if not ids: ids = self.search(cr, user, [('name',
operator, name)] + args, limit=limit, context=context) return
self.name_get(cr,uid,ids)
export_data(cr, uid, ids, fields,context=None)Exportation des
champs des objetsslectionns, renvoyant un dictionnaireavec une
matrice de donnes. Utilis lorsde l'exportation de donnes via le
menu duclient.
fields : liste de noms de champs context : peut contenir
import_comp
(par dfaut : False) pour rendre lesdonnes exportes
compatiblesavec import_data() (peut empcherl'exportation de
certains champs)
import_data (cr, uid, fields, data,mode='init',
current_module='',noupdate=False,
context=None,filename=None)Importe les donnes spcifies dans
lemodule spcifi utilis lors de l'exportationde donnes via le menu
du client
fields : liste de noms de champs data : donnes importer
(voir
export_data()) mode : 'init' pour crer des
enregistrements ou 'update' pourmettre jour
current_module : nom du module noupdate : signal pour la cration
des
enregistrements filename : fichier optionnel pour stocker
l'tat des importations partielles pour larcupration
Astuce :Utilisez read() pour des appels via des Web services,
mais prfrez browse() en interne.
IV - Construire l'interface du module
Pour construire un module, le mcanisme principal est d'insrer
des enregistrements de donnes pour dclarer lescomposants de
l'interface du module. Chaque lment du module est un bloc de donnes
standard : les menus, lesvues, les actions, les rles, les droits
d'accs, etc.
IV-A - Structure XML commune
Les fichiers XML dclars dans la section des donnes d'un module
contiennent des dclarations d'enregistrementsous la forme suivante
:
Structure XML commune87. 88.
-
Mmento technique OpenERP en franais par Thierry Godin
- 14 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
Structure XML commune89. 90. 91. value192. value293. 94. 95. 96.
97. 98. 99. 100.
Chaque type d'enregistrement (vue, menu, action) prend en charge
un ensemble spcifique d'entits et d'attributsenfants, mais tous
partagent les attributs spciaux suivants :
id l'identificateur externe unique (par module) de cet
enregistrement (xml_id)ref peut tre utilis la place du contenu
normal de l'lment pour se rfrencer
un autre enregistrement (fonctionne entre les modules en faisant
prcder parle nom du module parent)
eval utilis la place du contenu d'un lment pour fournir de la
valeur comme uneexpression Python, et qui peut utiliser la mthode
ref() pour trouver l'identifiantdans base de donnes pour un xml_id
spcifi
Astuce : Validation XML RelaxNGOpenERP valide la syntaxe et la
structure des fichiers XML, selon la grammaire RelaxNG,que l'on
peut trouver :server/bin/import_xml.rngPour une vrification
manuelle, utilisez :xmllint: xmllint -relaxng
/path/to/import_xml.rng
IV-B - Syntaxe CSV commune
Les fichiers CSV peuvent galement tre ajouts dans la section de
donnes et les enregistrements seront insrspar la mthode
import_data() de l'OSV, en utilisant le nom du fichier CSV afin de
dterminer le modle de l'objet cible.L'ORM reconnecte
automatiquement les relations bases sur les noms des colonnes
spciales suivantes :
id (xml_id) colonne contenant des identificateurs pour les
relationsmany2one_field reconnecte many2one en utilisant
name_search()many2one_field:id reconnecte many2one bas sur le
xml_id de l'objetmany2one_field.id reconnecte many2one bas sur l'id
de l'objet de base de donnesmany2many_field reconnecte via
name_search(), multiples valeurs spares par des
virgulesmany2many_field:id reconnecte les xml_id des objets,
multiples valeurs spares par
des virgulesmany2many_field.id reconnecte les id des objets de
base de donnes, multiples valeurs
spares par des virgulesone2many_field/field cre un
enregistrement one2many de destination et assigne la
valeur de champ
ir.model.access.csv
ir.model.access.csv101.
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"102.
"access_idea_idea","idea.idea","model_idea_idea","base.group_user",1,0,0,0103.
"access_idea_vote","idea.vote","model_idea_vote","base.group_user",1,0,0,0
-
Mmento technique OpenERP en franais par Thierry Godin
- 15 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
IV-C - Menus et actions
Les actions sont dclares comme enregistrements rguliers et
peuvent tre dclenches de trois faons :
en cliquant sur les lments de menu lis une action spcifique ; en
cliquant sur les boutons dans les vues, si ceux-ci sont connects
des actions ; comme actions contextuelles sur un objet (visible
dans la barre latrale).
IV-C-1 - Dclaration d'une action
Dclaration d'une action104. 105. action.name106. 107. [list of
3-tuples (max 250 characters)]108. {context dictionary (max 250
characters)}109. object.model.name110. form|tree111.
form,tree,calendar,graph112. new113. 114.
id identificateur de l'action dans la table
ir.actions.act_window doit treunique
name nom de l'action (obligatoire)view_id vue spcifique pour
ouvrir (si manquant, la vue avec la plus haute priorit
du type spcifi est utilise)domain tuple (voir les paramtres de
search()) pour filtrer le contenu de la vuecontext dictionnaire de
contexte passer la vueres_model modle d'objet sur lequel la vue
ouvrir est dfinieview_type mettre form pour ouvrir les
enregistrements en mode dition, mettre
tree pour une vue hirarchique uniquementview_mode si view_type
est form, la liste des modes d'affichage autoriss pour voir les
enregistrements (form, tree, ...)target mettre new pour ouvrir
la vue dans une nouvelle fentre/pop-upsearch_view_id identificateur
de la vue de recherche pour remplacer le formulaire de
recherche par dfaut
IV-C-2 - Dclaration d'un menu
L'lment menuitem est un raccourci pour dclarer un enregistrement
de ir.ui.menu et le connecte une actioncorrespondante un
enregistrement de ir.model.data.
Dclaration d'un menu115.
id identificateur du menuitem, doit tre uniqueparent id externe
(xml_id) du menu parent dans la hirarchiename tiquette de menu
optionnelle (par dfaut : nom de l'action)action identificateur de
l'action excuter, le cas chantgroup liste des groupes qui peuvent
voir ce menu (si manquant, tous les
groupes peuvent le voir)sequence indice entier pour ordonner les
menuitems du mme parent
(10,20,30..)
-
Mmento technique OpenERP en franais par Thierry Godin
- 16 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
V - Vues et hritage
Les vues forment une hirarchie. Plusieurs vues d'un mme type
peuvent tre dclares sur le mme objet, et serontutilises en fonction
de leurs priorits. En dclarant une vue hrite, il est possible
d'ajouter/supprimer des fonctionsdans une vue.
Dclaration d'une vue gnrique
Dclaration d'une vue gnrique117. 118. view.name119.
object_name120. 121. form122. 123. 124. 125. 126.
name nom de la vuemodel modle d'objet sur lequel la vue est
dfinie (comme res_model dans les
actions)type form, tree, graph, calendar, search, gantt,
kanbanpriority priorit de la vue, la plus petite est la plus leve
(par dfaut : 16)arch architecture de la vue, voir diffrents types
de vue ci-dessous
V-A - Vues formulaires (pour voir/modifier les
enregistrements)
lments autoriss Tous (voir les lments du formulaire
ci-dessous)
Vue formulaire (form view)127. 128. 129. 130. 131. 132. 133.
134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146.
147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157.
-
Mmento technique OpenERP en franais par Thierry Godin
- 17 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
Vue formulaire (form view)158.
Nouveau : l'API de formulaire v7.0Une nouvelle API de vue
formulaire a t introduite dans OpenERP 7.0. Elle peut tre activeen
ajoutant version="7.0" l'lment .Cette nouvelle API de formulaire
permet de mlanger le code XHTML arbitraire avec deslments de
formulaire rguliers d'OpenERP.Il introduit galement quelques lments
propres produire des formulaires plus beaux, comme, , , et un
ensemble de classes CSS gnriques pour personnaliserl'apparence et
le comportement des lments de formulaire.Les meilleures pratiques
et des exemples pour la nouvelle API de formulaire sont
disponiblesdans la documentation technique :
http://doc.openerp.com/trunk/developers/server/form-view-guidelines
V-A-1 - Les lments de formulaire
Les attributs communs tous les lments :
string : label de l'lment ; 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 lment doit
allouer ses lments enfants ; invisible : mettre 1 pour cacher cet
lment compltement ; eval : valuer ce code Python comme contenu d'un
lment (le contenu est une chane par dfaut) ; attrs : carte Python
dfinissant les conditions dynamiques sur ces attributs : readonly,
invisible, required, en
fonction de tuples de recherche sur d'autres valeurs de
champs.
field : widgets automatiques en fonction du type de champ
correspondant.
Attributs :
string : tiquette du champ pour cette vue particulire ; nolabel
: mettre 1 pour cacher l'tiquette du champ ; required : substitue
l'attribut requiered du champ du modle pour cette vue ; readonly :
substitue l'attribut readonly du champ du modle pour cette vue ;
password : mettre True pour masquer les caractres entrs dans ce
champ ; context : code Python dclarant un dictionnaire contextuel ;
domain : code Python dclarant une liste de tuples pour restreindre
les valeurs ; on_change : mthode Python appeler lorsque la valeur
du champ est modifie ; groups : liste de groupes (id) spars par des
virgules groupe (id ) qui ont la permission de voir ce champ ;
widget : possibilits du widget de slection (url, email , image,
float_time , reference , html, progressbar ,
statusbar , handle, etc.).
properties : widget dynamique montrant toutes les proprits
disponibles (pas d'attribut).
button : widget cliquable associ des actions.
Attributs :
type : type de bouton : workflow (par dfaut), object ou action ;
name : signal de workflow, nom de la fonction (sans les parenthses)
ou action appeler (dpend de type) ; confirm : texte du message de
confirmation lorsque vous cliquez dessus ; states : liste des tats
spars par des virgules dans lesquels ce bouton s'affiche.
-
Mmento technique OpenERP en franais par Thierry Godin
- 18 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
separator : ligne de sparation horizontale pour structurer les
vues, avec tiquette facultative.
newline : espace rserv pour l'achvement de la ligne actuelle de
la vue.
label : lgende en texte libre ou une lgende dans le
formulaire.
group : utilis pour organiser les champs en groupes avec
tiquette facultative (rajoute des cadres).
notebook : les lments d'un notebook sont des onglets pour des
lments page.
Attributs :
page name : tiquette de l'onglet/page ; position : position des
onglets dans le notebook (inside, top, bottom, left, right).
V-B - Vues dynamiques
En plus de ce qui peut tre fait avec les attributs states et
attrs, des fonctions peuvent tre appeles par des lmentsde la vue
(via les boutons de type object, ou par les dclencheurs on_change
sur les champs) pour obtenir uncomportement dynamique.
Ces fonctions peuvent modifier l'interface de la vue en
renvoyant une carte Python avec les entres suivantes :
value un dictionnaire de noms de champs et leurs nouvelles
valeursdomain un dictionnaire de noms de champs et les valeurs
actualises du domainewarning un dictionnaire avec un titre et un
message afficher dans une bote de
dialogue d'avertissement
V-C - Vues listes et listes d'arborescence hirarchique
Les vues liste qui incluent les lments field, sont cres avec le
type tree, et ont un lment parent . Ellessont utilises pour dfinir
des listes plates (modifiables ou non) et les listes
hirarchiques.
Attributs colors : liste des couleurs ou des codes de couleur
HTMLmapps des conditions Python
editable : top ou bottom pour permettre l'dition en place
toolbar : mettre True pour afficher le plus haut niveau de la
hirarchie d'objets comme une barre d'outils latrale
(uniquementpour les listes hirarchiques, c'est--dire ouvertes avec
desactions qui ont view_type "tree" au lieu de "mode")
lments autoriss field, group, separator, tree, button, filter,
newline
Vue liste (tree view)159. 160. 161. 162.
V-D - Vues fiches Kanban
Note du traducteur :Dfinition Wikipdia de Kanban :
-
Mmento technique OpenERP en franais par Thierry Godin
- 19 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
Un kanban ( ou , terme japonais signifiant regarder le tableau
?) est une simple fichecartonne que l'on fixe sur les bacs ou les
conteneurs de pices dans une ligne d'assemblageou une zone de
stockage.Voir Kanban sur Wikipdia :
http://fr.wikipedia.org/wiki/Kanban
Depuis OpenERP 6.1, un nouveau type polyvalent de vue, dans
laquelle chaque enregistrement est rendu commeun petit kanban
(fiche) est apparu. Il supporte le glisser-dposer pour grer le
cycle de vie des fiches kanbanbases sur des dimensions
configurables. Les vues Kanban sont introduites dans les notes de
version d'OpenERP6.1 et dfinies en utilisant le langage de
templates QWeb, document dans la documentation technique :
Voir : http://bit.ly/18usDXt
Et : http://doc.openerp.com/trunk/developers/web/qweb
V-E - Vues calendrier
Vues utilises pour afficher les champs de date comme des
vnements de calendrier (lment parent : )
Attributs color : nom du champ pour la segmentation de la
couleur date_start : nom du champ contenant le dbut de
l'vnement
date/heure day_length : dure d'une journe [de travail] en heures
(par
dfaut : 8) date_stop : nom du champ contenant l'arrt de
l'vnement
date/heureou
date_delay : nom du champ contenant la dure de l'vnementlments
autoriss field (pour dfinir l'tiquette de chaque vnement du
calendrier)
Vue calendrier (calendar view)163. 164. 165.
V-F - Diagrammes de Gantt
Diagramme barres gnralement utilis pour afficher le calendrier
du projet (lment parent : ).
Attributs les mmes que lments autoriss field : champ
level : lments qui sont utiliss pour dfinir les niveaux
dudiagramme de Gantt, avec le champ ferm utilis commetiquette pour
le niveau de profondeur
Vue diagramme de Gantt (gant view)163. 164. 165. 166. 167.
V-G - Vues diagrammes (graphes)
Vues utilises pour afficher les tableaux de statistiques (lment
parent : ).
-
Mmento technique OpenERP en franais par Thierry Godin
- 20 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
Astuce :Les graphiques sont particulirement utiles avec des vues
personnalises qui permettentd'extraire des statistiques prtes
l'emploi.
Attributs type : type de graphique : bar, pie (par dfaut)
orientation : horizontal, vertical
lmentsautoriss
field : avec un comportement spcifique : le premier champ dans
la vue est l'axe X, le 2e est Y, le 3e est Z ; 2 champs sont
requis, le 3e est en option ; group : attribut qui dfinit le champ
GROUP BY (mis 1) ; operator : attribut qui dfinit l'oprateur
d'agrgation utiliser pour
d'autres domaines quand un champ est group (+, *, **, min,
max)
Vue graphe (graph view)171. 172. 173. 174.
V-H - Vues de recherche
Les vues de recherche personnalisent le panneau de recherche en
haut des autres vues.
lments autoriss field, group, separator, label, search, filter,
newline, proprits : filter : lments filtres permettant de dfinir le
bouton des filtres
de domaine ; l'ajout d'un attribut context aux champs permet aux
widgets
de modifier le contexte de recherche (utile pour les
champscontextuels, par exemple, les prix des listes de
prixdpendantes)
Vue recherche (search view)175. 176. 177. 180. 181. 182. 183.
184. 186. 187.
V-I - Hritage des vues
Les vues existantes devraient tre modifiables travers des vues
hrites, jamais directement.
Une vue hrite se rfrence sa vue parent en utilisant le champ
inherit_id, et peut ajouter ou modifier des lmentsexistants dans la
vue par leur rfrencement ou par des expressions XPath, et en
spcifiant la position approprie.
Astuce :La rfrence XPath peut tre trouve l'adresse
www.w3.org/TR/xpath
position inside : mettre l'intrieur de la correspondance (par
dfaut) replace : remplacer la correspondance
-
Mmento technique OpenERP en franais par Thierry Godin
- 21 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
before : mettre avant la correspondance after : mettre aprs la
correspondance
XPath188. 189. 190. id.category.list2191. ir.ui.view192. 193.
194. 195. 196. 197. 198.
VI - Rapports
Il existe plusieurs moteurs de rapport dans OpenERP, pour
produire des rapports partir de diffrentes sources etdans de
nombreux formats.
Processus de gnration de rapport
Les expressions spciales utilises l'intrieur des modles de
rapport produisent des donnes dynamiques et/oumodifient la
structure du rapport au moment du rendu.
Des analyseurs de rapport personnaliss peuvent tre crits pour
supporter d'autres expressions.
VI-A - Diffrents formats de rapports
sxw2rml Modles OpenOffice 1.0 (.sxw) convertis en RML avec
l'outil sxw2rml,puis le RML rendu au format HTML ou PDF
rml Modles RML rendus directement au format HTML ou
PDFxml,xsl:rml Donnes XML + feuilles de styles XSL:RML pour gnrer
le RMLodt2odt Modles OpenOffice (.odt) utiliss pour produire
directement des
documents OpenOffice (.odt)
VI-B - Les expressions utilises dans les modles de rapport
OpenERP
Expressions utilises dans les modles de rapport OpenERP[[ ]] Le
contenu l'intrieur des doubles crochets
est valu comme une expression Pythonsur la base des expressions
suivantes
Expressions prdfinies : objects : les objets contiennent la
liste des documents imprimer ; data : les donnes proviennent de
l'assistant qui lance le rapport ; user : contient l'utilisateur
courant (browse_record, comme renvoy par browse()) ; time : le
temps donne accs au module de temps Python ; repeatIn(list, 'var',
'tag') rpte l'lment parent actuel nomm tag pour chaque objet
dans la list, ce qui rend l'objet disponible comme var lors de
chaque boucle ;
-
Mmento technique OpenERP en franais par Thierry Godin
- 22 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
setTag('tag1', 'tag2') remplace le parent RML tag1 avec tag2 ;
removeParentNode('tag') supprime le parent RML de l'lment tag ;
formatLang(value, digits=2, date=False, date_time=False,
grouping=True,
monetary=False) peut tre utilis pour formater une date, l'heure
ou le montant selonla localisation ;
setLang('lang_code') dfinit le langage courant et la
localisation pour les traductions.
Dclaration d'un rapport1. 2. 4.
id identifiant de rapport uniquename nom du rapport
(obligatoire)model modle d'objet sur lequel le rapport est dfini
(obligatoire)rml, sxw, xml, xsl chemin vers les sources de modles (
partir de addons), selon le
rapportauto mettre False pour utiliser un interprteur
personnalis, en contournant
report_sxw.rml_parse et en dclarant le rapport comme suit
:report_sxw.report_sxw(report_name,object_model,rml_path,parser=customClass)
header mettre False pour supprimer l'en-tte du rapport (par
dfaut : True)groups liste de groupes, spars par des virgules,
autoriss voir ce rapportmenu mettre True pour afficher le rapport
dans le menu d'impression (par
dfaut : True)keywords prcise le type de mot-cl du rapport (par
dfaut : client_print_multi)
Astuce :Le guide de l'utilisateur RML:
www.reportlab.com/docs/rml2pdf-userguide.pdf
Extrait d'un exemple de rapport204. 205. 206. 207. Idea name
208. Score 209. 210. 211. [[ repeatIn(objects,'o','tr') ]] [[
o.name ]]212. [[ o.score ]]213. 214. 215.
VII - Les Flux de travail (Workflows)
Les flux de travail peuvent tre associs n'importe quel objet
dans OpenERP, et sont entirement personnalisables.
Les flux de travail sont utiliss pour structurer et grer les
cycles de vie des objets et documents commerciaux, etpour dfinir
des transitions, des dclencheurs, etc. avec des outils
graphiques.
Les flux de travail, les activits (nuds ou les actions) et les
transitions (conditions) sont dclars comme desenregistrements XML,
comme d'habitude. Les jetons qui naviguent dans les workflows sont
appels workitems.
-
Mmento technique OpenERP en franais par Thierry Godin
- 23 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
Flux de travail - Workflows
VII-A - Dclaration d'un flux de travail
Les flux de travail sont dclars sur des objets qui possdent un
champ d'tat (voir l'exemple de la classe idea dansla section
ORM).
Dclaration d'un flux de travail216. 217. idea.basic218.
idea.idea219. 220.
id identificateur unique d'enregistrement du flux de travailname
nom du flux de travail (obligatoire)osv modle d'objet sur lequel le
flux de travail est dfini (obligatoire)on_create si True, un lment
de travail est instanci automatiquement pour
chaque nouvel enregistrement osv
VII-B - Activits du flux de travail (nuds)
Activit du flux de travail221. 222. confirmed223. 224.
function225. action_confirmed()226.
id identificateur unique de l'activitwkf_id identificateur du
flux de travail parentname tiquette du nud de l'activitflow_start
True pour faire un nud 'begin', recevant un workitem (lment de
travail pour chaque instance de workflow (flux
d'activit)flow_stop True pour faire un nud 'end', terminant le flux
de travail lorsque tous
les lments l'ont atteintjoin_mode comportement logique de ce nud
en ce qui concerne les transitions
entrantes : XOR : activer sur la premire transition d'entre (par
dfaut) AND : attend que toutes les transitions entrantes
deviennent
validessplit_mode comportement logique de ce nud en ce qui
concerne les transitions
sortantes : XOR : une transition valide est ncessaire, envoyant
le workitem
sur elle (par dfaut) OR : envoyer les workitem sur toutes les
transitions valides (0 ou
plus), de manire squentielle
-
Mmento technique OpenERP en franais par Thierry Godin
- 24 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
AND : envoyer un workitem sur toutes les transitions valides
enune seule fois (fork)
kind type de l'action excuter lorsque le nud est activ par une
transition : dummy : pour n'effectuer aucune opration lorsqu'il est
activ (par
dfaut) function : pour invoquer une fonction dtermine par
l'action subflow : sous-flux excuter avec subflow_id, en invoquant
des
mesures pour dterminer l'id d'enregistrement de
l'enregistrementpour lequel le sous-flux doit tre instanci. Si
l'action ne renvoieaucun rsultat, l'lment de travail est
supprim.
stopall : mettre fin au flux de travail lors de
l'activationsubflow_id en cas de sous-flux, id du sublow excuter
(utiliser l'attribut ref ou
search avec un tuple)action appel la mthode de l'objet, utilis
si kind est function ou subflow.
Cette fonction doit galement mettre jour le champ d'tat de
l'objet, parexemple pour un type de fonction :
1. def action_confirmed(self, cr, uid, ids):2. self.write(cr,
uid, ids, { 'state' : 'confirmed' })3. # effectue d'autres tches4.
return True
VII-C - Transitions du flux de travail (bords)
Les conditions sont values dans cet ordre : role_id, signal,
condition, expression
Transitions du flux de travail227. 228. 229. 230.
button_confirm231. 232. 1 == 1233.
act_from, act_to identifiants des activits de source et de
destinationsignal nom d'un bouton de type workflow qui dclenche
cette transitionrole_id rfrence au rle que l'utilisateur doit avoir
pour dclencher la transition
(voir Rles)condition expression Python qui doit valuer la valeur
True pour que la transition
soit dclenche
Astuce :OpenERP dispose d'un diteur de flux de travail
graphique, disponible en passant la vuediagramme tout en affichant
un flux de travail dans :Paramtres > Technique >
Workflows.
VIII - Scurit
Des mcanismes de contrle d'accs doivent tre combins pour aboutir
une politique de scurit cohrente.
VIII-A - Mcanismes de contrle d'accs bass sur le groupe
Les groupes sont crs comme des enregistrements normaux sur le
modle res.groups, et bnficient d'accs auxmenus par des dfinitions
de menu.
-
Mmento technique OpenERP en franais par Thierry Godin
- 25 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
Cependant, mme sans menu, les objets peuvent encore tre
accessibles indirectement, donc les autorisationsactuelles au
niveau de l'objet (create,read,write,unlink) doivent tre dfinies
pour les groupes.
Elles sont gnralement insres via des fichiers CSV l'intrieur des
modules. Il est galement possible derestreindre l'accs des champs
spcifiques sur une vue ou sur un objet en utilisant l'attribut
groups du champ.
ir.model.access.csv234.
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"235.
"access_idea_idea","idea.idea","model_idea_idea","base.group_user",1,1,1,0236.
"access_idea_vote","idea.vote","model_idea_vote","base.group_user",1,1,1,0
VIII-B - Roles
Les rles sont crs comme des enregistrements normaux sur le modle
res.roles et sont utiliss uniquement pourconditionner les
transitions de workflow travers l'attribut role_id des
transitions.
IX - Les assistants (Wizards)
Les assistants dcrivent des sessions d'tats interactifs avec
l'utilisateur travers des formulaires dynamiques. Ilssont
construits sur la base de la classe osv.TransientModel et sont
automatiquement dtruits aprs usage. Ils sontdfinis en utilisant la
mme API et les vues sont des objets osv.Model rguliers.
IX-A - Les modles d'assistant (TransientModel)
Modle d'un assistant237. from osv import fields,osv238. import
datetime239. class cleanup_wizard(osv.TransientModel):240. _name =
'idea.cleanup.wizard'241. _columns = {242. 'idea_age':
fields.integer('Age (in days)'),243. }244. def
cleanup(self,cr,uid,ids,context=None):245. idea_obj =
self.pool.get('idea.idea')246. for wiz in
self.browse(cr,uid,ids):247. if wiz.idea_age
-
Mmento technique OpenERP en franais par Thierry Godin
- 26 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
Vue de l'assistant265. 266. 267. 268.
IX-C - Excution de l'assistant
Ces assistants sont lancs via les enregistrements d'action
rguliers, avec un champ cible spcial utilis pour ouvrirla vue de
l'assistant dans une nouvelle fentre.
Excution de l'assistant269. 270. Cleanup271.
ir.actions.act_window272. idea.cleanup.wizard273. form274. form275.
new276.
X - WebServices - XML-RPC
OpenERP est accessible travers des interfaces XML-RPC, pour
lesquels les bibliothques existent dans denombreux langages.
Exemple Python277. import xmlrpclib278. # ... definir HOST,
PORT, DB, USER, PASS279. url = 'http://%s:%d/xmlrpc/common' %
(HOST,PORT)280. sock = xmlrpclib.ServerProxy(url)281. uid =
sock.login(DB,USER,PASS)282. print "Logged in as %s (uid:%d)" %
(USER,uid)283. # Cre une nouvelle ide284. url =
'http://%s:%d/xmlrpc/object' % (HOST,PORT)285. sock =
xmlrpclib.ServerProxy(url)286. args = {287. 'name' : 'Another
idea',288. 'description' : 'This is another idea of mine',289.
'inventor_id': uid,290. }291. idea_id =
sock.execute(DB,uid,PASS,'idea.idea','create',args)
Exemple PHP293. addParam(new xmlrpcval($DB, "string"));299.
$msg->addParam(new xmlrpcval($USER, "string"));300.
$msg->addParam(new xmlrpcval($PASS, "string"));301. resp =
$client->send($msg);302. uid =
$resp->value()->scalarval()303. echo "Logged in as $USER
(uid:$uid)"304. // Cre une nouvelle ide305. $arrayVal = array(306.
'name'=>new xmlrpcval("Another Idea", "string") ,307.
'description'=>new xmlrpcval("This is another idea of mine" ,
"string"),308. 'inventor_id'=>new xmlrpcval($uid, "int"),309.
);
Note du traducteur :
-
Mmento technique OpenERP en franais par Thierry Godin
- 27 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
Il semblerait que l'exemple PHP ne soit pas complet. Il n'est
fait mention nulle part du modleidea.idea, donc le code ci-dessus
ne devrait pas pouvoir utiliser la table.
XI - Optimisation des performances
En tant que logiciel de gestion d'entreprise qui a gnralement
faire face de grandes quantits d'enregistrements,vous voudriez
peut-tre faire attention aux conseils suivants, pour obtenir des
performances constantes :
ne placez pas d'appels browse() l'intrieur des boucles,
mettez-les avant et n'accdez qu'aux objetsparcourus l'intrieur de
la boucle. L'ORM optimisera le nombre de requtes de base de donnes
bas surles attributs parcourus ;
vitez la rcursivit sur les hirarchies des objets (objets avec
une relation parent_id), en ajoutant deschamps d'entiers
parent_left et parent_right sur votre objet, et en mettant
_parent_store sur True dans votreclasse d'objets. L'ORM va utiliser
une hirarchie de prcommande transversale modifie pour tre en
mesured'effectuer des oprations rcursives (par exemple child_of)
avec des requtes de base de donnes entemps( 1) au lieu de temps( n)
;
ne pas utiliser les champs de fonction la lgre, surtout si vous
les incluez dans la vue liste.Pour optimiser les fonctions des
champs, deux mcanismes sont disponibles :multi : tous les champs
partageant la mme valeur d'attribut multi seront calculs avec un
seul appel lafonction, ce qui devrait alors retourner un
dictionnaire des valeurs dans son plan de valeurs,store : les
champs de fonction avec un attribut store seront stocks dans la
base de donnes et recalculs la demande lorsque les objets de
dclenchement applicables sont modifis. Le format de la spcification
dedclenchement est le suivant :store = {'model': (_ref_fnct,
fields, priority)} (voir l'exemple ci-dessous)
Exemple de code311. def
_get_idea_from_vote(self,cr,uid,ids,context=None):312. res = {}313.
vote_ids =
self.pool.get('idea.vote').browse(cr,uid,ids,context=context)314.
for v in vote_ids:315. res[v.idea_id.id] = True # Store the idea
identifiers in a set316. return res.keys()317. def
_compute(self,cr,uid,ids,field_name,arg,context=None):318. res =
{}319. for idea in self.browse(cr,uid,ids,context=context):320.
vote_num = len(idea.vote_ids)321. vote_sum = sum([v.vote for v in
idea.vote_ids])322. res[idea.id] = {323. 'vote_sum': vote_sum,324.
'vote_avg': (vote_sum/vote_num) if vote_num else 0.0,325. }326.
return res327. _columns = {328. # Ces champs sont recalculs chaque
fois que l'un des votes change329. 'vote_avg':
fields.function(_compute, string='Votes Average',330. store =
{'idea.vote':
(_get_idea_from_vote,['vote'],10)},multi='votes'),331. 'vote_sum':
fields.function(_compute, string='Votes Sum',332. store =
{'idea.vote':
(_get_idea_from_vote,['vote'],10)},multi='votes'),333. }
XII - Communaut/contribution
Les projets OpenERP sont hbergs sur Launchpad (LP), o toutes les
ressources du projet peuvent tre trouves :les branches Bazaar,
suivi des bogues, des plans, des FAQ, etc.
Crez un compte gratuit sur launchpad.net pour tre en mesure de
contribuer.
-
Mmento technique OpenERP en franais par Thierry Godin
- 28 -Les sources prsentes sur cette page sont libres de droits
et vous pouvez les utiliser votre convenance. Par contre, la page
de
prsentation constitue une uvre intellectuelle protge par les
droits d'auteur. Copyright 2013 OpenERP SA. Aucune reproduction,mme
partielle, ne peut tre faite de ce site et de l'ensemble de son
contenu : textes, documents, images, etc. sans
l'autorisationexpresse de l'auteur. Sinon vous encourez selon la
loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et
intrts.
http://thierry-godin.developpez.com/openerp/memento-technique-openerp-fr/
Les groupes LaunchpadGroupes * Membres Restrictions Bazaar/
LaunchpadOpenERP Quality Team(~openerp)
OpenERP Core Team Peut fusionner et intgrer surdes branches
officielles
OpenERP Drivers (~openerp-drivers)
Membres actifs de lacommunaut slectionns
Peut confirmer des bogueset poser des jalons sur lesbogues
OpenERP Community(~openerp-community)
Groupe ouvert, n'importe quipeut se joindre
Possibilit de crer desbranches communautaires ochacun peut
contribuer
*Les membres des groupes suprieurs sont galement membres des
groupes infrieurs
XIII - Licence
Copyright 2010-2013 Open Object Press. Tous droits rservs.
Vous pouvez rcuprer une copie lectronique de ce travail et le
distribuer si vous ne modifiez pas le contenu. Vouspouvez galement
imprimer une copie pour tre lue par vous seul.
Nous avons des contrats avec diffrents diteurs de diffrents pays
pour vendre et distribuer des versions papier oulectroniques de ce
travail (traduites ou non) dans les librairies. Cela permet de
distribuer et de promouvoir le produitOpenERP. Il nous aide aussi
crer des incitations pour payer les contributeurs et auteurs avec
les redevances.
Pour cette raison, l'accord de traduire, modifier ou vendre ce
travail est strictement interdit, sauf si OpenERP S.A.(reprsentant
Open Object Press) vous donne une autorisation crite pour cela.
Bien que toutes les prcautions aient t prises dans la prparation
de cet ouvrage, l'diteur et les auteurs n'assumentaucune
responsabilit pour les erreurs ou omissions, ou pour les dommages
rsultant de l'utilisation de l'informationcontenue dans ce
document.
Publi par Open Object Press, Grand-Rosire, Belgique.
XIV - Remerciements
Remerciements spciaux l'quipe d'OpenERP (OpenERP SA) pour avoir
permis la traduction et la publication decet article.
Le site officiel OpenERP : http://www.openerp.com/
Un grand Merci aux membres de l'quipe de la rdaction de
Developpez.com pour leurs conseils et corrections
Claude Leloup
SynopsisSommaireI - PrambuleII - Installer OpenERPII-A -
Packages d'installationII-B - Installer depuis les sourcesII-C -
Cration de la base de donnes
III - Construire un module OpenERP: Idea (Ide)III-A -
ContexteIII-B - Composition d'un moduleIII-C - Structure typique
d'un moduleIII-D - Service de mappage objet-relationnelIII-E -
Types de champs de l'ORMIII-E-1 - Noms de champs spciaux/rservs
III-F - Travailler avec l'ORM
IV - Construire l'interface du moduleIV-A - Structure XML
communeIV-B - Syntaxe CSV communeIV-C - Menus et actionsIV-C-1 -
Dclaration d'une actionIV-C-2 - Dclaration d'un menu
V - Vues et hritageV-A - Vues formulaires (pour voir/modifier
les enregistrements)V-A-1 - Les lments de formulaire
V-B - Vues dynamiquesV-C - Vues listes et listes d'arborescence
hirarchiqueV-D - Vues fiches KanbanV-E - Vues calendrierV-F -
Diagrammes de GanttV-G - Vues diagrammes (graphes)V-H - Vues de
rechercheV-I - Hritage des vues
VI - RapportsVI-A - Diffrents formats de rapportsVI-B - Les
expressions utilises dans les modles de rapport OpenERP
VII - Les Flux de travail (Workflows)VII-A - Dclaration d'un
flux de travailVII-B - Activits du flux de travail (nuds)VII-C -
Transitions du flux de travail (bords)
VIII - ScuritVIII-A - Mcanismes de contrle d'accs bass sur le
groupeVIII-B - Roles
IX - Les assistants (Wizards)IX-A - Les modles d'assistant
(TransientModel)IX-B - Vues assistantIX-C - Excution de
l'assistant
X - WebServices - XML-RPCXI - Optimisation des performancesXII -
Communaut/contributionXIII - LicenceXIV - Remerciements