diff --git a/addons/hr/models/hr_employee_base.py b/addons/hr/models/hr_employee_base.py
index cdbd53780b0..276fa45316b 100644
--- a/addons/hr/models/hr_employee_base.py
+++ b/addons/hr/models/hr_employee_base.py
@@ -58,6 +58,26 @@ class HrEmployeeBase(models.AbstractModel):
('presence_to_define', 'To define'),
('presence_undetermined', 'Undetermined')], compute='_compute_presence_icon')
show_hr_icon_display = fields.Boolean(compute='_compute_presence_icon')
+ newly_hired = fields.Boolean('Newly Hired', compute='_compute_newly_hired', search='_search_newly_hired')
+
+ @api.model
+ def _get_new_hire_field(self):
+ return 'create_date'
+
+ def _compute_newly_hired(self):
+ new_hire_field = self._get_new_hire_field()
+ new_hire_date = fields.Datetime.now() - timedelta(days=90)
+ for employee in self:
+ employee.newly_hired = employee[new_hire_field] > new_hire_date
+
+ def _search_newly_hired(self, operator, value):
+ new_hire_field = self._get_new_hire_field()
+ new_hires = self.env['hr.employee'].sudo().search([
+ (new_hire_field, '>', fields.Datetime.now() - timedelta(days=90))
+ ])
+
+ op = 'in' if value and operator == '=' or not value and operator != '=' else 'not in'
+ return [('id', op, new_hires.ids)]
def _get_valid_employee_for_user(self):
diff --git a/addons/hr/views/hr_employee_public_views.xml b/addons/hr/views/hr_employee_public_views.xml
index efc8639e6ef..9124aea9507 100644
--- a/addons/hr/views/hr_employee_public_views.xml
+++ b/addons/hr/views/hr_employee_public_views.xml
@@ -18,6 +18,8 @@
+
+
diff --git a/addons/hr/views/hr_employee_views.xml b/addons/hr/views/hr_employee_views.xml
index d7493982bfc..fe404b950c0 100644
--- a/addons/hr/views/hr_employee_views.xml
+++ b/addons/hr/views/hr_employee_views.xml
@@ -30,6 +30,8 @@
+
+
diff --git a/addons/hr_contract/models/hr_employee.py b/addons/hr_contract/models/hr_employee.py
index bf025f557c3..b78750b7e13 100644
--- a/addons/hr_contract/models/hr_employee.py
+++ b/addons/hr_contract/models/hr_employee.py
@@ -20,6 +20,14 @@ class EmployeePublic(models.Model):
return [('id', 'in', employees.ids)]
+class EmployeeBase(models.AbstractModel):
+ _inherit = "hr.employee.base"
+
+ @api.model
+ def _get_new_hire_field(self):
+ return 'first_contract_date'
+
+
class Employee(models.Model):
_inherit = "hr.employee"
diff --git a/addons/hr_recruitment/models/hr_employee.py b/addons/hr_recruitment/models/hr_employee.py
index 2ea3ad7af52..e72ef9fb848 100644
--- a/addons/hr_recruitment/models/hr_employee.py
+++ b/addons/hr_recruitment/models/hr_employee.py
@@ -7,21 +7,8 @@ from datetime import timedelta
class HrEmployee(models.Model):
_inherit = "hr.employee"
- newly_hired_employee = fields.Boolean('Newly hired employee', compute='_compute_newly_hired_employee',
- search='_search_newly_hired_employee')
applicant_id = fields.One2many('hr.applicant', 'emp_id', 'Applicant')
- def _compute_newly_hired_employee(self):
- now = fields.Datetime.now()
- for employee in self:
- employee.newly_hired_employee = bool(employee.create_date > (now - timedelta(days=90)))
-
- def _search_newly_hired_employee(self, operator, value):
- employees = self.env['hr.employee'].search([
- ('create_date', '>', fields.Datetime.now() - timedelta(days=90))
- ])
- return [('id', 'in', employees.ids)]
-
@api.model_create_multi
def create(self, vals_list):
employees = super().create(vals_list)
diff --git a/addons/hr_recruitment/views/hr_applicant_views.xml b/addons/hr_recruitment/views/hr_applicant_views.xml
index 5f98f59ae7d..313d48fbcb6 100644
--- a/addons/hr_recruitment/views/hr_applicant_views.xml
+++ b/addons/hr_recruitment/views/hr_applicant_views.xml
@@ -575,30 +575,6 @@
action="hr_recruitment_degree_action"
sequence="1" groups="base.group_no_one"/>
-
-
- hr.employee.search.inherit
- hr.employee
-
-
-
-
-
-
-
-
-
- Newly Hired Employees
- hr.employee
- kanban,tree,form
- {
- 'search_default_newly_hired_employee': 1,
- 'search_default_department_id': [active_id],
- 'default_department_id': active_id}
-
-
-
-
hr.applicant.pivot
hr.applicant