Report updated

This commit is contained in:
prakash 2022-03-28 12:26:02 +05:30
commit ee4e97036c
5 changed files with 138 additions and 1 deletions

View File

@ -23,6 +23,7 @@
'report/project_timesheet_report_views.xml',
'report/project_revenue_custom_report_views.xml',
'report/project_consultant_custom_report_views.xml',
'report/cor_project_report_views.xml',
],
'qweb': [
"static/src/xml/base.xml",

View File

@ -6,4 +6,5 @@ from . import project_budget_amt_analysis
from . import project_timeline_report
from . import project_timesheet_report
from . import project_revenue_custom_report
from . import project_consultant_custom_report
from . import project_consultant_custom_report
from . import cor_project_report

View File

@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models, tools, api
class CorProjectReport(models.Model):
_name = "cor.project.report"
_description = "COR Project Report"
# _order = 'project_id'
_auto = False
project_id = fields.Many2one('project.project', string='Project', readonly=True)
employee_id = fields.Many2one('hr.employee', string='Consultant', readonly=True)
#hours_type = fields.Char(string="Hours Type", readonly=True)
price_unit = fields.Float("Hourly Rate")
budgeted_qty = fields.Float(string='Budgeted Hours', digits=(16, 2))
cost = fields.Float("Budgeted Revenue", default=0.0, store=True)
hours = fields.Float("Timesheet Hour", digits=(16, 2), readonly=True, group_operator="sum")
employee_price = fields.Float(string="Consultant Price")
consultant_cost = fields.Float("Actual Cost")
actual_revenue = fields.Float("Actual Revenue")
profit = fields.Float('Profit', digits=(16, 2))
profit_per = fields.Float('Porfit(%)', digits=(16, 2))
# pricing_type = fields.Selection([
# ('fixed_rate', 'Fixed rate'),
# ('employee_rate', 'Consultant rate')
# ], string="Pricing", readonly=True)
# 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)
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,
aa.project_id AS project_id,
aa.employee_id AS employee_id,
bb.price_unit AS price_unit,
bb.budgeted_qty AS budgeted_qty,
bb.cost AS cost,
bb.employee_price AS employee_price,
SUM(aa.unit_amount) AS hours,
(SUM(aa.unit_amount) * bb.employee_price) AS consultant_cost,
(SUM(aa.unit_amount) * bb.price_unit) AS actual_revenue,
((SUM(aa.unit_amount) * bb.price_unit)- (SUM(aa.unit_amount) * bb.employee_price)) AS profit,
((((SUM(aa.unit_amount) * bb.price_unit)- (SUM(aa.unit_amount) * bb.employee_price))/(SUM(aa.unit_amount) * bb.price_unit))*100) AS profit_per
FROM account_analytic_line aa
Left JOIN project_sale_line_employee_map bb ON bb.project_id = aa.project_id and bb.employee_id = aa.employee_id
GROUP BY aa.project_id, aa.employee_id,bb.price_unit,bb.budgeted_qty,bb.cost,bb.employee_price
)""" % (self._table,))

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="cor_project_report_view_pivot" model="ir.ui.view">
<field name="name">cor.project.report.pivot</field>
<field name="model">cor.project.report</field>
<field name="arch" type="xml">
<pivot string="Budget Analysis" disable_linking="True" sample="1"> <!-- display_quantity="true" -->
<field name="project_id" type="col"/>
<!--<field name="hours_type" type="col"/>-->
<field name="hours" type="measure"/>
</pivot>
</field>
</record>
<record id="cor_project_report_view_graph" model="ir.ui.view">
<field name="name">cor.project.report.graph</field>
<field name="model">cor.project.report</field>
<field name="arch" type="xml">
<graph string="COR Project Report" type="bar" stacked="False" sample="1" disable_linking="1">
<field name="project_id" type="row"/>
<!--<field name="hours_type" type="row"/>-->
<field name="hours" type="measure"/>
</graph>
</field>
</record>
<record id="cor_project_report_view_tree" model="ir.ui.view">
<field name="name">cor.project.report.tree</field>
<field name="model">cor.project.report</field>
<field name="arch" type="xml">
<tree string="COR Project Report" create="false" edit="false" delete="false">
<field name="project_id"/>
<field name="employee_id"/>
<field name="price_unit"/>
<field name="budgeted_qty"/>
<field name="cost"/>
<field name="employee_price"/>
<field name="hours"/>
<field name="consultant_cost"/>
<field name="actual_revenue"/>
<field name="profit"/>
<field name="profit_per"/>
</tree>
</field>
</record>
<record id="cor_project_report_view_search" model="ir.ui.view">
<field name="name">cor.project.report.search</field>
<field name="model">cor.project.report</field>
<field name="arch" type="xml">
<search string="Project Report">
<field name="project_id"/>
<field name="employee_id"/>
<field name="hours"/>
<group expand="1" string="Group By">
<filter string="Project" name="group_by_project" context="{'group_by':'project_id'}"/>
<filter string="Consultant" name="group_by_employee_id" context="{'group_by':'employee_id'}"/>
</group>
</search>
</field>
</record>
<record id="cor_project_report_view_action" model="ir.actions.act_window">
<field name="name">COR Project Report</field>
<field name="res_model">cor.project.report</field>
<field name="view_mode">tree,pivot,graph</field>
<field name="search_view_id" ref="cor_project_report_view_search"/>
<field name="context">{'search_default_group_by_project': 1, 'default_res_model': 'cor.project.report'}</field>
</record>
<menuitem id="menu_cor_project_report"
parent="project.menu_project_report"
action="cor_project_report_view_action"
name="COR Project Report"
sequence="50"/>
</odoo>

View File

@ -13,3 +13,5 @@ access_project_revenue_custom_report_manager,project_revenue_custom_report_manag
access_project_revenue_custom_report_user,project_revenue_custom_report_user,model_project_revenue_custom_report,project.group_project_user,1,0,0,0
access_project_consultant_custom_report_manager,project_consultant_custom_report_manager,model_project_consultant_custom_report,project.group_project_manager,1,1,1,1
access_project_consultant_custom_report_user,project_consultant_custom_report_user,model_project_consultant_custom_report,project.group_project_user,1,0,0,0
access_cor_project_report_manager,cor.project.report,model_cor_project_report,project.group_project_manager,1,1,1,1
access_cor_project_report_user,cor.project.report,model_cor_project_report,project.group_project_user,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
13 access_project_revenue_custom_report_user project_revenue_custom_report_user model_project_revenue_custom_report project.group_project_user 1 0 0 0
14 access_project_consultant_custom_report_manager project_consultant_custom_report_manager model_project_consultant_custom_report project.group_project_manager 1 1 1 1
15 access_project_consultant_custom_report_user project_consultant_custom_report_user model_project_consultant_custom_report project.group_project_user 1 0 0 0
16 access_cor_project_report_manager cor.project.report model_cor_project_report project.group_project_manager 1 1 1 1
17 access_cor_project_report_user cor.project.report model_cor_project_report project.group_project_user 1 0 0 0