Merge branch 'development' of http://103.74.223.20:8085/prakash.jain/cor-odoo into development

This commit is contained in:
Pawan Kumar 2020-12-09 18:38:27 +05:30
commit 9e2d3d4131
11 changed files with 343 additions and 0 deletions

View File

@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
from . import models
from . import report

View File

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
{
'name': 'Project Maintanence',
'summary': 'Projects Maintanence',
'description': "",
'version': '1.0',
'license': 'LGPL-3',
'category': 'Services/Project',
'author': "SunArc Technologies",
'website': "http://www.sunarctechnologies.com",
'depends': [
'base', 'project'
],
'data': [
'security/ir.model.access.csv',
'report/maintenance_report_views.xml',
'views/maintenance_view.xml',
'views/project_view.xml',
],
'auto_install': False,
'installable': True,
}

View File

@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import maintenance
from . import project

View File

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
class ProjectMainenenceType(models.Model):
_name = 'project.maintenance.type'
_description = "project Maintenance Type"
name = fields.Char('Maintenance Type', required=True, ondelete="restrict")
maintenance_ids = fields.One2many('project.maintenance', 'maintenance_type_id', string='Maintenance', copy=False)
class ProjectMainenence(models.Model):
_name = 'project.maintenance'
_description = "project Maintenance"
name = fields.Char('Maintenance', required=True, ondelete="restrict")
maintenance_type_id = fields.Many2one('project.maintenance.type', 'Manintenance Type', required=True, readonly=True, ondelete='cascade')

View File

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
class Project(models.Model):
_inherit = 'project.project'
maintenance_ids = fields.One2many('project.maintenance.details', 'project_id', string='Maintenance', copy=False)
class ProjectMainenenceDetails(models.Model):
_name = 'project.maintenance.details'
_description = "project Maintenance Details"
@api.depends('line_ids')
def _compute_amount(self):
for val in self:
total_cost = 0
for line in val.line_ids:
if line.cost:
total_cost += line.cost
val.total_amount = total_cost
project_id = fields.Many2one('project.project', 'Project', required=True, ondelete='cascade')
maintenance_type_id = fields.Many2one('project.maintenance.type', 'Maintenance Type', required=True)
currency_id = fields.Many2one('res.currency', string='Currency', readonly=True, default=lambda self: self.env.company.currency_id)
total_amount = fields.Float("Total Amount", digits=(16, 2), compute='_compute_amount', store=True, currency_field='currency_id')
line_ids = fields.One2many('project.maintenance.lines', 'details_id', string='Maintenance Details', copy=False)
class ProjectMainenencelines(models.Model):
_name = 'project.maintenance.lines'
_description = "project Maintenance Lines"
details_id = fields.Many2one('project.maintenance.details', 'Details', required=True, ondelete='cascade')
maintenance_id = fields.Many2one('project.maintenance', 'Maintenance', required=True)
currency_id = fields.Many2one('res.currency', string='Currency', readonly=True, default=lambda self: self.env.company.currency_id)
cost = fields.Float("Cost", digits=(16, 2), currency_field='currency_id')

View File

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import maintenance_report

View File

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models, tools
class ReportProjectTaskUser(models.Model):
_name = "report.project.maintenance"
_description = "Project Maintenance Analysis"
_order = 'project_id'
_auto = False
project_id = fields.Many2one('project.project', string='Project', readonly=True)
maintenance_type_id = fields.Many2one('project.maintenance.type', string='Maintenance Type', readonly=True)
maintenance_id = fields.Many2one('project.maintenance', string='Maintenance', readonly=True)
cost = fields.Float("Cost", digits=(16, 2), readonly=True)
#total_amount = fields.Float("Total Cost", digits=(16, 2), readonly=True)
#nbr = fields.Integer('# of Maintenance', 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 min(lines.id) as id,
pro.id as project_id,
details.maintenance_type_id as maintenance_type_id,
lines.maintenance_id as maintenance_id,
lines.cost as cost
from project_project pro
left join project_maintenance_details as details ON (pro.id = details.project_id)
left join project_maintenance_lines as lines ON (details.id = lines.details_id)
left join project_maintenance as main ON (main.id = details.maintenance_type_id)
group by pro.id, details.maintenance_type_id, lines.maintenance_id, lines.cost
)""" % (self._table,))

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_report_project_maintenance_pivot" model="ir.ui.view">
<field name="name">report.project.maintenance.pivot</field>
<field name="model">report.project.maintenance</field>
<field name="arch" type="xml">
<pivot string="Maintenance Analysis" display_quantity="true" disable_linking="True" sample="1">
<field name="project_id" type="row"/>
<field name="maintenance_type_id" type="col"/>
<field name="cost" type="measure"/>
</pivot>
</field>
</record>
<record id="view_report_project_maintenance_graph" model="ir.ui.view">
<field name="name">report.project.maintenance.graph</field>
<field name="model">report.project.maintenance</field>
<field name="arch" type="xml">
<graph string="Maintenance Analysis" stacked="True" sample="1" disable_linking="1">
<field name="project_id" type="row"/>
<field name="maintenance_type_id" type="row"/>
<field name="maintenance_id" type="col"/>
<field name="cost" type="measure"/>
</graph>
</field>
</record>
<record id="view_report_project_maintenance_search" model="ir.ui.view">
<field name="name">report.project.maintenance.search</field>
<field name="model">report.project.maintenance</field>
<field name="arch" type="xml">
<search string="Maintenance Analysis">
<field name="maintenance_id"/>
<field name="maintenance_type_id"/>
<group expand="1" string="Group By">
<filter string="Project" name="project" context="{'group_by': 'project_id'}"/>
<filter string="Maintenance Type" name="maintenance_type_id" context="{'group_by':'maintenance_type_id'}"/>
<filter string="Maintenance" name="maintenance" context="{'group_by': 'maintenance_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_report_project_maintenance" model="ir.actions.act_window">
<field name="name">Maintenance Analysis</field>
<field name="res_model">report.project.maintenance</field>
<field name="view_mode">graph,pivot</field>
<field name="search_view_id" ref="view_report_project_maintenance_search"/>
<field name="context">{'group_by_no_leaf':1,'group_by':[]}</field>
</record>
<menuitem id="menu_project_report_maintenance_analysis"
name="Maintenance Analysis"
action="action_report_project_maintenance"
parent="project.menu_project_report"
sequence="11"/>
</odoo>

View File

@ -0,0 +1,12 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_project_maintenance_type_puser,project.maintenance.type,model_project_maintenance_type,project.group_project_user,1,0,0,0
access_project_maintenance_type_pmanager,project.maintenance.type,model_project_maintenance_type,project.group_project_manager,1,1,1,1
access_project_maintenance_puser,project.maintenance,model_project_maintenance,project.group_project_user,1,0,0,0
access_project_maintenance_pmanager,project.maintenance,model_project_maintenance,project.group_project_manager,1,1,1,1
access_project_maintenance_details_puser,project.maintenance.details,model_project_maintenance_details,project.group_project_user,1,0,0,0
access_project_maintenance_details_pmanager,project.maintenance.details,model_project_maintenance_details,project.group_project_manager,1,1,1,1
access_project_maintenance_lines_puser,project.maintenance.lines,model_project_maintenance_lines,project.group_project_user,1,0,0,0
access_project_maintenance_lines_pmanager,project.maintenance.lines,model_project_maintenance_lines,project.group_project_manager,1,1,1,1
access_report_project_maintenance,report.project.maintenance,model_report_project_maintenance,project.group_project_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_project_maintenance_type_puser project.maintenance.type model_project_maintenance_type project.group_project_user 1 0 0 0
3 access_project_maintenance_type_pmanager project.maintenance.type model_project_maintenance_type project.group_project_manager 1 1 1 1
4 access_project_maintenance_puser project.maintenance model_project_maintenance project.group_project_user 1 0 0 0
5 access_project_maintenance_pmanager project.maintenance model_project_maintenance project.group_project_manager 1 1 1 1
6 access_project_maintenance_details_puser project.maintenance.details model_project_maintenance_details project.group_project_user 1 0 0 0
7 access_project_maintenance_details_pmanager project.maintenance.details model_project_maintenance_details project.group_project_manager 1 1 1 1
8 access_project_maintenance_lines_puser project.maintenance.lines model_project_maintenance_lines project.group_project_user 1 0 0 0
9 access_project_maintenance_lines_pmanager project.maintenance.lines model_project_maintenance_lines project.group_project_manager 1 1 1 1
10 access_report_project_maintenance report.project.maintenance model_report_project_maintenance project.group_project_manager 1 1 1 1

View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="view_project_maintenance_type_form" model="ir.ui.view">
<field name="name">project.maintenance.type.form</field>
<field name="model">project.maintenance.type</field>
<field name="arch" type="xml">
<form string="Maintenance Type">
<sheet string="project.maintenance.type">
<group>
<field name="name"/>
</group>
<group>
<field name="maintenance_ids" nolabel="1" widget="one2many">
<tree editable="top">
<field name="name"/>
</tree>
<form>
<group>
<field name="name"/>
<field name="maintenance_type_id"/>
</group>
</form>
</field>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_project_maintenance_type_tree" model="ir.ui.view">
<field name="name">project.maintenance.type.tree</field>
<field name="model">project.maintenance.type</field>
<field name="arch" type="xml">
<tree string="Maintenance Type">
<field name="name"/>
<field name="maintenance_ids"/>
</tree>
</field>
</record>
<record id="project_maintenance_type_action" model="ir.actions.act_window">
<field name="name">Maintenance Type</field>
<field name="res_model">project.maintenance.type</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="project_menu_config_maintenance_type"
action="project_maintenance_type_action"
parent="project.menu_project_config"/>
<!-- <record id="view_project_maintenance_form" model="ir.ui.view">
<field name="name">project.maintenance.form</field>
<field name="model">project.maintenance</field>
<field name="arch" type="xml">
<form string="Maintenance">
<sheet string="project.maintenance">
<group>
<field name="name"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_project_maintenance_tree" model="ir.ui.view">
<field name="name">project.maintenance.tree</field>
<field name="model">project.maintenance</field>
<field name="arch" type="xml">
<tree string="Maintenance">
<field name="name"/>
</tree>
</field>
</record>
<record id="project_maintenance_action" model="ir.actions.act_window">
<field name="name">Maintenance</field>
<field name="res_model">project.maintenance</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="project_menu_config_maintenance"
action="project_maintenance_action"
parent="project.menu_project_config"/> -->
</data>
</odoo>

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="project_project_view_form" model="ir.ui.view">
<field name="name">project.project.maintenance.view.form</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.edit_project"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='settings']" position="after">
<page string="Maintenance" name="maintenance_details">
<field name="maintenance_ids">
<tree>
<field name="maintenance_type_id"/>
<field name="line_ids"/>
<field name="total_amount" sum="Total" widget="monetary"/>
<field name="currency_id" invisible="1"/>
</tree>
<form>
<group>
<field name="maintenance_type_id"/>
<field name="total_amount" widget="monetary" options="{'currency_field':'currency_id'}"/>
<field name="currency_id" invisible="1"/>
</group>
<group>
<field name="line_ids" colspan="4" nolabel="1" widget="one2many">
<tree editable="top">
<field name="maintenance_id" context="{'default_maintenance_type_id':parent.maintenance_type_id}" domain="[('maintenance_type_id','=',parent.maintenance_type_id)]"/>
<field name="cost" widget="monetary" options="{'currency_field':'currency_id'}"/>
<field name="currency_id" invisible="1"/>
</tree>
<form>
<group>
<field name="maintenance_id" context="{'default_maintenance_type_id':parent.maintenance_type_id}" domain="[('maintenance_type_id','=',parent.maintenance_type_id)]"/>
<field name="cost" widget="monetary" options="{'currency_field':'currency_id'}"/>
<field name="currency_id" invisible="1"/>
</group>
</form>
</field>
</group>
</form>
</field>
</page>
</xpath>
</field>
</record>
</odoo>