0
votes

I'm working on Odoo 14 , I want to display the header only on the first page and footer only on the last page , How can I do it ? Any help please?? Thanks.

    <template id="report_invoice_document_extend" inherit_id="account.report_invoice_document">
       <xpath expr="//t[@t-call='web.external_layout']" position="attributes">
            <attribute name="t-call">my_module.external_invoice_layout</attribute>
       </xpath>
    </template>
 
<template id="external_layout_standard">
       <div t-attf-class="header o_company_#{company.id}_layout " t-att-style="report_header_style" >
       ...
    </div>

    <div t-attf-class="article o_report_layout_standard o_company_#{company.id}_layout"  t-att-data-oe-model="o and o._name" t-att-data-oe-id="o and o.id" t-att-data-oe-lang="o and o.env.context.get('lang')">
       ....
    </div>
</template>
       
<template id="external_invoice_layout">
    <t t-if="not o" t-set="o" t-value="doc"/>

    <t t-if="not company">
        <!-- Multicompany -->
        <t t-if="company_id">
            <t t-set="company" t-value="company_id"/>
        </t>
        <t t-elif="o and 'company_id' in o">
            <t t-set="company" t-value="o.company_id.sudo()"/>
        </t>
        <t t-else="else">
            <t t-set="company" t-value="res_company"/>
        </t>
    </t>
    <t t-call="my_module.external_layout_standard">
        <t t-raw="0"/>
    </t>
</template>
2

2 Answers

0
votes

I implemented my custom report like that but not the same wit you.But you can reference my code.You can use last-page class.

You sent Today at 4:26 PM
<div class="footer" t-attf-style="font-size:{{style.footer_font}}px !important;font-family:{{style.font_family}} !important;">
                 <div class="last-page">
                <div class="row">
                  <div class="col-12">
                    <div class="col-6 float-right" style="padding-left:0px; padding-right:0px; page-break-inside: avoid !important;">
                        <table class="table table-condensed" t-attf-style="color:{{style.text_color}};font-size:{{int(style.body_font)+4}}px;"><tbody>
                            
                            <tr t-attf-style="border-top: 1px solid {{style.text_color}};">
                                <td t-attf-style="border-top: 1px solid {{style.text_color}} !important;"><strong>Total Quantity</strong></td>
                                <td class="text-right" t-attf-style="border-top: 1px solid {{style.text_color}} !important;">
                                    <span t-esc="sum(line.product_qty for line in o.move_lines.filtered(lambda move: move.state not in ('cancel')))"/>
                                </td>
                            </tr>
                            <tr t-attf-style="border-top: 1px solid {{style.text_color}};">
                                <td t-attf-style="border-top: 1px solid {{style.text_color}} !important;"/>
                                <td class="text-right" t-attf-style="border-top: 1px solid {{style.text_color}} !important;"> 
                                </td>
                            </tr>
                            <tr t-attf-style="border-top: 1px solid {{style.text_color}};">
                                <td t-attf-style="border-top: 1px solid {{style.text_color}} !important;"/>
                                <td class="text-right" t-attf-style="border-top: 1px solid {{style.text_color}} !important;"> 
                                </td>
                            </tr>
                           
                            </tbody>
                        </table>
                </div>
            </div>
        </div>
    </div>
    <div>
0
votes

In report, inside the body you can define header and footer tag which replaces the default header and footer. If you don't want to define any header or footer then you can put header and footer tags itself by not giving any code inside it.