From d28030e9532f0496c1e9cfc71b87a23b3327d1f0 Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Tue, 15 Oct 2024 10:39:56 +0530
Subject: [PATCH 01/27] [ADD] agriculture_shop: purchase flow tour
---
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 ++++++++++++++++++
5 files changed, 162 insertions(+), 1 deletion(-)
create mode 100644 agriculture_shop/data/purchase_tour.xml
create mode 100644 agriculture_shop/static/src/js/tours/purchase_flow.js
diff --git a/agriculture_shop/__manifest__.py b/agriculture_shop/__manifest__.py
index 323f66b789..86e4386bb8 100644
--- a/agriculture_shop/__manifest__.py
+++ b/agriculture_shop/__manifest__.py
@@ -38,6 +38,7 @@
'data/website_theme_apply.xml',
'data/ir_model_data.xml',
'data/knowledge_tour.xml',
+ 'data/purchase_tour.xml',
],
'demo': [
'demo/res_partner.xml',
@@ -70,12 +71,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",
],
'images': ['images/main.png'],
}
diff --git a/agriculture_shop/data/knowledge_article.xml b/agriculture_shop/data/knowledge_article.xml
index 9d31b0e7da..d03156f02b 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"
+ }
+]
+})
From 6f769f90039c4e926d995042cc6f64bb3c064af0 Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Tue, 15 Oct 2024 14:37:16 +0530
Subject: [PATCH 02/27] [ADD] art_craft: consignment purchase flow tour
---
agriculture_shop/data/knowledge_article.xml | 2 +-
art_craft/__manifest__.py | 3 +
art_craft/data/consignment_purchase_tour.xml | 8 ++
art_craft/data/knowledge_article.xml | 1 +
.../src/js/tours/consignment_purchase_tour.js | 79 +++++++++++++++++++
5 files changed, 92 insertions(+), 1 deletion(-)
create mode 100644 art_craft/data/consignment_purchase_tour.xml
create mode 100644 art_craft/static/src/js/tours/consignment_purchase_tour.js
diff --git a/agriculture_shop/data/knowledge_article.xml b/agriculture_shop/data/knowledge_article.xml
index d03156f02b..ff58b61e0f 100644
--- a/agriculture_shop/data/knowledge_article.xml
+++ b/agriculture_shop/data/knowledge_article.xml
@@ -41,7 +41,7 @@
Confirm RFQ based on best price
Validate the reception for all quantities at once.
- Purchase Flow Tutorial
+ Purchase Flow Tutorial
Flow 2: Sales from Website (B2B / B2C)
diff --git a/art_craft/__manifest__.py b/art_craft/__manifest__.py
index c7fbf38fc3..7242e1a8cd 100644
--- a/art_craft/__manifest__.py
+++ b/art_craft/__manifest__.py
@@ -52,6 +52,7 @@
'data/website_view.xml',
'data/ir_model_data.xml',
'data/knowledge_tour.xml',
+ 'data/consignment_purchase_tour.xml',
],
'demo': [
'demo/res_partner.xml',
@@ -79,12 +80,14 @@
'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.',
"cloc_exclude": [
"data/knowledge_article.xml",
"static/src/js/my_tour.js",
+ "static/src/js/tours/consignment_purchase_tour.js",
],
'images': ['images/main.png'],
}
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..08631b6e3a 100644
--- a/art_craft/data/knowledge_article.xml
+++ b/art_craft/data/knowledge_article.xml
@@ -69,6 +69,7 @@
Reception time system auto took (Customization: Automated action)the consignee name in the standard field of the consignee owner or also took the third party name manually.
Validate the reception for all quantities at once.
+ Consignment Purchase Flow Tutorial
Flow 3: Point of sales - Regular
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"
+ }
+]
+})
From c564cf44faeed8f86e748b4118b5907c93ce1b85 Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Wed, 16 Oct 2024 10:44:58 +0530
Subject: [PATCH 03/27] [ADD] beverage_distributor: added tour
---
beverage_distributor/__manifest__.py | 3 +
.../data/deposit_management_tour.xml | 8 +
.../data/knowledge_article.xml | 1 +
.../src/js/tours/deposit_management_tour.js | 143 ++++++++++++++++++
4 files changed, 155 insertions(+)
create mode 100644 beverage_distributor/data/deposit_management_tour.xml
create mode 100644 beverage_distributor/static/src/js/tours/deposit_management_tour.js
diff --git a/beverage_distributor/__manifest__.py b/beverage_distributor/__manifest__.py
index 8f041c799c..84a39fbfd4 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",
],
'license': 'OPL-1',
'author': 'Odoo S.A.',
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..97092efd60 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:
diff --git a/beverage_distributor/static/src/js/tours/deposit_management_tour.js b/beverage_distributor/static/src/js/tours/deposit_management_tour.js
new file mode 100644
index 0000000000..0c8aeb9d35
--- /dev/null
+++ b/beverage_distributor/static/src/js/tours/deposit_management_tour.js
@@ -0,0 +1,143 @@
+import { registry } from '@web/core/registry';
+
+registry.category("web_tour.tours").add("deposit_management_tour", {
+ url: "/odoo",
+ steps: () => [
+ {
+ "trigger": ".o_app[data-menu-xmlid='sale\\.sale_menu_root']",
+ "run": "click"
+ },
+ {
+ "trigger": ".o-dropdown[data-menu-xmlid='sale\\.product_menu_catalog']",
+ "run": "click"
+ },
+ {
+ "trigger": ".o-dropdown-item[data-menu-xmlid='sale\\.menu_product_template_action']",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_kanban_record:nth-child(19) > main > span:nth-child(2)",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_field_widget[name='x_deposit_product_1'] .o-autocomplete--input",
+ "run": "click"
+ },
+ {
+ "trigger": ".o-autocomplete--dropdown-item:nth-child(4) > a",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_form_button_save",
+ "run": "click"
+ },
+ {
+ "trigger": ".o-dropdown[data-menu-xmlid='sale\\.sale_order_menu']",
+ "run": "click"
+ },
+ {
+ "trigger": ".o-dropdown-item[data-menu-xmlid='sale\\.menu_sale_quotations']",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_list_button_add",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_field_widget[name='partner_id'] .o-autocomplete--input",
+ "run": "edit gourmet"
+ },
+ {
+ "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 mobius tri"
+ },
+ {
+ "trigger": ".o-autocomplete--dropdown-item:nth-child(2) > a",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_statusbar_buttons > button[name='action_confirm']",
+ "run": "click"
+ },
+ {
+ "trigger": ".oe_stat_button[name='action_view_delivery']",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_statusbar_buttons > button[name='button_validate']",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_statusbar_buttons > button[name='\\34 10']",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_field_x2many_list_row_add > a",
+ "run": "click"
+ },
+ {
+ "trigger": ".o-autocomplete--input",
+ "run": "edit deposit"
+ },
+ {
+ "trigger": ".o-autocomplete--dropdown-item:nth-child(4) > a",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_field_widget[name='quantity'] > .o_input",
+ "run": "edit 3"
+ },
+ {
+ "trigger": ".o_field_x2many_list_row_add > a",
+ "run": "click"
+ },
+ {
+ "trigger": ".o-autocomplete--input",
+ "run": "edit depo"
+ },
+ {
+ "trigger": ".o-autocomplete--dropdown-item:nth-child(3) > a",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_field_widget[name='quantity'] > .o_input",
+ "run": "edit 20"
+ },
+ {
+ "trigger": ".o_technical_modal button[name='action_create_returns']",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_statusbar_buttons > button[name='button_validate']",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_breadcrumb li:nth-child(2) > a",
+ "run": "click"
+ },
+ {
+ "trigger": ".o_statusbar_buttons > button[name='\\37 21']",
+ "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"
+ }
+]
+})
From f4a94a57145b33d441be108fcd7400b1dacd596f Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Wed, 16 Oct 2024 14:36:40 +0530
Subject: [PATCH 04/27] [ADD] micro_brewery: added tour
---
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 ++++++++++++++++++
4 files changed, 147 insertions(+)
create mode 100644 micro_brewery/data/manufacturing_tour.xml
create mode 100644 micro_brewery/static/src/js/tours/manufacturing_tour.js
diff --git a/micro_brewery/__manifest__.py b/micro_brewery/__manifest__.py
index 62c4b10bf5..a2d4558f26 100644
--- a/micro_brewery/__manifest__.py
+++ b/micro_brewery/__manifest__.py
@@ -53,6 +53,7 @@
'data/website_view.xml',
'data/ir_model_data.xml',
'data/knowledge_tour.xml',
+ 'data/manufacturing_tour.xml',
],
'demo': [
'demo/website.xml',
@@ -84,12 +85,14 @@
'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.',
"cloc_exclude": [
"data/knowledge_article.xml",
"static/src/js/my_tour.js",
+ "static/src/js/tours/manufacturing_tour.js",
],
'images': ['images/main.png'],
}
diff --git a/micro_brewery/data/knowledge_article.xml b/micro_brewery/data/knowledge_article.xml
index 739f39ae67..734fbaf801 100644
--- a/micro_brewery/data/knowledge_article.xml
+++ b/micro_brewery/data/knowledge_article.xml
@@ -99,6 +99,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"
+ }
+]
+})
From 1e3ea4efb16438481639f1f4814ab8b2df0c8d13 Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Thu, 17 Oct 2024 11:18:43 +0530
Subject: [PATCH 05/27] [ADD] art_craft: added button in knowledge so it gets
redirected directly to tour
---
art_craft/data/knowledge_article.xml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/art_craft/data/knowledge_article.xml b/art_craft/data/knowledge_article.xml
index 08631b6e3a..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
@@ -69,6 +71,7 @@
Reception time system auto took (Customization: Automated action)the consignee name in the standard field of the consignee owner or also took the third party name manually.
Validate the reception for all quantities at once.
+
Consignment Purchase Flow Tutorial
Flow 3: Point of sales - Regular
From c91387f04e85b9d53cbf5b47ae10979ef409060b Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Thu, 17 Oct 2024 12:14:15 +0530
Subject: [PATCH 06/27] [ADD] automobile: added the button in the knowldege
article so it redirects to the tour
---
automobile/data/knowledge_article.xml | 6 ++++++
1 file changed, 6 insertions(+)
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.
From cce5ce421a7e444e5266c19cb49021aae480b8ea Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Thu, 17 Oct 2024 12:48:32 +0530
Subject: [PATCH 07/27] [ADD] beverage_distributor: added button in knowledge
---
beverage_distributor/data/knowledge_article.xml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/beverage_distributor/data/knowledge_article.xml b/beverage_distributor/data/knowledge_article.xml
index 97092efd60..4157009fbe 100644
--- a/beverage_distributor/data/knowledge_article.xml
+++ b/beverage_distributor/data/knowledge_article.xml
@@ -90,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:
From fdd2adf7a43c7e097e18c044abad38c52e1840f6 Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Fri, 18 Oct 2024 10:38:13 +0530
Subject: [PATCH 10/27] [ADD] clothing_boutique: added the button so it
redirects to purchase tour
---
clothing_boutique/data/knowledge_article.xml | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
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.
From a4a6c627a652b463f8470024636248119b8bf056 Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Fri, 18 Oct 2024 11:48:40 +0530
Subject: [PATCH 11/27] [ADD] coal_petroleum: added the tours as well the
buttons to redirect to tours in knowledge articles
---
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 ++++++++++++++++++
6 files changed, 385 insertions(+)
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
diff --git a/coal_petroleum/__manifest__.py b/coal_petroleum/__manifest__.py
index 212e0c739c..c72868cd99 100644
--- a/coal_petroleum/__manifest__.py
+++ b/coal_petroleum/__manifest__.py
@@ -47,6 +47,8 @@
'data/quality_point.xml',
'data/ir_model_data.xml',
'data/knowledge_tour.xml',
+ 'data/purchase_flow_tour.xml',
+ 'data/sale_flow_tour.xml',
],
'demo': [
'demo/res_partner.xml',
@@ -63,12 +65,16 @@
'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.',
"cloc_exclude": [
"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"
+ }
+]
+})
From db21e75c3dbfa5be715fee10b5c9225f9341426c Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Fri, 18 Oct 2024 12:23:00 +0530
Subject: [PATCH 12/27] [ADD] custom_furniture: added button in knowledge to
redirect towards the tour
---
custom_furniture/data/knowledge_article.xml | 6 ++++++
1 file changed, 6 insertions(+)
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 🦺
From 07b1127e88e6b4f79216eb3f99da5a81586045c7 Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Fri, 18 Oct 2024 14:33:21 +0530
Subject: [PATCH 13/27] [ADD] electronic_store: added the purchase with lot no
---
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 +++++++++++++++++++
5 files changed, 109 insertions(+)
create mode 100644 electronic_store/data/purchase_lot_tour.xml
create mode 100644 electronic_store/static/src/js/tours/purchase_lot_tour.js
diff --git a/electronic_store/__manifest__.py b/electronic_store/__manifest__.py
index c8aaeb43f0..4f8874228a 100644
--- a/electronic_store/__manifest__.py
+++ b/electronic_store/__manifest__.py
@@ -53,6 +53,7 @@
'data/mail_message.xml',
'data/ir_model_data.xml',
'data/knowledge_tour.xml',
+ 'data/purchase_lot_tour.xml',
],
'demo': [
'demo/res_partner.xml',
@@ -89,12 +90,14 @@
'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.',
"cloc_exclude": [
"data/knowledge_article.xml",
"static/src/js/my_tour.js",
+ "static/src/js/tours/purchase_lot_tour.js",
],
'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"
+ }
+]
+})
From b4c6d0aa0e4b7973d4e2a2b2d65a9a07e4934df4 Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Mon, 21 Oct 2024 11:30:56 +0530
Subject: [PATCH 14/27] [ADD] eyewear_shop: added js tour for sale order cash
flow and a button in knowledge article
---
eyewear_shop/__manifest__.py | 3 +
eyewear_shop/data/knowledge_article.xml | 1 +
eyewear_shop/data/sale_order_to_cash_tour.xml | 8 ++
.../src/js/tours/sale_order_to_cash_tour.js | 87 +++++++++++++++++++
4 files changed, 99 insertions(+)
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
diff --git a/eyewear_shop/__manifest__.py b/eyewear_shop/__manifest__.py
index 532c2688f0..c6d3c74e32 100644
--- a/eyewear_shop/__manifest__.py
+++ b/eyewear_shop/__manifest__.py
@@ -45,6 +45,7 @@
'data/website_theme_apply.xml',
'data/ir_model_data.xml',
'data/knowledge_tour.xml',
+ 'data/sale_order_to_cash_tour.xml',
],
'demo': [
'demo/res_config_settings.xml',
@@ -80,12 +81,14 @@
'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.',
"cloc_exclude": [
"data/knowledge_article.xml",
"static/src/js/my_tour.js",
+ "static/src/js/tours/sale_order_to_cash_tour.js",
],
'images': ['images/main.png'],
}
diff --git a/eyewear_shop/data/knowledge_article.xml b/eyewear_shop/data/knowledge_article.xml
index 3f2f120e3f..335b663d7c 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
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"
+ }
+]
+})
From 01d04b8f826bece82c75402db29e0a27eedc4f79 Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Mon, 21 Oct 2024 12:51:33 +0530
Subject: [PATCH 15/27] [ADD] eyewear_shop: enabled some essential settings
---
eyewear_shop/__manifest__.py | 2 ++
eyewear_shop/data/res_config_settings.xml | 2 ++
eyewear_shop/demo/stock_location.xml | 26 +++++++++++++++++++++++
eyewear_shop/demo/stock_warehouse.xml | 21 ++++++++++++++++++
4 files changed, 51 insertions(+)
create mode 100644 eyewear_shop/demo/stock_location.xml
create mode 100644 eyewear_shop/demo/stock_warehouse.xml
diff --git a/eyewear_shop/__manifest__.py b/eyewear_shop/__manifest__.py
index c6d3c74e32..4475403c90 100644
--- a/eyewear_shop/__manifest__.py
+++ b/eyewear_shop/__manifest__.py
@@ -68,6 +68,8 @@
'demo/sale_order_line.xml',
'demo/sale_order_confirm.xml',
'demo/stock_warehouse_orderpoint.xml',
+ 'demo/stock_location.xml',
+ 'demo/stock_warehouse.xml',
'demo/website_ir_attachment.xml',
'demo/website_view.xml',
'demo/website_theme_apply.xml',
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/demo/stock_location.xml b/eyewear_shop/demo/stock_location.xml
new file mode 100644
index 0000000000..3ea879187c
--- /dev/null
+++ b/eyewear_shop/demo/stock_location.xml
@@ -0,0 +1,26 @@
+
+
+
+ Physical Locations
+ view
+
+
+
+ NY
+
+ view
+
+
+
+ Texas
+
+ view
+
+
+ Stock
+
+ Texas/Stock
+
+ TEXASSTOCK
+
+
diff --git a/eyewear_shop/demo/stock_warehouse.xml b/eyewear_shop/demo/stock_warehouse.xml
new file mode 100644
index 0000000000..60c387d9f7
--- /dev/null
+++ b/eyewear_shop/demo/stock_warehouse.xml
@@ -0,0 +1,21 @@
+
+
+
+ ViSiO - New York
+
+
+ NY
+
+
+
+
+
+
+
+
+ Visio - Texas
+
+
+ Texas
+
+
From 335b92d752005f9e100368c42eba84234de5f944 Mon Sep 17 00:00:00 2001
From: Dhrumil Shah
Date: Tue, 22 Oct 2024 11:43:16 +0530
Subject: [PATCH 16/27] [ADD] eyewear_shop: added the stock route,rule and
added company
---
eyewear_shop/__manifest__.py | 2 +
eyewear_shop/demo/res_company.xml | 25 +++++
eyewear_shop/demo/stock_route.xml | 95 ++++++++++++++++++
eyewear_shop/demo/stock_warehouse.xml | 14 +--
.../static/src/binary/res_company/1-logo | Bin 0 -> 66960 bytes
.../static/src/binary/res_company/1-logo_web | Bin 0 -> 17137 bytes
.../static/src/binary/res_company/2-logo | Bin 0 -> 66960 bytes
.../static/src/binary/res_company/2-logo_web | Bin 0 -> 17137 bytes
8 files changed, 130 insertions(+), 6 deletions(-)
create mode 100644 eyewear_shop/demo/res_company.xml
create mode 100644 eyewear_shop/demo/stock_route.xml
create mode 100644 eyewear_shop/static/src/binary/res_company/1-logo
create mode 100644 eyewear_shop/static/src/binary/res_company/1-logo_web
create mode 100644 eyewear_shop/static/src/binary/res_company/2-logo
create mode 100644 eyewear_shop/static/src/binary/res_company/2-logo_web
diff --git a/eyewear_shop/__manifest__.py b/eyewear_shop/__manifest__.py
index 4475403c90..d04dfafabd 100644
--- a/eyewear_shop/__manifest__.py
+++ b/eyewear_shop/__manifest__.py
@@ -52,6 +52,7 @@
'demo/website.xml',
'demo/stock_lot.xml',
'demo/res_partner.xml',
+ 'demo/res_company.xml',
'demo/loyalty_program.xml',
'demo/loyalty_rule.xml',
'demo/loyalty_reward.xml',
@@ -70,6 +71,7 @@
'demo/stock_warehouse_orderpoint.xml',
'demo/stock_location.xml',
'demo/stock_warehouse.xml',
+ 'demo/stock_route.xml',
'demo/website_ir_attachment.xml',
'demo/website_view.xml',
'demo/website_theme_apply.xml',
diff --git a/eyewear_shop/demo/res_company.xml b/eyewear_shop/demo/res_company.xml
new file mode 100644
index 0000000000..31991456f2
--- /dev/null
+++ b/eyewear_shop/demo/res_company.xml
@@ -0,0 +1,25 @@
+
+
+
+ Visio IN
+
+
+
+ info@odoo.com
+ 401 & 402, Floor 4, IT Tower 3
+
+
+
+ 382007
+
+
+ Visio - New York
+
+
+
+ contact@visio.com
+ Street No.756
+ Maple Avenue Street
+
+
+
diff --git a/eyewear_shop/demo/stock_route.xml b/eyewear_shop/demo/stock_route.xml
new file mode 100644
index 0000000000..a127bf6e35
--- /dev/null
+++ b/eyewear_shop/demo/stock_route.xml
@@ -0,0 +1,95 @@
+
+
+
+ Visio IN - Ahmedabad: Receive in 1 step (stock)
+
+
+
+
+ 9
+
+
+ Visio IN - Ahmedabad: Deliver in 1 step (ship)
+
+
+
+
+ 10
+
+
+ Visio IN - Baroda: Receive in 1 step (stock)
+
+
+
+
+ 9
+
+
+ Visio IN - Baroda: Deliver in 1 step (ship)
+
+
+
+
+ 10
+
+
+ Visio IN - Baroda: Supply Product from Visio IN - Ahmedabad
+
+
+
+
+
+ Visio IN - Ahmedabad: Supply Product from Visio IN - Baroda
+
+
+
+
+
+ ViSiO - New York: Supply Product from Visio - Texas
+
+
+
+
+
+
+ ViSiO - New York: Receive in 1 step (stock)
+
+
+
+
+
+ 9
+
+
+ ViSiO - New York: Deliver in 1 step (ship)
+
+
+
+
+
+ 10
+
+
+ Visio - Texas: Receive in 1 step (stock)
+
+
+
+
+ 9
+
+
+ Visio - Texas: Deliver in 1 step (ship)
+
+
+
+
+ 10
+
+
+ Visio - Texas: Supply Product from visio-sunglasses - New York
+
+
+
+
+
+
diff --git a/eyewear_shop/demo/stock_warehouse.xml b/eyewear_shop/demo/stock_warehouse.xml
index 60c387d9f7..0597379d30 100644
--- a/eyewear_shop/demo/stock_warehouse.xml
+++ b/eyewear_shop/demo/stock_warehouse.xml
@@ -1,5 +1,12 @@
+
+ Visio - Texas
+
+
+ Texas
+
+
ViSiO - New York
@@ -11,11 +18,6 @@
-
-
- Visio - Texas
-
-
- Texas
+
diff --git a/eyewear_shop/static/src/binary/res_company/1-logo b/eyewear_shop/static/src/binary/res_company/1-logo
new file mode 100644
index 0000000000000000000000000000000000000000..3a044e2c741bfdc752d1aca101ffff43af21a5da
GIT binary patch
literal 66960
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 |