2016-10-18 4 views
1

Я работаю с Qweb и Odoo 8, я создал свой отчет в модуле RH, проблема заключается в том, как я могу напечатать этот отчет, если условиеПечать отчета, если условие в Qweb Odoo 8

в hr_contract Я ве добавил one2many поля

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

Я хочу напечатать этот отчет только если len(object.contract_job_ids) >= 2

+0

Вы нашли решение? – Zety

ответ

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) 
Смежные вопросы