@@ -437,60 +437,52 @@ class HolidaysRequestBatch(models.Model):
|
||||
|
||||
@api.onchange('leave_ids', 'hour_leave_ids', 'employee_id')
|
||||
def _onchange_leave_dates(self):
|
||||
# 初始化变量
|
||||
all_dates = []
|
||||
total_days = 0
|
||||
first_hour_leave = self.hour_leave_ids[0] if self.hour_leave_ids else None
|
||||
|
||||
# 收集所有日期并计算总天数
|
||||
for leave in self.leave_ids:
|
||||
if leave.request_date_from:
|
||||
all_dates.append(leave.request_date_from)
|
||||
if leave.request_date_to:
|
||||
all_dates.append(leave.request_date_to)
|
||||
total_days += leave.number_of_days_display if hasattr(leave, 'number_of_days_display') else 0
|
||||
|
||||
for line in self.hour_leave_ids:
|
||||
if line.request_date_from:
|
||||
all_dates.append(line.request_date_from)
|
||||
|
||||
if all_dates:
|
||||
self.start_date = min(all_dates)
|
||||
self.end_date = max(all_dates)
|
||||
else:
|
||||
self.start_date = False
|
||||
self.end_date = False
|
||||
# 设置开始和结束日期
|
||||
self.start_date = min(all_dates) if all_dates else False
|
||||
self.end_date = max(all_dates) if all_dates else False
|
||||
|
||||
if self.employee_id:
|
||||
if self.hour_leave_ids and not self.leave_ids:
|
||||
# 只按小时请假的情况
|
||||
first_hour_leave = self.hour_leave_ids[0]
|
||||
date_str = first_hour_leave.request_date_from.strftime('%Y-%m-%d')
|
||||
hours = first_hour_leave.number_of_hours_text if first_hour_leave.number_of_hours_text else 0
|
||||
title = f"{self.employee_id.name}的休假 {date_str}"
|
||||
if hours:
|
||||
title += f"共计{hours}"
|
||||
self.name = title
|
||||
elif self.leave_ids and not self.hour_leave_ids:
|
||||
# 只按天请假的情况
|
||||
start_date_str = self.start_date.strftime('%Y-%m-%d')
|
||||
end_date_str = self.end_date.strftime('%Y-%m-%d')
|
||||
self.name = f"{self.employee_id.name}的请假 {start_date_str}~{end_date_str}共计{int(total_days)}天"
|
||||
elif self.leave_ids and self.hour_leave_ids:
|
||||
# 混合请假的情况
|
||||
start_date_str = self.start_date.strftime('%Y-%m-%d')
|
||||
end_date_str = self.end_date.strftime('%Y-%m-%d')
|
||||
first_hour_leave = self.hour_leave_ids[0]
|
||||
hours = first_hour_leave.number_of_hours_text if first_hour_leave.number_of_hours_text else 0
|
||||
title = f"{self.employee_id.name}的请假 {start_date_str}~{end_date_str}共计{int(total_days)}天"
|
||||
if hours:
|
||||
title += f"{hours}"
|
||||
self.name = title
|
||||
else:
|
||||
self.name = f"{self.employee_id.name}"
|
||||
else:
|
||||
self.name = ""
|
||||
self.days = 0
|
||||
# 计算小时请假的天数
|
||||
hours_days = 0
|
||||
for line in self.hour_leave_ids:
|
||||
match = re.search(r'(\d+(?:\.\d+)?)', line.number_of_hours_text or '')
|
||||
self.days += float(match.group(1)) / 8 if match else 0
|
||||
for leave in self.leave_ids:
|
||||
self.days += leave.number_of_days
|
||||
hours_days += float(match.group(1)) / 8 if match else 0
|
||||
|
||||
self.days = total_days + hours_days
|
||||
|
||||
# 生成名称
|
||||
if self.employee_id:
|
||||
name_parts = [f"{self.employee_id.name}的"]
|
||||
|
||||
if self.start_date and self.end_date:
|
||||
date_part = f"{self.start_date.strftime('%Y-%m-%d')}~{self.end_date.strftime('%Y-%m-%d')}"
|
||||
name_parts.append(date_part)
|
||||
|
||||
if self.leave_ids:
|
||||
name_parts.append(f"共计{int(total_days)}天")
|
||||
|
||||
if first_hour_leave and first_hour_leave.number_of_hours_text:
|
||||
name_parts.append(first_hour_leave.number_of_hours_text)
|
||||
|
||||
self.name = " ".join(name_parts)
|
||||
else:
|
||||
self.name = ""
|
||||
|
||||
|
||||
@api.depends('users_id')
|
||||
|
||||
Reference in New Issue
Block a user