diff --git a/room/models/room_booking.py b/room/models/room_booking.py
index 2779656a2..29ab810a8 100644
--- a/room/models/room_booking.py
+++ b/room/models/room_booking.py
@@ -90,31 +90,6 @@ class RoomBooking(models.Model):
employee_list = [rec.name for rec in i.room_users_ids]
i.room_users_names = ','.join(employee_list)
- @api.onchange('meeting_type_id')
- def _onchange_meeting_type_id(self):
- if self.meeting_type_id:
- host_role_id = self.meeting_type_id.host_id.id
- host_employee = self.env['hr.employee'].search([
- '|',
- ('user_role_ids', 'in', host_role_id),
- ('user_role_id', '=', host_role_id),
- ('company_id', '=', self.meeting_type_id.company_id.id)
- ], limit=1)
- room_user_role_ids = self.meeting_type_id.room_users_ids.ids
- room_employees = self.env['hr.employee'].search([
- '|',
- ('user_role_ids', 'in', room_user_role_ids),
- ('user_role_id', 'in', room_user_role_ids),
- ('id', '!=', host_employee.id),
- ('company_id', '=', self.meeting_type_id.company_id.id)
- ])
- room_user_ids = room_employees.mapped('user_id.id')
- self.host = host_employee.id
- self.room_users_ids = [(6, 0, room_user_ids)]
- else:
- self.room_users_ids = [(5, 0, 0)]
- self.host = False
-
# @api.model_create_multi
# def create(self, vals_list):
# bookings = super(RoomBooking, self).create(vals_list)
diff --git a/room/models/room_meeting_type.py b/room/models/room_meeting_type.py
index d2bfd7edf..e126e494c 100644
--- a/room/models/room_meeting_type.py
+++ b/room/models/room_meeting_type.py
@@ -13,6 +13,7 @@ class RoomMeetingType(models.Model):
room_users_ids = fields.Many2many('soong.user.role', string="出席人员", store=True)
host_user_id = fields.Many2one('res.users', string="主持人")
users_ids = fields.Many2many('res.users', string="出席人员")
+ attendees_ids = fields.Many2many('hr.employee', string="列席人员")
company_id = fields.Many2one('res.company', string="公司", index=True, default=lambda self: self.env.company)
@api.depends('host_id', 'room_users_ids')
diff --git a/room/views/room_meeting_type.xml b/room/views/room_meeting_type.xml
index 8ac40fb90..17776929c 100644
--- a/room/views/room_meeting_type.xml
+++ b/room/views/room_meeting_type.xml
@@ -9,6 +9,7 @@
+
diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py
index d47f92307..abb20b867 100644
--- a/soong_workflow/wizard/soong_workflow_comment_wizard.py
+++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py
@@ -501,13 +501,10 @@ class SoongWorkflowCommentWizard(models.TransientModel):
# 检查是否为并审模式
if self.approval_concatenation == 'bing': # 并审模式考勤异常
- # 获取当前节点应该审批的所有员工
expected_employees = self.employee_ids
- # 就只是一个验证,应该让他不创建就好了,不用提示跳过就行
- # if record_id.log_ids2:
- # log_employee_id = record_id.log_ids2.mapped('done_by').employee_id.id
- # if log_employee_id in expected_employees.ids:
- # raise UserError('该员工已传阅,请勿重复转交')
+ if record_id.log_ids2:
+ log_employee_ids = record_id.log_ids2.mapped('done_by.employee_id.id')
+ self.employee_ids = expected_employees.filtered(lambda emp: emp.id not in log_employee_ids)
# 查找下一个节点
next_node_id = record_id.workflow_id.node_ids.search([
@@ -525,7 +522,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
all_completed = len(completed_logs) == 0
next_node_log_records = self.env["soong.workflow.log"]
if all_completed:
- for employee in expected_employees:
+ for employee in self.employee_ids:
# 检查该员工在下一节点是否已有记录
next_node_employee_log = self.sudo().env["soong.workflow.log"].search([
("model", "=", self.res_model),
diff --git a/yuthon_issue/models/inherit_room_booking.py b/yuthon_issue/models/inherit_room_booking.py
index a5a4a6fac..960745c26 100644
--- a/yuthon_issue/models/inherit_room_booking.py
+++ b/yuthon_issue/models/inherit_room_booking.py
@@ -14,6 +14,39 @@ class RoomBooking(models.Model):
is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company',
search='_search_part_of_company')
+ @api.onchange('meeting_type_id')
+ def _onchange_meeting_type_id(self):
+ # 原有逻辑:设置主持人、会议室人员
+ if self.meeting_type_id:
+ host_role_id = self.meeting_type_id.host_id.id
+ host_employee = self.env['hr.employee'].search([
+ '|',
+ ('user_role_ids', 'in', host_role_id),
+ ('user_role_id', '=', host_role_id),
+ ('company_id', '=', self.meeting_type_id.company_id.id)
+ ], limit=1)
+ room_user_role_ids = self.meeting_type_id.room_users_ids.ids
+ room_employees = self.env['hr.employee'].search([
+ '|',
+ ('user_role_ids', 'in', room_user_role_ids),
+ ('user_role_id', 'in', room_user_role_ids),
+ ('id', '!=', host_employee.id if host_employee else False),
+ ('company_id', '=', self.meeting_type_id.company_id.id)
+ ])
+ room_user_ids = room_employees.mapped('user_id.id')
+ self.host = host_employee.id
+ self.room_users_ids = [(6, 0, room_user_ids)]
+ template_attendee_ids = self.meeting_type_id.attendees_ids.ids
+ if self.issue_meeting_line_ids and template_attendee_ids:
+ for line in self.issue_meeting_line_ids:
+ line.attendees_ids = [(6, 0, template_attendee_ids)]
+ else:
+ self.room_users_ids = [(5, 0, 0)]
+ self.host = False
+ if self.issue_meeting_line_ids:
+ for line in self.issue_meeting_line_ids:
+ line.attendees_ids = [(5, 0, 0)]
+
@api.constrains('name', 'issue_meeting_line_ids')
def _check_name(self):
for record in self:
diff --git a/yuthon_issue/views/inherit_room_booking.xml b/yuthon_issue/views/inherit_room_booking.xml
index 0b8563bcc..b31610ee2 100644
--- a/yuthon_issue/views/inherit_room_booking.xml
+++ b/yuthon_issue/views/inherit_room_booking.xml
@@ -27,7 +27,7 @@
-
+