diff --git a/addons/hr/models/hr_employee_base.py b/addons/hr/models/hr_employee_base.py index 67dd28eb46f..9986c5e1a1a 100644 --- a/addons/hr/models/hr_employee_base.py +++ b/addons/hr/models/hr_employee_base.py @@ -53,6 +53,14 @@ class HrEmployeeBase(models.AbstractModel): ('presence_absent', 'Absent'), ('presence_to_define', 'To define'), ('presence_undetermined', 'Undetermined')], compute='_compute_presence_icon') + employee_type = fields.Selection([ + ('employee', 'Employee'), + ('student', 'Student'), + ('trainee', 'Trainee'), + ('contractor', 'Contractor'), + ('freelance', 'Freelancer'), + ], string='Employee Type', default='employee', required=True, + help="The employee type. Although the primary purpose may seem to categorize employees, this field has also an impact in the Contract History. Only Employee type is supposed to be under contract and will have a Contract History.") @api.depends('user_id.im_status') def _compute_presence_state(self): diff --git a/addons/hr/models/hr_employee_public.py b/addons/hr/models/hr_employee_public.py index 6ac8091f271..10edc2ccd7e 100644 --- a/addons/hr/models/hr_employee_public.py +++ b/addons/hr/models/hr_employee_public.py @@ -30,6 +30,7 @@ class HrEmployeePublic(models.Model): resource_calendar_id = fields.Many2one(readonly=True) tz = fields.Selection(readonly=True) color = fields.Integer(readonly=True) + employee_type = fields.Selection(readonly=True) # hr.employee.public specific fields child_ids = fields.One2many('hr.employee.public', 'parent_id', string='Direct subordinates', readonly=True) diff --git a/addons/hr/models/res_users.py b/addons/hr/models/res_users.py index 6c458a3a39a..dcc8407de42 100644 --- a/addons/hr/models/res_users.py +++ b/addons/hr/models/res_users.py @@ -65,6 +65,7 @@ class User(models.Model): hr_presence_state = fields.Selection(related='employee_id.hr_presence_state') last_activity = fields.Date(related='employee_id.last_activity') last_activity_time = fields.Char(related='employee_id.last_activity_time') + employee_type = fields.Selection(related='employee_id.employee_type', readonly=False, related_sudo=False) can_edit = fields.Boolean(compute='_compute_can_edit') @@ -143,6 +144,7 @@ class User(models.Model): 'study_field', 'study_school', 'private_lang', + 'employee_type', ] init_res = super(User, self).__init__(pool, cr) diff --git a/addons/hr/views/hr_employee_public_views.xml b/addons/hr/views/hr_employee_public_views.xml index 703e2ebc3d5..cfc46f28cfe 100644 --- a/addons/hr/views/hr_employee_public_views.xml +++ b/addons/hr/views/hr_employee_public_views.xml @@ -60,6 +60,7 @@ + diff --git a/addons/hr/views/hr_employee_views.xml b/addons/hr/views/hr_employee_views.xml index 08e14041e92..f54394c61d1 100644 --- a/addons/hr/views/hr_employee_views.xml +++ b/addons/hr/views/hr_employee_views.xml @@ -178,6 +178,7 @@ + diff --git a/addons/hr/views/res_users.xml b/addons/hr/views/res_users.xml index d62776ab2a1..0e09118a50a 100644 --- a/addons/hr/views/res_users.xml +++ b/addons/hr/views/res_users.xml @@ -176,7 +176,9 @@ - + + + diff --git a/addons/hr_contract/report/hr_contract_history.py b/addons/hr_contract/report/hr_contract_history.py index 594daa6dae8..3513019f7b4 100644 --- a/addons/hr_contract/report/hr_contract_history.py +++ b/addons/hr_contract/report/hr_contract_history.py @@ -88,9 +88,10 @@ class ContractHistory(models.Model): FROM hr_contract AS contract INNER JOIN contract_information ON contract.id = contract_information.id RIGHT JOIN hr_employee AS employee - ON contract_information.employee_id = employee.id + ON contract_information.employee_id = employee.id AND contract.company_id = employee.company_id - WHERE (employee.active = true OR contract.state='draft') + WHERE employee.employee_type IN ('employee', 'student') + AND (employee.active = true OR contract.state='draft') )""" % (self._table, self._get_fields())) @api.depends('employee_id.contract_ids') diff --git a/addons/hr_contract/views/hr_contract_views.xml b/addons/hr_contract/views/hr_contract_views.xml index 01bcf76c928..c2657a02958 100644 --- a/addons/hr_contract/views/hr_contract_views.xml +++ b/addons/hr_contract/views/hr_contract_views.xml @@ -13,7 +13,8 @@ class="oe_stat_button" icon="fa-book" type="object" - groups="hr_contract.group_hr_contract_manager"> + groups="hr_contract.group_hr_contract_manager" + attrs="{'invisible' : [('employee_type', 'not in', ['employee', 'student'])]}">
In Contract Since @@ -37,7 +38,9 @@
- +