[IMP] crm: sales team: cleaned res_config about email

aliases explanation and redirection to the general settings.

Added an option to automatically generate an alias for sales
teams, like what is done in projects.

Some cleaning has been done in the form view. Aliases are
valable only for sales team managing leads.
This commit is contained in:
Thibault Delavallée
2015-07-30 10:19:15 +02:00
parent 369db198d3
commit 5a4053a504
6 changed files with 62 additions and 28 deletions
+1
View File
@@ -47,6 +47,7 @@ Dashboard for CRM will include:
'data/crm_action_data.xml',
'crm_data.xml',
'data/crm_stage_data.xml',
'data/sales_config_settings_data.xml',
'crm_lead_data.xml',
'crm_tip_data.xml',
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<function id="default_generate_sales_team_alias"
model="ir.values" name="set_default"
eval="('sales.config.settings', 'generate_sales_team_alias', True)"/>
</odoo>
+11
View File
@@ -16,6 +16,9 @@ class crm_configuration(osv.TransientModel):
'module_crm_claim': fields.boolean("Manage Customer Claims",
help='Allows you to track your customers/vendors claims and grievances.\n'
'-This installs the module crm_claim.'),
'generate_sales_team_alias': fields.boolean(
"Automatically generate an email alias at the sales team creation",
help="Odoo will generate an email alias based on the sales team name"),
'alias_prefix': fields.char('Default Alias Name for Leads'),
'alias_domain' : fields.char('Alias Domain')
}
@@ -38,6 +41,14 @@ class crm_configuration(osv.TransientModel):
alias_id = alias_ids and alias_ids[0] or False
return alias_id
def get_default_generate_sales_team_alias(self, cr, uid, ids, context=None):
return {'generate_sales_team_alias': self.pool['ir.values'].get_default(
cr, uid, 'sales.config.settings', 'generate_sales_team_alias')}
def set_default_generate_sales_team_alias(self, cr, uid, ids, context=None):
config_value = self.browse(cr, uid, ids, context=context).generate_sales_team_alias
self.pool['ir.values'].set_default(cr, uid, 'sales.config.settings', 'generate_sales_team_alias', config_value)
def get_default_alias_prefix(self, cr, uid, ids, context=None):
alias_name = False
alias_id = self._find_default_lead_alias_id(cr, uid, context=context)
+15 -11
View File
@@ -29,21 +29,25 @@
<group>
<label for="id" string="Leads Email Alias"/>
<div>
<div>
<label string="Each sales team has an email alias that can be defined on the sales team form view" class="oe_inline oe_form_label_help oe_align_right"/>
<span class="oe_inline">
<label string="Automatically create new leads when an email is sent to the following alias :" class="oe_inline oe_form_label_help oe_align_right"/>
<field name="alias_prefix" class="oe_inline"/>
<span>@</span>
<field name="alias_domain" class="oe_inline" readonly="1"/>
</span>
</div>
<div attrs="{'invisible': [('alias_domain', 'not in', ['localhost', '', False])]}">
<p>
<label string="To be able to set your Leads Email Alias, you need to fill your alias domain first."/>
<button type="action" name="base_setup.action_general_configuration" string="Configure your domain alias" icon="gtk-execute" class="oe_inline oe_link"/>
<label string="To be able to set your Leads Email Alias, you need to fill your alias domain first."/><br />
<button type="action" name="base_setup.action_general_configuration"
string="Configure your email alias domain" class="oe_inline oe_link"/>
</p>
</div>
<div>
<span class="oe_inline">
<label string="Create new leads when an email is sent to the following alias:" class="oe_inline oe_form_label_help oe_align_right"/>
<field name="alias_prefix" class="oe_inline"/>
<span>@</span>
<field name="alias_domain" class="oe_inline" readonly="1"/>
</span>
</div>
<div>
<field name="generate_sales_team_alias"/>
<label for="generate_sales_team_alias"/>
</div>
</div>
</group>
</div>
+8 -1
View File
@@ -43,14 +43,21 @@ class crm_team(osv.Model):
_defaults = {
'stage_ids': _get_default_stage_ids,
'use_leads': True,
'use_opportunities': True,
}
def onchange_use_leads(self, cr, uid, ids, use_leads, context=None):
if not use_leads:
return {'values': {'alias_name': False}}
return {'values': {}}
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)
generate_alias_name = self.pool['ir.values'].get_default(cr, uid, 'sales.config.settings', 'generate_sales_team_alias')
if generate_alias_name and not vals.get('alias_name'):
vals['alias_name'] = vals.get('name')
team_id = super(crm_team, self).create(cr, uid, vals, context=create_context)
team = self.browse(cr, uid, team_id, context=context)
self.pool.get('mail.alias').write(cr, uid, [team.alias_id.id], {'alias_parent_thread_id': team_id, 'alias_defaults': {'team_id': team_id, 'type': 'lead'}}, context=context)
+19 -16
View File
@@ -87,8 +87,10 @@
<field name="inherit_id" ref="sales_team.crm_team_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[@name='options_active']" position="inside">
<field name="use_leads"/><label for="use_leads" string="Leads"/>
<field name="use_opportunities" class="oe_inline"/><label for="use_opportunities"/>
<field name="use_leads" onchange="onchange_use_leads(use_leads)"/>
<label for="use_leads" string="Leads"/>
<field name="use_opportunities" class="oe_inline"/>
<label for="use_opportunities"/>
</xpath>
<xpath expr="//page[@name='members']" position="after">
<page string="Stages" groups="base.group_no_one">
@@ -96,21 +98,22 @@
<field name="stage_ids"/>
</page>
</xpath>
<xpath expr="//group[@name='sales_team_more_info']" position="inside">
<group name="alias_info" string="Leads Email Alias" class="oe_inline" attrs="{'invisible': [('alias_domain', '=', False)]}">
<label for="alias_name" string="Email Alias"
attrs="{'invisible': [('alias_domain', '=', False)]}"/>
<div name="alias_def"
attrs="{'invisible': [('alias_domain', '=', False)]}">
<field name="alias_id" class="oe_read_only oe_inline"
string="Email Alias" required="0"/>
<div class="oe_edit_only oe_inline" name="edit_alias" style="display: inline;" >
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
</div>
<xpath expr="//field[@name='code']" position="after">
<label for="alias_name" string="Email Alias"
groups="base.group_no_one"
attrs="{'invisible': [('use_leads', '=', False)]}"/>
<div name="alias_def"
groups="base.group_no_one"
attrs="{'invisible': [('use_leads', '=', False)]}">
<field name="alias_id" class="oe_read_only oe_inline"
string="Email Alias" required="0"/>
<div class="oe_edit_only oe_inline" name="edit_alias" style="display: inline;" >
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
</div>
<field name="alias_contact" class="oe_inline"
string="Accept Emails From"/>
</group>
</div>
<field name="alias_contact" class="oe_inline"
string="Accept Emails From"
attrs="{'invisible': [('use_leads', '=', False)]}"/>
</xpath>
</field>
</record>