如果在Qweb Odoo 8中的条件打印报告

时间:2016-10-18 14:55:51

标签: odoo-8 qweb

我正在使用Qweb和Odoo 8,我已经在RH模块中创建了我的报告,问题是我如何在条件下打印此报告

hr_contract中我添加了一个one2many字段

_columns = {
    'contract_job_ids': fields.one2many(
        'hr.contract.job',
        'contract_id',
        'Jobs',
    ),

我想在len(object.contract_job_ids) >= 2

时打印此报告

1 个答案:

答案 0 :(得分:0)

如果要在打印(或不打印)报表之前运行特定代码,可以创建一个定义render_html函数的抽象模型,以便在打印报表而不是通用odoo函数时运行函数。这在文档中引用 HERE

看看这个例子。

from openerp import models, fields, api, exceptions

class YourReport(models.AbstractModel):
_name = 'report.your_addon.report_template_id'

@api.multi
def render_html(self, data=None):
    report_obj = self.env['report']
    report = report_obj._get_report_from_name('your_addon.report_template_id')
    docs = self.env['your_addon.your_model'].browse(self._ids)

    for doc in docs:
        if not len(doc.object.contract_job_ids) >= 2:
            raise exceptions.ValidationError("You cant run this report\nYou need more contracts!")

    docargs = {
        'doc_model': report.model,
        'docs': docs,
    }
    return report_obj.render('your_addon.report_template_id', docargs)