diff --git a/addons/point_of_sale/static/src/app/screens/receipt_screen/receipt/order_receipt.xml b/addons/point_of_sale/static/src/app/screens/receipt_screen/receipt/order_receipt.xml
index 1d995d1f7a1..b6f16b2babb 100644
--- a/addons/point_of_sale/static/src/app/screens/receipt_screen/receipt/order_receipt.xml
+++ b/addons/point_of_sale/static/src/app/screens/receipt_screen/receipt/order_receipt.xml
@@ -11,8 +11,13 @@
- -
- SN
+
-
+
+ Lot Number
+
+
+ SN
+
diff --git a/addons/point_of_sale/static/src/app/store/models.js b/addons/point_of_sale/static/src/app/store/models.js
index 74b81ec4e8b..74a90d70e46 100644
--- a/addons/point_of_sale/static/src/app/store/models.js
+++ b/addons/point_of_sale/static/src/app/store/models.js
@@ -1081,6 +1081,7 @@ export class Orderline extends PosModel {
customerNote: this.get_customer_note(),
internalNote: this.getNote(),
comboParent: this.comboParent?.get_full_product_name(),
+ pack_lot_lines: this.get_lot_lines(),
};
}
}
diff --git a/addons/point_of_sale/static/tests/tours/ReceiptScreen.tour.js b/addons/point_of_sale/static/tests/tours/ReceiptScreen.tour.js
index 48db7534667..24c22230b62 100644
--- a/addons/point_of_sale/static/tests/tours/ReceiptScreen.tour.js
+++ b/addons/point_of_sale/static/tests/tours/ReceiptScreen.tour.js
@@ -114,3 +114,19 @@ registry.category("web_tour.tours").add("OrderPaidInCash", {
ProductScreen.lastClosingCashIs("25.00"),
].flat(),
});
+
+registry
+ .category("web_tour.tours")
+ .add("ReceiptTrackingMethodTour", {
+ test: true,
+ url: "/pos/ui",
+ steps: () => [
+ ProductScreen.clickHomeCategory(),
+ ProductScreen.clickDisplayedProduct('Product A'),
+ ProductScreen.enterLotNumber('123456789'),
+ ProductScreen.clickPayButton(),
+ PaymentScreen.clickPaymentMethod('Cash'),
+ PaymentScreen.clickValidate(),
+ ReceiptScreen.trackingMethodIsLot(),
+ ].flat(),
+ });
diff --git a/addons/point_of_sale/static/tests/tours/helpers/ReceiptScreenTourMethods.js b/addons/point_of_sale/static/tests/tours/helpers/ReceiptScreenTourMethods.js
index ba2f8640e21..b91266ff998 100644
--- a/addons/point_of_sale/static/tests/tours/helpers/ReceiptScreenTourMethods.js
+++ b/addons/point_of_sale/static/tests/tours/helpers/ReceiptScreenTourMethods.js
@@ -89,3 +89,13 @@ export function emailIsSuccessful() {
export function nextOrder() {
return [...isShown(), ...clickNextOrder()];
}
+
+export function trackingMethodIsLot() {
+ return [
+ {
+ content: `tracking method is Lot`,
+ trigger: `li:contains("Lot Number")`,
+ run: () => {},
+ },
+ ];
+}
\ No newline at end of file
diff --git a/addons/point_of_sale/tests/test_frontend.py b/addons/point_of_sale/tests/test_frontend.py
index 87ceda9ca1d..ae71811854c 100644
--- a/addons/point_of_sale/tests/test_frontend.py
+++ b/addons/point_of_sale/tests/test_frontend.py
@@ -1036,6 +1036,17 @@ class TestUi(TestPointOfSaleHttpCommon):
self.main_pos_config.open_ui()
self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config.id, 'LotRefundTour', login="accountman")
+ def test_receipt_tracking_method(self):
+ self.product_a = self.env['product.product'].create({
+ 'name': 'Product A',
+ 'type': 'product',
+ 'tracking': 'lot',
+ 'categ_id': self.env.ref('product.product_category_all').id,
+ 'available_in_pos': True,
+ })
+ self.main_pos_config.open_ui()
+ self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config.id, 'ReceiptTrackingMethodTour', login="accountman")
+
# This class just runs the same tests as above but with mobile emulation
class MobileTestUi(TestUi):
browser_size = '375x667'