diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py index 4652a6c76..151661a89 100644 --- a/soong_workflow/wizard/soong_workflow_comment_wizard.py +++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py @@ -94,8 +94,8 @@ class SoongWorkflowCommentWizard(models.TransientModel): @api.onchange('scope_type', 'employee_ids1', 'department_id', 'company_id') def _onchange_employee_ids1(self): + self.employee_ids = False if not self.employee_ids1: - self.employee_ids = False return filtered_employees = self.employee_ids1 # 范围过滤 @@ -209,6 +209,7 @@ class SoongWorkflowCommentWizard(models.TransientModel): @api.onchange('trans_link_id') def onchange_trans_employee_ids(self): for record in self: + # 先清空 record_id = self.env[record.res_model].browse(record.res_id) if record.res_model and record.res_id else None ctx_links = self.env.context.get('all_workflow_links', []) valid_links = self.env['trans.link'].browse(ctx_links) if isinstance(ctx_links, (list, tuple)) else ctx_links diff --git a/yuthon_catering/models/yuthon_catering.py b/yuthon_catering/models/yuthon_catering.py index 1811a4bcf..91e74ed61 100644 --- a/yuthon_catering/models/yuthon_catering.py +++ b/yuthon_catering/models/yuthon_catering.py @@ -316,21 +316,27 @@ class YuthonCatering(models.Model): return False def is_leave(self, current_data, employee): - att_id = self.env['hr.attendance'].search([ + leaves = self.env['hr.leave'].search([ ('employee_id', '=', employee.id), - ('current_data', '=', current_data) - ], limit=1) - if not (att_id and att_id.workflow_id and att_id.workflow_id.name == '请假'): - return False - leave_record = self.env[att_id.workflow_id.res_model].browse(att_id.workflow_id.res_id) - if not leave_record: - return False - if not (leave_record.start_date and leave_record.end_date): - return False - total_leave_days = leave_record.days + 1 - used_days = (current_data - leave_record.start_date).days + 1 - remaining_days = total_leave_days - used_days - return remaining_days >= 0 + ('state', '=', 'validate'), + ]) + for leave in leaves: + if leave.date_from.date() <= current_data <= leave.date_to.date(): + return True + return False + + def is_maternity_leave(self, employee): + """判断员工当前是否在产假期间""" + today = fields.Date.today() + leaves = self.env['hr.leave'].search([ + ('employee_id', '=', employee.id), + ('state', '=', 'validate'), + ('holiday_status_id.name', '=', '产假'), + ]) + for leave in leaves: + if leave.date_from.date() <= today <= leave.date_to.date(): + return True + return False # 定义定时任务方法,每天九点半发送消息提醒 def cron_send_message(self): @@ -352,13 +358,16 @@ class YuthonCatering(models.Model): return # 判断今天是否为工作日 today = fields.Date.today() - if not self._process_shift_days(today): + if not self._process_shift_days(today) : # 如果不是工作日,则不发送提醒 return # 发送通用提醒消息 employees = self._get_active_conf_employees() for employee in employees: + # 产假期间不发消息 + if self.is_maternity_leave(employee): + continue if employee.user_id: # 确保员工有关联的用户 # 构造跳转URL,格式为 f'https://phone.thtzjt.com/phone/Restaurant/(users_id) users_id = employee.user_id.id