64 lines
2.7 KiB
Python
64 lines
2.7 KiB
Python
# -*- 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)]
|
|
}
|