This commit is contained in:
李鹏宇
2026-01-10 15:21:11 +08:00
2 changed files with 9 additions and 11 deletions
+6 -9
View File
@@ -533,11 +533,10 @@ class HrAttendance(models.Model):
确保选择期间每位员工至少有一条记录
若没有则创建一条默认记录
"""
start_date = fields.Date.from_string('2025-12-01')
start_date = fields.Date.from_string('2026-01-01')
end_date = fields.Date.from_string('2026-01-09')
# 获取所有员工
existing_employees = self.env['hr.employee'].search([('name', 'not in', ['郭一鸣','罗白义', '罗琼芳', '肖琼', '李芳萍', '钱康', 'Administrator'])])
existing_employees = self.env['hr.employee'].search([('name', 'not in', ['Administrator'])])
if not existing_employees:
return
@@ -550,16 +549,14 @@ class HrAttendance(models.Model):
existing_records = self.search([
('employee_id', 'in', existing_employees.ids),
('check_in', '>=', fields.Date.to_string(start_date)),
('check_in', '<=', fields.Date.to_string(end_date + timedelta(days=1)))
('current_data', '>=', fields.Date.to_string(start_date)),
('current_data', '<=', fields.Date.to_string(end_date + timedelta(days=1)))
])
existing_map = {}
for record in existing_records:
record_date = fields.Date.from_string(record.check_in) if record.check_in else fields.Date.from_string(
record.check_out)
if not record_date:
if not record.current_data:
continue
key = (record.employee_id.id, fields.Date.to_string(record_date))
key = (record.employee_id.id, fields.Date.to_string(record.current_data))
existing_map[key] = True
# 检查每个员工在每个日期是否有记录
@@ -324,8 +324,9 @@ class HrAttendanceDetail(models.Model):
hours = int(float_time)
minutes = int((float_time - hours) * 60)
return fields.Datetime.to_datetime(f"{base_date} {hours:02d}:{minutes:02d}:00")
sch_check_in_time = float_to_datetime(breastfeeding_record.check_in, current_date) - timedelta(hours=8)
sch_check_out_time = float_to_datetime(breastfeeding_record.check_out, current_date)- timedelta(hours=8)
if breastfeeding_record:
sch_check_in_time = float_to_datetime(breastfeeding_record.check_in, current_date) - timedelta(hours=8)
sch_check_out_time = float_to_datetime(breastfeeding_record.check_out, current_date)- timedelta(hours=8)
is_early_card, is_late_card, is_abnormal, is_warning, absenteeism_card, is_no_card = self.state_judgment(employee, check_in_time, check_out_time, sch_check_in_time, sch_check_out_time, current_data, is_manual)
is_expatriation = self.env['expatriation.approval'].search([('work_end', '=', True),('expatriates_ids', 'in', [employee.id]), ('is_effect', '=', False)])