From efba30a0cbf8bdd47f78fd1855e08dad3df4a332 Mon Sep 17 00:00:00 2001 From: Pierre Masereel Date: Tue, 5 May 2020 08:01:31 +0000 Subject: [PATCH] [REF] pos_reprint: migration to OWL framework --- addons/pos_reprint/__manifest__.py | 4 +- .../pos_reprint/static/src/js/OrderReceipt.js | 24 ++++++++ .../static/src/js/ReprintButton.js | 37 ++++++++++++ .../static/src/js/ReprintScreen.js | 21 +++++++ addons/pos_reprint/static/src/js/reprint.js | 58 ------------------- .../static/src/xml/OrderReceipt.xml | 12 ++++ .../static/src/xml/ReprintButton.xml | 12 ++++ .../static/src/xml/ReprintScreen.xml | 29 ++++++++++ addons/pos_reprint/static/src/xml/reprint.xml | 27 --------- .../views/pos_reprint_templates.xml | 4 +- 10 files changed, 141 insertions(+), 87 deletions(-) create mode 100644 addons/pos_reprint/static/src/js/OrderReceipt.js create mode 100644 addons/pos_reprint/static/src/js/ReprintButton.js create mode 100644 addons/pos_reprint/static/src/js/ReprintScreen.js delete mode 100644 addons/pos_reprint/static/src/js/reprint.js create mode 100644 addons/pos_reprint/static/src/xml/OrderReceipt.xml create mode 100644 addons/pos_reprint/static/src/xml/ReprintButton.xml create mode 100644 addons/pos_reprint/static/src/xml/ReprintScreen.xml delete mode 100644 addons/pos_reprint/static/src/xml/reprint.xml diff --git a/addons/pos_reprint/__manifest__.py b/addons/pos_reprint/__manifest__.py index 36e6c3a718c..4b3dc6282c1 100644 --- a/addons/pos_reprint/__manifest__.py +++ b/addons/pos_reprint/__manifest__.py @@ -18,7 +18,9 @@ Allow cashier to reprint receipts 'views/pos_config_views.xml' ], 'qweb': [ - 'static/src/xml/reprint.xml', + 'static/src/xml/OrderReceipt.xml', + 'static/src/xml/ReprintButton.xml', + 'static/src/xml/ReprintScreen.xml', ], 'installable': True, } diff --git a/addons/pos_reprint/static/src/js/OrderReceipt.js b/addons/pos_reprint/static/src/js/OrderReceipt.js new file mode 100644 index 00000000000..6d4e9c6e697 --- /dev/null +++ b/addons/pos_reprint/static/src/js/OrderReceipt.js @@ -0,0 +1,24 @@ +odoo.define('pos_reprint.OrderReceipt', function(require) { + 'use strict'; + + const OrderReceipt = require('point_of_sale.OrderReceipt'); + const Registries = require('point_of_sale.Registries'); + + const PosReprintOrderReceipt = OrderReceipt => + class extends OrderReceipt { + get receiptEnv () { + if (this.props.isReprint) { + return this.env.pos.last_receipt_render_env; + } + else { + const receipt_render_env = super.receiptEnv; + this.env.pos.last_receipt_render_env = receipt_render_env; + return receipt_render_env; + } + } + }; + + Registries.Component.extend(OrderReceipt, PosReprintOrderReceipt); + + return OrderReceipt; +}); diff --git a/addons/pos_reprint/static/src/js/ReprintButton.js b/addons/pos_reprint/static/src/js/ReprintButton.js new file mode 100644 index 00000000000..0ea43a897a5 --- /dev/null +++ b/addons/pos_reprint/static/src/js/ReprintButton.js @@ -0,0 +1,37 @@ +odoo.define('pos_reprint.ReprintButton', function(require) { + 'use strict'; + + const PosComponent = require('point_of_sale.PosComponent'); + const ProductScreen = require('point_of_sale.ProductScreen'); + const { useListener } = require('web.custom_hooks'); + const Registries = require('point_of_sale.Registries'); + + class ReprintButton extends PosComponent { + constructor() { + super(...arguments); + useListener('click', this.onClick); + } + async onClick() { + if (this.env.pos.last_receipt_render_env) { + await this.showTempScreen('ReprintScreen'); + } else { + await this.showPopup('ErrorPopup', { + title: this.env._t('Nothing to Print'), + body: this.env._t('There is no previous receipt to print.'), + }); + } + } + } + ReprintButton.template = 'ReprintButton'; + + ProductScreen.addControlButton({ + component: ReprintButton, + condition: function() { + return this.env.pos.config.module_pos_reprint; + }, + }); + + Registries.Component.add(ReprintButton); + + return ReprintButton; +}); diff --git a/addons/pos_reprint/static/src/js/ReprintScreen.js b/addons/pos_reprint/static/src/js/ReprintScreen.js new file mode 100644 index 00000000000..33ee15268ac --- /dev/null +++ b/addons/pos_reprint/static/src/js/ReprintScreen.js @@ -0,0 +1,21 @@ +odoo.define('pos_reprint.ReprintScreen', function (require) { + 'use strict'; + + const ReceiptScreen = require('point_of_sale.ReceiptScreen'); + const Registries = require('point_of_sale.Registries'); + + const ReprintScreen = (ReceiptScreen) => { + class ReprintScreen extends ReceiptScreen { + confirm() { + this.props.resolve(); + this.trigger('close-temp-screen'); + } + } + ReprintScreen.template = 'ReprintScreen'; + return ReprintScreen; + }; + + Registries.Component.addByExtending(ReprintScreen, ReceiptScreen); + + return ReprintScreen; +}); diff --git a/addons/pos_reprint/static/src/js/reprint.js b/addons/pos_reprint/static/src/js/reprint.js deleted file mode 100644 index 05cbc028604..00000000000 --- a/addons/pos_reprint/static/src/js/reprint.js +++ /dev/null @@ -1,58 +0,0 @@ -odoo.define('pos_reprint.pos_reprint', function (require) { -"use strict"; - -var screens = require('point_of_sale.screens'); -var gui = require('point_of_sale.gui'); -var core = require('web.core'); - -var _t = core._t; - -screens.ReceiptScreenWidget.include({ - get_receipt_render_env: function() { - this.pos.last_receipt_render_env = this._super(); - return this.pos.last_receipt_render_env; - } -}); - -var ReprintReceiptScreenWidget = screens.ReceiptScreenWidget.extend({ - template: 'ReprintReceiptScreenWidget', - render_change: function() {}, - click_next: function() {}, - click_back: function() { - this._super(); - this.gui.show_screen('products'); - }, - get_receipt_render_env: function() { - this.pos.last_receipt_render_env.receipt.reprint = true; - return this.pos.last_receipt_render_env; - }, -}); -gui.define_screen({name:'reprint_receipt', widget: ReprintReceiptScreenWidget}); - -var ReprintButton = screens.ActionButtonWidget.extend({ - template: 'ReprintButton', - button_click: function() { - if (this.pos.last_receipt_render_env) { - this.gui.show_screen('reprint_receipt'); - } else { - this.gui.show_popup('error', { - 'title': _t('Nothing to Print'), - 'body': _t('There is no previous receipt to print.'), - }); - } - }, -}); - -screens.define_action_button({ - 'name': 'reprint', - 'widget': ReprintButton, - 'condition': function(){ - return this.pos.config.module_pos_reprint; - }, -}); - -return { - ReprintReceiptScreenWidget: ReprintReceiptScreenWidget, -}; - -}); diff --git a/addons/pos_reprint/static/src/xml/OrderReceipt.xml b/addons/pos_reprint/static/src/xml/OrderReceipt.xml new file mode 100644 index 00000000000..378b5312552 --- /dev/null +++ b/addons/pos_reprint/static/src/xml/OrderReceipt.xml @@ -0,0 +1,12 @@ + + + + + + +
DUPLICATA
+
+
+
+ +
diff --git a/addons/pos_reprint/static/src/xml/ReprintButton.xml b/addons/pos_reprint/static/src/xml/ReprintButton.xml new file mode 100644 index 00000000000..6a5e5daf3f7 --- /dev/null +++ b/addons/pos_reprint/static/src/xml/ReprintButton.xml @@ -0,0 +1,12 @@ + + + + + + + + Reprint Receipt + + + + diff --git a/addons/pos_reprint/static/src/xml/ReprintScreen.xml b/addons/pos_reprint/static/src/xml/ReprintScreen.xml new file mode 100644 index 00000000000..709c002d1c5 --- /dev/null +++ b/addons/pos_reprint/static/src/xml/ReprintScreen.xml @@ -0,0 +1,29 @@ + + + + +
+
+
+

Last Receipt

+ + Ok + + + +
+
+
+ + + Print +
+
+ +
+
+
+
+
+ +
diff --git a/addons/pos_reprint/static/src/xml/reprint.xml b/addons/pos_reprint/static/src/xml/reprint.xml deleted file mode 100644 index 285c0c6eb6d..00000000000 --- a/addons/pos_reprint/static/src/xml/reprint.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - -
- Reprint Receipt -
-
- - - - - - Back - - - - - - - -
DUPLICATA
-
-
-
- -
diff --git a/addons/pos_reprint/views/pos_reprint_templates.xml b/addons/pos_reprint/views/pos_reprint_templates.xml index c1e2a54ccf7..0a809d691b4 100644 --- a/addons/pos_reprint/views/pos_reprint_templates.xml +++ b/addons/pos_reprint/views/pos_reprint_templates.xml @@ -2,7 +2,9 @@