ODOO 8 – modification d’une édition Qweb par héritage

Une nouveauté de ODOO 8.0 concerne les éditions dont la solution désormais préconisée par l'éditeur repose sur Qweb ... et bootstrap.

Contrairement aux multiples solutions (RML, LibreOffice, Webkit, Aeroo ...) proposées jusqu'ici dans OpenERP, cette nouvelle solution en permettant l'héritage de rapport, simplifie la modification ou la création d'éditions.

Ne maîtrisant pas bootstrap et peu Qweb, je vais démarrer par une modification simpliste.

Prenons l'exemple du rapport "devis/bon de commande" dans lequel nous désirons ajouter le texte "texte ajouté pour test" avant la liste des articles commandés.

Nous allons procéder par héritage du module standard "sale" en créant un nouveau module "mysale_report" avec l'arborescence et les fichiers suivants :

__init__.py
que nous laissons vide

__openerp__.py
{
    "name" : "Customization Sale Report",
    "version" : "1.0",
    "category" : "Generic Modules",
    'depends' : ['sale',],
    "data" : ['mysale_report.xml',],

    'installable': True,
    'auto_install': False,
}

mysale_report.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <template id="mysale_report" inherit_id="sale.report_saleorder_document">
            <xpath expr="//table[@class='table table-condensed']" position="before">
                <h3>
                   texte ajouté pour test
                </h3>
            </xpath>
        </template>
    </data>
</openerp>

Ensuite, nous mettons à jour la liste des modules

Nous installons le nouveau module

Puis en imprimant un devis, nous observons le nouveau texte affiché.

Pour en savoir plus sur ce sujet, je vous invite à prendre connaissance sur ce même blog, des articles de mars 2015.

* doc officielle sur les rapports Qweb : lien
* autre doc : lien

8 réflexions sur « ODOO 8 – modification d’une édition Qweb par héritage »

  1. problème lors de l'installation

    OpenERP Server Error

    Client Traceback (most recent call last):
    File "C:Program FilesOpenERP 7.0-20150406serveropenerpaddonswebhttp.py", line 204, in dispatch
    File "C:Program FilesOpenERP 7.0-20150406serveropenerpaddonswebcontrollersmain.py", line 1137, in call_button
    File "C:Program FilesOpenERP 7.0-20150406serveropenerpaddonswebcontrollersmain.py", line 1125, in _call_kw
    File "C:Program FilesOpenERP 7.0-20150406serveropenerpaddonswebsession.py", line 42, in proxy
    File "C:Program FilesOpenERP 7.0-20150406serveropenerpaddonswebsession.py", line 30, in proxy_method
    File "C:Program FilesOpenERP 7.0-20150406serveropenerpaddonswebsession.py", line 103, in send

    Server Traceback (most recent call last):
    File "C:Program FilesOpenERP 7.0-20150406serveropenerpaddonswebsession.py", line 89, in send
    File "C:Program FilesOpenERP 7.0-20150406server.openerpnetsvc.py", line 296, in dispatch_rpc
    File "C:Program FilesOpenERP 7.0-20150406server.openerpserviceweb_services.py", line 632, in dispatch
    File "C:Program FilesOpenERP 7.0-20150406server.openerposvosv.py", line 190, in execute_kw
    File "C:Program FilesOpenERP 7.0-20150406server.openerposvosv.py", line 132, in wrapper
    File "C:Program FilesOpenERP 7.0-20150406server.openerposvosv.py", line 199, in execute
    File "C:Program FilesOpenERP 7.0-20150406server.openerposvosv.py", line 187, in execute_cr
    File "C:Program FilesOpenERP 7.0-20150406serveropenerpaddonsbasemodulemodule.py", line 426, in button_immediate_install
    File "C:Program FilesOpenERP 7.0-20150406serveropenerpaddonsbasemodulemodule.py", line 473, in _button_immediate_function
    File "C:Program FilesOpenERP 7.0-20150406server.openerppooler.py", line 39, in restart_pool
    File "C:Program FilesOpenERP 7.0-20150406server.openerpmodulesregistry.py", line 233, in new
    File "C:Program FilesOpenERP 7.0-20150406server.openerpmodulesloading.py", line 355, in load_modules
    File "C:Program FilesOpenERP 7.0-20150406server.openerpmodulesloading.py", line 256, in load_marked_modules
    File "C:Program FilesOpenERP 7.0-20150406server.openerpmodulesloading.py", line 159, in load_module_graph
    File "C:Program FilesOpenERP 7.0-20150406server.openerpmodulesmodule.py", line 405, in load_openerp_module
    File "C:Program FilesOpenERP 7.0-20150406server.openerpmodulesmodule.py", line 133, in load_module
    File "C:Program FilesOpenERP 7.0-20150406serveropenerpaddonshr_payroll_ext__init__.py", line 1, in
    File "C:Program FilesOpenERP 7.0-20150406serveropenerpaddonshr_payroll_extemployee.py", line 1
    from openerp.osv import osv,fields
    ^
    IndentationError: unexpected indent

  2. Bonjour, je viens de suivre vos instructions pour créer un module dans Odoo 8. J'ai créer le fichier myaddons a la base de l'arborescence d'Odoo 8 mais il n’apparaît pas dans "module local" même en ayant mis a jour les modules… Le but de ma manip' est de modifier la mise en page automatique d'un PDF généré par Odoo 8 je ne sais quoi faire d'autre.

    1. Il faut :
      – soit ajouter dans le fichier de configuration openerp-server.conf, le répertoire myaddons dans la variable addons_path
      – soit au lancement de odoo ajouter l'option addons_path , par exemple :
      ./odoo.py –addons-path="./addons,/home/odoo/myaddons"

    2. Ok, merci de vôtre réponse ! j'ai reussi !
      D'une autre pars j'ai un problème avec la génération récurrente des contrats cela n'affiche pas le taux de TVA dans le tableau… je suis entrain d'étudier la vue account.analytic.account.invoice.form.inherit (formulaire) pour ajouter le champ "taxes" mais je ne suis pas sur que se soit ce fichier qu'il faut modifier…

  3. bonjour,

    j'ai placé mon répertoire "mysale_report " sous le répertoire addons mais j'ai le problème suivant lors de l'installation du module
    Odoo Server Error
    Traceback (most recent call last):
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerphttp.py", line 537, in _handle_exception
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerphttp.py", line 574, in dispatch
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerphttp.py", line 310, in _call_function
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerpservicemodel.py", line 118, in wrapper
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerphttp.py", line 307, in checked_call
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerphttp.py", line 803, in __call__
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerphttp.py", line 403, in response_wrap
    File "C:Program Files (x86)Odoo 8.0-20151028serveropenerpaddonswebcontrollersmain.py", line 948, in call_button
    File "C:Program Files (x86)Odoo 8.0-20151028serveropenerpaddonswebcontrollersmain.py", line 936, in _call_kw
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerpapi.py", line 250, in wrapper
    File "C:Program Files (x86)Odoo 8.0-20151028serveropenerpaddonsbasemodulemodule.py", line 447, in button_immediate_install
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerpapi.py", line 250, in wrapper
    File "C:Program Files (x86)Odoo 8.0-20151028serveropenerpaddonsbasemodulemodule.py", line 495, in _button_immediate_function
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerpmodulesregistry.py", line 370, in new
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerpmodulesloading.py", line 355, in load_modules
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerpmodulesloading.py", line 255, in load_marked_modules
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerpmodulesloading.py", line 176, in load_module_graph
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerpmodulesloading.py", line 118, in _load_data
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerptoolsconvert.py", line 901, in convert_file
    File "C:Program Files (x86)Odoo 8.0-20151028server.openerptoolsconvert.py", line 974, in convert_xml_import
    File "lxml.etree.pyx", line 3239, in lxml.etree.parse (srclxmllxml.etree.c:69955)
    File "parser.pxi", line 1769, in lxml.etree._parseDocument (srclxmllxml.etree.c:102257)
    File "parser.pxi", line 1789, in lxml.etree._parseFilelikeDocument (srclxmllxml.etree.c:102516)
    File "parser.pxi", line 1684, in lxml.etree._parseDocFromFilelike (srclxmllxml.etree.c:101442)
    File "parser.pxi", line 1134, in lxml.etree._BaseParser._parseDocFromFilelike (srclxmllxml.etree.c:97069)
    File "parser.pxi", line 582, in lxml.etree._ParserContext._handleParseResultDoc (srclxmllxml.etree.c:91275)
    File "parser.pxi", line 683, in lxml.etree._handleParseResult (srclxmllxml.etree.c:92461)
    File "parser.pxi", line 622, in lxml.etree._raiseParseError (srclxmllxml.etree.c:91757)
    XMLSyntaxError: Input is not proper UTF-8, indicate encoding !
    Bytes: 0xE9 0x20 0x70 0x6F, line 7, column 31

  4. merci pour cet article, et pour tous les autres que vous avez écrits sur odoo 8
    mon problème est le suivant :
    comment traduire le texte mis dans une édition qweb? j’essaie de créer un terme dans configuration/traductions/termes de l’application,
    mais odoo me demande le nom du champ traduit…
    comment faire ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *