From 3117a084392d68cbe257938904154f1d7c288029 Mon Sep 17 00:00:00 2001 From: Florian da Costa Date: Thu, 6 Sep 2018 18:09:58 +0200 Subject: [PATCH 01/25] Add module stock_location_lockdown for v9 --- stock_location_lockdown/README.rst | 81 ++++ stock_location_lockdown/__init__.py | 5 + stock_location_lockdown/__openerp__.py | 21 + stock_location_lockdown/i18n/fr.po | 37 ++ stock_location_lockdown/models/__init__.py | 6 + .../models/stock_location.py | 13 + stock_location_lockdown/models/stock_quant.py | 19 + .../readme/CONTRIBUTORS.rst | 1 + .../readme/DESCRIPTION.rst | 4 + stock_location_lockdown/readme/USAGE.rst | 1 + .../static/description/index.html | 429 ++++++++++++++++++ stock_location_lockdown/tests/__init__.py | 5 + .../test_block_stock_location_entrance.py | 33 ++ .../views/stock_location.xml | 17 + 14 files changed, 672 insertions(+) create mode 100644 stock_location_lockdown/README.rst create mode 100644 stock_location_lockdown/__init__.py create mode 100644 stock_location_lockdown/__openerp__.py create mode 100644 stock_location_lockdown/i18n/fr.po create mode 100644 stock_location_lockdown/models/__init__.py create mode 100644 stock_location_lockdown/models/stock_location.py create mode 100644 stock_location_lockdown/models/stock_quant.py create mode 100644 stock_location_lockdown/readme/CONTRIBUTORS.rst create mode 100644 stock_location_lockdown/readme/DESCRIPTION.rst create mode 100644 stock_location_lockdown/readme/USAGE.rst create mode 100644 stock_location_lockdown/static/description/index.html create mode 100644 stock_location_lockdown/tests/__init__.py create mode 100644 stock_location_lockdown/tests/test_block_stock_location_entrance.py create mode 100644 stock_location_lockdown/views/stock_location.xml diff --git a/stock_location_lockdown/README.rst b/stock_location_lockdown/README.rst new file mode 100644 index 000000000..e6007a651 --- /dev/null +++ b/stock_location_lockdown/README.rst @@ -0,0 +1,81 @@ +======================= +Stock Location Lockdown +======================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! 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%2Fstock--logistics--warehouse-lightgray.png?logo=github + :target: https://github.com/OCA/stock-logistics-warehouse/tree/9.0/stock_location_lockdown + :alt: OCA/stock-logistics-warehouse +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/stock-logistics-warehouse-9-0/stock-logistics-warehouse-9-0-stock_location_lockdown + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png + :target: https://runbot.odoo-community.org/runbot/153/9.0 + :alt: Try me on Runbot + +|badge1| |badge2| |badge3| |badge4| |badge5| + +The aims of this module is to mark locations where no product should transit. +Indeed, in complex warehouse environment, we may have a complicated tree of locations with a lot of virtual ones, used to create the hierarchy of the locations. +We might want to avoid to put stock in these locations since they are not physical locations, they just represent a zone of the warehouse. +For these location, the usage should be internal as it belongs to a warehouse, so the usage 'view' can't be used for these purpose. + +**Table of contents** + +.. contents:: + :local: + +Usage +===== + +* Once the module is installed, goes to any location for which you want to prevent stock entrance and check the box "Block Stock Entrance". Then, you won't be allow to add stock in these locations. + +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 +~~~~~~~ + +* Akretion + +Contributors +~~~~~~~~~~~~ + +* Florian da Costa + +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/stock-logistics-warehouse `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/stock_location_lockdown/__init__.py b/stock_location_lockdown/__init__.py new file mode 100644 index 000000000..9cf531149 --- /dev/null +++ b/stock_location_lockdown/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Akretion +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import models diff --git a/stock_location_lockdown/__openerp__.py b/stock_location_lockdown/__openerp__.py new file mode 100644 index 000000000..182f19b8d --- /dev/null +++ b/stock_location_lockdown/__openerp__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Akretion +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Stock Location Lockdown", + "summary": "Prevent to add stock in flag locations", + "author": "Akretion, Odoo Community Association (OCA)", + "website": "https://github.com/OCA/stock-logistics-warehouse", + "category": "Warehouse", + "version": "9.0.1.0.0", + "license": "AGPL-3", + "application": False, + "installable": True, + "depends": [ + "stock", + ], + "data": [ + "views/stock_location.xml", + ] +} diff --git a/stock_location_lockdown/i18n/fr.po b/stock_location_lockdown/i18n/fr.po new file mode 100644 index 000000000..57547ba5e --- /dev/null +++ b/stock_location_lockdown/i18n/fr.po @@ -0,0 +1,37 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_location_lockdown +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-09-06 13:10+0000\n" +"PO-Revision-Date: 2018-09-06 13:10+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: stock_location_lockdown +#: model:ir.model.fields,field_description:stock_location_lockdown.field_stock_location_lockdown_entrance +msgid "Block stock entrance" +msgstr "Bloquer les entrées de stock" + +#. module: stock_location_lockdown +#: model:ir.model,name:stock_location_lockdown.model_stock_location +msgid "Location" +msgstr "Emplacement" + +#. module: stock_location_lockdown +#: code:addons/stock_location_lockdown/models/stock_quant.py:17 +#, python-format +msgid "The location %s is not configured to receive stock." +msgstr "L'emplacement %s n'est pas configuré pour recevoir du stock." + +#. module: stock_location_lockdown +#: model:ir.model.fields,help:stock_location_lockdown.field_stock_location_block_stock_entrance +msgid "if this box is checked, put stock in this location won't be allowed. Usually used for virtual location, which has children" +msgstr "Si cette case est cochée, il ne sera pas possible d'ajouter du stock dans cette emplacement. Habituellement utilisée pour les emplacements virtuels ayant des enfants." diff --git a/stock_location_lockdown/models/__init__.py b/stock_location_lockdown/models/__init__.py new file mode 100644 index 000000000..28f630281 --- /dev/null +++ b/stock_location_lockdown/models/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Akretion +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import stock_location +from . import stock_quant diff --git a/stock_location_lockdown/models/stock_location.py b/stock_location_lockdown/models/stock_location.py new file mode 100644 index 000000000..377e8ca68 --- /dev/null +++ b/stock_location_lockdown/models/stock_location.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Akretion +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import fields, models + + +class StockLocation(models.Model): + _inherit = 'stock.location' + + block_stock_entrance = fields.Boolean( + help="if this box is checked, put stock in this location won't be " + "allowed. Usually used for virtual location, which has children") diff --git a/stock_location_lockdown/models/stock_quant.py b/stock_location_lockdown/models/stock_quant.py new file mode 100644 index 000000000..032cb5169 --- /dev/null +++ b/stock_location_lockdown/models/stock_quant.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Akretion +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import api, models, _ +from openerp.exceptions import UserError + + +class StockQuant(models.Model): + _inherit = 'stock.quant' + + @api.model + def _check_location(self, location): + res = super(StockQuant, self)._check_location(location) + if location.block_stock_entrance: + raise UserError( + _('The location %s is not configured to receive stock.') + % (location.name)) + return res diff --git a/stock_location_lockdown/readme/CONTRIBUTORS.rst b/stock_location_lockdown/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..0bddb053a --- /dev/null +++ b/stock_location_lockdown/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Florian da Costa diff --git a/stock_location_lockdown/readme/DESCRIPTION.rst b/stock_location_lockdown/readme/DESCRIPTION.rst new file mode 100644 index 000000000..8e7c3841a --- /dev/null +++ b/stock_location_lockdown/readme/DESCRIPTION.rst @@ -0,0 +1,4 @@ +The aims of this module is to mark locations where no product should transit. +Indeed, in complex warehouse environment, we may have a complicated tree of locations with a lot of virtual ones, used to create the hierarchy of the locations. +We might want to avoid to put stock in these locations since they are not physical locations, they just represent a zone of the warehouse. +For these location, the usage should be internal as it belongs to a warehouse, so the usage 'view' can't be used for these purpose. diff --git a/stock_location_lockdown/readme/USAGE.rst b/stock_location_lockdown/readme/USAGE.rst new file mode 100644 index 000000000..b1b77caab --- /dev/null +++ b/stock_location_lockdown/readme/USAGE.rst @@ -0,0 +1 @@ +* Once the module is installed, goes to any location for which you want to prevent stock entrance and check the box "Block Stock Entrance". Then, you won't be allow to add stock in these locations. diff --git a/stock_location_lockdown/static/description/index.html b/stock_location_lockdown/static/description/index.html new file mode 100644 index 000000000..fbe0e8a7f --- /dev/null +++ b/stock_location_lockdown/static/description/index.html @@ -0,0 +1,429 @@ + + + + + + +Stock Location Lockdown + + + +
+

Stock Location Lockdown

+ + +

Beta License: AGPL-3 OCA/stock-logistics-warehouse Translate me on Weblate Try me on Runbot

+

The aims of this module is to mark locations where no product should transit. +Indeed, in complex warehouse environment, we may have a complicated tree of locations with a lot of virtual ones, used to create the hierarchy of the locations. +We might want to avoid to put stock in these locations since they are not physical locations, they just represent a zone of the warehouse. +For these location, the usage should be internal as it belongs to a warehouse, so the usage ‘view’ can’t be used for these purpose.

+

Table of contents

+ +
+

Usage

+
    +
  • Once the module is installed, goes to any location for which you want to prevent stock entrance and check the box “Block Stock Entrance”. Then, you won’t be allow to add stock in these locations.
  • +
+
+
+

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

+
    +
  • Akretion
  • +
+
+
+

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/stock-logistics-warehouse project on GitHub.

+

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

+
+
+
+ + diff --git a/stock_location_lockdown/tests/__init__.py b/stock_location_lockdown/tests/__init__.py new file mode 100644 index 000000000..26c695414 --- /dev/null +++ b/stock_location_lockdown/tests/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 Akretion +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_block_stock_location_entrance diff --git a/stock_location_lockdown/tests/test_block_stock_location_entrance.py b/stock_location_lockdown/tests/test_block_stock_location_entrance.py new file mode 100644 index 000000000..44543ce4a --- /dev/null +++ b/stock_location_lockdown/tests/test_block_stock_location_entrance.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Eficent Business and IT Consulting Services S.L. +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp.exceptions import UserError +from openerp.tests.common import TransactionCase + + +class TestStockLocationLockdown(TransactionCase): + + def setUp(self, *args, **kwargs): + super(TestStockLocationLockdown, self).setUp(*args, **kwargs) + self.main_stock_location = self.env.ref('stock.stock_location_stock') + self.main_stock_location.block_stock_entrance = True + self.supplier_location = self.env.ref('stock.stock_location_suppliers') + self.product = self.env.ref('product.product_product_35') + + def test_transfer_stock_in_locked_location(self): + """ + Test to move stock within a location that should not accept + Stock entrance. + """ + move_vals = { + 'location_id': self.supplier_location.id, + 'location_dest_id': self.main_stock_location.id, + 'product_id': self.product.id, + 'product_uom_qty': '2.0', + 'product_uom': 1, + 'name': 'test', + } + stock_move = self.env['stock.move'].create(move_vals) + with self.assertRaises(UserError): + stock_move.action_done() diff --git a/stock_location_lockdown/views/stock_location.xml b/stock_location_lockdown/views/stock_location.xml new file mode 100644 index 000000000..be16e7e21 --- /dev/null +++ b/stock_location_lockdown/views/stock_location.xml @@ -0,0 +1,17 @@ + + + + + + + stock.location + + + + + + + + + From f1ae654e428fa900867059e8661f62c882cceeef Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 5 Dec 2018 21:09:31 +0100 Subject: [PATCH 02/25] [MIG] stock_location_lockdown from v9 to v10 Improve README --- .../{__openerp__.py => __manifest__.py} | 12 +++------ .../models/stock_location.py | 7 +++--- stock_location_lockdown/models/stock_quant.py | 25 ++++++++++++------- .../readme/DESCRIPTION.rst | 8 +++--- stock_location_lockdown/readme/USAGE.rst | 2 +- .../test_block_stock_location_entrance.py | 8 +++--- 6 files changed, 33 insertions(+), 29 deletions(-) rename stock_location_lockdown/{__openerp__.py => __manifest__.py} (68%) diff --git a/stock_location_lockdown/__openerp__.py b/stock_location_lockdown/__manifest__.py similarity index 68% rename from stock_location_lockdown/__openerp__.py rename to stock_location_lockdown/__manifest__.py index 182f19b8d..c6e9b7a73 100644 --- a/stock_location_lockdown/__openerp__.py +++ b/stock_location_lockdown/__manifest__.py @@ -4,18 +4,14 @@ { "name": "Stock Location Lockdown", - "summary": "Prevent to add stock in flag locations", + "summary": "Prevent to add stock on flagged locations", "author": "Akretion, Odoo Community Association (OCA)", "website": "https://github.com/OCA/stock-logistics-warehouse", "category": "Warehouse", - "version": "9.0.1.0.0", + "version": "10.0.1.0.0", "license": "AGPL-3", "application": False, "installable": True, - "depends": [ - "stock", - ], - "data": [ - "views/stock_location.xml", - ] + "depends": ["stock"], + "data": ["views/stock_location.xml"], } diff --git a/stock_location_lockdown/models/stock_location.py b/stock_location_lockdown/models/stock_location.py index 377e8ca68..965144e8b 100644 --- a/stock_location_lockdown/models/stock_location.py +++ b/stock_location_lockdown/models/stock_location.py @@ -2,12 +2,13 @@ # Copyright 2018 Akretion # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp import fields, models +from odoo import fields, models class StockLocation(models.Model): _inherit = 'stock.location' block_stock_entrance = fields.Boolean( - help="if this box is checked, put stock in this location won't be " - "allowed. Usually used for virtual location, which has children") + help="if this box is checked, putting stock on this location won't be " + "allowed. Usually used for a virtual location that has " + "childrens.") diff --git a/stock_location_lockdown/models/stock_quant.py b/stock_location_lockdown/models/stock_quant.py index 032cb5169..9639eb3f0 100644 --- a/stock_location_lockdown/models/stock_quant.py +++ b/stock_location_lockdown/models/stock_quant.py @@ -2,18 +2,25 @@ # Copyright 2018 Akretion # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp import api, models, _ -from openerp.exceptions import UserError +from odoo import api, models, _ +from odoo.exceptions import UserError class StockQuant(models.Model): _inherit = 'stock.quant' @api.model - def _check_location(self, location): - res = super(StockQuant, self)._check_location(location) - if location.block_stock_entrance: - raise UserError( - _('The location %s is not configured to receive stock.') - % (location.name)) - return res + def quants_move( + self, quants, move, location_to, location_from=False, lot_id=False, + owner_id=False, src_package_id=False, dest_package_id=False, + entire_pack=False): + if ( + location_to.usage == 'internal' and + location_to.block_stock_entrance): + raise UserError(_( + "The location '%s' is not configured to receive stock.") + % location_to.display_name) + return super(StockQuant, self).quants_move( + quants, move, location_to, location_from=location_from, + lot_id=lot_id, owner_id=owner_id, src_package_id=src_package_id, + dest_package_id=dest_package_id, entire_pack=entire_pack) diff --git a/stock_location_lockdown/readme/DESCRIPTION.rst b/stock_location_lockdown/readme/DESCRIPTION.rst index 8e7c3841a..4fc3faa49 100644 --- a/stock_location_lockdown/readme/DESCRIPTION.rst +++ b/stock_location_lockdown/readme/DESCRIPTION.rst @@ -1,4 +1,4 @@ -The aims of this module is to mark locations where no product should transit. -Indeed, in complex warehouse environment, we may have a complicated tree of locations with a lot of virtual ones, used to create the hierarchy of the locations. -We might want to avoid to put stock in these locations since they are not physical locations, they just represent a zone of the warehouse. -For these location, the usage should be internal as it belongs to a warehouse, so the usage 'view' can't be used for these purpose. +The aim of this module is to mark internal locations where no product should transit. +Indeed, in complex warehouse setups, we may have a complicated tree of internal locations with parent locations only used to create the hierarchy of the internal locations. +We may want to avoid to put stock on these parent internal locations since they are not physical locations, they just represent a zone of the warehouse. +Theses locations must have *Location Type* set to *Internal Location* because they belong to a warehouse (they can't be configured with *Location Type* set to *View*, cf `Odoo bug #26679 `_). With this module, you will be able to enable a new option *Block stock entrance* for these locations. diff --git a/stock_location_lockdown/readme/USAGE.rst b/stock_location_lockdown/readme/USAGE.rst index b1b77caab..a8727fb3b 100644 --- a/stock_location_lockdown/readme/USAGE.rst +++ b/stock_location_lockdown/readme/USAGE.rst @@ -1 +1 @@ -* Once the module is installed, goes to any location for which you want to prevent stock entrance and check the box "Block Stock Entrance". Then, you won't be allow to add stock in these locations. +* Once the module is installed, select any internal location for which you want to prevent stock entrance and check the box *Block Stock Entrance*. Then, you won't be allow to add stock on these locations. diff --git a/stock_location_lockdown/tests/test_block_stock_location_entrance.py b/stock_location_lockdown/tests/test_block_stock_location_entrance.py index 44543ce4a..e55a2edb7 100644 --- a/stock_location_lockdown/tests/test_block_stock_location_entrance.py +++ b/stock_location_lockdown/tests/test_block_stock_location_entrance.py @@ -1,9 +1,9 @@ # -*- coding: utf-8 -*- -# Copyright 2017 Eficent Business and IT Consulting Services S.L. +# Copyright 2018 Akretion France # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp.exceptions import UserError -from openerp.tests.common import TransactionCase +from odoo.exceptions import UserError +from odoo.tests.common import TransactionCase class TestStockLocationLockdown(TransactionCase): @@ -13,7 +13,7 @@ class TestStockLocationLockdown(TransactionCase): self.main_stock_location = self.env.ref('stock.stock_location_stock') self.main_stock_location.block_stock_entrance = True self.supplier_location = self.env.ref('stock.stock_location_suppliers') - self.product = self.env.ref('product.product_product_35') + self.product = self.env.ref('product.product_product_27') def test_transfer_stock_in_locked_location(self): """ From 2853086349cd8ed33f5c20311125f7e7bb79abd1 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 10 Dec 2018 21:19:46 +0000 Subject: [PATCH 03/25] [UPD] README.rst --- stock_location_lockdown/README.rst | 20 +++++++++---------- .../static/description/index.html | 16 +++++++-------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/stock_location_lockdown/README.rst b/stock_location_lockdown/README.rst index e6007a651..46e4f3fa9 100644 --- a/stock_location_lockdown/README.rst +++ b/stock_location_lockdown/README.rst @@ -14,21 +14,21 @@ Stock Location Lockdown :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--logistics--warehouse-lightgray.png?logo=github - :target: https://github.com/OCA/stock-logistics-warehouse/tree/9.0/stock_location_lockdown + :target: https://github.com/OCA/stock-logistics-warehouse/tree/10.0/stock_location_lockdown :alt: OCA/stock-logistics-warehouse .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png - :target: https://translation.odoo-community.org/projects/stock-logistics-warehouse-9-0/stock-logistics-warehouse-9-0-stock_location_lockdown + :target: https://translation.odoo-community.org/projects/stock-logistics-warehouse-10-0/stock-logistics-warehouse-10-0-stock_location_lockdown :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png - :target: https://runbot.odoo-community.org/runbot/153/9.0 + :target: https://runbot.odoo-community.org/runbot/153/10.0 :alt: Try me on Runbot |badge1| |badge2| |badge3| |badge4| |badge5| -The aims of this module is to mark locations where no product should transit. -Indeed, in complex warehouse environment, we may have a complicated tree of locations with a lot of virtual ones, used to create the hierarchy of the locations. -We might want to avoid to put stock in these locations since they are not physical locations, they just represent a zone of the warehouse. -For these location, the usage should be internal as it belongs to a warehouse, so the usage 'view' can't be used for these purpose. +The aim of this module is to mark internal locations where no product should transit. +Indeed, in complex warehouse setups, we may have a complicated tree of internal locations with parent locations only used to create the hierarchy of the internal locations. +We may want to avoid to put stock on these parent internal locations since they are not physical locations, they just represent a zone of the warehouse. +Theses locations must have *Location Type* set to *Internal Location* because they belong to a warehouse (they can't be configured with *Location Type* set to *View*, cf `Odoo bug #26679 `_). With this module, you will be able to enable a new option *Block stock entrance* for these locations. **Table of contents** @@ -38,7 +38,7 @@ For these location, the usage should be internal as it belongs to a warehouse, s Usage ===== -* Once the module is installed, goes to any location for which you want to prevent stock entrance and check the box "Block Stock Entrance". Then, you won't be allow to add stock in these locations. +* Once the module is installed, select any internal location for which you want to prevent stock entrance and check the box *Block Stock Entrance*. Then, you won't be allow to add stock on these locations. Bug Tracker =========== @@ -46,7 +46,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. @@ -76,6 +76,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/stock-logistics-warehouse `_ project on GitHub. +This module is part of the `OCA/stock-logistics-warehouse `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/stock_location_lockdown/static/description/index.html b/stock_location_lockdown/static/description/index.html index fbe0e8a7f..45dfeb269 100644 --- a/stock_location_lockdown/static/description/index.html +++ b/stock_location_lockdown/static/description/index.html @@ -367,11 +367,11 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 OCA/stock-logistics-warehouse Translate me on Weblate Try me on Runbot

-

The aims of this module is to mark locations where no product should transit. -Indeed, in complex warehouse environment, we may have a complicated tree of locations with a lot of virtual ones, used to create the hierarchy of the locations. -We might want to avoid to put stock in these locations since they are not physical locations, they just represent a zone of the warehouse. -For these location, the usage should be internal as it belongs to a warehouse, so the usage ‘view’ can’t be used for these purpose.

+

Beta License: AGPL-3 OCA/stock-logistics-warehouse Translate me on Weblate Try me on Runbot

+

The aim of this module is to mark internal locations where no product should transit. +Indeed, in complex warehouse setups, we may have a complicated tree of internal locations with parent locations only used to create the hierarchy of the internal locations. +We may want to avoid to put stock on these parent internal locations since they are not physical locations, they just represent a zone of the warehouse. +Theses locations must have Location Type set to Internal Location because they belong to a warehouse (they can’t be configured with Location Type set to View, cf Odoo bug #26679). With this module, you will be able to enable a new option Block stock entrance for these locations.

Table of contents

    @@ -388,7 +388,7 @@ For these location, the usage should be internal as it belongs to a warehouse, s

    Usage

      -
    • Once the module is installed, goes to any location for which you want to prevent stock entrance and check the box “Block Stock Entrance”. Then, you won’t be allow to add stock in these locations.
    • +
    • Once the module is installed, select any internal location for which you want to prevent stock entrance and check the box Block Stock Entrance. Then, you won’t be allow to add stock on these locations.
    @@ -396,7 +396,7 @@ For these location, the usage should be internal as it belongs to a warehouse, s

    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.

    @@ -420,7 +420,7 @@ If you spotted it first, help us smashing it by providing a detailed and welcome

    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/stock-logistics-warehouse project on GitHub.

    +

    This module is part of the OCA/stock-logistics-warehouse project on GitHub.

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

From e44a40decf1deb1e5ddb4555266bf784f4806254 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Mon, 10 Dec 2018 21:33:36 +0000 Subject: [PATCH 04/25] [UPD] Update stock_location_lockdown.pot --- stock_location_lockdown/i18n/fr.po | 33 +++++++++++---- .../i18n/stock_location_lockdown.pot | 41 +++++++++++++++++++ 2 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 stock_location_lockdown/i18n/stock_location_lockdown.pot diff --git a/stock_location_lockdown/i18n/fr.po b/stock_location_lockdown/i18n/fr.po index 57547ba5e..da5b21bce 100644 --- a/stock_location_lockdown/i18n/fr.po +++ b/stock_location_lockdown/i18n/fr.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * stock_location_lockdown +# * stock_location_lockdown # msgid "" msgstr "" @@ -10,28 +10,43 @@ msgstr "" "PO-Revision-Date: 2018-09-06 13:10+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" "Plural-Forms: \n" #. module: stock_location_lockdown -#: model:ir.model.fields,field_description:stock_location_lockdown.field_stock_location_lockdown_entrance +#: model:ir.model.fields,field_description:stock_location_lockdown.field_stock_location_block_stock_entrance msgid "Block stock entrance" msgstr "Bloquer les entrées de stock" #. module: stock_location_lockdown #: model:ir.model,name:stock_location_lockdown.model_stock_location -msgid "Location" -msgstr "Emplacement" +msgid "Inventory Locations" +msgstr "" #. module: stock_location_lockdown -#: code:addons/stock_location_lockdown/models/stock_quant.py:17 -#, python-format -msgid "The location %s is not configured to receive stock." +#: model:ir.model,name:stock_location_lockdown.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_location_lockdown +#: code:addons/stock_location_lockdown/models/stock_quant.py:20 +#, fuzzy, python-format +msgid "The location '%s' is not configured to receive stock." msgstr "L'emplacement %s n'est pas configuré pour recevoir du stock." #. module: stock_location_lockdown #: model:ir.model.fields,help:stock_location_lockdown.field_stock_location_block_stock_entrance -msgid "if this box is checked, put stock in this location won't be allowed. Usually used for virtual location, which has children" -msgstr "Si cette case est cochée, il ne sera pas possible d'ajouter du stock dans cette emplacement. Habituellement utilisée pour les emplacements virtuels ayant des enfants." +#, fuzzy +msgid "" +"if this box is checked, putting stock on this location won't be allowed. " +"Usually used for a virtual location that has childrens." +msgstr "" +"Si cette case est cochée, il ne sera pas possible d'ajouter du stock dans " +"cette emplacement. Habituellement utilisée pour les emplacements virtuels " +"ayant des enfants." + +#~ msgid "Location" +#~ msgstr "Emplacement" diff --git a/stock_location_lockdown/i18n/stock_location_lockdown.pot b/stock_location_lockdown/i18n/stock_location_lockdown.pot new file mode 100644 index 000000000..249d38b54 --- /dev/null +++ b/stock_location_lockdown/i18n/stock_location_lockdown.pot @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_location_lockdown +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.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: stock_location_lockdown +#: model:ir.model.fields,field_description:stock_location_lockdown.field_stock_location_block_stock_entrance +msgid "Block stock entrance" +msgstr "" + +#. module: stock_location_lockdown +#: model:ir.model,name:stock_location_lockdown.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_location_lockdown +#: model:ir.model,name:stock_location_lockdown.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_location_lockdown +#: code:addons/stock_location_lockdown/models/stock_quant.py:20 +#, python-format +msgid "The location '%s' is not configured to receive stock." +msgstr "" + +#. module: stock_location_lockdown +#: model:ir.model.fields,help:stock_location_lockdown.field_stock_location_block_stock_entrance +msgid "if this box is checked, putting stock on this location won't be allowed. Usually used for a virtual location that has childrens." +msgstr "" + From 3bd66df17125c5f7a60bd5331b22e582bc8a13dc Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Thu, 27 Dec 2018 23:22:51 +0000 Subject: [PATCH 05/25] Added translation using Weblate (Portuguese) --- stock_location_lockdown/i18n/pt.po | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 stock_location_lockdown/i18n/pt.po diff --git a/stock_location_lockdown/i18n/pt.po b/stock_location_lockdown/i18n/pt.po new file mode 100644 index 000000000..1414ca000 --- /dev/null +++ b/stock_location_lockdown/i18n/pt.po @@ -0,0 +1,41 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * stock_location_lockdown +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 10.0\n" +"Report-Msgid-Bugs-To: \n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: pt\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: stock_location_lockdown +#: model:ir.model.fields,field_description:stock_location_lockdown.field_stock_location_block_stock_entrance +msgid "Block stock entrance" +msgstr "" + +#. module: stock_location_lockdown +#: model:ir.model,name:stock_location_lockdown.model_stock_location +msgid "Inventory Locations" +msgstr "" + +#. module: stock_location_lockdown +#: model:ir.model,name:stock_location_lockdown.model_stock_quant +msgid "Quants" +msgstr "" + +#. module: stock_location_lockdown +#: code:addons/stock_location_lockdown/models/stock_quant.py:20 +#, python-format +msgid "The location '%s' is not configured to receive stock." +msgstr "" + +#. module: stock_location_lockdown +#: model:ir.model.fields,help:stock_location_lockdown.field_stock_location_block_stock_entrance +msgid "if this box is checked, putting stock on this location won't be allowed. Usually used for a virtual location that has childrens." +msgstr "" From af5840bc2a880816b9371ba6b18b71132a161d52 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Thu, 27 Dec 2018 23:23:08 +0000 Subject: [PATCH 06/25] Translated using Weblate (Portuguese) Currently translated at 80.0% (4 of 5 strings) Translation: stock-logistics-warehouse-10.0/stock-logistics-warehouse-10.0-stock_location_lockdown Translate-URL: https://translation.odoo-community.org/projects/stock-logistics-warehouse-10-0/stock-logistics-warehouse-10-0-stock_location_lockdown/pt/ --- stock_location_lockdown/i18n/pt.po | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/stock_location_lockdown/i18n/pt.po b/stock_location_lockdown/i18n/pt.po index 1414ca000..a4a488605 100644 --- a/stock_location_lockdown/i18n/pt.po +++ b/stock_location_lockdown/i18n/pt.po @@ -6,23 +6,25 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 10.0\n" "Report-Msgid-Bugs-To: \n" -"Last-Translator: Automatically generated\n" +"PO-Revision-Date: 2018-12-28 01:41+0000\n" +"Last-Translator: Pedro Castro Silva \n" "Language-Team: none\n" "Language: pt\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 3.3\n" #. module: stock_location_lockdown #: model:ir.model.fields,field_description:stock_location_lockdown.field_stock_location_block_stock_entrance msgid "Block stock entrance" -msgstr "" +msgstr "Bloquear entradas de stock" #. module: stock_location_lockdown #: model:ir.model,name:stock_location_lockdown.model_stock_location msgid "Inventory Locations" -msgstr "" +msgstr "Localizações de Inventário" #. module: stock_location_lockdown #: model:ir.model,name:stock_location_lockdown.model_stock_quant @@ -33,9 +35,12 @@ msgstr "" #: code:addons/stock_location_lockdown/models/stock_quant.py:20 #, python-format msgid "The location '%s' is not configured to receive stock." -msgstr "" +msgstr "A localização '%s' não está configurada para receber stock." #. module: stock_location_lockdown #: model:ir.model.fields,help:stock_location_lockdown.field_stock_location_block_stock_entrance msgid "if this box is checked, putting stock on this location won't be allowed. Usually used for a virtual location that has childrens." msgstr "" +"Se esta caixa estiver selecionada, não será permitido colocar stock nesta " +"localização. É geralmente utilizada em localizações virtuais com " +"descendentes." From 56d4fcdd944fec48dda13c8c613cd99baac5a285 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 3 Apr 2019 03:25:28 +0000 Subject: [PATCH 07/25] [ADD] icon.png --- .../static/description/icon.png | Bin 0 -> 9455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 stock_location_lockdown/static/description/icon.png diff --git a/stock_location_lockdown/static/description/icon.png b/stock_location_lockdown/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 5766bfa2dbd4b5b7013d3a16697a1d9ef327f7fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?= Date: Fri, 5 Jul 2019 17:46:07 +0200 Subject: [PATCH 08/25] [FIX] fix negative quant in blocked location When forcing an outgoing move and then moving it. Odoo create a negative quant. This quant should not be in the locked location because no quand will go in it and so the negative quant will stay here for ever --- stock_location_lockdown/models/stock_quant.py | 25 ++++++++----------- .../test_block_stock_location_entrance.py | 22 ++++++++++++++-- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/stock_location_lockdown/models/stock_quant.py b/stock_location_lockdown/models/stock_quant.py index 9639eb3f0..6a71e16f8 100644 --- a/stock_location_lockdown/models/stock_quant.py +++ b/stock_location_lockdown/models/stock_quant.py @@ -9,18 +9,13 @@ from odoo.exceptions import UserError class StockQuant(models.Model): _inherit = 'stock.quant' - @api.model - def quants_move( - self, quants, move, location_to, location_from=False, lot_id=False, - owner_id=False, src_package_id=False, dest_package_id=False, - entire_pack=False): - if ( - location_to.usage == 'internal' and - location_to.block_stock_entrance): - raise UserError(_( - "The location '%s' is not configured to receive stock.") - % location_to.display_name) - return super(StockQuant, self).quants_move( - quants, move, location_to, location_from=location_from, - lot_id=lot_id, owner_id=owner_id, src_package_id=src_package_id, - dest_package_id=dest_package_id, entire_pack=entire_pack) + @api.constrains('location_id') + def _check_location_blocked(self): + for record in self: + if record.location_id.block_stock_entrance: + raise UserError( + _('The location %s is blocked and can ' + 'not be used for moving the product %s') + % (record.location_id.name, record.product_id.name) + ) + return True diff --git a/stock_location_lockdown/tests/test_block_stock_location_entrance.py b/stock_location_lockdown/tests/test_block_stock_location_entrance.py index e55a2edb7..85598d351 100644 --- a/stock_location_lockdown/tests/test_block_stock_location_entrance.py +++ b/stock_location_lockdown/tests/test_block_stock_location_entrance.py @@ -2,7 +2,7 @@ # Copyright 2018 Akretion France # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo.exceptions import UserError +from odoo.exceptions import ValidationError from odoo.tests.common import TransactionCase @@ -13,6 +13,7 @@ class TestStockLocationLockdown(TransactionCase): self.main_stock_location = self.env.ref('stock.stock_location_stock') self.main_stock_location.block_stock_entrance = True self.supplier_location = self.env.ref('stock.stock_location_suppliers') + self.customer_location = self.env.ref('stock.stock_location_customers') self.product = self.env.ref('product.product_product_27') def test_transfer_stock_in_locked_location(self): @@ -29,5 +30,22 @@ class TestStockLocationLockdown(TransactionCase): 'name': 'test', } stock_move = self.env['stock.move'].create(move_vals) - with self.assertRaises(UserError): + with self.assertRaises(ValidationError): + stock_move.action_done() + + def test_transfer_stock_out_locked_location(self): + """ + Test to move stock within a location that should not accept + Stock entrance. + """ + move_vals = { + 'location_id': self.main_stock_location.id, + 'location_dest_id': self.customer_location.id, + 'product_id': self.product.id, + 'product_uom_qty': '2.0', + 'product_uom': 1, + 'name': 'test', + } + stock_move = self.env['stock.move'].create(move_vals) + with self.assertRaises(ValidationError): stock_move.action_done() From 68c4573f9719f8b816dff67d568ecb82d3d5ea76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?= Date: Sat, 6 Jul 2019 13:47:21 +0200 Subject: [PATCH 09/25] fixup! [FIX] fix negative quant in blocked location --- .../tests/test_block_stock_location_entrance.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stock_location_lockdown/tests/test_block_stock_location_entrance.py b/stock_location_lockdown/tests/test_block_stock_location_entrance.py index 85598d351..51dc3938f 100644 --- a/stock_location_lockdown/tests/test_block_stock_location_entrance.py +++ b/stock_location_lockdown/tests/test_block_stock_location_entrance.py @@ -25,7 +25,7 @@ class TestStockLocationLockdown(TransactionCase): 'location_id': self.supplier_location.id, 'location_dest_id': self.main_stock_location.id, 'product_id': self.product.id, - 'product_uom_qty': '2.0', + 'product_uom_qty': self.product.qty_available + 1, 'product_uom': 1, 'name': 'test', } @@ -42,7 +42,7 @@ class TestStockLocationLockdown(TransactionCase): 'location_id': self.main_stock_location.id, 'location_dest_id': self.customer_location.id, 'product_id': self.product.id, - 'product_uom_qty': '2.0', + 'product_uom_qty': self.product.qty_available + 1, 'product_uom': 1, 'name': 'test', } From 42d2035f341017b612ab760019bcdd2dd1f109ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?= Date: Mon, 8 Jul 2019 12:05:44 +0200 Subject: [PATCH 10/25] fixup! [FIX] fix negative quant in blocked location --- stock_location_lockdown/models/stock_quant.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stock_location_lockdown/models/stock_quant.py b/stock_location_lockdown/models/stock_quant.py index 6a71e16f8..89b6b45ef 100644 --- a/stock_location_lockdown/models/stock_quant.py +++ b/stock_location_lockdown/models/stock_quant.py @@ -3,7 +3,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, models, _ -from odoo.exceptions import UserError +from odoo.exceptions import ValidationError class StockQuant(models.Model): @@ -13,7 +13,7 @@ class StockQuant(models.Model): def _check_location_blocked(self): for record in self: if record.location_id.block_stock_entrance: - raise UserError( + raise ValidationError( _('The location %s is blocked and can ' 'not be used for moving the product %s') % (record.location_id.name, record.product_id.name) From 3c90ff7e431be17d61b61ea9f7210cb0f19a1889 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Mon, 8 Jul 2019 15:52:15 +0000 Subject: [PATCH 11/25] [UPD] Update stock_location_lockdown.pot --- stock_location_lockdown/i18n/stock_location_lockdown.pot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stock_location_lockdown/i18n/stock_location_lockdown.pot b/stock_location_lockdown/i18n/stock_location_lockdown.pot index 249d38b54..bba5e0fbd 100644 --- a/stock_location_lockdown/i18n/stock_location_lockdown.pot +++ b/stock_location_lockdown/i18n/stock_location_lockdown.pot @@ -29,9 +29,9 @@ msgid "Quants" msgstr "" #. module: stock_location_lockdown -#: code:addons/stock_location_lockdown/models/stock_quant.py:20 +#: code:addons/stock_location_lockdown/models/stock_quant.py:17 #, python-format -msgid "The location '%s' is not configured to receive stock." +msgid "The location %s is blocked and can not be used for moving the product %s" msgstr "" #. module: stock_location_lockdown From 1a357d841466246b629dd31d13f8147c21b8bdf7 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 8 Jul 2019 17:34:32 +0000 Subject: [PATCH 12/25] stock_location_lockdown 10.0.1.1.0 --- stock_location_lockdown/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stock_location_lockdown/__manifest__.py b/stock_location_lockdown/__manifest__.py index c6e9b7a73..26c16a473 100644 --- a/stock_location_lockdown/__manifest__.py +++ b/stock_location_lockdown/__manifest__.py @@ -8,7 +8,7 @@ "author": "Akretion, Odoo Community Association (OCA)", "website": "https://github.com/OCA/stock-logistics-warehouse", "category": "Warehouse", - "version": "10.0.1.0.0", + "version": "10.0.1.1.0", "license": "AGPL-3", "application": False, "installable": True, From 047f9b1e4a10b1c8404f0c9770be96df0befd870 Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sat, 20 Jul 2019 12:14:50 +0000 Subject: [PATCH 13/25] Update translation files Updated by "Update PO files to match POT (msgmerge)" hook in Weblate. Translation: stock-logistics-warehouse-10.0/stock-logistics-warehouse-10.0-stock_location_lockdown Translate-URL: https://translation.odoo-community.org/projects/stock-logistics-warehouse-10-0/stock-logistics-warehouse-10-0-stock_location_lockdown/ --- stock_location_lockdown/i18n/fr.po | 13 +++++++++---- stock_location_lockdown/i18n/pt.po | 16 +++++++++++----- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/stock_location_lockdown/i18n/fr.po b/stock_location_lockdown/i18n/fr.po index da5b21bce..ee74fe5aa 100644 --- a/stock_location_lockdown/i18n/fr.po +++ b/stock_location_lockdown/i18n/fr.po @@ -32,10 +32,11 @@ msgid "Quants" msgstr "" #. module: stock_location_lockdown -#: code:addons/stock_location_lockdown/models/stock_quant.py:20 -#, fuzzy, python-format -msgid "The location '%s' is not configured to receive stock." -msgstr "L'emplacement %s n'est pas configuré pour recevoir du stock." +#: code:addons/stock_location_lockdown/models/stock_quant.py:17 +#, python-format +msgid "" +"The location %s is blocked and can not be used for moving the product %s" +msgstr "" #. module: stock_location_lockdown #: model:ir.model.fields,help:stock_location_lockdown.field_stock_location_block_stock_entrance @@ -48,5 +49,9 @@ msgstr "" "cette emplacement. Habituellement utilisée pour les emplacements virtuels " "ayant des enfants." +#, fuzzy +#~ msgid "The location '%s' is not configured to receive stock." +#~ msgstr "L'emplacement %s n'est pas configuré pour recevoir du stock." + #~ msgid "Location" #~ msgstr "Emplacement" diff --git a/stock_location_lockdown/i18n/pt.po b/stock_location_lockdown/i18n/pt.po index a4a488605..fea5bc5cc 100644 --- a/stock_location_lockdown/i18n/pt.po +++ b/stock_location_lockdown/i18n/pt.po @@ -1,6 +1,6 @@ # Translation of Odoo Server. # This file contains the translation of the following modules: -# * stock_location_lockdown +# * stock_location_lockdown # msgid "" msgstr "" @@ -32,15 +32,21 @@ msgid "Quants" msgstr "" #. module: stock_location_lockdown -#: code:addons/stock_location_lockdown/models/stock_quant.py:20 +#: code:addons/stock_location_lockdown/models/stock_quant.py:17 #, python-format -msgid "The location '%s' is not configured to receive stock." -msgstr "A localização '%s' não está configurada para receber stock." +msgid "" +"The location %s is blocked and can not be used for moving the product %s" +msgstr "" #. module: stock_location_lockdown #: model:ir.model.fields,help:stock_location_lockdown.field_stock_location_block_stock_entrance -msgid "if this box is checked, putting stock on this location won't be allowed. Usually used for a virtual location that has childrens." +msgid "" +"if this box is checked, putting stock on this location won't be allowed. " +"Usually used for a virtual location that has childrens." msgstr "" "Se esta caixa estiver selecionada, não será permitido colocar stock nesta " "localização. É geralmente utilizada em localizações virtuais com " "descendentes." + +#~ msgid "The location '%s' is not configured to receive stock." +#~ msgstr "A localização '%s' não está configurada para receber stock." From 0cb2a152f6a36167fd19c9d74c579d4cb9f8ce1f Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 29 Jul 2019 03:42:43 +0000 Subject: [PATCH 14/25] [UPD] README.rst --- stock_location_lockdown/static/description/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stock_location_lockdown/static/description/index.html b/stock_location_lockdown/static/description/index.html index 45dfeb269..3bdaeb681 100644 --- a/stock_location_lockdown/static/description/index.html +++ b/stock_location_lockdown/static/description/index.html @@ -3,7 +3,7 @@ - + Stock Location Lockdown