diff --git a/addons/point_of_sale/data/point_of_sale_onboarding.xml b/addons/point_of_sale/data/point_of_sale_onboarding.xml
index be12d687bb3..a8d8f269098 100644
--- a/addons/point_of_sale/data/point_of_sale_onboarding.xml
+++ b/addons/point_of_sale/data/point_of_sale_onboarding.xml
@@ -14,10 +14,6 @@
-
-
- True
-
@@ -666,17 +662,6 @@
-
-
-
-
-
-
-
Office Chair Black
@@ -906,190 +891,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ClosedDemo/0001
- paid
- 4.81
- 0.0
- 4.81
- 0.0
- Order 00000-001-1001
-
-
-
-
- 1.98
- 1.98
- 1.98
-
- Wall Shelf
-
-
-
-
- 2.83
- 2.83
- 2.83
-
- Small Shelf
-
-
-
-
-
- 4.81
-
-
-
-
-
- ClosedDemo/0002
- paid
- 2220.50
- 0.0
- 2220.50
- 0.0
- Order 00000-001-1002
-
-
-
-
- 120.50
- 120.5
- 120.50
-
- Office Chair Black
-
-
-
-
- 2100.0
- 2100.0
- 2100.0
-
- Desk Stand with Screen
-
-
-
-
-
- 2220.50
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ClosedDemo/0003
- paid
- 9.90
- 0.0
- 9.90
- 0.0
- Order 00000-002-1001
-
-
-
- Closed Orderline 2.1.1
-
- 4.80
- 4.80
- 4.80
-
- Letter Tray
-
-
-
- Closed Orderline 2.1.2
-
- 5.10
- 5.10
- 5.10
-
- Desk Organizer
-
-
-
-
-
- 9.90
-
-
-
-
-
- ClosedDemo/0004
- paid
- 8.36
- 0.0
- 8.36
- 0.0
- Order 00000-002-1002
-
-
-
- Closed Orderline 2.2.1
-
- 1.98
- 1.98
- 1.98
-
- Magnetic Board
-
-
-
- Closed Orderline 2.1.2
-
- 6.38
- 6.38
- 2
- 3.19
-
- Monitor Stand
-
-
-
-
-
- 8.36
-
-
-
-
-
-
-
diff --git a/addons/point_of_sale/data/point_of_sale_onboarding_main_config.xml b/addons/point_of_sale/data/point_of_sale_onboarding_main_config.xml
new file mode 100644
index 00000000000..6db6049fc3d
--- /dev/null
+++ b/addons/point_of_sale/data/point_of_sale_onboarding_main_config.xml
@@ -0,0 +1,200 @@
+
+
+
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ClosedDemo/0001
+ paid
+ 4.81
+ 0.0
+ 4.81
+ 0.0
+ Order 00000-001-1001
+
+
+
+
+ 1.98
+ 1.98
+ 1.98
+
+ Wall Shelf
+
+
+
+
+ 2.83
+ 2.83
+ 2.83
+
+ Small Shelf
+
+
+
+
+
+ 4.81
+
+
+
+
+
+ ClosedDemo/0002
+ paid
+ 2220.50
+ 0.0
+ 2220.50
+ 0.0
+ Order 00000-001-1002
+
+
+
+
+ 120.50
+ 120.5
+ 120.50
+
+ Office Chair Black
+
+
+
+
+ 2100.0
+ 2100.0
+ 2100.0
+
+ Desk Stand with Screen
+
+
+
+
+
+ 2220.50
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ClosedDemo/0003
+ paid
+ 9.90
+ 0.0
+ 9.90
+ 0.0
+ Order 00000-002-1001
+
+
+
+ Closed Orderline 2.1.1
+
+ 4.80
+ 4.80
+ 4.80
+
+ Letter Tray
+
+
+
+ Closed Orderline 2.1.2
+
+ 5.10
+ 5.10
+ 5.10
+
+ Desk Organizer
+
+
+
+
+
+ 9.90
+
+
+
+
+
+ ClosedDemo/0004
+ paid
+ 8.36
+ 0.0
+ 8.36
+ 0.0
+ Order 00000-002-1002
+
+
+
+ Closed Orderline 2.2.1
+
+ 1.98
+ 1.98
+ 1.98
+
+ Magnetic Board
+
+
+
+ Closed Orderline 2.1.2
+
+ 6.38
+ 6.38
+ 2
+ 3.19
+
+ Monitor Stand
+
+
+
+
+
+ 8.36
+
+
+
+
+
+
+
+
+
diff --git a/addons/point_of_sale/models/pos_session.py b/addons/point_of_sale/models/pos_session.py
index b17e6ebccdd..b3559a296c4 100644
--- a/addons/point_of_sale/models/pos_session.py
+++ b/addons/point_of_sale/models/pos_session.py
@@ -2206,24 +2206,27 @@ class PosSession(models.Model):
self.message_post(body=body, author_id=partner_id)
def _pos_has_valid_product(self):
- return self.env['product.product'].sudo().search_count(['&', ('available_in_pos', '=', True), ('list_price', '>', 0)], limit=1) > 0
+ return self.env['product.product'].sudo().search_count([('available_in_pos', '=', True), ('list_price', '>', 0), '|', ('active', '=', False), ('active', '=', True)], limit=1) > 0
@api.model
def _load_onboarding_data(self):
convert.convert_file(self.env, 'point_of_sale', 'data/point_of_sale_onboarding.xml', None, mode='init', kind='data')
- shop_config = self.env.ref('point_of_sale.pos_config_main')
- if len(shop_config.session_ids.filtered(lambda s: s.state == 'opened')) == 0:
- self.env['pos.session'].create({
- 'config_id': shop_config.id,
- 'user_id': self.env.ref('base.user_admin').id,
- })
+ shop_config = self.env.ref('point_of_sale.pos_config_main', raise_if_not_found=False)
+ if shop_config:
+ convert.convert_file(self.env, 'point_of_sale', 'data/point_of_sale_onboarding_main_config.xml', None, mode='init', kind='data')
+ if len(shop_config.session_ids.filtered(lambda s: s.state == 'opened')) == 0:
+ self.env['pos.session'].create({
+ 'config_id': shop_config.id,
+ 'user_id': self.env.ref('base.user_admin').id,
+ })
def _after_load_onboarding_data(self):
config = self.env.ref('point_of_sale.pos_config_main', raise_if_not_found=False)
- config.with_context(bypass_categories_forbidden_change=True).write({
- 'limit_categories': True,
- 'iface_available_categ_ids': [Command.link(self.env.ref('point_of_sale.pos_category_miscellaneous').id), Command.link(self.env.ref('point_of_sale.pos_category_desks').id), Command.link(self.env.ref('point_of_sale.pos_category_chairs').id)]
- })
+ if config:
+ config.with_context(bypass_categories_forbidden_change=True).write({
+ 'limit_categories': True,
+ 'iface_available_categ_ids': [Command.link(self.env.ref('point_of_sale.pos_category_miscellaneous').id), Command.link(self.env.ref('point_of_sale.pos_category_desks').id), Command.link(self.env.ref('point_of_sale.pos_category_chairs').id)]
+ })
def load_product_frontend(self):
allowed = not self._pos_has_valid_product()
diff --git a/addons/point_of_sale/static/src/app/screens/product_screen/product_list/product_list.js b/addons/point_of_sale/static/src/app/screens/product_screen/product_list/product_list.js
index e19b5ef9581..120754dfb1d 100644
--- a/addons/point_of_sale/static/src/app/screens/product_screen/product_list/product_list.js
+++ b/addons/point_of_sale/static/src/app/screens/product_screen/product_list/product_list.js
@@ -66,9 +66,7 @@ export class ProductsWidget extends Component {
}
return false;
}
- get posHasValidProduct() {
- return this.pos.posHasValidProduct();
- }
+
get selectedCategoryId() {
return this.pos.selectedCategoryId;
}
diff --git a/addons/point_of_sale/static/src/app/screens/product_screen/product_list/product_list.xml b/addons/point_of_sale/static/src/app/screens/product_screen/product_list/product_list.xml
index 81c104457d9..fe89f8af908 100644
--- a/addons/point_of_sale/static/src/app/screens/product_screen/product_list/product_list.xml
+++ b/addons/point_of_sale/static/src/app/screens/product_screen/product_list/product_list.xml
@@ -16,7 +16,7 @@
debounceMillis="100" />
-
+
No products found for "" in this category.
-
+
There are no products in this category.
diff --git a/addons/point_of_sale/static/src/app/store/pos_store.js b/addons/point_of_sale/static/src/app/store/pos_store.js
index 81e69f8d990..f61ece95cd7 100644
--- a/addons/point_of_sale/static/src/app/store/pos_store.js
+++ b/addons/point_of_sale/static/src/app/store/pos_store.js
@@ -489,10 +489,7 @@ export class PosStore extends Reactive {
* @returns true if the POS app (not only this POS config) has at least one valid product.
*/
posHasValidProduct() {
- return (
- this.pos_has_valid_product ||
- Object.values(this.db.product_by_id).some((p) => p.available_in_pos && p.lst_price > 0)
- );
+ return this.pos_has_valid_product;
}
setSelectedCategoryId(categoryId) {
diff --git a/addons/pos_restaurant/data/pos_restaurant_onboarding.xml b/addons/pos_restaurant/data/pos_restaurant_onboarding.xml
index 7a0ce17b000..7e801324794 100644
--- a/addons/pos_restaurant/data/pos_restaurant_onboarding.xml
+++ b/addons/pos_restaurant/data/pos_restaurant_onboarding.xml
@@ -231,492 +231,5 @@
-
-
- Restaurant
- True
-
- True
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ClosedDemo/0005
- paid
- 14.0
- 0.0
- 14.0
- 0.0
- Order 00000-003-1001
-
-
-
- Closed Orderline 3.1.1
-
- 7.0
- 7.0
- 7.0
-
- Margherita
-
-
-
- Closed Orderline 3.1.2
-
- 7.0
- 7.0
- 7.0
-
- Funghi
-
-
-
-
-
- 14.0
-
-
-
-
-
- ClosedDemo/0006
- paid
- 7.0
- 0.0
- 7.0
- 0.0
- Order 00000-003-1002
-
-
-
- Closed Orderline 3.2.1
-
- 7.0
- 7.0
- 7.0
-
- Vegetarian
-
-
-
-
-
- 7.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ClosedDemo/0007
- paid
- 6.7
- 0.0
- 6.7
- 0.0
- Order 00000-004-1001
-
-
-
- Closed Orderline 4.1.1
-
- 2.20
- 2.20
- 2.20
-
- Water
-
-
-
- Closed Orderline 4.1.2
-
- 4.5
- 4.5
- 4.5
-
- Pasta Bolognese
-
-
-
-
-
- 6.7
-
-
-
-
-
- ClosedDemo/0008
- paid
- 28.0
- 0.0
- 28.0
- 0.0
- Order 00000-004-1002
-
-
-
- Closed Orderline 4.2.1
-
- 28.0
- 28.0
- 7.0
- 4
-
- Cheese Burger
-
-
-
-
-
- 28.0
-
-
-
-
-
-
- Main Floor
- rgb(136,137,242)
-
-
-
-
- 1
-
- 4
- rgb(53,211,116)
- square
- 100
- 100
- 50
- 50
-
-
-
- 2
-
- 4
- rgb(53,211,116)
- square
- 100
- 100
- 212
- 50
-
-
-
- 3
-
- 4
- rgb(53,211,116)
- square
- 100
- 100
- 374
- 50
-
-
-
- 4
-
- 4
- rgb(53,211,116)
- square
- 100
- 100
- 536
- 50
-
-
-
- 5
-
- 4
- rgb(53,211,116)
- square
- 100
- 100
- 698
- 50
-
-
-
- 6
-
- 4
- rgb(53,211,116)
- square
- 100
- 100
- 860
- 50
-
-
-
- 7
-
- 4
- rgb(235,109,109)
- square
- 100
- 100
- 50
- 280
-
-
-
- 8
-
- 4
- rgb(235,109,109)
- square
- 100
- 100
- 212
- 280
-
-
-
- 9
-
- 4
- rgb(235,109,109)
- square
- 100
- 100
- 698
- 280
-
-
-
- 10
-
- 4
- rgb(235,109,109)
- square
- 100
- 100
- 860
- 280
-
-
-
- 11
-
- 4
- rgb(78,210,190)
- round
- 210
- 210
- 400
- 230
-
-
-
-
-
- Patio
- rgb(130, 233, 171)
-
-
-
-
-
-
- 1
-
- 2
- rgb(53,211,116)
- square
- 130
- 85
- 100
- 50
-
-
-
- 2
-
- 2
- rgb(53,211,116)
- square
- 130
- 85
- 100
- 166
-
-
-
- 3
-
- 2
- rgb(53,211,116)
- square
- 130
- 85
- 100
- 283
-
-
-
- 4
-
- 2
- rgb(53,211,116)
- square
- 130
- 85
- 100
- 400
-
-
-
-
-
- 5
-
- 2
- rgb(53,211,116)
- square
- 130
- 85
- 800
- 50
-
-
-
- 6
-
- 2
- rgb(53,211,116)
- square
- 130
- 85
- 800
- 166
-
-
-
- 7
-
- 2
- rgb(53,211,116)
- square
- 130
- 85
- 800
- 283
-
-
-
- 8
-
- 2
- rgb(53,211,116)
- square
- 130
- 85
- 800
- 400
-
-
-
-
-
- 9
-
- 4
- rgb(235,191,109)
- square
- 130
- 120
- 330
- 100
-
-
-
- 9
-
- 4
- rgb(235,191,109)
- square
- 130
- 120
- 330
- 100
-
-
-
- 10
-
- 4
- rgb(235,191,109)
- square
- 130
- 120
- 560
- 100
-
-
-
- 11
-
- 4
- rgb(235,191,109)
- square
- 130
- 120
- 330
- 315
-
-
-
- 12
-
- 4
- rgb(235,191,109)
- square
- 130
- 120
- 560
- 315
-
-
diff --git a/addons/pos_restaurant/data/pos_restaurant_onboarding_main_config.xml b/addons/pos_restaurant/data/pos_restaurant_onboarding_main_config.xml
new file mode 100644
index 00000000000..10ad31766c5
--- /dev/null
+++ b/addons/pos_restaurant/data/pos_restaurant_onboarding_main_config.xml
@@ -0,0 +1,488 @@
+
+
+
+ Restaurant
+ True
+
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ClosedDemo/0005
+ paid
+ 14.0
+ 0.0
+ 14.0
+ 0.0
+ Order 00000-003-1001
+
+
+
+ Closed Orderline 3.1.1
+
+ 7.0
+ 7.0
+ 7.0
+
+ Margherita
+
+
+
+ Closed Orderline 3.1.2
+
+ 7.0
+ 7.0
+ 7.0
+
+ Funghi
+
+
+
+
+
+ 14.0
+
+
+
+
+
+ ClosedDemo/0006
+ paid
+ 7.0
+ 0.0
+ 7.0
+ 0.0
+ Order 00000-003-1002
+
+
+
+ Closed Orderline 3.2.1
+
+ 7.0
+ 7.0
+ 7.0
+
+ Vegetarian
+
+
+
+
+
+ 7.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ClosedDemo/0007
+ paid
+ 6.7
+ 0.0
+ 6.7
+ 0.0
+ Order 00000-004-1001
+
+
+
+ Closed Orderline 4.1.1
+
+ 2.20
+ 2.20
+ 2.20
+
+ Water
+
+
+
+ Closed Orderline 4.1.2
+
+ 4.5
+ 4.5
+ 4.5
+
+ Pasta Bolognese
+
+
+
+
+
+ 6.7
+
+
+
+
+
+ ClosedDemo/0008
+ paid
+ 28.0
+ 0.0
+ 28.0
+ 0.0
+ Order 00000-004-1002
+
+
+
+ Closed Orderline 4.2.1
+
+ 28.0
+ 28.0
+ 7.0
+ 4
+
+ Cheese Burger
+
+
+
+
+
+ 28.0
+
+
+
+
+
+
+ Main Floor
+ rgb(136,137,242)
+
+
+
+
+ 1
+
+ 4
+ rgb(53,211,116)
+ square
+ 100
+ 100
+ 50
+ 50
+
+
+
+ 2
+
+ 4
+ rgb(53,211,116)
+ square
+ 100
+ 100
+ 212
+ 50
+
+
+
+ 3
+
+ 4
+ rgb(53,211,116)
+ square
+ 100
+ 100
+ 374
+ 50
+
+
+
+ 4
+
+ 4
+ rgb(53,211,116)
+ square
+ 100
+ 100
+ 536
+ 50
+
+
+
+ 5
+
+ 4
+ rgb(53,211,116)
+ square
+ 100
+ 100
+ 698
+ 50
+
+
+
+ 6
+
+ 4
+ rgb(53,211,116)
+ square
+ 100
+ 100
+ 860
+ 50
+
+
+
+ 7
+
+ 4
+ rgb(235,109,109)
+ square
+ 100
+ 100
+ 50
+ 280
+
+
+
+ 8
+
+ 4
+ rgb(235,109,109)
+ square
+ 100
+ 100
+ 212
+ 280
+
+
+
+ 9
+
+ 4
+ rgb(235,109,109)
+ square
+ 100
+ 100
+ 698
+ 280
+
+
+
+ 10
+
+ 4
+ rgb(235,109,109)
+ square
+ 100
+ 100
+ 860
+ 280
+
+
+
+ 11
+
+ 4
+ rgb(78,210,190)
+ round
+ 210
+ 210
+ 400
+ 230
+
+
+
+
+
+ Patio
+ rgb(130, 233, 171)
+
+
+
+
+
+
+ 1
+
+ 2
+ rgb(53,211,116)
+ square
+ 130
+ 85
+ 100
+ 50
+
+
+
+ 2
+
+ 2
+ rgb(53,211,116)
+ square
+ 130
+ 85
+ 100
+ 166
+
+
+
+ 3
+
+ 2
+ rgb(53,211,116)
+ square
+ 130
+ 85
+ 100
+ 283
+
+
+
+ 4
+
+ 2
+ rgb(53,211,116)
+ square
+ 130
+ 85
+ 100
+ 400
+
+
+
+
+
+ 5
+
+ 2
+ rgb(53,211,116)
+ square
+ 130
+ 85
+ 800
+ 50
+
+
+
+ 6
+
+ 2
+ rgb(53,211,116)
+ square
+ 130
+ 85
+ 800
+ 166
+
+
+
+ 7
+
+ 2
+ rgb(53,211,116)
+ square
+ 130
+ 85
+ 800
+ 283
+
+
+
+ 8
+
+ 2
+ rgb(53,211,116)
+ square
+ 130
+ 85
+ 800
+ 400
+
+
+
+
+
+ 9
+
+ 4
+ rgb(235,191,109)
+ square
+ 130
+ 120
+ 330
+ 100
+
+
+
+ 9
+
+ 4
+ rgb(235,191,109)
+ square
+ 130
+ 120
+ 330
+ 100
+
+
+
+ 10
+
+ 4
+ rgb(235,191,109)
+ square
+ 130
+ 120
+ 560
+ 100
+
+
+
+ 11
+
+ 4
+ rgb(235,191,109)
+ square
+ 130
+ 120
+ 330
+ 315
+
+
+
+ 12
+
+ 4
+ rgb(235,191,109)
+ square
+ 130
+ 120
+ 560
+ 315
+
+
diff --git a/addons/pos_restaurant/models/pos_session.py b/addons/pos_restaurant/models/pos_session.py
index ba31451cc18..2c825bdabf0 100644
--- a/addons/pos_restaurant/models/pos_session.py
+++ b/addons/pos_restaurant/models/pos_session.py
@@ -67,21 +67,24 @@ class PosSession(models.Model):
def _load_onboarding_data(self):
super()._load_onboarding_data()
convert.convert_file(self.env, 'pos_restaurant', 'data/pos_restaurant_onboarding.xml', None, mode='init', kind='data')
- restaurant_config = self.env.ref('pos_restaurant.pos_config_main_restaurant')
- if len(restaurant_config.session_ids.filtered(lambda s: s.state == 'opened')) == 0:
- self.env['pos.session'].create({
- 'config_id': restaurant_config.id,
- 'user_id': self.env.ref('base.user_admin').id,
- })
- convert.convert_file(self.env, 'pos_restaurant', 'data/pos_restaurant_onboarding_open_session.xml', None, mode='init', kind='data')
+ restaurant_config = self.env.ref('pos_restaurant.pos_config_main_restaurant', raise_if_not_found=False)
+ if restaurant_config:
+ convert.convert_file(self.env, 'pos_restaurant', 'data/pos_restaurant_onboarding_main_config.xml', None, mode='init', kind='data')
+ if len(restaurant_config.session_ids.filtered(lambda s: s.state == 'opened')) == 0:
+ self.env['pos.session'].create({
+ 'config_id': restaurant_config.id,
+ 'user_id': self.env.ref('base.user_admin').id,
+ })
+ convert.convert_file(self.env, 'pos_restaurant', 'data/pos_restaurant_onboarding_open_session.xml', None, mode='init', kind='data')
def _after_load_onboarding_data(self):
super()._after_load_onboarding_data()
- configs = self.config_id.filtered('module_pos_restaurant').union(self.env.ref('pos_restaurant.pos_config_main_restaurant', raise_if_not_found=False))
- configs.with_context(bypass_categories_forbidden_change=True).write({
- 'limit_categories': True,
- 'iface_available_categ_ids': [Command.link(self.env.ref('pos_restaurant.food').id), Command.link(self.env.ref('pos_restaurant.drinks').id)]
- })
+ configs = self.config_id.filtered('module_pos_restaurant')
+ if configs:
+ configs.with_context(bypass_categories_forbidden_change=True).write({
+ 'limit_categories': True,
+ 'iface_available_categ_ids': [Command.link(self.env.ref('pos_restaurant.food').id), Command.link(self.env.ref('pos_restaurant.drinks').id)]
+ })
@api.model
def _set_last_order_preparation_change(self, order_ids):