[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:
@@ -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"/>
|
||||
|
||||
Reference in New Issue
Block a user