添加功能
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user