From a54d54c9c479aaee3bafe6e241d89d557a1e0b56 Mon Sep 17 00:00:00 2001 From: "Jacky (trj)" Date: Thu, 20 May 2021 08:01:28 +0000 Subject: [FIX] point_of_sale: random failure when reprint receipt Because the `receiptHtml` was taken from a component which was mounted outside of the DOM, it was hardly ever destroyed for some unknown reasons and the `el.outerHTML` could not be taken to create the receipt. closes odoo/odoo#71087 Signed-off-by: pimodoo --- addons/point_of_sale/static/src/css/pos.css | 4 ++++ .../OrderManagementScreen/ControlButtons/ReprintReceiptButton.js | 6 +----- .../src/js/Screens/OrderManagementScreen/OrderManagementScreen.js | 3 ++- .../src/xml/Screens/OrderManagementScreen/OrderManagementScreen.xml | 5 ++++- 4 files changed, 11 insertions(+), 7 deletions(-) (limited to 'addons') diff --git a/addons/point_of_sale/static/src/css/pos.css b/addons/point_of_sale/static/src/css/pos.css index 6853fce5d8c..3c9798779c1 100644 --- a/addons/point_of_sale/static/src/css/pos.css +++ b/addons/point_of_sale/static/src/css/pos.css @@ -2973,6 +2973,10 @@ td { color: white; } +.order-receipt-hidden { + display: none; +} + .order-receipt { color: white; font-size: medium; diff --git a/addons/point_of_sale/static/src/js/Screens/OrderManagementScreen/ControlButtons/ReprintReceiptButton.js b/addons/point_of_sale/static/src/js/Screens/OrderManagementScreen/ControlButtons/ReprintReceiptButton.js index 913f98af4e6..5878e96294e 100644 --- a/addons/point_of_sale/static/src/js/Screens/OrderManagementScreen/ControlButtons/ReprintReceiptButton.js +++ b/addons/point_of_sale/static/src/js/Screens/OrderManagementScreen/ControlButtons/ReprintReceiptButton.js @@ -6,7 +6,6 @@ odoo.define('point_of_sale.ReprintReceiptButton', function (require) { const PosComponent = require('point_of_sale.PosComponent'); const OrderManagementScreen = require('point_of_sale.OrderManagementScreen'); const Registries = require('point_of_sale.Registries'); - const OrderReceipt = require('point_of_sale.OrderReceipt'); const contexts = require('point_of_sale.PosContext'); class ReprintReceiptButton extends PosComponent { @@ -20,10 +19,7 @@ odoo.define('point_of_sale.ReprintReceiptButton', function (require) { if (!order) return; if (this.env.pos.proxy.printer) { - const fixture = document.createElement('div'); - const orderReceipt = new (Registries.Component.get(OrderReceipt))(this, { order }); - await orderReceipt.mount(fixture); - const receiptHtml = orderReceipt.el.outerHTML; + const receiptHtml = this.props.hiddenOrderReceipt.el.outerHTML; const printResult = await this.env.pos.proxy.printer.print_receipt(receiptHtml); if (!printResult.successful) { this.showTempScreen('ReprintReceiptScreen', { order: order }); diff --git a/addons/point_of_sale/static/src/js/Screens/OrderManagementScreen/OrderManagementScreen.js b/addons/point_of_sale/static/src/js/Screens/OrderManagementScreen/OrderManagementScreen.js index 4ce88054e25..429d4f91f83 100644 --- a/addons/point_of_sale/static/src/js/Screens/OrderManagementScreen/OrderManagementScreen.js +++ b/addons/point_of_sale/static/src/js/Screens/OrderManagementScreen/OrderManagementScreen.js @@ -1,7 +1,7 @@ odoo.define('point_of_sale.OrderManagementScreen', function (require) { 'use strict'; - const { useContext } = owl.hooks; + const { useContext, useRef } = owl.hooks; const { useListener } = require('web.custom_hooks'); const ControlButtonsMixin = require('point_of_sale.ControlButtonsMixin'); const NumberBuffer = require('point_of_sale.NumberBuffer'); @@ -27,6 +27,7 @@ odoo.define('point_of_sale.OrderManagementScreen', function (require) { OrderFetcher.setComponent(this); OrderFetcher.setConfigId(this.env.pos.config_id); this.orderManagementContext = useContext(contexts.orderManagement); + this.receiptRef = useRef('order-receipt'); } mounted() { OrderFetcher.on('update', this, this.render); diff --git a/addons/point_of_sale/static/src/xml/Screens/OrderManagementScreen/OrderManagementScreen.xml b/addons/point_of_sale/static/src/xml/Screens/OrderManagementScreen/OrderManagementScreen.xml index 8992e2c80ee..94d7358e7fe 100644 --- a/addons/point_of_sale/static/src/xml/Screens/OrderManagementScreen/OrderManagementScreen.xml +++ b/addons/point_of_sale/static/src/xml/Screens/OrderManagementScreen/OrderManagementScreen.xml @@ -9,7 +9,7 @@
- +
@@ -26,6 +26,9 @@
+
+ +
-- cgit v1.2.3