From 9f762bb1cf2753ccd10197ea93753d7c229fd4be Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Wed, 31 Jul 2019 10:52:22 +0200 Subject: [PATCH 01/13] [WIP] Add pos_environment from v8.0 (grap / grap-odoo-incubator) repository --- pos_environment/README.rst | 117 ++++++++++++++++++ pos_environment/__init__.py | 2 + pos_environment/__openerp__.py | 27 ++++ pos_environment/i18n/fr.po | 27 ++++ pos_environment/models/__init__.py | 2 + pos_environment/models/pos_config.py | 38 ++++++ pos_environment/readme/CONFIGURE.rst | 23 ++++ pos_environment/readme/CONTRIBUTORS.rst | 1 + pos_environment/readme/DESCRIPTION.rst | 6 + pos_environment/readme/ROADMAP.rst | 10 ++ pos_environment/readme/USAGE.rst | 7 ++ .../static/description/receipt.png | Bin 0 -> 35994 bytes pos_environment/static/src/js/models.js | 29 +++++ .../static/src/xml/pos_environment.xml | 59 +++++++++ pos_environment/views/templates.xml | 16 +++ pos_environment/views/view_pos_config.xml | 20 +++ 16 files changed, 384 insertions(+) create mode 100644 pos_environment/README.rst create mode 100644 pos_environment/__init__.py create mode 100644 pos_environment/__openerp__.py create mode 100644 pos_environment/i18n/fr.po create mode 100644 pos_environment/models/__init__.py create mode 100644 pos_environment/models/pos_config.py create mode 100644 pos_environment/readme/CONFIGURE.rst create mode 100644 pos_environment/readme/CONTRIBUTORS.rst create mode 100644 pos_environment/readme/DESCRIPTION.rst create mode 100644 pos_environment/readme/ROADMAP.rst create mode 100644 pos_environment/readme/USAGE.rst create mode 100644 pos_environment/static/description/receipt.png create mode 100644 pos_environment/static/src/js/models.js create mode 100644 pos_environment/static/src/xml/pos_environment.xml create mode 100644 pos_environment/views/templates.xml create mode 100644 pos_environment/views/view_pos_config.xml diff --git a/pos_environment/README.rst b/pos_environment/README.rst new file mode 100644 index 000000000..e4911fb3e --- /dev/null +++ b/pos_environment/README.rst @@ -0,0 +1,117 @@ +========================================== +Point of Sale - Custom Bill by Environment +========================================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-grap%2Fgrap--odoo--incubator-lightgray.png?logo=github + :target: https://github.com/grap/grap-odoo-incubator/tree/8.0/pos_environment + :alt: grap/grap-odoo-incubator + +|badge1| |badge2| |badge3| + +This module extends the Odoo point of sale module to allow administrator +to customize the bill printed by the point of sale, with a text depending +on your environment. (Development, , Pre Production, Production, etc...) + +This module is based on the mechanism introduced by the ``server_environment`` +module. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +* Open your module ``server_environment_files`` + +* In each environment folder, create a new file named ``pos_environment.conf`` + (for exemple) + +* In each file, write a section like this one, depending on your environment + +:: + + [pos_environment_header] + line_1 = =============================== + line_2 = TICKET EDITED ON A TEST + line_3 = ENVIRONMENT + line_4 = =============================== + + [pos_environment_footer] + line_1 = =============================== + line_2 = THIS TICKET HAS BEEN EDITED + line_3 = ON A TEST ENVIRONMENT + line_4 = ------------------------------- + line_5 = IT CAN NOT BE CONSIDERED + line_6 = AS A PROOF OF PURCHASE + line_7 = =============================== + +Usage +===== + +* Open Your Point of Sale + +* Realize a sale + +* The printed bill will display the custom message + +.. figure:: https://raw.githubusercontent.com/grap/grap-odoo-incubator/8.0/pos_environment/static/description/receipt.png + +Known issues / Roadmap +====================== + +* make this module working in a multi localization context (many languages), + inserting a pattern in the key of each lines. sample: + +:: + + [pos_environment_header] + line_1 = ================================ + line_2_en_US = TICKET EDITED ON A TEST ENV + line_2_fr_FR = TICKET EDITE SUR SERVEUR DE TEST + line_3 = ================================ + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* GRAP + +Contributors +~~~~~~~~~~~~ + +* Sylvain LE GAL (https://www.twitter.com/legalsylvain) + +Maintainers +~~~~~~~~~~~ + + + +This module is part of the `grap/grap-odoo-incubator `_ project on GitHub. + + +You are welcome to contribute. diff --git a/pos_environment/__init__.py b/pos_environment/__init__.py new file mode 100644 index 000000000..042e239ed --- /dev/null +++ b/pos_environment/__init__.py @@ -0,0 +1,2 @@ +# coding: utf-8 +from . import models diff --git a/pos_environment/__openerp__.py b/pos_environment/__openerp__.py new file mode 100644 index 000000000..d648501d2 --- /dev/null +++ b/pos_environment/__openerp__.py @@ -0,0 +1,27 @@ +# coding: utf-8 +# Copyright (C) 2019 - Today: GRAP (http://www.grap.coop) +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +{ + 'name': 'Point of Sale - Custom Bill by Environment', + 'summary': "Custom messages on the bill depending on the environment", + 'version': '8.0.1.0.0', + 'category': 'Point of Sale', + 'author': 'GRAP', + 'website': 'http://www.grap.coop', + 'license': 'AGPL-3', + 'depends': [ + 'point_of_sale', + 'server_environment', + ], + 'data': [ + 'views/templates.xml', + 'views/view_pos_config.xml', + ], + 'qweb': [ + 'static/src/xml/pos_environment.xml', + ], + 'images': [ + ], + 'installable': False, +} diff --git a/pos_environment/i18n/fr.po b/pos_environment/i18n/fr.po new file mode 100644 index 000000000..f4c7debf2 --- /dev/null +++ b/pos_environment/i18n/fr.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_environment +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-02-07 14:53+0000\n" +"PO-Revision-Date: 2019-02-07 14:53+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: pos_environment +#: field:pos.config,receipt_environment_footer:0 +msgid "Receipt Environment Footer" +msgstr "Pied du ticket (selon environnement)" + +#. module: pos_environment +#: field:pos.config,receipt_environment_header:0 +msgid "Receipt Environment Header" +msgstr "En-tĂȘte du ticket (selon environnement)" + diff --git a/pos_environment/models/__init__.py b/pos_environment/models/__init__.py new file mode 100644 index 000000000..32f009147 --- /dev/null +++ b/pos_environment/models/__init__.py @@ -0,0 +1,2 @@ +# coding: utf-8 +from . import pos_config diff --git a/pos_environment/models/pos_config.py b/pos_environment/models/pos_config.py new file mode 100644 index 000000000..12a963903 --- /dev/null +++ b/pos_environment/models/pos_config.py @@ -0,0 +1,38 @@ +# coding: utf-8 +# Copyright (C) 2018 - Today: GRAP (http://www.grap.coop) +# @author: Sylvain LE GAL (https://twitter.com/legalsylvain) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from openerp import api, fields, models +from openerp.addons.server_environment import serv_config + + +class PosConfig(models.Model): + _inherit = 'pos.config' + + # Columns section + receipt_environment_header = fields.Text( + string='Receipt Environment Header', + compute='_compute_receipt_environment_header') + + receipt_environment_footer = fields.Text( + string='Receipt Environment Footer', + compute='_compute_receipt_environment_footer') + + @api.multi + def _compute_receipt_environment_header(self): + for config in self: + config.receipt_environment_header =\ + self._get_receipt_environment_part('header') + + @api.multi + def _compute_receipt_environment_footer(self): + for config in self: + config.receipt_environment_footer =\ + self._get_receipt_environment_part('footer') + + @api.model + def _get_receipt_environment_part(self, part): + section_name = 'pos_environment_%s' % part + if serv_config.has_section(section_name): + return '\n'.join( + [x[1] for x in serv_config.items(section_name)]) diff --git a/pos_environment/readme/CONFIGURE.rst b/pos_environment/readme/CONFIGURE.rst new file mode 100644 index 000000000..8eb1a4696 --- /dev/null +++ b/pos_environment/readme/CONFIGURE.rst @@ -0,0 +1,23 @@ +* Open your module ``server_environment_files`` + +* In each environment folder, create a new file named ``pos_environment.conf`` + (for exemple) + +* In each file, write a section like this one, depending on your environment + +:: + + [pos_environment_header] + line_1 = =============================== + line_2 = TICKET EDITED ON A TEST + line_3 = ENVIRONMENT + line_4 = =============================== + + [pos_environment_footer] + line_1 = =============================== + line_2 = THIS TICKET HAS BEEN EDITED + line_3 = ON A TEST ENVIRONMENT + line_4 = ------------------------------- + line_5 = IT CAN NOT BE CONSIDERED + line_6 = AS A PROOF OF PURCHASE + line_7 = =============================== diff --git a/pos_environment/readme/CONTRIBUTORS.rst b/pos_environment/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..e1525ce04 --- /dev/null +++ b/pos_environment/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Sylvain LE GAL (https://www.twitter.com/legalsylvain) diff --git a/pos_environment/readme/DESCRIPTION.rst b/pos_environment/readme/DESCRIPTION.rst new file mode 100644 index 000000000..5aacf0427 --- /dev/null +++ b/pos_environment/readme/DESCRIPTION.rst @@ -0,0 +1,6 @@ +This module extends the Odoo point of sale module to allow administrator +to customize the bill printed by the point of sale, with a text depending +on your environment. (Development, , Pre Production, Production, etc...) + +This module is based on the mechanism introduced by the ``server_environment`` +module. diff --git a/pos_environment/readme/ROADMAP.rst b/pos_environment/readme/ROADMAP.rst new file mode 100644 index 000000000..9251cd5fa --- /dev/null +++ b/pos_environment/readme/ROADMAP.rst @@ -0,0 +1,10 @@ +* make this module working in a multi localization context (many languages), + inserting a pattern in the key of each lines. sample: + +:: + + [pos_environment_header] + line_1 = ================================ + line_2_en_US = TICKET EDITED ON A TEST ENV + line_2_fr_FR = TICKET EDITE SUR SERVEUR DE TEST + line_3 = ================================ diff --git a/pos_environment/readme/USAGE.rst b/pos_environment/readme/USAGE.rst new file mode 100644 index 000000000..8f348e8a4 --- /dev/null +++ b/pos_environment/readme/USAGE.rst @@ -0,0 +1,7 @@ +* Open Your Point of Sale + +* Realize a sale + +* The printed bill will display the custom message + +.. figure:: ../static/description/receipt.png diff --git a/pos_environment/static/description/receipt.png b/pos_environment/static/description/receipt.png new file mode 100644 index 0000000000000000000000000000000000000000..f5222162800d90dbec773614ad2c50ed6874204d GIT binary patch literal 35994 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 + diff --git a/pos_environment/views/templates.xml b/pos_environment/views/templates.xml new file mode 100644 index 000000000..0ae0b091f --- /dev/null +++ b/pos_environment/views/templates.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/pos_environment/views/view_pos_config.xml b/pos_environment/views/view_pos_config.xml new file mode 100644 index 000000000..6e080f5f3 --- /dev/null +++ b/pos_environment/views/view_pos_config.xml @@ -0,0 +1,20 @@ + + + + + + pos.config + + + + + + + + + + From 45d7ad30b75beca7d80cce036311b1ccd234013b Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Wed, 31 Jul 2019 10:54:34 +0200 Subject: [PATCH 02/13] [PORT] port pos_environment to v 12.0 --- pos_environment/README.rst | 113 ------------------ pos_environment/__init__.py | 1 - .../{__openerp__.py => __manifest__.py} | 11 +- pos_environment/models/__init__.py | 1 - pos_environment/models/pos_config.py | 17 ++- pos_environment/readme/CONFIGURE.rst | 54 ++++++--- pos_environment/readme/DESCRIPTION.rst | 4 + pos_environment/readme/ROADMAP.rst | 10 -- .../static/description/pos_config_form.png | Bin 0 -> 26669 bytes pos_environment/static/src/js/models.js | 34 +++--- .../static/src/xml/pos_environment.xml | 8 +- pos_environment/views/templates.xml | 4 +- pos_environment/views/view_pos_config.xml | 33 +++-- 13 files changed, 104 insertions(+), 186 deletions(-) rename pos_environment/{__openerp__.py => __manifest__.py} (79%) delete mode 100644 pos_environment/readme/ROADMAP.rst create mode 100644 pos_environment/static/description/pos_config_form.png diff --git a/pos_environment/README.rst b/pos_environment/README.rst index e4911fb3e..b97c09176 100644 --- a/pos_environment/README.rst +++ b/pos_environment/README.rst @@ -1,117 +1,4 @@ -========================================== -Point of Sale - Custom Bill by Environment -========================================== - .. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png - :target: https://odoo-community.org/page/development-status - :alt: Beta -.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png - :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html - :alt: License: AGPL-3 -.. |badge3| image:: https://img.shields.io/badge/github-grap%2Fgrap--odoo--incubator-lightgray.png?logo=github - :target: https://github.com/grap/grap-odoo-incubator/tree/8.0/pos_environment - :alt: grap/grap-odoo-incubator - -|badge1| |badge2| |badge3| - -This module extends the Odoo point of sale module to allow administrator -to customize the bill printed by the point of sale, with a text depending -on your environment. (Development, , Pre Production, Production, etc...) - -This module is based on the mechanism introduced by the ``server_environment`` -module. - -**Table of contents** - -.. contents:: - :local: - -Configuration -============= - -* Open your module ``server_environment_files`` - -* In each environment folder, create a new file named ``pos_environment.conf`` - (for exemple) - -* In each file, write a section like this one, depending on your environment - -:: - - [pos_environment_header] - line_1 = =============================== - line_2 = TICKET EDITED ON A TEST - line_3 = ENVIRONMENT - line_4 = =============================== - - [pos_environment_footer] - line_1 = =============================== - line_2 = THIS TICKET HAS BEEN EDITED - line_3 = ON A TEST ENVIRONMENT - line_4 = ------------------------------- - line_5 = IT CAN NOT BE CONSIDERED - line_6 = AS A PROOF OF PURCHASE - line_7 = =============================== - -Usage -===== - -* Open Your Point of Sale - -* Realize a sale - -* The printed bill will display the custom message - -.. figure:: https://raw.githubusercontent.com/grap/grap-odoo-incubator/8.0/pos_environment/static/description/receipt.png - -Known issues / Roadmap -====================== - -* make this module working in a multi localization context (many languages), - inserting a pattern in the key of each lines. sample: - -:: - - [pos_environment_header] - line_1 = ================================ - line_2_en_US = TICKET EDITED ON A TEST ENV - line_2_fr_FR = TICKET EDITE SUR SERVEUR DE TEST - line_3 = ================================ - -Bug Tracker -=========== - -Bugs are tracked on `GitHub Issues `_. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us smashing it by providing a detailed and welcomed -`feedback `_. - -Do not contact contributors directly about support or help with technical issues. - -Credits -======= - -Authors -~~~~~~~ - -* GRAP - -Contributors -~~~~~~~~~~~~ - -* Sylvain LE GAL (https://www.twitter.com/legalsylvain) - -Maintainers -~~~~~~~~~~~ - - - -This module is part of the `grap/grap-odoo-incubator `_ project on GitHub. - - -You are welcome to contribute. diff --git a/pos_environment/__init__.py b/pos_environment/__init__.py index 042e239ed..0650744f6 100644 --- a/pos_environment/__init__.py +++ b/pos_environment/__init__.py @@ -1,2 +1 @@ -# coding: utf-8 from . import models diff --git a/pos_environment/__openerp__.py b/pos_environment/__manifest__.py similarity index 79% rename from pos_environment/__openerp__.py rename to pos_environment/__manifest__.py index d648501d2..72fa3523f 100644 --- a/pos_environment/__openerp__.py +++ b/pos_environment/__manifest__.py @@ -1,14 +1,13 @@ -# coding: utf-8 # Copyright (C) 2019 - Today: GRAP (http://www.grap.coop) # @author: Sylvain LE GAL (https://twitter.com/legalsylvain) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { 'name': 'Point of Sale - Custom Bill by Environment', 'summary': "Custom messages on the bill depending on the environment", - 'version': '8.0.1.0.0', + 'version': '12.0.1.0.0', 'category': 'Point of Sale', - 'author': 'GRAP', - 'website': 'http://www.grap.coop', + 'author': 'GRAP,Odoo Community Association (OCA)', + 'website': 'https://github.com/oca/server-env', 'license': 'AGPL-3', 'depends': [ 'point_of_sale', @@ -21,7 +20,5 @@ 'qweb': [ 'static/src/xml/pos_environment.xml', ], - 'images': [ - ], - 'installable': False, + 'installable': True, } diff --git a/pos_environment/models/__init__.py b/pos_environment/models/__init__.py index 32f009147..db8634ade 100644 --- a/pos_environment/models/__init__.py +++ b/pos_environment/models/__init__.py @@ -1,2 +1 @@ -# coding: utf-8 from . import pos_config diff --git a/pos_environment/models/pos_config.py b/pos_environment/models/pos_config.py index 12a963903..2624b8fd2 100644 --- a/pos_environment/models/pos_config.py +++ b/pos_environment/models/pos_config.py @@ -1,9 +1,8 @@ -# coding: utf-8 # Copyright (C) 2018 - Today: GRAP (http://www.grap.coop) # @author: Sylvain LE GAL (https://twitter.com/legalsylvain) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -from openerp import api, fields, models -from openerp.addons.server_environment import serv_config +from odoo import api, fields, models +from odoo.addons.server_environment import serv_config class PosConfig(models.Model): @@ -33,6 +32,14 @@ def _compute_receipt_environment_footer(self): @api.model def _get_receipt_environment_part(self, part): section_name = 'pos_environment_%s' % part + line_list = [] if serv_config.has_section(section_name): - return '\n'.join( - [x[1] for x in serv_config.items(section_name)]) + # Parse each line + for item in serv_config.items(section_name): + if '__' not in item[0]: + # Universal line + line_list.append(item[1]) + elif '__%s' % (self.env.user.lang) in item[0]: + # depend of the language + line_list.append(item[1]) + return '\n'.join(line_list) diff --git a/pos_environment/readme/CONFIGURE.rst b/pos_environment/readme/CONFIGURE.rst index 8eb1a4696..ca62bb385 100644 --- a/pos_environment/readme/CONFIGURE.rst +++ b/pos_environment/readme/CONFIGURE.rst @@ -5,19 +5,41 @@ * In each file, write a section like this one, depending on your environment -:: - - [pos_environment_header] - line_1 = =============================== - line_2 = TICKET EDITED ON A TEST - line_3 = ENVIRONMENT - line_4 = =============================== - - [pos_environment_footer] - line_1 = =============================== - line_2 = THIS TICKET HAS BEEN EDITED - line_3 = ON A TEST ENVIRONMENT - line_4 = ------------------------------- - line_5 = IT CAN NOT BE CONSIDERED - line_6 = AS A PROOF OF PURCHASE - line_7 = =============================== +``` +[pos_environment_header] +line_1 = =============================== +line_2 = TICKET EDITED ON A TEST +line_3 = ENVIRONMENT +line_4 = =============================== + +[pos_environment_footer] +line_1 = =============================== +line_2 = THIS TICKET HAS BEEN EDITED +line_3 = ON A TEST ENVIRONMENT +line_4 = ------------------------------- +line_5 = IT CAN NOT BE CONSIDERED +line_6 = AS A PROOF OF PURCHASE +line_7 = =============================== +``` + +**Internationalisation** + +If you deploy Odoo in a multi languages context, you can add a suffix +``__xx_xx`` in the name of each line, where ``xx_xx`` is the language. +The text will be displayed on the bill, depending of the language of the +current user. Sample : + +``` +line_1 = =============================== +line_2__en_US = TICKET EDITED ON A TEST SERVER +line_2__fr_FR = TICKET EDITE SUR SERVEUR DE TEST +line_3 = ------------------------------- +``` + +**Note** + +To be sure that your server is correctly configured, you can check the settings +in the Point of Sale configuration. + + +.. figure:: ../static/description/pos_config_form.png diff --git a/pos_environment/readme/DESCRIPTION.rst b/pos_environment/readme/DESCRIPTION.rst index 5aacf0427..58ab5cf72 100644 --- a/pos_environment/readme/DESCRIPTION.rst +++ b/pos_environment/readme/DESCRIPTION.rst @@ -4,3 +4,7 @@ on your environment. (Development, , Pre Production, Production, etc...) This module is based on the mechanism introduced by the ``server_environment`` module. + +**Note** + +This module works with or without IoT Box. diff --git a/pos_environment/readme/ROADMAP.rst b/pos_environment/readme/ROADMAP.rst deleted file mode 100644 index 9251cd5fa..000000000 --- a/pos_environment/readme/ROADMAP.rst +++ /dev/null @@ -1,10 +0,0 @@ -* make this module working in a multi localization context (many languages), - inserting a pattern in the key of each lines. sample: - -:: - - [pos_environment_header] - line_1 = ================================ - line_2_en_US = TICKET EDITED ON A TEST ENV - line_2_fr_FR = TICKET EDITE SUR SERVEUR DE TEST - line_3 = ================================ diff --git a/pos_environment/static/description/pos_config_form.png b/pos_environment/static/description/pos_config_form.png new file mode 100644 index 0000000000000000000000000000000000000000..277049a17da5f1b637d3466c901ae0854914fc60 GIT binary patch literal 26669 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 - +

@@ -15,7 +15,7 @@ - +
@@ -30,7 +30,7 @@ - +
@@ -43,7 +43,7 @@
- +
diff --git a/pos_environment/views/templates.xml b/pos_environment/views/templates.xml index 0ae0b091f..ed5c6bcde 100644 --- a/pos_environment/views/templates.xml +++ b/pos_environment/views/templates.xml @@ -5,7 +5,7 @@ Copyright (C) 2013 - Today: GRAP (http://www.grap.coop) License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). --> - + - + diff --git a/pos_environment/views/view_pos_config.xml b/pos_environment/views/view_pos_config.xml index 6e080f5f3..70a85ba1e 100644 --- a/pos_environment/views/view_pos_config.xml +++ b/pos_environment/views/view_pos_config.xml @@ -4,17 +4,34 @@ Copyright (C) 2013 - Today: GRAP (http://www.grap.coop) @author: Sylvain LE GAL (https://twitter.com/legalsylvain) License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). --> - + - + pos.config - + - - - - + +

Environment Settings

+
+
+
+
+
+
+
+
+
+
+
-
+ From cdc57d0c554da15e6ba801f2c818b192bb61377a Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Wed, 31 Jul 2019 14:46:02 +0200 Subject: [PATCH 03/13] [FIX] lint errors --- pos_environment/readme/CONFIGURE.rst | 44 ++++++++++++++-------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/pos_environment/readme/CONFIGURE.rst b/pos_environment/readme/CONFIGURE.rst index ca62bb385..d41180bcd 100644 --- a/pos_environment/readme/CONFIGURE.rst +++ b/pos_environment/readme/CONFIGURE.rst @@ -5,22 +5,22 @@ * In each file, write a section like this one, depending on your environment -``` -[pos_environment_header] -line_1 = =============================== -line_2 = TICKET EDITED ON A TEST -line_3 = ENVIRONMENT -line_4 = =============================== - -[pos_environment_footer] -line_1 = =============================== -line_2 = THIS TICKET HAS BEEN EDITED -line_3 = ON A TEST ENVIRONMENT -line_4 = ------------------------------- -line_5 = IT CAN NOT BE CONSIDERED -line_6 = AS A PROOF OF PURCHASE -line_7 = =============================== -``` +.. code-block:: + + [pos_environment_header] + line_1 = =============================== + line_2 = TICKET EDITED ON A TEST + line_3 = ENVIRONMENT + line_4 = =============================== + + [pos_environment_footer] + line_1 = =============================== + line_2 = THIS TICKET HAS BEEN EDITED + line_3 = ON A TEST ENVIRONMENT + line_4 = ------------------------------- + line_5 = IT CAN NOT BE CONSIDERED + line_6 = AS A PROOF OF PURCHASE + line_7 = =============================== **Internationalisation** @@ -29,12 +29,12 @@ If you deploy Odoo in a multi languages context, you can add a suffix The text will be displayed on the bill, depending of the language of the current user. Sample : -``` -line_1 = =============================== -line_2__en_US = TICKET EDITED ON A TEST SERVER -line_2__fr_FR = TICKET EDITE SUR SERVEUR DE TEST -line_3 = ------------------------------- -``` +.. code-block:: + + line_1 = =============================== + line_2__en_US = TICKET EDITED ON A TEST SERVER + line_2__fr_FR = TICKET EDITE SUR SERVEUR DE TEST + line_3 = ------------------------------- **Note** From db0c34cb2a3e746c5105a9a08f00d7ae75c84e57 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Wed, 31 Jul 2019 15:09:56 +0200 Subject: [PATCH 04/13] [UPD] translation --- pos_environment/i18n/fr.po | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/pos_environment/i18n/fr.po b/pos_environment/i18n/fr.po index f4c7debf2..00d5d1478 100644 --- a/pos_environment/i18n/fr.po +++ b/pos_environment/i18n/fr.po @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 8.0\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-07 14:53+0000\n" -"PO-Revision-Date: 2019-02-07 14:53+0000\n" +"POT-Creation-Date: 2019-07-31 13:08+0000\n" +"PO-Revision-Date: 2019-07-31 13:08+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -16,12 +16,22 @@ msgstr "" "Plural-Forms: \n" #. module: pos_environment -#: field:pos.config,receipt_environment_footer:0 +#: model_terms:ir.ui.view,arch_db:pos_environment.view_pos_config_form +msgid "Environment Settings" +msgstr "ParamĂ©trages liĂ©s Ă  l'environnement" + +#. module: pos_environment +#: model:ir.model,name:pos_environment.model_pos_config +msgid "Point of Sale Configuration" +msgstr "ParamĂ©trage du point de vente" + +#. module: pos_environment +#: model:ir.model.fields,field_description:pos_environment.field_pos_config__receipt_environment_footer msgid "Receipt Environment Footer" msgstr "Pied du ticket (selon environnement)" #. module: pos_environment -#: field:pos.config,receipt_environment_header:0 +#: model:ir.model.fields,field_description:pos_environment.field_pos_config__receipt_environment_header msgid "Receipt Environment Header" -msgstr "En-tĂȘte du ticket (selon environnement)" +msgstr "EntĂȘte du ticket (selon environnement)" From 92a2c07b535b8bad3367721a7cb9c5f16ea7fcbd Mon Sep 17 00:00:00 2001 From: oca-travis Date: Thu, 10 Oct 2019 20:51:16 +0000 Subject: [PATCH 05/13] [UPD] Update pos_environment.pot --- pos_environment/i18n/fr.po | 2 +- pos_environment/i18n/pos_environment.pot | 35 ++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 pos_environment/i18n/pos_environment.pot diff --git a/pos_environment/i18n/fr.po b/pos_environment/i18n/fr.po index 00d5d1478..ebf0678da 100644 --- a/pos_environment/i18n/fr.po +++ b/pos_environment/i18n/fr.po @@ -10,6 +10,7 @@ msgstr "" "PO-Revision-Date: 2019-07-31 13:08+0000\n" "Last-Translator: <>\n" "Language-Team: \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" @@ -34,4 +35,3 @@ msgstr "Pied du ticket (selon environnement)" #: model:ir.model.fields,field_description:pos_environment.field_pos_config__receipt_environment_header msgid "Receipt Environment Header" msgstr "EntĂȘte du ticket (selon environnement)" - diff --git a/pos_environment/i18n/pos_environment.pot b/pos_environment/i18n/pos_environment.pot new file mode 100644 index 000000000..1d1bd1eac --- /dev/null +++ b/pos_environment/i18n/pos_environment.pot @@ -0,0 +1,35 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_environment +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: pos_environment +#: model_terms:ir.ui.view,arch_db:pos_environment.view_pos_config_form +msgid "Environment Settings" +msgstr "" + +#. module: pos_environment +#: model:ir.model,name:pos_environment.model_pos_config +msgid "Point of Sale Configuration" +msgstr "" + +#. module: pos_environment +#: model:ir.model.fields,field_description:pos_environment.field_pos_config__receipt_environment_footer +msgid "Receipt Environment Footer" +msgstr "" + +#. module: pos_environment +#: model:ir.model.fields,field_description:pos_environment.field_pos_config__receipt_environment_header +msgid "Receipt Environment Header" +msgstr "" + From b8378455e24136211039b7dc8655963390bcb478 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 10 Oct 2019 20:58:20 +0000 Subject: [PATCH 06/13] [UPD] README.rst --- pos_environment/README.rst | 138 +++++ pos_environment/static/description/index.html | 480 ++++++++++++++++++ 2 files changed, 618 insertions(+) create mode 100644 pos_environment/static/description/index.html diff --git a/pos_environment/README.rst b/pos_environment/README.rst index b97c09176..645476aa0 100644 --- a/pos_environment/README.rst +++ b/pos_environment/README.rst @@ -1,4 +1,142 @@ +========================================== +Point of Sale - Custom Bill by Environment +========================================== + .. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--env-lightgray.png?logo=github + :target: https://github.com/OCA/server-env/tree/12.0/pos_environment + :alt: OCA/server-env +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/server-env-12-0/server-env-12-0-pos_environment + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/254/12.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module extends the Odoo point of sale module to allow administrator +to customize the bill printed by the point of sale, with a text depending +on your environment. (Development, , Pre Production, Production, etc...) + +This module is based on the mechanism introduced by the ``server_environment`` +module. + +**Note** + +This module works with or without IoT Box. + +**Table of contents** + +.. contents:: + :local: + +Configuration +============= + +* Open your module ``server_environment_files`` + +* In each environment folder, create a new file named ``pos_environment.conf`` + (for exemple) + +* In each file, write a section like this one, depending on your environment + +.. code-block:: + + [pos_environment_header] + line_1 = =============================== + line_2 = TICKET EDITED ON A TEST + line_3 = ENVIRONMENT + line_4 = =============================== + + [pos_environment_footer] + line_1 = =============================== + line_2 = THIS TICKET HAS BEEN EDITED + line_3 = ON A TEST ENVIRONMENT + line_4 = ------------------------------- + line_5 = IT CAN NOT BE CONSIDERED + line_6 = AS A PROOF OF PURCHASE + line_7 = =============================== + +**Internationalisation** + +If you deploy Odoo in a multi languages context, you can add a suffix +``__xx_xx`` in the name of each line, where ``xx_xx`` is the language. +The text will be displayed on the bill, depending of the language of the +current user. Sample : + +.. code-block:: + + line_1 = =============================== + line_2__en_US = TICKET EDITED ON A TEST SERVER + line_2__fr_FR = TICKET EDITE SUR SERVEUR DE TEST + line_3 = ------------------------------- + +**Note** + +To be sure that your server is correctly configured, you can check the settings +in the Point of Sale configuration. + + +.. figure:: https://raw.githubusercontent.com/OCA/server-env/12.0/pos_environment/static/description/pos_config_form.png + +Usage +===== + +* Open Your Point of Sale + +* Realize a sale + +* The printed bill will display the custom message + +.. figure:: https://raw.githubusercontent.com/OCA/server-env/12.0/pos_environment/static/description/receipt.png + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* GRAP + +Contributors +~~~~~~~~~~~~ + +* Sylvain LE GAL (https://www.twitter.com/legalsylvain) + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/server-env `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/pos_environment/static/description/index.html b/pos_environment/static/description/index.html new file mode 100644 index 000000000..df9c8c0d7 --- /dev/null +++ b/pos_environment/static/description/index.html @@ -0,0 +1,480 @@ + + + + + + +Point of Sale - Custom Bill by Environment + + + +
+

Point of Sale - Custom Bill by Environment

+ + +

Beta License: AGPL-3 OCA/server-env Translate me on Weblate Try me on Runbot

+

This module extends the Odoo point of sale module to allow administrator +to customize the bill printed by the point of sale, with a text depending +on your environment. (Development, , Pre Production, Production, etc
)

+

This module is based on the mechanism introduced by the server_environment +module.

+

Note

+

This module works with or without IoT Box.

+

Table of contents

+ +
+

Configuration

+
    +
  • Open your module server_environment_files
  • +
  • In each environment folder, create a new file named pos_environment.conf +(for exemple)
  • +
  • In each file, write a section like this one, depending on your environment
  • +
+
+[pos_environment_header]
+line_1 = ===============================
+line_2 = TICKET EDITED ON A TEST
+line_3 = ENVIRONMENT
+line_4 = ===============================
+
+[pos_environment_footer]
+line_1 = ===============================
+line_2 = THIS TICKET HAS BEEN EDITED
+line_3 = ON A TEST ENVIRONMENT
+line_4 = -------------------------------
+line_5 = IT CAN NOT BE CONSIDERED
+line_6 = AS A PROOF OF PURCHASE
+line_7 = ===============================
+
+

Internationalisation

+

If you deploy Odoo in a multi languages context, you can add a suffix +__xx_xx in the name of each line, where xx_xx is the language. +The text will be displayed on the bill, depending of the language of the +current user. Sample :

+
+line_1 = ===============================
+line_2__en_US = TICKET EDITED ON A TEST SERVER
+line_2__fr_FR = TICKET EDITE SUR SERVEUR DE TEST
+line_3 = -------------------------------
+
+

Note

+

To be sure that your server is correctly configured, you can check the settings +in the Point of Sale configuration.

+
+https://raw.githubusercontent.com/OCA/server-env/12.0/pos_environment/static/description/pos_config_form.png +
+
+
+

Usage

+
    +
  • Open Your Point of Sale
  • +
  • Realize a sale
  • +
  • The printed bill will display the custom message
  • +
+
+https://raw.githubusercontent.com/OCA/server-env/12.0/pos_environment/static/description/receipt.png +
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • GRAP
  • +
+
+ +
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/server-env project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + From d2f1f31881d8de4b72bda797789bece4a6fe93bb Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Thu, 10 Oct 2019 20:58:21 +0000 Subject: [PATCH 07/13] [ADD] icon.png --- pos_environment/static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pos_environment/static/description/icon.png diff --git a/pos_environment/static/description/icon.png b/pos_environment/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 From 792ce1cb039f4aebb8fbb459e42d32220dc9e44e Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Thu, 11 Feb 2021 21:11:06 +0100 Subject: [PATCH 08/13] [REM] pos_environment useless console.log() --- pos_environment/static/src/js/models.js | 1 - 1 file changed, 1 deletion(-) diff --git a/pos_environment/static/src/js/models.js b/pos_environment/static/src/js/models.js index 34a0a039d..0e5c79424 100644 --- a/pos_environment/static/src/js/models.js +++ b/pos_environment/static/src/js/models.js @@ -18,7 +18,6 @@ odoo.define('pos_environment.models', function (require) { this.pos.config.receipt_environment_header; res.receipt_environment_footer = this.pos.config.receipt_environment_footer; - console.log(res); return res; }, }); From 39a1a5546edf193056d1376b5023675f33c2d603 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Tue, 16 Mar 2021 16:38:01 +0000 Subject: [PATCH 09/13] pos_environment 12.0.1.0.1 --- pos_environment/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pos_environment/__manifest__.py b/pos_environment/__manifest__.py index 72fa3523f..40ba688fc 100644 --- a/pos_environment/__manifest__.py +++ b/pos_environment/__manifest__.py @@ -4,7 +4,7 @@ { 'name': 'Point of Sale - Custom Bill by Environment', 'summary': "Custom messages on the bill depending on the environment", - 'version': '12.0.1.0.0', + 'version': '12.0.1.0.1', 'category': 'Point of Sale', 'author': 'GRAP,Odoo Community Association (OCA)', 'website': 'https://github.com/oca/server-env', From bcd47bfd5e66785ae1a770b0a123ceb4dff625b6 Mon Sep 17 00:00:00 2001 From: Aungkokolin1997 Date: Wed, 18 Jan 2023 10:02:11 +0630 Subject: [PATCH 10/13] [UPD] update dotfiles using copier --- pos_environment/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pos_environment/__manifest__.py b/pos_environment/__manifest__.py index 40ba688fc..832cff3d4 100644 --- a/pos_environment/__manifest__.py +++ b/pos_environment/__manifest__.py @@ -7,7 +7,7 @@ 'version': '12.0.1.0.1', 'category': 'Point of Sale', 'author': 'GRAP,Odoo Community Association (OCA)', - 'website': 'https://github.com/oca/server-env', + 'website': 'https://github.com/OCA/server-env', 'license': 'AGPL-3', 'depends': [ 'point_of_sale', From 64a0a98329d6b47335c0c6279a7d6ab84eb1bb0b Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Wed, 19 Apr 2023 21:00:38 +0200 Subject: [PATCH 11/13] [IMP] pos_environment: black, isort, prettier --- pos_environment/__manifest__.py | 32 +++++++++---------- pos_environment/models/pos_config.py | 31 ++++++++++-------- pos_environment/static/src/js/models.js | 12 +++---- .../static/src/xml/pos_environment.xml | 30 +++++++++++------ pos_environment/views/templates.xml | 8 +++-- pos_environment/views/view_pos_config.xml | 14 ++++---- .../odoo/addons/pos_environment | 1 + setup/pos_environment/setup.py | 6 ++++ 8 files changed, 79 insertions(+), 55 deletions(-) create mode 120000 setup/pos_environment/odoo/addons/pos_environment create mode 100644 setup/pos_environment/setup.py diff --git a/pos_environment/__manifest__.py b/pos_environment/__manifest__.py index 832cff3d4..4528dfb68 100644 --- a/pos_environment/__manifest__.py +++ b/pos_environment/__manifest__.py @@ -2,23 +2,23 @@ # @author: Sylvain LE GAL (https://twitter.com/legalsylvain) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { - 'name': 'Point of Sale - Custom Bill by Environment', - 'summary': "Custom messages on the bill depending on the environment", - 'version': '12.0.1.0.1', - 'category': 'Point of Sale', - 'author': 'GRAP,Odoo Community Association (OCA)', - 'website': 'https://github.com/OCA/server-env', - 'license': 'AGPL-3', - 'depends': [ - 'point_of_sale', - 'server_environment', + "name": "Point of Sale - Custom Bill by Environment", + "summary": "Custom messages on the bill depending on the environment", + "version": "12.0.1.0.1", + "category": "Point of Sale", + "author": "GRAP,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/server-env", + "license": "AGPL-3", + "depends": [ + "point_of_sale", + "server_environment", ], - 'data': [ - 'views/templates.xml', - 'views/view_pos_config.xml', + "data": [ + "views/templates.xml", + "views/view_pos_config.xml", ], - 'qweb': [ - 'static/src/xml/pos_environment.xml', + "qweb": [ + "static/src/xml/pos_environment.xml", ], - 'installable': True, + "installable": True, } diff --git a/pos_environment/models/pos_config.py b/pos_environment/models/pos_config.py index 2624b8fd2..a8f6c00b1 100644 --- a/pos_environment/models/pos_config.py +++ b/pos_environment/models/pos_config.py @@ -2,44 +2,49 @@ # @author: Sylvain LE GAL (https://twitter.com/legalsylvain) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import api, fields, models + from odoo.addons.server_environment import serv_config class PosConfig(models.Model): - _inherit = 'pos.config' + _inherit = "pos.config" # Columns section receipt_environment_header = fields.Text( - string='Receipt Environment Header', - compute='_compute_receipt_environment_header') + string="Receipt Environment Header", + compute="_compute_receipt_environment_header", + ) receipt_environment_footer = fields.Text( - string='Receipt Environment Footer', - compute='_compute_receipt_environment_footer') + string="Receipt Environment Footer", + compute="_compute_receipt_environment_footer", + ) @api.multi def _compute_receipt_environment_header(self): for config in self: - config.receipt_environment_header =\ - self._get_receipt_environment_part('header') + config.receipt_environment_header = self._get_receipt_environment_part( + "header" + ) @api.multi def _compute_receipt_environment_footer(self): for config in self: - config.receipt_environment_footer =\ - self._get_receipt_environment_part('footer') + config.receipt_environment_footer = self._get_receipt_environment_part( + "footer" + ) @api.model def _get_receipt_environment_part(self, part): - section_name = 'pos_environment_%s' % part + section_name = "pos_environment_%s" % part line_list = [] if serv_config.has_section(section_name): # Parse each line for item in serv_config.items(section_name): - if '__' not in item[0]: + if "__" not in item[0]: # Universal line line_list.append(item[1]) - elif '__%s' % (self.env.user.lang) in item[0]: + elif "__%s" % (self.env.user.lang) in item[0]: # depend of the language line_list.append(item[1]) - return '\n'.join(line_list) + return "\n".join(line_list) diff --git a/pos_environment/static/src/js/models.js b/pos_environment/static/src/js/models.js index 0e5c79424..6b5ff4b23 100644 --- a/pos_environment/static/src/js/models.js +++ b/pos_environment/static/src/js/models.js @@ -4,20 +4,18 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). *****************************************************************************/ -odoo.define('pos_environment.models', function (require) { - 'use strict'; +odoo.define("pos_environment.models", function (require) { + "use strict"; - var models = require('point_of_sale.models'); + var models = require("point_of_sale.models"); var order_super = models.Order.prototype; models.Order = models.Order.extend({ export_for_printing: function () { var res = order_super.export_for_printing.apply(this, arguments); - res.receipt_environment_header = - this.pos.config.receipt_environment_header; - res.receipt_environment_footer = - this.pos.config.receipt_environment_footer; + res.receipt_environment_header = this.pos.config.receipt_environment_header; + res.receipt_environment_footer = this.pos.config.receipt_environment_footer; return res; }, }); diff --git a/pos_environment/static/src/xml/pos_environment.xml b/pos_environment/static/src/xml/pos_environment.xml index 9a88cffab..da0f96d28 100644 --- a/pos_environment/static/src/xml/pos_environment.xml +++ b/pos_environment/static/src/xml/pos_environment.xml @@ -1,4 +1,4 @@ - +