Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions addons/hr/models/hr_employee.py
Original file line number Diff line number Diff line change
Expand Up @@ -495,8 +495,7 @@ def _compute_legal_name(self):
@api.depends('current_version_id')
@api.depends_context('version_id')
def _compute_version_id(self):
context_version_id = self.env.context.get('version_id', False)
context_version = self.env['hr.version'].browse(context_version_id).exists() if context_version_id else self.env['hr.version']
context_version = self.env['hr.version'].browse(self.env.context.get('version_id', False))

for employee in self:
if context_version.employee_id == self:
Expand Down
5 changes: 0 additions & 5 deletions addons/hr/models/hr_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,11 +195,6 @@ def _get_hr_responsible_domain(self):
'An employee cannot have multiple active versions sharing the same effective date.',
)

_check_wage_positive = models.Constraint(
'CHECK(wage >= 0)',
'The wage must be a positive value.',
)

@api.depends('employee_id.company_id')
def _compute_company_id(self):
for version in self:
Expand Down
21 changes: 0 additions & 21 deletions addons/hr/tests/test_hr_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -520,27 +520,6 @@ def test_multi_edit_other_and_contract_date_sync(self):
self.assertEqual(version.job_id.id, jobB.id)
self.assertEqual(version.contract_date_end, date(2020, 9, 30))

def test_delete_version(self):
employee = self.env['hr.employee'].create({
'name': 'John Doe',
'date_version': '2020-01-01',
})
v1 = employee.version_id
v2 = employee.create_version({
'date_version': '2021-01-01',
})
v3 = employee.create_version({
'date_version': '2022-01-01',
})
self.assertEqual(employee.current_version_id, v3)

v3.unlink()
self.assertEqual(employee.current_version_id, v2)
v1.unlink()
self.assertEqual(employee.current_version_id, v2)
with self.assertRaises(ValidationError):
v2.unlink()

def test_multi_edit_multi_employees_no_contract(self):
"""
Test the multi-edit when there is one version per employee, without contract
Expand Down
5 changes: 3 additions & 2 deletions addons/hr_holidays/models/hr_leave_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -272,14 +272,15 @@ def _search_max_leaves(self, operator, value):
return [('id', 'in', valid_leaves)]

def _search_virtual_remaining_leaves(self, operator, value):
def is_valid(leave_type):
return not leave_type.requires_allocation or op(leave_type.virtual_remaining_leaves, value)
op = PY_OPERATORS.get(operator)
if not op:
return NotImplemented
if operator != 'in':
value = float(value)
leave_types = self.env['hr.leave.type'].search([])

def is_valid(leave_type):
return not leave_type.requires_allocation or op(leave_type.virtual_remaining_leaves, value)
return [('id', 'in', leave_types.filtered(is_valid).ids)]

@api.depends_context('employee_id', 'default_employee_id', 'leave_date_from', 'default_date_from')
Expand Down
24 changes: 24 additions & 0 deletions addons/hr_holidays/tests/test_hr_leave_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,27 @@ def test_users_tz_shift_back(self):
).search([('has_valid_allocation', '=', True)], limit=1)

self.assertFalse(leave_types, "Got valid leaves outside vaild period")

def test_search_virtual_remaining_leaves(self):
employee_id = self.env['hr.employee'].create({'name': 'Test Employee'})
leave_type1, leave_type2 = self.env['hr.leave.type'].create([
{
'name': 'Leave type 1',
'time_type': 'leave',
'requires_allocation': True,
}, {
'name': 'Leave type 2',
'time_type': 'leave',
'requires_allocation': True,
},
])
self.env['hr.leave.allocation'].create([{
'name': 'Leave type 1 allocation',
'holiday_status_id': leave_type1.id,
'number_of_days': 1,
'employee_id': employee_id.id,
'state': 'confirm',
}]).action_approve()
leave_type_ids = self.env['hr.leave.type'].with_context(employee_id=employee_id.id).search([('virtual_remaining_leaves', '>', 0)])
self.assertIn(leave_type1, leave_type_ids)
self.assertNotIn(leave_type2, leave_type_ids)
24 changes: 24 additions & 0 deletions addons/hr_skills/report/hr_employee_certification_report_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,28 @@
</search>
</field>
</record>

<record id="hr_employee_certification_report_action" model="ir.actions.act_window">
<field name="name">Certification</field>
<field name="res_model">hr.employee.certification.report</field>
<field name="search_view_id" ref="hr_employee_certification_report_view_search"/>
<field name="view_mode">list,pivot</field>
<field name="context">{
'search_default_employee': 1,
}</field>
<field name="help" type="html">
<p class="o_view_nocontent_empty_folder">
</p><p>
This report will give you an overview of the certification per Employee.
Create them in configuration and add them on the Employee.
</p>
</field>
</record>

<menuitem
id="hr_employee_certification_report_menu"
name="Certifications"
action="hr_employee_certification_report_action"
parent="hr_skills.hr_employee_skill_report_menu"
sequence="25"/>
</odoo>
2 changes: 1 addition & 1 deletion addons/hr_skills/report/hr_employee_skill_report_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,6 @@
id="hr_employee_skill_inventory_report_menu"
name="Skills Inventory"
action="hr_employee_skill_report_action"
parent="hr.hr_menu_hr_reports"
parent="hr_skills.hr_employee_skill_report_menu"
sequence="15"/>
</odoo>
8 changes: 7 additions & 1 deletion addons/hr_skills/views/hr_views.xml
Original file line number Diff line number Diff line change
Expand Up @@ -593,7 +593,7 @@
<field name="res_model">hr.employee.skill</field>
<field name="path">certifications</field>
<field name="domain">[('is_certification', '=', True)]</field>
<field name="context">{'show_employee': True}</field>
<field name="context">{'show_employee': True, 'search_default_group_by_type': 1}</field>
<field name="view_mode">list,form</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'list', 'view_id': False}),
Expand All @@ -608,6 +608,12 @@
sequence="7"
groups="hr.group_hr_user"/>

<menuitem
id="hr_employee_skill_report_menu"
name="Skills"
parent="hr.hr_menu_hr_reports"
sequence="15"/>

<menuitem
id="hr_skill_learning_menu"
name="Learning"
Expand Down