Merge pull request !10896 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2026-04-15 12:57:59 +00:00
committed by Gitee
@@ -165,17 +165,21 @@ class VacationOvertimeActive(models.Model):
def open_record(self):
self.ensure_one()
import datetime
import math
year = int(self.select_year)
month = int(self.select_month)
# 计算当月月底
if month == 12:
last_day_date = datetime.date(year, 12, 31)
else:
next_month_first = datetime.date(year, month + 1, 1)
last_day_date = next_month_first - datetime.timedelta(days=1)
last_day = last_day_date.strftime("%Y-%m-%d")
domain = [
# 原始完整条件
original_domain = [
('over_line_id.vacation_id.employee_id', '=', self.employee_id.id),
('is_void', '=', False),
'|',
@@ -187,6 +191,21 @@ class VacationOvertimeActive(models.Model):
('leave_id.start_date', '>', last_day),
]
# 1. 先查询,计算总和
records = self.env['overtime.carryover'].search(original_domain)
total = sum(r.carry_forward_quantity for r in records)
if math.isclose(total, self.carry_forward_quantity, abs_tol=1e-9):
final_domain = original_domain
else:
final_domain = [
('over_line_id.vacation_id.employee_id', '=', self.employee_id.id),
('is_void', '=', False),
('carryover_type', '=', 'fee'),
('carry_forward_date', '=', self.carry_forward_date),
]
# 打开视图
view_id = self.env.ref('yuthon_hr_attendance.view_overtime_carryover_tree1').id
return {
'name': f'加班明细',
@@ -194,6 +213,6 @@ class VacationOvertimeActive(models.Model):
'res_model': 'overtime.carryover',
'view_mode': 'tree',
'view_id': view_id,
'domain': domain,
'domain': final_domain,
'target': 'current',
}