diff --git a/yuthon_hr_attendance/models/duty_adjustment_schedule.py b/yuthon_hr_attendance/models/duty_adjustment_schedule.py index 15739fcc8..2c365384e 100644 --- a/yuthon_hr_attendance/models/duty_adjustment_schedule.py +++ b/yuthon_hr_attendance/models/duty_adjustment_schedule.py @@ -57,8 +57,11 @@ class DutyAdjustmentSchedule(models.Model): if record.vacation_id.vacation_state == 'confirmed': raise UserError('该假期额度已确认,无法进行调休操作') record.is_adjustment = True - over_record = self.env['vacation.over.line'].search([('employee_id', '=', record.employee_id.id), ('update_date', '=', record.duty_date), - ('vacation_id', '=', record.vacation_id.id)], limit=1) + over_record = self.env['vacation.over.line'].search([ + ('employee_id', '=', record.employee_id.id), + ('update_date', '=', record.duty_date), + ('vacation_id', '=', record.vacation_id.id) + ], limit=1) if not over_record: self.env['vacation.over.line'].create({ 'employee_id': record.employee_id.id, @@ -69,9 +72,16 @@ class DutyAdjustmentSchedule(models.Model): 'update_type': 'add', 'text': '值班调休' }) - record.vacation_id.update_line() + current_report = record.vacation_id + future_reps = self.env['yuthon.vacation.reports'].search([ + ('employee_id', '=', record.employee_id.id), + ('vacation_date', '>=', current_report.vacation_date) + ]) + for rep in future_reps: + rep.update_line() def revoke(self): + self = self.exists() self.is_adjustment = False for record in self: vacation_id = record.vacation_id @@ -83,7 +93,13 @@ class DutyAdjustmentSchedule(models.Model): ], limit=1) if over_record: over_record.unlink() - vacation_id.update_line() + current_report = vacation_id + future_reps = self.env['yuthon.vacation.reports'].search([ + ('employee_id', '=', record.employee_id.id), + ('vacation_date', '>=', current_report.vacation_date) + ]) + for rep in future_reps: + rep.update_line() def _process_shift_days(self, current_data): """