@@ -32,7 +32,29 @@ class YuthonOvertimeLine(models.Model):
|
||||
@api.depends('last_balance', 'remainder_year')
|
||||
def _compute_vacation_sum(self):
|
||||
for rec in self:
|
||||
rec.vacation_sum = rec.last_balance + rec.remainder_year
|
||||
current_year = int(self.select_year)
|
||||
current_month = int(self.select_month)
|
||||
next_month = current_month + 1 if current_month < 12 else 1
|
||||
next_year = current_year if current_month < 12 else current_year + 1
|
||||
cutoff_date_last = date(next_year, next_month, 1) - timedelta(days=1)
|
||||
cutoff_dt = datetime.combine(cutoff_date_last, datetime.max.time())
|
||||
dec_2025_end = datetime(2025, 12, 31, 23, 59, 59)
|
||||
if self.employee_id.company_id.name == '集团本部':
|
||||
domain = [
|
||||
('employee_id', '=', self.employee_id.id),
|
||||
('carry_forward_state', '!=', 'completed'),
|
||||
'|',
|
||||
('is_initial_number', '=', True),
|
||||
'&', ('is_initial_number', '=', False),
|
||||
'&', ('update_type', '=', 'add'),
|
||||
'&', ('workflow_record_id', '!=', False),
|
||||
'&', ('start_time', '>=', dec_2025_end),
|
||||
'&', ('vacation_id', '!=', False),
|
||||
('start_time', '<', cutoff_dt)
|
||||
]
|
||||
over_ids = self.env['vacation.over.line'].search(domain)
|
||||
for over_id in over_ids:
|
||||
self.vacation_sum += over_id.remaining_quantity
|
||||
|
||||
def open_record(self):
|
||||
self.ensure_one()
|
||||
@@ -43,11 +65,6 @@ class YuthonOvertimeLine(models.Model):
|
||||
cutoff_date_last = date(next_year, next_month, 1) - timedelta(days=1)
|
||||
cutoff_dt = datetime.combine(cutoff_date_last, datetime.max.time())
|
||||
dec_2025_end = datetime(2025, 12, 31, 23, 59, 59)
|
||||
domain = [
|
||||
('start_time', '<', cutoff_dt),
|
||||
('remaining_quantity', '!=', 0.0),
|
||||
('employee_id', '=', self.employee_id.id)
|
||||
]
|
||||
if self.employee_id.company_id.name == '集团本部':
|
||||
domain = [
|
||||
('employee_id', '=', self.employee_id.id),
|
||||
@@ -62,16 +79,16 @@ class YuthonOvertimeLine(models.Model):
|
||||
('start_time', '<', cutoff_dt)
|
||||
]
|
||||
|
||||
tree_id = self.env.ref("yuthon_hr_attendance.view_yuthon_vacation_overtime_tree").id
|
||||
return {
|
||||
'views': [[tree_id, 'tree']],
|
||||
'name': f'加班明细',
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'vacation.over.line',
|
||||
'view_mode': 'tree,form',
|
||||
'domain': domain,
|
||||
'target': 'current'
|
||||
}
|
||||
tree_id = self.env.ref("yuthon_hr_attendance.view_yuthon_vacation_overtime_tree").id
|
||||
return {
|
||||
'views': [[tree_id, 'tree']],
|
||||
'name': f'加班明细',
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'vacation.over.line',
|
||||
'view_mode': 'tree,form',
|
||||
'domain': domain,
|
||||
'target': 'current'
|
||||
}
|
||||
|
||||
def overtime_wizard(self):
|
||||
overtime_ids = self.env["yuthon.overtime.line"].browse(
|
||||
|
||||
Reference in New Issue
Block a user