[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:
@@ -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
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user