summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/crm/models/crm_lead.py1
-rw-r--r--addons/crm/static/tests/tours/crm_rainbowman.js22
-rw-r--r--addons/crm/tests/test_crm_ui.py14
-rw-r--r--odoo/addons/base/models/ir_actions.py7
4 files changed, 37 insertions, 7 deletions
diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py
index 8a8b618edf6..c07b27c8c3e 100644
--- a/addons/crm/models/crm_lead.py
+++ b/addons/crm/models/crm_lead.py
@@ -771,6 +771,7 @@ class Lead(models.Model):
def _get_rainbowman_message(self):
message = False
if self.user_id and self.team_id and self.expected_revenue:
+ self.flush() # flush fields to make sure DB is up to date
query = """
SELECT
SUM(CASE WHEN user_id = %(user_id)s THEN 1 ELSE 0 END) as total_won,
diff --git a/addons/crm/static/tests/tours/crm_rainbowman.js b/addons/crm/static/tests/tours/crm_rainbowman.js
index 67c488b816e..9d71d92229e 100644
--- a/addons/crm/static/tests/tours/crm_rainbowman.js
+++ b/addons/crm/static/tests/tours/crm_rainbowman.js
@@ -19,8 +19,8 @@ odoo.define('crm.tour_crm_rainbowman', function (require) {
content: "complete name",
run: "text Test Lead 1",
}, {
- trigger: "div[name=planned_revenue] > input",
- content: "complete planned revenue",
+ trigger: "div[name=expected_revenue] > input",
+ content: "complete expected revenue",
run: "text 999999997",
}, {
trigger: "button.o_kanban_add",
@@ -30,23 +30,31 @@ odoo.define('crm.tour_crm_rainbowman', function (require) {
content: "move to won stage",
run: "drag_and_drop .o_opportunity_kanban .o_kanban_group:eq(3) "
}, {
- trigger: ".o-kanban-button-new",
+ trigger: ".o_reward_rainbow",
extra_trigger: ".o_reward_rainbow",
- content: "click create",
+ run: function () {} // check rainbowman is properly displayed
+ }, {
+ trigger: ".o-kanban-button-new",
+ content: "create second lead",
}, {
trigger: "input[name=name]",
content: "complete name",
run: "text Test Lead 2",
}, {
- trigger: "div[name=planned_revenue] > input",
- content: "complete planned revenue",
+ trigger: "div[name=expected_revenue] > input",
+ content: "complete expected revenue",
run: "text 999999998",
}, {
trigger: "button.o_kanban_add",
content: "create lead",
}, {
+ // move first test back to new stage to be able to test rainbowman a second time
+ trigger: ".o_kanban_record .o_kanban_record_title:contains('Test Lead 1')",
+ content: "move back to new stage",
+ run: "drag_and_drop .o_opportunity_kanban .o_kanban_group:eq(0) "
+ }, {
trigger: ".o_kanban_record .o_kanban_record_title:contains('Test Lead 2')",
- content: "click on lead",
+ content: "click on second lead",
}, {
trigger: ".o_statusbar_status button[data-value='4']",
content: "move lead to won stage",
diff --git a/addons/crm/tests/test_crm_ui.py b/addons/crm/tests/test_crm_ui.py
index 7916662b0b0..116163f28ac 100644
--- a/addons/crm/tests/test_crm_ui.py
+++ b/addons/crm/tests/test_crm_ui.py
@@ -8,3 +8,17 @@ class TestUi(odoo.tests.HttpCase):
def test_01_crm_tour(self):
self.start_tour("/web", 'crm_tour', login="admin")
+
+ def test_02_crm_tour_rainbowman(self):
+ # we create a new user to make sure he gets the 'Congrats on your first deal!'
+ # rainbowman message.
+ self.env['res.users'].create({
+ 'name': 'Temporary CRM User',
+ 'login': 'temp_crm_user',
+ 'password': 'temp_crm_user',
+ 'groups_id': [(6, 0, [
+ self.ref('base.group_user'),
+ self.ref('sales_team.group_sale_salesman')
+ ])]
+ })
+ self.start_tour("/web", 'crm_rainbowman', login="temp_crm_user")
diff --git a/odoo/addons/base/models/ir_actions.py b/odoo/addons/base/models/ir_actions.py
index 2cbd196debf..caba0b44a88 100644
--- a/odoo/addons/base/models/ir_actions.py
+++ b/odoo/addons/base/models/ir_actions.py
@@ -321,6 +321,13 @@ class IrActionsActWindowclose(models.Model):
type = fields.Char(default='ir.actions.act_window_close')
+ def _get_readable_fields(self):
+ return super()._get_readable_fields() | {
+ # 'effect' is not a real field of ir.actions.act_window_close but is
+ # used to display the rainbowman
+ "effect"
+ }
+
class IrActionsActUrl(models.Model):
_name = 'ir.actions.act_url'