From 8d6de4733b7bcb8be54380508a80cfdb93f117bc Mon Sep 17 00:00:00 2001 From: Dhrumil Shah Date: Tue, 15 Oct 2024 10:39:56 +0530 Subject: [PATCH] [ADD] *: Onboarding tours In the objective of making the onboarding as easy and smooth as possible, the onboarding tours presented will allow the customer to click on a button and be redirected to the business flow tour of each industry. --- agriculture_shop/__manifest__.py | 3 + agriculture_shop/data/knowledge_article.xml | 1 + agriculture_shop/data/purchase_tour.xml | 8 + agriculture_shop/data/res_config_settings.xml | 4 +- .../static/src/js/tours/purchase_flow.js | 147 ++++++++++++++ art_craft/__manifest__.py | 3 + art_craft/data/consignment_purchase_tour.xml | 8 + art_craft/data/knowledge_article.xml | 4 + .../src/js/tours/consignment_purchase_tour.js | 79 ++++++++ automobile/data/knowledge_article.xml | 6 + beverage_distributor/__manifest__.py | 3 + .../data/deposit_management_tour.xml | 8 + .../data/knowledge_article.xml | 7 + .../src/js/tours/deposit_management_tour.js | 143 ++++++++++++++ bookstore/__manifest__.py | 3 + bookstore/data/customer_order_tour.xml | 8 + bookstore/data/knowledge_article.xml | 3 + .../src/js/tours/customer_order_tour.js | 91 +++++++++ cake_shop/data/knowledge_article.xml | 2 + clothing_boutique/data/knowledge_article.xml | 9 +- coal_petroleum/__manifest__.py | 6 + coal_petroleum/data/knowledge_article.xml | 5 + coal_petroleum/data/purchase_flow_tour.xml | 8 + coal_petroleum/data/sale_flow_tour.xml | 8 + .../static/src/js/tours/purchase_flow_tour.js | 179 ++++++++++++++++++ .../static/src/js/tours/sale_flow_tour.js | 179 ++++++++++++++++++ custom_furniture/data/knowledge_article.xml | 6 + electronic_store/__manifest__.py | 3 + electronic_store/data/knowledge_article.xml | 2 + electronic_store/data/purchase_lot_tour.xml | 8 + electronic_store/data/res_config_settings.xml | 1 + .../static/src/js/tours/purchase_lot_tour.js | 95 ++++++++++ eyewear_shop/__manifest__.py | 3 + eyewear_shop/data/knowledge_article.xml | 5 +- eyewear_shop/data/res_config_settings.xml | 2 + eyewear_shop/data/sale_order_to_cash_tour.xml | 8 + .../src/js/tours/sale_order_to_cash_tour.js | 87 +++++++++ fitness/data/knowledge_article.xml | 6 +- fmcg_store/data/knowledge_article.xml | 1 + furniture_store/__manifest__.py | 6 + furniture_store/data/bom_tour.xml | 8 + furniture_store/data/knowledge_article.xml | 4 +- .../data/order_custom_product_tour.xml | 8 + furniture_store/data/product_template.xml | 2 +- furniture_store/data/res_config_settings.xml | 1 + .../static/src/js/tours/bom_tour.js | 123 ++++++++++++ .../src/js/tours/order_custom_product_tour.js | 91 +++++++++ hardware_shop/data/knowledge_article.xml | 4 +- micro_brewery/__manifest__.py | 3 + micro_brewery/data/knowledge_article.xml | 1 + micro_brewery/data/manufacturing_tour.xml | 8 + .../static/src/js/tours/manufacturing_tour.js | 135 +++++++++++++ odoo_partner/data/knowledge_article.xml | 5 +- pharmacy_retail/__manifest__.py | 3 + pharmacy_retail/data/knowledge_article.xml | 4 + pharmacy_retail/data/purchase_custom_tour.xml | 8 + .../src/js/tours/purchase_custom_tour.js | 79 ++++++++ 57 files changed, 1630 insertions(+), 15 deletions(-) create mode 100644 agriculture_shop/data/purchase_tour.xml create mode 100644 agriculture_shop/static/src/js/tours/purchase_flow.js create mode 100644 art_craft/data/consignment_purchase_tour.xml create mode 100644 art_craft/static/src/js/tours/consignment_purchase_tour.js create mode 100644 beverage_distributor/data/deposit_management_tour.xml create mode 100644 beverage_distributor/static/src/js/tours/deposit_management_tour.js create mode 100644 bookstore/data/customer_order_tour.xml create mode 100644 bookstore/static/src/js/tours/customer_order_tour.js create mode 100644 coal_petroleum/data/purchase_flow_tour.xml create mode 100644 coal_petroleum/data/sale_flow_tour.xml create mode 100644 coal_petroleum/static/src/js/tours/purchase_flow_tour.js create mode 100644 coal_petroleum/static/src/js/tours/sale_flow_tour.js create mode 100644 electronic_store/data/purchase_lot_tour.xml create mode 100644 electronic_store/static/src/js/tours/purchase_lot_tour.js create mode 100644 eyewear_shop/data/sale_order_to_cash_tour.xml create mode 100644 eyewear_shop/static/src/js/tours/sale_order_to_cash_tour.js create mode 100644 furniture_store/data/bom_tour.xml create mode 100644 furniture_store/data/order_custom_product_tour.xml create mode 100644 furniture_store/static/src/js/tours/bom_tour.js create mode 100644 furniture_store/static/src/js/tours/order_custom_product_tour.js create mode 100644 micro_brewery/data/manufacturing_tour.xml create mode 100644 micro_brewery/static/src/js/tours/manufacturing_tour.js create mode 100644 pharmacy_retail/data/purchase_custom_tour.xml create mode 100644 pharmacy_retail/static/src/js/tours/purchase_custom_tour.js diff --git a/agriculture_shop/__manifest__.py b/agriculture_shop/__manifest__.py index 386b686b6..1f6fee17e 100644 --- a/agriculture_shop/__manifest__.py +++ b/agriculture_shop/__manifest__.py @@ -37,6 +37,7 @@ 'data/website_view.xml', 'data/website_theme_apply.xml', 'data/knowledge_tour.xml', + 'data/purchase_tour.xml', ], 'demo': [ 'demo/res_partner.xml', @@ -69,12 +70,14 @@ 'assets': { 'web.assets_backend': [ 'agriculture_shop/static/src/js/my_tour.js', + 'agriculture_shop/static/src/js/tours/purchase_flow.js', ] }, 'author': 'Odoo S.A.', "cloc_exclude": [ "data/knowledge_article.xml", "static/src/js/my_tour.js", + "static/src/js/tours/purchase_flow.js", "data/website_view.xml", "demo/website_view.xml", ], diff --git a/agriculture_shop/data/knowledge_article.xml b/agriculture_shop/data/knowledge_article.xml index 9d31b0e7d..ff58b61e0 100644 --- a/agriculture_shop/data/knowledge_article.xml +++ b/agriculture_shop/data/knowledge_article.xml @@ -41,6 +41,7 @@
  • Confirm RFQ based on best price
  • Validate the reception for all quantities at once.
  • + Purchase Flow Tutorial

    Flow 2: Sales from Website (B2B / B2C)

    diff --git a/agriculture_shop/data/purchase_tour.xml b/agriculture_shop/data/purchase_tour.xml new file mode 100644 index 000000000..b093db6a9 --- /dev/null +++ b/agriculture_shop/data/purchase_tour.xml @@ -0,0 +1,8 @@ + + + + purchase_custom_tour + 1000 + Good job! You went through all steps of this tour. + + diff --git a/agriculture_shop/data/res_config_settings.xml b/agriculture_shop/data/res_config_settings.xml index 07cd0852e..96d68d0e8 100644 --- a/agriculture_shop/data/res_config_settings.xml +++ b/agriculture_shop/data/res_config_settings.xml @@ -3,8 +3,10 @@ + + - + diff --git a/agriculture_shop/static/src/js/tours/purchase_flow.js b/agriculture_shop/static/src/js/tours/purchase_flow.js new file mode 100644 index 000000000..21b38c94b --- /dev/null +++ b/agriculture_shop/static/src/js/tours/purchase_flow.js @@ -0,0 +1,147 @@ +import { registry } from '@web/core/registry'; + +registry.category("web_tour.tours").add("purchase_custom_tour", { + url: "/odoo", + steps: () => [ + { + "trigger": ".o_app[data-menu-xmlid='purchase\\.menu_purchase_root']", + "run": "click" + }, + { + "trigger": ".o_list_button_add", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='partner_id'] .o-autocomplete--input", + "run": "edit gloster" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add > a:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_field_product_label_section_and_note_cell .o-autocomplete--input", + "run": "edit on" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_form_button_save", + "run": "click" + }, + { + "trigger": ".o_notebook_headers a[name='alternative_pos']", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add > a", + "run": "click" + }, + { + "trigger": ".o_create_button", + "run": "click" + }, + { + "trigger": "main .o_field_widget[name='partner_id'] .o-autocomplete--input", + "run": "edit ast" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_section_and_note_list_view a:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_field_product_label_section_and_note_cell .o-autocomplete--input", + "run": "edit on" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='product_qty'] > .o_input", + "run": "edit 100" + }, + { + "trigger": ".o-wysiwyg div[contenteditable='true']", + "run": "click" + }, + { + "trigger": ".o_data_cell[name='price_unit']", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='price_unit'] > .o_input", + "run": "edit 110" + }, + { + "trigger": ".o-wysiwyg div[contenteditable='true']", + "run": "click" + }, + { + "trigger": "footer > .o_form_button_save", + "run": "click" + }, + { + "trigger": ".o_cell button[name='action_compare_alternative_lines']", + "run": "click" + }, + { + "trigger": ".o_data_row:nth-child(3) .o_clear_qty_buttons[name='action_choose']", + "run": "click" + }, + { + "trigger": ".o_back_button > a", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_confirm']", + "run": "click" + }, + { + "trigger": ".o_technical_modal button[name='action_cancel_alternatives']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='action_view_picking']", + "run": "click" + }, + { + "trigger": ".o_data_cell:nth-child(5) > button[name='Open\\ Move']", + "run": "click" + }, + { + "trigger": ".o_data_cell[name='lot_name']", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='lot_name'] > .o_input", + "run": "edit lot001" + }, + { + "trigger": "footer > .o_form_button_save", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_validate']", + "run": "click" + }, + { + "trigger": ".o_breadcrumb li:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + } +] +}) diff --git a/art_craft/__manifest__.py b/art_craft/__manifest__.py index ddb8a1905..7e7be8702 100644 --- a/art_craft/__manifest__.py +++ b/art_craft/__manifest__.py @@ -52,6 +52,7 @@ 'data/mail_message.xml', 'data/website_view.xml', 'data/knowledge_tour.xml', + 'data/consignment_purchase_tour.xml', ], 'demo': [ 'demo/res_partner.xml', @@ -79,6 +80,7 @@ 'assets': { 'web.assets_backend': [ 'art_craft/static/src/js/my_tour.js', + 'art_craft/static/src/js/tours/consignment_purchase_tour.js', ] }, 'author': 'Odoo S.A.', @@ -86,6 +88,7 @@ "data/knowledge_article.xml", "data/qweb_view.xml", "static/src/js/my_tour.js", + "static/src/js/tours/consignment_purchase_tour.js", "data/website_view.xml", "demo/website_view.xml", ], diff --git a/art_craft/data/consignment_purchase_tour.xml b/art_craft/data/consignment_purchase_tour.xml new file mode 100644 index 000000000..e998f1d7a --- /dev/null +++ b/art_craft/data/consignment_purchase_tour.xml @@ -0,0 +1,8 @@ + + + + consignment_purchase + 1000 + Good job! You went through all steps of this tour. + + diff --git a/art_craft/data/knowledge_article.xml b/art_craft/data/knowledge_article.xml index 35013ca55..c36280c06 100644 --- a/art_craft/data/knowledge_article.xml +++ b/art_craft/data/knowledge_article.xml @@ -54,6 +54,8 @@
  • Validate the reception for all quantities at once.

  • + Purchase Flow Tutorial +


    Flow 2: Consignment Purchase


    @@ -70,6 +72,8 @@

  • Validate the reception for all quantities at once.

  • + Consignment Purchase Flow Tutorial +


    Flow 3: Point of sales - Regular


    For the Small Products, orders & payments are done at the shop itself, and the customer pickups the products directly.

    diff --git a/art_craft/static/src/js/tours/consignment_purchase_tour.js b/art_craft/static/src/js/tours/consignment_purchase_tour.js new file mode 100644 index 000000000..5030ef139 --- /dev/null +++ b/art_craft/static/src/js/tours/consignment_purchase_tour.js @@ -0,0 +1,79 @@ +import { registry } from '@web/core/registry'; + +registry.category("web_tour.tours").add("consignment_purchase", { + url: "/odoo", + steps: () => [ + { + "trigger": ".o_app[data-menu-xmlid='purchase\\.menu_purchase_root']", + "run": "click" + }, + { + "trigger": ".o_list_button_add", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='partner_id'] .o-autocomplete--input", + "run": "edit demo" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='x_is_consignee'] input", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add > a:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_field_product_label_section_and_note_cell .o-autocomplete--input", + "run": "click" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_section_and_note_list_view tr:nth-child(3) > td", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add > a:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_field_product_label_section_and_note_cell .o-autocomplete--input", + "run": "click" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(5) > a", + "run": "click" + }, + { + "trigger": ".o_section_and_note_list_view tr:nth-child(4) > td", + "run": "click" + }, + { + "trigger": ".o_form_button_save", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_confirm']", + "run": "click" + }, + { + "trigger": ".o_stat_text", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_validate']", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + } +] +}) diff --git a/automobile/data/knowledge_article.xml b/automobile/data/knowledge_article.xml index c9abed04f..0b50ccae0 100644 --- a/automobile/data/knowledge_article.xml +++ b/automobile/data/knowledge_article.xml @@ -35,6 +35,9 @@ 3. After confirming the PO Receipt will be generated based on the received quantity you have add that quantities in to the Done quantities and if some products have Lot & Serial no. than at the time of validating receipt you have to provide the lot & Serial No.

    +


    + Purchase Flow Tutorial +


    Flow 2: B2B Customer

    1.For the B2B Sales we will use the normal process of the sales create the quotation than select the products and sent an quotation and after the negotiation via e-mail after the negotiation you can confirmed the quotation than your @@ -49,6 +52,9 @@

    +


    + Sales Flow Tutorial +



    Flow 3: B2C Customer : Point of Sale

    1.For the B2C sales we will use the POS module customer come to the shop the user will add the products which products want to buy customer and take payment of that product.

    diff --git a/beverage_distributor/__manifest__.py b/beverage_distributor/__manifest__.py index db3c428b1..8038f1dd4 100644 --- a/beverage_distributor/__manifest__.py +++ b/beverage_distributor/__manifest__.py @@ -49,6 +49,7 @@ 'data/pos_config.xml', 'data/res_config_settings.xml', 'data/knowledge_tour.xml', + 'data/deposit_management_tour.xml', ], 'demo': [ 'demo/website.xml', @@ -77,11 +78,13 @@ 'assets': { 'web.assets_backend': [ 'beverage_distributor/static/src/js/my_tour.js', + 'beverage_distributor/static/src/js/tours/deposit_management_tour.js', ] }, "cloc_exclude": [ "data/knowledge_article.xml", "static/src/js/my_tour.js", + "static/src/js/tours/deposit_management_tour.js", "demo/website_view.xml", ], 'license': 'OPL-1', diff --git a/beverage_distributor/data/deposit_management_tour.xml b/beverage_distributor/data/deposit_management_tour.xml new file mode 100644 index 000000000..4006fd65f --- /dev/null +++ b/beverage_distributor/data/deposit_management_tour.xml @@ -0,0 +1,8 @@ + + + + deposit_management_tour + 1000 + Good job! You went through all steps of this tour. + + diff --git a/beverage_distributor/data/knowledge_article.xml b/beverage_distributor/data/knowledge_article.xml index 9a9c7c6e9..4157009fb 100644 --- a/beverage_distributor/data/knowledge_article.xml +++ b/beverage_distributor/data/knowledge_article.xml @@ -79,6 +79,7 @@
  • You can also collect deposit directly on your Point of Sale. Select the correct product and encode a negative quantity.
  • + Deposit Management Flow Tutorial


    Sales Management 🍾

    Use the Sales app to:

    @@ -89,6 +90,8 @@

    🎓 Sales


    + Sales Flow Tutorial +


    Customer Relationship Management (CRM) 🤝

    The CRM app helps you:

    🎓 CRM


    + CRM Flow Tutorial +


    Purchase Management 🛒

    The Purchase app allows you to:

    🎓 Purchase


    + Purchase Flow Tutorial +


    Point of Sale (POS) 💳

    For B2C sales, the POS app enables you to:

    + Purchase Flow Tutorial +


    Flow 2 : Point of Sale - Regular Sale

    For the Small Products, orders & payments are done at the shop itself, and the delivery is also done at the shop itself

    To do that, start with a POS order:

    diff --git a/clothing_boutique/data/knowledge_article.xml b/clothing_boutique/data/knowledge_article.xml index 032860718..f1a79bc22 100644 --- a/clothing_boutique/data/knowledge_article.xml +++ b/clothing_boutique/data/knowledge_article.xml @@ -37,12 +37,9 @@
  • Send RFQ to your Pre defined Vendor.
  • Confirm the RFQ based on the received rates by the vendor.
  • -

    -
    -

    -

    -
    -

    +


    + Purchase Flow Tutorial +


    Flow 2: POS with Barcode and BOGO offer.


    diff --git a/coal_petroleum/__manifest__.py b/coal_petroleum/__manifest__.py index a41cb6c0c..31f13bb1e 100644 --- a/coal_petroleum/__manifest__.py +++ b/coal_petroleum/__manifest__.py @@ -47,6 +47,8 @@ 'data/mail_message.xml', 'data/quality_point.xml', 'data/knowledge_tour.xml', + 'data/purchase_flow_tour.xml', + 'data/sale_flow_tour.xml', ], 'demo': [ 'demo/res_partner.xml', @@ -63,6 +65,8 @@ 'assets': { 'web.assets_backend': [ 'coal_petroleum/static/src/js/my_tour.js', + 'coal_petroleum/static/src/js/tours/purchase_flow_tour.js', + 'coal_petroleum/static/src/js/tours/sale_flow_tour.js', ] }, 'author': 'Odoo S.A.', @@ -70,6 +74,8 @@ "data/qweb_view.xml", "data/knowledge_article.xml", "static/src/js/my_tour.js", + "static/src/js/tours/purchase_flow_tour.js", + "static/src/js/tours/sale_flow_tour.js", ], 'images': ['images/main.png'], } diff --git a/coal_petroleum/data/knowledge_article.xml b/coal_petroleum/data/knowledge_article.xml index be6a39ad8..53e8754d7 100644 --- a/coal_petroleum/data/knowledge_article.xml +++ b/coal_petroleum/data/knowledge_article.xml @@ -80,6 +80,9 @@

  • Set the destination location, and store the coal where you need it
  • In addition, you can create a Landed Cost from the inventory Application.

    +


    + Purchase Flow Tutorial +


    Flow 2: Sales order > Delivery > Invoice

    The company delivers the goods to the customer but before delivering it. They run a quality check to make sure everything is up to the mark. Create an Quotation, Confirm it. Run quality checks and deliver the product.

    To do that:

    @@ -97,6 +100,8 @@
  • Create an Invoice from Sale Order based on the delivered quantities

  • + Sales Flow Tutorial +


    diff --git a/coal_petroleum/data/purchase_flow_tour.xml b/coal_petroleum/data/purchase_flow_tour.xml new file mode 100644 index 000000000..101af3203 --- /dev/null +++ b/coal_petroleum/data/purchase_flow_tour.xml @@ -0,0 +1,8 @@ + + + + purchase_flow_tour + 1000 + Good job! You went through all steps of this tour. + + diff --git a/coal_petroleum/data/sale_flow_tour.xml b/coal_petroleum/data/sale_flow_tour.xml new file mode 100644 index 000000000..b3dd06ab4 --- /dev/null +++ b/coal_petroleum/data/sale_flow_tour.xml @@ -0,0 +1,8 @@ + + + + sale_flow_tour + 1000 + Good job! You went through all steps of this tour. + + diff --git a/coal_petroleum/static/src/js/tours/purchase_flow_tour.js b/coal_petroleum/static/src/js/tours/purchase_flow_tour.js new file mode 100644 index 000000000..19eb5e5f4 --- /dev/null +++ b/coal_petroleum/static/src/js/tours/purchase_flow_tour.js @@ -0,0 +1,179 @@ +import { registry } from '@web/core/registry'; + +registry.category("web_tour.tours").add("purchase_flow_tour", { + url: "/odoo", + steps: () => [ + { + "trigger": ".o_app[data-menu-xmlid='purchase\\.menu_purchase_root']", + "run": "click" + }, + { + "trigger": ".o_list_button_add", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='partner_id'] .o-autocomplete--input", + "run": "edit ark traders" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add > a:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_field_product_label_section_and_note_cell .o-autocomplete--input", + "run": "edit anthra" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": "tr:nth-child(1) > .o_matrix_input_td:nth-child(2) .o_input", + "run": "edit 200" + }, + { + "trigger": ".o_technical_modal button:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_confirm']", + "run": "click" + }, + { + "trigger": ".o_menu_toggle", + "run": "click" + }, + { + "trigger": ".o_app[data-menu-xmlid='stock\\.menu_stock_root']", + "run": "click" + }, + { + "trigger": ".o_kanban_record:nth-child(1) .oe_kanban_action[name='get_action_picking_tree_ready']", + "run": "click" + }, + { + "trigger": ".o_data_row:nth-child(7) > .o_data_cell[name='location_id']", + "run": "click" + }, + { + "trigger": ".o_data_cell:nth-child(9) > button[name='Open\\ Move']", + "run": "click" + }, + { + "trigger": ".o_data_cell[name='lot_name']", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='lot_name'] > .o_input", + "run": "edit lot 001" + }, + { + "trigger": "footer > .o_form_button_save", + "run": "click" + }, + { + "trigger": ".o_wrap_field:nth-child(4) > .o_cell:nth-child(2)", + "run": "click" + }, + { + "trigger": ".o_wrap_field:nth-child(4) > .o_cell:nth-child(2)", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='x_vehicle_no'] > .o_input", + "run": "edit 1280aro" + }, + { + "trigger": ".o_statusbar_buttons > button[name='check_quality']", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='x_test_type_1'] > .o_input", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='x_test_type_1'] > .o_input", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='x_net_calorific_value'] > .o_input", + "run": "edit 10" + }, + { + "trigger": ".o_field_widget[name='x_ash_content'] > .o_input", + "run": "edit 20" + }, + { + "trigger": ".o_field_widget[name='x_moisture_content'] > .o_input", + "run": "edit 20" + }, + { + "trigger": ".o_field_widget[name='x_test_type'] > .o_input", + "run": "edit 20" + }, + { + "trigger": ".o_field_widget[name='x_total_sulphur'] > .o_input", + "run": "edit 20" + }, + { + "trigger": ".o_field_widget[name='x_flying_substance'] > .o_input", + "run": "edit 20" + }, + { + "trigger": ".o_field_widget[name='x_hardgrave_grindability_index'] > .o_input", + "run": "edit 20" + }, + { + "trigger": "footer > .o_form_button_save", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_validate']", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + }, + { + "trigger": ".o_app[data-menu-xmlid='purchase\\.menu_purchase_root']", + "run": "click" + }, + { + "trigger": ".o_data_row:nth-child(1) > .o_data_cell[name='partner_id']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='action_create_invoice']", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='invoice_date'] .o_input", + "run": "click" + }, + { + "trigger": ".o_date_item_cell:nth-child(31)", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='action_post']", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + }, + { + "trigger": ".o_home_menu", + "run": "click" + } +] +}) diff --git a/coal_petroleum/static/src/js/tours/sale_flow_tour.js b/coal_petroleum/static/src/js/tours/sale_flow_tour.js new file mode 100644 index 000000000..27073aa3d --- /dev/null +++ b/coal_petroleum/static/src/js/tours/sale_flow_tour.js @@ -0,0 +1,179 @@ +import { registry } from '@web/core/registry'; + +registry.category("web_tour.tours").add("sale_flow_tour", { + url: "/odoo", + steps: () => [ + { + "trigger": ".o_app[data-menu-xmlid='sale\\.sale_menu_root']", + "run": "click" + }, + { + "trigger": ".o_list_button_add", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='partner_id'] .o-autocomplete--input", + "run": "edit glaencore" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add > a:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_field_product_label_section_and_note_cell .o-autocomplete--input", + "run": "edit anth" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_sale_product_configurator_qty input[name='sale_quantity']", + "run": "edit 100" + }, + { + "trigger": ".o_sale_product_configurator_dialog button[name='sale_product_configurator_confirm_button']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='action_confirm']", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + }, + { + "trigger": ".o_app[data-menu-xmlid='stock\\.menu_stock_root']", + "run": "click" + }, + { + "trigger": ".o_kanban_record:nth-child(4) .oe_kanban_action[name='get_action_picking_tree_ready']", + "run": "click" + }, + { + "trigger": ".o_data_row:nth-child(4) > .o_data_cell[name='name']", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='x_vehicle_no'] > .o_input", + "run": "edit 1280aro" + }, + { + "trigger": ".o_data_cell:nth-child(9) > button[name='Open\\ Move']", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='move_line_ids'] .o_data_cell[name='quantity']", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='move_line_ids'] .o_field_widget[name='quantity'] > .o_input", + "run": "edit 100" + }, + { + "trigger": "footer > .o_form_button_save", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_validate']", + "run": "click" + }, + { + "trigger": ".o_breadcrumb li:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_kanban_record:nth-child(5) .oe_kanban_action[name='get_action_picking_tree_ready']", + "run": "click" + }, + { + "trigger": ".o_data_cell[name='location_dest_id']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='check_quality']", + "run": "click" + }, + { + "trigger": ".o_act_window .o_form_sheet", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='x_test_type_1'] > .o_input", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='x_net_calorific_value'] > .o_input", + "run": "edit 20" + }, + { + "trigger": ".o_field_widget[name='x_ash_content'] > .o_input", + "run": "edit 20" + }, + { + "trigger": ".o_field_widget[name='x_moisture_content'] > .o_input", + "run": "edit 20" + }, + { + "trigger": ".o_field_widget[name='x_test_type'] > .o_input", + "run": "edit 20" + }, + { + "trigger": ".o_act_window .o_inner_group:nth-child(2)", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='x_total_sulphur'] > .o_input", + "run": "edit 20" + }, + { + "trigger": ".o_field_widget[name='x_flying_substance'] > .o_input", + "run": "edit 20" + }, + { + "trigger": ".o_field_widget[name='x_hardgrave_grindability_index'] > .o_input", + "run": "edit 20" + }, + { + "trigger": "footer > .o_form_button_save", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_validate']", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + }, + { + "trigger": ".o_app[data-menu-xmlid='sale\\.sale_menu_root']", + "run": "click" + }, + { + "trigger": ".o_data_row:nth-child(1) > .o_data_cell[name='partner_id']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='\\35 27']", + "run": "click" + }, + { + "trigger": ".o_technical_modal button[name='create_invoices']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='action_post']", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + } +] +}) diff --git a/custom_furniture/data/knowledge_article.xml b/custom_furniture/data/knowledge_article.xml index 81622a9fa..87ea6aed0 100644 --- a/custom_furniture/data/knowledge_article.xml +++ b/custom_furniture/data/knowledge_article.xml @@ -94,6 +94,8 @@

    🎓 CRM


    + CRM Flow Tutorial +


    2. Products & services 🪑


    Managing your products and their characteristics is critical in Odoo. This package includes several configs, which you can explore by navigating to the Sales App -> Products.

    @@ -145,6 +147,8 @@ These will be detailed in the following topics.


    + Sales Flow Tutorial +


    4. Purchases & inventory 📦


    To manage your inventory and everything you need to complete the order, navigate to the Inventory App.

    @@ -170,6 +174,8 @@

    My Wood Vendor: Will send you the Oak Wood Panels you need to create the tables.

    Once all your orders are confirmed, you are ready to receive them in the Inventory App. Access it and select the 4 to process button in the Receipts category. You can now validate the reception of all your orders.


    + Purchase Flow Tutorial +


    5. Project & Field Services 🦺


    diff --git a/electronic_store/__manifest__.py b/electronic_store/__manifest__.py index b7930fb36..5c0301001 100644 --- a/electronic_store/__manifest__.py +++ b/electronic_store/__manifest__.py @@ -53,6 +53,7 @@ 'data/knowledge_article_favorite.xml', 'data/mail_message.xml', 'data/knowledge_tour.xml', + 'data/purchase_lot_tour.xml', ], 'demo': [ 'demo/res_partner.xml', @@ -89,6 +90,7 @@ 'assets': { 'web.assets_backend': [ 'electronic_store/static/src/js/my_tour.js', + 'electronic_store/static/src/js/tours/purchase_lot_tour.js', ] }, 'author': 'Odoo S.A.', @@ -96,6 +98,7 @@ "data/qweb_view.xml", "data/knowledge_article.xml", "static/src/js/my_tour.js", + "static/src/js/tours/purchase_lot_tour.js", "demo/website_view.xml", ], 'images': ['images/main.png'], diff --git a/electronic_store/data/knowledge_article.xml b/electronic_store/data/knowledge_article.xml index e28dac969..147b5ba64 100644 --- a/electronic_store/data/knowledge_article.xml +++ b/electronic_store/data/knowledge_article.xml @@ -48,6 +48,8 @@ + Purchase Flow Tutorial +


    Flow 2. Sale with serial number

    diff --git a/electronic_store/data/purchase_lot_tour.xml b/electronic_store/data/purchase_lot_tour.xml new file mode 100644 index 000000000..c4f97f9b2 --- /dev/null +++ b/electronic_store/data/purchase_lot_tour.xml @@ -0,0 +1,8 @@ + + + + purchase_lot_tour + 1000 + Good job! You went through all steps of this tour. + + diff --git a/electronic_store/data/res_config_settings.xml b/electronic_store/data/res_config_settings.xml index 457cc8c99..cba7b64ac 100644 --- a/electronic_store/data/res_config_settings.xml +++ b/electronic_store/data/res_config_settings.xml @@ -1,6 +1,7 @@ + diff --git a/electronic_store/static/src/js/tours/purchase_lot_tour.js b/electronic_store/static/src/js/tours/purchase_lot_tour.js new file mode 100644 index 000000000..ffe0b5eec --- /dev/null +++ b/electronic_store/static/src/js/tours/purchase_lot_tour.js @@ -0,0 +1,95 @@ +import { registry } from '@web/core/registry'; + +registry.category("web_tour.tours").add("purchase_lot_tour", { + url: "/odoo", + steps: () => [ + { + "trigger": ".o_app[data-menu-xmlid='purchase\\.menu_purchase_root']", + "run": "click" + }, + { + "trigger": ".o_list_button_add", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='partner_id'] .o-autocomplete--input", + "run": "edit lg ai" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add > a:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_field_product_label_section_and_note_cell .o-autocomplete--input", + "run": "edit lg dual " + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='product_qty'] > .o_input", + "run": "edit 6" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_confirm']", + "run": "click" + }, + { + "trigger": ".oe_stat_button[name='action_view_picking']", + "run": "click" + }, + { + "trigger": ".o_data_cell:nth-child(6) > button[name='Open\\ Move']", + "run": "click" + }, + { + "trigger": ".o_widget:nth-child(1) > button", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='next_serial'] > .o_input", + "run": "edit 21" + }, + { + "trigger": ".o-overlay-item:nth-child(2) button:nth-child(1)", + "run": "click" + }, + { + "trigger": "footer > .o_form_button_save", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_validate']", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + }, + { + "trigger": ".o_app[data-menu-xmlid='stock\\.menu_stock_root']", + "run": "click" + }, + { + "trigger": ".o_kanban_record:nth-child(1) .oe_kanban_action[name='get_action_picking_tree_ready']", + "run": "click" + }, + { + "trigger": ".o_searchview_facet:nth-child(2) .o_facet_remove", + "run": "click" + }, + { + "trigger": ".o_data_row:nth-child(13) > .o_data_cell[name='partner_id']", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + } +] +}) diff --git a/eyewear_shop/__manifest__.py b/eyewear_shop/__manifest__.py index f228a6a39..e87519de3 100644 --- a/eyewear_shop/__manifest__.py +++ b/eyewear_shop/__manifest__.py @@ -45,6 +45,7 @@ 'data/website_view.xml', 'data/website_theme_apply.xml', 'data/knowledge_tour.xml', + 'data/sale_order_to_cash_tour.xml', ], 'demo': [ 'demo/res_config_settings.xml', @@ -80,6 +81,7 @@ 'assets': { 'web.assets_backend': [ 'eyewear_shop/static/src/js/my_tour.js', + 'eyewear_shop/static/src/js/tours/sale_order_to_cash_tour.js', ] }, 'author': 'Odoo S.A.', @@ -88,6 +90,7 @@ "data/website_view.xml", "data/knowledge_article.xml", "static/src/js/my_tour.js", + "static/src/js/tours/sale_order_to_cash_tour.js", "demo/website_view.xml", ], 'images': ['images/main.png'], diff --git a/eyewear_shop/data/knowledge_article.xml b/eyewear_shop/data/knowledge_article.xml index 3f2f120e3..37e84de6c 100644 --- a/eyewear_shop/data/knowledge_article.xml +++ b/eyewear_shop/data/knowledge_article.xml @@ -50,6 +50,7 @@
  • From the Sales order, create an Invoice
  • After confirming the Invoice, click on "Register Payment"
  • + Sale Flow Tutorial

    Flow 2: Replenishment


    @@ -63,7 +64,7 @@
      • -
      • Create Purchase quotation from Inventory > Operations > Replenishment
      • +
      • Create Purchase quotation from Inventory > Product > Replenishment
      • Confirm a Purchase quotation from Purchase > Request for quotation.
      • Go to Inventory > Operation > Receipts.
      • Validate the Receipt.
      • @@ -74,7 +75,7 @@
          • -
          • Create the Replenishment Orders from Texas Warehouse to New York Warehouse.
          • +
          • Create the Replenishment Orders from Inventory > Product > Replenish (set preferred route "supply Product from Visio - Texas")
          • From Inventory > Operation > Deliveries, validate delivery from Texas Warehouse.
          • From Inventory > Operation > Receipts validate receipts in New York Warehouse.
          diff --git a/eyewear_shop/data/res_config_settings.xml b/eyewear_shop/data/res_config_settings.xml index 4a62197ab..0ecafc6a1 100644 --- a/eyewear_shop/data/res_config_settings.xml +++ b/eyewear_shop/data/res_config_settings.xml @@ -2,6 +2,8 @@ + + diff --git a/eyewear_shop/data/sale_order_to_cash_tour.xml b/eyewear_shop/data/sale_order_to_cash_tour.xml new file mode 100644 index 000000000..e14964165 --- /dev/null +++ b/eyewear_shop/data/sale_order_to_cash_tour.xml @@ -0,0 +1,8 @@ + + + + sale_order_to_cash_tour + 1000 + Good job! You went through all steps of this tour. + + diff --git a/eyewear_shop/static/src/js/tours/sale_order_to_cash_tour.js b/eyewear_shop/static/src/js/tours/sale_order_to_cash_tour.js new file mode 100644 index 000000000..10300dcee --- /dev/null +++ b/eyewear_shop/static/src/js/tours/sale_order_to_cash_tour.js @@ -0,0 +1,87 @@ +import { registry } from '@web/core/registry'; + +registry.category("web_tour.tours").add("sale_order_to_cash_tour", { + url: "/odoo", + steps: () => [ + { + "trigger": ".o_app[data-menu-xmlid='sale\\.sale_menu_root']", + "run": "click" + }, + { + "trigger": ".o_list_button_add", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='partner_id'] .o-autocomplete--input", + "run": "edit alyssia santon" + }, + { + "trigger": ".o-autocomplete--dropdown-item > a:contains('Alyssia Santon'), .fa-circle-o-notch", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add > a:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_field_product_label_section_and_note_cell .o-autocomplete--input", + "run": "edit ray-ban rb07" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": "li:nth-child(2) > .o_sale_product_configurator_ptav_color", + "run": "click" + }, + { + "trigger": ".o_sale_product_configurator_price[name='price'] > button[name='sale_product_configurator_add_button']", + "run": "click" + }, + { + "trigger": ".o_sale_product_configurator_dialog button[name='sale_product_configurator_confirm_button']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='action_confirm']", + "run": "click" + }, + { + "trigger": ".o_stat_info", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_validate']", + "run": "click" + }, + { + "trigger": ".o_back_button > a", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='\\36 32']", + "run": "click" + }, + { + "trigger": ".o_technical_modal button[name='create_invoices']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='action_post']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='action_register_payment']", + "run": "click" + }, + { + "trigger": ".o_technical_modal button[name='action_create_payments']", + "run": "click" + }, + { + "trigger": ".o_menu_toggle", + "run": "click" + } +] +}) diff --git a/fitness/data/knowledge_article.xml b/fitness/data/knowledge_article.xml index 55629bac7..7ecf72c14 100644 --- a/fitness/data/knowledge_article.xml +++ b/fitness/data/knowledge_article.xml @@ -59,8 +59,10 @@

          Once confirmed, the quotation becomes a sales order. All quotations and sales orders are centralized in the Sales app.

          -


          -

          🎓 Sales

          +


          🚀 diff --git a/fmcg_store/data/knowledge_article.xml b/fmcg_store/data/knowledge_article.xml index 6e9f8f64a..efe159b1d 100644 --- a/fmcg_store/data/knowledge_article.xml +++ b/fmcg_store/data/knowledge_article.xml @@ -28,6 +28,7 @@
        • Confirm the RFQ
        • Validate the reception for all quantities at once.
        + Purchase Flow Tutorial

        Flow 2: Point of sale - Regular flow with Buy one get one free product

        For the Small Products, orders & payments are made at the shop itself, and the customer picks up the products directly.


        diff --git a/furniture_store/__manifest__.py b/furniture_store/__manifest__.py index dad973581..191c72eb1 100644 --- a/furniture_store/__manifest__.py +++ b/furniture_store/__manifest__.py @@ -39,6 +39,8 @@ 'data/knowledge_article_favorite.xml', 'data/mail_message.xml', 'data/knowledge_tour.xml', + 'data/order_custom_product_tour.xml', + 'data/bom_tour.xml', ], 'demo': [ 'demo/res_partner.xml', @@ -65,12 +67,16 @@ 'assets': { 'web.assets_backend': [ 'furniture_store/static/src/js/my_tour.js', + 'furniture_store/static/src/js/tours/order_custom_product_tour.js', + 'furniture_store/static/src/js/tours/bom_tour.js', ] }, 'author': 'Odoo S.A.', "cloc_exclude": [ "data/knowledge_article.xml", "static/src/js/my_tour.js", + "static/src/js/tours/order_custom_product_tour.js", + "static/src/js/tours/bom_tour.js", "demo/website_view.xml", ], 'images': ['images/main.png'], diff --git a/furniture_store/data/bom_tour.xml b/furniture_store/data/bom_tour.xml new file mode 100644 index 000000000..2057bee7c --- /dev/null +++ b/furniture_store/data/bom_tour.xml @@ -0,0 +1,8 @@ + + + + bom_tour + 1000 + Good job! You went through all steps of this tour. + + diff --git a/furniture_store/data/knowledge_article.xml b/furniture_store/data/knowledge_article.xml index 0cb7c2ce4..988591ac9 100644 --- a/furniture_store/data/knowledge_article.xml +++ b/furniture_store/data/knowledge_article.xml @@ -155,9 +155,10 @@
      - You can use this flow for a product "Bed" & as configuration is already setup. & & & & & & & + You can use this flow for a product "Bed" & as configuration is already setup.
      + Customized product Tutorial


      Flow 4 : Sell Product in KIT @@ -182,6 +183,7 @@

    + Product in KIT Tutorial


    diff --git a/furniture_store/data/order_custom_product_tour.xml b/furniture_store/data/order_custom_product_tour.xml new file mode 100644 index 000000000..0f8e66196 --- /dev/null +++ b/furniture_store/data/order_custom_product_tour.xml @@ -0,0 +1,8 @@ + + + + order_custom_product_tour + 1000 + Good job! You went through all steps of this tour. + + diff --git a/furniture_store/data/product_template.xml b/furniture_store/data/product_template.xml index dd7a54737..17699c018 100644 --- a/furniture_store/data/product_template.xml +++ b/furniture_store/data/product_template.xml @@ -12,7 +12,7 @@ 699.0 - + Sofa (Single seat) diff --git a/furniture_store/data/res_config_settings.xml b/furniture_store/data/res_config_settings.xml index c7266a27f..8a962077d 100644 --- a/furniture_store/data/res_config_settings.xml +++ b/furniture_store/data/res_config_settings.xml @@ -7,6 +7,7 @@ + diff --git a/furniture_store/static/src/js/tours/bom_tour.js b/furniture_store/static/src/js/tours/bom_tour.js new file mode 100644 index 000000000..2e543f617 --- /dev/null +++ b/furniture_store/static/src/js/tours/bom_tour.js @@ -0,0 +1,123 @@ +import { registry } from '@web/core/registry'; + +registry.category("web_tour.tours").add("bom_tour", { + url: "/odoo", + steps: () => [ + { + "trigger": ".o_app[data-menu-xmlid='mrp\\.menu_mrp_root']", + "run": "click" + }, + { + "trigger": ".o-dropdown[data-menu-xmlid='mrp\\.menu_mrp_bom']", + "run": "click" + }, + { + "trigger": ".o-dropdown-item[data-menu-xmlid='mrp\\.menu_mrp_bom_form_action']", + "run": "click" + }, + { + "trigger": ".o_list_button_add", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='product_tmpl_id'] .o-autocomplete--input", + "run": "edit sofa set (3+1" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add > a", + "run": "click" + }, + { + "trigger": ".o_data_cell[name='product_id'] .o-autocomplete--input", + "run": "edit sofa (triple " + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add > a", + "run": "click" + }, + { + "trigger": ".o_data_cell[name='product_id'] .o-autocomplete--input", + "run": "edit sofa (sing" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_data_cell[name='product_qty'] .o_input", + "run": "edit 2" + }, + { + "trigger": ".o-mail-Thread > div", + "run": "click" + }, + { + "trigger": ".o_form_button_save", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + }, + { + "trigger": ".o_app[data-menu-xmlid='sale\\.sale_menu_root']", + "run": "click" + }, + { + "trigger": ".o_list_button_add", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='partner_id'] .o-autocomplete--input", + "run": "edit excellent furnit" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add > a:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_field_product_label_section_and_note_cell .o-autocomplete--input", + "run": "edit sofa set (3" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='action_confirm']", + "run": "click" + }, + { + "trigger": ".o_button_icon", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_validate']", + "run": "click" + }, + { + "trigger": ".o_technical_modal button[name='send_sms']", + "run": "click" + }, + { + "trigger": ".o_back_button > a", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + } +] +}) diff --git a/furniture_store/static/src/js/tours/order_custom_product_tour.js b/furniture_store/static/src/js/tours/order_custom_product_tour.js new file mode 100644 index 000000000..c13038415 --- /dev/null +++ b/furniture_store/static/src/js/tours/order_custom_product_tour.js @@ -0,0 +1,91 @@ +import { registry } from '@web/core/registry'; + +registry.category("web_tour.tours").add("order_custom_product_tour", { + url: "/odoo", + steps: () => [ + { + "trigger": ".o_app[data-menu-xmlid='sale\\.sale_menu_root']", + "run": "click" + }, + { + "trigger": ".o_list_button_add", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='partner_id'] .o-autocomplete--input", + "run": "edit excellent furnit" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add > a:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_field_product_label_section_and_note_cell .o-autocomplete--input", + "run": "edit bed" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_sale_product_configurator_table li:nth-child(2) > div", + "run": "click" + }, + { + "trigger": ".o_sale_product_configurator_table li:nth-child(2) input[name='ptal-1']", + "run": "click" + }, + { + "trigger": ".o_sale_product_configurator_qty input[name='sale_quantity']", + "run": "edit 16" + }, + { + "trigger": ".o_sale_product_configurator_table td:nth-child(2)", + "run": "click" + }, + { + "trigger": ".o_sale_product_configurator_dialog button[name='sale_product_configurator_confirm_button']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='action_confirm']", + "run": "click" + }, + { + "trigger": ".oe_stat_button[name='action_view_purchase_orders']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_confirm']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='action_view_picking']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_validate']", + "run": "click" + }, + { + "trigger": ".o_breadcrumb li:nth-child(2) > a", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='delivery_count'] > .o_stat_text", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_validate']", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + } +] +}) diff --git a/hardware_shop/data/knowledge_article.xml b/hardware_shop/data/knowledge_article.xml index 2708128c0..bc743259e 100644 --- a/hardware_shop/data/knowledge_article.xml +++ b/hardware_shop/data/knowledge_article.xml @@ -93,6 +93,7 @@

  • Add your customer, and the product they want.
  • That's it. You can now send the quotation by email, or confirm it directly for this demo purpose. This order is now placed.

    + Sale Flow Tutorial

    4. Purchase products

    Now that we have placed all these orders, it's time to purchase missing products.

    @@ -101,7 +102,8 @@
  • You just need to send the Request For Quotation by email, or to confirm it manually once the order is placed.
  • Once the order is placed, you can see that the top left button switches to "Receive products". Click it to open your receipt order and validate it to confirm that this product is back in stock.
  • - + Purchase Flow Tutorial +
    💡
    diff --git a/micro_brewery/__manifest__.py b/micro_brewery/__manifest__.py index 3d3d99b9e..c2795b50a 100644 --- a/micro_brewery/__manifest__.py +++ b/micro_brewery/__manifest__.py @@ -63,6 +63,7 @@ 'data/website_view.xml', 'data/sale_order_spreadsheet.xml', 'data/knowledge_tour.xml', + 'data/manufacturing_tour.xml', ], 'demo': [ 'demo/website.xml', @@ -94,6 +95,7 @@ 'assets': { 'web.assets_backend': [ 'micro_brewery/static/src/js/my_tour.js', + 'micro_brewery/static/src/js/tours/manufacturing_tour.js', ] }, 'author': 'Odoo S.A.', @@ -102,6 +104,7 @@ "data/qweb_view.xml", "data/website_view.xml", "static/src/js/my_tour.js", + "static/src/js/tours/manufacturing_tour.js", "demo/website_view.xml", ], 'images': ['images/main.png'], diff --git a/micro_brewery/data/knowledge_article.xml b/micro_brewery/data/knowledge_article.xml index 0b0d156d3..7f8425cff 100644 --- a/micro_brewery/data/knowledge_article.xml +++ b/micro_brewery/data/knowledge_article.xml @@ -89,6 +89,7 @@

    It is interesting to mention that a lot of microbreweries do not have the machines for the kegging but it is possible to create a separate bill of Materials with the type subcontracting, if the bottling is made externally.

    +Crafting a beer Tutorial


    Purchase and receive components

    Go into the purchase application and create a new purchase order with all the components you need to execute your recipe. Make sure you buy enough quantity of each components and validate the order.

    diff --git a/micro_brewery/data/manufacturing_tour.xml b/micro_brewery/data/manufacturing_tour.xml new file mode 100644 index 000000000..fb4b81139 --- /dev/null +++ b/micro_brewery/data/manufacturing_tour.xml @@ -0,0 +1,8 @@ + + + + manufacturing_tour + 1000 + Good job! You went through all steps of this tour. + + diff --git a/micro_brewery/static/src/js/tours/manufacturing_tour.js b/micro_brewery/static/src/js/tours/manufacturing_tour.js new file mode 100644 index 000000000..730ae5831 --- /dev/null +++ b/micro_brewery/static/src/js/tours/manufacturing_tour.js @@ -0,0 +1,135 @@ +import { registry } from '@web/core/registry'; + +registry.category("web_tour.tours").add("manufacturing_tour", { + url: "/odoo", + steps: () => [ + { + "trigger": ".o_app[data-menu-xmlid='mrp\\.menu_mrp_root']", + "run": "click" + }, + { + "trigger": ".o_main_navbar", + "run": "click" + }, + { + "trigger": ".o-dropdown[data-menu-xmlid='mrp\\.menu_mrp_manufacturing']", + "run": "click" + }, + { + "trigger": ".o-dropdown-item[data-menu-xmlid='mrp\\.menu_mrp_production_action']", + "run": "click" + }, + { + "trigger": ".o_list_button_add", + "run": "drag_and_drop .o_control_panel" + }, + { + "trigger": ".o_list_button_add", + "run": "click" + }, + { + "trigger": ".oe_title > h1", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='product_id'] .o-autocomplete--input", + "run": "edit blon" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='action_confirm']", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + }, + { + "trigger": ".o_app[data-menu-xmlid='mrp_workorder\\.menu_mrp_workorder_root']", + "run": "click" + }, + { + "trigger": ".o_control_panel_actions div:nth-child(1) > button:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_mrp_display_record button:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_control_panel_actions button:nth-child(2)", + "run": "click" + }, + { + "trigger": ".o_mrp_display_record button:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_control_panel_actions button:nth-child(3)", + "run": "click" + }, + { + "trigger": ".o_mrp_display_record button:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_control_panel_actions button:nth-child(4)", + "run": "click" + }, + { + "trigger": ".o_mrp_display_record button:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_mrp_display_record button:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_home_menu", + "run": "click" + }, + { + "trigger": ".o_app[data-menu-xmlid='mrp\\.menu_mrp_root']", + "run": "click" + }, + { + "trigger": ".o-dropdown[data-menu-xmlid='mrp\\.menu_mrp_manufacturing']", + "run": "click" + }, + { + "trigger": ".o-dropdown-item[data-menu-xmlid='mrp\\.menu_mrp_production_action']", + "run": "click" + }, + { + "trigger": ".o_data_row:nth-child(4) > .o_data_cell[name='name']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_mark_done']", + "run": "click" + }, + { + "trigger": ".o-default-button", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='lot_producing_id'] .o-autocomplete--input", + "run": "edit 001" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_mark_done']", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + } +] +}) diff --git a/odoo_partner/data/knowledge_article.xml b/odoo_partner/data/knowledge_article.xml index 343c9cca8..0e72e4c94 100644 --- a/odoo_partner/data/knowledge_article.xml +++ b/odoo_partner/data/knowledge_article.xml @@ -65,7 +65,10 @@
    • Track your sales orders and revenue
    -

    🎓 Sales

    +


    Projects 📊

    Utilize the Project app to manage Success Packs and large implementations:

    diff --git a/pharmacy_retail/__manifest__.py b/pharmacy_retail/__manifest__.py index 980f3c005..8d485d5d1 100644 --- a/pharmacy_retail/__manifest__.py +++ b/pharmacy_retail/__manifest__.py @@ -47,6 +47,7 @@ 'data/res_config_settings.xml', 'data/mail_message.xml', 'data/knowledge_tour.xml', + 'data/purchase_custom_tour.xml', ], 'demo': [ 'demo/res_partner_title.xml', @@ -74,6 +75,7 @@ 'assets': { 'web.assets_backend': [ 'pharmacy_retail/static/src/js/my_tour.js', + 'pharmacy_retail/static/src/js/tours/purchase_custom_tour.js', ] }, 'author': 'Odoo S.A.', @@ -81,6 +83,7 @@ "data/qweb_view.xml", "data/knowledge_article.xml", "static/src/js/my_tour.js", + "static/src/js/tours/purchase_custom_tour.js", ], 'images': ['images/main.png'], } diff --git a/pharmacy_retail/data/knowledge_article.xml b/pharmacy_retail/data/knowledge_article.xml index 9b22ff28b..a2fcbdf97 100644 --- a/pharmacy_retail/data/knowledge_article.xml +++ b/pharmacy_retail/data/knowledge_article.xml @@ -71,6 +71,7 @@

    Lot Serial Number and Expiry Date Tracking


    When the material is received, the user can either scan the barcode or manually enter the Lot Number, Expiry Date and Quantity for "Acetratine 10 mg” product received.

    + Purchase Flow Tutorial @@ -177,6 +178,9 @@

    Create Invoice from Sales Order

    Once the delivery is validated, go back to the sales order and "Create Invoice".

    This will create an invoice based on the delivered products.

    +

    + Sale Flow Tutorial +

    The invoice will consider the discounted price due to the applied B2B customer discount.


    Flow 3: Sales B2C Customer : Point of Sale with Offers

    diff --git a/pharmacy_retail/data/purchase_custom_tour.xml b/pharmacy_retail/data/purchase_custom_tour.xml new file mode 100644 index 000000000..b093db6a9 --- /dev/null +++ b/pharmacy_retail/data/purchase_custom_tour.xml @@ -0,0 +1,8 @@ + + + + purchase_custom_tour + 1000 + Good job! You went through all steps of this tour. + + diff --git a/pharmacy_retail/static/src/js/tours/purchase_custom_tour.js b/pharmacy_retail/static/src/js/tours/purchase_custom_tour.js new file mode 100644 index 000000000..c123fedb9 --- /dev/null +++ b/pharmacy_retail/static/src/js/tours/purchase_custom_tour.js @@ -0,0 +1,79 @@ +import { registry } from '@web/core/registry'; + +registry.category("web_tour.tours").add("purchase_custom_tour", { + url: "/odoo", + steps: () => [ + { + "trigger": ".o_app[data-menu-xmlid='purchase\\.menu_purchase_root']", + "run": "click" + }, + { + "trigger": ".o_list_button_add", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='partner_id'] .o-autocomplete--input", + "run": "edit biocon" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_field_x2many_list_row_add > a:nth-child(1)", + "run": "click" + }, + { + "trigger": ".o_field_product_label_section_and_note_cell .o-autocomplete--input", + "run": "edit acetratine" + }, + { + "trigger": ".o-autocomplete--dropdown-item:nth-child(1) > a", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='product_qty'] > .o_input", + "run": "edit 12" + }, + { + "trigger": ".o_field_widget[name='partner_id'] .o-autocomplete--input", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_confirm']", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='action_view_picking']", + "run": "click" + }, + { + "trigger": ".o_data_cell:nth-child(5) > button[name='Open\\ Move']", + "run": "click" + }, + { + "trigger": ".o_data_cell[name='lot_name']", + "run": "click" + }, + { + "trigger": ".o_field_widget[name='lot_name'] > .o_input", + "run": "edit lot-111" + }, + { + "trigger": "footer > .o_form_button_save", + "run": "click" + }, + { + "trigger": ".o_statusbar_buttons > button[name='button_validate']", + "run": "click" + }, + { + "trigger": ".o_back_button > a", + "run": "click" + }, + { + "trigger": ".o_menu_brand", + "run": "click" + } +] +})