[FIX] hr_skills: Skill history report

Prior, by default Skill history report goes to stacked view.
Which is not informative for the kind of information that is displayed.

task - 2993831

closes odoo/odoo#101656

X-original-commit: 1951b56d91dc17ec8d81257e8c431f7a24420e2b
Signed-off-by: Kevin Baptiste <kba@odoo.com>
This commit is contained in:
sofiagvaladze
2022-09-30 09:31:45 +02:00
parent d50589fd08
commit 39efb6116a
2 changed files with 33 additions and 20 deletions
+31 -17
View File
@@ -4,6 +4,7 @@
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
from collections import defaultdict
class EmployeeSkill(models.Model):
_name = 'hr.employee.skill'
@@ -50,24 +51,37 @@ class EmployeeSkill(models.Model):
def _create_logs(self):
today = fields.Date.context_today(self)
employee_skills = self.env['hr.employee.skill'].search([
('employee_id', 'in', self.employee_id.ids)
])
employee_skill_logs = self.env['hr.employee.skill.log'].search([
('employee_id', 'in', self.employee_id.ids),
])
skills_by_employees = defaultdict(lambda: self.env['hr.employee.skill'])
for skill in employee_skills:
skills_by_employees[skill.employee_id.id] |= skill
logs_by_employees = defaultdict(lambda: self.env['hr.employee.skill.log'])
for log in employee_skill_logs:
logs_by_employees[log.employee_id.id] |= log
skill_to_create_vals = []
for employee_skill in self:
existing_log = self.env['hr.employee.skill.log'].search([
('employee_id', '=', employee_skill.employee_id.id),
('department_id', '=', employee_skill.employee_id.department_id.id),
('skill_id', '=', employee_skill.skill_id.id),
('date', '=', today),
])
if existing_log:
existing_log.write({'skill_level_id': employee_skill.skill_level_id.id})
else:
skill_to_create_vals.append({
'employee_id': employee_skill.employee_id.id,
'skill_id': employee_skill.skill_id.id,
'skill_level_id': employee_skill.skill_level_id.id,
'department_id': employee_skill.employee_id.department_id.id,
'skill_type_id': employee_skill.skill_type_id.id,
})
for employee in skills_by_employees:
employee_logs = logs_by_employees[employee]
for employee_skill in skills_by_employees[employee]:
existing_log = employee_logs.filtered(lambda l: l.department_id == employee_skill.employee_id.department_id and l.skill_id == employee_skill.skill_id and l.date == today)
if existing_log:
existing_log.write({'skill_level_id': employee_skill.skill_level_id.id})
else:
skill_to_create_vals.append({
'employee_id': employee_skill.employee_id.id,
'skill_id': employee_skill.skill_id.id,
'skill_level_id': employee_skill.skill_level_id.id,
'department_id': employee_skill.employee_id.department_id.id,
'skill_type_id': employee_skill.skill_type_id.id,
})
if skill_to_create_vals:
self.env['hr.employee.skill.log'].create(skill_to_create_vals)
@@ -4,9 +4,8 @@
<field name="name">hr.employee.skill.log.view.graph</field>
<field name="model">hr.employee.skill.log</field>
<field name="arch" type="xml">
<graph string="Skills History" type="line" js_class="skills_graph">
<graph string="Skills History" type="line" stacked="0" js_class="skills_graph">
<field name="date" interval="day" type="row"/>
<field name="employee_id" type="row"/>
<field name="skill_id" type="row"/>
<field name="level_progress" type="measure"/>
</graph>
@@ -17,7 +16,7 @@
<field name="name">hr.employee.skill.log.view.graph</field>
<field name="model">hr.employee.skill.log</field>
<field name="arch" type="xml">
<graph string="Skills History" type="line" js_class="skills_graph">
<graph string="Skills History" type="line" stacked="0" js_class="skills_graph">
<field name="date" interval="day" type="row"/>
<field name="skill_id" type="row"/>
<field name="level_progress" type="measure"/>