28
Mémento technique OpenERP en français Open Source RAD avec OpenERP 7,0 Par Thierry Godin Date de publication : 19 novembre 2013 Dernière mise à jour : 18 décembre 2014 Cet article est une traduction française du Memento Technique d'OpenERP v7.0 Version du fichier original : 08/11/2013. Avec l'aimable autorisation de la société OpenERP SA. Commentez

Openerp Memento Technique Fr

Embed Size (px)

DESCRIPTION

Odoo

Citation preview

  • 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