mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-25 15:52:05 +02:00
19.0 vanilla
This commit is contained in:
parent
a1137a1456
commit
e1d89e11e3
2789 changed files with 1093187 additions and 605897 deletions
|
|
@ -1,38 +1,23 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, Command
|
||||
from odoo import api, fields, models, Command, _
|
||||
from odoo.tools import format_date
|
||||
|
||||
|
||||
class User(models.Model):
|
||||
class ResUsers(models.Model):
|
||||
_inherit = "res.users"
|
||||
|
||||
leave_manager_id = fields.Many2one(related='employee_id.leave_manager_id')
|
||||
show_leaves = fields.Boolean(related='employee_id.show_leaves')
|
||||
allocation_count = fields.Float(related='employee_id.allocation_count')
|
||||
leave_date_to = fields.Date(related='employee_id.leave_date_to')
|
||||
current_leave_state = fields.Selection(related='employee_id.current_leave_state')
|
||||
is_absent = fields.Boolean(related='employee_id.is_absent')
|
||||
allocation_remaining_display = fields.Char(related='employee_id.allocation_remaining_display')
|
||||
allocation_display = fields.Char(related='employee_id.allocation_display')
|
||||
hr_icon_display = fields.Selection(related='employee_id.hr_icon_display')
|
||||
|
||||
@property
|
||||
def SELF_READABLE_FIELDS(self):
|
||||
return super().SELF_READABLE_FIELDS + [
|
||||
'leave_manager_id',
|
||||
'show_leaves',
|
||||
'allocation_count',
|
||||
'leave_date_to',
|
||||
'current_leave_state',
|
||||
'is_absent',
|
||||
'allocation_remaining_display',
|
||||
'allocation_display',
|
||||
'hr_icon_display',
|
||||
]
|
||||
|
||||
def _compute_im_status(self):
|
||||
super(User, self)._compute_im_status()
|
||||
super()._compute_im_status()
|
||||
on_leave_user_ids = self._get_on_leave_ids()
|
||||
for user in self:
|
||||
if user.id in on_leave_user_ids:
|
||||
|
|
@ -40,7 +25,9 @@ class User(models.Model):
|
|||
user.im_status = 'leave_online'
|
||||
elif user.im_status == 'away':
|
||||
user.im_status = 'leave_away'
|
||||
else:
|
||||
elif user.im_status == 'busy':
|
||||
user.im_status = 'leave_busy'
|
||||
elif user.im_status == 'offline':
|
||||
user.im_status = 'leave_offline'
|
||||
|
||||
@api.model
|
||||
|
|
@ -52,9 +39,10 @@ class User(models.Model):
|
|||
self.env.cr.execute('''SELECT res_users.%s FROM res_users
|
||||
JOIN hr_leave ON hr_leave.user_id = res_users.id
|
||||
AND hr_leave.state = 'validate'
|
||||
AND hr_leave.active = 't'
|
||||
AND res_users.active = 't'
|
||||
AND hr_leave.date_from <= %%s AND hr_leave.date_to >= %%s''' % field, (now, now))
|
||||
AND hr_leave.date_from <= %%s AND hr_leave.date_to >= %%s
|
||||
RIGHT JOIN hr_leave_type ON hr_leave.holiday_status_id = hr_leave_type.id
|
||||
AND hr_leave_type.time_type = 'leave';''' % field, (now, now))
|
||||
return [r[0] for r in self.env.cr.fetchall()]
|
||||
|
||||
def _clean_leave_responsible_users(self):
|
||||
|
|
@ -66,14 +54,13 @@ class User(models.Model):
|
|||
if not any(u.has_group(approver_group) for u in self):
|
||||
return
|
||||
|
||||
res = self.env['hr.employee'].read_group(
|
||||
res = self.env['hr.employee']._read_group(
|
||||
[('leave_manager_id', 'in', self.ids)],
|
||||
['leave_manager_id'],
|
||||
['leave_manager_id'])
|
||||
responsibles_to_remove_ids = set(self.ids) - {x['leave_manager_id'][0] for x in res}
|
||||
responsibles_to_remove_ids = set(self.ids) - {leave_manager.id for [leave_manager] in res}
|
||||
if responsibles_to_remove_ids:
|
||||
self.browse(responsibles_to_remove_ids).write({
|
||||
'groups_id': [Command.unlink(self.env.ref(approver_group).id)],
|
||||
'group_ids': [Command.unlink(self.env.ref(approver_group).id)],
|
||||
})
|
||||
|
||||
@api.model_create_multi
|
||||
|
|
@ -81,3 +68,12 @@ class User(models.Model):
|
|||
users = super().create(vals_list)
|
||||
users.sudo()._clean_leave_responsible_users()
|
||||
return users
|
||||
|
||||
@api.depends('leave_date_to')
|
||||
@api.depends_context('formatted_display_name')
|
||||
def _compute_display_name(self):
|
||||
super()._compute_display_name()
|
||||
for user in self:
|
||||
if user.env.context.get("formatted_display_name") and user.leave_date_to:
|
||||
name = "%s \t ✈ --%s %s--" % (user.display_name or user.name, _("Back on"), format_date(self.env, user.leave_date_to, self.env.user.lang, "medium"))
|
||||
user.display_name = name.strip()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue