diff --git a/yuthon_hr_attendance/models/hr_attendance_month.py b/yuthon_hr_attendance/models/hr_attendance_month.py
index d8a6d295c..f37f98cfa 100644
--- a/yuthon_hr_attendance/models/hr_attendance_month.py
+++ b/yuthon_hr_attendance/models/hr_attendance_month.py
@@ -91,18 +91,23 @@ class HrAttendanceMonthDetail(models.Model):
('11', '11月份'),
('12', '12月份')
], string="考勤月份")
- # todo 需要什么字段往上加什么
required_attendance_days = fields.Float(string="应出勤天数")
actual_attendance_days = fields.Float(string="实际出勤天数")
compensatory_leave = fields.Float(string="调休(小时)")
leave_of_absence = fields.Float(string="事假(小时)")
leave_of_sick = fields.Float(string="病假(天)")
- come_late = fields.Float(string="迟到(次)")
- work_overtime = fields.Float(string="加班(小时)")
statutory_leave = fields.Float(string="法定假(天)")
+ work_overtime = fields.Float(string="加班(小时)")
+ # todo 需要什么字段往上加什么
+ # 打卡
+ come_late = fields.Float(string="迟到(次)")
+ is_early_card = fields.Float(string="早退(次)")
+ is_no_card = fields.Float(string="缺卡(次)")
+ # 假期
+ unpaid_leave = fields.Float(string="无薪假(小时)")
+
note = fields.Char(string='备注')
-
hr_attendance_month_id = fields.Many2one('hr.attendance.month', string="出勤月度汇总", ondelete="cascade", readonly=True)
company_id = fields.Many2one(related="hr_attendance_month_id.company_id")
signature = fields.Image(string="签名", copy=False, attachment=True, max_width=1024, max_height=1024)
@@ -220,19 +225,24 @@ class HrAttendanceMonthDetail(models.Model):
"""
self.ensure_one()
days = calendar.monthrange(int(self.current_year), int(self.current_month))[1]
- come_late = 0
+ is_late_card = 0
+ is_early_card = 0
+ is_no_card = 0
for n in range(days):
# 根据出勤时间判断是否打卡
current_date = datetime.date(int(self.current_year), int(self.current_month), n + 1)
attendance_obj = self.env["hr.attendance"].sudo().search([('employee_id', '=', employee.id), ("current_data", '=', current_date)])
- is_come_late = False
for obj in attendance_obj:
- if obj.is_come_late():
- # 当天有打卡记录说明已经出勤
- is_come_late = True
- if is_come_late is True:
- come_late += 1
- return come_late
+ # 迟到
+ if obj.is_late_card:
+ is_late_card += 1
+ # 早退
+ if obj.is_early_card:
+ is_early_card += 1
+ # 缺卡
+ if obj.is_no_card:
+ is_no_card += 1
+ return is_late_card, is_early_card, is_no_card
def _hr_attendance_month_detail_action(self):
"""
@@ -294,7 +304,7 @@ class HrAttendanceMonthDetail(models.Model):
('date_to', '>=', date_start)
]
if type_list:
- domain.append(('holiday_status_id.holiday_type', 'in', type_list))
+ domain.append(('holiday_status_id.name', 'in', type_list))
hr_leaves = self.env['hr.leave'].sudo().search(domain)
hours = 0.0
days = 0.0
@@ -316,41 +326,21 @@ class HrAttendanceMonthDetail(models.Model):
# 排班的进行统计
if self.employee_id.default_planning_role_id:
# todo 需要什么字段往上加什么
- # # 应出勤天数
- # required_attendance_days = self._get_planning_required_attendance_days(self.employee_id)
- # self.required_attendance_days = required_attendance_days
- # # 实际出勤天数
- # actual_attendance_days = self._get_actual_attendance_days(self.employee_id)
- # self.actual_attendance_days = actual_attendance_days
- # 迟到(次):上班时间 < 上班打卡时间
- come_late = self._get_come_late(self.employee_id)
- self.come_late = come_late
+ # 迟到, 早退, 缺卡
+ self.come_late, self.is_early_card, self.is_no_card = self._get_come_late(self.employee_id)
+ # 无薪假:hr.leave表
+ days, hours = self._get_hr_leave_type(self.employee_id, ['无薪假'])
+ self.unpaid_leave = hours
+
# 行政的进行统计
if not self.employee_id.default_planning_role_id:
# todo 需要什么字段往上加什么
- # # 应出勤天数
- # required_attendance_days = self._get_required_attendance_days(self.employee_id)
- # self.required_attendance_days = required_attendance_days
- # # 实际出勤天数
- # actual_attendance_days = self._get_actual_attendance_days(self.employee_id)
- # self.actual_attendance_days = actual_attendance_days
- # # 调休(小时):取员工表上字段
- # work_overtime, compensatory_leave = self._get_overtime_annual_summary(self.employee_id)
- # self.compensatory_leave = compensatory_leave
- # # 事假(小时):hr.leave表
- # days, hours = self._get_hr_leave_type(self.employee_id, ['personal'])
- # self.leave_of_absence = hours + days * 8
- # # 病假(天):hr.leave表
- # days, hours = self._get_hr_leave_type(self.employee_id, ['sick'])
- # self.leave_of_sick = hours // 8 + days
- # 迟到(次):上班时间 < 上班打卡时间
- come_late = self._get_come_late(self.employee_id)
- self.come_late = come_late
- # # 加班(小时):取员工表上字段
- # self.work_overtime = work_overtime
- # 法定假(天):hr.leave表
- # days, hours = self._get_hr_leave_type(self.employee_id, ['marriage', 'maternity', 'paternity', 'funeral', 'parental'])
- # self.statutory_leave = hours // 8 + days
+ # 迟到, 早退, 缺卡
+ self.come_late, self.is_early_card, self.is_no_card = self._get_come_late(self.employee_id)
+ # 无薪假:hr.leave表
+ days, hours = self._get_hr_leave_type(self.employee_id, ['无薪假'])
+ self.unpaid_leave = hours
+
return True
def update_attendance_month(self):
diff --git a/yuthon_hr_attendance/views/hr_attendance_month_views.xml b/yuthon_hr_attendance/views/hr_attendance_month_views.xml
index 128f17563..5f2124530 100644
--- a/yuthon_hr_attendance/views/hr_attendance_month_views.xml
+++ b/yuthon_hr_attendance/views/hr_attendance_month_views.xml
@@ -67,20 +67,17 @@
-
-
-
-
-
-
+
+
-
-
+
+
+
+
+
-
-
diff --git a/yuthon_hr_attendance/views/hr_attendance_portal_templates.xml b/yuthon_hr_attendance/views/hr_attendance_portal_templates.xml
index f62344880..d810ae870 100644
--- a/yuthon_hr_attendance/views/hr_attendance_portal_templates.xml
+++ b/yuthon_hr_attendance/views/hr_attendance_portal_templates.xml
@@ -15,29 +15,17 @@
- -
- 应出勤天数:天
-
- -
- 实际出勤天数:天
-
- -
- 调休(小时):小时
-
- -
- 事假(小时):小时
-
- -
- 病假(天):天
-
-
迟到(次):次
-
- 加班(小时):小时
+ 早退(次):次
-
- 法定假(天):天
+ 缺卡(次):次
+
+ -
+ 无薪假(小时):小时