report - 我们如何打印多个报告,例如我想在一个日期范围内为所有员工打印出勤报告?
问题描述
我尝试了向导的报告,但它不起作用,因为 return 语句打破了循环......然后我尝试创建单独的树视图和表单视图,使用 obj.create 传递值但在此我无法发送字典值到odoo领域。类 AttendanceReportWizardPre(models.TransientModel): _name = "attendance.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,
})
解决方案
推荐阅读
- java - 带有彗星处理器的此 URL 不支持 HTTP 方法 GET
- azure - Azure 搜索 - SearchMode:ANY - 未按预期工作
- php - 无法弄清楚 gmail pub sub 发送 JSON 通知
- hyperledger-fabric - 超级账本结构 java sdk 设置
- sphinx - 连字符在 Sphinx 中没有正确索引
- c++ - 不同类型的模板函数的实例化
- ios - 我想把 UIView 放在键盘上
- vue.js - VueJS - VueX 和 flash 消息
- google-sheets - 在 Google 电子表格中结合 FILTER 和 ArrayFormula
- javascript - 单击按钮时显示表单