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