首页 > 解决方案 > Odoo 多个 qweb 报告共享一篇论文

问题描述

我有一份报告应该在一张纸上打印多张工资单。

使用 AbstractModel,该_get_report_values(self, docids, data=None)函数返回值数据,其中数据是一个列表,其中包含我要为每个报告循环遍历的所有值。

这个想法是使用 flexbox 并使用引导类在一篇论文中安排 3 列。这个想法适用于大约 5 个工资单,但之后它只打印 1 个占据整页的工资单。

我正在寻找任何可能的方法来实现这一点。

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,
       }

我已经设法用下面的 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>

标签: odooodoo-12odoo-13

解决方案


推荐阅读