Odoo16: 模板中docs变量在哪里定义?

2 投票
1 回答
26 浏览
提问于 2025-04-12 23:51

我创建了两个记录,一个是行动报告,另一个是PDF模板,但我在模型中从来没有定义过docs这个变量,那么Odoo是怎么理解这个变量的呢?或者说这个变量是不是默认在某个地方定义了?如果我想定义一些额外的变量,比如“text1” : “hello”,在模板中使用,这该怎么做呢?谢谢大家!

在这里输入图片描述

1 个回答

3

在生成报告的时候,docs这个变量会被设置,具体是在_get_rendering_context这个函数里。

1/ 你可以通过data把它们传递给report_action

示例:(来自员工总结报告)

def print_report(self):
    self.ensure_one()
    [data] = self.read()
    data['emp'] = self.env.context.get('active_ids', [])
    employees = self.env['hr.employee'].browse(data['emp'])
    datas = {
        'ids': [],
        'model': 'hr.employee',
        'form': data
    }
    return self.env.ref('hr_holidays.action_report_holidayssummary').report_action(employees, data=datas)

2/ 你也可以使用自定义报告,并在_get_report_values中定义额外的变量。

示例:(来自假期总结报告)

@api.model
def _get_report_values(self, docids, data=None):
    if not data.get('form'):
        raise UserError(_("Form content is missing, this report cannot be printed."))

    holidays_report = self.env['ir.actions.report']._get_report_from_name('hr_holidays.report_holidayssummary')
    holidays = self.env['hr.leave'].browse(self.ids)
    return {
        'doc_ids': self.ids,
        'doc_model': holidays_report.model,
        'docs': holidays,
        'get_header_info': self._get_header_info(data['form']['date_from'], data['form']['holiday_type']),
        'get_day': self._get_day(data['form']['date_from']),
        'get_months': self._get_months(data['form']['date_from']),
        'get_data_from_report': self._get_data_from_report(data['form']),
        'get_holidays_status': self._get_holidays_status(),
    }

撰写回答