I need to show footer only on the last page of a pdf report. It's possibile or I'm a dreamer?
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Accounting
- Inventory
- PoS
- Project
- MRP
This question has been flagged
Hello Francesco I have been wanting to submit this to odoo for quite a while and maybe I will, here is how I did it:
<template id="report_minimal_layout" inherit_id="report.minimal_layout" >
<xpath expr="//head" position="inside">
<script src='/module_name/static/js/pagination_hide.js'></script> <-- Must be added in the module -->
</xpath>
<xpath expr="//body" position="attributes">
<attribute t-translation="off" name="onload">subst(); pagination_hide();</attribute>
</xpath>
</template>
Contents of the js file:
function pagination_hide() {
var vars = {};
var x = document.location.search.substring(1).split('&');
for (var i in x) {
var z = x[i].split('=', 2);
vars[z[0]] = unescape(z[1]);
}
if (vars['page'] <= 1){
hidden_nodes = document.getElementsByClassName("hide_firstpage");
for (i = 0; i < hidden_nodes.length; i++) {
hidden_nodes[i].style.visibility = "hidden";
}
}
if (vars['page'] == vars['topage']){
hidden_nodes = document.getElementsByClassName("show_lastpage");
for (i = 0; i < hidden_nodes.length; i++) {
hidden_nodes[i].style.display = "block";
}
}
if (vars['page'] == 1){
hidden_nodes = document.getElementsByClassName("show_firstpage");
for (i = 0; i < hidden_nodes.length; i++) {
hidden_nodes[i].style.display = "block";
}
}
}
Of course this will not actually remove the footer and allow for the body content to stretch to the very bottom but it show/hides depending on the page it is on using css to alter the display property
After doing this you can use these helper classes which do pretty much what they say
Hello Francesco,
This module from OCA can solve your problem
https://github.com/OCA/reporting-engine/tree/8.0/report_qweb_element_page_visibility
A module implemeting a magical `last-page` class has been developed (by me) to showcase a basic possible implementation.
https://github.com/0k/report_extended
A stackoverflow answer explain how this works in a viable place for posting code:
http://stackoverflow.com/questions/28172283/checking-for-last-page-in-qweb-reports-in-odoo
Nice similar solution also on this blog post:
Enjoying the discussion? Don't just read, join in!
Create an account today to enjoy exclusive features and engage with our awesome community!
Sign up
AFAIK, there's no official way to achieve that but, considering this: https://github.com/odoo/odoo/blob/8.0/addons/report/static/src/js/subst.js you can hide/show you footer by checking the page number (via custom javascript). For instance, you'll find the page number and the total number of pages here in the default report layout: https://github.com/odoo/odoo/blob/8.0/addons/report/views/layouts.xml#L107
converted my answer to comment by mistake and it deleted your comment...sorry. btw, i tested it and you're right. that doen't work :(