我正在使用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
答案 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)