summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/project_issue/__init__.py1
-rw-r--r--addons/project_issue/models/project_issue.py8
-rw-r--r--addons/project_issue/report/__init__.py4
-rw-r--r--addons/project_issue/report/project_issue_report.py58
-rw-r--r--addons/project_issue/report/project_issue_report_views.xml52
-rw-r--r--addons/project_issue/security/ir.model.access.csv2
-rw-r--r--addons/project_issue/views/project_issue_views.xml3
7 files changed, 34 insertions, 94 deletions
diff --git a/addons/project_issue/__init__.py b/addons/project_issue/__init__.py
index 2609681a938..dc5e6b693d1 100644
--- a/addons/project_issue/__init__.py
+++ b/addons/project_issue/__init__.py
@@ -2,4 +2,3 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import models
-from . import report
diff --git a/addons/project_issue/models/project_issue.py b/addons/project_issue/models/project_issue.py
index 5513e4393ee..e16ed5376dc 100644
--- a/addons/project_issue/models/project_issue.py
+++ b/addons/project_issue/models/project_issue.py
@@ -55,12 +55,12 @@ class ProjectIssue(models.Model):
duration = fields.Float('Duration')
task_id = fields.Many2one('project.task', string='Task', domain="[('project_id','=',project_id)]",
help="You can link this issue to an existing task or directly create a new one from here")
- day_open = fields.Float(compute='_compute_day', string='Days to Assign', store=True)
- day_close = fields.Float(compute='_compute_day', string='Days to Close', store=True)
+ day_open = fields.Float(compute='_compute_day', string='Days to Assign', store=True, group_operator="avg")
+ day_close = fields.Float(compute='_compute_day', string='Days to Close', store=True, group_operator="avg")
user_id = fields.Many2one('res.users', string='Assigned to', index=True, track_visibility='onchange', default=lambda self: self.env.uid)
- working_hours_open = fields.Float(compute='_compute_day', string='Working Hours to assign the Issue', store=True)
- working_hours_close = fields.Float(compute='_compute_day', string='Working Hours to close the Issue', store=True)
+ working_hours_open = fields.Float(compute='_compute_day', string='Working Hours to assign the Issue', store=True, group_operator="avg")
+ working_hours_close = fields.Float(compute='_compute_day', string='Working Hours to close the Issue', store=True, group_operator="avg")
inactivity_days = fields.Integer(compute='_compute_inactivity_days', string='Days since last action',
help="Difference in days between last action and current date")
color = fields.Integer('Color Index')
diff --git a/addons/project_issue/report/__init__.py b/addons/project_issue/report/__init__.py
deleted file mode 100644
index e76831f6b56..00000000000
--- a/addons/project_issue/report/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-from . import project_issue_report
diff --git a/addons/project_issue/report/project_issue_report.py b/addons/project_issue/report/project_issue_report.py
deleted file mode 100644
index 70389f603e8..00000000000
--- a/addons/project_issue/report/project_issue_report.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# -*- coding: utf-8 -*-
-# Part of Odoo. See LICENSE file for full copyright and licensing details.
-
-from odoo import api, fields, models, tools
-
-
-class ProjectIssueReport(models.Model):
- _name = "project.issue.report"
- _auto = False
-
- company_id = fields.Many2one('res.company', 'Company', readonly=True)
- opening_date = fields.Datetime('Date of Opening', readonly=True)
- create_date = fields.Datetime('Create Date', readonly=True)
- date_closed = fields.Datetime('Date of Closing', readonly=True)
- date_last_stage_update = fields.Datetime('Last Stage Update', readonly=True)
- stage_id = fields.Many2one('project.task.type', 'Stage')
- nbr_issues = fields.Integer('# of Issues', readonly=True)
- working_hours_open = fields.Float('Avg. Working Hours to Open', readonly=True, group_operator="avg")
- working_hours_close = fields.Float('Avg. Working Hours to Close', readonly=True, group_operator="avg")
- delay_open = fields.Float('Avg. Delay to Open', digits=(16, 2), readonly=True, group_operator="avg",
- help="Number of Days to open the project issue.")
- delay_close = fields.Float('Avg. Delay to Close', digits=(16, 2), readonly=True, group_operator="avg",
- help="Number of Days to close the project issue")
- priority = fields.Selection([('0', 'Low'), ('1', 'Normal'), ('2', 'High')])
- project_id = fields.Many2one('project.project', 'Project', readonly=True)
- user_id = fields.Many2one('res.users', 'Assigned to', readonly=True)
- partner_id = fields.Many2one('res.partner', 'Contact')
- email = fields.Integer('# Emails', readonly=True)
-
- @api.model_cr
- def init(self):
- tools.drop_view_if_exists(self._cr, 'project_issue_report')
- self._cr.execute("""
- CREATE OR REPLACE VIEW project_issue_report AS (
- SELECT
- c.id as id,
- c.date_open as opening_date,
- c.create_date as create_date,
- c.date_last_stage_update as date_last_stage_update,
- c.user_id,
- c.working_hours_open,
- c.working_hours_close,
- c.stage_id,
- c.date_closed as date_closed,
- c.company_id as company_id,
- c.priority as priority,
- c.project_id as project_id,
- 1 as nbr_issues,
- c.partner_id,
- c.day_open as delay_open,
- c.day_close as delay_close,
- (SELECT count(id) FROM mail_message WHERE model='project.issue' AND message_type IN ('email', 'comment') AND res_id=c.id) AS email
-
- FROM
- project_issue c
- LEFT JOIN project_task t on c.task_id = t.id
- WHERE c.active= 'true'
- )""")
diff --git a/addons/project_issue/report/project_issue_report_views.xml b/addons/project_issue/report/project_issue_report_views.xml
index 53165683b82..6178f6ba6fa 100644
--- a/addons/project_issue/report/project_issue_report_views.xml
+++ b/addons/project_issue/report/project_issue_report_views.xml
@@ -1,46 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_project_issue_report_pivot" model="ir.ui.view">
- <field name="name">project.issue.report.pivot</field>
- <field name="model">project.issue.report</field>
+ <field name="name">project.issue.pivot</field>
+ <field name="model">project.issue</field>
<field name="arch" type="xml">
<pivot string="Project Issue" disable_linking="True">
<field name="project_id" type="row"/>
<field name="create_date" interval="month" type="col"/>
- <field name="nbr_issues" type="measure"/>
</pivot>
</field>
</record>
<record id="view_project_issue_report_graph" model="ir.ui.view">
- <field name="name">project.issue.report.graph</field>
- <field name="model">project.issue.report</field>
+ <field name="name">project.issue.graph</field>
+ <field name="model">project.issue</field>
<field name="arch" type="xml">
<graph string="Project Issue">
<field name="project_id" type="row"/>
<field name="create_date" interval="month" type="col"/>
- <field name="nbr_issues" type="measure"/>
</graph>
</field>
</record>
- <!-- Custom reports (aka filters) -->
- <record id="filter_issue_report_delay" model="ir.filters">
- <field name="name">Delay</field>
- <field name="model_id">project.issue.report</field>
- <field name="user_id" eval="False"/>
- <field name="context">{'group_by': ['project_id'], 'measures': ['delay_close', 'delay_open']}</field>
- </record>
- <record id="filter_issue_report_responsible" model="ir.filters">
- <field name="name">By Responsible</field>
- <field name="model_id">project.issue.report</field>
- <field name="user_id" eval="False"/>
- <field name="context">{'group_by': ['project_id', 'user_id']}</field>
- </record>
-
<record id="view_project_issue_report_filter" model="ir.ui.view">
- <field name="name">project.issue.report.select</field>
- <field name="model">project.issue.report</field>
+ <field name="name">project.issue.search</field>
+ <field name="model">project.issue</field>
<field name="arch" type="xml">
<search string="Search">
<field name="project_id"/>
@@ -63,18 +47,36 @@
<record id="action_project_issue_report" model="ir.actions.act_window">
<field name="name">Issues Analysis</field>
- <field name="res_model">project.issue.report</field>
+ <field name="res_model">project.issue</field>
<field name="view_type">form</field>
<field name="view_mode">graph,pivot</field>
<field name="context">{'search_default_year':1,'search_default_This Month':1,'search_default_project':1}</field>
<field name="search_view_id" ref="view_project_issue_report_filter"/>
- <field name="view_id"></field> <!-- force empty -->
+ <field name="view_ids" eval="[(5, 0, 0),
+ (0, 0, {'view_mode': 'pivot', 'view_id': ref('view_project_issue_report_pivot')}),
+ (0, 0, {'view_mode': 'graph', 'view_id': ref('view_project_issue_report_graph')})]"/>
<field name="help">This report on the project issues allows you to analyse the quality of your support or after-sales services. You can track the issues per age. You can analyse the time required to open or close an issue, the number of email to exchange and the time spent on average by issues.</field>
</record>
+ <!-- Custom reports (aka filters) -->
+ <record id="filter_issue_report_delay" model="ir.filters">
+ <field name="name">Delay</field>
+ <field name="model_id">project.issue</field>
+ <field name="user_id" eval="False"/>
+ <field name="action_id" ref="action_project_issue_report"/>
+ <field name="context">{'group_by': ['project_id'], 'measures': ['delay_close', 'delay_open']}</field>
+ </record>
+ <record id="filter_issue_report_responsible" model="ir.filters">
+ <field name="name">By Responsible</field>
+ <field name="model_id">project.issue</field>
+ <field name="user_id" eval="False"/>
+ <field name="action_id" ref="action_project_issue_report"/>
+ <field name="context">{'group_by': ['project_id', 'user_id']}</field>
+ </record>
+
<record id="action_project_issue_report_filtered" model="ir.actions.act_window">
<field name="name">Issues Analysis</field>
- <field name="res_model">project.issue.report</field>
+ <field name="res_model">project.issue</field>
<field name="view_type">form</field>
<field name="view_mode">graph,pivot</field>
<field name="context">{
diff --git a/addons/project_issue/security/ir.model.access.csv b/addons/project_issue/security/ir.model.access.csv
index 43a7db60e09..a073bc2cdf9 100644
--- a/addons/project_issue/security/ir.model.access.csv
+++ b/addons/project_issue/security/ir.model.access.csv
@@ -1,6 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_project_issue_user,project.issue,model_project_issue,project.group_project_user,1,1,1,1
-access_project_issue_report_all,project.issue.report,model_project_issue_report,project.group_project_manager,1,1,1,1
access_resource_calendar_project_manager,resource.calendar.project.manager,resource.model_resource_calendar,project.group_project_manager,1,1,1,1
-access_project_issue_report_user,project.issue.report user,model_project_issue_report,project.group_project_user,1,0,0,0
access_project_issue_portal,project.issue,model_project_issue,base.group_portal,1,0,0,0
diff --git a/addons/project_issue/views/project_issue_views.xml b/addons/project_issue/views/project_issue_views.xml
index 383bead65df..20ba2d1972c 100644
--- a/addons/project_issue/views/project_issue_views.xml
+++ b/addons/project_issue/views/project_issue_views.xml
@@ -287,6 +287,7 @@
<field name="view_type">form</field>
<field name="name">Issues</field>
<field name="view_mode">kanban,tree,form,calendar,graph,pivot</field>
+ <field name="search_view_id" ref="view_project_issue_filter"/>
<field name="context">{
'search_default_project_id': [active_id],
'default_project_id': active_id,
@@ -306,6 +307,7 @@
<field name="view_type">form</field>
<field name="name">Issues</field>
<field name="view_mode">kanban,tree,form,calendar,graph</field>
+ <field name="search_view_id" ref="view_project_issue_filter"/>
<field name="help" type="html">
<p>
The Odoo issues tracker allows you to efficiently manage things
@@ -337,6 +339,7 @@
(0, 0, {'view_mode': 'tree', 'view_id': ref('project_issue_tree_view')}),
(0, 0, {'view_mode': 'calendar', 'view_id': ref('project_issue_calendar_view')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('project_issue_form_view')}),
+ (0, 0, {'view_mode': 'pivot', 'view_id': ref('project_issue_pivot_view')}),
(0, 0, {'view_mode': 'graph', 'view_id': ref('project_issue_graph_view')}),
]"/>
<field name="help" type="html">