添加功能

This commit is contained in:
李鹏宇
2026-01-08 11:04:14 +08:00
parent ef41d79891
commit 447c3a113b
+32
View File
@@ -646,6 +646,8 @@ class HolidaysRequestBatch(models.Model):
@api.constrains('is_day', 'is_hour', 'leave_ids', 'hour_leave_ids')
def _check_leave_type_and_details(self):
"""检查请假类型和明细行是否符合要求"""
current_date = fields.Date.today()
vacation_date = current_date
VALID_DAILY_HOURS = [2, 4, 6, 8]
for record in self:
if not record.is_day and not record.is_hour:
@@ -673,6 +675,36 @@ class HolidaysRequestBatch(models.Model):
raise ValidationError(
_(f"第{line.sequence or '一'}条小时请假记录:休假时长必须为 2、4、6 或 8 小时才可以保存!")
)
leave_days = 0.0
overtime_days = 0.0
total_annual_leave_days = 0.0 # 年假总天数
total_compensatory_leave_days = 0.0 # 补休总天数
for leave_line in record.leave_ids:
if leave_line.holiday_status_id.name == '年假':
total_annual_leave_days += float(leave_line.number_of_days_display or 0)
elif leave_line.holiday_status_id.name == '补休':
total_compensatory_leave_days += float(leave_line.number_of_days_display or 0)
for hour_leave_line in record.hour_leave_ids:
leave_hours = float(hour_leave_line.leave_hours or 0)
leave_days = leave_hours / 8
if hour_leave_line.holiday_status_id == '年假':
total_annual_leave_days += leave_days
elif hour_leave_line.holiday_status_id == '补休':
total_compensatory_leave_days += leave_days
reports_id = self.env['yuthon.vacation.reports'].search(
[('employee_id', '=', record.users_id.employee_ids.id),
('vacation_date', '=', vacation_date.replace(day=1))
], limit=1)
if reports_id:
leave_days = reports_id.leave
overtime_days = reports_id.working_overtime
if total_annual_leave_days > leave_days:
raise UserError('年假天数额度不足,无法请假')
if total_compensatory_leave_days > overtime_days:
raise UserError('补休天数额度不足,无法请假')
@api.onchange('leave_ids', 'hour_leave_ids', 'employee_id')
def _onchange_leave_dates(self):