From 9ef6efa04a1b1c5e5a0f1eeb1e7a0b5ddc1e9fb7 Mon Sep 17 00:00:00 2001 From: zhou <123@> Date: Mon, 11 Aug 2025 17:01:51 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_holiday/models/inherit_hr_leave.py | 92 ----------------------- 1 file changed, 92 deletions(-) diff --git a/yuthon_holiday/models/inherit_hr_leave.py b/yuthon_holiday/models/inherit_hr_leave.py index 789648dc7..81b3e1be8 100644 --- a/yuthon_holiday/models/inherit_hr_leave.py +++ b/yuthon_holiday/models/inherit_hr_leave.py @@ -185,98 +185,6 @@ class HrLeave(models.Model): for leave in leave_ids: leave.state = 'draft' - @api.model - def create(self, vals): - allocation = super(HrLeave, self).create(vals) - if allocation.state != 'validate': - return allocation - employees = self.env['hr.employee'].browse(allocation.employee_id.id) - # 根据假期类型执行不同逻辑 - if allocation.holiday_status_id.name == '年假': - self._process_annual_leave(allocation, employees) - elif allocation.holiday_status_id.name == '补休': - self._process_compensatory_leave(allocation, employees) - return allocation - - def _process_annual_leave(self, allocation, employees): - """处理年假逻辑""" - days = allocation.number_of_days * 8 - for employee in employees: - # 更新员工年假余额 - employee.write({ - 'user_year': employee.user_year + days - }) - reports_id = self.env['yuthon.vacation.reports'].search([ - ('employee_id', '=', employee.id) - ], limit=1) - if not reports_id: - reports_id = self.env['yuthon.vacation.reports'].create({ - 'employee_id': employee.id, - }) - self.env['vacation.leave.line'].create({ - 'vacation_id': reports_id.id, - 'update_type': 'reduce', - 'update_date': fields.Datetime.now(), - 'update_lines': days, - 'text': '休假', - 'allocation_type': 'vacation', - }) - - def _process_compensatory_leave(self, allocation, employees): - """处理补休逻辑""" - for employee in employees: - reports_id = self.env['yuthon.vacation.reports'].search([ - ('employee_id', '=', employee.id) - ], limit=1) - if not reports_id: - reports_id = self.env['yuthon.vacation.reports'].create({ - 'employee_id': employee.id, - }) - self.env['vacation.over.line'].create({ - 'vacation_id': reports_id.id, - 'employee_id': employee.id, - 'update_type': 'reduce', - 'workday': allocation.number_of_days * 8, - 'legal_day': 0, - 'public_holidays': 0, - 'meal_number': 0, - 'update_date': fields.Date.today(), - 'is_void': False, - 'text': f'补休', - }) - - def unlink(self): - for record in self: - if record.employee_id and record.holiday_status_id.name == '年假': - employee = record.employee_id - days = record.number_of_hours_display - lines_to_delete = self.env['vacation.leave.line'].search([ - ('vacation_id.employee_id', '=', employee.id), - ('update_type', '=', 'reduce'), - ('update_lines', '=', days), - ('allocation_type', '=', 'vacation'), - ]) - if lines_to_delete: - lines_to_delete.is_void = True - employee.write({ - 'user_year': employee.user_year - days - }) - - elif record.employee_id and record.holiday_status_id.name == '补休': - employee = record.employee_id - days = record.number_of_hours_display - over_lines_to_delete = self.env['vacation.over.line'].search([ - ('employee_id', '=', employee.id), - ('workday', '=', days), - ('update_type', '=', 'reduce'), - ('text', 'ilike', f'%{record.name}%'), # 通过名称模糊匹配 - ]) - - if over_lines_to_delete: - over_lines_to_delete.write({'is_void': True}) - - return super(HrLeave, self).unlink() - @api.depends('request_hour_from') def _compute_request_hour_from_real(self): for record in self: From 214b18254904d3e8ce251e9383d7de12d714d310 Mon Sep 17 00:00:00 2001 From: zhou <123@> Date: Mon, 11 Aug 2025 17:06:38 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_holiday/models/inherit_hr_leave.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/yuthon_holiday/models/inherit_hr_leave.py b/yuthon_holiday/models/inherit_hr_leave.py index 81b3e1be8..ee3ff0632 100644 --- a/yuthon_holiday/models/inherit_hr_leave.py +++ b/yuthon_holiday/models/inherit_hr_leave.py @@ -416,6 +416,8 @@ class HolidaysRequestBatch(models.Model): # 提交 def action_submit(self): + self.leave_ids.action_validate() + self.hour_leave_ids.action_validate() """提交请假申请,区分年假和其他假期处理""" self._process_specific_leaves('年假', is_annual_leave=True) other_leave_types = [