From 1cc7c081a6ae43a2904829bcffd3fa32d36534b6 Mon Sep 17 00:00:00 2001 From: zhouzhou <123@qq.com> Date: Sat, 7 Dec 2024 22:18:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/attendance_time_data.xml | 30 ++-- .../models/yuthon_run_planning.py | 129 +++++++++++------- .../inherit_hr_payroll_structure_views.xml | 2 +- 3 files changed, 92 insertions(+), 69 deletions(-) diff --git a/yuthon_hr_attendance/data/attendance_time_data.xml b/yuthon_hr_attendance/data/attendance_time_data.xml index 559fed9c9..f9d27cc1c 100644 --- a/yuthon_hr_attendance/data/attendance_time_data.xml +++ b/yuthon_hr_attendance/data/attendance_time_data.xml @@ -15,21 +15,21 @@ - - - - - - - - - - - - - - - + + + 定时任务:上班打卡提醒 + + code + model.card_remind() + + + 1 + days + + -1 + + + 定时任务:下班打卡提醒 diff --git a/yuthon_hr_attendance/models/yuthon_run_planning.py b/yuthon_hr_attendance/models/yuthon_run_planning.py index b50068450..cb0a66e98 100644 --- a/yuthon_hr_attendance/models/yuthon_run_planning.py +++ b/yuthon_hr_attendance/models/yuthon_run_planning.py @@ -33,8 +33,8 @@ class YuthonRunPlanning(models.Model): self.env['planning.slot'].create({ 'template_id': self.env['planning.slot.template'].search([('role_id', '=', role_a.id), ('planning_name', '=', '白班')]).id, 'resource_id': resource_id.id, - 'start_datetime': datetime(current_date.year, current_date.month, current_date.day, start_time) + timedelta(hours=16), - 'end_datetime': datetime(current_date.year, current_date.month, current_date.day, end_time) + timedelta(hours=16), + 'start_datetime': datetime(current_date.year, current_date.month, current_date.day, start_time) + timedelta(hours=16) - timedelta(days=1), + 'end_datetime': datetime(current_date.year, current_date.month, current_date.day, end_time) + timedelta(hours=16) - timedelta(days=1), 'role_id': role_a.id, 'allocated_hours': 8, }) @@ -49,16 +49,23 @@ class YuthonRunPlanning(models.Model): while current_date <= last_day_of_month: for employee in range(0, len(self.engineering_run_ids)): i = i + 1 - slot_id = all_slot.search([('resource_id', '=', self.engineering_run_ids[employee].employee_id.resource_id.id)]).sorted('start_datetime')[i] - slot_id.sudo().write({ - 'template_id': self.env['planning.slot.template'].search([('role_id', '=', role_a.id), ('planning_name', '=', '中值夜班')]).id, - 'start_datetime': datetime(current_date.year, current_date.month, current_date.day, - start_time2) + timedelta(hours=16) - timedelta(days=1), - 'end_datetime': datetime(current_date.year, current_date.month, current_date.day, - end_time2) + timedelta(days=1, hours=16) - timedelta(days=1), - 'role_id': role_a.id, - 'allocated_hours': 8, - }) + slot_id = all_slot.search([('resource_id', '=', self.engineering_run_ids[employee].employee_id.resource_id.id)]).sorted('start_datetime') + if i < 31: + slot_id[i].write({ + 'template_id': self.env['planning.slot.template'].search([('role_id', '=', role_a.id), ('planning_name', '=', '中值夜班')]).id, + 'start_datetime': datetime(current_date.year, current_date.month, current_date.day,start_time2) + timedelta(hours=16) - timedelta(days=1), + 'end_datetime': datetime(current_date.year, current_date.month, current_date.day,end_time2) + timedelta(days=1, hours=16) - timedelta(days=1), + 'role_id': role_a.id, + 'allocated_hours': 8, + }) + if i + 1 < len(slot_id): + slot_id[i + 1].write({ + 'template_id': self.env['planning.slot.template'].search([('role_id', '=', role_a.id), ('planning_name', '=', '白班中午值班')]).id, + 'start_datetime': datetime(current_date.year, current_date.month, current_date.day,start_time) + timedelta(days=1, hours=16) - timedelta(days=1), + 'end_datetime': datetime(current_date.year, current_date.month, current_date.day,end_time) + timedelta(days=1, hours=16) - timedelta(days=1), + 'role_id': role_a.id, + 'allocated_hours': 8, + }) current_date += timedelta(days=1) if current_date > last_day_of_month: break @@ -77,19 +84,13 @@ class YuthonRunPlanning(models.Model): current_date = first_day_of_month while current_date <= last_day_of_month: resource_id = employee.employee_id.resource_id - if other_data[resource_id.id] == datetime(current_date.year, current_date.month, - current_date.day).weekday(): - pass - else: + if not other_data[resource_id.id] == datetime(current_date.year, current_date.month,current_date.day).weekday(): self.env['planning.slot'].create({ 'template_id': self.env['planning.slot.template'].search([('role_id', '=', role_a.id), ('planning_name', '=', '白班')]).id, 'resource_id': resource_id.id, - 'start_datetime': datetime(current_date.year, current_date.month, current_date.day, - start_time) + timedelta(hours=16) - timedelta(days=1), - 'end_datetime': datetime(current_date.year, current_date.month, current_date.day, - end_time) + timedelta(hours=16) - timedelta(days=1), + 'start_datetime': datetime(current_date.year, current_date.month, current_date.day,start_time) + timedelta(hours=16), + 'end_datetime': datetime(current_date.year, current_date.month, current_date.day,end_time) + timedelta(hours=16), 'role_id': role_a.id, - '' 'allocated_hours': 8, }) current_date += timedelta(days=1) @@ -126,9 +127,9 @@ class YuthonRunPlanning(models.Model): [('role_id', '=', role_a.id), ('planning_name', '=', '白班')]).id, 'resource_id': resource_id.id, 'start_datetime': datetime(current_date.year, current_date.month, current_date.day, - start_time) + timedelta(hours=16)- timedelta(days=1), + start_time) + timedelta(hours=16), 'end_datetime': datetime(current_date.year, current_date.month, current_date.day, - end_time) + timedelta(hours=16)- timedelta(days=1), + end_time) + timedelta(hours=16), 'role_id': role_a.id, 'allocated_hours': 8, }) @@ -144,21 +145,33 @@ class YuthonRunPlanning(models.Model): current_date = first_day_of_month i = -1 while current_date <= last_day_of_month: - for employee in range(0, len(self.high_run_ids)): + for employee in range(0, len(self.engineering_run_ids)): i = i + 1 slot_id = all_slot.search( - [('resource_id', '=', self.high_run_ids[employee].employee_id.resource_id.id)]).sorted( - 'start_datetime')[i] - slot_id.sudo().write({ - 'template_id': self.env['planning.slot.template'].search( - [('role_id', '=', role_a.id), ('planning_name', '=', '中值夜班')]).id, - 'start_datetime': datetime(current_date.year, current_date.month, current_date.day, - start_time2) + timedelta(hours=16)- timedelta(days=1), - 'end_datetime': datetime(current_date.year, current_date.month, current_date.day, - end_time2) + timedelta(days=1, hours=16)- timedelta(days=1), - 'role_id': role_a.id, - 'allocated_hours': 8, - }) + [('resource_id', '=', self.engineering_run_ids[employee].employee_id.resource_id.id)]).sorted( + 'start_datetime') + if i < 31: + slot_id[i].write({ + 'template_id': self.env['planning.slot.template'].search( + [('role_id', '=', role_a.id), ('planning_name', '=', '中值夜班')]).id, + 'start_datetime': datetime(current_date.year, current_date.month, current_date.day, + start_time2) + timedelta(hours=16) - timedelta(days=1), + 'end_datetime': datetime(current_date.year, current_date.month, current_date.day, + end_time2) + timedelta(days=1, hours=16) - timedelta(days=1), + 'role_id': role_a.id, + 'allocated_hours': 8, + }) + if i + 1 < len(slot_id): + slot_id[i + 1].write({ + 'template_id': self.env['planning.slot.template'].search( + [('role_id', '=', role_a.id), ('planning_name', '=', '白班中午值班')]).id, + 'start_datetime': datetime(current_date.year, current_date.month, current_date.day, + start_time) + timedelta(days=1, hours=16) - timedelta(days=1), + 'end_datetime': datetime(current_date.year, current_date.month, current_date.day, + end_time) + timedelta(days=1, hours=16) - timedelta(days=1), + 'role_id': role_a.id, + 'allocated_hours': 8, + }) current_date += timedelta(days=1) if current_date > last_day_of_month: break @@ -192,10 +205,8 @@ class YuthonRunPlanning(models.Model): 'template_id': self.env['planning.slot.template'].search( [('role_id', '=', role_a.id), ('planning_name', '=', '白班')]).id, 'resource_id': resource_id.id, - 'start_datetime': datetime(current_date.year, current_date.month, current_date.day, - start_time) + timedelta(hours=16)- timedelta(days=1), - 'end_datetime': datetime(current_date.year, current_date.month, current_date.day, - end_time) + timedelta(hours=16)- timedelta(days=1), + 'start_datetime': datetime(current_date.year, current_date.month, current_date.day,start_time) + timedelta(hours=16) - timedelta(days=1), + 'end_datetime': datetime(current_date.year, current_date.month, current_date.day,end_time) + timedelta(hours=16)- timedelta(days=1), 'role_id': role_a.id, 'allocated_hours': 8, }) @@ -211,21 +222,33 @@ class YuthonRunPlanning(models.Model): current_date = first_day_of_month i = -1 while current_date <= last_day_of_month: - for employee in range(0, len(self.all_run_ids)): + for employee in range(0, len(self.engineering_run_ids)): i = i + 1 slot_id = all_slot.search( - [('resource_id', '=', self.all_run_ids[employee].employee_id.resource_id.id)]).sorted( - 'start_datetime')[i] - slot_id.sudo().write({ - 'template_id': self.env['planning.slot.template'].search( - [('role_id', '=', role_a.id), ('planning_name', '=', '中值夜班')]).id, - 'start_datetime': datetime(current_date.year, current_date.month, current_date.day, - start_time2) + timedelta(hours=16)- timedelta(days=1), - 'end_datetime': datetime(current_date.year, current_date.month, current_date.day, - end_time2) + timedelta(days=1, hours=16)- timedelta(days=1), - 'role_id': role_a.id, - 'allocated_hours': 8, - }) + [('resource_id', '=', self.engineering_run_ids[employee].employee_id.resource_id.id)]).sorted( + 'start_datetime') + if i < 31: + slot_id[i].write({ + 'template_id': self.env['planning.slot.template'].search( + [('role_id', '=', role_a.id), ('planning_name', '=', '中值夜班')]).id, + 'start_datetime': datetime(current_date.year, current_date.month, current_date.day, + start_time2) + timedelta(hours=16) - timedelta(days=1), + 'end_datetime': datetime(current_date.year, current_date.month, current_date.day, + end_time2) + timedelta(days=1, hours=16) - timedelta(days=1), + 'role_id': role_a.id, + 'allocated_hours': 8, + }) + if i + 1 < len(slot_id): + slot_id[i + 1].write({ + 'template_id': self.env['planning.slot.template'].search( + [('role_id', '=', role_a.id), ('planning_name', '=', '白班中午值班')]).id, + 'start_datetime': datetime(current_date.year, current_date.month, current_date.day, + start_time) + timedelta(days=1, hours=16) - timedelta(days=1), + 'end_datetime': datetime(current_date.year, current_date.month, current_date.day, + end_time) + timedelta(days=1, hours=16) - timedelta(days=1), + 'role_id': role_a.id, + 'allocated_hours': 8, + }) current_date += timedelta(days=1) if current_date > last_day_of_month: break diff --git a/yuthon_salary/views/inherit_hr_payroll_structure_views.xml b/yuthon_salary/views/inherit_hr_payroll_structure_views.xml index 4592c3eee..cedd822bb 100644 --- a/yuthon_salary/views/inherit_hr_payroll_structure_views.xml +++ b/yuthon_salary/views/inherit_hr_payroll_structure_views.xml @@ -12,7 +12,7 @@ 1 - 职级名称 + hide