[REF] crm: finalize multi sales-team and auto assign integration

GLOBAL PURPOSE

Ability to have salesmen belonging to several sales team is a core requirement
of CRM. It is therefore moved from website_crm_score to crm along with cleaning
and behavior improvement. Automatic lead assignment is also moved and cleaned.

SPECIFICATIONS

Make final integration of members management by taking into consideration
both multi-membership and automatic lead assignment features.

Correctly hide assignment options and fields if auto assign is not activated.
This means that

  * when being in mono membership mode without automatic assign: display
    users on team form view;
  * when being in multi membership mode or with automatic assign: display
    members o2m records, as configuration is done on this model;
  * hide the whole right column in sales team form view about assignment when
    assignment is not activated in settings;

LINKS

Task ID-2086889 (main task)
Task ID-2357969 (scoring migration task)
Community PR odoo/odoo#48422
Enterprise PR odoo/enterprise#499
Upgrade PR odoo/upgrade#996
This commit is contained in:
Thibault Delavallée
2021-01-21 11:07:26 +00:00
parent ed40fcd48c
commit adbf69680a
4 changed files with 25 additions and 9 deletions
+1
View File
@@ -19,6 +19,7 @@ class Team(models.Model):
_inherit = 'crm.team.member'
# assignment
assignment_enabled = fields.Boolean(related="crm_team_id.assignment_enabled")
assignment_domain = fields.Char('Assignment Domain', tracking=True)
assignment_max = fields.Integer('Max Leads (last 30 days)')
lead_month_count = fields.Integer(
+6 -2
View File
@@ -7,6 +7,7 @@
<field name="inherit_id" ref="sales_team.crm_team_member_view_tree"/>
<field name="arch" type="xml">
<field name="user_id" position="after">
<field name="assignment_enabled" invisible="1"/>
<field name="assignment_max"/>
<field name="lead_month_count"/>
</field>
@@ -19,7 +20,9 @@
<field name="inherit_id" ref="sales_team.crm_team_member_view_kanban"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('oe_kanban_details')]" position="after">
<div class="o_member_assignment">
<field name="assignment_enabled" invisible="1"/>
<div class="o_member_assignment"
attrs="{'invisible': [('assignment_enabled', '=', False)]}">
<field name="assignment_max" invisible="1"/>
<field name="lead_month_count" widget="gauge"
options="{'max_field': 'assignment_max'}"/>
@@ -34,7 +37,8 @@
<field name="inherit_id" ref="sales_team.crm_team_member_view_form"/>
<field name="arch" type="xml">
<xpath expr="//group[@name='member_partner_info']" position="after">
<group name="group_assign">
<group name="group_assign" attrs="{'invisible': [('assignment_enabled', '=', False)]}">
<field name="assignment_enabled" invisible="1"/>
<label for="lead_month_count"/>
<div>
<field name="lead_month_count" class="oe_inline"/>
+16 -4
View File
@@ -111,7 +111,8 @@
<button name="action_assign_leads" type="object"
string="Assign Leads"
class="oe_highlight"
confirm="This will assign leads to all members. Do you want to proceed?"/>
confirm="This will assign leads to all members. Do you want to proceed?"
attrs="{'invisible': [('assignment_enabled', '=', False)]}"/>
</header>
</xpath>
<xpath expr="//div[@name='options_active']" position="inside">
@@ -147,16 +148,27 @@
</xpath>
<xpath expr="//group[@name='right']" position="attributes">
<attribute name="string">Assignment Rules</attribute>
<attribute name="attrs">{'invisible': [('assignment_enabled', '=', False)]}</attribute>
</xpath>
<xpath expr="//group[@name='right']" position="inside">
<field name="assignment_enabled" invisible="1"/>
<field name="assignment_auto_enabled" invisible="1"/>
<field name="assignment_domain" widget="domain" string="Domain"
options="{'model': 'crm.lead', 'in_dialog': True}"/>
<label for="lead_all_assigned_month_count" string="Assigned Leads Count"/>
<div>
options="{'model': 'crm.lead', 'in_dialog': True}"
attrs="{'invisible': [('assignment_enabled', '=', False)]}"/>
<label for="lead_all_assigned_month_count" string="Assigned Leads Count"
attrs="{'invisible': [('assignment_enabled', '=', False)]}"/>
<div attrs="{'invisible': [('assignment_enabled', '=', False)]}">
<field name="lead_all_assigned_month_count" class="oe_inline"/> /
<field name="assignment_max" class="oe_inline"/>
</div>
</xpath>
<xpath expr="//field[@name='member_ids']" position="attributes">
<attribute name="attrs">{'invisible': [('assignment_enabled', '=', True)]}</attribute>
</xpath>
<xpath expr="//field[@name='crm_team_member_ids']" position="attributes">
<attribute name="attrs">{'invisible': [('assignment_enabled', '=', False)]}</attribute>
</xpath>
</field>
</record>
+2 -3
View File
@@ -53,8 +53,7 @@
<notebook>
<page string="Members" name="members_users">
<field name="member_ids" mode="kanban"
class="w-100"
attrs="{'invisible': [('is_membership_multi', '=', True)]}">
class="w-100">
<kanban>
<field name="id"/>
<field name="name"/>
@@ -82,7 +81,7 @@
</field>
<field name="crm_team_member_ids" mode="kanban"
class="w-100"
attrs="{'invisible': [('is_membership_multi', '=', False)]}"
attrs="{'invisible': ['|', ('is_membership_multi', '=', True), ('is_membership_multi', '=', False)]}"
context="{
'kanban_view_ref': 'sales_team.crm_team_member_view_kanban_from_team',
'form_view_ref': 'sales_team.crm_team_member_view_form_from_team',