From 7f409142364b3c8fceece4cd59d0d0e59af96d25 Mon Sep 17 00:00:00 2001 From: bobrador Date: Tue, 3 Mar 2026 14:07:06 +0100 Subject: [PATCH 1/5] [ADD] pos_user_restrict_provider_info: New module pos_user_restrict_provider_info --- pos_user_restrict_provider_info/README.rst | 87 ++++ pos_user_restrict_provider_info/__init__.py | 0 .../__manifest__.py | 19 + .../pyproject.toml | 3 + .../readme/CONTRIBUTORS.md | 3 + .../readme/DESCRIPTION.md | 1 + .../static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 429 ++++++++++++++++++ .../static/src/js/pos_store.esm.js | 16 + .../static/src/xml/product_info_popup.xml | 18 + ...os_user_restrict_provider_info_tour.esm.js | 61 +++ .../tests/__init__.py | 1 + .../test_pos_supplier_info_visibility.py | 42 ++ 13 files changed, 680 insertions(+) create mode 100644 pos_user_restrict_provider_info/README.rst create mode 100644 pos_user_restrict_provider_info/__init__.py create mode 100644 pos_user_restrict_provider_info/__manifest__.py create mode 100644 pos_user_restrict_provider_info/pyproject.toml create mode 100644 pos_user_restrict_provider_info/readme/CONTRIBUTORS.md create mode 100644 pos_user_restrict_provider_info/readme/DESCRIPTION.md create mode 100644 pos_user_restrict_provider_info/static/description/icon.png create mode 100644 pos_user_restrict_provider_info/static/description/index.html create mode 100644 pos_user_restrict_provider_info/static/src/js/pos_store.esm.js create mode 100644 pos_user_restrict_provider_info/static/src/xml/product_info_popup.xml create mode 100644 pos_user_restrict_provider_info/static/tests/tours/pos_user_restrict_provider_info_tour.esm.js create mode 100644 pos_user_restrict_provider_info/tests/__init__.py create mode 100644 pos_user_restrict_provider_info/tests/test_pos_supplier_info_visibility.py diff --git a/pos_user_restrict_provider_info/README.rst b/pos_user_restrict_provider_info/README.rst new file mode 100644 index 0000000000..59e27ee5e7 --- /dev/null +++ b/pos_user_restrict_provider_info/README.rst @@ -0,0 +1,87 @@ +============================ +POS - Restrict Provider Info +============================ + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:adfb31074676ff5cff7763ac1cbd3ad342d7949e3ebdfbffe51a58df8e7c09b1 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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%2Fpos-lightgray.png?logo=github + :target: https://github.com/OCA/pos/tree/18.0/pos_user_restrict_provider_info + :alt: OCA/pos +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/pos-18-0/pos-18-0-pos_user_restrict_provider_info + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/pos&target_branch=18.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module controls access to supplier information in the Point of Sale +product details, restricting visibility for pos users. + +**Table of contents** + +.. contents:: + :local: + +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 to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* ASPL-Nagarro + +Contributors +------------ + +- `APSL-Nagarro `__: + + - Bernat Obrador + +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. + +.. |maintainer-BernatObrador| image:: https://github.com/BernatObrador.png?size=40px + :target: https://github.com/BernatObrador + :alt: BernatObrador + +Current `maintainer `__: + +|maintainer-BernatObrador| + +This module is part of the `OCA/pos `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/pos_user_restrict_provider_info/__init__.py b/pos_user_restrict_provider_info/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pos_user_restrict_provider_info/__manifest__.py b/pos_user_restrict_provider_info/__manifest__.py new file mode 100644 index 0000000000..49fa508ff7 --- /dev/null +++ b/pos_user_restrict_provider_info/__manifest__.py @@ -0,0 +1,19 @@ +{ + "name": "POS - Restrict Provider Info", + "version": "18.0.1.0.0", + "summary": "Restrict provider info to pos users", + "category": "Point of Sale", + "author": "ASPL-Nagarro, Odoo Community Association (OCA)", + "license": "AGPL-3", + "website": "https://github.com/OCA/pos", + "maintainers": ["BernatObrador"], + "depends": ["point_of_sale"], + "assets": { + "point_of_sale._assets_pos": [ + "pos_user_restrict_provider_info/static/src/**/*", + ], + "web.assets_tests": [ + "pos_user_restrict_provider_info/static/tests/tours/**/*", + ], + }, +} diff --git a/pos_user_restrict_provider_info/pyproject.toml b/pos_user_restrict_provider_info/pyproject.toml new file mode 100644 index 0000000000..4231d0cccb --- /dev/null +++ b/pos_user_restrict_provider_info/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/pos_user_restrict_provider_info/readme/CONTRIBUTORS.md b/pos_user_restrict_provider_info/readme/CONTRIBUTORS.md new file mode 100644 index 0000000000..fafb6bf1b0 --- /dev/null +++ b/pos_user_restrict_provider_info/readme/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +- [APSL-Nagarro](): + - Bernat Obrador \<\> + \ No newline at end of file diff --git a/pos_user_restrict_provider_info/readme/DESCRIPTION.md b/pos_user_restrict_provider_info/readme/DESCRIPTION.md new file mode 100644 index 0000000000..a3f133f07f --- /dev/null +++ b/pos_user_restrict_provider_info/readme/DESCRIPTION.md @@ -0,0 +1 @@ +This module controls access to supplier information in the Point of Sale product details, restricting visibility for pos users. \ No newline at end of file diff --git a/pos_user_restrict_provider_info/static/description/icon.png b/pos_user_restrict_provider_info/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 diff --git a/pos_user_restrict_provider_info/static/description/index.html b/pos_user_restrict_provider_info/static/description/index.html new file mode 100644 index 0000000000..cd28266c94 --- /dev/null +++ b/pos_user_restrict_provider_info/static/description/index.html @@ -0,0 +1,429 @@ + + + + + +POS - Restrict Provider Info + + + +
+

POS - Restrict Provider Info

+ + +

Beta License: AGPL-3 OCA/pos Translate me on Weblate Try me on Runboat

+

This module controls access to supplier information in the Point of Sale +product details, restricting visibility for pos users.

+

Table of contents

+ +
+

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 to smash it by providing a detailed and welcomed +feedback.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ASPL-Nagarro
  • +
+
+
+

Contributors

+ +
+
+

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.

+

Current maintainer:

+

BernatObrador

+

This module is part of the OCA/pos project on GitHub.

+

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

+
+
+
+ + diff --git a/pos_user_restrict_provider_info/static/src/js/pos_store.esm.js b/pos_user_restrict_provider_info/static/src/js/pos_store.esm.js new file mode 100644 index 0000000000..3a983e6903 --- /dev/null +++ b/pos_user_restrict_provider_info/static/src/js/pos_store.esm.js @@ -0,0 +1,16 @@ +/** + * Copyright 2026 Bernat Obrador APSL-Nagarro + * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + */ +import {PosStore} from "@point_of_sale/app/store/pos_store"; +import {patch} from "@web/core/utils/patch"; +import {user} from "@web/core/user"; + +patch(PosStore.prototype, { + async setup() { + await super.setup(...arguments); + this.user.canSeeSupplierInfo = await user.hasGroup( + "point_of_sale.group_pos_manager" + ); + }, +}); diff --git a/pos_user_restrict_provider_info/static/src/xml/product_info_popup.xml b/pos_user_restrict_provider_info/static/src/xml/product_info_popup.xml new file mode 100644 index 0000000000..4b7ca2a379 --- /dev/null +++ b/pos_user_restrict_provider_info/static/src/xml/product_info_popup.xml @@ -0,0 +1,18 @@ + + + + + diff --git a/pos_user_restrict_provider_info/static/tests/tours/pos_user_restrict_provider_info_tour.esm.js b/pos_user_restrict_provider_info/static/tests/tours/pos_user_restrict_provider_info_tour.esm.js new file mode 100644 index 0000000000..05f77b04bf --- /dev/null +++ b/pos_user_restrict_provider_info/static/tests/tours/pos_user_restrict_provider_info_tour.esm.js @@ -0,0 +1,61 @@ +/* global document */ +import * as Chrome from "@point_of_sale/../tests/tours/utils/chrome_util"; +import * as Dialog from "@point_of_sale/../tests/tours/utils/dialog_util"; +import * as ProductScreen from "@point_of_sale/../tests/tours/utils/product_screen_util"; + +import {inLeftSide} from "@point_of_sale/../tests/tours/utils/common"; +import {registry} from "@web/core/registry"; + +const INFO_BUTTON = ".product-information-tag"; +const MODAL_BODY = "main.modal-body"; +const SUPPLIER_SECTION = `${MODAL_BODY} .section-supplier`; +const CLOSE_BUTTON = ".modal .btn-close, .modal .close, button.btn-close, button.close"; + +function openProductInfoPopup(productName) { + return [ + ProductScreen.clickDisplayedProduct(productName, true), + inLeftSide([ + { + trigger: INFO_BUTTON, + run: "click", + }, + ]), + { + trigger: MODAL_BODY, + }, + ]; +} + +registry.category("web_tour.tours").add("pos_supplier_info_visible_for_manager", { + steps: () => + [ + Chrome.startPoS(), + Dialog.confirm("Open Register"), + ...openProductInfoPopup("Desk Organizer"), + {trigger: SUPPLIER_SECTION}, + {trigger: CLOSE_BUTTON, run: "click"}, + ].flat(), +}); + +registry.category("web_tour.tours").add("pos_supplier_info_hidden_for_non_manager", { + steps: () => + [ + Chrome.startPoS(), + Dialog.confirm("Open Register"), + + ...openProductInfoPopup("Desk Organizer"), + { + trigger: MODAL_BODY, + run: function () { + const root = document.querySelector("main.modal-body"); + const el = root && root.querySelector(".section-supplier"); + if (el) { + throw new Error( + "Supplier section should be hidden for non POS managers." + ); + } + }, + }, + {trigger: CLOSE_BUTTON, run: "click"}, + ].flat(), +}); diff --git a/pos_user_restrict_provider_info/tests/__init__.py b/pos_user_restrict_provider_info/tests/__init__.py new file mode 100644 index 0000000000..861ae959cc --- /dev/null +++ b/pos_user_restrict_provider_info/tests/__init__.py @@ -0,0 +1 @@ +from . import test_pos_supplier_info_visibility diff --git a/pos_user_restrict_provider_info/tests/test_pos_supplier_info_visibility.py b/pos_user_restrict_provider_info/tests/test_pos_supplier_info_visibility.py new file mode 100644 index 0000000000..610c9ca0d9 --- /dev/null +++ b/pos_user_restrict_provider_info/tests/test_pos_supplier_info_visibility.py @@ -0,0 +1,42 @@ +from odoo.tests import tagged + +from odoo.addons.point_of_sale.tests.test_frontend import TestPointOfSaleHttpCommon + + +@tagged("post_install", "-at_install") +class TestPosSupplierInfoVisibility(TestPointOfSaleHttpCommon): + def _create_user(self, login, groups): + return ( + self.env["res.users"] + .with_context(no_reset_password=True) + .create( + { + "name": login, + "login": login, + "email": f"{login}@example.com", + "groups_id": [(6, 0, groups)], + } + ) + ) + + def test_supplier_section_hidden_for_non_manager(self): + base_user = self.env.ref("base.group_user").id + pos_user_group = self.env.ref("point_of_sale.group_pos_user").id + user = self._create_user("pos_cashier_test", [base_user, pos_user_group]) + + self.start_tour( + "/pos/ui?config_id=%d" % self.main_pos_config.id, + "pos_supplier_info_hidden_for_non_manager", + login=user.login, + ) + + def test_supplier_section_visible_for_manager(self): + base_user = self.env.ref("base.group_user").id + pos_manager = self.env.ref("point_of_sale.group_pos_manager").id + user = self._create_user("pos_manager_test", [base_user, pos_manager]) + + self.start_tour( + "/pos/ui?config_id=%d" % self.main_pos_config.id, + "pos_supplier_info_visible_for_manager", + login=user.login, + ) From 461ceb98f293e9ce09f5975d5b7118d368b8a518 Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 8 Apr 2026 10:35:25 +0000 Subject: [PATCH 2/5] Added translation using Weblate (Italian) --- pos_blind_session_closing/i18n/it.po | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 pos_blind_session_closing/i18n/it.po diff --git a/pos_blind_session_closing/i18n/it.po b/pos_blind_session_closing/i18n/it.po new file mode 100644 index 0000000000..fa4e19eb82 --- /dev/null +++ b/pos_blind_session_closing/i18n/it.po @@ -0,0 +1,20 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * pos_blind_session_closing +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" + +#. module: pos_blind_session_closing +#: model:res.groups,name:pos_blind_session_closing.group_pos_close_session_amounts +msgid "Can see POS closing amounts" +msgstr "" From 95464fdc857960d909b958aaba134e5411a75779 Mon Sep 17 00:00:00 2001 From: oca-ci Date: Wed, 8 Apr 2026 10:45:13 +0000 Subject: [PATCH 3/5] [UPD] Update pos_user_restrict_provider_info.pot --- .../i18n/pos_user_restrict_provider_info.pot | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 pos_user_restrict_provider_info/i18n/pos_user_restrict_provider_info.pot diff --git a/pos_user_restrict_provider_info/i18n/pos_user_restrict_provider_info.pot b/pos_user_restrict_provider_info/i18n/pos_user_restrict_provider_info.pot new file mode 100644 index 0000000000..aadee09bfe --- /dev/null +++ b/pos_user_restrict_provider_info/i18n/pos_user_restrict_provider_info.pot @@ -0,0 +1,13 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 18.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" From 6d2b34abfb7964cf197040cadd7513e9d7ac35e3 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 8 Apr 2026 10:49:59 +0000 Subject: [PATCH 4/5] [BOT] post-merge updates --- README.md | 1 + pos_user_restrict_provider_info/README.rst | 12 ++++++--- .../static/description/index.html | 26 ++++++++++++------- setup/_metapackage/pyproject.toml | 3 ++- 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 4b8e5e6017..ac2391b1ff 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ addon | version | maintainers | summary [pos_sale_picking_keep](pos_sale_picking_keep/) | 18.0.1.0.1 | pedrobaeza | Keep sale pickings from PoS [pos_session_pay_invoice](pos_session_pay_invoice/) | 18.0.1.0.0 | | Pay and receive invoices from PoS Session [pos_supplierinfo_search](pos_supplierinfo_search/) | 18.0.1.0.0 | eLBati | Search products by supplier data +[pos_user_restrict_provider_info](pos_user_restrict_provider_info/) | 18.0.1.0.0 | BernatObrador | Restrict provider info to pos users [pos_user_restriction](pos_user_restriction/) | 18.0.1.0.0 | eLBati | Restrict some users to see and use only certain points of sale [//]: # (end addons) diff --git a/pos_user_restrict_provider_info/README.rst b/pos_user_restrict_provider_info/README.rst index 59e27ee5e7..b2e61c0510 100644 --- a/pos_user_restrict_provider_info/README.rst +++ b/pos_user_restrict_provider_info/README.rst @@ -1,3 +1,7 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + ============================ POS - Restrict Provider Info ============================ @@ -7,13 +11,13 @@ POS - Restrict Provider Info !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:adfb31074676ff5cff7763ac1cbd3ad342d7949e3ebdfbffe51a58df8e7c09b1 + !! source digest: sha256:161a43ebedc3bd1b1e56079f7d1a25abb2800f3bd94512217dbb1618cb424729 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |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 +.. |badge2| image:: https://img.shields.io/badge/license-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%2Fpos-lightgray.png?logo=github @@ -57,9 +61,9 @@ Authors Contributors ------------ -- `APSL-Nagarro `__: +- `APSL-Nagarro `__: - - Bernat Obrador + - Bernat Obrador Maintainers ----------- diff --git a/pos_user_restrict_provider_info/static/description/index.html b/pos_user_restrict_provider_info/static/description/index.html index cd28266c94..c9a62b8917 100644 --- a/pos_user_restrict_provider_info/static/description/index.html +++ b/pos_user_restrict_provider_info/static/description/index.html @@ -3,7 +3,7 @@ -POS - Restrict Provider Info +README.rst -
-

POS - Restrict Provider Info

+
+ + +Odoo Community Association + +
+

POS - Restrict Provider Info

-

Beta License: AGPL-3 OCA/pos Translate me on Weblate Try me on Runboat

+

Beta License: AGPL-3 OCA/pos Translate me on Weblate Try me on Runboat

This module controls access to supplier information in the Point of Sale product details, restricting visibility for pos users.

Table of contents

@@ -385,7 +390,7 @@

POS - Restrict Provider Info

-

Bug Tracker

+

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 to smash it by providing a detailed and welcomed @@ -393,15 +398,15 @@

Bug Tracker

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

-

Credits

+

Credits

-

Authors

+

Authors

  • ASPL-Nagarro
-

Maintainers

+

Maintainers

This module is maintained by the OCA.

Odoo Community Association @@ -425,5 +430,6 @@

Maintainers

+
diff --git a/setup/_metapackage/pyproject.toml b/setup/_metapackage/pyproject.toml index cb1888f8b3..1ddcc45ceb 100644 --- a/setup/_metapackage/pyproject.toml +++ b/setup/_metapackage/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "odoo-addons-oca-pos" -version = "18.0.20260407.1" +version = "18.0.20260408.0" dependencies = [ "odoo-addon-pos_barcode_rule_priced_with_change_rate==18.0.*", "odoo-addon-pos_blind_session_closing==18.0.*", @@ -19,6 +19,7 @@ dependencies = [ "odoo-addon-pos_sale_picking_keep==18.0.*", "odoo-addon-pos_session_pay_invoice==18.0.*", "odoo-addon-pos_supplierinfo_search==18.0.*", + "odoo-addon-pos_user_restrict_provider_info==18.0.*", "odoo-addon-pos_user_restriction==18.0.*", ] classifiers=[ From 5008b568fc6dedadcf4a08284ffcb9ab378d5ce7 Mon Sep 17 00:00:00 2001 From: mymage Date: Wed, 8 Apr 2026 10:36:12 +0000 Subject: [PATCH 5/5] Translated using Weblate (Italian) Currently translated at 100.0% (1 of 1 strings) Translation: pos-18.0/pos-18.0-pos_blind_session_closing Translate-URL: https://translation.odoo-community.org/projects/pos-18-0/pos-18-0-pos_blind_session_closing/it/ --- pos_blind_session_closing/i18n/it.po | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pos_blind_session_closing/i18n/it.po b/pos_blind_session_closing/i18n/it.po index fa4e19eb82..f82d2afa77 100644 --- a/pos_blind_session_closing/i18n/it.po +++ b/pos_blind_session_closing/i18n/it.po @@ -6,15 +6,17 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2026-04-08 12:45+0000\n" +"Last-Translator: mymage \n" "Language-Team: none\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: \n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.15.2\n" #. module: pos_blind_session_closing #: model:res.groups,name:pos_blind_session_closing.group_pos_close_session_amounts msgid "Can see POS closing amounts" -msgstr "" +msgstr "Può vedere i valori di chiusura del POS"