diff --git a/addons/pos_self_order/__manifest__.py b/addons/pos_self_order/__manifest__.py
index cd9c7116566..43684abc1a1 100644
--- a/addons/pos_self_order/__manifest__.py
+++ b/addons/pos_self_order/__manifest__.py
@@ -26,7 +26,6 @@
# Assets
"pos_self_order.assets_common": [
"pos_self_order/static/src/kiosk/bootstrap_overridden.scss",
- "web/static/lib/jquery/jquery.js",
("include", "web._assets_helpers"),
("include", "web._assets_backend_helpers"),
("include", "web._assets_primary_variables"),
diff --git a/addons/pos_self_order/models/pos_config.py b/addons/pos_self_order/models/pos_config.py
index e7090ec40a0..00319709eaf 100644
--- a/addons/pos_self_order/models/pos_config.py
+++ b/addons/pos_self_order/models/pos_config.py
@@ -69,12 +69,10 @@ class PosConfig(models.Model):
[("code", "=", self.env.lang)], limit=1
),
)
- self_order_kiosk_image_home = fields.Image(
- string="Self Order Kiosk Image Home",
+ self_order_kiosk_image_home_ids = fields.Many2many(
+ 'ir.attachment',
+ string="Home Images",
help="Image to display on the self order screen",
- max_width=1080,
- max_height=1920,
- default=_self_order_default_image,
)
self_order_kiosk_image_eat = fields.Image(
string="Self Order Kiosk Image Eat",
@@ -89,11 +87,6 @@ class PosConfig(models.Model):
max_width=1200,
max_height=250,
)
- self_order_kiosk_image_home_name = fields.Char(
- string="Self Order Kiosk Image Home Name",
- help="Name of the image to display on the self order screen",
- default=_self_order_default_image_name,
- )
self_order_kiosk_image_eat_name = fields.Char(
string="Self Order Kiosk Image Eat Name",
help="Name of the image to display on the self order screen",
@@ -163,6 +156,17 @@ class PosConfig(models.Model):
pos_config_ids = super().create(vals_list)
for pos_config_id in pos_config_ids:
+ for image_name in ['landing_01.jpg', 'landing_02.jpg', 'landing_03.jpg']:
+ image_path = modules.get_module_resource("pos_self_order", "static/img", image_name)
+ attachment = self.env['ir.attachment'].create({
+ 'name': image_name,
+ 'datas': base64.b64encode(file_open(image_path, "rb").read()),
+ 'res_model': 'pos.config',
+ 'res_id': pos_config_id.id,
+ 'type': 'binary',
+ })
+ pos_config_id.self_order_kiosk_image_home_ids = [(4, attachment.id)]
+
if pos_config_id.module_pos_restaurant:
pos_config_id.self_order_view_mode = True
pos_config_id.self_order_table_mode = True
@@ -348,7 +352,7 @@ class PosConfig(models.Model):
"kiosk_mode": self.self_order_kiosk_mode,
"kiosk_takeaway": self.self_order_kiosk_takeaway,
"kiosk_alternative_fp": self.self_order_kiosk_alternative_fp_id.id,
- "kiosk_image_home": self._get_kiosk_image(self.self_order_kiosk_image_home),
+ "kiosk_image_home": self._get_kiosk_attachment(self.self_order_kiosk_image_home_ids),
"kiosk_image_eat": self._get_kiosk_image(self.self_order_kiosk_image_eat),
"kiosk_image_brand": self._get_kiosk_image(self.self_order_kiosk_image_brand),
"kiosk_default_language": default_language[0] if default_language else [],
@@ -359,6 +363,15 @@ class PosConfig(models.Model):
image = Image.open(io.BytesIO(base64.b64decode(image))) if image else False
return image_to_base64(image, 'PNG').decode('utf-8') if image else False
+ def _get_kiosk_attachment(self, images):
+ encoded_images = []
+ for image in images:
+ encoded_images.append({
+ 'id': image.id,
+ 'data': image.datas.decode('utf-8'),
+ })
+ return encoded_images
+
def _split_qr_codes_list(self, floors: List[Dict], cols: int) -> List[Dict]:
"""
:floors: the list of floors
diff --git a/addons/pos_self_order/models/res_config_settings.py b/addons/pos_self_order/models/res_config_settings.py
index b17598f89ab..069ab1e2b4e 100644
--- a/addons/pos_self_order/models/res_config_settings.py
+++ b/addons/pos_self_order/models/res_config_settings.py
@@ -12,10 +12,9 @@ class ResConfigSettings(models.TransientModel):
pos_self_order_kiosk_mode = fields.Selection(related="pos_config_id.self_order_kiosk_mode", readonly=False)
pos_self_order_kiosk_takeaway = fields.Boolean(related="pos_config_id.self_order_kiosk_takeaway", readonly=False)
pos_self_order_kiosk_alternative_fp_id = fields.Many2one(related="pos_config_id.self_order_kiosk_alternative_fp_id", readonly=False)
- pos_self_order_kiosk_image_home = fields.Image(related="pos_config_id.self_order_kiosk_image_home", readonly=False)
+ pos_self_order_kiosk_image_home_ids = fields.Many2many(related="pos_config_id.self_order_kiosk_image_home_ids", readonly=False)
pos_self_order_kiosk_image_eat = fields.Image(related="pos_config_id.self_order_kiosk_image_eat", readonly=False)
pos_self_order_kiosk_image_brand = fields.Image(related="pos_config_id.self_order_kiosk_image_brand", readonly=False)
- pos_self_order_kiosk_image_home_name = fields.Char(related="pos_config_id.self_order_kiosk_image_home_name", readonly=False)
pos_self_order_kiosk_image_eat_name = fields.Char(related="pos_config_id.self_order_kiosk_image_eat_name", readonly=False)
pos_self_order_kiosk_image_brand_name = fields.Char(related="pos_config_id.self_order_kiosk_image_brand_name", readonly=False)
pos_self_order_kiosk_available_language_ids = fields.Many2many(related="pos_config_id.self_order_kiosk_available_language_ids", readonly=False)
diff --git a/addons/pos_self_order/static/img/landing_01.jpg b/addons/pos_self_order/static/img/landing_01.jpg
new file mode 100644
index 00000000000..0592ac97387
Binary files /dev/null and b/addons/pos_self_order/static/img/landing_01.jpg differ
diff --git a/addons/pos_self_order/static/img/landing_02.jpg b/addons/pos_self_order/static/img/landing_02.jpg
new file mode 100644
index 00000000000..de947bea437
Binary files /dev/null and b/addons/pos_self_order/static/img/landing_02.jpg differ
diff --git a/addons/pos_self_order/static/img/landing_03.jpg b/addons/pos_self_order/static/img/landing_03.jpg
new file mode 100644
index 00000000000..f209dff66d1
Binary files /dev/null and b/addons/pos_self_order/static/img/landing_03.jpg differ
diff --git a/addons/pos_self_order/static/src/kiosk/pages/landing_page/landing_page.js b/addons/pos_self_order/static/src/kiosk/pages/landing_page/landing_page.js
index 32f063d4fb6..950c34084ba 100644
--- a/addons/pos_self_order/static/src/kiosk/pages/landing_page/landing_page.js
+++ b/addons/pos_self_order/static/src/kiosk/pages/landing_page/landing_page.js
@@ -1,11 +1,13 @@
/** @odoo-module */
+/* global Carousel */
-import { Component, onWillStart } from "@odoo/owl";
+import { Component, onMounted, onWillStart, onWillUnmount, useRef } from "@odoo/owl";
import { useselfOrder } from "@pos_self_order/kiosk/self_order_kiosk_service";
import { useService } from "@web/core/utils/hooks";
import { KioskTemplate } from "@pos_self_order/kiosk/template/kiosk_template";
import { LanguagePopup } from "@pos_self_order/kiosk/components/language_popup/language_popup";
import { Order } from "@pos_self_order/common/models/order";
+import { loadJS } from "@web/core/assets";
export class LandingPage extends Component {
static template = "pos_self_order.LandingPage";
@@ -15,10 +17,28 @@ export class LandingPage extends Component {
this.selfOrder = useselfOrder();
this.router = useService("router");
this.dialog = useService("dialog");
+ this.carouselRef = useRef("carousel");
+ this.activeSelected = false;
+ this.carouselInterval = null;
onWillStart(() => {
this.selfOrder.currentOrder = new Order({});
this.tablePadNumber = null;
+
+ return loadJS("/web/static/lib/bootstrap/js/dist/carousel.js");
+ });
+
+ onMounted(() => {
+ // used to init carousel after components mount / unmount
+ const carousel = new Carousel(this.carouselRef.el);
+
+ this.carouselInterval = setInterval(() => {
+ carousel.next();
+ }, 5000);
+ });
+
+ onWillUnmount(() => {
+ clearInterval(this.carouselInterval);
});
}
@@ -41,4 +61,12 @@ export class LandingPage extends Component {
get languages() {
return this.selfOrder.kiosk_available_languages;
}
+
+ get activeImage() {
+ if (!this.activeSelected) {
+ this.activeSelected = true;
+ return "active";
+ }
+ return "";
+ }
}
diff --git a/addons/pos_self_order/static/src/kiosk/pages/landing_page/landing_page.xml b/addons/pos_self_order/static/src/kiosk/pages/landing_page/landing_page.xml
index c5cf166ec4c..e7f48e5f890 100644
--- a/addons/pos_self_order/static/src/kiosk/pages/landing_page/landing_page.xml
+++ b/addons/pos_self_order/static/src/kiosk/pages/landing_page/landing_page.xml
@@ -7,12 +7,11 @@
-