diff --git a/addons/hr_timesheet/__manifest__.py b/addons/hr_timesheet/__manifest__.py
index 80b82ee6e29..3c59da30ae4 100644
--- a/addons/hr_timesheet/__manifest__.py
+++ b/addons/hr_timesheet/__manifest__.py
@@ -32,6 +32,7 @@ up a management by affair.
'views/project_update_templates.xml',
'views/hr_timesheet_portal_templates.xml',
'report/hr_timesheet_report_view.xml',
+ 'report/project_report_view.xml',
'report/report_timesheet_templates.xml',
'views/hr_views.xml',
'data/hr_timesheet_data.xml',
diff --git a/addons/hr_timesheet/models/project.py b/addons/hr_timesheet/models/project.py
index 4198b3a0639..18f510038f5 100644
--- a/addons/hr_timesheet/models/project.py
+++ b/addons/hr_timesheet/models/project.py
@@ -218,16 +218,17 @@ class Task(models.Model):
result = super(Task, self)._fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
result['arch'] = self.env['account.analytic.line']._apply_timesheet_label(result['arch'])
- if view_type == 'tree' and self.env.company.timesheet_encode_uom_id == self.env.ref('uom.product_uom_day'):
+ if view_type in ['tree', 'pivot', 'graph'] and self.env.company.timesheet_encode_uom_id == self.env.ref('uom.product_uom_day'):
result['arch'] = self._apply_time_label(result['arch'])
return result
@api.model
- def _apply_time_label(self, view_arch):
+ def _apply_time_label(self, view_arch, related_model=None):
doc = etree.XML(view_arch)
+ Model = self.env[related_model or self._name]
encoding_uom = self.env.company.timesheet_encode_uom_id
for node in doc.xpath("//field[@widget='timesheet_uom'][not(@string)] | //field[@widget='timesheet_uom_no_toggle'][not(@string)]"):
- name_with_uom = re.sub(_('Hours') + "|Hours", encoding_uom.name or '', self._fields[node.get('name')]._description_string(self.env), flags=re.IGNORECASE)
+ name_with_uom = re.sub(_('Hours') + "|Hours", encoding_uom.name or '', Model._fields[node.get('name')]._description_string(self.env), flags=re.IGNORECASE)
node.set('string', name_with_uom)
return etree.tostring(doc, encoding='unicode')
diff --git a/addons/hr_timesheet/report/project_report.py b/addons/hr_timesheet/report/project_report.py
index 367a0a59436..f8c33eb7423 100644
--- a/addons/hr_timesheet/report/project_report.py
+++ b/addons/hr_timesheet/report/project_report.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from odoo import fields, models
+from odoo import fields, models, api
class ReportProjectTaskUser(models.Model):
@@ -25,3 +25,10 @@ class ReportProjectTaskUser(models.Model):
t.effective_hours,
planned_hours
"""
+
+ @api.model
+ def _fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
+ result = super(ReportProjectTaskUser, self)._fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
+ if view_type in ['pivot', 'graph'] and self.env.company.timesheet_encode_uom_id == self.env.ref('uom.product_uom_day'):
+ result['arch'] = self.env['project.task']._apply_time_label(result['arch'], related_model=self._name)
+ return result
diff --git a/addons/hr_timesheet/report/project_report_view.xml b/addons/hr_timesheet/report/project_report_view.xml
index d62fb501592..0fd45d1c9df 100644
--- a/addons/hr_timesheet/report/project_report_view.xml
+++ b/addons/hr_timesheet/report/project_report_view.xml
@@ -6,12 +6,27 @@