From e28d3aa4d3851d72deba08c236072d002f83216a Mon Sep 17 00:00:00 2001 From: Hiral Bhavsar Date: Thu, 28 Mar 2019 10:50:28 +0000 Subject: [PATCH] [IMP] crm: merge lead and opportunity form views When redirecting to record, the wrong 'form' view will sometimes be loaded. A 'hack' has been done in crm_lead.py to redirect the user to the relevant 'form' view based on the value of the 'type' field. However, this solution is not clean as it does not solve all cases (multiple crm.lead records loaded from the activity systray, reloading the page after redirection, etc.) Goal of this task is to solve those issues by merging crm.lead.form.lead and crm.lead.form.opportunity form views. That way multi records actions will always display the relevant information according to record type. Note: Here some fields used as a twice in the form view just to stay close to the current design. Still few things which are not possible here for 'lead' and 'opportunity', that is * A dynamic 'placeholder' on 'name' field. * A 'domain' on 'partner_id' field. * A 'widget' on 'probability' field. Task 47118 closes odoo/odoo#32248 Signed-off-by: Thibault Delavallee (tde) --- addons/crm/models/crm_lead.py | 48 +- .../report/crm_opportunity_report_views.xml | 3 +- addons/crm/static/src/js/tours/crm.js | 4 +- addons/crm/views/crm_lead_views.xml | 597 ++++++++---------- addons/crm/views/crm_team_views.xml | 11 +- addons/crm/views/res_partner_views.xml | 7 - addons/crm/wizard/crm_lead_to_opportunity.py | 2 +- addons/crm/wizard/crm_merge_opportunities.py | 7 +- .../views/crm_lead_view.xml | 28 +- addons/sale_crm/views/crm_lead_views.xml | 8 +- .../views/crm_lead_views.xml | 38 +- 11 files changed, 288 insertions(+), 465 deletions(-) diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index 993240ebadf..bc565509142 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -965,48 +965,17 @@ class Lead(models.Model): lead.write(value) return True - def redirect_opportunity_view(self): + def redirect_lead_opportunity_view(self): self.ensure_one() - # Get opportunity views - form_view = self.env.ref('crm.crm_case_form_view_oppor') - tree_view = self.env.ref('crm.crm_case_tree_view_oppor') return { - 'name': _('Opportunity'), - 'view_mode': 'tree, form', + 'name': _('Lead or Opportunity'), + 'view_mode': 'form', 'res_model': 'crm.lead', - 'domain': [('type', '=', 'opportunity')], + 'domain': [('type', '=', self.type)], 'res_id': self.id, 'view_id': False, - 'views': [ - (form_view.id, 'form'), - (tree_view.id, 'tree'), - (False, 'kanban'), - (False, 'calendar'), - (False, 'graph') - ], - 'type': 'ir.actions.act_window', - 'context': {'default_type': 'opportunity'} - } - - def redirect_lead_view(self): - self.ensure_one() - # Get lead views - form_view = self.env.ref('crm.crm_case_form_view_leads') - tree_view = self.env.ref('crm.crm_case_tree_view_leads') - return { - 'name': _('Lead'), - 'view_mode': 'tree, form', - 'res_model': 'crm.lead', - 'domain': [('type', '=', 'lead')], - 'res_id': self.id, - 'view_id': False, - 'views': [ - (form_view.id, 'form'), - (tree_view.id, 'tree'), - (False, 'calendar'), - (False, 'graph') - ], 'type': 'ir.actions.act_window', + 'context': {'default_type': self.type} } @api.model @@ -1221,13 +1190,6 @@ class Lead(models.Model): res.update(super(Lead, leftover)._notify_get_reply_to(default=default, records=None, company=company, doc_names=doc_names)) return res - def get_formview_id(self, access_uid=None): - if self.type == 'opportunity': - view_id = self.env.ref('crm.crm_case_form_view_oppor').id - else: - view_id = super(Lead, self).get_formview_id() - return view_id - def _message_get_default_recipients(self): return {r.id: { 'partner_ids': [], diff --git a/addons/crm/report/crm_opportunity_report_views.xml b/addons/crm/report/crm_opportunity_report_views.xml index c40cde976e2..cf6eec4bfc7 100644 --- a/addons/crm/report/crm_opportunity_report_views.xml +++ b/addons/crm/report/crm_opportunity_report_views.xml @@ -115,8 +115,7 @@ eval="[(5, 0, 0), (0, 0, {'view_mode': 'graph', 'view_id': ref('crm_opportunity_report_view_graph')}), (0, 0, {'view_mode': 'pivot', 'view_id': ref('crm_opportunity_report_view_pivot')}), - (0, 0, {'view_mode': 'tree', 'view_id': ref('crm_case_tree_view_oppor')}), - (0, 0, {'view_mode': 'form', 'view_id': ref('crm_case_form_view_oppor')})]"/> + (0, 0, {'view_mode': 'tree', 'view_id': ref('crm_case_tree_view_oppor')})]"/> Pipeline Analysis gives you an instant access to your opportunities with information such as the expected revenue, planned cost, missed deadlines or the number of interactions per opportunity. This report is diff --git a/addons/crm/static/src/js/tours/crm.js b/addons/crm/static/src/js/tours/crm.js index bb50f174c8b..57f7b1d0df6 100644 --- a/addons/crm/static/src/js/tours/crm.js +++ b/addons/crm/static/src/js/tours/crm.js @@ -63,12 +63,12 @@ tour.register('crm_tour', { actions.auto(".o_kanban_record .oe_kanban_action[data-type=edit]"); }, }, { - trigger: ".o_opportunity_form .o_chatter_button_new_message", + trigger: ".o_lead_opportunity_form .o_chatter_button_new_message", content: _t('

Send messages to your prospect and get replies automatically attached to this opportunity.

Type \'@\' to mention people - it\'s like cc-ing on emails.

'), position: "bottom" }, { trigger: ".breadcrumb-item:not(.active):last", - extra_trigger: '.o_opportunity_form', + extra_trigger: '.o_lead_opportunity_form', content: _t("Use the breadcrumbs to go back to your sales pipeline."), position: "bottom" }, tour.STEPS.TOGGLE_HOME_MENU, tour.STEPS.SHOW_APPS_MENU_ITEM, { diff --git a/addons/crm/views/crm_lead_views.xml b/addons/crm/views/crm_lead_views.xml index 6df93d9d742..135fa611402 100644 --- a/addons/crm/views/crm_lead_views.xml +++ b/addons/crm/views/crm_lead_views.xml @@ -38,6 +38,265 @@
+ + crm.lead.form + crm.lead + +
+
+
+ + +
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ +
+
+ @@ -48,136 +307,6 @@ view_mode="tree,form,calendar" context="{'default_duration': 4.0, 'default_opportunity_id': active_id}"/> - - crm.lead.form.lead - crm.lead - -
-
-
- - -
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - - crm.lead.tree.lead crm.lead @@ -442,200 +571,6 @@ - - crm.lead.form.opportunity - crm.lead - 20 - -
-
-
- - -
- -
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - -
-
-
-
crm.lead.tree.opportunity @@ -982,13 +917,6 @@ if record: - - - form - - - - graph @@ -1057,13 +985,6 @@ if record: - - - form - - - - graph diff --git a/addons/crm/views/crm_team_views.xml b/addons/crm/views/crm_team_views.xml index 85fab9cba20..b006730c669 100644 --- a/addons/crm/views/crm_team_views.xml +++ b/addons/crm/views/crm_team_views.xml @@ -91,7 +91,7 @@ crm.lead graph,pivot,tree,form - {'search_default_team_id': [active_id], 'form_view_ref': 'crm.crm_case_form_view_oppor', 'tree_view_ref': 'crm.crm_case_tree_view_oppor','search_default_opportunity': True, 'time_ranges': {'field':'create_date', 'range':'last_365_days'}} + {'search_default_team_id': [active_id], 'tree_view_ref': 'crm.crm_case_tree_view_oppor','search_default_opportunity': True, 'time_ranges': {'field':'create_date', 'range':'last_365_days'}} [] Opportunities Analysis gives you an instant access to your opportunities with information such as the expected revenue, planned cost, missed deadlines or the number of interactions per opportunity. This report is mainly used by the sales manager in order to do the periodic review with the channels of the sales pipeline. @@ -149,13 +149,6 @@
- - - form - - - - Cases by Sales Team crm.team @@ -167,7 +160,7 @@ crm.lead ir.actions.act_window form - + [('type','=','opportunity')] { 'search_default_team_id': [active_id], diff --git a/addons/crm/views/res_partner_views.xml b/addons/crm/views/res_partner_views.xml index 1ddb0e514b4..cd8198384a4 100644 --- a/addons/crm/views/res_partner_views.xml +++ b/addons/crm/views/res_partner_views.xml @@ -41,13 +41,6 @@ - - - form - - - - res.partner.kanban.inherit diff --git a/addons/crm/wizard/crm_lead_to_opportunity.py b/addons/crm/wizard/crm_lead_to_opportunity.py index e1bcdc648f5..a0a0874367d 100644 --- a/addons/crm/wizard/crm_lead_to_opportunity.py +++ b/addons/crm/wizard/crm_lead_to_opportunity.py @@ -136,7 +136,7 @@ class Lead2OpportunityPartner(models.TransientModel): values.update({'lead_ids': leads.ids, 'user_ids': [self.user_id.id]}) self._convert_opportunity(values) - return leads[0].redirect_opportunity_view() + return leads[0].redirect_lead_opportunity_view() def _create_partner(self, lead_id, action, partner_id): """ Create partner based on action. diff --git a/addons/crm/wizard/crm_merge_opportunities.py b/addons/crm/wizard/crm_merge_opportunities.py index dda66e72726..3693df8c0e4 100644 --- a/addons/crm/wizard/crm_merge_opportunities.py +++ b/addons/crm/wizard/crm_merge_opportunities.py @@ -39,12 +39,7 @@ class MergeOpportunity(models.TransientModel): def action_merge(self): self.ensure_one() merge_opportunity = self.opportunity_ids.merge_opportunity(self.user_id.id, self.team_id.id) - - # The newly created lead might be a lead or an opp: redirect toward the right view - if merge_opportunity.type == 'opportunity': - return merge_opportunity.redirect_opportunity_view() - else: - return merge_opportunity.redirect_lead_view() + return merge_opportunity.redirect_lead_opportunity_view() @api.onchange('user_id') def _onchange_user(self): diff --git a/addons/crm_iap_lead_website/views/crm_lead_view.xml b/addons/crm_iap_lead_website/views/crm_lead_view.xml index dceca922350..f63d55f8a47 100644 --- a/addons/crm_iap_lead_website/views/crm_lead_view.xml +++ b/addons/crm_iap_lead_website/views/crm_lead_view.xml @@ -1,11 +1,18 @@ - - crm.lead.form + + crm.lead.inherited.crm crm.lead - + + + + + + + + @@ -15,19 +22,4 @@ - - - crm.lead.opportunity.inherited.crm - crm.lead - - - - - - - - - - - diff --git a/addons/sale_crm/views/crm_lead_views.xml b/addons/sale_crm/views/crm_lead_views.xml index 0544fd481a8..a1efb360f44 100644 --- a/addons/sale_crm/views/crm_lead_views.xml +++ b/addons/sale_crm/views/crm_lead_views.xml @@ -4,18 +4,18 @@ crm.lead.oppor.inherited.crm crm.lead - + -