diff --git a/agriculture_shop/__manifest__.py b/agriculture_shop/__manifest__.py index 386b686b66..1f6fee17e6 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 9d31b0e7da..ff58b61e0f 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 0000000000..b093db6a99 --- /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 07cd0852e5..96d68d0e89 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 0000000000..21b38c94b6 --- /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 ddb8a19054..7e7be87025 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 0000000000..e998f1d7a2 --- /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 35013ca559..c36280c062 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 0000000000..5030ef1395 --- /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 c9abed04f7..0b50ccae0d 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 db3c428b19..8038f1dd45 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 0000000000..4006fd65fd --- /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 9a9c7c6e92..4157009fbe 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 0328607183..f1a79bc22b 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 a41cb6c0cb..31f13bb1e6 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 be6a39ad85..53e8754d74 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 0000000000..101af32035 --- /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 0000000000..b3dd06ab4f --- /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 0000000000..19eb5e5f45 --- /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 0000000000..27073aa3d7 --- /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 81622a9fad..87ea6aed0e 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 b7930fb36c..5c03010018 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 e28dac969e..147b5ba64f 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 0000000000..c4f97f9b25 --- /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 457cc8c995..cba7b64ac9 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 0000000000..ffe0b5eeca --- /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 f228a6a397..e87519de34 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 3f2f120e3f..37e84de6c4 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 4a62197abf..0ecafc6a10 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 0000000000..e14964165d --- /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 0000000000..10300dcee5 --- /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 55629bac7b..7ecf72c14b 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 6e9f8f64a7..efe159b1db 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 dad9735814..191c72eb1b 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 0000000000..2057bee7cd --- /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 0cb7c2ce4d..988591ac97 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 0000000000..0f8e66196c --- /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 dd7a54737b..17699c0181 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 c7266a27fc..8a962077d7 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 0000000000..2e543f6173 --- /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 0000000000..c130384150 --- /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 2708128c0c..bc743259ef 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 3d3d99b9e2..c2795b50a8 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 0b0d156d3f..7f8425cff2 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 0000000000..fb4b811393 --- /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 0000000000..730ae58311 --- /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 343c9cca8a..0e72e4c94e 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 980f3c0054..8d485d5d15 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 9b22ff28b6..a2fcbdf975 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 0000000000..b093db6a99 --- /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 0000000000..c123fedb91 --- /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" + } +] +})