From 9baef89f35e8b4b6ad6352523069676cbefa0134 Mon Sep 17 00:00:00 2001 From: Kevin Baptiste Date: Wed, 27 Oct 2021 13:16:29 +0000 Subject: [PATCH] [IMP] hr_skills: add Employee Skills report Adds a report showing the skills per employee. closes odoo/odoo#79114 Taskid: 2677101 Signed-off-by: Kevin Baptiste --- addons/hr_skills/__init__.py | 1 + addons/hr_skills/__manifest__.py | 1 + addons/hr_skills/report/__init__.py | 3 + .../report/hr_employee_skill_report.py | 40 +++++++++++ .../report/hr_employee_skill_report_views.xml | 66 +++++++++++++++++++ .../hr_skills/security/hr_skills_security.xml | 6 ++ addons/hr_skills/security/ir.model.access.csv | 1 + 7 files changed, 118 insertions(+) create mode 100644 addons/hr_skills/report/__init__.py create mode 100644 addons/hr_skills/report/hr_employee_skill_report.py create mode 100644 addons/hr_skills/report/hr_employee_skill_report_views.xml diff --git a/addons/hr_skills/__init__.py b/addons/hr_skills/__init__.py index dc5e6b693d1..2609681a938 100644 --- a/addons/hr_skills/__init__.py +++ b/addons/hr_skills/__init__.py @@ -2,3 +2,4 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import models +from . import report diff --git a/addons/hr_skills/__manifest__.py b/addons/hr_skills/__manifest__.py index 4883306904c..45cc3ba6575 100644 --- a/addons/hr_skills/__manifest__.py +++ b/addons/hr_skills/__manifest__.py @@ -20,6 +20,7 @@ This module introduces skills and resumé management for employees. 'security/hr_skills_security.xml', 'views/hr_views.xml', 'data/hr_resume_data.xml', + 'report/hr_employee_skill_report_views.xml', ], 'demo': [ 'data/hr_resume_demo.xml', diff --git a/addons/hr_skills/report/__init__.py b/addons/hr_skills/report/__init__.py new file mode 100644 index 00000000000..48e5c625b0d --- /dev/null +++ b/addons/hr_skills/report/__init__.py @@ -0,0 +1,3 @@ +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import hr_employee_skill_report diff --git a/addons/hr_skills/report/hr_employee_skill_report.py b/addons/hr_skills/report/hr_employee_skill_report.py new file mode 100644 index 00000000000..45efe4a4585 --- /dev/null +++ b/addons/hr_skills/report/hr_employee_skill_report.py @@ -0,0 +1,40 @@ +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models, tools + +class HrEmployeeSkillReport(models.BaseModel): + _auto = False + _name = 'hr.employee.skill.report' + _description = 'Employee Skills Report' + _order = 'employee_id, level_progress desc' + + id = fields.Id() + display_name = fields.Char(related='employee_id.name') + employee_id = fields.Many2one('hr.employee', readonly=True) + company_id = fields.Many2one('res.company', readonly=True) + department_id = fields.Many2one('hr.department', readonly=True) + + skill_id = fields.Many2one('hr.skill', readonly=True) + skill_type_id = fields.Many2one('hr.skill.type', readonly=True) + skill_level = fields.Char(readonly=True) + level_progress = fields.Float(readonly=True, group_operator='avg') + + def init(self): + tools.drop_view_if_exists(self.env.cr, self._table) + + self.env.cr.execute(""" + CREATE OR REPLACE VIEW %s AS ( + SELECT + row_number() OVER () AS id, + e.id AS employee_id, + e.company_id AS company_id, + e.department_id AS department_id, + s.skill_id AS skill_id, + s.skill_type_id AS skill_type_id, + sl.level_progress / 100.0 AS level_progress, + sl.name AS skill_level + FROM hr_employee e + LEFT OUTER JOIN hr_employee_skill s ON e.id = s.employee_id + LEFT OUTER JOIN hr_skill_level sl ON sl.id = s.skill_level_id + ) + """ % (self._table, )) diff --git a/addons/hr_skills/report/hr_employee_skill_report_views.xml b/addons/hr_skills/report/hr_employee_skill_report_views.xml new file mode 100644 index 00000000000..6b74d88c90d --- /dev/null +++ b/addons/hr_skills/report/hr_employee_skill_report_views.xml @@ -0,0 +1,66 @@ + + + + hr.employee.skill.report + + + + + + + + + + + + hr.employee.skill.report + + + + + + + + + + + + + hr.employee.skill.report + + + + + + + + + + + + + + + + + + + + + Employee Skills + hr.employee.skill.report + + tree,pivot + { + 'search_default_employee': 1, + 'search_default_employees_with_skills': 1, + } + + + + diff --git a/addons/hr_skills/security/hr_skills_security.xml b/addons/hr_skills/security/hr_skills_security.xml index e82d0008bfc..ee2823c6a09 100644 --- a/addons/hr_skills/security/hr_skills_security.xml +++ b/addons/hr_skills/security/hr_skills_security.xml @@ -50,4 +50,10 @@ + + + Employee Skill Report: Multi-Company Rule + + ['|', ('company_id', '=', False), ('company_id', 'in', company_ids)] + diff --git a/addons/hr_skills/security/ir.model.access.csv b/addons/hr_skills/security/ir.model.access.csv index 1e5dd935c4f..fe696ae6dfc 100644 --- a/addons/hr_skills/security/ir.model.access.csv +++ b/addons/hr_skills/security/ir.model.access.csv @@ -11,3 +11,4 @@ access_hr_skill,hr.skill,model_hr_skill,hr.group_hr_user,1,1,1,1 access_hr_skill_employee,hr.skill.employee,model_hr_skill,base.group_user,1,0,0,0 access_hr_employee_skill,hr.employee.skill,model_hr_employee_skill,hr.group_hr_user,1,1,1,1 access_hr_employee_skill_employee,hr.employee.skill,model_hr_employee_skill,base.group_user,1,1,1,1 +access_hr_employee_skill_report,hr.employee.skill.report,model_hr_employee_skill_report,hr.group_hr_user,1,0,0,0