Report query updated

This commit is contained in:
root 2022-08-30 09:43:09 +05:30
parent af0578a880
commit b85058be89
2 changed files with 361 additions and 292 deletions

View File

@ -41,7 +41,7 @@ class ProjectRevenueCustomReport3(models.Model):
project_active = fields.Boolean('Active')
tag_name = fields.Char("Tag Name")
role = fields.Selection([('Manager', 'Manager'), ('Employee', 'Employee')], string="Role")
is_sub_project = fields.Boolean("Is Sub Project")
#is_sub_project = fields.Boolean("Is Sub Project")
sub_project = fields.Many2one('project.project', string='Sub Project')
@ -50,299 +50,346 @@ class ProjectRevenueCustomReport3(models.Model):
tools.drop_view_if_exists(self._cr, self._table)
self._cr.execute("""
CREATE OR REPLACE VIEW %s AS (
with pro_tsheet as (SELECT
date_trunc('month', min(AAL.start_datetime::date)) AS min,
date_trunc('month', max(AAL.end_datetime::date)) AS max,
AAL.start_datetime::date as t_startdate,
AAL.end_datetime::date as t_enddate,
PRO.date_start as pro_sdate,
PRO.date as pro_edate,
with pro_data as (
SELECT
PRO.id as pproject_id,
AAL.project_id as project_id,
PRO.date_start as pro_sdate,
PRO.date as pro_edate,
PRO.active as project_active,
PRO.project_type,
PRO.pricing_type,
(select PRO.id from project_subproject_rel as PAR where PRO.id=PAR.project_id limit 1) as parent_project,
--CASE WHEN PRO.sub_project is not null then True else False END as is_sub_project,
PRO.is_sub_project,
AAL.sub_project as sub_project,
(select PRO.id from project_subproject_rel as PAR where PRO.id=PAR.project_id limit 1) as parent_project,
PRO.sub_project as sub_project,
STRING_AGG(distinct tag_master.name, ', ') as tag_name,
PRO.partner_id AS partner_id,
AAL.id as timesheet_id,
PRO.budgeted_revenue as budgeted_revenue,
PRO.budgeted_hours2 as budgeted_hours,
PRO.expenses_amt,
pro.hourly_rate AS pro_hourly_rate,
AAL.employee_id,
AAL.unit_amount as unit_amount,
(AAL.unit_amount * pro.hourly_rate) AS actual_revenue,
(AAL.amount * -1) as actual_cost
PRO.expenses_amt as expenses_amt,
PRO.hourly_rate AS pro_hourly_rate
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
LEFT JOIN custom_project_tags_project_project_rel AS cus_pro_tag ON pro.id = cus_pro_tag.project_project_id
LEFT JOIN custom_project_tags as tag_master ON tag_master.id = cus_pro_tag.custom_project_tags_id
LEFT JOIN project_subproject_rel as sub_pro ON sub_pro.project_id = PRO.id
GROUP BY PRO.id, AAL.start_datetime::date, AAL.end_datetime::date, AAL.project_id, PRO.active,
PRO.project_type, PRO.pricing_type, PRO.is_sub_project, AAL.sub_project, AAL.project_id,
PRO.partner_id, --sub_pro.id,
AAL.id, PRO.id, PRO.budgeted_revenue, PRO.budgeted_hours2, PRO.expenses_amt,
pro.hourly_rate, AAL.employee_id, AAL.unit_amount, AAL.amount
),
input_data as (SELECT generate_series(min, max,'1 month'):: date AS start_date,
(generate_series(min, max, '1 month'):: date + '1 month' :: interval - '1 day' :: interval):: date AS end_date,
pro_tsheet.project_id, pro_tsheet.employee_id
from pro_tsheet),
cons_data as (
SELECT PRO_EMP.start_date as cons_start_date, PRO_EMP.end_date as cons_end_date,
sum(PRO_EMP.price_unit) as price_unit, PRO_EMP.project_id, PRO_EMP.employee_id,
sum(PRO_EMP.employee_price) as cons_price, sum(PRO_EMP.cost) AS cons_budgeted_revenue,
sum(PRO_EMP.budgeted_qty) AS cons_budgeted_hours
from project_sale_line_employee_map PRO_EMP
GROUP BY PRO_EMP.start_date, PRO_EMP.end_date, PRO_EMP.project_id, PRO_EMP.employee_id
LEFT JOIN custom_project_tags_project_project_rel AS cus_pro_tag ON pro.id = cus_pro_tag.project_project_id
LEFT JOIN custom_project_tags as tag_master ON tag_master.id = cus_pro_tag.custom_project_tags_id
group by pro.id
),
cons_data1 as (
SELECT
date_trunc('month', min(PRO_EMP.start_date)) AS min,
date_trunc('month', max(coalesce(PRO_EMP.end_date, current_date))) AS max,
PRO_EMP.start_date as start_date,
coalesce(PRO_EMP.end_date, current_date) as end_date,
PRO_EMP.project_id,
PRO_EMP.employee_id,
PRO_EMP.role,
PRO_EMP.budgeted_qty as budgeted_hours,
PRO_EMP.cost as budgeted_revenue,
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_hours, budgeted_revenue, cons_timesheet_cost, cons_hourly_cost
),
tsheet_data1 as (
SELECT
date_trunc('month', min(AAL.start_datetime::date)) AS min,
date_trunc('month', max(AAL.end_datetime::date)) AS max,
AAL.project_id,
AAL.employee_id
FROM account_analytic_line AAL
group by AAL.project_id, AAL.employee_id
),
drange_data1 as (
SELECT
tsheet_data1.project_id,
tsheet_data1.employee_id,
generate_series(min, max,'1 month'):: date AS start_date,
(generate_series(min, max, '1 month'):: date + '1 month' :: interval - '1 day' :: interval):: date AS end_date
FROM tsheet_data1
),
drange_data2 as (
SELECT
cons_data1.project_id,
cons_data1.employee_id,
generate_series(min, max,'1 month'):: date AS start_date,
(generate_series(min, max, '1 month'):: date + '1 month' :: interval - '1 day' :: interval):: date AS end_date
FROM cons_data1
),
invoice_date as (
SELECT
date,
project_id,
(SELECT id FROM hr_employee WHERE LOWER(name)=LOWER('Fixed amount') limit 1) as employee_id,
fixed_amount from project_revenue_lines),
fixed_rate as (
fixed_amount from project_revenue_lines
),
data1 as (
SELECT
input_data.start_date,
input_data.end_date,
input_data.project_id,
pro_tsheet.project_active,
pro_tsheet.project_type,
pro_tsheet.pricing_type,
pro_tsheet.parent_project,
pro_tsheet.is_sub_project,
pro_tsheet.sub_project,
drange_data1.start_date,
drange_data1.end_date,
drange_data1.project_id,
pro_data.project_active,
pro_data.project_type,
pro_data.pricing_type,
pro_data.parent_project,
pro_data.sub_project,
null::char as role,
pro_tsheet.tag_name,
pro_tsheet.partner_id,
pro_tsheet.timesheet_id,
input_data.employee_id,
pro_data.tag_name,
pro_data.partner_id,
--pro_tsheet.timesheet_id,
drange_data1.employee_id,
0 as overall_budgeted_revenue,
0 as budgeted_revenue,
0 as budgeted_hours,
0 as overall_hourly_rate,
0 AS pro_hourly_rate,
pro_tsheet.unit_amount,
((pro_tsheet.actual_cost)/NULLIF(pro_tsheet.unit_amount, 0)) as timesheet_cost,
sum(AAL.unit_amount) as unit_amount,
((sum(AAL.amount) * -1)/NULLIF(sum(AAL.unit_amount), 0)) as timesheet_cost,
0.0 AS actual_revenue,
pro_tsheet.actual_cost,
(sum(AAL.amount) * -1) as actual_cost,
0.0 AS expenses_amt,
(0.0 - pro_tsheet.actual_cost) AS profit_amt,
(0.0 - (sum(AAL.amount) * -1)) AS profit_amt,
0.0 AS profit_per
from input_data
left join pro_tsheet on pro_tsheet.project_id = input_data.project_id and pro_tsheet.employee_id = input_data.employee_id
and pro_tsheet.t_startdate >= input_data.start_date and pro_tsheet.t_enddate <= input_data.end_date
where pro_tsheet.pricing_type = 'fixed_rate'
group by
input_data.start_date,
input_data.end_date,
input_data.project_id,
pro_tsheet.project_active,
pro_tsheet.project_type,
pro_tsheet.pricing_type,
pro_tsheet.parent_project,
pro_tsheet.is_sub_project,
pro_tsheet.sub_project,
pro_tsheet.tag_name,
pro_tsheet.partner_id,
pro_tsheet.timesheet_id,
input_data.employee_id,
pro_tsheet.unit_amount,
pro_tsheet.actual_cost
FROM drange_data1
left join pro_data on pro_data.pproject_id = drange_data1.project_id
left join tsheet_data1 on tsheet_data1.project_id=drange_data1.project_id and tsheet_data1.employee_id=drange_data1.employee_id
left join account_analytic_line AAL on AAL.project_id=tsheet_data1.project_id and AAL.employee_id=tsheet_data1.employee_id
and AAL.start_datetime >= drange_data1.start_date and AAL.end_datetime <= drange_data1.end_date
where pro_data.pricing_type = 'fixed_rate'
group by
drange_data1.start_date,
drange_data1.end_date,
drange_data1.project_id,
pro_data.project_active,
pro_data.project_type,
pro_data.pricing_type,
pro_data.parent_project,
pro_data.sub_project,
pro_data.tag_name,
pro_data.partner_id,
--pro_tsheet.timesheet_id,
drange_data1.employee_id
--AAL.unit_amount,
--AAL.amount
),
cons_no_limit1 as (SELECT
coalesce(pro_tsheet.pro_sdate, pro_tsheet.t_startdate) as start_date,
coalesce(pro_tsheet.pro_edate, pro_tsheet.t_enddate) as end_date,
pro_tsheet.pproject_id,
pro_tsheet.project_active,
pro_tsheet.project_type,
pro_tsheet.pricing_type,
pro_tsheet.parent_project,
pro_tsheet.is_sub_project,
pro_tsheet.sub_project,
data2 as (
SELECT
coalesce(pro_data.pro_sdate, drange_data1.start_date) as start_date,
coalesce(pro_data.pro_edate, drange_data1.end_date) as end_date,
drange_data1.project_id,
pro_data.project_active,
pro_data.project_type,
pro_data.pricing_type,
pro_data.parent_project,
pro_data.sub_project,
null::char as role,
pro_tsheet.tag_name,
pro_tsheet.partner_id,
null::int AS timesheet_id,
pro_data.tag_name,
pro_data.partner_id,
--pro_tsheet.timesheet_id,
null::int AS employee_id,
0 as overall_budgeted_revenue,
pro_tsheet.budgeted_revenue,
pro_tsheet.budgeted_hours,
pro_data.budgeted_revenue,
pro_data.budgeted_hours,
0 as overall_hourly_rate,
0 as pro_hourly_rate,
0 as unit_amount,
0 AS pro_hourly_rate,
0 as unit_amount,
0 as timesheet_cost,
0 AS actual_revenue,
0 AS actual_cost,
pro_tsheet.expenses_amt AS expenses_amt,
0 AS profit_amt,
0 AS profit_per
from input_data
left join pro_tsheet on pro_tsheet.project_id = input_data.project_id and pro_tsheet.employee_id = input_data.employee_id
and coalesce(pro_tsheet.pro_sdate, pro_tsheet.min) >= input_data.start_date and pro_tsheet.t_enddate <= coalesce(pro_tsheet.pro_edate, pro_tsheet.max)
WHERE pro_tsheet.pricing_type='employee_rate' and pro_tsheet.project_type='hours_no_limit'
0.0 AS actual_revenue,
0 as actual_cost,
pro_data.expenses_amt,
0.0 AS profit_amt,
0.0 AS profit_per
FROM drange_data1
left join pro_data on pro_data.pproject_id = drange_data1.project_id
WHERE pro_data.pricing_type='employee_rate' and pro_data.project_type='hours_no_limit'
group by
pro_tsheet.pro_sdate,
pro_tsheet.pro_edate,
pro_tsheet.t_startdate,
pro_tsheet.t_enddate,
pro_tsheet.pproject_id,
pro_tsheet.project_active,
pro_tsheet.project_type,
pro_tsheet.pricing_type,
pro_tsheet.parent_project,
pro_tsheet.is_sub_project,
pro_tsheet.sub_project,
pro_tsheet.tag_name,
pro_tsheet.partner_id,
pro_tsheet.budgeted_revenue,
pro_tsheet.budgeted_hours,
pro_tsheet.unit_amount,
pro_tsheet.pro_hourly_rate,
pro_tsheet.expenses_amt
),
cons_no_limit2 as (
SELECT
input_data.start_date,
input_data.end_date,
input_data.project_id,
pro_tsheet.project_active,
pro_tsheet.project_type,
pro_tsheet.pricing_type,
pro_tsheet.parent_project,
pro_tsheet.is_sub_project,
pro_tsheet.sub_project,
drange_data1.start_date,
drange_data1.end_date,
pro_data.pro_sdate,
pro_data.pro_edate,
drange_data1.project_id,
pro_data.project_active,
pro_data.project_type,
pro_data.pricing_type,
pro_data.parent_project,
pro_data.sub_project,
pro_data.tag_name,
pro_data.partner_id,
drange_data1.employee_id,
pro_data.budgeted_revenue,
pro_data.budgeted_hours,
pro_data.expenses_amt
UNION
SELECT
drange_data1.start_date,
drange_data1.end_date,
drange_data1.project_id,
pro_data.project_active,
pro_data.project_type,
pro_data.pricing_type,
pro_data.parent_project,
pro_data.sub_project,
null::char as role,
pro_tsheet.tag_name,
pro_tsheet.partner_id,
pro_tsheet.timesheet_id,
input_data.employee_id,
pro_data.tag_name,
pro_data.partner_id,
--pro_tsheet.timesheet_id,
drange_data1.employee_id,
0 as overall_budgeted_revenue,
pro_tsheet.budgeted_revenue,
pro_tsheet.budgeted_hours,
0 as budgeted_revenue,
0 as budgeted_hours,
0 as overall_hourly_rate,
pro_tsheet.pro_hourly_rate,
pro_tsheet.unit_amount,
((pro_tsheet.actual_cost)/NULLIF(pro_tsheet.unit_amount, 0)) as timesheet_cost,
pro_tsheet.actual_revenue AS actual_revenue,
pro_tsheet.actual_cost,
pro_tsheet.expenses_amt AS expenses_amt,
0 AS profit_amt,
0 AS profit_per
from input_data
left join pro_tsheet on pro_tsheet.project_id = input_data.project_id and pro_tsheet.employee_id = input_data.employee_id
and pro_tsheet.t_startdate >= input_data.start_date and pro_tsheet.t_enddate <= input_data.end_date
WHERE pro_tsheet.pricing_type='employee_rate' and pro_tsheet.project_type='hours_no_limit'
pro_data.pro_hourly_rate,
AAL.unit_amount,
((AAL.amount * -1)/NULLIF(AAL.unit_amount, 0)) as timesheet_cost,
(AAL.unit_amount * pro_data.pro_hourly_rate) AS actual_revenue,
(AAL.amount * -1) as actual_cost,
pro_data.expenses_amt AS expenses_amt,
0.0 AS profit_amt,
0.0 AS profit_per
FROM drange_data1
left join pro_data on pro_data.pproject_id = drange_data1.project_id
left join account_analytic_line AAL on AAL.project_id=drange_data1.project_id and AAL.employee_id=drange_data1.employee_id
and AAL.start_datetime >= drange_data1.start_date and AAL.end_datetime <= drange_data1.end_date
WHERE pro_data.pricing_type='employee_rate' and pro_data.project_type='hours_no_limit'
group by
input_data.start_date,
input_data.end_date,
input_data.project_id,
pro_tsheet.project_active,
pro_tsheet.project_type,
pro_tsheet.pricing_type,
pro_tsheet.parent_project,
pro_tsheet.is_sub_project,
pro_tsheet.sub_project,
pro_tsheet.tag_name,
pro_tsheet.partner_id,
pro_tsheet.timesheet_id,
input_data.employee_id,
pro_tsheet.budgeted_revenue,
pro_tsheet.budgeted_hours,
input_data.employee_id,
pro_tsheet.unit_amount,
pro_tsheet.pro_hourly_rate,
pro_tsheet.actual_cost,
pro_tsheet.actual_revenue,
pro_tsheet.actual_cost,
pro_tsheet.expenses_amt
drange_data1.start_date,
drange_data1.end_date,
pro_data.pro_sdate,
pro_data.pro_edate,
drange_data1.project_id,
pro_data.project_active,
pro_data.project_type,
pro_data.pricing_type,
pro_data.parent_project,
pro_data.sub_project,
pro_data.tag_name,
pro_data.partner_id,
drange_data1.employee_id,
pro_data.pro_hourly_rate,
aal.unit_amount,
aal.amount,
pro_data.budgeted_revenue,
pro_data.budgeted_hours,
pro_data.expenses_amt
),
hrs_in_cons as (
SELECT
input_data.start_date,
input_data.end_date,
input_data.project_id,
pro_tsheet.project_active,
pro_tsheet.project_type,
pro_tsheet.pricing_type,
pro_tsheet.parent_project,
pro_tsheet.is_sub_project,
pro_tsheet.sub_project,
null::char as role,
pro_tsheet.tag_name,
pro_tsheet.partner_id,
pro_tsheet.timesheet_id,
input_data.employee_id,
0 as overall_budgeted_revenue,
coalesce(cons_data.cons_budgeted_revenue, 0) as budgeted_revenue,
coalesce(cons_data.cons_budgeted_hours, 0) as budgeted_hours,
0 as overall_hourly_rate,
pro_tsheet.pro_hourly_rate,
pro_tsheet.unit_amount,
COALESCE(cons_data.cons_price, (pro_tsheet.unit_amount * cons_data.cons_price), 0) as timesheet_cost,
COALESCE((pro_tsheet.unit_amount * cons_data.price_unit), 0) as actual_revenue,
COALESCE(pro_tsheet.actual_cost, cons_data.cons_price, 0) as actual_cost,
0 AS expenses_amt,
0 AS profit_amt,
0 AS profit_per
from input_data
left join pro_tsheet on pro_tsheet.project_id = input_data.project_id and pro_tsheet.employee_id = input_data.employee_id
and pro_tsheet.t_startdate >= input_data.start_date and pro_tsheet.t_enddate <= input_data.end_date
left join cons_data on cons_data.project_id = input_data.project_id and cons_data.employee_id = input_data.employee_id
and cons_data.cons_start_date >= input_data.start_date and cons_data.cons_end_date <= input_data.end_date
WHERE pro_tsheet.pricing_type='employee_rate' and pro_tsheet.project_type='hours_in_consultant'
--and budgeted_hours>0 and pro_tsheet.unit_amount > 0
group by
input_data.start_date,
input_data.end_date,
input_data.project_id,
pro_tsheet.project_active,
pro_tsheet.project_type,
pro_tsheet.pricing_type,
pro_tsheet.parent_project,
pro_tsheet.is_sub_project,
pro_tsheet.sub_project,
pro_tsheet.tag_name,
pro_tsheet.partner_id,
pro_tsheet.timesheet_id,
input_data.employee_id,
cons_data.cons_budgeted_revenue,
cons_data.cons_budgeted_hours,
input_data.employee_id,
pro_tsheet.unit_amount,
pro_tsheet.pro_hourly_rate,
cons_data.cons_price,
cons_data.price_unit,
pro_tsheet.actual_cost,
pro_tsheet.actual_revenue,
pro_tsheet.actual_cost,
pro_tsheet.expenses_amt
data3 as (
SELECT
drange_data1.start_date,
drange_data1.end_date,
drange_data1.project_id,
pro_data.project_active,
pro_data.project_type,
pro_data.pricing_type,
pro_data.parent_project,
pro_data.sub_project,
cons_data1.role,
pro_data.tag_name,
pro_data.partner_id,
drange_data1.employee_id,
0 as overall_budgeted_revenue,
0 as budgeted_revenue,
0 as budgeted_hours,
0 as overall_hourly_rate,
0 as pro_hourly_rate,
AAL.unit_amount as unit_amount,
coalesce(((AAL.amount * -1)/NULLIF(AAL.unit_amount, 0)), cons_data1.cons_timesheet_cost) as timesheet_cost,
(AAL.unit_amount * COALESCE(cons_data1.cons_hourly_cost, 0)) as actual_revenue,
coalesce((AAL.amount * -1), cons_data1.cons_timesheet_cost, 0) as actual_cost,
pro_data.expenses_amt as expenses_amt,
(AAL.unit_amount * COALESCE(cons_data1.cons_hourly_cost, 0)) as profit_amt,
((AAL.unit_amount * COALESCE(cons_data1.cons_hourly_cost, 0))/NULLIF((AAL.unit_amount * COALESCE(cons_data1.cons_hourly_cost, 0)),0)) * 100
as profit_per
FROM drange_data1
left join pro_data on pro_data.pproject_id = drange_data1.project_id
left join tsheet_data1 on tsheet_data1.project_id=drange_data1.project_id and tsheet_data1.employee_id=drange_data1.employee_id
left join cons_data1 on cons_data1.project_id=drange_data1.project_id and cons_data1.employee_id=drange_data1.employee_id
left join account_analytic_line AAL on AAL.project_id=tsheet_data1.project_id and AAL.employee_id=tsheet_data1.employee_id
and AAL.start_datetime >= drange_data1.start_date and AAL.end_datetime <= drange_data1.end_date
where pro_data.pricing_type='employee_rate' and pro_data.project_type='hours_in_consultant'
group by
drange_data1.start_date,
drange_data1.end_date,
drange_data1.project_id,
drange_data1.employee_id,
pro_data.project_active,
pro_data.project_type,
pro_data.parent_project,
pro_data.sub_project,
cons_data1.role,
pro_data.tag_name,
pro_data.pricing_type,
pro_data.partner_id,
pro_data.pro_hourly_rate,
pro_data.expenses_amt,
AAL.unit_amount,
AAL.amount,
cons_data1.cons_timesheet_cost,
cons_data1.cons_hourly_cost,
pro_data.budgeted_revenue,
pro_data.pro_hourly_rate
UNION
SELECT
drange_data2.start_date,
drange_data2.end_date,
drange_data2.project_id,
pro_data.project_active,
pro_data.project_type,
pro_data.pricing_type,
pro_data.parent_project,
pro_data.sub_project,
cons_data1.role,
pro_data.tag_name,
pro_data.partner_id,
drange_data2.employee_id,
0 as overall_budgeted_revenue,
cons_data1.budgeted_revenue,
cons_data1.budgeted_hours,
pro_data.budgeted_revenue as overall_hourly_rate,
pro_data.pro_hourly_rate,
0 as unit_amount,
0 as timesheet_cost,
0.0 as actual_revenue,
0.0 as actual_cost,
pro_data.expenses_amt as expenses_amt,
0.0 as profit_amt,
0.0 as profit_per
FROM drange_data2
left join pro_data on pro_data.pproject_id=drange_data2.project_id
left join cons_data1 on cons_data1.project_id=drange_data2.project_id and cons_data1.employee_id=drange_data2.employee_id
and cons_data1.start_date >= drange_data2.start_date and cons_data1.end_date <= drange_data2.end_date
where pro_data.pricing_type='employee_rate' and pro_data.project_type='hours_in_consultant'
group by
pro_data.project_active,
pro_data.project_type,
pro_data.pricing_type,
pro_data.parent_project,
pro_data.sub_project,
cons_data1.role,
pro_data.tag_name,
pro_data.partner_id,
drange_data2.start_date,
drange_data2.end_date,
drange_data2.project_id,
drange_data2.employee_id,
pro_data.budgeted_revenue,
pro_data.pro_hourly_rate,
cons_data1.budgeted_revenue,
cons_data1.budgeted_hours,
pro_data.expenses_amt
),
invoice_data as (SELECT
invoice_date.date as start_date,
invoice_date.date as end_date,
--null::int as timesheet_id,
invoice_date.project_id,
pro_tsheet.project_active,
pro_tsheet.project_type,
pro_tsheet.pricing_type,
pro_tsheet.parent_project,
pro_tsheet.is_sub_project,
pro_tsheet.sub_project,
pro_data.project_active,
pro_data.project_type,
pro_data.pricing_type,
pro_data.parent_project,
pro_data.sub_project,
null::char as role,
pro_tsheet.tag_name,
pro_tsheet.partner_id,
pro_tsheet.timesheet_id,
pro_data.tag_name,
pro_data.partner_id,
--pro_tsheet.timesheet_id,
invoice_date.employee_id,
0 as overall_budgeted_revenue,
0 as budgeted_revenue,
pro_tsheet.budgeted_hours,
0 as budgeted_hours,
0 as overall_hourly_rate,
0 as pro_hourly_rate,
0 as unit_amount,
@ -353,49 +400,71 @@ invoice_data as (SELECT
0.0 AS profit_amt,
0.0 AS profit_per
from invoice_date
left join pro_tsheet on pro_tsheet.project_id = invoice_date.project_id and pro_tsheet.employee_id = invoice_date.employee_id
left join input_data on input_data.project_id = invoice_date.project_id and input_data.employee_id = invoice_date.employee_id
and invoice_date.date >= input_data.start_date and invoice_date.date <= input_data.end_date),
final_res as (
select * from fixed_rate
UNION
select * from cons_no_limit1
UNION
select * from cons_no_limit2
UNION
select * from hrs_in_cons
UNION
select * from invoice_data
)
SELECT
ROW_NUMBER() OVER() as id,
start_date,
end_date,
project_id,
project_active,
project_type,
pricing_type,
parent_project,
is_sub_project,
sub_project,
role,
tag_name,
partner_id,
timesheet_id,
employee_id,
overall_budgeted_revenue,
budgeted_revenue,
budgeted_hours,
overall_hourly_rate,
pro_hourly_rate,
unit_amount,
timesheet_cost,
actual_revenue,
actual_cost,
expenses_amt,
profit_amt,
profit_per
from final_res
left join pro_data on pro_data.pproject_id = invoice_date.project_id --and pro_data.employee_id = invoice_date.employee_id
left join drange_data1 on invoice_date.project_id = drange_data1.project_id and invoice_date.employee_id = drange_data1.employee_id
and invoice_date.date >= drange_data1.start_date and invoice_date.date <= drange_data1.end_date
),
res as (
select * from data1
UNION
select * from data2
UNION
select * from data3
UNION
select * from invoice_data
)
select
ROW_NUMBER() OVER() as id,
start_date,
end_date,
project_id,
project_active,
project_type,
pricing_type,
parent_project,
sub_project,
role,
tag_name,
partner_id,
employee_id,
overall_budgeted_revenue,
budgeted_revenue,
budgeted_hours,
overall_hourly_rate,
pro_hourly_rate,
unit_amount,
timesheet_cost,
actual_revenue,
actual_cost,
expenses_amt,
profit_amt,
profit_per
from res
group by
start_date,
end_date,
project_id,
project_active,
project_type,
pricing_type,
parent_project,
sub_project,
role,
tag_name,
partner_id,
employee_id,
overall_budgeted_revenue,
budgeted_revenue,
budgeted_hours,
overall_hourly_rate,
pro_hourly_rate,
unit_amount,
timesheet_cost,
actual_revenue,
actual_cost,
expenses_amt,
profit_amt,
profit_per
)""" % (self._table,))
@api.model

View File

@ -76,7 +76,7 @@
<filter string="End Date" name="filter_end_date" date="end_date"/>
<filter string="Active" name="active_project" domain="[('project_active','=',True)]"/>
<filter string="Archived" name="active_project" domain="[('project_active','=',False)]"/>
<filter string="Is Sub Project" name="subproject" domain="[('is_sub_project','=',True)]"/>
<!-- <filter string="Is Sub Project" name="subproject" domain="[('is_sub_project','=',True)]"/> -->
<filter string="Manager Role" name="manager_role" domain="[('role','=','Manager')]"/>
<filter string="Employee Role" name="employee_role" domain="[('role','=','Employee')]"/>
<group expand="1" string="Group By">