Archives mensuelles : mars 2015

ODOO 8 – Editions Qweb – Suppression entête (9/9)

Il est parfois utile de supprimer l'entête (par exemple, avoir une entête uniquement sur la 1ère page).
Pour cela, il faut modifier le fichier x_sale_report.xml :

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <template id="x_header" inherit_id="report.external_layout_header">
            <xpath expr="//div[@class='header']" position="replace" />

        </template>

        <!-- etc ... -->

    </data>
</openerp>

Il faut ensuite créer un nouveau fichier x_report_paperformat.xml, en se basant sur le fichier par défaut odoo/addons/report/data/report_paperformat.xml et en modifiant les 2 lignes en gras ci-dessous :

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <record id="paperformat_xxx" model="report.paperformat">
            <field name="name">A4 xxx</field>
            <field name="default" eval="True" />
            <field name="format">A4</field>
            <field name="page_height">0</field>
            <field name="page_width">0</field>
            <field name="orientation">Portrait</field>
            <field name="margin_top">5</field>
            <field name="margin_bottom">23</field>
            <field name="margin_left">7</field>
            <field name="margin_right">7</field>
            <field name="header_line" eval="False" />
            <field name="header_spacing">0</field>
            <field name="dpi">90</field>
        </record>
    </data>
</openerp>

puis ajouter dans le fichier __openerp__.py , la référence à ce fichier (cf en gras) :
{
    "name" : "Customization Sale Report",
    "version" : "1.0",
    "category" : "Generic Modules",
    'depends' : ['sale',],
    "data" : ['x_sale_report.xml','x_report_paperformat.xml',],
    "installable": True,
    "active": True
}

Pour terminer, il faut modifier la configuration de la société en affectant au champ "paper format", la nouvelle valeur créée "A4 xxx"

 

ODOO 8 – Editions Qweb – Styles CSS (8/9)

Il est possible d'ajouter ou de modifier des styles CSS avec la balise <style> :
<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <template id="x_sale_report" inherit_id="sale.report_saleorder_document">
            <xpath expr="//div[@class='page']" position="replace">
                <div class="page">

                   <style type="text/css">
                         h1   {font-size: 16; font-weight:bold;text-decoration:underline;}
                         table#t01 {text-align: center;width: 75%; border-left: 1px solid black; border-right: 1px solid black;}
                  </style>

                      <h1> Texte blabla ...</h1>
                      <table id="t01">
                              <!-- etc ... -->
                      </table>
                 </div>
            </xpath>
        </template>

    </data>
</openerp>

ODOO 8 – Editions Qweb – Utilisation de Bootstrap (7/9)

Le positionnement des textes et/ou images se fait à l'aide de Twitter Bootstrap.
Le principe est de placer son texte dans des lignes ("row") et des colonnes (ex: "col-xs-*") sachant qu'il faut toujours avoir 12 colonnes dans une ligne :
<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <template id="x_sale_report" inherit_id="sale.report_saleorder_document">
            <xpath expr="//div[@class='page']" position="replace">
                <div class="page">

                    <div class="row">
                        <div class="col-xs-3">
                               <!-- etc -->              
                        </div>
                        <div class="col-xs-9 text-right" style="font-weight:bold">
                               <!-- etc -->                              
                        </div>
                    </div>

                </div>
            </xpath>
        </template>

    </data>
</openerp>

ODOO 8 – Editions Qweb – modification du corps de l’édition (5/9)

Pour modifier complètement le corps de l'édition, il faut intervenir sur le fichier x_sale_report.xml en préparant le squelette suivant :
<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <template id="x_sale_report" inherit_id="sale.report_saleorder_document">
            <xpath expr="//div[@class='page']" position="replace">
                <div class="page">

<!-- mettre le contenu de la page ici -->


                </div>
            </xpath>
        </template>

    </data>
</openerp>

A noter que le fichier de référence (à partir duquel les modifications seront faites) est dans notre exemple : addons/sale/views/report_saleorder.xml

ODOO 8 – Editions Qweb – Modification de l’entête (4/9)

Pour modifier l'entête, il faut intervenir sur le fichier x_sale_report.xml
Voici un exemple de modification qui consiste à retirer les 2 traits de l'entête par défaut :
<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <template id="x_header" inherit_id="report.external_layout_header">
            <xpath expr="//div[@class='header']" position="replace">
            <div class="header">
                <div class="row">
                        <div class="col-xs-3">
                            <img t-if="company.logo" t-att-src="'data:image/png;base64,%s' % company.logo" style="max-height: 45px;"/>
                        </div>
                        <div class="col-xs-9 text-right" style="margin-top:20px;" t-field="company.rml_header1"/>
                    </div>
                <div class="row">
                        <div class="col-xs-3">
                            <div t-field="company.partner_id" t-field-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": true}'/>
                        </div>
                </div>
            </div>
            </xpath>
        </template>
    </data>
</openerp>

J'aurai pu utiliser une clause Xpath plus restrictive et permettant moins de redondance par rapport à l'entête par défaut, mais ce n'était pas ici mon objectif.

ODOO 8 – Editions Qweb – Modification du pied de page (3/9)

Pour modifier le pied de page, il faut intervenir sur le fichier x_sale_report.xml
Voici un exemple de modification :
<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <template id="x_footer" inherit_id="report.external_layout_footer">
            <xpath expr="//div[@class='footer']" position="replace">
                <div class="footer">
                       <div class="text-center" style="border-top: 1px solid black; font-size: 8px;">
                         Société à responsabilité limitée (SARL) - Capital de xxx Euros - SIRET: xxxxxx
                          <br />
                     NAF-APE: xxx - RCS/RM: xxxx - Num. TVA: xxxx
                          <ul class="list-inline">
                             <li>Page:</li>
                             <li><span class="page"/></li>
                             <li>/</li>
                             <li><span class="topage"/></li>
                          </ul>
                       </div>
                </div>
            </xpath>
        </template>
    </data>
</openerp>

Voici le résultat :

ODOO 8 – Articles sur les éditions Qweb (1/9)

Devant le manque de documentation sur le sujet, je débute la rédaction d'une série d'articles sur les éditions Qweb.
Ces articles vont venir en complément d'un article précédent sur le sujet.

Nous prendrons comme exemple, l'édition des devis/commandes que nous allons modifier par héritage du fichier existant addons/sale/views/report_saleorder.xml

Pour débuter, nous allons créer un nouveau module x_sale_report comprenant les fichiers suivants :

__init__.py
que nous laissons vide

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

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

x_sale_report.xml
<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
         <!-- a compléter par la suite -->
    </data>
</openerp>

Voici l'édition du devis avant toute modification