diff --git a/project_report/report/project_budget_amt_analysis.py b/project_report/report/project_budget_amt_analysis.py index 078e7f1..898478f 100755 --- a/project_report/report/project_budget_amt_analysis.py +++ b/project_report/report/project_budget_amt_analysis.py @@ -25,18 +25,18 @@ class BudgetAmtAnalysis(models.Model): tools.drop_view_if_exists(self._cr, self._table) self._cr.execute(""" CREATE OR REPLACE VIEW %s AS ( - SELECT + SELECT ROW_NUMBER() OVER() as id, project_id, partner_id, amount_type, revenue from ( + SELECT row_number() OVER() AS id, PRO.id AS project_id, PRO.create_date AS create_date, PRO.partner_id AS partner_id, 'Budgeted Revenue' as amount_type, PRO.budgeted_revenue AS revenue - --SO.amount_total AS actual_revenue FROM project_project PRO LEFT JOIN sale_order SO ON PRO.sale_order_id = SO.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 + --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 WHERE PRO.active = 't' and PRO.pricing_type!='fixed_rate' group by Pro.id, PRO.partner_id, Pro.budgeted_revenue, so.amount_total union @@ -46,14 +46,14 @@ class BudgetAmtAnalysis(models.Model): PRO.create_date AS create_date, PRO.partner_id AS partner_id, 'Actual Revenue' as amount_type, - SO.amount_total AS revenue + sum(AAL.amount * -1) + pro.total_expenses AS revenue FROM project_project PRO LEFT JOIN sale_order SO ON PRO.sale_order_id = SO.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 WHERE PRO.active = 't' and PRO.pricing_type!='fixed_rate' group by Pro.id, PRO.partner_id, Pro.budgeted_revenue, so.amount_total - order by create_date desc, project_id, amount_type desc + order by create_date desc, project_id, amount_type desc) as res )""" % (self._table,)) diff --git a/project_report/report/project_budget_hrs_analysis.py b/project_report/report/project_budget_hrs_analysis.py index d24aa80..1409d0a 100755 --- a/project_report/report/project_budget_hrs_analysis.py +++ b/project_report/report/project_budget_hrs_analysis.py @@ -15,8 +15,9 @@ class BudgetHrsAnalysis(models.Model): project_id = fields.Many2one('project.project', string='Project', readonly=True) partner_id = fields.Many2one('res.partner', string='Client', readonly=True) employee_id = fields.Many2one('hr.employee', string='Employee', readonly=True) - hours_type = fields.Char(string="Hours Type") + hours_type = fields.Char(string="Hours Type", readonly=True) hours = fields.Float("Hours", digits=(16, 2), readonly=True, group_operator="sum") + #budgeted_hours = fields.Float("Budgeted Hours", digits=(16, 2), readonly=True, group_operator="sum") #actual_hours = fields.Float("Actual Hours", digits=(16, 2), readonly=True, group_operator="sum") @@ -25,41 +26,71 @@ class BudgetHrsAnalysis(models.Model): tools.drop_view_if_exists(self._cr, self._table) self._cr.execute(""" CREATE OR REPLACE VIEW %s AS ( - SELECT row_number() OVER() AS id, - PRO.id AS project_id, - PRO.create_date AS create_date, - PRO.partner_id AS partner_id, - Pro_emp.employee_id AS employee_id, - 'Budgeted Hours' as hours_type, - CASE - --WHEN Pro.project_type='hours_no_limit' THEN Pro.budgeted_hours - --WHEN Pro.project_type='hours_in_consultant' and Pro_emp.id is not null THEN Pro_emp.budgeted_qty - WHEN Pro_emp.id is null THEN Pro.budgeted_hours - ELSE Pro_emp.budgeted_qty - END AS hours - 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!='fixed_rate' - group by Pro.id, Pro_emp.id, PRO.partner_id, Pro_emp.employee_id, AAL.unit_amount + SELECT ROW_NUMBER() OVER() as id, project_id, partner_id, employee_id, hours_type, hours from ( + SELECT + PRO.id AS project_id, + PRO.create_date AS create_date, + PRO.partner_id AS partner_id, + null AS employee_id, + 'Budgeted Hours' as hours_type, + PRO.budgeted_hours AS hours + 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 + Where + PRO.active = 't' + and PRO.pricing_type != 'fixed_rate' + and PRO.project_type = 'hours_no_limit' Union - SELECT row_number() OVER() AS id, - PRO.id AS project_id, - PRO.create_date AS create_date, - PRO.partner_id AS partner_id, - Pro_emp.employee_id AS employee_id, - 'Actual Hours' as hours_type, - sum(AAL.unit_amount) AS hours - 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!='fixed_rate' - group by Pro.id, Pro_emp.id, PRO.partner_id, Pro_emp.employee_id, AAL.unit_amount - order by create_date desc, project_id, employee_id, hours_type desc + SELECT + PRO.id AS project_id, + PRO.create_date AS create_date, + PRO.partner_id AS partner_id, + Pro_emp.employee_id AS employee_id, + 'Budgeted Hours' as hours_type, + Pro_emp.budgeted_qty as hours + 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 + Where + PRO.active = 't' + and PRO.pricing_type != 'fixed_rate' + and PRO.project_type = 'hours_in_consultant' + Union + SELECT + PRO.id AS project_id, + PRO.create_date AS create_date, + PRO.partner_id AS partner_id, + AAL.employee_id AS employee_id, + 'Actual Hours' as hours_type, + sum(AAL.unit_amount) AS hours + 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 != 'fixed_rate' + group by + Pro.id, + --Pro_emp.id, + --PRO.partner_id, + AAL.employee_id, + AAL.unit_amount, + hours_type + ) as res + order by + project_id desc, + hours_type asc, + employee_id )""" % (self._table,))