[IMP] crm: allow team members to opt-out from assign

Purpose is to allow members to quickly opt-out / opt-in from assign
process. For example if for some reason (leaves, too much leads, temporarily
working on something else) a salesperson cannot handle more leads he may
opt-out from assign process.

When member is opt-out, hide assign details from both kanban and form
views. It allows notably to see at a glance who is out and who is in.

Task ID-2494749
COM PR odoo/odoo#68476
UPG PR odoo/upgrade#2318

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
This commit is contained in:
Thibault Delavallée
2021-03-30 14:41:16 +00:00
parent 5291db731f
commit 389d74fab3
2 changed files with 9 additions and 5 deletions
+2 -1
View File
@@ -21,6 +21,7 @@ class Team(models.Model):
# assignment
assignment_enabled = fields.Boolean(related="crm_team_id.assignment_enabled")
assignment_domain = fields.Char('Assignment Domain', tracking=True)
assignment_optout = fields.Boolean('Skip auto assignment')
assignment_max = fields.Integer('Max Leads (last 30 days)', default=30)
lead_month_count = fields.Integer(
'Leads (30 days)', compute='_compute_lead_month_count',
@@ -122,7 +123,7 @@ class Team(models.Model):
assign_ratio = work_days / 30.0
members_data, population, weights = dict(), list(), list()
members = self.filtered(lambda member: member.assignment_max > member.lead_month_count)
members = self.filtered(lambda member: not member.assignment_optout and member.assignment_max > member.lead_month_count)
if not members:
return members_data
+7 -4
View File
@@ -8,6 +8,7 @@
<field name="arch" type="xml">
<field name="user_id" position="after">
<field name="assignment_enabled" invisible="1"/>
<field name="assignment_optout"/>
<field name="assignment_max"/>
<field name="lead_month_count"/>
</field>
@@ -21,8 +22,9 @@
<field name="arch" type="xml">
<xpath expr="//div[hasclass('oe_kanban_details')]" position="after">
<field name="assignment_enabled" invisible="1"/>
<field name="assignment_optout" invisible="1"/>
<div class="o_member_assignment"
attrs="{'invisible': [('assignment_enabled', '=', False)]}">
attrs="{'invisible': ['|', ('assignment_enabled', '=', False), ('assignment_optout', '=', True)]}">
<field name="assignment_max" invisible="1"/>
<field name="lead_month_count" widget="gauge"
options="{'max_field': 'assignment_max'}"
@@ -40,8 +42,9 @@
<xpath expr="//group[@name='member_partner_info']" position="after">
<group name="group_assign" attrs="{'invisible': [('assignment_enabled', '=', False)]}">
<field name="assignment_enabled" invisible="1"/>
<label for="lead_month_count"/>
<div>
<field name="assignment_optout"/>
<label for="lead_month_count" attrs="{'invisible': [('assignment_optout', '=', True)]}"/>
<div attrs="{'invisible': [('assignment_optout', '=', True)]}">
<field name="lead_month_count" class="oe_inline"/>
<span class="oe_inline"> / </span>
<field name="assignment_max" class="oe_inline"/>
@@ -49,7 +52,7 @@
</div>
<field name="assignment_domain" string="Domain" widget="domain"
options="{'model': 'crm.lead'}"
attrs="{'invisible': [('assignment_max', '=', 0)]}"/>
attrs="{'invisible': ['|', ('assignment_max', '=', 0), ('assignment_optout', '=', True)]}"/>
</group>
</xpath>
</field>