@@ -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',
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user