Reputation: 611
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>
Upvotes: 0
Views: 1623
Reputation: 517
This module can assist you in resolving your issue. It is the OCA module that enables you to use 4 classes in QWEB reports:
not-first-page
: displays the element on every page except the firstnot-last-page
: displays the element on every page except the lastfirst-page
: displays the element only on the first pagelast-page
: displays the element only on the last pageModule link: Report Qweb Element Page Visibility
Upvotes: -1
Reputation: 347
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.
Upvotes: 0
Reputation: 376
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>
Upvotes: 0