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