From a28e128ce774afc53896583a67d0285ccd6da1e0 Mon Sep 17 00:00:00 2001 From: Anna Janiszewska Date: Thu, 19 Nov 2020 14:00:43 +0100 Subject: [PATCH 01/13] import module product_uom_updatable from external source --- product_uom_updatable/__init__.py | 1 + product_uom_updatable/__manifest__.py | 16 +++++ .../i18n/product_uom_updatable.pot | 32 +++++++++ product_uom_updatable/models/__init__.py | 1 + .../models/product_template.py | 69 +++++++++++++++++++ product_uom_updatable/tests/__init__.py | 1 + .../tests/test_product_uom_update.py | 54 +++++++++++++++ 7 files changed, 174 insertions(+) create mode 100644 product_uom_updatable/__init__.py create mode 100644 product_uom_updatable/__manifest__.py create mode 100644 product_uom_updatable/i18n/product_uom_updatable.pot create mode 100644 product_uom_updatable/models/__init__.py create mode 100644 product_uom_updatable/models/product_template.py create mode 100644 product_uom_updatable/tests/__init__.py create mode 100644 product_uom_updatable/tests/test_product_uom_update.py diff --git a/product_uom_updatable/__init__.py b/product_uom_updatable/__init__.py new file mode 100644 index 000000000000..0650744f6bc6 --- /dev/null +++ b/product_uom_updatable/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/product_uom_updatable/__manifest__.py b/product_uom_updatable/__manifest__.py new file mode 100644 index 000000000000..3dd6cf44c43a --- /dev/null +++ b/product_uom_updatable/__manifest__.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 Acsone SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Product Uom Updatable", + "description": """ + allows products uom to be modified after be used in a stock picking if the product uom is of the same category""", + "version": "10.0.1.0.0", + "license": "AGPL-3", + "author": "Acsone SA/NV", + "website": "www.acsone.eu", + "depends": ["stock"], + "data": [], + "demo": [], +} diff --git a/product_uom_updatable/i18n/product_uom_updatable.pot b/product_uom_updatable/i18n/product_uom_updatable.pot new file mode 100644 index 000000000000..212268de9451 --- /dev/null +++ b/product_uom_updatable/i18n/product_uom_updatable.pot @@ -0,0 +1,32 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_uom_updatable +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0+e\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: product_uom_updatable +#: model:ir.model,name:product_uom_updatable.model_product_template +msgid "Product Template" +msgstr "" + +#. module: product_uom_updatable +#: code:addons/product_uom_updatable/models/product_template.py:66 +#, python-format +msgid "You can not change the purchase unit of measure of a product to a new unit that doesn't have the same category and factor" +msgstr "" + +#. module: product_uom_updatable +#: code:addons/product_uom_updatable/models/product_template.py:42 +#, python-format +msgid "You can not change the unit of measure of a product to a new unit that doesn't have the same category and factor" +msgstr "" + diff --git a/product_uom_updatable/models/__init__.py b/product_uom_updatable/models/__init__.py new file mode 100644 index 000000000000..e8fa8f6bf1e0 --- /dev/null +++ b/product_uom_updatable/models/__init__.py @@ -0,0 +1 @@ +from . import product_template diff --git a/product_uom_updatable/models/product_template.py b/product_uom_updatable/models/product_template.py new file mode 100644 index 000000000000..5d49088dd48b --- /dev/null +++ b/product_uom_updatable/models/product_template.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 Acsone SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from itertools import groupby + +from odoo import _, api, models +from odoo.exceptions import UserError + + +class ProductTemplate(models.Model): + + _inherit = "product.template" + + @api.multi + def write(self, vals): + uom_id = vals.pop("uom_id", False) + uom_po_id = vals.pop("uom_po_id", False) + res = super(ProductTemplate, self).write(vals) + if uom_id: + self._update_uom(uom_id) + if uom_po_id: + self._update_uom_po(uom_po_id) + return res + + @api.multi + def _update_uom(self, uom_id): + uom_obj = self.env["product.uom"] + for key, products_group in groupby(self, key=lambda r: r.uom_id): + product_list = list(products_group) + product_id_list = [] + for product in product_list: + product_id_list.append(product.id) + new_uom = uom_obj.browse(uom_id) + if key.category_id == new_uom.category_id and key.factor == new_uom.factor: + self.env.cr.execute( + "UPDATE product_template SET uom_id = %(uom)s WHERE id in %(product_id)s", + {"uom": new_uom.id, "product_id": tuple(product_id_list)}, + ) + else: + raise UserError( + _( + "You can not change the unit of measure of a product to a new unit that doesn't have the same category and factor" + ) + ) + + @api.multi + def _update_uom_po(self, uom_po_id): + uom_obj = self.env["product.uom"] + for key, products_group in groupby(self, key=lambda r: r.uom_po_id): + product_list = list(products_group) + product_id_list = [] + for product in product_list: + product_id_list.append(product.id) + new_uom_po = uom_obj.browse(uom_po_id) + if ( + key.category_id == new_uom_po.category_id + and key.factor == new_uom_po.factor + ): + self.env.cr.execute( + "UPDATE product_template SET uom_po_id = %(uom)s WHERE id in %(product_id)s", + {"uom": new_uom_po.id, "product_id": tuple(product_id_list)}, + ) + else: + raise UserError( + _( + "You can not change the purchase unit of measure of a product to a new unit that doesn't have the same category and factor" + ) + ) diff --git a/product_uom_updatable/tests/__init__.py b/product_uom_updatable/tests/__init__.py new file mode 100644 index 000000000000..a0d5331be1f8 --- /dev/null +++ b/product_uom_updatable/tests/__init__.py @@ -0,0 +1 @@ +from . import test_product_uom_update diff --git a/product_uom_updatable/tests/test_product_uom_update.py b/product_uom_updatable/tests/test_product_uom_update.py new file mode 100644 index 000000000000..e0d397d29420 --- /dev/null +++ b/product_uom_updatable/tests/test_product_uom_update.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2020 Acsone SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase + + +class TestProductUomUpdate(TransactionCase): + def setUp(self): + super(TestProductUomUpdate, self).setUp() + self.uom_unit = self.env.ref("product.product_uom_unit") + self.product = self.env.ref("product.product_delivery_01") + self.product_tmpl_id = self.ref("product.product_delivery_01_product_template") + self.partner_id = self.ref("base.res_partner_4") + self.picking_type_id = self.ref("stock.picking_type_in") + self.location_id = self.ref("stock.stock_location_suppliers") + self.location_dest_id = self.ref("stock.stock_location_stock") + + def test_update_uom(self): + self.picking_in = self.env["stock.picking"].create( + { + "picking_type_id": self.picking_type_id, + "partner_id": self.partner_id, + "location_id": self.location_id, + "location_dest_id": self.location_dest_id, + } + ) + + self.env["stock.move"].create( + { + "name": self.product.name, + "product_id": self.product.id, + "product_uom_qty": 2, + "product_uom": self.product.uom_id.id, + "picking_id": self.picking_in.id, + "location_id": self.location_id, + "location_dest_id": self.location_dest_id, + } + ) + self.new_uom = self.env["product.uom"].create( + {"name": "new unit", "category_id": self.uom_unit.category_id.id} + ) + # verify that the product has stock_moves + self.assertTrue(self.product.stock_move_ids) + self.assertEqual(self.product.uom_id, self.uom_unit) + self.assertEqual(self.uom_unit.category_id, self.new_uom.category_id) + self.assertEqual(self.uom_unit.factor, self.new_uom.factor) + # uom is changed with another uom with the same category + self.product.update({"uom_id": self.new_uom.id}) + self.assertEqual(self.product.uom_id, self.new_uom) + # uom_po can also be changed with another uom with the same category + self.assertEqual(self.product.uom_po_id, self.uom_unit) + self.product.update({"uom_po_id": self.new_uom.id}) + self.assertEqual(self.product.uom_po_id, self.new_uom) From 9c23670dc50de80aae9c4c77770e0e7d46f5d0eb Mon Sep 17 00:00:00 2001 From: Anna Janiszewska Date: Tue, 24 Nov 2020 11:32:22 +0100 Subject: [PATCH 02/13] [MIG][13.0] product_uom_updatable --- product_uom_updatable/README.rst | 74 +++ product_uom_updatable/__manifest__.py | 15 +- .../i18n/product_uom_updatable.pot | 19 +- .../models/product_template.py | 65 +-- product_uom_updatable/readme/CONTRIBUTORS.rst | 1 + product_uom_updatable/readme/DESCRIPTION.rst | 1 + .../static/description/index.html | 420 ++++++++++++++++++ .../tests/test_product_uom_update.py | 55 ++- 8 files changed, 575 insertions(+), 75 deletions(-) create mode 100644 product_uom_updatable/README.rst create mode 100644 product_uom_updatable/readme/CONTRIBUTORS.rst create mode 100644 product_uom_updatable/readme/DESCRIPTION.rst create mode 100644 product_uom_updatable/static/description/index.html diff --git a/product_uom_updatable/README.rst b/product_uom_updatable/README.rst new file mode 100644 index 000000000000..1bc8e61b4f2e --- /dev/null +++ b/product_uom_updatable/README.rst @@ -0,0 +1,74 @@ +===================== +Product Uom Updatable +===================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fproduct--attribute-lightgray.png?logo=github + :target: https://github.com/OCA/product-attribute/tree/13.0/product_uom_updatable + :alt: OCA/product-attribute +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/product-attribute-13-0/product-attribute-13-0-product_uom_updatable + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/135/13.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Allow to change the product UoM if the new UoM is in the same category and has the same factor. + +**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 smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ACSONE SA/NV +* Camptocamp + +Contributors +~~~~~~~~~~~~ + +* Anna Janiszewska + +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/product-attribute `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_uom_updatable/__manifest__.py b/product_uom_updatable/__manifest__.py index 3dd6cf44c43a..0a4c6bdcb767 100644 --- a/product_uom_updatable/__manifest__.py +++ b/product_uom_updatable/__manifest__.py @@ -1,16 +1,15 @@ -# -*- coding: utf-8 -*- # Copyright 2020 Acsone SA/NV +# Copyright 2020 Camptocamp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Product Uom Updatable", - "description": """ - allows products uom to be modified after be used in a stock picking if the product uom is of the same category""", - "version": "10.0.1.0.0", + "summary": """ + allows products uom to be modified after be used in a stock picking if \ + the product uom is of the same category""", + "version": "13.0.1.0.0", "license": "AGPL-3", - "author": "Acsone SA/NV", - "website": "www.acsone.eu", + "author": "ACSONE SA/NV, Camptocamp, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/product-attribute", "depends": ["stock"], - "data": [], - "demo": [], } diff --git a/product_uom_updatable/i18n/product_uom_updatable.pot b/product_uom_updatable/i18n/product_uom_updatable.pot index 212268de9451..99af9cd08e49 100644 --- a/product_uom_updatable/i18n/product_uom_updatable.pot +++ b/product_uom_updatable/i18n/product_uom_updatable.pot @@ -1,12 +1,12 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * product_uom_updatable +# * product_uom_updatable # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.0+e\n" +"Project-Id-Version: Odoo Server 13.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: <>\n" +"Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,14 +19,9 @@ msgid "Product Template" msgstr "" #. module: product_uom_updatable -#: code:addons/product_uom_updatable/models/product_template.py:66 +#: code:addons/product_uom_updatable/models/product_template.py:0 #, python-format -msgid "You can not change the purchase unit of measure of a product to a new unit that doesn't have the same category and factor" -msgstr "" - -#. module: product_uom_updatable -#: code:addons/product_uom_updatable/models/product_template.py:42 -#, python-format -msgid "You can not change the unit of measure of a product to a new unit that doesn't have the same category and factor" +msgid "" +"You can not change the unit of measure of a product to a new unit that " +"doesn't have the same category and factor" msgstr "" - diff --git a/product_uom_updatable/models/product_template.py b/product_uom_updatable/models/product_template.py index 5d49088dd48b..86bbf039bcc7 100644 --- a/product_uom_updatable/models/product_template.py +++ b/product_uom_updatable/models/product_template.py @@ -1,10 +1,12 @@ -# -*- coding: utf-8 -*- # Copyright 2020 Acsone SA/NV +# Copyright 2020 Camptocamp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from itertools import groupby -from odoo import _, api, models +from psycopg2 import sql + +from odoo import _, models from odoo.exceptions import UserError @@ -12,58 +14,37 @@ class ProductTemplate(models.Model): _inherit = "product.template" - @api.multi def write(self, vals): uom_id = vals.pop("uom_id", False) uom_po_id = vals.pop("uom_po_id", False) - res = super(ProductTemplate, self).write(vals) if uom_id: - self._update_uom(uom_id) + self._update_uom(uom_id, "uom_id") if uom_po_id: - self._update_uom_po(uom_po_id) + self._update_uom(uom_po_id, "uom_po_id") + res = super().write(vals) return res - @api.multi - def _update_uom(self, uom_id): - uom_obj = self.env["product.uom"] - for key, products_group in groupby(self, key=lambda r: r.uom_id): - product_list = list(products_group) - product_id_list = [] - for product in product_list: - product_id_list.append(product.id) + def _update_uom(self, uom_id, field_name): + uom_obj = self.env["uom.uom"] + sorted_items = sorted(self, key=lambda r: r[field_name]) + for key, products_group in groupby(sorted_items, key=lambda r: r[field_name]): + product_ids = [product.id for product in products_group] new_uom = uom_obj.browse(uom_id) - if key.category_id == new_uom.category_id and key.factor == new_uom.factor: - self.env.cr.execute( - "UPDATE product_template SET uom_id = %(uom)s WHERE id in %(product_id)s", - {"uom": new_uom.id, "product_id": tuple(product_id_list)}, - ) - else: - raise UserError( - _( - "You can not change the unit of measure of a product to a new unit that doesn't have the same category and factor" - ) - ) - - @api.multi - def _update_uom_po(self, uom_po_id): - uom_obj = self.env["product.uom"] - for key, products_group in groupby(self, key=lambda r: r.uom_po_id): - product_list = list(products_group) - product_id_list = [] - for product in product_list: - product_id_list.append(product.id) - new_uom_po = uom_obj.browse(uom_po_id) if ( - key.category_id == new_uom_po.category_id - and key.factor == new_uom_po.factor + key.category_id == new_uom.category_id + and key.factor_inv == new_uom.factor_inv ): - self.env.cr.execute( - "UPDATE product_template SET uom_po_id = %(uom)s WHERE id in %(product_id)s", - {"uom": new_uom_po.id, "product_id": tuple(product_id_list)}, - ) + # pylint: disable=sql-injection + query = sql.SQL( + "UPDATE product_template SET {field} " " = %s WHERE id in %s" + ).format(field=sql.Identifier(field_name)) + self.env.cr.execute(query, (new_uom.id, tuple(product_ids))) + self.invalidate_cache(fnames=[field_name], ids=product_ids) else: raise UserError( _( - "You can not change the purchase unit of measure of a product to a new unit that doesn't have the same category and factor" + "You can not change the unit of measure of a product " + "to a new unit that doesn't have the same category " + "and factor" ) ) diff --git a/product_uom_updatable/readme/CONTRIBUTORS.rst b/product_uom_updatable/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000000..4124e67fb5cb --- /dev/null +++ b/product_uom_updatable/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Anna Janiszewska diff --git a/product_uom_updatable/readme/DESCRIPTION.rst b/product_uom_updatable/readme/DESCRIPTION.rst new file mode 100644 index 000000000000..d901f2183c42 --- /dev/null +++ b/product_uom_updatable/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Allow to change the product UoM if the new UoM is in the same category and has the same factor. diff --git a/product_uom_updatable/static/description/index.html b/product_uom_updatable/static/description/index.html new file mode 100644 index 000000000000..7eaf40e47819 --- /dev/null +++ b/product_uom_updatable/static/description/index.html @@ -0,0 +1,420 @@ + + + + + + +Product Uom Updatable + + + +
+

Product Uom Updatable

+ + +

Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runbot

+

Allow to change the product UoM if the new UoM is in the same category and has the same factor.

+

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

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • ACSONE SA/NV
  • +
  • Camptocamp
  • +
+
+
+

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.

+

This module is part of the OCA/product-attribute project on GitHub.

+

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

+
+
+
+ + diff --git a/product_uom_updatable/tests/test_product_uom_update.py b/product_uom_updatable/tests/test_product_uom_update.py index e0d397d29420..44a1c1361aef 100644 --- a/product_uom_updatable/tests/test_product_uom_update.py +++ b/product_uom_updatable/tests/test_product_uom_update.py @@ -1,16 +1,21 @@ -# -*- coding: utf-8 -*- # Copyright 2020 Acsone SA/NV +# Copyright 2020 Camptocamp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo.tests.common import TransactionCase +from odoo.exceptions import UserError +from odoo.tests.common import SavepointCase -class TestProductUomUpdate(TransactionCase): +class TestProductUomUpdate(SavepointCase): def setUp(self): super(TestProductUomUpdate, self).setUp() - self.uom_unit = self.env.ref("product.product_uom_unit") + self.env = self.env(context=dict(self.env.context, tracking_disable=True)) + self.uom_unit = self.env.ref("uom.product_uom_unit") + self.uom_day = self.env.ref("uom.product_uom_day") self.product = self.env.ref("product.product_delivery_01") - self.product_tmpl_id = self.ref("product.product_delivery_01_product_template") + self.product_tmpl_id = self.env.ref( + "product.product_delivery_01_product_template" + ) self.partner_id = self.ref("base.res_partner_4") self.picking_type_id = self.ref("stock.picking_type_in") self.location_id = self.ref("stock.stock_location_suppliers") @@ -37,18 +42,42 @@ def test_update_uom(self): "location_dest_id": self.location_dest_id, } ) - self.new_uom = self.env["product.uom"].create( - {"name": "new unit", "category_id": self.uom_unit.category_id.id} + self.new_uom = self.env["uom.uom"].create( + { + "name": "new unit", + "category_id": self.uom_unit.category_id.id, + "uom_type": "smaller", + } + ) + + self.new_uom_other_category = self.env["uom.uom"].create( + { + "name": "new unit 2", + "category_id": self.uom_day.category_id.id, + "uom_type": "smaller", + } ) # verify that the product has stock_moves self.assertTrue(self.product.stock_move_ids) self.assertEqual(self.product.uom_id, self.uom_unit) self.assertEqual(self.uom_unit.category_id, self.new_uom.category_id) - self.assertEqual(self.uom_unit.factor, self.new_uom.factor) + self.assertEqual( + self.uom_day.category_id, self.new_uom_other_category.category_id + ) + self.assertEqual(self.uom_unit.factor_inv, self.new_uom.factor_inv) + self.assertEqual( + self.uom_day.factor_inv, self.new_uom_other_category.factor_inv + ) # uom is changed with another uom with the same category - self.product.update({"uom_id": self.new_uom.id}) - self.assertEqual(self.product.uom_id, self.new_uom) + self.product_tmpl_id.update({"uom_id": self.new_uom.id}) + self.assertEqual(self.product_tmpl_id.uom_id, self.new_uom) # uom_po can also be changed with another uom with the same category - self.assertEqual(self.product.uom_po_id, self.uom_unit) - self.product.update({"uom_po_id": self.new_uom.id}) - self.assertEqual(self.product.uom_po_id, self.new_uom) + self.assertEqual(self.product_tmpl_id.uom_po_id, self.uom_unit) + self.product_tmpl_id.update({"uom_po_id": self.new_uom.id}) + self.assertEqual(self.product_tmpl_id.uom_po_id, self.new_uom) + # uom is changed with another uom from different category + with self.assertRaises(UserError): + self.product_tmpl_id.update({"uom_id": self.new_uom_other_category.id}) + # uom_po is changed with another uom from different category + with self.assertRaises(UserError): + self.product_tmpl_id.update({"uom_po_id": self.new_uom_other_category.id}) From e72da9c8a332b2b6943aa7aaa6414f00f9c915e9 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 16 Dec 2020 12:13:35 +0000 Subject: [PATCH 03/13] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 product_uom_updatable/static/description/icon.png diff --git a/product_uom_updatable/static/description/icon.png b/product_uom_updatable/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 48fbd839799032ecab4a3322b4266c4757852d9e Mon Sep 17 00:00:00 2001 From: "dzung.tran" Date: Sat, 13 Feb 2021 22:15:43 +0700 Subject: [PATCH 04/13] [MIG] product_uom_updatable: Migration to 14.0 --- product_uom_updatable/README.rst | 21 +++++++++++++----- product_uom_updatable/__manifest__.py | 2 +- product_uom_updatable/readme/CONTRIBUTORS.rst | 4 ++++ product_uom_updatable/readme/CREDITS.rst | 3 +++ .../static/description/index.html | 22 ++++++++++++++----- 5 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 product_uom_updatable/readme/CREDITS.rst diff --git a/product_uom_updatable/README.rst b/product_uom_updatable/README.rst index 1bc8e61b4f2e..f4e9b7dcad2e 100644 --- a/product_uom_updatable/README.rst +++ b/product_uom_updatable/README.rst @@ -14,13 +14,13 @@ Product Uom Updatable :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproduct--attribute-lightgray.png?logo=github - :target: https://github.com/OCA/product-attribute/tree/13.0/product_uom_updatable + :target: https://github.com/OCA/product-attribute/tree/14.0/product_uom_updatable :alt: OCA/product-attribute .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/product-attribute-13-0/product-attribute-13-0-product_uom_updatable + :target: https://translation.odoo-community.org/projects/product-attribute-14-0/product-attribute-14-0-product_uom_updatable :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/135/13.0 + :target: https://runbot.odoo-community.org/runbot/135/14.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -56,6 +56,17 @@ Contributors * Anna Janiszewska +Trobz + +* Dung Tran + +Other credits +~~~~~~~~~~~~~ + +The development of this module has been financially supported by: + +* Camptocamp + Maintainers ~~~~~~~~~~~ @@ -69,6 +80,6 @@ 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/product-attribute `_ project on GitHub. +This module is part of the `OCA/product-attribute `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_uom_updatable/__manifest__.py b/product_uom_updatable/__manifest__.py index 0a4c6bdcb767..8324cbacf36e 100644 --- a/product_uom_updatable/__manifest__.py +++ b/product_uom_updatable/__manifest__.py @@ -7,7 +7,7 @@ "summary": """ allows products uom to be modified after be used in a stock picking if \ the product uom is of the same category""", - "version": "13.0.1.0.0", + "version": "14.0.1.0.0", "license": "AGPL-3", "author": "ACSONE SA/NV, Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/product-attribute", diff --git a/product_uom_updatable/readme/CONTRIBUTORS.rst b/product_uom_updatable/readme/CONTRIBUTORS.rst index 4124e67fb5cb..da80abf71e3e 100644 --- a/product_uom_updatable/readme/CONTRIBUTORS.rst +++ b/product_uom_updatable/readme/CONTRIBUTORS.rst @@ -1 +1,5 @@ * Anna Janiszewska + +Trobz + +* Dung Tran diff --git a/product_uom_updatable/readme/CREDITS.rst b/product_uom_updatable/readme/CREDITS.rst new file mode 100644 index 000000000000..f5cc070c78ea --- /dev/null +++ b/product_uom_updatable/readme/CREDITS.rst @@ -0,0 +1,3 @@ +The development of this module has been financially supported by: + +* Camptocamp diff --git a/product_uom_updatable/static/description/index.html b/product_uom_updatable/static/description/index.html index 7eaf40e47819..24be8e8c91d8 100644 --- a/product_uom_updatable/static/description/index.html +++ b/product_uom_updatable/static/description/index.html @@ -367,7 +367,7 @@

Product Uom Updatable

!! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runbot

+

Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runbot

Allow to change the product UoM if the new UoM is in the same category and has the same factor.

Table of contents

@@ -376,7 +376,8 @@

Product Uom Updatable

  • Credits
  • @@ -386,7 +387,7 @@

    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.

    +feedback.

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

    @@ -403,15 +404,26 @@

    Contributors

    +

    Trobz

    + +
    +
    +

    Other credits

    +

    The development of this module has been financially supported by:

    +
      +
    • Camptocamp
    • +
    -

    Maintainers

    +

    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/product-attribute project on GitHub.

    +

    This module is part of the OCA/product-attribute project on GitHub.

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

    From 8c9a7b8ebdd86b02bf6df186ebb389bc8a68d319 Mon Sep 17 00:00:00 2001 From: dzungtran89 <46039081+dzungtran89@users.noreply.github.com> Date: Fri, 26 Feb 2021 13:12:37 +0700 Subject: [PATCH 05/13] [REF] Remove redundant quote Co-authored-by: Pierre Verkest --- .../i18n/product_uom_updatable.pot | 17 ++++++++++++++++- .../models/product_template.py | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/product_uom_updatable/i18n/product_uom_updatable.pot b/product_uom_updatable/i18n/product_uom_updatable.pot index 99af9cd08e49..0d8a0554f4a5 100644 --- a/product_uom_updatable/i18n/product_uom_updatable.pot +++ b/product_uom_updatable/i18n/product_uom_updatable.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 13.0\n" +"Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -13,6 +13,21 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: product_uom_updatable +#: model:ir.model.fields,field_description:product_uom_updatable.field_product_template__display_name +msgid "Display Name" +msgstr "" + +#. module: product_uom_updatable +#: model:ir.model.fields,field_description:product_uom_updatable.field_product_template__id +msgid "ID" +msgstr "" + +#. module: product_uom_updatable +#: model:ir.model.fields,field_description:product_uom_updatable.field_product_template____last_update +msgid "Last Modified on" +msgstr "" + #. module: product_uom_updatable #: model:ir.model,name:product_uom_updatable.model_product_template msgid "Product Template" diff --git a/product_uom_updatable/models/product_template.py b/product_uom_updatable/models/product_template.py index 86bbf039bcc7..ec44c85e2182 100644 --- a/product_uom_updatable/models/product_template.py +++ b/product_uom_updatable/models/product_template.py @@ -36,7 +36,7 @@ def _update_uom(self, uom_id, field_name): ): # pylint: disable=sql-injection query = sql.SQL( - "UPDATE product_template SET {field} " " = %s WHERE id in %s" + "UPDATE product_template SET {field} = %s WHERE id in %s" ).format(field=sql.Identifier(field_name)) self.env.cr.execute(query, (new_uom.id, tuple(product_ids))) self.invalidate_cache(fnames=[field_name], ids=product_ids) From 60120da60e4976b0c4af8082c4192615146e389a Mon Sep 17 00:00:00 2001 From: Alexandre Fayolle Date: Mon, 13 Sep 2021 15:52:18 +0200 Subject: [PATCH 06/13] [FIX] product_uom_updatable version version conflict prevents upload to pypi --- product_uom_updatable/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product_uom_updatable/__manifest__.py b/product_uom_updatable/__manifest__.py index 8324cbacf36e..fb11a5d619aa 100644 --- a/product_uom_updatable/__manifest__.py +++ b/product_uom_updatable/__manifest__.py @@ -7,7 +7,7 @@ "summary": """ allows products uom to be modified after be used in a stock picking if \ the product uom is of the same category""", - "version": "14.0.1.0.0", + "version": "14.0.1.0.1", "license": "AGPL-3", "author": "ACSONE SA/NV, Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/product-attribute", From af6cc6cb20f0f79eee8b31a9418b065568504ec8 Mon Sep 17 00:00:00 2001 From: hda Date: Wed, 1 Mar 2023 15:11:42 +0100 Subject: [PATCH 07/13] [MIG] product_uom_updatable: Migration to 16.0 --- product_uom_updatable/README.rst | 11 +++++----- product_uom_updatable/__manifest__.py | 6 ++--- .../i18n/product_uom_updatable.pot | 22 ++++--------------- .../models/product_template.py | 7 +++--- product_uom_updatable/readme/CONTRIBUTORS.rst | 1 + .../static/description/index.html | 7 +++--- .../tests/test_product_uom_update.py | 6 ++--- 7 files changed, 25 insertions(+), 35 deletions(-) diff --git a/product_uom_updatable/README.rst b/product_uom_updatable/README.rst index f4e9b7dcad2e..19694b948c91 100644 --- a/product_uom_updatable/README.rst +++ b/product_uom_updatable/README.rst @@ -14,13 +14,13 @@ Product Uom Updatable :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fproduct--attribute-lightgray.png?logo=github - :target: https://github.com/OCA/product-attribute/tree/14.0/product_uom_updatable + :target: https://github.com/OCA/product-attribute/tree/16.0/product_uom_updatable :alt: OCA/product-attribute .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/product-attribute-14-0/product-attribute-14-0-product_uom_updatable + :target: https://translation.odoo-community.org/projects/product-attribute-16-0/product-attribute-16-0-product_uom_updatable :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/135/14.0 + :target: https://runbot.odoo-community.org/runbot/135/16.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| @@ -38,7 +38,7 @@ 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -59,6 +59,7 @@ Contributors Trobz * Dung Tran +* Hughes Damry Other credits ~~~~~~~~~~~~~ @@ -80,6 +81,6 @@ 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/product-attribute `_ project on GitHub. +This module is part of the `OCA/product-attribute `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/product_uom_updatable/__manifest__.py b/product_uom_updatable/__manifest__.py index fb11a5d619aa..c395c25a5ffd 100644 --- a/product_uom_updatable/__manifest__.py +++ b/product_uom_updatable/__manifest__.py @@ -5,9 +5,9 @@ { "name": "Product Uom Updatable", "summary": """ - allows products uom to be modified after be used in a stock picking if \ - the product uom is of the same category""", - "version": "14.0.1.0.1", + allows products uom to be modified after be used in a stock picking if + the product uom is of the same category""", + "version": "16.0.1.0.0", "license": "AGPL-3", "author": "ACSONE SA/NV, Camptocamp, Odoo Community Association (OCA)", "website": "https://github.com/OCA/product-attribute", diff --git a/product_uom_updatable/i18n/product_uom_updatable.pot b/product_uom_updatable/i18n/product_uom_updatable.pot index 0d8a0554f4a5..c410286200f2 100644 --- a/product_uom_updatable/i18n/product_uom_updatable.pot +++ b/product_uom_updatable/i18n/product_uom_updatable.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -13,30 +13,16 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" -#. module: product_uom_updatable -#: model:ir.model.fields,field_description:product_uom_updatable.field_product_template__display_name -msgid "Display Name" -msgstr "" - -#. module: product_uom_updatable -#: model:ir.model.fields,field_description:product_uom_updatable.field_product_template__id -msgid "ID" -msgstr "" - -#. module: product_uom_updatable -#: model:ir.model.fields,field_description:product_uom_updatable.field_product_template____last_update -msgid "Last Modified on" -msgstr "" - #. module: product_uom_updatable #: model:ir.model,name:product_uom_updatable.model_product_template -msgid "Product Template" +msgid "Product" msgstr "" #. module: product_uom_updatable +#. odoo-python #: code:addons/product_uom_updatable/models/product_template.py:0 #, python-format msgid "" -"You can not change the unit of measure of a product to a new unit that " +"You cannot change the unit of measure of a product to a new unit that " "doesn't have the same category and factor" msgstr "" diff --git a/product_uom_updatable/models/product_template.py b/product_uom_updatable/models/product_template.py index ec44c85e2182..0903f34265e0 100644 --- a/product_uom_updatable/models/product_template.py +++ b/product_uom_updatable/models/product_template.py @@ -28,7 +28,7 @@ def _update_uom(self, uom_id, field_name): uom_obj = self.env["uom.uom"] sorted_items = sorted(self, key=lambda r: r[field_name]) for key, products_group in groupby(sorted_items, key=lambda r: r[field_name]): - product_ids = [product.id for product in products_group] + product_ids = [p.id for p in products_group] new_uom = uom_obj.browse(uom_id) if ( key.category_id == new_uom.category_id @@ -39,11 +39,12 @@ def _update_uom(self, uom_id, field_name): "UPDATE product_template SET {field} = %s WHERE id in %s" ).format(field=sql.Identifier(field_name)) self.env.cr.execute(query, (new_uom.id, tuple(product_ids))) - self.invalidate_cache(fnames=[field_name], ids=product_ids) + products = self.env["product.template"].browse(product_ids) + products.invalidate_recordset(fnames=[field_name]) else: raise UserError( _( - "You can not change the unit of measure of a product " + "You cannot change the unit of measure of a product " "to a new unit that doesn't have the same category " "and factor" ) diff --git a/product_uom_updatable/readme/CONTRIBUTORS.rst b/product_uom_updatable/readme/CONTRIBUTORS.rst index da80abf71e3e..bac3629943d6 100644 --- a/product_uom_updatable/readme/CONTRIBUTORS.rst +++ b/product_uom_updatable/readme/CONTRIBUTORS.rst @@ -3,3 +3,4 @@ Trobz * Dung Tran +* Hughes Damry diff --git a/product_uom_updatable/static/description/index.html b/product_uom_updatable/static/description/index.html index 24be8e8c91d8..fd27d42e172e 100644 --- a/product_uom_updatable/static/description/index.html +++ b/product_uom_updatable/static/description/index.html @@ -367,7 +367,7 @@

    Product Uom Updatable

    !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

    Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runbot

    +

    Beta License: AGPL-3 OCA/product-attribute Translate me on Weblate Try me on Runbot

    Allow to change the product UoM if the new UoM is in the same category and has the same factor.

    Table of contents

    @@ -387,7 +387,7 @@

    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.

    +feedback.

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

    @@ -407,6 +407,7 @@

    Contributors

    Trobz

    @@ -423,7 +424,7 @@

    Maintainers

    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/product-attribute project on GitHub.

    +

    This module is part of the OCA/product-attribute project on GitHub.

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

    diff --git a/product_uom_updatable/tests/test_product_uom_update.py b/product_uom_updatable/tests/test_product_uom_update.py index 44a1c1361aef..7bf61c5c73a5 100644 --- a/product_uom_updatable/tests/test_product_uom_update.py +++ b/product_uom_updatable/tests/test_product_uom_update.py @@ -3,12 +3,12 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo.exceptions import UserError -from odoo.tests.common import SavepointCase +from odoo.tests.common import TransactionCase -class TestProductUomUpdate(SavepointCase): +class TestProductUomUpdate(TransactionCase): def setUp(self): - super(TestProductUomUpdate, self).setUp() + super().setUp() self.env = self.env(context=dict(self.env.context, tracking_disable=True)) self.uom_unit = self.env.ref("uom.product_uom_unit") self.uom_day = self.env.ref("uom.product_uom_day") From 818b70089d8ea6f532209bc65d7cd7b9f4ef1de9 Mon Sep 17 00:00:00 2001 From: Sebastiano Picchi Date: Thu, 27 Apr 2023 10:20:21 +0000 Subject: [PATCH 08/13] Added translation using Weblate (Italian) --- product_uom_updatable/i18n/it.po | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 product_uom_updatable/i18n/it.po diff --git a/product_uom_updatable/i18n/it.po b/product_uom_updatable/i18n/it.po new file mode 100644 index 000000000000..f5afc3974e6d --- /dev/null +++ b/product_uom_updatable/i18n/it.po @@ -0,0 +1,29 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * product_uom_updatable +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.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: product_uom_updatable +#: model:ir.model,name:product_uom_updatable.model_product_template +msgid "Product" +msgstr "" + +#. module: product_uom_updatable +#. odoo-python +#: code:addons/product_uom_updatable/models/product_template.py:0 +#, python-format +msgid "" +"You cannot change the unit of measure of a product to a new unit that " +"doesn't have the same category and factor" +msgstr "" From 02e698ecddd73c43eaabe3b13bb6ff32b58bf020 Mon Sep 17 00:00:00 2001 From: Sebastiano Picchi Date: Thu, 27 Apr 2023 10:20:34 +0000 Subject: [PATCH 09/13] Translated using Weblate (Italian) Currently translated at 100.0% (2 of 2 strings) Translation: product-attribute-16.0/product-attribute-16.0-product_uom_updatable Translate-URL: https://translation.odoo-community.org/projects/product-attribute-16-0/product-attribute-16-0-product_uom_updatable/it/ --- product_uom_updatable/README.rst | 15 +++++--- product_uom_updatable/i18n/it.po | 8 +++- .../static/description/index.html | 38 ++++++++++--------- 3 files changed, 35 insertions(+), 26 deletions(-) diff --git a/product_uom_updatable/README.rst b/product_uom_updatable/README.rst index 19694b948c91..4bf6f71faa84 100644 --- a/product_uom_updatable/README.rst +++ b/product_uom_updatable/README.rst @@ -2,10 +2,13 @@ Product Uom Updatable ===================== -.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:fe7aa0456f147d9cc06288c74d7f179d26dd7fcb22908c2a35a70c086c1b62ea + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status @@ -19,11 +22,11 @@ Product Uom Updatable .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/product-attribute-16-0/product-attribute-16-0-product_uom_updatable :alt: Translate me on Weblate -.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/135/16.0 - :alt: Try me on Runbot +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/product-attribute&target_branch=16.0 + :alt: Try me on Runboat -|badge1| |badge2| |badge3| |badge4| |badge5| +|badge1| |badge2| |badge3| |badge4| |badge5| Allow to change the product UoM if the new UoM is in the same category and has the same factor. @@ -37,7 +40,7 @@ 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 +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. diff --git a/product_uom_updatable/i18n/it.po b/product_uom_updatable/i18n/it.po index f5afc3974e6d..19df3151abc6 100644 --- a/product_uom_updatable/i18n/it.po +++ b/product_uom_updatable/i18n/it.po @@ -6,18 +6,20 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2023-04-27 11:19+0000\n" +"Last-Translator: Sebastiano Picchi \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 4.14.1\n" #. module: product_uom_updatable #: model:ir.model,name:product_uom_updatable.model_product_template msgid "Product" -msgstr "" +msgstr "Prodotto" #. module: product_uom_updatable #. odoo-python @@ -27,3 +29,5 @@ msgid "" "You cannot change the unit of measure of a product to a new unit that " "doesn't have the same category and factor" msgstr "" +"Non puoi cambiare l'unità di misura di un prodotto ad una nuova unità che " +"non ha la stessa categoria e fattore" diff --git a/product_uom_updatable/static/description/index.html b/product_uom_updatable/static/description/index.html index fd27d42e172e..d9b91a22f7c8 100644 --- a/product_uom_updatable/static/description/index.html +++ b/product_uom_updatable/static/description/index.html @@ -1,20 +1,20 @@ - + - + Product Uom Updatable