diff --git a/addons/crm/crm.py b/addons/crm/crm.py index d0abc98e518..d19a8b61e00 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -44,6 +44,18 @@ AVAILABLE_PRIORITIES = [ ('5', 'Lowest'), ] +class crm_case_channel(osv.osv): + _name = "crm.case.channel" + _description = "Channels" + _order = 'name' + _columns = { + 'name': fields.char('Channel Name', size=64, required=True), + 'active': fields.boolean('Active'), + } + _defaults = { + 'active': lambda *a: 1, + } + class crm_case_stage(osv.osv): """ Stage of case """ diff --git a/addons/crm/crm_data.xml b/addons/crm/crm_data.xml index e494db325e5..bab3e4bca5f 100644 --- a/addons/crm/crm_data.xml +++ b/addons/crm/crm_data.xml @@ -1,6 +1,18 @@ + + website + + + phone + + + direct + + + e-mail + Sales Department Sales diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index b08006578db..fae37ed54a4 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -142,7 +142,7 @@ class crm_lead(crm_case, osv.osv): domain="['|',('section_id','=',section_id),('section_id','=',False), ('object_id.model', '=', 'crm.lead')]"), '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('res.partner.canal', 'Channel', help="From which channel (mail, direct, phone, ...) did this contact reach you?"), + '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 that will be created while converting the into opportunity', select=1), 'optin': fields.boolean('Opt-In', help="If opt-in is checked, this contact has accepted to receive emails."), diff --git a/addons/crm/crm_phonecall.py b/addons/crm/crm_phonecall.py index ecae065beac..06c90417725 100644 --- a/addons/crm/crm_phonecall.py +++ b/addons/crm/crm_phonecall.py @@ -71,11 +71,6 @@ class crm_phonecall(crm_base, osv.osv): type="char", string="Contact", size=128), 'partner_mobile': fields.char('Mobile', size=32), 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'), - 'canal_id': fields.many2one('res.partner.canal', 'Channel', \ - help="The channels represent the different communication\ - modes available with the customer." \ - " With each commercial opportunity, you can indicate\ - the canall which is this opportunity source."), 'date_closed': fields.datetime('Closed', readonly=True), 'date': fields.datetime('Date'), 'opportunity_id': fields.many2one ('crm.lead', 'Lead/Opportunity'), diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml index 31105ffcbc8..d5c199087bf 100644 --- a/addons/crm/crm_view.xml +++ b/addons/crm/crm_view.xml @@ -7,7 +7,7 @@ - + @@ -21,6 +21,39 @@ parent="base.menu_base_partner" sequence="11" /> + + + crm.case.channel.tree + crm.case.channel + tree + + + + + + + + + crm.case.channel.form + crm.case.channel + form + +
+ + + + +
+ + Channels + crm.case.channel + form + tree,form + Track from where is coming your leads and opportunities by creating specific channels that will be maintained at the creation of a document in the system. Some examples of channels can be: Website, Phone Call, Reseller, etc. + + + + diff --git a/addons/crm/report/crm_lead_report.py b/addons/crm/report/crm_lead_report.py index 51f1eb5d96e..bd61e1ee80d 100644 --- a/addons/crm/report/crm_lead_report.py +++ b/addons/crm/report/crm_lead_report.py @@ -57,7 +57,7 @@ class crm_lead_report(osv.osv): 'user_id':fields.many2one('res.users', 'User', 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('res.partner.canal', 'Channel', readonly=True), + 'channel_id':fields.many2one('crm.case.channel', 'Channel', readonly=True), 'type_id':fields.many2one('crm.case.resource.type', 'Campaign', readonly=True), 'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True), 'creation_month':fields.selection(MONTHS, 'Creation Date', readonly=True), diff --git a/addons/crm/security/ir.model.access.csv b/addons/crm/security/ir.model.access.csv index 4aa68a6625c..6f7b3066d7a 100644 --- a/addons/crm/security/ir.model.access.csv +++ b/addons/crm/security/ir.model.access.csv @@ -3,6 +3,8 @@ "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_case_section","crm.case.section","model_crm_case_section","base.group_sale_salesman",1,1,1,0 "access_crm_case_categ","crm.case.categ","model_crm_case_categ","base.group_sale_salesman",1,1,1,0 "access_crm_meeting_manager","crm.meeting.manager","model_crm_meeting","base.group_sale_manager",1,1,1,1 @@ -41,7 +43,6 @@ "access_crm_lead_report_user","crm.lead.report user","model_crm_lead_report","base.group_sale_salesman",1,1,1,1 "access_res_partner_bank_type_crm_user","res.partner.bank.type.crm.user","base.model_res_partner_bank_type","base.group_sale_salesman",1,0,0,0 "access_res_partner_bank_type_crm_manager","res.partner.bank.type.crm.manager","base.model_res_partner_bank_type","base.group_sale_manager",1,0,0,0 -"access_res_partner_canal_manager","res.partner.canal.manager","base.model_res_partner_canal","base.group_sale_manager",1,1,1,1 "access_crm_lead_partner_manager","crm.lead.partner.manager","model_crm_lead","base.group_partner_manager",1,1,1,1 "access_crm_phonecall_partner_manager","crm.phonecall.partner.manager","model_crm_phonecall","base.group_partner_manager",1,1,1,1 "access_crm_meeting_partner_manager","crm.meeting.partner.manager","model_crm_meeting","base.group_partner_manager",1,1,1,1 diff --git a/addons/crm_fundraising/crm_fundraising.py b/addons/crm_fundraising/crm_fundraising.py index e2b0bb566fd..01234dbf436 100644 --- a/addons/crm_fundraising/crm_fundraising.py +++ b/addons/crm_fundraising/crm_fundraising.py @@ -67,9 +67,6 @@ class crm_fundraising(crm.crm_case, osv.osv): 'duration': fields.float('Duration'), 'ref': fields.reference('Reference', selection=crm._links_get, size=128), 'ref2': fields.reference('Reference 2', selection=crm._links_get, size=128), - 'canal_id': fields.many2one('res.partner.canal', 'Channel', \ - help="The channels represent the different communication \ - modes available with the customer."), 'state': fields.selection(crm.AVAILABLE_STATES, 'State', size=16, readonly=True, help='The state is set to \'Draft\', when a case is created.\ \nIf the case is in progress the state is set to \'Open\'.\ diff --git a/addons/crm_fundraising/crm_fundraising_view.xml b/addons/crm_fundraising/crm_fundraising_view.xml index 9dddc31bd6c..c98a06eda46 100644 --- a/addons/crm_fundraising/crm_fundraising_view.xml +++ b/addons/crm_fundraising/crm_fundraising_view.xml @@ -190,7 +190,6 @@ - diff --git a/addons/crm_helpdesk/crm_helpdesk.py b/addons/crm_helpdesk/crm_helpdesk.py index 5d02ec12369..b27fa04a2af 100644 --- a/addons/crm_helpdesk/crm_helpdesk.py +++ b/addons/crm_helpdesk/crm_helpdesk.py @@ -63,9 +63,7 @@ class crm_helpdesk(crm.crm_case, osv.osv): 'date': fields.datetime('Date'), 'ref' : fields.reference('Reference', selection=crm._links_get, size=128), 'ref2' : fields.reference('Reference 2', selection=crm._links_get, size=128), - 'canal_id': fields.many2one('res.partner.canal', 'Channel', \ - help="The channels represent the different communication \ - modes available with the customer."), + 'channel_id': fields.many2one('crm.case.channel', 'Channel', help="Communication channel."), 'planned_revenue': fields.float('Planned Revenue'), 'planned_cost': fields.float('Planned Costs'), 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'), diff --git a/addons/crm_helpdesk/crm_helpdesk_demo.xml b/addons/crm_helpdesk/crm_helpdesk_demo.xml index f48af6b5de3..a7f36c931c9 100644 --- a/addons/crm_helpdesk/crm_helpdesk_demo.xml +++ b/addons/crm_helpdesk/crm_helpdesk_demo.xml @@ -2,7 +2,6 @@ - @@ -15,7 +14,6 @@ - @@ -28,7 +26,6 @@ - @@ -41,7 +38,6 @@ - @@ -54,4 +50,4 @@ - \ No newline at end of file +
diff --git a/addons/crm_helpdesk/crm_helpdesk_view.xml b/addons/crm_helpdesk/crm_helpdesk_view.xml index e0ca162286f..af893a3f40f 100644 --- a/addons/crm_helpdesk/crm_helpdesk_view.xml +++ b/addons/crm_helpdesk/crm_helpdesk_view.xml @@ -62,7 +62,7 @@ - + diff --git a/addons/crm_helpdesk/report/crm_helpdesk_report.py b/addons/crm_helpdesk/report/crm_helpdesk_report.py index 0d1d97c6905..7b70b77d5d1 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'), - 'canal_id': fields.many2one('res.partner.canal', 'Channel'), + 'channel_id': fields.many2one('crm.case.channel', 'Channel'), 'categ_id': fields.many2one('crm.case.categ', 'Category', \ domain="[('section_id','=',section_id),\ ('object_id.model', '=', 'crm.helpdesk')]"), @@ -93,7 +93,7 @@ class crm_helpdesk_report(osv.osv): c.priority, c.date_deadline, c.categ_id, - c.canal_id, + c.channel_id, c.planned_cost, count(*) as nbr, extract('epoch' from (c.date_closed-c.create_date))/(3600*24) as delay_close, @@ -104,7 +104,7 @@ class crm_helpdesk_report(osv.osv): group by to_char(c.date, 'YYYY'), to_char(c.date, 'MM'),to_char(c.date, 'YYYY-MM-DD'),\ c.state, c.user_id,c.section_id,c.priority,\ c.partner_id,c.company_id,c.date_deadline,c.create_date,c.date,c.date_closed,\ - c.categ_id,c.canal_id,c.planned_cost,c.id + c.categ_id,c.channel_id,c.planned_cost,c.id )""") crm_helpdesk_report() diff --git a/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml index d54b719fe2b..e954c790582 100644 --- a/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml +++ b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml @@ -25,7 +25,7 @@ - + @@ -106,9 +106,7 @@ domain="[]" context="{'group_by':'partner_id'}" /> - + diff --git a/addons/hr_recruitment/hr_recruitment_demo.xml b/addons/hr_recruitment/hr_recruitment_demo.xml index 20a4fa0e17a..b2d029f74d4 100644 --- a/addons/hr_recruitment/hr_recruitment_demo.xml +++ b/addons/hr_recruitment/hr_recruitment_demo.xml @@ -25,7 +25,6 @@ - @@ -45,7 +44,6 @@ - @@ -115,7 +113,6 @@ - @@ -136,7 +133,6 @@ - diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index 2217bade5fa..ea974eea7d4 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -206,8 +206,7 @@ class project_issue(crm.crm_case, osv.osv): # Project Issue fields 'date_closed': fields.datetime('Closed', readonly=True,select=True), 'date': fields.datetime('Date'), - 'canal_id': fields.many2one('res.partner.canal', 'Channel', help="The channels represent the different communication modes available with the customer." \ - " With each commercial opportunity, you can indicate the canall which is this opportunity source."), + 'channel_id': fields.many2one('crm.case.channel', 'Channel', help="Communication channel."), 'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('object_id.model', '=', 'crm.project.bug')]"), 'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'), 'version_id': fields.many2one('project.issue.version', 'Version'), diff --git a/addons/project_issue/project_issue_demo.xml b/addons/project_issue/project_issue_demo.xml index 539cef5579e..12ff265b1e9 100644 --- a/addons/project_issue/project_issue_demo.xml +++ b/addons/project_issue/project_issue_demo.xml @@ -198,7 +198,6 @@ - diff --git a/addons/project_issue/report/project_issue_report.py b/addons/project_issue/report/project_issue_report.py index 29542f32912..5eae252f446 100644 --- a/addons/project_issue/report/project_issue_report.py +++ b/addons/project_issue/report/project_issue_report.py @@ -66,7 +66,7 @@ class project_issue_report(osv.osv): 'version_id': fields.many2one('project.issue.version', 'Version'), 'assigned_to' : fields.many2one('res.users', 'Assigned to',readonly=True), 'partner_id': fields.many2one('res.partner','Partner',domain="[('object_id.model', '=', 'project.issue')]"), - 'canal_id': fields.many2one('res.partner.canal', 'Channel',readonly=True), + 'channel_id': fields.many2one('crm.case.channel', 'Channel',readonly=True), 'task_id': fields.many2one('project.task', 'Task',domain="[('object_id.model', '=', 'project.issue')]" ), 'email': fields.integer('# Emails', size=128, readonly=True), } @@ -97,7 +97,7 @@ class project_issue_report(osv.osv): 1 as nbr, c.assigned_to, c.partner_id, - c.canal_id, + c.channel_id, c.task_id, date_trunc('day',c.create_date) as create_date, extract('epoch' from (c.date_open-c.create_date))/(3600*24) as delay_open, diff --git a/addons/project_issue/report/project_issue_report_view.xml b/addons/project_issue/report/project_issue_report_view.xml index 015a7750548..4808ff29f81 100644 --- a/addons/project_issue/report/project_issue_report_view.xml +++ b/addons/project_issue/report/project_issue_report_view.xml @@ -18,7 +18,7 @@ - + diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 17d2c636e12..2fe965002c6 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -794,7 +794,6 @@ class sale_order(osv.osv): 'document': '', 'partner_id': part, 'date': time.strftime('%Y-%m-%d'), - 'canal_id': False, 'user_id': uid, 'partner_type': partnertype, 'probability': 1.0,