From fcd55708813bddb4ab3d6739e7899432db97bbd1 Mon Sep 17 00:00:00 2001 From: Florian da Costa Date: Thu, 6 Sep 2018 18:09:58 +0200 Subject: [PATCH 01/33] 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 0a3d3d763cf06cacf9643d172dbfd11d4557af61 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 5 Dec 2018 21:09:31 +0100 Subject: [PATCH 02/33] [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 6883785a8875d8d1b73f80fe2f17dcc833d2ae8f Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 10 Dec 2018 21:19:46 +0000 Subject: [PATCH 03/33] [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 9b00fd8ccba0c4710192f501ab7d0b079bc150f7 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Mon, 10 Dec 2018 21:33:36 +0000 Subject: [PATCH 04/33] [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 33cac121b99d9f7b5337059949fd6574e21fd956 Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Thu, 27 Dec 2018 23:22:51 +0000 Subject: [PATCH 05/33] 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 ccfcc87e2491d204ff45e0b7cc75bdcea96616fe Mon Sep 17 00:00:00 2001 From: Pedro Castro Silva Date: Thu, 27 Dec 2018 23:23:08 +0000 Subject: [PATCH 06/33] 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 d3fcaf1ebbf9bc3538765d56c16af5aea780dc55 Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Wed, 3 Apr 2019 03:25:28 +0000 Subject: [PATCH 07/33] [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 bfb183fe0ce4cc14860e7e9a7ac2dc5ea406875a 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/33] [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 cc17260c3fee91c71f4e1e82aab9eea0165d434c 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/33] 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 1f17cbfbd9b3ccd2d0413649eeb65bcfc69e15bb 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/33] 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 b5084d3c2fdf2f127c47771223bf40e7861f45b3 Mon Sep 17 00:00:00 2001 From: oca-travis Date: Mon, 8 Jul 2019 15:52:15 +0000 Subject: [PATCH 11/33] [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 5e63ffb8b474f72a53ccf4caf58050e43258963e Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 8 Jul 2019 17:34:32 +0000 Subject: [PATCH 12/33] 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 63d04b0c1f817051230b3f6c9288c3b95852a1cb Mon Sep 17 00:00:00 2001 From: OCA Transbot Date: Sat, 20 Jul 2019 12:14:50 +0000 Subject: [PATCH 13/33] 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 0ebb05eb02fa19f25ef574575f176ef2298ce5bb Mon Sep 17 00:00:00 2001 From: OCA-git-bot Date: Mon, 29 Jul 2019 03:42:43 +0000 Subject: [PATCH 14/33] [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