Распечатать отчет, если условие в Qweb Odoo 8

#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)