diff --git a/project_report/report/project_timeline_report.py b/project_report/report/project_timeline_report.py index c71baea..9b052f5 100755 --- a/project_report/report/project_timeline_report.py +++ b/project_report/report/project_timeline_report.py @@ -19,7 +19,7 @@ class ProjectTimelineReport(models.Model): start_date = fields.Date(string='Start Date', readonly=True) end_date = fields.Date(string='End Date', readonly=True) partner_id = fields.Many2one('res.partner', string='Client', readonly=True) - employee_id = fields.Many2one('hr.employee', string='Consultant', readonly=True) + #employee_id = fields.Many2one('hr.employee', string='Consultant', readonly=True) timeline_type = fields.Char(string="Timeline Type", readonly=True) timeline = fields.Float("Timeline", digits=(16, 2), readonly=True, group_operator="sum") hours = fields.Float("Number of Hours", digits=(16, 2), readonly=True, group_operator="sum") @@ -46,81 +46,38 @@ class ProjectTimelineReport(models.Model): pricing_type as pricing_type, project_type as project_type, partner_id, - employee_id, timeline_type, hours, timeline from ( SELECT pro.id AS project_id, (select project_id from project_subproject_rel as par where pro.id=par.id limit 1) as parentproject, - pro_emp.employee_id AS employee_id, date_start AS startdate, date AS enddate, 'Budgeted' as timeline_type, - --DATE_PART('day', AGE(date, date_start)) AS timeline, - pro_emp.budgeted_qty as hours, - pro_emp.budgeted_qty/8 as timeline, - pro.* - FROM - project_project PRO - Left JOIN project_sale_line_employee_map pro_emp ON pro_emp.project_id = pro.id - Where - pro.active = 't' - and PRO.pricing_type = 'employee_rate' and PRO.project_type = 'hours_in_consultant' - Union all - SELECT - pro.id AS project_id, - (select project_id from project_subproject_rel as par where pro.id=par.id limit 1) as parentproject, - null::int AS employee_id, - date_start AS startdate, - date AS enddate, - 'Budgeted' as timeline_type, - --DATE_PART('day', AGE(date, date_start)) AS timeline, pro.budgeted_hours2 as hours, - pro.budgeted_hours2/8 as timeline, + DATE_PART('day', AGE(date, date_start)) AS timeline, pro.* FROM project_project PRO Where pro.active = 't' - and PRO.pricing_type = 'employee_rate' and PRO.project_type = 'hours_no_limit' Union all SELECT pro.id AS project_id, (select project_id from project_subproject_rel as par where pro.id=par.id limit 1) as parentproject, - AAL.employee_id AS employee_id, - start_datetime::DATE AS startdate, - end_datetime::DATE AS enddate, + (select min(al.start_datetime::date) from account_analytic_line as al where pro.id=al.project_id limit 1) as startdate, + (select max(al.end_datetime::date) from account_analytic_line as al where pro.id=al.project_id) as enddate, 'Actual' as timeline_type, - --DATE_PART('day', AGE(end_datetime, start_datetime)) AS timeline, - unit_amount as hours, - unit_amount/8 as timeline, - pro.* - FROM project_project PRO - Left JOIN project_sale_line_employee_map pro_emp ON pro_emp.project_id = pro.id - LEFT JOIN account_analytic_account AA ON PRO.analytic_account_id = AA.id - LEFT JOIN account_analytic_line AAL ON AAL.account_id = AA.id and AAL.project_id = PRO.id and AAL.employee_id = pro_emp.employee_id - Where - PRO.active = 't' and PRO.pricing_type = 'employee_rate' - Union all - SELECT - pro.id AS project_id, - (select project_id from project_subproject_rel as par where pro.id=par.id limit 1) as parentproject, - AAL.employee_id AS employee_id, - start_datetime::DATE AS startdate, - end_datetime::DATE AS enddate, - 'Actual' as timeline_type, - --DATE_PART('day', AGE(end_datetime, start_datetime)) AS timeline, - unit_amount as hours, - unit_amount/8 as timeline, + sum(unit_amount) as hours, + DATE_PART('day', AGE((select max(al.end_datetime::date) from account_analytic_line as al where pro.id=al.project_id), (select min(al.start_datetime::date) from account_analytic_line as al where pro.id=al.project_id))) AS timeline, pro.* FROM project_project PRO LEFT JOIN account_analytic_account AA ON PRO.analytic_account_id = AA.id LEFT JOIN account_analytic_line AAL ON AAL.account_id = AA.id and AAL.project_id = PRO.id - --and AAL.employee_id = pro_emp.employee_id Where PRO.active = 't' - and PRO.pricing_type = 'fixed_rate' + group by pro.id ) as res order by project_id desc, diff --git a/project_report/report/project_timeline_report_views.xml b/project_report/report/project_timeline_report_views.xml index 9c75452..2c632ae 100755 --- a/project_report/report/project_timeline_report_views.xml +++ b/project_report/report/project_timeline_report_views.xml @@ -33,9 +33,10 @@ - + + @@ -50,7 +51,7 @@ - + @@ -61,7 +62,7 @@ - + diff --git a/project_report/static/src/js/graph_renderer.js b/project_report/static/src/js/graph_renderer.js index 305c45e..2eb6392 100755 --- a/project_report/static/src/js/graph_renderer.js +++ b/project_report/static/src/js/graph_renderer.js @@ -662,9 +662,9 @@ var MAX_LEGEND_LENGTH = 25 * (1 + config.device.size_class); // used when stacked dataset.stack = self.state.stacked ? self.state.origins[dataset.originIndex] : undefined; // set dataset color - if (self.state.stacked && dataset.label.includes("Actual")) { + /* if (self.state.stacked && dataset.label.includes("Actual")) { dataset.stack = 1; - } + }*/ if ((self.resModel == 'project.budget.hrs.report') || (self.resModel == 'project.timeline.report')) { //if (dataset.label.indexOf("Actual Hours") === -1 && dataset.label.toLowerCase().indexOf("Budgeted Hours") === -1) { if (dataset.label.indexOf("Actual") === -1 && dataset.label.toLowerCase().indexOf("Budgeted") === -1) { @@ -794,9 +794,9 @@ var MAX_LEGEND_LENGTH = 25 * (1 + config.device.size_class); // used when stacked dataset.stack = self.state.stacked ? self.state.origins[dataset.originIndex] : undefined; // set dataset color - if (self.state.stacked && dataset.label.includes("Actual")) { + /*if (self.state.stacked && dataset.label.includes("Actual")) { dataset.stack = 1; - } + }*/ if ((self.resModel == 'project.budget.hrs.report') || (self.resModel == 'project.timeline.report')) { if (dataset.label.indexOf("Actual") === -1 && dataset.label.toLowerCase().indexOf("Budgeted") === -1) { var color = self._getColor(index);