diff --git a/addons/account/static/src/js/tours/account.js b/addons/account/static/src/js/tours/account.js index b2b2f1ca97d..1cf010417b5 100644 --- a/addons/account/static/src/js/tours/account.js +++ b/addons/account/static/src/js/tours/account.js @@ -35,13 +35,16 @@ tour.register('account_tour', { content: _t("Now, we'll create your first invoice."), position: "bottom", }, { - trigger: "div[name=partner_id] input", + trigger: "div[name=partner_id] .o_input_dropdown", // FIXME WOWL: this selector needs to work in both legacy and non-legacy views // because account_invoice_extracts *adds* a js_class on the base view which forces // the use of a legacy view in enterprise only extra_trigger: "[name=move_type] [raw-value=out_invoice], [name=move_type][raw-value=out_invoice]", content: Markup(_t("Write a company name to create one or see suggestions.")), position: "right", + }, { + trigger: "div[name=partner_id] input", + auto: true, }, { trigger: ".o_m2o_dropdown_option a:contains('Create')", // FIXME WOWL: this selector needs to work in both legacy and non-legacy views diff --git a/addons/crm/static/src/js/tours/crm.js b/addons/crm/static/src/js/tours/crm.js index b1306f8d863..f889d7346f0 100644 --- a/addons/crm/static/src/js/tours/crm.js +++ b/addons/crm/static/src/js/tours/crm.js @@ -78,11 +78,11 @@ tour.register('crm_tour', { }, }, { trigger: ".o_lead_opportunity_form .o_statusbar_status", - content: _t("This bar also allows you to switch stage."), + content: _t("You can make your opportunity advance through your pipeline from here."), position: "bottom" }, { trigger: ".breadcrumb-item:not(.active):first", - content: _t("Click on the breadcrumb to go back to the Pipeline."), + content: _t("Click on the breadcrumb to go back to your Pipeline. Odoo will save all modifications as you navigate."), position: "bottom", run: function (actions) { actions.auto(".breadcrumb-item:not(.active):last"); diff --git a/addons/hr_expense/__manifest__.py b/addons/hr_expense/__manifest__.py index 132262cccd8..a53b913aabd 100644 --- a/addons/hr_expense/__manifest__.py +++ b/addons/hr_expense/__manifest__.py @@ -61,9 +61,9 @@ This module also uses analytic accounting and is compatible with the invoice on 'hr_expense/static/src/views/*.xml', 'hr_expense/static/src/scss/hr_expense.scss', 'hr_expense/static/src/xml/**/*', + 'hr_expense/static/src/js/tours/*.js', ], 'web.assets_tests': [ - 'hr_expense/static/src/js/tours/hr_expense.js', 'hr_expense/static/tests/tours/expense_upload_tours.js', ], }, diff --git a/addons/hr_expense/static/src/js/tours/hr_expense.js b/addons/hr_expense/static/src/js/tours/hr_expense.js index a2dffe7f4f0..9060ebd7300 100644 --- a/addons/hr_expense/static/src/js/tours/hr_expense.js +++ b/addons/hr_expense/static/src/js/tours/hr_expense.js @@ -6,59 +6,77 @@ const {Markup} = require('web.utils'); var tour = require('web_tour.tour'); tour.register('hr_expense_tour' , { - url: "/web" + url: "/web", + rainbowManMessage: _t("There you go - expense management in a nutshell!"), }, [tour.stepUtils.showAppsMenuItem(), { trigger: '.o_app[data-menu-xmlid="hr_expense.menu_hr_expense_root"]', - content: _t("Want to manage your expenses? It starts here."), + content: _t("Wasting time recording your receipts? Let’s try a better way."), position: 'right', edition: 'community' }, { trigger: '.o_app[data-menu-xmlid="hr_expense.menu_hr_expense_root"]', - content: _t("Want to manage your expenses? It starts here."), + content: _t("Wasting time recording your receipts? Let’s try a better way."), position: 'bottom', edition: 'enterprise' }, { - trigger: '.o_form_button_save', - content: Markup(_t("

Once your Expense is ready, you can save it.

")), + trigger: '.o_list_button_add', + extra_trigger: '.o_button_upload_expense', + content: _t("It all begins here - let's go!"), + position: 'bottom', + mobile: false, +}, { + trigger: '.o-kanban-button-new', + extra_trigger: '.o_button_upload_expense', + content: _t("It all begins here - let's go!"), + position: 'bottom', + mobile: true, +}, { + trigger: '.o_field_widget[name="product_id"] .o_input_dropdown', + extra_trigger: '.o_expense_form', + content: _t("Enter a name then choose a category and configure the amount of your expense."), position: 'bottom', }, { - trigger: '.o_attach_document', - content: _t("Attach your receipt here."), + trigger: '.o_form_status_indicator_dirty .o_form_button_save', + extra_trigger: '.o_expense_form', + content: Markup(_t("Ready? You can save it manually or discard modifications from here. You don't need to save - Odoo will save eveyrthing for you when you navigate.")), position: 'bottom', -}, { - trigger: '.o_expense_submit', +}, ...tour.stepUtils.statusbarButtonsSteps(_t("Attach Receipt"), _t("Attach a receipt - usually an image or a PDF file.")), +...tour.stepUtils.statusbarButtonsSteps(_t("Create Report"), _t("Create a report to submit one or more expenses to your manager.")), +...tour.stepUtils.statusbarButtonsSteps(_t("Submit to Manager"), Markup(_t('Once your Expense Report is ready, you can submit it to your manager and wait for approval.'))), +...tour.stepUtils.goBackBreadcrumbsMobile( + _t("Use the breadcrumbs to go back to the list of expenses."), + undefined, + ".o_expense_form", +), +{ + trigger: '.breadcrumb > li.breadcrumb-item:first', extra_triggger: ".o_expense_form", - content: Markup(_t('

Click on Create Report to create the report.

')), - position: 'right', -}, { - trigger: '.o_expense_tree input[type=checkbox]', - content: Markup(_t('

Select expenses to submit them to your manager

')), - position: 'bottom' -}, { - trigger: '.dropdown-toggle', - extra_trigger: ".o_expense_tree", - content: Markup(_t('

Click on Action Create Report to submit selected expenses to your manager

')), - position: 'right', -}, { - trigger: '.o_expense_sheet_submit', - content: Markup(_t('Once your Expense report is ready, you can submit it to your manager and wait for the approval from your manager.')), + content: _t("Let's go back to your expenses."), position: 'bottom', + mobile: false, }, { - trigger: '.o_expense_sheet_approve', - content: Markup(_t("

Approve the report here.

Tip: if you refuse, don’t forget to give the reason thanks to the hereunder message tool

")), + trigger: '.o_expense_container', + content: _t("The status of all your current expenses is visible from here."), position: 'bottom', +}, +tour.stepUtils.openBuggerMenu(), +{ + trigger: "[data-menu-xmlid='hr_expense.menu_hr_expense_report']", + extra_trigger: '.o_main_navbar', + content: _t("Let's check out where you can manage all your employees expenses"), + position: "bottom" }, { - trigger: '.o_expense_sheet_post', - content: Markup(_t("

The accountant receive approved expense reports.

He can post journal entries in one click if taxes and accounts are right.

")), + trigger: '.o_list_renderer tbody tr[data-id]', + content: _t('Managers can inspect all expenses from here.'), position: 'bottom', + mobile: false, }, { - trigger: '.o_expense_sheet_pay', - content: _t("The accountant can register a payment to reimburse the employee directly."), + trigger: '.o_kanban_renderer .oe_kanban_card', + content: _t('Managers can inspect all expenses from here.'), position: 'bottom', -}, { - trigger: 'li a[data-menu-xmlid="hr_expense.menu_hr_expense_sheet_my_all"], div[data-menu-xmlid="hr_expense.menu_hr_expense_sheet_my_all"]', - content: _t("Managers can get all reports to approve from this menu."), - position: 'bottom', -}]); + mobile: true, +}, +...tour.stepUtils.statusbarButtonsSteps(_t("Approve"), _t("Managers can approve the report here, then an accountant can post the accounting entries.")), +]); }); diff --git a/addons/hr_expense/views/hr_expense_views.xml b/addons/hr_expense/views/hr_expense_views.xml index 5904a7c2cc0..4b4ccd49fc8 100644 --- a/addons/hr_expense/views/hr_expense_views.xml +++ b/addons/hr_expense/views/hr_expense_views.xml @@ -110,8 +110,8 @@