From 5d5eca380024524adc714095289d19a49923f6be Mon Sep 17 00:00:00 2001 From: shubham Date: Thu, 22 May 2025 16:41:41 +0530 Subject: [PATCH] added project manager, role, end date, tagname, modifed profit amount and add optional attributes to tree view --- .../report/project_revenue_custom_report3.py | 74 ++++++++++++++++--- .../project_revenue_custom_report3_views.xml | 37 ++++++---- 2 files changed, 86 insertions(+), 25 deletions(-) diff --git a/project_report/report/project_revenue_custom_report3.py b/project_report/report/project_revenue_custom_report3.py index 20137de..cfe772c 100644 --- a/project_report/report/project_revenue_custom_report3.py +++ b/project_report/report/project_revenue_custom_report3.py @@ -10,10 +10,11 @@ class ProjectRevenueCustomReport3(models.Model): #_order = 'project_id' _auto = False - start_date = fields.Date(string='Start Date', readonly=True) + start_date = fields.Date(related="project_id.date_start", string='Start Date', readonly=True) #start_datetime = fields.Datetime(string='Start Datetime111111111', readonly=True) - #end_date = fields.Date(string='End Date', readonly=True) + end_date = fields.Date(related="project_id.date", string='End Date', readonly=True) project_id = fields.Many2one('project.project', string='Project', readonly=True) + project_manager = fields.Many2one('res.users', string='Project Manager', readonly=True) parent_project = fields.Many2one('project.project', string='Parent Project', readonly=True) partner_id = fields.Many2one('res.partner', string='Client', readonly=True) timesheet_id = fields.Integer(string='Timesheet ID', readonly=True) @@ -60,6 +61,7 @@ with pro_data as ( PRO.project_type, PRO.pricing_type, PRO.is_sub_project, + PRO.user_id as project_manager, (select project_id from project_subproject_rel as par where pro.id=par.id limit 1) as parent_project, --(select PRO.id from project_subproject_rel as PAR where PRO.id=PAR.project_id limit 1) as parent_project, STRING_AGG(distinct tag_master.name, ', ') as tag_name, @@ -82,6 +84,7 @@ sub_pro_data as ( PRO.project_type, PRO.pricing_type, PRO.is_sub_project, + PRO.user_id as project_manager, PRO.id as sub_project, (select project_id from project_subproject_rel as par where pro.id=par.id limit 1) as parent_project, --(select PRO.id from project_subproject_rel as PAR where PRO.id=PAR.project_id limit 1) as parent_project, @@ -112,7 +115,7 @@ cons_data1 as ( PRO_EMP.employee_price as cons_timesheet_cost, PRO_EMP.price_unit as cons_hourly_cost FROM project_sale_line_employee_map PRO_EMP - group by start_date, end_date, project_id, employee_id, role, budgeted_revenue, budgeted_hours, cons_timesheet_cost, cons_hourly_cost + group by start_date, end_date, project_id, employee_id, PRO_EMP.id, role, budgeted_revenue, budgeted_hours, cons_timesheet_cost, cons_hourly_cost ), tsheet_data1 as ( SELECT @@ -141,13 +144,15 @@ invoice_date as ( data1 as ( SELECT TO_CHAR(start_datetime, 'YYYY-MM-01')::date as start_date, + TO_CHAR(end_datetime, 'YYYY-MM-01')::date as end_date, pro_data.pproject_id as project_id, pro_data.project_active, pro_data.project_type, pro_data.pricing_type, pro_data.parent_project, + pro_data.project_manager, AAL.sub_project, - null::char as role, + COALESCE(cons_data1.role, 'Employee') as role, pro_data.tag_name, pro_data.partner_id, AAL.employee_id, @@ -166,7 +171,11 @@ data1 as ( (0.0 - (sum(AAL.amount) * -1)) AS profit_amt, 0.0 AS profit_per FROM pro_data - right join account_analytic_line AAL on AAL.project_id=pro_data.pproject_id + right join account_analytic_line AAL on AAL.project_id=pro_data.pproject_id + LEFT JOIN cons_data1 ON cons_data1.project_id = AAL.project_id + + AND cons_data1.employee_id = AAL.employee_id + where pro_data.pricing_type = 'fixed_rate' and AAL.sub_project is null and COALESCE(pro_data.is_sub_project, FALSE) = False @@ -176,7 +185,9 @@ data1 as ( pro_data.project_type, pro_data.pricing_type, pro_data.parent_project, + pro_data.project_manager, AAL.sub_project, + cons_data1.role, pro_data.tag_name, pro_data.partner_id, AAL.employee_id, @@ -186,13 +197,15 @@ data1 as ( data1_sub as ( SELECT TO_CHAR(start_datetime, 'YYYY-MM-01')::date as start_date, + TO_CHAR(end_datetime, 'YYYY-MM-01')::date as end_date, sub_pro_data.parent_project as project_id, sub_pro_data.project_active, sub_pro_data.project_type, sub_pro_data.pricing_type, sub_pro_data.parent_project, + sub_pro_data.project_manager, AAL.sub_project, - null::char as role, + COALESCE(cons_data1.role, 'Employee') as role, sub_pro_data.tag_name, sub_pro_data.partner_id, AAL.employee_id, @@ -211,7 +224,10 @@ data1_sub as ( (0.0 - (sum(AAL.amount) * -1)) AS profit_amt, 0.0 AS profit_per FROM sub_pro_data - right join account_analytic_line AAL on AAL.sub_project=sub_pro_data.sub_project + right join account_analytic_line AAL on AAL.sub_project=sub_pro_data.sub_project + LEFT JOIN cons_data1 ON cons_data1.project_id = AAL.project_id + + AND cons_data1.employee_id = AAL.employee_id where sub_pro_data.pricing_type = 'fixed_rate' and AAL.sub_project is not null and sub_pro_data.is_sub_project = TRUE @@ -221,7 +237,9 @@ data1_sub as ( sub_pro_data.project_type, sub_pro_data.pricing_type, sub_pro_data.parent_project, + sub_pro_data.project_manager, AAL.sub_project, + cons_data1.role, sub_pro_data.tag_name, sub_pro_data.partner_id, AAL.employee_id, @@ -231,11 +249,13 @@ data1_sub as ( data2 as ( SELECT null::date as start_date, + null::date as end_date, pro_data.pproject_id as project_id, pro_data.project_active, pro_data.project_type, pro_data.pricing_type, pro_data.parent_project, + pro_data.project_manager, null::int as sub_project, null::char as role, pro_data.tag_name, @@ -265,6 +285,7 @@ data2 as ( pro_data.project_type, pro_data.pricing_type, pro_data.parent_project, + pro_data.project_manager, sub_project, pro_data.tag_name, pro_data.partner_id, @@ -274,11 +295,13 @@ data2 as ( UNION SELECT TO_CHAR(AAL.start_datetime, 'YYYY-MM-01')::date as start_date, + TO_CHAR(AAL.end_datetime, 'YYYY-MM-01')::date as end_date, pro_data.pproject_id as project_id, pro_data.project_active, pro_data.project_type, pro_data.pricing_type, pro_data.parent_project, + pro_data.project_manager, AAL.sub_project, null::char as role, pro_data.tag_name, @@ -311,6 +334,7 @@ SELECT pro_data.project_type, pro_data.pricing_type, pro_data.parent_project, + pro_data.project_manager, AAL.sub_project, pro_data.tag_name, pro_data.partner_id, @@ -326,11 +350,13 @@ SELECT data2_sub_project as ( SELECT null::date as start_date, + null::date as end_date, sub_pro_data.parent_project as project_id, sub_pro_data.project_active, sub_pro_data.project_type, sub_pro_data.pricing_type, sub_pro_data.parent_project, + sub_pro_data.project_manager, sub_pro_data.sub_project, null::char as role, sub_pro_data.tag_name, @@ -360,6 +386,7 @@ data2_sub_project as ( sub_pro_data.project_type, sub_pro_data.pricing_type, sub_pro_data.parent_project, + sub_pro_data.project_manager, sub_pro_data.sub_project, sub_pro_data.tag_name, sub_pro_data.partner_id, @@ -369,11 +396,13 @@ data2_sub_project as ( UNION SELECT TO_CHAR(start_datetime, 'YYYY-MM-01')::date as start_date, + TO_CHAR(end_datetime, 'YYYY-MM-01')::date as end_date, sub_pro_data.pproject_id as project_id, sub_pro_data.project_active, sub_pro_data.project_type, sub_pro_data.pricing_type, sub_pro_data.parent_project, + sub_pro_data.project_manager, AAL.sub_project, null::char as role, sub_pro_data.tag_name, @@ -406,6 +435,7 @@ SELECT sub_pro_data.project_type, sub_pro_data.pricing_type, sub_pro_data.parent_project, + sub_pro_data.project_manager, AAL.sub_project, sub_pro_data.tag_name, sub_pro_data.partner_id, @@ -421,11 +451,13 @@ SELECT data3 as ( SELECT null::date as start_date, + null::date as end_date, pro_data.pproject_id as project_id, pro_data.project_active, pro_data.project_type, pro_data.pricing_type, pro_data.parent_project, + pro_data.project_manager, null::int as sub_project, null::char as role, pro_data.tag_name, @@ -456,6 +488,7 @@ SELECT pro_data.project_active, pro_data.project_type, pro_data.parent_project, + pro_data.project_manager, pro_data.budgeted_revenue, pro_data.tag_name, pro_data.pricing_type, @@ -465,11 +498,13 @@ SELECT UNION SELECT null::date as start_date, + null::date as end_date, cons_data1.project_id, pro_data.project_active, pro_data.project_type, pro_data.pricing_type, pro_data.parent_project, + pro_data.project_manager, null::int as sub_project, cons_data1.role, pro_data.tag_name, @@ -500,6 +535,7 @@ SELECT pro_data.project_active, pro_data.project_type, pro_data.parent_project, + pro_data.project_manager, cons_data1.role, pro_data.tag_name, pro_data.pricing_type, @@ -507,11 +543,13 @@ SELECT UNION SELECT TO_CHAR(start_datetime, 'YYYY-MM-01')::date as start_date, + TO_CHAR(end_datetime, 'YYYY-MM-01')::date as end_date, pro_data.pproject_id as project_id, pro_data.project_active, pro_data.project_type, pro_data.pricing_type, pro_data.parent_project, + pro_data.project_manager, AAL.sub_project, cons_data1.role, pro_data.tag_name, @@ -555,6 +593,7 @@ SELECT pro_data.project_active, pro_data.project_type, pro_data.parent_project, + pro_data.project_manager, AAL.sub_project, cons_data1.role, pro_data.tag_name, @@ -568,12 +607,14 @@ SELECT data3_sub_project as ( SELECT null::date as start_date, + null::date as end_date, --sub_pro_data.parent_project as project_id, sub_pro_data.pproject_id as project_id, sub_pro_data.project_active, sub_pro_data.project_type, sub_pro_data.pricing_type, sub_pro_data.parent_project, + sub_pro_data.project_manager, sub_pro_data.sub_project, null::char as role, sub_pro_data.tag_name, @@ -602,6 +643,7 @@ SELECT sub_pro_data.project_active, sub_pro_data.project_type, sub_pro_data.parent_project, + sub_pro_data.project_manager, sub_pro_data.sub_project, sub_pro_data.budgeted_revenue, sub_pro_data.tag_name, @@ -612,11 +654,13 @@ SELECT UNION SELECT null::date as start_date, + null::date as end_date, sub_pro_data.pproject_id as project_id, sub_pro_data.project_active, sub_pro_data.project_type, sub_pro_data.pricing_type, sub_pro_data.parent_project, + sub_pro_data.project_manager, sub_pro_data.sub_project, cons_data1.role, sub_pro_data.tag_name, @@ -647,6 +691,7 @@ SELECT sub_pro_data.project_active, sub_pro_data.project_type, sub_pro_data.parent_project, + sub_pro_data.project_manager, sub_pro_data.sub_project, cons_data1.role, sub_pro_data.tag_name, @@ -655,11 +700,13 @@ SELECT UNION SELECT TO_CHAR(start_datetime, 'YYYY-MM-01')::date as start_date, + TO_CHAR(end_datetime, 'YYYY-MM-01')::date as end_date, sub_pro_data.pproject_id as project_id, sub_pro_data.project_active, sub_pro_data.project_type, sub_pro_data.pricing_type, sub_pro_data.parent_project, + sub_pro_data.project_manager, sub_pro_data.sub_project, cons_data1.role, sub_pro_data.tag_name, @@ -703,6 +750,7 @@ SELECT sub_pro_data.project_active, sub_pro_data.project_type, sub_pro_data.parent_project, + sub_pro_data.project_manager, sub_pro_data.sub_project, cons_data1.role, sub_pro_data.tag_name, @@ -715,11 +763,13 @@ SELECT ), invoice_data as (SELECT invoice_date.date as start_date, + invoice_date.date as end_date, invoice_date.project_id, pro_data.project_active, pro_data.project_type, pro_data.pricing_type, pro_data.parent_project, + pro_data.project_manager, null::int as sub_project, null::char as role, pro_data.tag_name, @@ -737,7 +787,7 @@ invoice_data as (SELECT invoice_date.fixed_amount as actual_revenue, 0 as actual_cost, 0.0 AS expenses_amt, - 0.0 AS profit_amt, + invoice_date.fixed_amount AS profit_amt, 0.0 AS profit_per from invoice_date left join pro_data on pro_data.pproject_id = invoice_date.project_id --and pro_data.employee_id = invoice_date.employee_id @@ -745,11 +795,13 @@ invoice_data as (SELECT ), invoice_data_sub as (SELECT invoice_date.date as start_date, + invoice_date.date as end_date, sub_pro_data.parent_project as project_id, sub_pro_data.project_active, sub_pro_data.project_type, sub_pro_data.pricing_type, sub_pro_data.parent_project, + sub_pro_data.project_manager, sub_pro_data.sub_project, null::char as role, sub_pro_data.tag_name, @@ -767,7 +819,7 @@ invoice_data_sub as (SELECT invoice_date.fixed_amount as actual_revenue, 0 as actual_cost, 0.0 AS expenses_amt, - 0.0 AS profit_amt, + invoice_date.fixed_amount AS profit_amt, 0.0 AS profit_per from invoice_date left join sub_pro_data on sub_pro_data.sub_project = invoice_date.project_id @@ -793,7 +845,9 @@ select * from invoice_data_sub select ROW_NUMBER() OVER() as id, start_date, + end_date, project_id, + project_manager, project_active, project_type, pricing_type, @@ -820,7 +874,9 @@ select from res group by start_date, + end_date, project_id, + project_manager, project_active, project_type, pricing_type, diff --git a/project_report/report/project_revenue_custom_report3_views.xml b/project_report/report/project_revenue_custom_report3_views.xml index 5af47ce..308f33e 100644 --- a/project_report/report/project_revenue_custom_report3_views.xml +++ b/project_report/report/project_revenue_custom_report3_views.xml @@ -41,22 +41,27 @@ project.revenue.custom.report3 - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +