forked from Mapan/odoo17e
59 lines
2.3 KiB
Python
59 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, models, fields
|
|
|
|
|
|
class ResUsers(models.Model):
|
|
_name = 'res.users'
|
|
_inherit = 'res.users'
|
|
|
|
sign_request_count = fields.Integer(
|
|
compute='_compute_sign_request_count',
|
|
compute_sudo=True,
|
|
)
|
|
|
|
@property
|
|
def SELF_READABLE_FIELDS(self):
|
|
return super().SELF_READABLE_FIELDS + ['sign_request_count']
|
|
|
|
def _compute_sign_request_count(self):
|
|
for user in self:
|
|
employees = user.employee_ids
|
|
if not employees:
|
|
user.sign_request_count = 0
|
|
continue
|
|
contracts = self.sudo().env['hr.contract'].search([('employee_id', 'in', employees.ids)])
|
|
sign_from_contract = contracts.mapped('sign_request_ids')
|
|
|
|
sign_from_role = self.env['sign.request.item'].search([
|
|
('partner_id', '=', user.partner_id.id),
|
|
('role_id', '=', self.env.ref('sign.sign_item_role_employee').id)]).mapped('sign_request_id')
|
|
|
|
user.sign_request_count = len(set(sign_from_contract + sign_from_role))
|
|
|
|
def open_employee_sign_requests(self):
|
|
self.ensure_one()
|
|
contracts = self.sudo().env['hr.contract'].search([('employee_id', 'in', self.env.user.employee_ids.ids)])
|
|
sign_from_contract = contracts.mapped('sign_request_ids')
|
|
sign_from_role = self.env['sign.request.item'].sudo().search([
|
|
('partner_id', '=', self.partner_id.id),
|
|
('role_id', '=', self.env.ref('sign.sign_item_role_employee').id)]).mapped('sign_request_id')
|
|
sign_request_ids = sign_from_contract + sign_from_role
|
|
if len(sign_request_ids.ids) == 1:
|
|
return sign_request_ids.go_to_document()
|
|
|
|
if self.env.user.has_group('sign.group_sign_user'):
|
|
view_id = self.env.ref("sign.sign_request_view_kanban").id
|
|
else:
|
|
view_id = self.env.ref("hr_contract_sign.sign_request_employee_view_kanban").id
|
|
|
|
return {
|
|
'type': 'ir.actions.act_window',
|
|
'name': 'Signature Requests',
|
|
'view_mode': 'kanban,tree',
|
|
'res_model': 'sign.request',
|
|
'view_ids': [(view_id, 'kanban'), (False, 'tree')],
|
|
'domain': [('id', 'in', sign_request_ids.ids)]
|
|
}
|