# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.

from odoo import fields, models, tools


class BudgetAmtAnalysis(models.Model):

    _name = "project.budget.amt.report"
    _description = "Project budget amount analysis report"
    #_order = 'project_id'
    _auto = False

    #analytic_account_id = fields.Many2one('account.analytic.account', string='Analytic Account', readonly=True)
    project_id = fields.Many2one('project.project', string='Project', readonly=True)
    partner_id = fields.Many2one('res.partner', string='Client', readonly=True)
    amount_type = fields.Char(string="Amount Type")
    revenue = fields.Float("Revenue", digits=(16, 2), readonly=True, group_operator="sum")
    project_type = fields.Selection([
        ('hours_in_consultant', 'Hours are budgeted according to a consultant'),
        ('hours_no_limit', 'Total hours are budgeted without division to consultant'),
    ], string="Project Type", readonly=True)
    pricing_type = fields.Selection([
        ('fixed_rate', 'Fixed rate'),
        ('employee_rate', 'Consultant rate')
    ], string="Pricing", readonly=True)
    employee_id = fields.Many2one('hr.employee', string='Consultant', readonly=True)
    #budgeted_revenue = fields.Float("Budgeted Revenue", digits=(16, 2), readonly=True, group_operator="sum")
    #actual_revenue = fields.Float("Actual Revenue", digits=(16, 2), readonly=True, group_operator="sum")

    def init(self):
        '''Create the view'''
        tools.drop_view_if_exists(self._cr, self._table)
        self._cr.execute("""
        CREATE OR REPLACE VIEW %s AS (
          SELECT ROW_NUMBER() OVER() as id, project_id, partner_id, employee_id, amount_type, pricing_type, project_type, revenue from (
	      SELECT
            PRO.id AS project_id,
            PRO.create_date AS create_date,
            PRO.partner_id AS partner_id,
            null::int AS employee_id,
            'Budgeted Revenue' as amount_type,
            PRO.pricing_type  as pricing_type,
            PRO.project_type  as project_type,
            PRO.budgeted_revenue AS revenue
            FROM project_project PRO
            WHERE PRO.active = 't'
            --and (PRO.pricing_type = 'fixed_rate' OR PRO.project_type = 'hours_no_limit')
        --union
         --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 Revenue' as amount_type,
            --PRO.pricing_type  as pricing_type,
            --PRO.project_type  as project_type,
            --Pro_emp.cost AS revenue
            --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
         --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 Revenue' as amount_type,
            --PRO.pricing_type  as pricing_type,
            --PRO.project_type  as project_type,
            --(AAL.amount * -1) AS revenue
            --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 = 'employee_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,
            null::int AS employee_id,
            'Actual Revenue' as amount_type,
            PRO.pricing_type  as pricing_type,
            PRO.project_type  as project_type,
            --(AAL.amount * -1)  + pro.expenses_amt AS revenue
            pro.total_expenses  AS revenue
            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' OR PRO.project_type = 'hours_no_limit')
            group by Pro.id, PRO.partner_id, Pro.budgeted_revenue, AAL.amount
            order by create_date desc, project_id,  amount_type desc) as res
        )""" % (self._table,))


