[MERGE] [IMP] crm: added default alias configurable directly in sales configuration menu. This default alias is an alias creating leads, not linked to a specific thread or parent.

Like what has been done in HR recently, it is now possible to directly configure a default alias for leads in the sales configuration menu. This allows an easier alias configuration compared to directly editing the aliases.

[FIX] hr: fixed default alias computation.

bzr revid: tde@openerp.com-20140213112811-y4rynjmdldrjs4gg
This commit is contained in:
Thibault Delavallée 2014-02-13 12:28:11 +01:00
commit df313af409
7 changed files with 81 additions and 12 deletions

View File

@ -49,9 +49,7 @@
} }
</field> </field>
<field name="help" type="html"> <field name="help" type="html">
<p class="oe_view_nocontent_create"> <p>
Click to create a new opportunity.
</p><p>
OpenERP helps you keep track of your sales pipeline to follow OpenERP helps you keep track of your sales pipeline to follow
up potential sales and better forecast your future revenues. up potential sales and better forecast your future revenues.
</p><p> </p><p>

View File

@ -30,7 +30,7 @@
<field name="name">Direct Sales</field> <field name="name">Direct Sales</field>
<field name="code">DM</field> <field name="code">DM</field>
<field name="use_leads">True</field> <field name="use_leads">True</field>
<field name="alias_name">info</field> <field name="alias_name">sales</field>
<field name="member_ids" eval="[(4, ref('base.user_root'))]"/> <field name="member_ids" eval="[(4, ref('base.user_root'))]"/>
</record> </record>
@ -56,6 +56,14 @@
<field name="section_id" ref="crm.section_sales_department"/> <field name="section_id" ref="crm.section_sales_department"/>
</record> </record>
<!--default alias for leads-->
<record id="mail_alias_lead_info" model="mail.alias">
<field name="alias_name">info</field>
<field name="alias_model_id" ref="model_crm_lead"/>
<field name="alias_user_id" ref="base.user_root"/>
<field name="alias_parent_model_id" ref="model_crm_case_section"/>
</record>
<!-- notify all employees of module installation --> <!-- notify all employees of module installation -->
<record model="mail.message" id="module_install_notification"> <record model="mail.message" id="module_install_notification">
<field name="model">mail.group</field> <field name="model">mail.group</field>

View File

@ -950,6 +950,14 @@ class crm_lead(format_address, osv.osv):
default['stage_id'] = self._get_default_stage_id(cr, uid, local_context) default['stage_id'] = self._get_default_stage_id(cr, uid, local_context)
return super(crm_lead, self).copy(cr, uid, id, default, context=context) return super(crm_lead, self).copy(cr, uid, id, default, context=context)
def get_empty_list_help(self, cr, uid, help, context=None):
context['empty_list_help_model'] = 'crm.case.section'
context['empty_list_help_id'] = context.get('default_section_id', None)
context['empty_list_help_document_name'] = _("opportunity")
if context.get('default_type') == 'lead':
context['empty_list_help_document_name'] = _("lead")
return super(crm_lead, self).get_empty_list_help(cr, uid, help, context=context)
# ---------------------------------------- # ----------------------------------------
# Mail Gateway # Mail Gateway
# ---------------------------------------- # ----------------------------------------

View File

@ -44,9 +44,7 @@
<field name="view_id" eval="False"/> <field name="view_id" eval="False"/>
<field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/> <field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
<field name="help" type="html"> <field name="help" type="html">
<p class="oe_view_nocontent_create"> <p>
Click to create a new opportunity.
</p><p>
OpenERP helps you keep track of your sales pipeline to follow OpenERP helps you keep track of your sales pipeline to follow
up potential sales and better forecast your future revenues. up potential sales and better forecast your future revenues.
</p><p> </p><p>

View File

@ -19,6 +19,7 @@
# #
############################################################################## ##############################################################################
from openerp import SUPERUSER_ID
from openerp.osv import fields, osv from openerp.osv import fields, osv
@ -66,7 +67,42 @@ class crm_configuration(osv.TransientModel):
'group_multi_salesteams': fields.boolean("Organize Sales activities into multiple Sales Teams", 'group_multi_salesteams': fields.boolean("Organize Sales activities into multiple Sales Teams",
implied_group='base.group_multi_salesteams', implied_group='base.group_multi_salesteams',
help="""Allows you to use Sales Teams to manage your leads and opportunities."""), help="""Allows you to use Sales Teams to manage your leads and opportunities."""),
'alias_prefix': fields.char('Default Alias Name for Leads'),
'alias_domain' : fields.char('Alias Domain'),
} }
_defaults = {
'alias_domain': lambda self, cr, uid, context: self.pool['mail.alias']._get_alias_domain(cr, SUPERUSER_ID, [1], None, None)[1],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: def _find_default_lead_alias_id(self, cr, uid, context=None):
alias_id = self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, 'crm.mail_alias_lead_info')
if not alias_id:
alias_ids = self.pool['mail.alias'].search(
cr, uid, [
('alias_model_id.model', '=', 'crm.lead'),
('alias_force_thread_id', '=', False),
('alias_parent_model_id.model', '=', 'crm.case.section'),
('alias_parent_thread_id', '=', False),
('alias_defaults', '=', '{}')
], context=context)
alias_id = alias_ids and alias_ids[0] or False
return alias_id
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)
if alias_id:
alias_name = self.pool['mail.alias'].browse(cr, uid, alias_id, context=context).alias_name
return {'alias_prefix': alias_name}
def set_default_alias_prefix(self, cr, uid, ids, context=None):
mail_alias = self.pool['mail.alias']
for record in self.browse(cr, uid, ids, context=context):
alias_id = self._find_default_lead_alias_id(cr, uid, context=context)
if not alias_id:
create_ctx = dict(context, alias_model_name='crm.lead', alias_parent_model_name='crm.case.section')
alias_id = self.pool['mail.alias'].create(cr, uid, {'alias_name': record.alias_prefix}, context=create_ctx)
else:
mail_alias.write(cr, uid, alias_id, {'alias_name': record.alias_prefix}, context=context)
return True

View File

@ -7,6 +7,7 @@
<field name="model">sale.config.settings</field> <field name="model">sale.config.settings</field>
<field name="inherit_id" ref="base_setup.view_sale_config_settings"/> <field name="inherit_id" ref="base_setup.view_sale_config_settings"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<data>
<div name="config_sale" position="before"> <div name="config_sale" position="before">
<separator string="After-Sale Services"/> <separator string="After-Sale Services"/>
<group> <group>
@ -26,11 +27,31 @@
<group> <group>
<label for="id" string="Manage Sales Teams"/> <label for="id" string="Manage Sales Teams"/>
<div> <div>
<field name="group_multi_salesteams" class="oe_inline"/> <div>
<label for="group_multi_salesteams"/> <field name="group_multi_salesteams" class="oe_inline"/>
<label for="group_multi_salesteams"/>
</div>
</div> </div>
</group> </group>
</div> </div>
<xpath expr="//group[@name='On Mail Client']" position="before">
<group name="default_alias">
<label for="id" string="Leads Email Alias"/>
<div attrs="{'invisible': [('alias_domain', '=', False)]}">
<div>
<field name="alias_prefix" class="oe_inline" attrs="{'required': [('alias_domain', '!=', False)]}"/>
@
<field name="alias_domain" class="oe_inline" readonly="1"/>
</div>
<p>
All emails sent to this address and processed by the mailgateway
will create a new lead.
</p>
</div>
</group>
</xpath>
</data>
</field> </field>
</record> </record>

View File

@ -50,9 +50,9 @@ class hr_applicant_settings(osv.TransientModel):
alias_ids = self.pool['mail.alias'].search( alias_ids = self.pool['mail.alias'].search(
cr, uid, [ cr, uid, [
('alias_model_id.model', '=', 'hr.applicant'), ('alias_model_id.model', '=', 'hr.applicant'),
('alias_force_thread_id', '=', 0), ('alias_force_thread_id', '=', False),
('alias_parent_model_id.model', '=', 'hr.job'), ('alias_parent_model_id.model', '=', 'hr.job'),
('alias_parent_thread_id', '=', 0), ('alias_parent_thread_id', '=', False),
('alias_defaults', '=', '{}') ('alias_defaults', '=', '{}')
], context=context) ], context=context)
alias_id = alias_ids and alias_ids[0] or False alias_id = alias_ids and alias_ids[0] or False