51 lines
2.2 KiB
Python
51 lines
2.2 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from odoo import api, fields, models
|
||
|
|
||
|
AVAILABLE_PRIORITIES = [
|
||
|
('0', 'Low'),
|
||
|
('1', 'Medium'),
|
||
|
('2', 'High'),
|
||
|
('3', 'Very High'),
|
||
|
]
|
||
|
|
||
|
|
||
|
class Stage(models.Model):
|
||
|
""" Model for case stages. This models the main stages of a document
|
||
|
management flow. Main CRM objects (leads, opportunities, project
|
||
|
issues, ...) will now use only stages, instead of state and stages.
|
||
|
Stages are for example used to display the kanban view of records.
|
||
|
"""
|
||
|
_name = "crm.stage"
|
||
|
_description = "CRM Stages"
|
||
|
_rec_name = 'name'
|
||
|
_order = "sequence, name, id"
|
||
|
|
||
|
@api.model
|
||
|
def default_get(self, fields):
|
||
|
""" As we have lots of default_team_id in context used to filter out
|
||
|
leads and opportunities, we pop this key from default of stage creation.
|
||
|
Otherwise stage will be created for a given team only which is not the
|
||
|
standard behavior of stages. """
|
||
|
if 'default_team_id' in self.env.context:
|
||
|
ctx = dict(self.env.context)
|
||
|
ctx.pop('default_team_id')
|
||
|
self = self.with_context(ctx)
|
||
|
return super(Stage, self).default_get(fields)
|
||
|
|
||
|
name = fields.Char('Stage Name', required=True, translate=True)
|
||
|
sequence = fields.Integer('Sequence', default=1, help="Used to order stages. Lower is better.")
|
||
|
is_won = fields.Boolean('Is Won Stage?')
|
||
|
requirements = fields.Text('Requirements', help="Enter here the internal requirements for this stage (ex: Offer sent to customer). It will appear as a tooltip over the stage's name.")
|
||
|
team_id = fields.Many2one('crm.team', string='Sales Team', ondelete="set null",
|
||
|
help='Specific team that uses this stage. Other teams will not be able to see or use this stage.')
|
||
|
fold = fields.Boolean('Folded in Pipeline',
|
||
|
help='This stage is folded in the kanban view when there are no records in that stage to display.')
|
||
|
# This field for interface only
|
||
|
team_count = fields.Integer('team_count', compute='_compute_team_count')
|
||
|
|
||
|
@api.depends('team_id')
|
||
|
def _compute_team_count(self):
|
||
|
self.team_count = self.env['crm.team'].search_count([])
|