From 336ca45edb3ab3125f01a17e6cd67688bee8634c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Tue, 8 Sep 2026 15:02:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E5=8B=A4=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wizard/attendance_iot_import_user_wizard.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/attendance_iot/wizard/attendance_iot_import_user_wizard.py b/attendance_iot/wizard/attendance_iot_import_user_wizard.py index 95ed7a29f..bba5989ad 100644 --- a/attendance_iot/wizard/attendance_iot_import_user_wizard.py +++ b/attendance_iot/wizard/attendance_iot_import_user_wizard.py @@ -16,15 +16,16 @@ class AttendanceIotImportUserWizard(models.TransientModel): # 入口一:员工列表按钮进入,context 带了选中的员工 id 列表 employee_ids = self.env.context.get('default_employee_ids') if employee_ids: - # 入口一:员工列表按钮进入,取第一个选中员工的关联考勤机作为源设备 + # 入口一:员工列表按钮进入,取第一个选中员工关联的考勤机作为源设备 source_employee = self.env['hr.employee'].browse(employee_ids[0]) - # 用 .exists() 过滤掉已删除的孤儿记录(避免访问已删 attendance.iot 报「缺失记录」) - source_iots = source_employee.attendance_iot_ids.exists() + # 注意:hr.employee.attendance_iot_ids 是 attendance.iot.user(绑定记录)的一对多字段, + # 需先 mapped 出真正的设备 attendance_iot_id,并用 .exists() 过滤已删除的孤儿记录 + source_iots = source_employee.attendance_iot_ids.mapped('attendance_iot_id').exists() if source_iots: - # 取第一个关联考勤机为源设备:上方显示源设备,下方带出同公司其余考勤机(排除源设备,避免重复) + # 取第一个关联设备为源设备:上方显示源设备,下方带出同公司其余考勤机(排除源设备,避免重复) source_iot = source_iots[0] company_iots = self.env['attendance.iot'].search( - [('company_id', '=', source_iot.company_id.id), ('id', '!=', source_iot.id)]) + [('company_id', '=', source_iot.company_id.id), ('id', 'not in', source_iots.ids)]) res.update({ 'current_attendance_iot_id': source_iot.id, 'attendance_iot_ids': [(6, 0, company_iots.ids)],