#odoo-8 #qweb
#odoo-8 #qweb
Вопрос:
Я работаю с Qweb и Odoo 8, я создал свой отчет в модуле RH, проблема в том, как я могу распечатать этот отчет, если условие
в hr_contract
я добавил одно2многое поле
_columns = {
'contract_job_ids': fields.one2many(
'hr.contract.job',
'contract_id',
'Jobs',
),
Я хочу распечатать этот отчет, только если len(object.contract_job_ids) >= 2
Комментарии:
1. Вы нашли решение?
Ответ №1:
Если вы хотите выполнить определенный код перед печатью вашего отчета (или нет), вы можете создать абстрактную модель, которая определяет функцию render_html, чтобы ваша функция выполнялась при печати отчета, а не общей функции odoo. Это упоминается в документации ЗДЕСЬ
Взгляните на этот пример.
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 reportnYou need more contracts!")
docargs = {
'doc_model': report.model,
'docs': docs,
}
return report_obj.render('your_addon.report_template_id', docargs)