[IMP] hr,hr_recruitment: add Newly Hired filter
Moves the Newly Hired search filter from hr_recruitment to hr. This new filter is available to all employees and not restricted to Officers. task-3346478 closes odoo/odoo#123420 Related: odoo/upgrade#4759 Signed-off-by: Sofie Gvaladze (sgv) <sgv@odoo.com>
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
<filter name="my_team" string="My Team" domain="[('parent_id.user_id', '=', uid)]"/>
|
||||
<filter name="my_department" string="My Department" domain="[('member_of_department', '=', True)]"/>
|
||||
<separator/>
|
||||
<filter name="newly_hired" string="Newly Hired" domain="[('newly_hired', '=', True)]"/>
|
||||
<separator/>
|
||||
<filter name="archived" string="Archived" domain="[('active', '=', False)]"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter name="group_manager" string="Manager" domain="[]" context="{'group_by':'parent_id'}"/>
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
<filter name="my_team" string="My Team" domain="[('parent_id.user_id', '=', uid)]"/>
|
||||
<filter name="my_department" string="My Department" domain="[('member_of_department', '=', True)]"/>
|
||||
<separator/>
|
||||
<filter name="newly_hired" string="Newly Hired" domain="[('newly_hired', '=', True)]"/>
|
||||
<separator/>
|
||||
<filter string="Archived" name="inactive" domain="[('active', '=', False)]"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter name="group_manager" string="Manager" domain="[]" context="{'group_by': 'parent_id'}"/>
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -575,30 +575,6 @@
|
||||
action="hr_recruitment_degree_action"
|
||||
sequence="1" groups="base.group_no_one"/>
|
||||
|
||||
<!--Hr Employee inherit search view-->
|
||||
<record id="hr_employee_view_search" model="ir.ui.view">
|
||||
<field name="name">hr.employee.search.inherit</field>
|
||||
<field name="model">hr.employee</field>
|
||||
<field name="inherit_id" ref="hr.view_employee_filter"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='job_id']" position="after">
|
||||
<filter name="hiring_date" string="Hiring Date" date="create_date" groups="hr_recruitment.group_hr_recruitment_user"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_employee_action_from_department" model="ir.actions.act_window">
|
||||
<field name="name">Newly Hired Employees</field>
|
||||
<field name="res_model">hr.employee</field>
|
||||
<field name="view_mode">kanban,tree,form</field>
|
||||
<field name="context">{
|
||||
'search_default_newly_hired_employee': 1,
|
||||
'search_default_department_id': [active_id],
|
||||
'default_department_id': active_id}
|
||||
</field>
|
||||
<field name="search_view_id" ref="hr_employee_view_search"/>
|
||||
</record>
|
||||
|
||||
<record id="hr_applicant_view_pivot" model="ir.ui.view">
|
||||
<field name="name">hr.applicant.pivot</field>
|
||||
<field name="model">hr.applicant</field>
|
||||
|
||||
Reference in New Issue
Block a user