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 :