Odoo16: Where is the docs variable used in the template defined?

28 Views Asked by At

I have created 2 recrods, action report and template for pdf, but I have never defined the docs variable in the model, so how can Odoo understand it, or is it defined by default somewhere? So what if I want to define additional variables like "text1" : "hello" to use in the template? Thanks All

enter image description here

1

There are 1 best solutions below

0
Kenly On BEST ANSWER

The docs variable is set while rendering the report,in _get_rendering_context function

1/ You can pass them through data to report_action

Example: (from employees summary report)

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/ You can also use a custom report and define additional variables in _get_report_values

Example: (from holidays summary report)

@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(),
    }