Project maintenance code added
This commit is contained in:
parent
19970ef7d3
commit
781c561e51
|
@ -0,0 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import models
|
||||
from . import report
|
||||
|
||||
|
|
@ -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,
|
||||
}
|
Binary file not shown.
|
@ -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
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,25 @@
|
|||
# -*- 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')
|
||||
|
||||
@api.model
|
||||
def default_get(self, fields):
|
||||
res = super(ProjectMainenence, self).default_get(fields)
|
||||
print("self._context.get('active_model')>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", res, self._context)
|
||||
return res
|
||||
|
||||
|
|
@ -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')
|
|
@ -0,0 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import maintenance_report
|
Binary file not shown.
Binary file not shown.
|
@ -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,))
|
|
@ -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>
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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" 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" context="{'default_maintenance_id':1}" colspan="4" nolabel="1" widget="one2many">
|
||||
<tree editable="top">
|
||||
<field name="maintenance_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" 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>
|
Loading…
Reference in New Issue