Report 我们如何打印多份报告?例如,我想打印一个日期范围内所有员工的考勤报告?

Report 我们如何打印多份报告?例如,我想打印一个日期范围内所有员工的考勤报告?,report,odoo-13,Report,Odoo 13,我已尝试从向导报告,但它不工作,因为返回语句中断了循环。。。 然后,我尝试创建单独的树视图和表单视图,使用obj.create传递值,但在这种情况下,我无法将字典值发送到odoo字段。 课堂参与者报告向导PreModels.TransientModel: _name=attention.report.wizard select_all_employees = fields.Boolean(string="Select All Employees") person_ids =

我已尝试从向导报告,但它不工作,因为返回语句中断了循环。。。 然后,我尝试创建单独的树视图和表单视图,使用obj.create传递值,但在这种情况下,我无法将字典值发送到odoo字段。 课堂参与者报告向导PreModels.TransientModel: _name=attention.report.wizard

select_all_employees = fields.Boolean(string="Select All Employees")
person_ids = fields.Many2many('hr.employee', string="Employees")
date_from = fields.Date(string="From")
date_to = fields.Date(string="To")
employee_id = fields.Many2one('hr.employee')
data = fields.Binary(compute="generate_report")

@api.onchange('select_all_employees')
def select_employees(self):
    if self.select_all_employees:
        # print(type(self.person_ids))
        var = self.env['hr.employee'].search([('id', '>', 0)])
        # print(type(var))
        list = []
        for rec in var:
            list.append(rec.id)
        self.person_ids = list
    else:
        self.person_ids = [(6, 0, [])] # for clearing the selected employees

def generate_report(self):
    user_tz = pytz.timezone(self.env.context.get('tz')) or self.env.user.tz
    for employee in self.person_ids:
        if self.env["attendance.report.wizard"].search([('employee_id', '=', employee.id)]):
            break
        else:
            data = {
                'model': 'attendance.report.wizard.pre',
                'form': self.read()[0]
            }
            selected_person = employee
            attendances = self.env['hr.attendance'].search([('employee_id', '=', selected_person.id),
                                                            ('check_in', '>=', self.date_from),
                                                            ('check_in', '<=', self.date_to)])
            attendances_list = []
            for att in attendances:
                vals = {
                    'employee_code': att.x_employee_code,
                    'person_id': att.employee_id.name,
                    'check_in': pytz.utc.localize(att.check_in).astimezone(user_tz),
                    'check_out': pytz.utc.localize(att.check_out).astimezone(user_tz),
                    'shift_name': att.employee_id.resource_calendar_id.name,
                    'worked_hours': int(att.worked_hours)
                }
                attendances_list.append(vals)
            data['attendances'] = attendances_list
            var_obj = self.env['attendance.report.wizard']
            var_obj.create({
                'employee_id': employee.id,
                'date_from': self.date_from,
                'date_to': self.date_to,
                'data': data,
            })