diff options
| -rw-r--r-- | addons/crm/models/crm_lead.py | 1 | ||||
| -rw-r--r-- | addons/crm/static/tests/tours/crm_rainbowman.js | 22 | ||||
| -rw-r--r-- | addons/crm/tests/test_crm_ui.py | 14 | ||||
| -rw-r--r-- | odoo/addons/base/models/ir_actions.py | 7 |
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' |
