hr_attendance/models/hr_employee_base.py

33 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, models
class HrEmployeeBase(models.AbstractModel):
_inherit = "hr.employee.base"
@api.depends("user_id.im_status", "attendance_state")
def _compute_presence_state(self):
"""
Override to include checkin/checkout in the presence state
Attendance has the second highest priority after login
"""
super()._compute_presence_state()
employees = self.filtered(lambda e: e.hr_presence_state != "present")
employee_to_check_working = self.filtered(lambda e: e.attendance_state == "checked_out"
and e.hr_presence_state == "to_define")
working_now_list = employee_to_check_working._get_employee_working_now()
for employee in employees:
if employee.attendance_state == "checked_out" and employee.hr_presence_state == "to_define" and \
employee.id in working_now_list:
employee.hr_presence_state = "absent"
elif employee.attendance_state == "checked_in":
employee.hr_presence_state = "present"
def _compute_presence_icon(self):
res = super()._compute_presence_icon()
# All employee must chek in or check out. Everybody must have an icon
self.filtered(lambda employee: not employee.show_hr_icon_display).show_hr_icon_display = True
return res