From 097565a12cca7c4113a712b9d5d48bebd2b376ce Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Wed, 31 Jul 2019 10:54:34 +0200 Subject: [PATCH] [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 | 50 +++++--- 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 | 58 ++++----- pos_environment/views/templates.xml | 4 +- pos_environment/views/view_pos_config.xml | 33 +++-- 13 files changed, 127 insertions(+), 209 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 e4911fb..b97c091 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 042e239..0650744 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 d648501..72fa352 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 32f0091..db8634a 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 12a9639..2624b8f 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 @@ class PosConfig(models.Model): @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 8eb1a46..ca62bb3 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_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_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 5aacf04..58ab5cf 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 9251cd5..0000000 --- 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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 - - -
-

- - -
-
-
- - - - - -
-
- - -
-
-
-
-
- - - - - - +
@@ -56,4 +28,32 @@ + + + + + +
+
+ + +
+
+
+
+
+ + + +
+
+ + +
+
+
+
+
+
+ diff --git a/pos_environment/views/templates.xml b/pos_environment/views/templates.xml index 0ae0b09..ed5c6bc 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 6e080f5..70a85ba 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

+
+
+
+
+
+
+
+
+
+
+
-
+