mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-26 02:32:03 +02:00
Initial commit: Hr packages
This commit is contained in:
commit
62531cd146
2820 changed files with 1432848 additions and 0 deletions
54
odoo-bringout-oca-ocb-hr/hr/models/res_partner.py
Normal file
54
odoo-bringout-oca-ocb-hr/hr/models/res_partner.py
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import AccessError
|
||||
|
||||
|
||||
class Partner(models.Model):
|
||||
_inherit = ['res.partner']
|
||||
|
||||
employee_ids = fields.One2many(
|
||||
'hr.employee', 'address_home_id', string='Employees', groups="hr.group_hr_user",
|
||||
help="Related employees based on their private address")
|
||||
employees_count = fields.Integer(compute='_compute_employees_count', groups="hr.group_hr_user")
|
||||
|
||||
def name_get(self):
|
||||
""" Override to allow an employee to see its private address in his profile.
|
||||
This avoids to relax access rules on `res.parter` and to add an `ir.rule`.
|
||||
(advantage in both security and performance).
|
||||
Use a try/except instead of systematically checking to minimize the impact on performance.
|
||||
"""
|
||||
try:
|
||||
return super(Partner, self).name_get()
|
||||
except AccessError as e:
|
||||
if len(self) == 1 and self in self.env.user.employee_ids.mapped('address_home_id'):
|
||||
return super(Partner, self.sudo()).name_get()
|
||||
raise e
|
||||
|
||||
def _compute_employees_count(self):
|
||||
for partner in self:
|
||||
partner.employees_count = len(partner.employee_ids)
|
||||
|
||||
def action_open_employees(self):
|
||||
self.ensure_one()
|
||||
return {
|
||||
'name': _('Related Employees'),
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_model': 'hr.employee',
|
||||
'view_mode': 'kanban,tree,form',
|
||||
'domain': [('id', 'in', self.employee_ids.ids)],
|
||||
}
|
||||
|
||||
class ResPartnerBank(models.Model):
|
||||
_inherit = ['res.partner.bank']
|
||||
|
||||
@api.depends_context('uid')
|
||||
def _compute_display_name(self):
|
||||
account_employee = self.browse()
|
||||
if not self.user_has_groups('hr.group_hr_user'):
|
||||
account_employee = self.sudo().filtered("partner_id.employee_ids")
|
||||
for account in account_employee:
|
||||
account.sudo(self.env.su).display_name = \
|
||||
account.acc_number[:2] + "*" * len(account.acc_number[2:-4]) + account.acc_number[-4:]
|
||||
super(ResPartnerBank, self - account_employee)._compute_display_name()
|
||||
Loading…
Add table
Add a link
Reference in a new issue