[IMP] improve inherited crm_case_section

This commit is contained in:
Randhir Mayatra rma-openerp 2014-04-23 15:17:33 +05:30
parent e1ee973594
commit 2f5250edfa
5 changed files with 44 additions and 33 deletions

View File

@ -88,13 +88,9 @@ class crm_case_stage(osv.osv):
}
class crm_case_section(osv.osv):
""" Model for sales teams. """
_name = "crm.case.section"
class crm_case_section(osv.Model):
_inherit = 'crm.case.section'
_description = "Sales Teams"
_alias_model_name = 'crm.lead'
_name = 'crm.case.section'
def _get_opportunities_data(self, cr, uid, ids, field_name, arg, context=None):
""" Get opportunities-related data for salesteam kanban view
monthly_open_leads: number of open lead during the last months
@ -118,10 +114,7 @@ class crm_case_section(osv.osv):
res[id]['monthly_open_leads'] = self.__get_bar_values(cr, uid, obj, lead_domain, ['create_date'], 'create_date_count', 'create_date', context=context)
res[id]['monthly_planned_revenue'] = self.__get_bar_values(cr, uid, obj, opp_domain, ['planned_revenue', 'date_deadline'], 'planned_revenue', 'date_deadline', context=context)
return res
def create(self, cr, uid, vals, context=None):
self._alias_model_name = 'crm.lead'
return super(crm_case_section, self).create(cr, uid, vals, context={'alias_model_name': self._alias_model_name})
_columns = {
'resource_calendar_id': fields.many2one('resource.calendar', "Working Time", help="Used to compute open days"),
'stage_ids': fields.many2many('crm.case.stage', 'section_stage_rel', 'section_id', 'stage_id', 'Stages'),
@ -143,7 +136,32 @@ class crm_case_section(osv.osv):
'stage_ids': _get_stage_common,
'use_leads': True,
}
class crm_case_section_inherit(osv.Model):
""" Model for sales teams. """
_inherit = 'crm.case.section'
_name = 'crm.case.section.inherit'
_description = "Sales Teams"
_inherits = {'mail.alias': 'alias_id'}
_columns = {
'alias_id': fields.many2one('mail.alias', 'Alias', ondelete="restrict", required=True, help="The email address associated with this team. New emails received will automatically ""create new leads assigned to the team."),
}
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
create_context = dict(context, alias_model_name='crm.lead', alias_parent_model_name=self._name)
section_id = super(crm_case_section, self).create(cr, uid, vals, context=create_context)
section = self.browse(cr, uid, section_id, context=context)
self.pool.get('mail.alias').write(cr, uid, [section.alias_id.id], {'alias_parent_thread_id': section_id, 'alias_defaults': {'section_id': section_id, 'type': 'lead'}}, context=context)
return section_id
def unlink(self, cr, uid, ids, context=None):
# Cascade-delete mail aliases as well, as they should not exist without the sales team.
mail_alias = self.pool.get('mail.alias')
alias_ids = [team.alias_id.id for team in self.browse(cr, uid, ids, context=context) if team.alias_id]
res = super(crm_case_section, self).unlink(cr, uid, ids, context=context)
mail_alias.unlink(cr, uid, alias_ids, context=context)
return res
class crm_case_categ(osv.osv):
""" Category of Case """
_name = "crm.case.categ"

View File

@ -83,7 +83,7 @@
<record model="ir.ui.view" id="crm_case_section_salesteams_view_kanban">
<field name="name">crm.case.section.kanban</field>
<field name="model">crm.case.section</field>
<field name="model">crm.case.section.inherit</field>
<field name="inherit_id" ref="sale_team.crm_case_section_salesteams_view_kanban"/>
<field name="arch" type="xml">
<data>
@ -91,6 +91,7 @@
<field name="use_leads"/>
<field name="monthly_open_leads"/>
<field name="monthly_planned_revenue"/>
<field name="alias_id"/>
</xpath>
<xpath expr="//div[@name='avtar']" position="after">
<div class="oe_kanban_alias oe_center" t-if="record.use_leads.raw_value and record.alias_id.value">

View File

@ -30,10 +30,8 @@ class crm_case_section(osv.osv):
_name = "crm.case.section"
_inherit = ['mail.thread', 'ir.needaction_mixin']
_description = "Sales Teams"
_inherits = {'mail.alias': 'alias_id'}
_order = "complete_name"
_period_number = 5
_alias_model_name = 'mail.message'
def get_full_name(self, cr, uid, ids, field_name, arg, context=None):
return dict(self.name_get(cr, uid, ids, context=context))
@ -69,7 +67,6 @@ class crm_case_section(osv.osv):
return section_result
_columns = {
'alias_id': fields.many2one('mail.alias', 'Alias', ondelete="restrict", required=True, help="The email address associated with this team. New emails received will automatically ""create new leads assigned to the team."),
'name': fields.char('Sales Team', size=64, required=True, translate=True),
'complete_name': fields.function(get_full_name, type='char', size=256, readonly=True, store=True),
'code': fields.char('Code', size=8),
@ -114,21 +111,7 @@ class crm_case_section(osv.osv):
res.append((record['id'], name))
return res
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
create_context = dict(context, alias_model_name=self._alias_model_name, alias_parent_model_name=self._name)
section_id = super(crm_case_section, self).create(cr, uid, vals, context=create_context)
section = self.browse(cr, uid, section_id, context=context)
self.pool.get('mail.alias').write(cr, uid, [section.alias_id.id], {'alias_parent_thread_id': section_id, 'alias_defaults': {'section_id': section_id, 'type': 'lead'}}, context=context)
return section_id
def unlink(self, cr, uid, ids, context=None):
# Cascade-delete mail aliases as well, as they should not exist without the sales team.
mail_alias = self.pool.get('mail.alias')
alias_ids = [team.alias_id.id for team in self.browse(cr, uid, ids, context=context) if team.alias_id]
res = super(crm_case_section, self).unlink(cr, uid, ids, context=context)
mail_alias.unlink(cr, uid, alias_ids, context=context)
return res
class res_users(osv.Model):
_inherit = 'res.users'

View File

@ -42,7 +42,6 @@
<field name="name"/>
<field name="user_id"/>
<field name="member_ids"/>
<field name="alias_id"/>
<field name="note"/>
<field name="color"/>
<templates>
@ -58,7 +57,7 @@
</div>
<div class="oe_kanban_content">
<h4 class="oe_center"><field name="name"/></h4>
<div class="oe_kanban_alias oe_center" t-if="record.alias_id.value" name="avtar">
<div class="oe_kanban_alias oe_center" name="avtar">
<small><span class="oe_e oe_e_alias" style="float: none;">%%</span><t t-raw="record.alias_id.raw_value[1]"/></small>
</div>
<div class="oe_clear"></div>

View File

@ -23,7 +23,17 @@
<field name="implied_ids" eval="[(4, ref('base.group_sale_salesman_all_leads'))]"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<record id="base.group_mono_salesteams" model="res.groups">
<field name="name">Do Not Use Sales Teams</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record id="base.group_multi_salesteams" model="res.groups">
<field name="name">Manage Sales Teams</field>
<field name="category_id" ref="base.module_category_hidden"/>
</record>
<record model="res.users" id="base.user_root">
<field eval="[(4,ref('base.group_partner_manager'))]" name="groups_id"/>
</record>