Skip to Content
Menu
This question has been flagged

I have a report that should print multiple payslips in one paper.

Using an AbstractModel, the `_get_report_values(self, docids, data=None)` function returns the value data, where data is a list containing all the values I want to loop through for each report.

The idea was to use flexbox and arrange 3 columns in one paper using bootstrap classes.
This idea works well for about 5 payslips but after that it just prints 1 payslip occupying the full page.

I am looking for any possible ways of implementing this.

The sample of the python code is:


```python
from odoo import models, api


class AlpharamaPayslip(models.AbstractModel):
    _name = 'report.employee_allowances.alpharama_payslip'
    _description = 'Alpharama Payslip'

    @api.model
    def _get_report_values(self, docids, data=None):
        docs = self.env['hr.payslip'].browse(docids)
        data = []
        for doc in docs:
            val = {
                'name': doc.employee_id.name,
                'department': doc.employee_id.department_id.name,
                'payroll': doc.employee_id.payroll_no,
               }
        data.append(val)

    return {
       'docs':docs,
       'data': data,
       }
```




I have managed to create this functionality with this XML code below:
I have removed some part that are not that necessary and maintaining just a bare template.

```xml
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <data noupdate="0">
        <template id="alpharama_payslip">
            <t t-call="web.html_container">
                <t t-call="web.external_layout">
                    <div class="page d-flex" style="flex-wrap: wrap;">
                        <div class="row">
                            <t t-foreach="data" t-as="d">
                                <div class="col-4" style="height: 100%">
                                    <div style="border-bottom: 1px solid black; padding: 10px 0;">
                                        <div>
                                            Name:
                                            <t t-esc="d['name']" />
                                        </div>
                                        <div>
                                            Department:
                                            <t t-esc="d['department']" />
                                        </div>
                                    </div>
                                </div>
                            </t>
                        </div>
                    </div>
                </t>
            </t>

        </template>
    </data>
</odoo>


Avatar
Discard
Related Posts Replies Views Activity
1
Oct 24
2051
1
Jun 20
3685
1
Mar 24
3861
0
Jul 21
1371
1
Feb 21
1746