hr_attendance/models/res_users.py

64 lines
2.7 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models, fields, _
class User(models.Model):
_inherit = ['res.users']
hours_last_month = fields.Float(related='employee_id.hours_last_month')
hours_last_month_display = fields.Char(related='employee_id.hours_last_month_display')
attendance_state = fields.Selection(related='employee_id.attendance_state')
last_check_in = fields.Datetime(related='employee_id.last_attendance_id.check_in')
last_check_out = fields.Datetime(related='employee_id.last_attendance_id.check_out')
total_overtime = fields.Float(related='employee_id.total_overtime')
attendance_manager_id = fields.Many2one(related='employee_id.attendance_manager_id', readonly=False)
display_extra_hours = fields.Boolean(related='company_id.hr_attendance_display_overtime')
@property
def SELF_READABLE_FIELDS(self):
return super().SELF_READABLE_FIELDS + [
'hours_last_month',
'hours_last_month_display',
'attendance_state',
'last_check_in',
'last_check_out',
'total_overtime',
'attendance_manager_id',
'display_extra_hours',
]
def _clean_attendance_officers(self):
attendance_officers = self.env['hr.employee'].search(
[('attendance_manager_id', 'in', self.ids)]).attendance_manager_id
officers_to_remove_ids = self - attendance_officers
if officers_to_remove_ids:
self.env.ref('hr_attendance.group_hr_attendance_officer').users = [(3, user.id) for user in
officers_to_remove_ids]
def action_open_last_month_attendances(self):
self.ensure_one()
return {
"type": "ir.actions.act_window",
"name": _("Attendances This Month"),
"res_model": "hr.attendance",
"views": [[self.env.ref('hr_attendance.hr_attendance_employee_simple_tree_view').id, "tree"]],
"context": {
"create": 0
},
"domain": [('employee_id', '=', self.employee_id.id),
('check_in', ">=", fields.datetime.today().replace(day=1, hour=0, minute=0))]
}
def action_open_last_month_overtime(self):
self.ensure_one()
return {
"type": "ir.actions.act_window",
"name": _("Overtime"),
"res_model": "hr.attendance.overtime",
"views": [[False, "tree"]],
"context": {
"create": 0
},
"domain": [('employee_id', '=', self.employee_id.id)]
}