diff options
| author | Jeremy Kersten <jke@odoo.com> | 2014-07-08 17:33:00 +0200 |
|---|---|---|
| committer | Jeremy Kersten <jke@odoo.com> | 2014-07-08 17:33:00 +0200 |
| commit | faba7cd5aab1e9d5be2937be4ae5424b732b7d72 (patch) | |
| tree | 6c6162926324fd8a5eaf2b0c43d7ee08fd2088ac | |
| parent | 9ccdbcaca3347e641710d09b4fd4f17c780d9920 (diff) | |
[IMP] Crm: Add tracking mixin to manage utm campaign and add this mixin to mass_mailing, crm_lead and sale_order
28 files changed, 287 insertions, 170 deletions
diff --git a/addons/crm/__init__.py b/addons/crm/__init__.py index 872d0390303..1cd494b845f 100644 --- a/addons/crm/__init__.py +++ b/addons/crm/__init__.py @@ -24,6 +24,7 @@ import crm_segmentation import crm_lead import sales_team import calendar_event +import ir_http import crm_phonecall import report import wizard diff --git a/addons/crm/crm.py b/addons/crm/crm.py index 88933aaf2b9..20d025fd64d 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -19,13 +19,8 @@ # ############################################################################## -import calendar -from datetime import date, datetime -from dateutil import relativedelta - -from openerp import tools -from openerp.osv import fields -from openerp.osv import osv +from openerp.osv import osv, fields +from openerp.http import request AVAILABLE_PRIORITIES = [ ('0', 'Very Low'), @@ -35,8 +30,10 @@ AVAILABLE_PRIORITIES = [ ('4', 'Very High'), ] -class crm_case_channel(osv.osv): - _name = "crm.case.channel" + +class crm_tracking_medium(osv.Model): + # OLD crm.case.channel + _name = "crm.tracking.medium" _description = "Channels" _order = 'name' _columns = { @@ -47,6 +44,67 @@ class crm_case_channel(osv.osv): 'active': lambda *a: 1, } + +class crm_tracking_campaign(osv.Model): + # OLD crm.case.resource.type + _name = "crm.tracking.campaign" + _description = "Campaign" + _rec_name = "name" + _columns = { + 'name': fields.char('Campaign Name', required=True, translate=True), + 'section_id': fields.many2one('crm.case.section', 'Sales Team'), + } + + +class crm_tracking_source(osv.Model): + _name = "crm.tracking.source" + _description = "Source" + _rec_name = "name" + _columns = { + 'name': fields.char('Source Name', required=True, translate=True), + } + + +class crm_tracking_mixin(osv.AbstractModel): + """Mixin class for objects which can be tracked by marketing. """ + _name = 'crm.tracking.mixin' + + _columns = { + 'campaign_id': fields.many2one('crm.tracking.campaign', 'Campaign', # old domain ="['|',('section_id','=',section_id),('section_id','=',False)]" + help="This is a name that helps you keep track of your different campaign efforts Example: Fall_Drive, Christmas_Special"), + 'source_id': fields.many2one('crm.tracking.source', 'Source', help="This is the source of the link Example: Search Engine, another domain, or name of email list"), + 'medium_id': fields.many2one('crm.tracking.medium', 'Channel', help="This is the method of delivery. EX: Postcard, Email, or Banner Ad"), + } + + def tracking_fields(self): + return [('utm_campaign', 'campaign_id'), ('utm_source', 'source_id'), ('utm_medium', 'medium_id')] + + def tracking_get_values(self, cr, uid, vals, context=None): + for key, field in self.tracking_fields(): + column = self._all_columns[field].column + value = vals.get(field) or (request and request.session.get(key)) # params.get sould be always in session by the dispatch from ir_http + if column._type in ['many2one'] and isinstance(value, basestring): # if we receive a string for a many2one, we search / create the id + if value: + Model = self.pool[column._obj] + rel_id = Model.name_search(cr, uid, value, context=context) + if not rel_id: + rel_id = Model.create(cr, uid, {'name': value}, context=context) + vals[field] = rel_id + # Here the code for other cases that many2one + else: + vals[field] = value + return vals + + def _get_default_track(self, cr, uid, field, context=None): + return self.tracking_get_values(cr, uid, {}, context=context).get(field) + + _defaults = { + 'source_id': lambda self, cr, uid, ctx: self._get_default_track(cr, uid, 'source_id', ctx), + 'campaign_id': lambda self, cr, uid, ctx: self._get_default_track(cr, uid, 'campaign_id', ctx), + 'medium_id': lambda self, cr, uid, ctx: self._get_default_track(cr, uid, 'medium_id', ctx), + } + + class crm_case_stage(osv.osv): """ Model for case stages. This models the main stages of a document management flow. Main CRM objects (leads, opportunities, project @@ -106,16 +164,6 @@ class crm_case_categ(osv.osv): 'object_id' : _find_object_id } -class crm_case_resource_type(osv.osv): - """ Resource Type of case """ - _name = "crm.case.resource.type" - _description = "Campaign" - _rec_name = "name" - _columns = { - 'name': fields.char('Campaign Name', required=True, translate=True), - 'section_id': fields.many2one('crm.case.section', 'Sales Team'), - } - class crm_payment_mode(osv.osv): """ Payment Mode for Fund """ _name = "crm.payment.mode" diff --git a/addons/crm/crm_data.xml b/addons/crm/crm_data.xml index a5a732747ab..c354e2d10c6 100644 --- a/addons/crm/crm_data.xml +++ b/addons/crm/crm_data.xml @@ -13,18 +13,35 @@ <field name="state">open</field> </record> - <record model="crm.case.channel" id="crm_case_channel_website"> + + <!-- Crm Source --> + <record model="crm.tracking.source" id="crm_source_search_engine"> + <field name="name">Search engine</field> + </record> + <record model="crm.tracking.source" id="crm_source_mailing"> + <field name="name">Mailing Partner</field> + </record> + <record model="crm.tracking.source" id="crm_source_newsletter"> + <field name="name">Newsletter</field> + </record> + + <!-- Crm Medium --> + <record model="crm.tracking.medium" id="crm_medium_website"> <field name="name">Website</field> </record> - <record model="crm.case.channel" id="crm_case_channel_phone"> + <record model="crm.tracking.medium" id="crm_medium_phone"> <field name="name">Phone</field> </record> - <record model="crm.case.channel" id="crm_case_channel_direct"> + <record model="crm.tracking.medium" id="crm_medium_direct"> <field name="name">Direct</field> </record> - <record model="crm.case.channel" id="crm_case_channel_email"> + <record model="crm.tracking.medium" id="crm_medium_email"> <field name="name">Email</field> </record> + <record model="crm.tracking.medium" id="crm_medium_banner"> + <field name="name">Banner Ad</field> + </record> + <record model="crm.case.section" id="sales_team.section_sales_department"> <field name="use_leads">True</field> diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 7d53c1d51eb..b82f5a4d41f 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -32,13 +32,14 @@ from openerp.tools.translate import _ CRM_LEAD_FIELDS_TO_MERGE = ['name', 'partner_id', - 'channel_id', + 'campaign_id', 'company_id', 'country_id', 'section_id', 'state_id', 'stage_id', - 'type_id', + 'medium_id', + 'source_id', 'user_id', 'title', 'city', @@ -67,7 +68,7 @@ class crm_lead(format_address, osv.osv): _name = "crm.lead" _description = "Lead/Opportunity" _order = "priority,date_action,id desc" - _inherit = ['mail.thread', 'ir.needaction_mixin'] + _inherit = ['mail.thread', 'ir.needaction_mixin', 'crm.tracking.mixin'] _track = { 'stage_id': { @@ -214,9 +215,6 @@ class crm_lead(format_address, osv.osv): 'write_date': fields.datetime('Update Date', readonly=True), 'categ_ids': fields.many2many('crm.case.categ', 'crm_lead_category_rel', 'lead_id', 'category_id', 'Tags', \ domain="['|', ('section_id', '=', section_id), ('section_id', '=', False), ('object_id.model', '=', 'crm.lead')]", help="Classify and analyze your lead/opportunity categories like: Training, Service"), - 'type_id': fields.many2one('crm.case.resource.type', 'Campaign', \ - domain="['|',('section_id','=',section_id),('section_id','=',False)]", help="From which campaign (seminar, marketing campaign, mass mailing, ...) did this contact come from?"), - 'channel_id': fields.many2one('crm.case.channel', 'Channel', help="Communication channel (mail, direct, phone, ...)"), 'contact_name': fields.char('Contact Name', size=64), 'partner_name': fields.char("Customer Name", size=64,help='The name of the future partner company that will be created while converting the lead into opportunity', select=1), 'opt_out': fields.boolean('Opt-Out', oldname='optout', diff --git a/addons/crm/crm_lead_data.xml b/addons/crm/crm_lead_data.xml index 9ea859937a2..4d5e1982306 100644 --- a/addons/crm/crm_lead_data.xml +++ b/addons/crm/crm_lead_data.xml @@ -68,39 +68,6 @@ (4, ref('stage_lead7'))]"/> </record> - <!-- Crm campain --> - <record model="crm.case.resource.type" id="type_lead1"> - <field name="name">Telesales</field> - <field name="section_id" ref="sales_team.section_sales_department"/> - </record> - <record model="crm.case.resource.type" id="type_lead2"> - <field name="name">Email Campaign - Services</field> - <field name="section_id" ref="sales_team.section_sales_department"/> - </record> - <record model="crm.case.resource.type" id="type_lead3"> - <field name="name">Email Campaign - Products</field> - <field name="section_id" ref="sales_team.section_sales_department"/> - </record> - <record model="crm.case.resource.type" id="type_lead4"> - <field name="name">Twitter Ads</field> - <field name="section_id" ref="sales_team.section_sales_department"/> - </record> - <record model="crm.case.resource.type" id="type_lead5"> - <field name="name">Google Adwords</field> - <field name="section_id" ref="sales_team.section_sales_department"/> - </record> - <record model="crm.case.resource.type" id="type_lead6"> - <field name="name">Banner Ads</field> - <field name="section_id" ref="sales_team.section_sales_department"/> - </record> - <record model="crm.case.resource.type" id="type_lead7"> - <field name="name">Television</field> - <field name="section_id" ref="sales_team.section_sales_department"/> - </record> - <record model="crm.case.resource.type" id="type_lead8"> - <field name="name">Newsletter</field> - <field name="section_id" ref="sales_team.section_sales_department"/> - </record> <!-- crm categories --> <record model="crm.case.categ" id="categ_oppor1"> diff --git a/addons/crm/crm_lead_demo.xml b/addons/crm/crm_lead_demo.xml index 8acefd5c610..f5b38f8078b 100644 --- a/addons/crm/crm_lead_demo.xml +++ b/addons/crm/crm_lead_demo.xml @@ -16,9 +16,7 @@ <field name="city">Paris</field> <field name="zip">93190</field> <field name="phone">+33 1 25 54 45 69</field> - <field name="type_id" ref="type_lead2"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor6])]"/> - <field name="channel_id" ref="crm_case_channel_email"/> <field name="priority">1</field> <field name="section_id" ref="sales_team.section_sales_department"/> <field name="user_id" ref="base.user_root"/> @@ -51,9 +49,7 @@ Could you please send me the details ?</field> <field name="function">Purchase Manager</field> <field name="country_id" ref="base.fr"/> <field name="city">Bordeaux</field> - <field name="type_id" ref="type_lead7"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor2])]"/> - <field name="channel_id" ref="crm_case_channel_website"/> <field name="priority">1</field> <field name="section_id" ref="sales_team.section_sales_department"/> <field name="user_id" ref="base.user_root"/> @@ -80,9 +76,7 @@ Could you please send me the details ?</field> <field name="partner_id" ref=""/> <field name="country_id" ref="base.us"/> <field name="city">New-York</field> - <field name="type_id" ref="type_lead5"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor4])]"/> - <field name="channel_id" ref=""/> <field name="priority">2</field> <field name="section_id" ref="sales_team.crm_case_section_1"/> <field name="user_id" ref="base.user_demo"/> @@ -101,9 +95,7 @@ Could you please send me the details ?</field> <field name="partner_id" ref=""/> <field name="country_id" ref="base.uk"/> <field name="city">Drury</field> - <field name="type_id" ref="type_lead8"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor5])]"/> - <field name="channel_id" ref=""/> <field name="priority">2</field> <field name="section_id" ref="sales_team.crm_case_section_2"/> <field name="user_id" ref="base.user_demo"/> @@ -126,9 +118,7 @@ Could you please send me the details ?</field> <field name="city">Franklinville</field> <field name="zip">NJ 08322</field> <field name="phone">+1 813 494 5005</field> - <field name="type_id" ref="type_lead3"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor1])]"/> - <field name="channel_id" ref="crm_case_channel_website"/> <field name="priority">2</field> <field name="section_id" ref="sales_team.crm_case_section_1"/> <field name="user_id" ref=""/> @@ -153,9 +143,7 @@ Contact: +1 813 494 5005</field> <field name="function">Consultant</field> <field name="country_id" ref="base.it"/> <field name="city">Roma</field> - <field name="type_id" ref="type_lead3"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor3,categ_oppor4])]"/> - <field name="channel_id" ref=""/> <field name="priority">2</field> <field name="section_id" ref="sales_team.crm_case_section_2"/> <field name="user_id" ref=""/> @@ -171,9 +159,7 @@ Contact: +1 813 494 5005</field> <field name="function">Journalist</field> <field name="country_id" ref="base.ua"/> <field name="city">Kiev</field> - <field name="type_id" ref="type_lead8"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor4])]"/> - <field name="channel_id" ref=""/> <field name="priority">0</field> <field name="section_id" ref="sales_team.crm_case_section_2"/> <field name="user_id" ref="base.user_root"/> @@ -190,9 +176,7 @@ Contact: +1 813 494 5005</field> <field name="function">Sales</field> <field name="country_id" ref="base.uk"/> <field name="city">Cambridge</field> - <field name="type_id" ref="type_lead5"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor6,categ_oppor8])]"/> - <field name="channel_id" ref=""/> <field name="priority">1</field> <field name="section_id" ref="sales_team.section_sales_department"/> <field name="user_id" ref="base.user_root"/> @@ -209,9 +193,7 @@ Contact: +1 813 494 5005</field> <field name="function">Sales</field> <field name="country_id" ref="base.uk"/> <field name="city">Oxford</field> - <field name="type_id" ref="type_lead3"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor7])]"/> - <field name="channel_id" ref="crm_case_channel_phone"/> <field name="priority">2</field> <field name="section_id" ref="sales_team.section_sales_department"/> <field name="user_id" ref="base.user_demo"/> @@ -227,9 +209,7 @@ Contact: +1 813 494 5005</field> <field name="function">Medical illustrator</field> <field name="country_id" ref="base.es"/> <field name="city">Sevilla</field> - <field name="type_id" ref="type_lead8"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor1])]"/> - <field name="channel_id" ref="crm_case_channel_email"/> <field name="priority">2</field> <field name="section_id" ref="sales_team.crm_case_section_2"/> <field name="user_id" ref="base.user_demo"/> @@ -250,9 +230,7 @@ Andrew</field> <field name="partner_id" ref="base.res_partner_1"/> <field name="function">Functional Consultant</field> <field name="country_id" ref=""/> - <field name="type_id" ref="type_lead3"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor7])]"/> - <field name="channel_id" ref="crm_case_channel_direct"/> <field name="priority">2</field> <field name="section_id" ref="sales_team.crm_case_section_1"/> <field name="user_id" ref=""/> @@ -268,9 +246,7 @@ Andrew</field> <field name="partner_id" ref="base.res_partner_1"/> <field name="country_id" ref="base.cn"/> <field name="city">Shenzhen</field> - <field name="type_id" ref="type_lead3"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor1])]"/> - <field name="channel_id" ref="crm_case_channel_website"/> <field name="priority">2</field> <field name="section_id" ref="sales_team.section_sales_department"/> <field name="user_id" ref=""/> @@ -303,9 +279,7 @@ Andrew</field> <field name="street">1 rue Rockfeller</field> <field name="country_id" ref="base.at"/> <field name="city">Melbourne</field> - <field name="type_id" ref="type_lead3"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor1])]"/> - <field name="channel_id" ref="crm_case_channel_email"/> <field name="priority">1</field> <field eval="time.strftime('%Y-%m-25')" name="date_deadline"/> <field eval="time.strftime('%Y-%m-12')" name="date_action"/> @@ -328,9 +302,7 @@ Andrew</field> <field name="country_id" ref="base.be"/> <field name="city">Wavre</field> <field name="zip">1300</field> - <field name="type_id" ref="type_lead3"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor2])]"/> - <field name="channel_id" ref="crm_case_channel_website"/> <field name="priority">2</field> <field eval="time.strftime('%Y-%m-23')" name="date_deadline"/> <field eval="time.strftime('%Y-%m-10')" name="date_action"/> @@ -350,7 +322,6 @@ Andrew</field> <field name="city">Wavre</field> <field name="email_from">virginie@agrolait.com</field> <field name="partner_id" ref="base.res_partner_2"/> - <field name="type_id" ref="type_lead8"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor1])]"/> <field name="priority">1</field> <field eval="time.strftime('%Y-%m-12')" name="date_deadline"/> @@ -377,7 +348,6 @@ Andrew</field> <field name="country_id" ref="base.uk"/> <field name="city">Liverpool</field> <field name="zip">L25 4RL</field> - <field name="type_id" ref="type_lead5"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor5])]"/> <field name="priority">2</field> <field eval="time.strftime('%Y-%m-28')" name="date_deadline"/> @@ -401,9 +371,7 @@ Andrew</field> <field name="street">Rue des Palais 51, bte 33</field> <field name="country_id" ref="base.be"/> <field name="city">Brussels</field> - <field name="type_id" ref="type_lead3"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor3,categ_oppor4])]"/> - <field name="channel_id" ref="crm_case_channel_website"/> <field name="priority">1</field> <field eval="time.strftime('%Y-%m-8')" name="date_deadline"/> <field eval="time.strftime('%Y-%m-3')" name="date_action"/> @@ -429,7 +397,6 @@ Andrew</field> <field name="street">3661 Station Street</field> <field name="country_id" ref="base.uk"/> <field name="partner_id" ref="base.res_partner_4"/> - <field name="type_id" ref="type_lead8"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor4,categ_oppor6])]"/> <field name="priority">1</field> <field eval="time.strftime('%Y-%m-13')" name="date_deadline"/> @@ -456,7 +423,6 @@ Andrew</field> <field name="country_id" ref="base.uk"/> <field name="city">Liverpool</field> <field name="zip">L25 4RL</field> - <field name="type_id" ref="type_lead3"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor1])]"/> <field name="priority">1</field> <field eval="time.strftime('%Y-%m-10')" name="date_deadline"/> @@ -476,7 +442,6 @@ Andrew</field> <field name="partner_name">Epic Technologies</field> <field name="email_from">john.b@tech.info</field> <field name="partner_id" ref="base.res_partner_5"/> - <field name="type_id" ref="type_lead3"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor4,categ_oppor8])]"/> <field name="priority">2</field> <field name="section_id" ref="sales_team.crm_case_section_1"/> @@ -489,9 +454,7 @@ Andrew</field> <field name="name">“Resource Planning” project develpment</field> <field eval="350" name="planned_revenue"/> <field name="partner_id" ref="base.res_partner_7"/> - <field name="type_id" ref="type_lead2"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor7])]"/> - <field name="channel_id" ref="crm_case_channel_phone"/> <field name="priority">2</field> <field name="section_id" ref="sales_team.crm_case_section_2"/> <field name="user_id" ref="base.user_root"/> @@ -507,9 +470,7 @@ Andrew</field> <field name="contact_name">Benjamin Flores</field> <field name="partner_name">Nebula Business</field> <field name="partner_id" ref="base.res_partner_17"/> - <field name="type_id" ref="type_lead7"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor3])]"/> - <field name="channel_id" ref="crm_case_channel_email"/> <field name="priority">1</field> <field name="section_id" ref="sales_team.crm_case_section_2"/> <field name="user_id" ref="base.user_root"/> @@ -522,9 +483,7 @@ Andrew</field> <field eval="2000" name="planned_revenue"/> <field eval="80.0" name="probability"/> <field name="partner_id" ref="base.res_partner_18"/> - <field name="type_id" ref="type_lead5"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor3])]"/> - <field name="channel_id" ref="crm_case_channel_direct"/> <field name="priority">0</field> <field name="section_id" ref="sales_team.section_sales_department"/> <field name="user_id" ref="base.user_demo"/> @@ -540,9 +499,7 @@ Andrew</field> <field name="email_from">info@mycompany.net</field> <field name="country_id" ref="base.pe"/> <field name="city">Lima</field> - <field name="type_id" ref="type_lead8"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor7])]"/> - <field name="channel_id" ref="crm_case_channel_website"/> <field name="priority">0</field> <field eval="time.strftime('%Y-%m-6')" name="date_deadline"/> <field name="section_id" ref="sales_team.section_sales_department"/> @@ -564,7 +521,6 @@ Andrew</field> <field name="country_id" ref="base.ar"/> <field name="city">Buenos Aires</field> <field name="zip">B7313</field> - <field name="type_id" ref="type_lead4"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor4])]"/> <field name="priority">2</field> <field name="title_action">Conf call with technical service</field> @@ -585,9 +541,7 @@ Andrew</field> <field name="country_id" ref="base.be"/> <field name="city">Wavre</field> <field name="zip">1300</field> - <field name="type_id" ref="type_lead3"/> <field name="categ_ids" eval="[(6, 0, [categ_oppor2])]"/> - <field name="channel_id" ref="crm_case_channel_website"/> <field name="priority">2</field> <field eval="time.strftime('%Y-%m-23')" name="date_deadline"/> <field eval="time.strftime('%Y-%m-10')" name="date_action"/> diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index 62c5e14deed..3f10dcf2099 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -230,9 +230,9 @@ <field name="partner_id" invisible="1"/> <field name="section_id" groups="base.group_multi_salesteams"/> <field name="probability" invisible="1"/> - <field name="type_id" invisible="1"/> + <field name="campaign_id" invisible="1"/> <field name="referred" invisible="1"/> - <field name="channel_id" invisible="1"/> + <field name="medium_id" invisible="1"/> <field name="message_unread" invisible="1"/> </tree> </field> @@ -513,8 +513,9 @@ <field name="country_id"/> <field name="date_action"/> <field name="title_action"/> - <field name="channel_id" invisible="1"/> - <field name="type_id" invisible="1"/> + <field name="medium_id" invisible="1"/> + <field name="campaign_id" invisible="1"/> + <field name="source_id" invisible="1"/> <field name="stage_id"/> <field name="planned_revenue" sum="Expected Revenues"/> <field name="probability" avg="Avg. of Probability"/> diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml index 167fd26efc3..b0e64042af7 100644 --- a/addons/crm/crm_view.xml +++ b/addons/crm/crm_view.xml @@ -26,10 +26,10 @@ <menuitem id="base.next_id_64" name="Sales" parent="base.menu_reporting" sequence="1"/> - <!-- crm.case.channel --> - <record id="crm_case_channel_view_tree" model="ir.ui.view"> - <field name="name">crm.case.channel.tree</field> - <field name="model">crm.case.channel</field> + <!-- crm.tracking.medium --> + <record id="crm_tracking_medium_view_tree" model="ir.ui.view"> + <field name="name">crm.tracking.medium.tree</field> + <field name="model">crm.tracking.medium</field> <field name="arch" type="xml"> <tree string="Channels"> <field name="name"/> @@ -37,9 +37,9 @@ </tree> </field> </record> - <record id="crm_case_channel_view_form" model="ir.ui.view"> - <field name="name">crm.case.channel.form</field> - <field name="model">crm.case.channel</field> + <record id="crm_tracking_medium_view_form" model="ir.ui.view"> + <field name="name">crm.tracking.medium.form</field> + <field name="model">crm.tracking.medium</field> <field name="arch" type="xml"> <form string="Channel"> <group> @@ -49,26 +49,66 @@ </form> </field> </record> - <record id="crm_case_channel_action" model="ir.actions.act_window"> + <record id="crm_tracking_medium_action" model="ir.actions.act_window"> <field name="name">Channels</field> - <field name="res_model">crm.case.channel</field> + <field name="res_model">crm.tracking.medium</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="help" type="html"> <p class="oe_view_nocontent_create"> Click to define a new channel. </p><p> - Use channels to track the soure of your leads and opportunities. Channels + Use channels to track the type of source of your leads and opportunities. Channels are mostly used in reporting to analyse sales performance related to marketing efforts. </p><p> Some examples of channels: company website, phone call - campaign, reseller, etc. + campaign, reseller, banner, etc. </p> </field> </record> - <menuitem action="crm_case_channel_action" id="menu_crm_case_channel" parent="base.menu_crm_config_lead" sequence="4" groups="base.group_no_one"/> + <!-- crm.tracking.source --> + <record id="crm_tracking_source_view_tree" model="ir.ui.view"> + <field name="name">crm.tracking.source.tree</field> + <field name="model">crm.tracking.source</field> + <field name="arch" type="xml"> + <tree string="Channels"> + <field name="name"/> + </tree> + </field> + </record> + <record id="crm_tracking_source_view_form" model="ir.ui.view"> + <field name="name">crm.tracking.source.form</field> + <field name="model">crm.tracking.source</field> + <field name="arch" type="xml"> + <form string="Channel"> + <group> + <field name="name"/> + </group> + </form> + </field> + </record> + <record id="crm_tracking_source_action" model="ir.actions.act_window"> + <field name="name">Source</field> + <field name="res_model">crm.tracking.source</field> + <field name="view_type">form</field> + <field name="view_mode">tree,form</field> + <field name="help" type="html"> + <p class="oe_view_nocontent_create"> + Click to define a new source. + </p><p> + Use channels to track the source of your leads and opportunities. Channels + are mostly used in reporting to analyse sales performance + related to marketing efforts. + </p><p> + Some examples of channels: partner's website, google.com, + email list name, etc. + </p> + </field> + </record> + + <menuitem action="crm_tracking_source_action" id="menu_crm_tracking_source" parent="base.menu_crm_config_lead" sequence="4" groups="base.group_no_one"/> <!-- CRM Stage Tree View --> @@ -155,9 +195,9 @@ <!-- Resource Type of case Tree View --> - <record model="ir.ui.view" id="crm_case_resource_type_tree"> - <field name="name">crm.case.resource.type.tree</field> - <field name="model">crm.case.resource.type</field> + <record model="ir.ui.view" id="crm_tracking_campaign_tree"> + <field name="name">crm.tracking.campaign.tree</field> + <field name="model">crm.tracking.campaign</field> <field name="arch" type="xml"> <tree string="Campaign"> <field name="name"/> @@ -168,9 +208,9 @@ <!-- Resource Type of case Form View --> - <record model="ir.ui.view" id="crm_case_resource_type_form"> - <field name="name">crm.case.resource.type.form</field> - <field name="model">crm.case.resource.type</field> + <record model="ir.ui.view" id="crm_tracking_campaign_form"> + <field name="name">crm.tracking.campaign.form</field> + <field name="model">crm.tracking.campaign</field> <field name="arch" type="xml"> <form string="Campaign"> <group> @@ -183,15 +223,15 @@ <!-- Resource Type of case Action --> - <record id="crm_case_resource_type_act" model="ir.actions.act_window"> + <record id="crm_tracking_campaign_act" model="ir.actions.act_window"> <field name="name">Campaigns</field> - <field name="res_model">crm.case.resource.type</field> + <field name="res_model">crm.tracking.campaign</field> <field name="view_type">form</field> - <field name="view_id" ref="crm_case_resource_type_tree"/> + <field name="view_id" ref="crm_tracking_campaign_tree"/> </record> - <menuitem action="crm_case_resource_type_act" - id="menu_crm_case_resource_type_act" sequence="4" + <menuitem action="crm_tracking_campaign_act" + id="menu_crm_tracking_campaign_act" sequence="4" groups="base.group_no_one" parent="base.menu_crm_config_lead"/> diff --git a/addons/crm/ir_http.py b/addons/crm/ir_http.py new file mode 100644 index 00000000000..e2bc9be4867 --- /dev/null +++ b/addons/crm/ir_http.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +from openerp.http import request +from openerp.osv import orm + + +class ir_http(orm.AbstractModel): + _inherit = 'ir.http' + + def _dispatch(self): + for var, dummy in self.pool['crm.tracking.mixin'].tracking_fields(): + if var in request.params and (var not in request.session or request.session[var] != request.params[var]): + request.session[var] = request.params[var] + return super(ir_http, self)._dispatch() diff --git a/addons/crm/report/crm_lead_report.py b/addons/crm/report/crm_lead_report.py index 7cb355c74d4..32851a753bc 100644 --- a/addons/crm/report/crm_lead_report.py +++ b/addons/crm/report/crm_lead_report.py @@ -44,6 +44,7 @@ class crm_lead_report(osv.osv): _auto = False _description = "CRM Lead Analysis" _rec_name = 'date_deadline' + _inherit = ["crm.tracking.mixin"] _columns = { 'date_deadline': fields.date('Exp. Closing', readonly=True, help="Expected Closing"), @@ -58,10 +59,8 @@ class crm_lead_report(osv.osv): 'delay_expected': fields.float('Overpassed Deadline',digits=(16,2),readonly=True, group_operator="avg"), 'user_id':fields.many2one('res.users', 'User', readonly=True), + 'section_id':fields.many2one('crm.case.section', 'Sales Team', readonly=True), 'country_id':fields.many2one('res.country', 'Country', readonly=True), - 'section_id':fields.many2one('crm.case.section', 'Sales Team', readonly=True), - 'channel_id':fields.many2one('crm.case.channel', 'Channel', readonly=True), - 'type_id':fields.many2one('crm.case.resource.type', 'Campaign', readonly=True), 'company_id': fields.many2one('res.company', 'Company', readonly=True), 'probability': fields.float('Probability',digits=(16,2),readonly=True, group_operator="avg"), 'planned_revenue': fields.float('Planned Revenue',digits=(16,2),readonly=True), @@ -101,8 +100,9 @@ class crm_lead_report(osv.osv): c.company_id, c.priority, c.section_id, - c.channel_id, - c.type_id, + c.campaign_id, + c.source_id, + c.medium_id, c.partner_id, c.country_id, c.planned_revenue, diff --git a/addons/crm/report/crm_lead_report_view.xml b/addons/crm/report/crm_lead_report_view.xml index 74564d8df92..8882b8a1f81 100644 --- a/addons/crm/report/crm_lead_report_view.xml +++ b/addons/crm/report/crm_lead_report_view.xml @@ -74,13 +74,15 @@ <group expand="0" string="Extended Filters"> <field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/> <field name="stage_id" domain="[('section_ids', '=', 'section_id')]" /> - <field name="type_id"/> - <field name="channel_id"/> + <field name="campaign_id"/> + <field name="medium_id"/> + <field name="source_id"/> <field name="company_id" groups="base.group_multi_company"/> <separator orientation="vertical"/> <field name="stage_id" widget="selection" domain="[('section_ids', '=', 'section_id')]" /> - <field name="type_id" widget="selection"/> - <field name="channel_id" widget="selection"/> + <field name="campaign_id" widget="selection"/> + <field name="medium_id" widget="selection"/> + <field name="source_id" widget="selection"/> <separator orientation="vertical"/> <field name="company_id" widget="selection" groups="base.group_multi_company"/> <newline/> diff --git a/addons/crm/security/ir.model.access.csv b/addons/crm/security/ir.model.access.csv index 3c6fc05a70d..abfe3ebc903 100644 --- a/addons/crm/security/ir.model.access.csv +++ b/addons/crm/security/ir.model.access.csv @@ -3,8 +3,10 @@ access_crm_segmentation_user,crm.segmentation user,model_crm_segmentation,base.g access_crm_segmentation_line_user,crm.segmentation.line user,model_crm_segmentation_line,base.group_sale_salesman,1,0,0,0
access_crm_segmentation,crm.segmentation,model_crm_segmentation,base.group_sale_manager,1,1,1,1
access_crm_segmentation_line,crm.segmentation.line,model_crm_segmentation_line,base.group_sale_manager,1,1,1,1
-access_crm_case_channel_user,crm.case.channel user,model_crm_case_channel,base.group_sale_salesman,1,0,0,0
-access_crm_case_channel_manager,crm.case.channel manager,model_crm_case_channel,base.group_sale_manager,1,1,1,1
+access_crm_tracking_medium_user,crm.tracking.medium user,model_crm_tracking_medium,base.group_sale_salesman,1,0,0,0
+access_crm_tracking_medium_manager,crm.tracking.medium manager,model_crm_tracking_medium,base.group_sale_manager,1,1,1,1
+access_crm_tracking_source_user,crm.tracking.source user,model_crm_tracking_source,base.group_sale_salesman,1,0,0,0
+access_crm_tracking_source_manager,crm.tracking.source manager,model_crm_tracking_source,base.group_sale_manager,1,1,1,1
access_crm_case_categ,crm.case.categ,model_crm_case_categ,base.group_sale_salesman,1,1,1,0
access_crm_lead_manager,crm.lead.manager,model_crm_lead,base.group_sale_manager,1,1,1,1
access_crm_phonecall_manager,crm.phonecall.manager,model_crm_phonecall,base.group_sale_manager,1,1,1,1
@@ -13,8 +15,8 @@ access_crm_lead,crm.lead,model_crm_lead,base.group_sale_salesman,1,1,1,0 access_crm_phonecall,crm.phonecall,model_crm_phonecall,base.group_sale_salesman,1,1,1,0
access_crm_case_stage,crm.case.stage,model_crm_case_stage,,1,0,0,0
access_crm_case_stage_manager,crm.case.stage,model_crm_case_stage,base.group_sale_manager,1,1,1,1
-access_crm_case_resource_type_user,crm_case_resource_type user,model_crm_case_resource_type,base.group_sale_salesman,1,1,1,0
-access_crm_case_resource_type_manager,crm_case_resource_type manager,model_crm_case_resource_type,base.group_sale_manager,1,1,1,1
+access_crm_tracking_campaign_user,crm_tracking_campaign user,model_crm_tracking_campaign,base.group_sale_salesman,1,1,1,0
+access_crm_tracking_campaign_manager,crm_tracking_campaign manager,model_crm_tracking_campaign,base.group_sale_manager,1,1,1,1
access_crm_phonecall_report_user,crm.phonecall.report.user,model_crm_phonecall_report,base.group_sale_salesman,1,0,0,0
access_crm_phonecall_report_manager,crm.phonecall.report,model_crm_phonecall_report,base.group_sale_manager,1,1,1,1
access_res_partner_manager,res.partner.crm.manager,base.model_res_partner,base.group_sale_manager,1,0,0,0
@@ -29,4 +31,4 @@ access_res_partner_bank_type_crm_user,res.partner.bank.type.crm.user,base.model_ access_crm_lead_partner_manager,crm.lead.partner.manager,model_crm_lead,base.group_partner_manager,1,0,0,0
access_crm_phonecall_partner_manager,crm.phonecall.partner.manager,model_crm_phonecall,base.group_partner_manager,1,1,1,1
access_crm_payment_mode_user,crm.payment.mode,model_crm_payment_mode,base.group_sale_salesman,1,0,0,0
-access_crm_payment_mode,crm.payment.mode,model_crm_payment_mode,base.group_sale_manager,1,1,1,1
+access_crm_payment_mode,crm.payment.mode,model_crm_payment_mode,base.group_sale_manager,1,1,1,1
\ No newline at end of file diff --git a/addons/crm_claim/crm_claim_data.xml b/addons/crm_claim/crm_claim_data.xml index 86cf988ff45..58ed29f0a0a 100644 --- a/addons/crm_claim/crm_claim_data.xml +++ b/addons/crm_claim/crm_claim_data.xml @@ -28,12 +28,12 @@ Case Category2 --> - <record model="crm.case.resource.type" id="type_claim1"> + <record model="crm.tracking.campaign" id="claim_source1"> <field name="name">Corrective</field> <field name="section_id" ref="sales_team.section_sales_department"/> </record> - <record model="crm.case.resource.type" id="type_claim2"> + <record model="crm.tracking.campaign" id="claim_source2"> <field name="name">Preventive</field> <field name="section_id" ref="sales_team.section_sales_department"/> </record> diff --git a/addons/crm_helpdesk/crm_helpdesk.py b/addons/crm_helpdesk/crm_helpdesk.py index 0fdcfeb4210..3800efd7cf4 100644 --- a/addons/crm_helpdesk/crm_helpdesk.py +++ b/addons/crm_helpdesk/crm_helpdesk.py @@ -56,7 +56,7 @@ class crm_helpdesk(osv.osv): 'date': fields.datetime('Date'), 'ref': fields.reference('Reference', selection=openerp.addons.base.res.res_request.referencable_models), 'ref2': fields.reference('Reference 2', selection=openerp.addons.base.res.res_request.referencable_models), - 'channel_id': fields.many2one('crm.case.channel', 'Channel', help="Communication channel."), + 'channel_id': fields.many2one('crm.tracking.medium', 'Channel', help="Communication channel."), 'planned_revenue': fields.float('Planned Revenue'), 'planned_cost': fields.float('Planned Costs'), 'priority': fields.selection([('0','Low'), ('1','Normal'), ('2','High')], 'Priority'), diff --git a/addons/crm_helpdesk/report/crm_helpdesk_report.py b/addons/crm_helpdesk/report/crm_helpdesk_report.py index 1163db948d2..f7180ef0908 100644 --- a/addons/crm_helpdesk/report/crm_helpdesk_report.py +++ b/addons/crm_helpdesk/report/crm_helpdesk_report.py @@ -56,7 +56,7 @@ class crm_helpdesk_report(osv.osv): 'date_deadline': fields.date('Deadline', select=True), 'priority': fields.selection([('5', 'Lowest'), ('4', 'Low'), \ ('3', 'Normal'), ('2', 'High'), ('1', 'Highest')], 'Priority'), - 'channel_id': fields.many2one('crm.case.channel', 'Channel'), + 'channel_id': fields.many2one('crm.tracking.medium', 'Channel'), 'categ_id': fields.many2one('crm.case.categ', 'Category', \ domain="[('section_id','=',section_id),\ ('object_id.model', '=', 'crm.helpdesk')]"), diff --git a/addons/crm_mass_mailing/__init__.py b/addons/crm_mass_mailing/__init__.py new file mode 100644 index 00000000000..983faeb18a6 --- /dev/null +++ b/addons/crm_mass_mailing/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2014-Today OpenERP SA (<http://www.openerp.com>). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## + +import mass_mailing diff --git a/addons/crm_mass_mailing/__openerp__.py b/addons/crm_mass_mailing/__openerp__.py new file mode 100644 index 00000000000..5e2e320f9f0 --- /dev/null +++ b/addons/crm_mass_mailing/__openerp__.py @@ -0,0 +1,18 @@ +{ + 'name': 'Campaign in Mass Mailing', + 'version': '1.0', + 'summary': 'This module allow to specify a campaign, a source and a channel for a mass mailing campaign.', + 'author': 'OpenERP SA', + 'description': """ +Mass Mailing with Crm Marketing +================================ + +Link module mass mailing with the marketing mixin from crm. + """, + 'depends': ['crm', 'mass_mailing'], + 'data': [ + 'mass_mailing.xml', + ], + 'installable': True, + 'auto_install': True, +} diff --git a/addons/crm_mass_mailing/mass_mailing.py b/addons/crm_mass_mailing/mass_mailing.py new file mode 100644 index 00000000000..6a2e1322136 --- /dev/null +++ b/addons/crm_mass_mailing/mass_mailing.py @@ -0,0 +1,6 @@ +from openerp.osv import osv + + +class MassMailing(osv.Model): + _name = 'mail.mass_mailing' + _inherit = ['mail.mass_mailing', 'crm.tracking.mixin'] diff --git a/addons/crm_mass_mailing/mass_mailing.xml b/addons/crm_mass_mailing/mass_mailing.xml new file mode 100644 index 00000000000..a6768e7be84 --- /dev/null +++ b/addons/crm_mass_mailing/mass_mailing.xml @@ -0,0 +1,23 @@ +<?xml version="1.0"?> +<openerp> + <data> + <record model="ir.ui.view" id="view_tracking_mass_mailing_form"> + <field name="name">mail.mass_mailing.inherit.form</field> + <field name="model">mail.mass_mailing</field> + <field name="inherit_id" ref="mass_mailing.view_mail_mass_mailing_form"/> + + <field name="arch" type="xml"> + <xpath expr="//notebook/page[@string='Options']" position="after"> + <page string="Tracking"> + <group> + <field name="campaign_id" /> + <field name="medium_id" /> + <field name="source_id" /> + </group> + </page> + </xpath> + </field> + </record> + </data> +</openerp> + diff --git a/addons/crm_mass_mailing/mass_mailing_data.xml b/addons/crm_mass_mailing/mass_mailing_data.xml new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/addons/crm_mass_mailing/mass_mailing_data.xml diff --git a/addons/crm_partner_assign/crm_lead_demo.xml b/addons/crm_partner_assign/crm_lead_demo.xml index a6373ff2f8a..a9da6701c8b 100644 --- a/addons/crm_partner_assign/crm_lead_demo.xml +++ b/addons/crm_partner_assign/crm_lead_demo.xml @@ -12,9 +12,7 @@ <field name="function">Reseller</field> <field name="country_id" ref="base.uk"/> <field name="city">Edinburgh</field> - <field name="type_id" ref="crm.type_lead8"/> <field name="categ_ids" eval="[(6, 0, [ref('crm.categ_oppor1')])]"/> - <field name="channel_id" ref="crm.crm_case_channel_email"/> <field name="priority">2</field> <field name="section_id" ref="sales_team.crm_case_section_2"/> <field name="user_id" ref=""/> diff --git a/addons/crm_partner_assign/crm_portal_view.xml b/addons/crm_partner_assign/crm_portal_view.xml index c3334cfb9ee..0efeaaa2ae7 100644 --- a/addons/crm_partner_assign/crm_portal_view.xml +++ b/addons/crm_partner_assign/crm_portal_view.xml @@ -15,9 +15,9 @@ <field name="email_from"/> <field name="phone"/> <field name="stage_id" invisible="1"/> - <field name="type_id" invisible="1"/> + <field name="campaign_id" invisible="1"/> <field name="referred" invisible="1"/> - <field name="channel_id" invisible="1"/> + <field name="medium_id" invisible="1"/> <field name="section_id" invisible="context.get('invisible_section', True)" groups="base.group_multi_salesteams"/> <button string="I'm interested" name="case_interested" icon="gtk-index" type="object"/> @@ -80,8 +80,8 @@ <field name="country_id" invisible="context.get('invisible_country', True)" /> <field name="date_action"/> <field name="title_action" /> - <field name="channel_id" invisible="1"/> - <field name="type_id" invisible="1"/> + <field name="medium_id" invisible="1"/> + <field name="campaign_id" invisible="1"/> <field name="planned_revenue" sum="Expected Revenues"/> <field name="probability" widget="progressbar" avg="Avg. of Probability"/> <field name="section_id" groups="base.group_multi_salesteams" invisible="context.get('invisible_section', True)" /> @@ -140,8 +140,8 @@ </group> <group col="2"> <separator string="Categorization" colspan="2"/> - <field name="type_id" readonly="1"/> - <field name="channel_id" readonly="1"/> + <field name="campaign_id" readonly="1"/> + <field name="medium_id" readonly="1"/> </group> </group> <separator string="Details" /> diff --git a/addons/marketing_crm/views/crm.xml b/addons/marketing_crm/views/crm.xml index 1e4c7840db4..dff75453c92 100644 --- a/addons/marketing_crm/views/crm.xml +++ b/addons/marketing_crm/views/crm.xml @@ -12,8 +12,9 @@ <attribute name="groups"></attribute> </xpath> <xpath expr="//field[@name='company_id']" position="after"> - <field name="type_id"/> - <field name="channel_id" widget="selection"/> + <field name="campaign_id" /> + <field name="medium_id"/> + <field name="source_id" /> </xpath> </field> </record> @@ -25,8 +26,9 @@ <field name="arch" type="xml"> <xpath expr="//group[@name='mailings']" position="before"> <group string="Marketing"> - <field name="type_id" /> - <field name="channel_id" widget="selection"/> + <field name="campaign_id" /> + <field name="medium_id" /> + <field name="source_id" /> </group> </xpath> </field> diff --git a/addons/mass_mailing/models/mass_mailing.py b/addons/mass_mailing/models/mass_mailing.py index 33e66a2d12c..5844bcf4316 100644 --- a/addons/mass_mailing/models/mass_mailing.py +++ b/addons/mass_mailing/models/mass_mailing.py @@ -144,7 +144,6 @@ class MassMailingCampaign(osv.Model): row['replied_ratio'] = 100.0 * row['replied'] / total return results - _columns = { 'name': fields.char('Name', required=True), 'stage_id': fields.many2one('mail.mass_mailing.stage', 'Stage', required=True), @@ -326,7 +325,6 @@ class MassMailing(osv.Model): row['replied_ratio'] = 100.0 * row['replied'] / total return results - def _get_mailing_model(self, cr, uid, context=None): res = [] for model_name in self.pool: diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index c6d77832bc0..8155502f82c 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -22,7 +22,8 @@ from openerp.osv import osv, fields class sale_order(osv.osv): - _inherit = 'sale.order' + _name = "sale.order" + _inherit = ['sale.order', 'crm.tracking.mixin'] _columns = { 'categ_ids': fields.many2many('crm.case.categ', 'sale_order_category_rel', 'order_id', 'category_id', 'Tags', \ domain="['|', ('section_id', '=', section_id), ('section_id', '=', False), ('object_id.model', '=', 'crm.lead')]", context="{'object_name': 'crm.lead'}") diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 070b8ef4fa7..d49f090ebcf 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -29,6 +29,12 @@ <field name="user_id" position="after"> <field name="categ_ids" widget="many2many_tags"/> </field> + <field name="origin" position="after"> + <field name="campaign_id" /> + <field name="medium_id" /> + <field name="source_id" /> + </field> + </field> </record> </data> diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py index 96b1edfef6b..8521d83630b 100644 --- a/addons/website/models/ir_http.py +++ b/addons/website/models/ir_http.py @@ -76,7 +76,7 @@ class ir_http(orm.AbstractModel): if self.geo_ip_resolver and request.httprequest.remote_addr: record = self.geo_ip_resolver.record_by_addr(request.httprequest.remote_addr) or {} request.session['geoip'] = record - + if request.website_enabled: if func: self._authenticate(func.routing['auth']) diff --git a/addons/website_crm/controllers/main.py b/addons/website_crm/controllers/main.py index 9b47140b9e3..ce9ea9bb675 100644 --- a/addons/website_crm/controllers/main.py +++ b/addons/website_crm/controllers/main.py @@ -62,7 +62,7 @@ class contactus(http.Controller): return request.website.render("website.contactus", values) try: - values['channel_id'] = request.registry['ir.model.data'].get_object_reference(request.cr, SUPERUSER_ID, 'crm', 'crm_case_channel_website')[1] + values['medium_id'] = request.registry['ir.model.data'].get_object_reference(request.cr, SUPERUSER_ID, 'crm', 'crm_tracking_medium_website')[1] values['section_id'] = request.registry['ir.model.data'].xmlid_to_res_id(request.cr, SUPERUSER_ID, 'website.salesteam_website_sales') except ValueError: pass |
