[IMP] Crm: Add tracking mixin to manage utm campaign and add this mixin to mass_mailing, crm_lead and sale_order
This commit is contained in:
parent
9ccdbcaca3
commit
faba7cd5aa
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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"/>
|
||||
|
||||
|
|
|
@ -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()
|
|
@ -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,
|
||||
|
|
|
@ -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/>
|
||||
|
|
|
@ -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
|
|
|
@ -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>
|
||||
|
|
|
@ -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'),
|
||||
|
|
|
@ -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')]"),
|
||||
|
|
|
@ -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
|
|
@ -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,
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
from openerp.osv import osv
|
||||
|
||||
|
||||
class MassMailing(osv.Model):
|
||||
_name = 'mail.mass_mailing'
|
||||
_inherit = ['mail.mass_mailing', 'crm.tracking.mixin']
|
|
@ -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>
|
||||
|
|
@ -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=""/>
|
||||
|
|
|
@ -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" />
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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'}")
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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'])
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue