@@ -72,7 +66,17 @@
- ]]>
+ ]]>
+
+
+
+ Talent Acquisition
+ 📘
+ write
+
+
+
+
diff --git a/headhunter/data/knowledge_article_favorite.xml b/headhunter/data/knowledge_article_favorite.xml
index b7c6a9bbc..3d5b6471e 100644
--- a/headhunter/data/knowledge_article_favorite.xml
+++ b/headhunter/data/knowledge_article_favorite.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/headhunter/data/mail_message.xml b/headhunter/data/mail_message.xml
index 1008ecd63..019d0010a 100644
--- a/headhunter/data/mail_message.xml
+++ b/headhunter/data/mail_message.xml
@@ -6,11 +6,10 @@
email
-
Knowledge article
+
🚀 Get started with Odoo Headhunter
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('headhunter.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/headhunter/static/src/js/my_tour.js b/headhunter/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/headhunter/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});
diff --git a/industry_lawyer/__manifest__.py b/industry_lawyer/__manifest__.py
index adea7e234..6c24c0ef6 100644
--- a/industry_lawyer/__manifest__.py
+++ b/industry_lawyer/__manifest__.py
@@ -47,6 +47,15 @@
'demo/website_theme_apply.xml',
],
'license': 'OPL-1',
+ 'assets': {
+ 'web.assets_backend': [
+ 'industry_lawyer/static/src/js/my_tour.js',
+ ]
+ },
'author': 'Odoo S.A.',
+ "cloc_exclude": [
+ "data/knowledge_article.xml",
+ "static/src/js/my_tour.js",
+ ],
'images': ['images/main.png'],
}
diff --git a/industry_lawyer/data/knowledge_article.xml b/industry_lawyer/data/knowledge_article.xml
index 1bda44f02..d74ca19dc 100644
--- a/industry_lawyer/data/knowledge_article.xml
+++ b/industry_lawyer/data/knowledge_article.xml
@@ -1,13 +1,6 @@
-
- Law Firm
- write
- workspace
-
- 50.0
-
-
+
Lawyer firms
This setup is for lawyers firms. They represent their clients and defend their interest during juridical procedures.
@@ -30,6 +23,17 @@
From the Sales app:
- Select the project SO.
- Input the amount of delivered dactylographied pages and travel expenses incurred.
- Create a Regular Invoice.
]]>
+
+
+
+ Law Firm
+ write
+ workspace
+
+ 50.0
+
+
+
diff --git a/industry_lawyer/data/knowledge_article_favorite.xml b/industry_lawyer/data/knowledge_article_favorite.xml
index 2f6f515a1..3d5b6471e 100644
--- a/industry_lawyer/data/knowledge_article_favorite.xml
+++ b/industry_lawyer/data/knowledge_article_favorite.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/industry_lawyer/data/mail_message.xml b/industry_lawyer/data/mail_message.xml
index 248ac8145..3f8e41db2 100644
--- a/industry_lawyer/data/mail_message.xml
+++ b/industry_lawyer/data/mail_message.xml
@@ -6,11 +6,10 @@
email
-
Knowledge article
+
🚀 Get started with Odoo Lawyer
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('industry_lawyer.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/industry_lawyer/static/src/js/my_tour.js b/industry_lawyer/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/industry_lawyer/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});
diff --git a/industry_real_estate/__manifest__.py b/industry_real_estate/__manifest__.py
index 8c859ed5c..a4ebff79b 100644
--- a/industry_real_estate/__manifest__.py
+++ b/industry_real_estate/__manifest__.py
@@ -69,6 +69,15 @@
'demo/website_theme_apply.xml',
],
'license': 'OPL-1',
+ 'assets': {
+ 'web.assets_backend': [
+ 'industry_real_estate/static/src/js/my_tour.js',
+ ]
+ },
'author': 'Odoo S.A.',
+ "cloc_exclude": [
+ "data/knowledge_article.xml",
+ "static/src/js/my_tour.js",
+ ],
'images': ['images/main.png'],
}
diff --git a/industry_real_estate/data/knowledge_article.xml b/industry_real_estate/data/knowledge_article.xml
index 87b6dcefa..b08d823fb 100644
--- a/industry_real_estate/data/knowledge_article.xml
+++ b/industry_real_estate/data/knowledge_article.xml
@@ -1,15 +1,6 @@
-
- Real Estate rental agency 🏠🏢
- 1
- workspace
-
-
- write
-
- 75.40000000000002
-
+
Real Estate rental agency 🏠🏢
@@ -45,6 +36,19 @@
From here, you can also easily create a new rental contract with ease. Simply click on the "New" button and enter all the relevant details.
One last thing to note: if you don't have any rental contracts for a property yet, you won't see this property in the Gantt view.
]]>
+
+
+
+ Real Estate rental agency 🏠🏢
+ 1
+ workspace
+
+
+ write
+
+ 75.40000000000002
+
+
diff --git a/industry_real_estate/data/knowledge_article_favorite.xml b/industry_real_estate/data/knowledge_article_favorite.xml
index 6584b3d40..3d5b6471e 100644
--- a/industry_real_estate/data/knowledge_article_favorite.xml
+++ b/industry_real_estate/data/knowledge_article_favorite.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/industry_real_estate/data/mail_message.xml b/industry_real_estate/data/mail_message.xml
index b6d57c157..546293745 100644
--- a/industry_real_estate/data/mail_message.xml
+++ b/industry_real_estate/data/mail_message.xml
@@ -6,11 +6,10 @@
email
-
Knowledge article
+
🚀 Get started with Odoo Real Estate
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('industry_real_estate.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/industry_real_estate/static/src/js/my_tour.js b/industry_real_estate/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/industry_real_estate/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});
diff --git a/industry_restaurant/__manifest__.py b/industry_restaurant/__manifest__.py
index 7aee03119..d08741f0e 100644
--- a/industry_restaurant/__manifest__.py
+++ b/industry_restaurant/__manifest__.py
@@ -60,6 +60,14 @@
'demo/website_theme_apply.xml',
],
'license': 'OPL-1',
+ 'assets': {
+ 'web.assets_backend': [
+ 'industry_restaurant/static/src/js/my_tour.js',
+ ]
+ },
'author': 'Odoo S.A.',
+ "cloc_exclude": [
+ "static/src/js/my_tour.js",
+ ],
'images': ['images/main.png'],
}
diff --git a/industry_restaurant/data/mail_message.xml b/industry_restaurant/data/mail_message.xml
index 18951835b..38a879fc0 100644
--- a/industry_restaurant/data/mail_message.xml
+++ b/industry_restaurant/data/mail_message.xml
@@ -6,11 +6,10 @@
email
-
Knowledge article
+
🚀 Get started with Odoo Restaurant
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('industry_restaurant.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/industry_restaurant/static/src/js/my_tour.js b/industry_restaurant/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/industry_restaurant/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});
diff --git a/it_hardware/__manifest__.py b/it_hardware/__manifest__.py
index 3ec7d247b..725bb5981 100644
--- a/it_hardware/__manifest__.py
+++ b/it_hardware/__manifest__.py
@@ -67,6 +67,15 @@
'demo/payment_provider_demo_post.xml',
],
'license': 'OPL-1',
+ 'assets': {
+ 'web.assets_backend': [
+ 'it_hardware/static/src/js/my_tour.js',
+ ]
+ },
'author': 'Odoo S.A.',
+ "cloc_exclude": [
+ "data/knowledge_article.xml",
+ "static/src/js/my_tour.js",
+ ],
'images': ['images/main.png'],
}
diff --git a/it_hardware/data/knowledge_article.xml b/it_hardware/data/knowledge_article.xml
index 0b3ad2545..f88d0fe65 100644
--- a/it_hardware/data/knowledge_article.xml
+++ b/it_hardware/data/knowledge_article.xml
@@ -1,14 +1,7 @@
-
- IT Hardware & Support
- 💻
- write
-
-
-
-
-
+ IT Hardware Sales & Service
Company is a specialized IT Sales Establishment that focuses on providing a diverse selection of IT components for sale. The product contains laptops, RAM, accessories, CCTV cameras, and other related items. In addition to product sales, it is also offering installation and repair services for these components.
@@ -184,7 +177,18 @@
If the product is under warranty then no need to create the invoice and if the product is out of warranty then the user can send the quotation for the repair. Once the customer confirms the rate then the user can start repairing and after the repair, we will give the customer an invoice.
- ]]>
+ ]]>
+
+
+
+ IT Hardware & Support
+ 💻
+ write
+
+
+
+
+
diff --git a/it_hardware/data/mail_message.xml b/it_hardware/data/mail_message.xml
index 4bc29fecf..6dfbe9206 100644
--- a/it_hardware/data/mail_message.xml
+++ b/it_hardware/data/mail_message.xml
@@ -8,9 +8,8 @@
Knowledge article
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('it_hardware.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/it_hardware/static/src/js/my_tour.js b/it_hardware/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/it_hardware/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});
diff --git a/micro_brewery/__manifest__.py b/micro_brewery/__manifest__.py
index a2b9b1c29..16d6d5108 100644
--- a/micro_brewery/__manifest__.py
+++ b/micro_brewery/__manifest__.py
@@ -80,6 +80,14 @@
'demo/payment_provider_demo_post.xml',
],
'license': 'OPL-1',
+ 'assets': {
+ 'web.assets_backend': [
+ 'micro_brewery/static/src/js/my_tour.js',
+ ]
+ },
'author': 'Odoo S.A.',
+ "cloc_exclude": [
+ "static/src/js/my_tour.js",
+ ],
'images': ['images/main.png'],
}
diff --git a/micro_brewery/data/mail_message.xml b/micro_brewery/data/mail_message.xml
index de6324c49..162f0a114 100644
--- a/micro_brewery/data/mail_message.xml
+++ b/micro_brewery/data/mail_message.xml
@@ -6,11 +6,10 @@
email
-
Knowledge article
+
🚀 Get started with Odoo Micro Brewery
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('micro_brewery.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/micro_brewery/static/src/js/my_tour.js b/micro_brewery/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/micro_brewery/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});
diff --git a/non_profit_organization/__manifest__.py b/non_profit_organization/__manifest__.py
index df466e12b..b28dc467e 100644
--- a/non_profit_organization/__manifest__.py
+++ b/non_profit_organization/__manifest__.py
@@ -47,6 +47,15 @@
'demo/payment_provider_demo_post.xml',
],
'license': 'OPL-1',
+ 'assets': {
+ 'web.assets_backend': [
+ 'non_profit_organization/static/src/js/my_tour.js',
+ ]
+ },
'author': 'Odoo S.A.',
+ "cloc_exclude": [
+ "data/knowledge_article.xml",
+ "static/src/js/my_tour.js",
+ ],
'images': ['images/main.png'],
}
diff --git a/non_profit_organization/data/knowledge_article.xml b/non_profit_organization/data/knowledge_article.xml
index b1e216850..be73304cc 100644
--- a/non_profit_organization/data/knowledge_article.xml
+++ b/non_profit_organization/data/knowledge_article.xml
@@ -1,12 +1,7 @@
-
- Nonprofit Organization
- write
- workspace
-
-
-
+
Non Profit Organization
@@ -81,6 +76,15 @@
- ]]>
+ ]]>
+
+
+
+ Nonprofit Organization
+ write
+ workspace
+
+
+
diff --git a/non_profit_organization/data/knowledge_article_attachments.xml b/non_profit_organization/data/knowledge_article_attachments.xml
index 848c4ccbf..21daa56ac 100644
--- a/non_profit_organization/data/knowledge_article_attachments.xml
+++ b/non_profit_organization/data/knowledge_article_attachments.xml
@@ -3,35 +3,35 @@
image.png
knowledge.article
-
+
non_profit_organization.ir_attachment_504
image.png
knowledge.article
-
+
non_profit_organization.ir_attachment_505
image.png
knowledge.article
-
+
non_profit_organization.ir_attachment_518
image.png
knowledge.article
-
+
non_profit_organization.ir_attachment_524
image.png
knowledge.article
-
+
non_profit_organization.ir_attachment_525
diff --git a/non_profit_organization/data/knowledge_article_favorite.xml b/non_profit_organization/data/knowledge_article_favorite.xml
index bb8a92516..3d5b6471e 100644
--- a/non_profit_organization/data/knowledge_article_favorite.xml
+++ b/non_profit_organization/data/knowledge_article_favorite.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/non_profit_organization/data/mail_message.xml b/non_profit_organization/data/mail_message.xml
index 46be8920e..24be9da10 100644
--- a/non_profit_organization/data/mail_message.xml
+++ b/non_profit_organization/data/mail_message.xml
@@ -6,11 +6,10 @@
email
-
Knowledge article
+
🚀 Get started with Odoo Non Profit Organization
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('non_profit_organization.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/non_profit_organization/static/src/js/my_tour.js b/non_profit_organization/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/non_profit_organization/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});
diff --git a/pharmacy_retail/__manifest__.py b/pharmacy_retail/__manifest__.py
index 76c6e8dce..6eedd18bd 100644
--- a/pharmacy_retail/__manifest__.py
+++ b/pharmacy_retail/__manifest__.py
@@ -70,6 +70,15 @@
'demo/pos_config.xml',
],
'license': 'OPL-1',
+ 'assets': {
+ 'web.assets_backend': [
+ 'pharmacy_retail/static/src/js/my_tour.js',
+ ]
+ },
'author': 'Odoo S.A.',
+ "cloc_exclude": [
+ "data/knowledge_article.xml",
+ "static/src/js/my_tour.js",
+ ],
'images': ['images/main.png'],
}
diff --git a/pharmacy_retail/data/knowledge_article.xml b/pharmacy_retail/data/knowledge_article.xml
index 7a2e68997..4e3be9c13 100644
--- a/pharmacy_retail/data/knowledge_article.xml
+++ b/pharmacy_retail/data/knowledge_article.xml
@@ -1,16 +1,7 @@
-
- Pharmacy
- 1
-
- write
- workspace
-
-
- 💊
-
-
+ Pharmacy Retail
This setup is for pharmacy retail companies that purchase and sell products. They maintain the stock lot wise and also manage the expiry of the lots.
@@ -222,7 +213,20 @@
You can use the following payment methods: Cash, Bank or Customer Account.
- ]]>
+ ]]>
+
+
+
+ Pharmacy
+ 1
+
+ write
+ workspace
+
+
+ 💊
+
+
diff --git a/pharmacy_retail/data/knowledge_article_favorite.xml b/pharmacy_retail/data/knowledge_article_favorite.xml
index bb8a92516..3d5b6471e 100644
--- a/pharmacy_retail/data/knowledge_article_favorite.xml
+++ b/pharmacy_retail/data/knowledge_article_favorite.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/pharmacy_retail/data/mail_message.xml b/pharmacy_retail/data/mail_message.xml
index 777eb63e0..f8c04cd58 100644
--- a/pharmacy_retail/data/mail_message.xml
+++ b/pharmacy_retail/data/mail_message.xml
@@ -6,11 +6,10 @@
email
-
Knowledge article
+
🚀 Get started with Odoo Pharmacy retail
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('pharmacy_retail.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/pharmacy_retail/static/src/js/my_tour.js b/pharmacy_retail/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/pharmacy_retail/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});
diff --git a/photography/__manifest__.py b/photography/__manifest__.py
index 40b416a47..1a1e773b5 100644
--- a/photography/__manifest__.py
+++ b/photography/__manifest__.py
@@ -52,6 +52,15 @@
'demo/website_menu.xml',
],
'license': 'OPL-1',
+ 'assets': {
+ 'web.assets_backend': [
+ 'photography/static/src/js/my_tour.js',
+ ]
+ },
'author': 'Odoo S.A.',
+ "cloc_exclude": [
+ "data/knowledge_article.xml",
+ "static/src/js/my_tour.js",
+ ],
'images': ['images/main.png'],
}
diff --git a/photography/data/knowledge_article.xml b/photography/data/knowledge_article.xml
index d1ddebbfc..3ed27569f 100644
--- a/photography/data/knowledge_article.xml
+++ b/photography/data/knowledge_article.xml
@@ -1,13 +1,6 @@
-
- Photography - Start here!
- workspace
- write
-
- 50.0
-
-
+
Photography
@@ -77,6 +70,17 @@
]]>
+
+
+
+ Photography - Start here!
+ workspace
+ write
+
+ 50.0
+
+
+
diff --git a/photography/data/knowledge_article_favorite.xml b/photography/data/knowledge_article_favorite.xml
index 35eaf9400..3d5b6471e 100644
--- a/photography/data/knowledge_article_favorite.xml
+++ b/photography/data/knowledge_article_favorite.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/photography/data/mail_message.xml b/photography/data/mail_message.xml
index 9fa1e2ce8..50fc2592d 100644
--- a/photography/data/mail_message.xml
+++ b/photography/data/mail_message.xml
@@ -6,11 +6,10 @@
email
-
Knowledge article
+
🚀 Get started with Odoo Photography
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('photography.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/photography/static/src/js/my_tour.js b/photography/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/photography/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});
diff --git a/software_reseller/__manifest__.py b/software_reseller/__manifest__.py
index 0dc9afc66..bc97d5442 100644
--- a/software_reseller/__manifest__.py
+++ b/software_reseller/__manifest__.py
@@ -48,6 +48,15 @@
'demo/planning_slot.xml',
],
'license': 'OPL-1',
+ 'assets': {
+ 'web.assets_backend': [
+ 'software_reseller/static/src/js/my_tour.js',
+ ]
+ },
'author': 'Odoo S.A.',
+ "cloc_exclude": [
+ "data/knowledge_article.xml",
+ "static/src/js/my_tour.js",
+ ],
'images': ['images/main.png'],
}
diff --git a/software_reseller/data/knowledge_article.xml b/software_reseller/data/knowledge_article.xml
index b312fc585..61cd0584c 100644
--- a/software_reseller/data/knowledge_article.xml
+++ b/software_reseller/data/knowledge_article.xml
@@ -1,6 +1,16 @@
-
+
+ <h1 >
+ <span style="font-size: 36px;">Software Resellers, IT Services</span><br></h1>
+<p>
+ <span style="font-size: 14px;">This setup if for IT companies reselling software licenses, and consulting services.🚀 The typical sale is a 1 year Oracle Database license that is purchased to Oracle, and resold to client at a margin, with extra services to setup the database.</span></p><p>Licenses as managed as tasks in the project management app, with custom properties; license key, number of users, software version, ... these properties depend on the type of software sold (i.e. Odoo is sold based on the number of users periodically, but Oracle requires a lot of information: number of CPUs, number of developer seats, size of DB, etc)</p>
+<div class="o_knowledge_behavior_anchor o_knowledge_behavior_type_toc" data-oe-protected="true"><div class="o_knowledge_toc_content"><a href="#" data-oe-nodeid="0" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_0">Software Resellers, IT Services
+</a><a href="#" data-oe-nodeid="1" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_0">Business Flows: Licenses Management</a><a href="#" data-oe-nodeid="2" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Flow 1: Sell Oracle Licenses</a><a href="#" data-oe-nodeid="3" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Flow 2: Manage your licenses</a><a href="#" data-oe-nodeid="4" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Flow 3: Renew a license</a><a href="#" data-oe-nodeid="5" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_0">Business Flow: Selling Services</a><a href="#" data-oe-nodeid="6" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Flow 3: Selling Odoo with Services</a></div></div><p><br></p>
+<h1>Business Flows: Licenses Management</h1><hr>
+<h2>Flow 1: Sell Oracle Licenses</h2><p><strong><u>Sell Oracle Licenses</u></strong></p><p>Create a <strong><font class="text-o-color-2">subscription</font></strong> to any customer with the <strong><font class="text-o-color-2">product "Oracle Database"</font></strong><font class="text-o-color-2">,</font> for 5 users for one year. Once you confirm this order, two documents will be created:</p><ul><li>A purchase order to Oracle; to buy the license for this client</li><li>A task to manage the license, in stage "New Requests"</li></ul><p><strong><u>Purchase the licenses</u></strong></p><p>From the subscription, using the top buttons, jump to the purchase order to buy these licenses to Oracle. You can send by email your request for quotation, then confirm the order. At that point, Oracle will send you the license number.</p><p>Go back to the sale order, then jump to the task. On the task, set the different informations based on what oracle sends you:</p><ul><li>Environement: Production</li><li>Version: 20.0.1</li><li>License Key: XYZ</li><li>Responsible: your account manager / user</li></ul><h2>Flow 2: Manage your licenses</h2><p>From the <strong><font class="text-o-color-2">app "Licenses"</font></strong>, you an have an overview of all your software licenses. Click on one specific license to track license keys belonging to each customer.</p><p>From a license key:</p><ul><li>Record all information related to the license (version, type of license, ...). These information are different from one license type to another (Oracle vs Odoo)</li><li>You can communicate with customers on the chatter, to keep an history of the discussions</li></ul><p>The <strong>Licenses</strong> app has 3 menus:</p><ul><li>Licenses by Software (in kanban)</li><li>All Licenses (default to list)</li><li>Licenses to Renew: things you have to check periodically</li></ul><blockquote data-o-mail-quote-node="1" data-o-mail-quote="1"><font style="background-color: rgb(255, 231, 206);">A studio automated action turn tasks in Changes Requested when the license key expires in the 15 days or less.</font></blockquote><h2 data-o-mail-quote-node="1" data-o-mail-quote="1">Flow 3: Renew a license</h2><p data-o-mail-quote-node="1" data-o-mail-quote="1">To renew a license, you should just renew the subscription; the task remains the same.</p><p data-o-mail-quote-node="1" data-o-mail-quote="1"><br></p><p></p><h1>Business Flow: Selling Services</h1><hr><h3>Flow 3: Selling Odoo with Services</h3><p><strong><u>Sell a project</u></strong></p><p>Usually, you sell the software licenses with additional services. To test this flow, as you create a quotation, use the quotation template <strong><font class="text-o-color-2">"Odoo Standard Implementation"</font><font style="color: inherit;"><span style="font-weight: normal;">. That will add the services billed on timesheets (default setup: sell days, but timesheets per hour).</span></font></strong></p><blockquote data-o-mail-quote-node="1" data-o-mail-quote="1"><font style="background-color: rgb(255, 239, 198);">From the "Optional Products" tab, you can also add development services ine one click.</font></blockquote><p>As you confirm the order, it will:</p><ul><li><font style="background-color: inherit;">Create a purchase order to buy the Odoo license to Odoo S.A.</font></li><li>Create a task to track the license</li><li>Create 3 tasks to track services</li><li>Create 200 hours to plan, in the planning</li></ul><p><strong><u>Invoice Licenses</u></strong></p><p>As you confirm the order, the license line is blue as you can already invoice it. The consulting services are black as there is nothing to invoice; you'll be able to invoice at the end of the month, based on the time spent on the project.</p><blockquote data-o-mail-quote-node="1" data-o-mail-quote="1"><font style="color: inherit; background-color: rgb(255, 239, 198);">On this order, the way to manage licenses is similar to the above section. So, we'll mostly focus on the delivery of the extra services.</font><br></blockquote><p><strong><u>Plan Consultants</u></strong> </p><p>From the planning, click on the "Plan Existing" icon;</p><ul><li>Select the services to plan "Business Need Analysis" and "Odoo Configuration" (training will be planned later on, on phase 2)</li><li>Assign these services to the right person.</li></ul><p><strong><u>Timesheet Work done</u></strong></p><p>From the timesheet app, or on the task, consultants can timesheet hours on the different phases of the project: Business Need Analysis, Odoo Configuration, or Training & Support. This will be reflected as "Delivered Quantity" on the sale order lines.</p><p><strong><u>Invoice Projects</u></strong></p><p>At the end of the month, salespeople go to the menu "Orders to Invoice" in Sales app. From there they can select an order (or select all), and invoice what has been delivered on the order.</p>
+
+
software Resellers
1
workspace
@@ -9,13 +19,7 @@
- <h1 >
- <span style="font-size: 36px;">Software Resellers, IT Services</span><br></h1>
-<p>
- <span style="font-size: 14px;">This setup if for IT companies reselling software licenses, and consulting services.🚀 The typical sale is a 1 year Oracle Database license that is purchased to Oracle, and resold to client at a margin, with extra services to setup the database.</span></p><p>Licenses as managed as tasks in the project management app, with custom properties; license key, number of users, software version, ... these properties depend on the type of software sold (i.e. Odoo is sold based on the number of users periodically, but Oracle requires a lot of information: number of CPUs, number of developer seats, size of DB, etc)</p>
-<div class="o_knowledge_behavior_anchor o_knowledge_behavior_type_toc" data-oe-protected="true"><div class="o_knowledge_toc_content"><a href="#" data-oe-nodeid="0" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_0">Software Resellers, IT Services
-</a><a href="#" data-oe-nodeid="1" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_0">Business Flows: Licenses Management</a><a href="#" data-oe-nodeid="2" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Flow 1: Sell Oracle Licenses</a><a href="#" data-oe-nodeid="3" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Flow 2: Manage your licenses</a><a href="#" data-oe-nodeid="4" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Flow 3: Renew a license</a><a href="#" data-oe-nodeid="5" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_0">Business Flow: Selling Services</a><a href="#" data-oe-nodeid="6" class="oe_unremovable o_no_link_popover d-block o_knowledge_toc_link o_knowledge_toc_link_depth_1">Flow 3: Selling Odoo with Services</a></div></div><p><br></p>
-<h1>Business Flows: Licenses Management</h1><hr>
-<h2>Flow 1: Sell Oracle Licenses</h2><p><strong><u>Sell Oracle Licenses</u></strong></p><p>Create a <strong><font class="text-o-color-2">subscription</font></strong> to any customer with the <strong><font class="text-o-color-2">product "Oracle Database"</font></strong><font class="text-o-color-2">,</font> for 5 users for one year. Once you confirm this order, two documents will be created:</p><ul><li>A purchase order to Oracle; to buy the license for this client</li><li>A task to manage the license, in stage "New Requests"</li></ul><p><strong><u>Purchase the licenses</u></strong></p><p>From the subscription, using the top buttons, jump to the purchase order to buy these licenses to Oracle. You can send by email your request for quotation, then confirm the order. At that point, Oracle will send you the license number.</p><p>Go back to the sale order, then jump to the task. On the task, set the different informations based on what oracle sends you:</p><ul><li>Environement: Production</li><li>Version: 20.0.1</li><li>License Key: XYZ</li><li>Responsible: your account manager / user</li></ul><h2>Flow 2: Manage your licenses</h2><p>From the <strong><font class="text-o-color-2">app "Licenses"</font></strong>, you an have an overview of all your software licenses. Click on one specific license to track license keys belonging to each customer.</p><p>From a license key:</p><ul><li>Record all information related to the license (version, type of license, ...). These information are different from one license type to another (Oracle vs Odoo)</li><li>You can communicate with customers on the chatter, to keep an history of the discussions</li></ul><p>The <strong>Licenses</strong> app has 3 menus:</p><ul><li>Licenses by Software (in kanban)</li><li>All Licenses (default to list)</li><li>Licenses to Renew: things you have to check periodically</li></ul><blockquote data-o-mail-quote-node="1" data-o-mail-quote="1"><font style="background-color: rgb(255, 231, 206);">A studio automated action turn tasks in Changes Requested when the license key expires in the 15 days or less.</font></blockquote><h2 data-o-mail-quote-node="1" data-o-mail-quote="1">Flow 3: Renew a license</h2><p data-o-mail-quote-node="1" data-o-mail-quote="1">To renew a license, you should just renew the subscription; the task remains the same.</p><p data-o-mail-quote-node="1" data-o-mail-quote="1"><br></p><p></p><h1>Business Flow: Selling Services</h1><hr><h3>Flow 3: Selling Odoo with Services</h3><p><strong><u>Sell a project</u></strong></p><p>Usually, you sell the software licenses with additional services. To test this flow, as you create a quotation, use the quotation template <strong><font class="text-o-color-2">"Odoo Standard Implementation"</font><font style="color: inherit;"><span style="font-weight: normal;">. That will add the services billed on timesheets (default setup: sell days, but timesheets per hour).</span></font></strong></p><blockquote data-o-mail-quote-node="1" data-o-mail-quote="1"><font style="background-color: rgb(255, 239, 198);">From the "Optional Products" tab, you can also add development services ine one click.</font></blockquote><p>As you confirm the order, it will:</p><ul><li><font style="background-color: inherit;">Create a purchase order to buy the Odoo license to Odoo S.A.</font></li><li>Create a task to track the license</li><li>Create 3 tasks to track services</li><li>Create 200 hours to plan, in the planning</li></ul><p><strong><u>Invoice Licenses</u></strong></p><p>As you confirm the order, the license line is blue as you can already invoice it. The consulting services are black as there is nothing to invoice; you'll be able to invoice at the end of the month, based on the time spent on the project.</p><blockquote data-o-mail-quote-node="1" data-o-mail-quote="1"><font style="color: inherit; background-color: rgb(255, 239, 198);">On this order, the way to manage licenses is similar to the above section. So, we'll mostly focus on the delivery of the extra services.</font><br></blockquote><p><strong><u>Plan Consultants</u></strong> </p><p>From the planning, click on the "Plan Existing" icon;</p><ul><li>Select the services to plan "Business Need Analysis" and "Odoo Configuration" (training will be planned later on, on phase 2)</li><li>Assign these services to the right person.</li></ul><p><strong><u>Timesheet Work done</u></strong></p><p>From the timesheet app, or on the task, consultants can timesheet hours on the different phases of the project: Business Need Analysis, Odoo Configuration, or Training & Support. This will be reflected as "Delivered Quantity" on the sale order lines.</p><p><strong><u>Invoice Projects</u></strong></p><p>At the end of the month, salespeople go to the menu "Orders to Invoice" in Sales app. From there they can select an order (or select all), and invoice what has been delivered on the order.</p>
+
+
diff --git a/software_reseller/data/knowledge_article_favorite.xml b/software_reseller/data/knowledge_article_favorite.xml
index bb8a92516..3d5b6471e 100644
--- a/software_reseller/data/knowledge_article_favorite.xml
+++ b/software_reseller/data/knowledge_article_favorite.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/software_reseller/data/mail_message.xml b/software_reseller/data/mail_message.xml
index c9821aa91..ee817df30 100644
--- a/software_reseller/data/mail_message.xml
+++ b/software_reseller/data/mail_message.xml
@@ -6,11 +6,10 @@
email
-
Knowledge article
+
🚀 Get started with Odoo Software Reseller
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('software_reseller.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/software_reseller/static/src/js/my_tour.js b/software_reseller/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/software_reseller/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});
diff --git a/solar_installation/__manifest__.py b/solar_installation/__manifest__.py
index cefad881a..7e3be3c3c 100644
--- a/solar_installation/__manifest__.py
+++ b/solar_installation/__manifest__.py
@@ -91,6 +91,15 @@
'demo/x_project_task_worksheet.xml',
],
'license': 'OPL-1',
+ 'assets': {
+ 'web.assets_backend': [
+ 'solar_installation/static/src/js/my_tour.js',
+ ]
+ },
'author': 'Odoo S.A.',
+ "cloc_exclude": [
+ "data/knowledge_article.xml",
+ "static/src/js/my_tour.js",
+ ],
'images': ['images/main.png'],
}
diff --git a/solar_installation/data/knowledge_article.xml b/solar_installation/data/knowledge_article.xml
index d82c5fa29..0f0e3b0d1 100644
--- a/solar_installation/data/knowledge_article.xml
+++ b/solar_installation/data/knowledge_article.xml
@@ -1,14 +1,7 @@
-
- Solar Energy Systems
- 🛠️
- write
-
-
-
-
-
+ Solar Installation
This setup is for companies providing solar equipment and its installation service. Usually, residential customers place orders from 1 kW to 10 kW while others up to 100 kW. Solar panels and other equipment are installed at customer site based on kW capacity.
@@ -82,7 +75,18 @@
- In case of delivery to customer's address, Helpdesk user will communicate with the customer after delivery and take confirmation from customer about equipment working and closes the Ticket.
- ]]>
+ ]]>
+
+
+
+ Solar Energy Systems
+ 🛠️
+ write
+
+
+
+
+
diff --git a/solar_installation/data/knowledge_article_favorite.xml b/solar_installation/data/knowledge_article_favorite.xml
index bb8a92516..3d5b6471e 100644
--- a/solar_installation/data/knowledge_article_favorite.xml
+++ b/solar_installation/data/knowledge_article_favorite.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/solar_installation/data/mail_message.xml b/solar_installation/data/mail_message.xml
index d7f0ba2f8..6881bb8de 100644
--- a/solar_installation/data/mail_message.xml
+++ b/solar_installation/data/mail_message.xml
@@ -6,11 +6,10 @@
email
-
Knowledge article
+
🚀 Get started with Odoo Solar Installation
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('solar_installation.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/solar_installation/static/src/js/my_tour.js b/solar_installation/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/solar_installation/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});
diff --git a/sports_club/__manifest__.py b/sports_club/__manifest__.py
index 74fda752d..f06c2b9a8 100644
--- a/sports_club/__manifest__.py
+++ b/sports_club/__manifest__.py
@@ -65,4 +65,13 @@
'license': 'OPL-1',
'author': 'Odoo S.A.',
'images': ['images/main.png'],
+ 'assets': {
+ 'web.assets_backend': [
+ 'sports_club/static/src/js/my_tour.js',
+ ]
+ },
+ "cloc_exclude": [
+ "data/knowledge_article.xml",
+ "static/src/js/my_tour.js",
+ ],
}
diff --git a/sports_club/data/knowledge_article.xml b/sports_club/data/knowledge_article.xml
index f89b6f5c5..8b215ec5b 100644
--- a/sports_club/data/knowledge_article.xml
+++ b/sports_club/data/knowledge_article.xml
@@ -1,16 +1,7 @@
-
- Sports Club
- 🎾
- write
- workspace
-
-
- 67.60000000000008
-
-
-
+
Sports Club
@@ -82,7 +73,20 @@
On top of that, employees working behind the counter can also take phone calls and book some courts. For this, they use the Appointments > Resource Schedule menu.
- ]]>
+ ]]>
+
+
+
+ Sports Club
+ 🎾
+ write
+ workspace
+
+
+ 67.60000000000008
+
+
+
diff --git a/sports_club/data/knowledge_article_favorite.xml b/sports_club/data/knowledge_article_favorite.xml
index bb8a92516..3d5b6471e 100644
--- a/sports_club/data/knowledge_article_favorite.xml
+++ b/sports_club/data/knowledge_article_favorite.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/sports_club/data/mail_message.xml b/sports_club/data/mail_message.xml
index c3c7b7b0e..8c454e020 100644
--- a/sports_club/data/mail_message.xml
+++ b/sports_club/data/mail_message.xml
@@ -6,11 +6,10 @@
email
- Knowledge article
+ 🚀 Get started with Odoo Sports Club
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('sports_club.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/sports_club/static/src/js/my_tour.js b/sports_club/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/sports_club/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});
diff --git a/surveyor/__manifest__.py b/surveyor/__manifest__.py
index 8535377c7..061746f7e 100644
--- a/surveyor/__manifest__.py
+++ b/surveyor/__manifest__.py
@@ -52,6 +52,15 @@
'demo/website_ir_attachment.xml',
],
'license': 'OPL-1',
+ 'assets': {
+ 'web.assets_backend': [
+ 'surveyor/static/src/js/my_tour.js',
+ ]
+ },
'author': 'Odoo S.A.',
'images': ['images/main.png'],
+ "cloc_exclude": [
+ "data/knowledge_article.xml",
+ "static/src/js/my_tour.js",
+ ],
}
diff --git a/surveyor/data/knowledge_article.xml b/surveyor/data/knowledge_article.xml
index 0e28c3a98..be9695147 100644
--- a/surveyor/data/knowledge_article.xml
+++ b/surveyor/data/knowledge_article.xml
@@ -1,16 +1,7 @@
-
- 92.01000000000006
-
- 3/
- write
- True
-
- 3
- Surveying & Mapping
- 📐
-
+ Surveyor
This setup is for surveyors that sell services like land measurement & mapping, planning permission, mediation counsel, etc to private customers as well as companies (architect, notary, real estate, …).
@@ -46,7 +37,21 @@
project sub-workspace so that the customer has direct access to it.
Once the final documents are delivered to the customer, the surveyor can send the final invoice potentially adapting the hours spent on each service.
-]]>
-
+ ]]>
+
+
+
+ 92.01000000000006
+
+ 3/
+ write
+ True
+
+ 3
+ Surveying & Mapping
+ 📐
+
+
+
diff --git a/surveyor/data/knowledge_article_favorite.xml b/surveyor/data/knowledge_article_favorite.xml
index 6584b3d40..3d5b6471e 100644
--- a/surveyor/data/knowledge_article_favorite.xml
+++ b/surveyor/data/knowledge_article_favorite.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/surveyor/data/mail_message.xml b/surveyor/data/mail_message.xml
index b55652711..acd0ba7e8 100644
--- a/surveyor/data/mail_message.xml
+++ b/surveyor/data/mail_message.xml
@@ -6,11 +6,10 @@
email
-
Knowledge article
+
🚀 Get started with Odoo Surveyor
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('surveyor.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/surveyor/static/src/js/my_tour.js b/surveyor/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/surveyor/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});
diff --git a/tests/test_generic/tests/test_industry_requirements.py b/tests/test_generic/tests/test_industry_requirements.py
index 6a81c5290..c22f1ee59 100644
--- a/tests/test_generic/tests/test_industry_requirements.py
+++ b/tests/test_generic/tests/test_industry_requirements.py
@@ -24,6 +24,20 @@ def test_payment_demo(self):
"Call 'button_immediate_install' on 'base.module_payment_demo' in demo."
)
+ def test_welcome_article_exists(self):
+ for module in self.installed_modules:
+ ref = self.env.ref(f"{module}.welcome_article", raise_if_not_found=False)
+ self.assertTrue(
+ ref, f"You forgot to define a record with id='welcome_article' in module '{module}'."
+ )
+
+ def test_welcome_article_body_exists(self):
+ for module in self.installed_modules:
+ ref = self.env.ref(f"{module}.welcome_article_body", raise_if_not_found=False)
+ self.assertTrue(
+ ref, f"You forgot to define a template with id='welcome_article_body' in module '{module}'."
+ )
+
def test_knowledge_article_notification(self):
for module in self.installed_modules:
ref = self.env.ref(module + '.notification_knowledge', raise_if_not_found=False)
@@ -32,7 +46,7 @@ def test_knowledge_article_notification(self):
)
notif = self.env['mail.message'].browse(ref.id)
self.assertIn(
- '
Knowledge article
+ '<span>👋 Hi! Follow this <a href=\''
+ + obj().env.ref('wellness_practitioner.welcome_article').article_url
+ + '\'>onboarding guide</a>. You can find it anytime in the Knowledge app.</span>'"/>
diff --git a/wellness_practitioner/static/src/js/my_tour.js b/wellness_practitioner/static/src/js/my_tour.js
new file mode 100644
index 000000000..27e8df355
--- /dev/null
+++ b/wellness_practitioner/static/src/js/my_tour.js
@@ -0,0 +1,17 @@
+/** @odoo-module **/
+
+import { _t } from "@web/core/l10n/translation";
+import { registry } from "@web/core/registry";
+
+registry.category("web_tour.tours").add("knowledge_tour", {
+ url: "/odoo",
+ sequence: 2,
+ steps: () => [
+ {
+ trigger: '.o_app[data-menu-xmlid="knowledge.knowledge_menu_root"]',
+ content: _t("Open Knowledge to find the onboarding guide."),
+ position: "bottom",
+ run: "click",
+ },
+ ],
+});