Skip to Content
Menu
This question has been flagged
2 Replies
6579 Views

I have a custom report template with header and footer

I extended this header and this footer from "web.external_layout_standard"

How can I specify the number of record on the report page.

For example, I want products to switch to the other page after 16th. I have problems like the picture.

Picture link:

https://i.hizliresim.com/8YZDMk.png

Avatar
Discard
Best Answer

Hey ,

It seems page break issue when rendering data so you can use bootstrap property, try below styles ,

<p style="page-break-before:always;"> </p> (mostly used )

<p style="page-break-after:always"></p>

<div style="page-break-after: auto;"><span style="display: none;"> </span></div>

<p style="page-break-inside: avoid">

<div style="page-break-inside: auto"></div>

for more ref :-

https://stackoverflow.com/questions/32756876/odoo-how-to-include-a-page-break-second-page-in-custom-report-pdf

https://www.w3schools.com/cssref/pr_print_pagebb.asp


Thanks.

Avatar
Discard
Author Best Answer

I have tried all of them but it is not.

Can I be trying in the wrong place?

<t t-if="counter == 16 and line['price_subtotal']">

     <tr class="text-right" style="border:0;border-top:0;">

         <td colspan="6">

             <strong>Ara Toplam:</strong>

             <span>

                <t t-esc="subtotal" t-options="{'widget':'monetary', 'display_currency':o.currency_id}"/>

             </span>

         </td>

     </tr>

     <t t-set="counter" t-value="0" />

    <div style="page-break-after:auto;"><span style="display:none"></span></div>

</t>

<t t-if="line_index == (len(o.invoice_line_ids)-1)">

    <tr class="text-right" style="border:0;border-top:0;">

        <td colspan="6">

            <strong>Toplam:</strong>

            <t t-set="total" t-value="o.amount_total" />

            <span>

                    <t t-esc="total" t-options="{'widget':'monetary', 'display_currency':o.currency_id}"/>

            </span>

        </td>

    </tr>

</t>

Avatar
Discard

Hey,

Can you please put all the code between div tag.you are starting and finishing DIV tag instantly.so add code between the <div> YOUR CODE </div> .so that it will reflect .

just for ex.in my case its like below .

<div style="page-break-before: always">

<div>

<tr>

<th><h4><center><b>Salary Struc</b></center></h4></th>

</tr>

</div>

<br/>

<table width="35%">

<tr style="border-top:1px #b5b1b1;border-style: solid;">

<th style="padding:10px 5px 15px 20px;">Name</th>

<td style="padding:10px 5px 15px 20px;">

<t t-if="c.struct_id"><span t-field="c.struct_id"/>

</t>

<t t-if="not c.struct_id">-</t>

</td>

</tr>

</table>

<br/>

</div>

Thanks.

Author

<div style="page-break-before:always;">

<table class="table">

<tbody>

<t t-set="subtotal" t-value="0"/>

<t t-set="counter" t-value="0" />

<t t-foreach="o.invoice_line_ids" t-as="line">

<tr>

<td style="text-align:center;border:none;width:10%"><span t-esc="line_index + 1"/></td>

<td style="text-align:left;font-size:13px;width:50%;border:none;"><span t-field="line.name"/></td>

<td style="text-align:center;width:10%;border:none">

<span>

<t t-esc="'%.0f'%(line.quantity)"/>

</span>

</td>

<td class="col-xs-1" style="text-align:center;border:none;width:10%"><span t-field="line.price_unit"/></td>

<td class="col-xs-1" style="text-align:center;border:none;width:10%">

<span t-field="line.price_subtotal"

t-options='{"widget": "monetary", "display_currency": o.currency_id}'/>

</td>

<t t-set="subtotal" t-value="subtotal + line.price_subtotal"/>

<t t-set="counter" t-value="counter + 1" />

</tr>

<t t-if="counter == 16 and line['price_subtotal']">

<tr class="text-right" style="border:0;border-top:0;">

<td colspan="6">

<strong>Ara Toplam:</strong>

<span>

<t t-esc="subtotal" t-options="{'widget':'monetary', 'display_currency':o.currency_id}"/>

</span>

</td>

</tr>

<t t-set="counter" t-value="0" />

</t>

<t t-if="line_index == (len(o.invoice_line_ids)-1)">

<tr class="text-right" style="border:0;border-top:0;">

<td colspan="6">

<strong>Toplam:</strong>

<t t-set="total" t-value="o.amount_total" />

<span>

<t t-esc="total" t-options="{'widget':'monetary', 'display_currency':o.currency_id}"/>

</span>

</td>

</tr>

</t>

</t>

</tbody>

</table>

<br/>

</div>

I tried it like you said but it did not happen again.:(