Skip to content

Commit

Permalink
[IMP] agreement_serviceprofile: add stage
Browse files Browse the repository at this point in the history
- Add stage_type to agreement.stage
- Track stage of service profile
- Add Kanban view for service profiles to the dashboard
- Add product_id field to service profile
  • Loading branch information
brian10048 authored and OCA-git-bot committed Aug 31, 2019
1 parent a0071c0 commit 1238619
Show file tree
Hide file tree
Showing 12 changed files with 135 additions and 5 deletions.
9 changes: 9 additions & 0 deletions agreement_legal/data/agreement_stage.xml
Expand Up @@ -4,46 +4,55 @@
<record id="agreement_stage_new" model="agreement.stage">
<field name="name">New</field>
<field name="sequence">10</field>
<field name="stage_type">agreement</field>
</record>

<record id="agreement_stage_draft" model="agreement.stage">
<field name="name">Draft</field>
<field name="sequence">20</field>
<field name="stage_type">agreement</field>
</record>

<record id="agreement_stage_reviewed" model="agreement.stage">
<field name="name">Reviewed</field>
<field name="sequence">30</field>
<field name="stage_type">agreement</field>
</record>

<record id="agreement_stage_negotiation" model="agreement.stage">
<field name="name">Negotiation</field>
<field name="sequence">40</field>
<field name="stage_type">agreement</field>
</record>

<record id="agreement_stage_out" model="agreement.stage">
<field name="name">Out for Customer Signature</field>
<field name="sequence">50</field>
<field name="stage_type">agreement</field>
</record>

<record id="agreement_stage_internal" model="agreement.stage">
<field name="name">Waiting Internal Signature</field>
<field name="sequence">60</field>
<field name="stage_type">agreement</field>
</record>

<record id="agreement_stage_active" model="agreement.stage">
<field name="name">Active</field>
<field name="sequence">70</field>
<field name="stage_type">agreement</field>
</record>

<record id="agreement_stage_expired" model="agreement.stage">
<field name="name">Expired</field>
<field name="sequence">80</field>
<field name="stage_type">agreement</field>
</record>

<record id="agreement_stage_cancelled" model="agreement.stage">
<field name="name">Cancelled</field>
<field name="sequence">100</field>
<field name="fold">True</field>
<field name="stage_type">agreement</field>
</record>
</odoo>
3 changes: 2 additions & 1 deletion agreement_legal/models/agreement.py
Expand Up @@ -309,7 +309,8 @@ def _compute_dynamic_special_terms(self):
# Used for Kanban grouped_by view
@api.model
def _read_group_stage_ids(self, stages, domain, order):
stage_ids = self.env["agreement.stage"].search([])
stage_ids = self.env["agreement.stage"].search(
[('stage_type', '=', 'agreement')])
return stage_ids

stage_id = fields.Many2one(
Expand Down
5 changes: 4 additions & 1 deletion agreement_legal/models/agreement_stage.py
Expand Up @@ -24,5 +24,8 @@ class AgreementStage(models.Model):
fold = fields.Boolean(
string="Is Folded",
required=False,
help="This stage is folded in the kanban view by deafault.",
help="This stage is folded in the kanban view by default.",
)
stage_type = fields.Selection(
[('agreement', 'Agreement')],
string='Type', required=True)
2 changes: 1 addition & 1 deletion agreement_legal/views/agreement.xml
Expand Up @@ -36,7 +36,7 @@
<header>
<button string="New Version" type="object" name="create_new_version" class="oe_highlight" attrs="{'invisible': [('state', '=', 'active')]}"/>
<button string="New Agreement" type="object" name="create_new_agreement" class="oe_highlight" attrs="{'invisible': [('is_template', '=', False)]}"/>
<field name="stage_id" widget="statusbar" clickable="True" options="{'fold_field': 'fold'}"/>
<field name="stage_id" widget="statusbar" clickable="True" options="{'fold_field': 'fold'}" domain="[('stage_type', '=', 'agreement')]"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
Expand Down
2 changes: 2 additions & 0 deletions agreement_legal/views/agreement_stages.xml
Expand Up @@ -9,6 +9,7 @@
<tree default_order='sequence, name'>
<field name="sequence" widget="handle"/>
<field name="name" string="Stage Name"/>
<field name="stage_type"/>
</tree>
</field>
</record>
Expand All @@ -26,6 +27,7 @@
</div>
<group>
<field name="sequence"/>
<field name="stage_type"/>
<field name="fold"/>
</group>
</sheet>
Expand Down
1 change: 1 addition & 0 deletions agreement_serviceprofile/__manifest__.py
Expand Up @@ -13,6 +13,7 @@
'license': 'AGPL-3',
'depends': ['agreement_legal'],
'data': [
'data/serviceprofile_stage.xml',
'security/ir.model.access.csv',
'views/agreement_serviceprofile.xml',
'views/agreement.xml'
Expand Down
41 changes: 41 additions & 0 deletions agreement_serviceprofile/data/serviceprofile_stage.xml
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo noupdate="1">

<record id="servpro_stage_draft" model="agreement.stage">
<field name="name">Draft</field>
<field name="sequence">10</field>
<field name="stage_type">serviceprofile</field>
</record>

<record id="servpro_stage_progress" model="agreement.stage">
<field name="name">In Progress</field>
<field name="sequence">20</field>
<field name="stage_type">serviceprofile</field>
</record>

<record id="servpro_stage_suspend" model="agreement.stage">
<field name="name">Suspended</field>
<field name="sequence">30</field>
<field name="stage_type">serviceprofile</field>
</record>

<record id="servpro_stage_renew" model="agreement.stage">
<field name="name">To Renew</field>
<field name="sequence">40</field>
<field name="stage_type">serviceprofile</field>
</record>

<record id="servpro_stage_close" model="agreement.stage">
<field name="name">Closed</field>
<field name="sequence">50</field>
<field name="stage_type">serviceprofile</field>
</record>

<record id="servpro_stage_cancel" model="agreement.stage">
<field name="name">Cancelled</field>
<field name="sequence">60</field>
<field name="fold">True</field>
<field name="stage_type">serviceprofile</field>
</record>

</odoo>
1 change: 1 addition & 0 deletions agreement_serviceprofile/models/__init__.py
@@ -1,2 +1,3 @@
from . import agreement_serviceprofile
from . import agreement
from . import agreement_stage
17 changes: 16 additions & 1 deletion agreement_serviceprofile/models/agreement_serviceprofile.py
Expand Up @@ -2,14 +2,20 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).


from odoo import fields, models
from odoo import fields, models, api


class AgreementServiceProfile(models.Model):
_name = 'agreement.serviceprofile'
_description = 'Agreement Service Profiles'

def _default_stage_id(self):
return self.env.ref('agreement_serviceprofile.servpro_stage_draft')

name = fields.Char(string="Name", required=True)
stage_id = fields.Many2one('agreement.stage', string="Stage",
default=_default_stage_id, copy=False,
group_expand='_read_group_stage_ids',)
agreement_id = fields.Many2one('agreement', string="Agreement",
ondelete="cascade")
active = fields.Boolean(string="Active",
Expand All @@ -19,3 +25,12 @@ class AgreementServiceProfile(models.Model):
" without removing it.")

notes = fields.Text(string="Notes")
product_id = fields.Many2one('product.template', 'Service',
domain="[('type', '=', 'service')]")

# Used for Kanban grouped_by view
@api.model
def _read_group_stage_ids(self, stages, domain, order):
stage_ids = self.env["agreement.stage"].search(
[('stage_type', '=', 'serviceprofile')])
return stage_ids
12 changes: 12 additions & 0 deletions agreement_serviceprofile/models/agreement_stage.py
@@ -0,0 +1,12 @@
# Copyright (C) 2019 - TODAY, Brian McMaster
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import fields, models


class AgreementStage(models.Model):
_inherit = 'agreement.stage'

stage_type = fields.Selection(
selection_add=[('serviceprofile', 'Service Profile')]
)
1 change: 1 addition & 0 deletions agreement_serviceprofile/readme/CONTRIBUTORS.rst
Expand Up @@ -4,3 +4,4 @@
* Maxime Chambreuil <mchambreuil@opensourceintegrators.com>
* Sandip Mangukiya <smangukiya@opensourceintegrators.com>
* Serpent Consulting Services Pvt. Ltd. <support@serpentcs.com>
* Brian McMaster <brian@mcmpest.com>
46 changes: 45 additions & 1 deletion agreement_serviceprofile/views/agreement_serviceprofile.xml
Expand Up @@ -9,6 +9,7 @@
<tree string="Service Profiles" default_order='agreement_id'>
<field name="name"/>
<field name="agreement_id"/>
<field name="product_id"/>
<field name="active" invisible="1"/>
</tree>
</field>
Expand All @@ -20,6 +21,12 @@
<field name="model">agreement.serviceprofile</field>
<field name="arch" type="xml">
<form string="Service Profile">
<header>
<field name="stage_id" widget="statusbar"
clickable="True"
options="{'fold_field': 'fold'}"
domain="[('stage_type', '=', 'serviceprofile')]"/>
</header>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="toggle_active" type="object"
Expand All @@ -38,7 +45,9 @@
<group>
<field name="agreement_id"/>
</group>
<group></group>
<group>
<field name="product_id"/>
</group>
</group>
<group string="Notes">
<field name="notes" nolabel="1" widget="html"/>
Expand All @@ -48,6 +57,28 @@
</field>
</record>

<!-- Agreement Service Profile Kanban View -->
<record id="agreement_serviceprofile_kanban" model="ir.ui.view">
<field name="name">Agreement Service Profile Kanban</field>
<field name="model">agreement.serviceprofile</field>
<field name="arch" type="xml">
<kanban default_group_by="stage_id">
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_content">
<div>
<strong class="o_kanban_record_title">
<field name="name"/>
</strong>
</div>
<div class="oe_clear"/>
</div>
</t>
</templates>
</kanban>
</field>
</record>

<!-- Agreement Service Profile Search View -->
<record id="agreement_serviceprofile_search" model="ir.ui.view">
<field name="name">Agreement Service Profile Search</field>
Expand All @@ -68,11 +99,24 @@
<field name="view_mode">tree,form</field>
</record>

<record id="agreement_serviceprofile_dashboard" model="ir.actions.act_window">
<field name="name">Service Profiles</field>
<field name="res_model">agreement.serviceprofile</field>
<field name="view_mode">kanban,tree,form</field>
</record>

<menuitem
name="Service Profiles"
id="agreement_serviceprofiles"
parent="agreement_legal.agreement_masterdata"
sequence="50"
action="agreement_serviceprofile_action"/>

<menuitem
name="Service Profiles"
id="dashboard_serviceprofiles"
parent="agreement_legal.agreement_dashboard"
sequence="20"
action="agreement_serviceprofile_dashboard"/>

</odoo>

0 comments on commit 1238619

Please sign in to comment.