From dd8f3821d06f03c57370d22e962d60b34c2d4fce Mon Sep 17 00:00:00 2001 From: mreficent Date: Fri, 12 May 2017 17:46:57 +0200 Subject: [PATCH] stock_inventory_lockdown --- stock_inventory_lockdown/README.rst | 13 ++---- stock_inventory_lockdown/__openerp__.py | 6 +-- .../images/location_locked.png | Bin 12899 -> 0 bytes .../images/move_error.png | Bin 14298 -> 11038 bytes .../models/stock_inventory.py | 18 +++++--- .../models/stock_location.py | 13 +++--- .../models/stock_quant.py | 39 +++++++----------- .../tests/test_stock_inventory_lockdown.py | 1 - 8 files changed, 40 insertions(+), 50 deletions(-) delete mode 100644 stock_inventory_lockdown/images/location_locked.png diff --git a/stock_inventory_lockdown/README.rst b/stock_inventory_lockdown/README.rst index a8dd6b5cd..eb9dc5bfe 100644 --- a/stock_inventory_lockdown/README.rst +++ b/stock_inventory_lockdown/README.rst @@ -10,20 +10,17 @@ This module lets you lock down the locations during an inventory. Usage ===== -.. image:: images/location_locked.png - :alt: Error message - .. image:: images/move_error.png :alt: Error message While an inventory is in the state "In progress", no stock moves can be recorded in/out of the inventory's location: users will get an error message. -Creating or modifying a locations is also forbidden. +Creating or modifying locations is also forbidden. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot - :target: https://runbot.odoo-community.org/runbot/153/8.0 + :target: https://runbot.odoo-community.org/runbot/153/9.0 Bug Tracker =========== @@ -31,11 +28,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 -`_. +help us smashing it by providing a detailed and welcomed feedback. Credits ======= diff --git a/stock_inventory_lockdown/__openerp__.py b/stock_inventory_lockdown/__openerp__.py index 09bca4a4b..abccecde3 100644 --- a/stock_inventory_lockdown/__openerp__.py +++ b/stock_inventory_lockdown/__openerp__.py @@ -3,11 +3,11 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { - "name": "Inventory lock down", + "name": "Inventory Lock Down", "summary": "Lock down stock locations during inventories.", - "version": "8.0.1.0.0", + "version": "9.0.1.0.0", "depends": ["stock"], - "author": u"Numérigraphe,Odoo Community Association (OCA)", + "author": "Numérigraphe,Odoo Community Association (OCA)", "category": "Warehouse Management", "images": [ "images/move_error.png", diff --git a/stock_inventory_lockdown/images/location_locked.png b/stock_inventory_lockdown/images/location_locked.png deleted file mode 100644 index fd4448561a97748dbca70d36708db87d8c8fedcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12899 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 nH_WN$7=zF2yl7kKG_Lc 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 Di~(0R diff --git a/stock_inventory_lockdown/models/stock_inventory.py b/stock_inventory_lockdown/models/stock_inventory.py index 4886be466..71c001f6c 100644 --- a/stock_inventory_lockdown/models/stock_inventory.py +++ b/stock_inventory_lockdown/models/stock_inventory.py @@ -9,18 +9,24 @@ class StockInventory(models.Model): _inherit = 'stock.inventory' @api.model - def _get_locations_open_inventories(self): - """IDs of location in open exhaustive inventories, with children""" - inventories = self.search([('state', '=', 'confirm')]) + def _get_locations_open_inventories(self, locations_ids=None): + """IDs of locations in open exhaustive inventories, with children""" + inventory_domain = [('state', '=', 'confirm')] + if locations_ids: + inventory_domain.append(('location_id', 'child_of', locations_ids)) + inventories = self.search(inventory_domain) if not inventories: # Early exit if no match found return [] location_ids = inventories.mapped('location_id') # Extend to the children Locations - return self.env['stock.location'].search( - [('location_id', 'child_of', location_ids.ids), - ('usage', 'in', ['internal', 'transit'])]) + location_domain = [ + ('location_id', 'child_of', location_ids.ids), + ('usage', 'in', ['internal', 'transit'])] + if locations_ids: + location_domain.append(('location_id', 'child_of', locations_ids)) + return self.env['stock.location'].search(location_domain) @api.multi def action_done(self): diff --git a/stock_inventory_lockdown/models/stock_location.py b/stock_inventory_lockdown/models/stock_location.py index a15b8210f..574ac2866 100644 --- a/stock_inventory_lockdown/models/stock_location.py +++ b/stock_inventory_lockdown/models/stock_location.py @@ -14,13 +14,12 @@ class StockLocation(models.Model): @api.multi def _check_inventory(self): """Error if an inventory is being conducted here""" - location_inventory_open_ids = self.env['stock.inventory'].sudo( - )._get_locations_open_inventories() - for location in self: - if location in location_inventory_open_ids: - raise ValidationError( - _('An inventory is being conducted at this ' - 'location')) + location_inventory_open_ids = self.env['stock.inventory'].sudo().\ + _get_locations_open_inventories(self.ids) + if location_inventory_open_ids: + raise ValidationError( + _('An inventory is being conducted at this ' + 'location')) @api.multi def write(self, vals): diff --git a/stock_inventory_lockdown/models/stock_quant.py b/stock_inventory_lockdown/models/stock_quant.py index ed3dbb3ad..5cec98a4b 100644 --- a/stock_inventory_lockdown/models/stock_quant.py +++ b/stock_inventory_lockdown/models/stock_quant.py @@ -20,26 +20,19 @@ class StockQuant(models.Model): """ if not self.env.context.get('bypass_lockdown', False): # Find the locked locations - locked_location_ids = self.env[ - 'stock.inventory']._get_locations_open_inventories() - if locked_location_ids and 'location_id' in vals.keys(): - messages = set() - # Find the destination locations - location_dest_id = self.env['stock.location'].browse( - vals['location_id']) - for quant in self: - # Source locations - location_id = quant.location_id - # Moving to a location locked down - if location_dest_id in locked_location_ids: - messages.add(location_dest_id.name) - # Moving from a location locked down - if location_id in locked_location_ids: - messages.add(location_id.name) - if len(messages): - raise ValidationError( - _('An inventory is being conducted at the following ' - 'location(s):\n%s') % "\n - ".join(messages)) + locked_location_ids = [] + if 'location_id' in vals.keys(): + locked_location_ids = self.env[ + 'stock.inventory']._get_locations_open_inventories( + self.env['stock.location'].browse( + vals['location_id']).ids + self.mapped( + 'location_id').ids + ) + if locked_location_ids: + location_names = locked_location_ids.mapped('name') + raise ValidationError( + _('An inventory is being conducted at the following ' + 'location(s):\n%s') % "\n - ".join(location_names)) return super(StockQuant, self).write(vals) @api.model @@ -49,9 +42,9 @@ class StockQuant(models.Model): """ quant = super(StockQuant, self).create(vals) if not self.env.context.get('bypass_lockdown', False): - locked_location_ids = self.env[ - 'stock.inventory']._get_locations_open_inventories() - if quant.location_id in locked_location_ids: + locked_location_ids = self.env['stock.inventory'].\ + _get_locations_open_inventories(quant.location_id.ids) + if locked_location_ids: raise ValidationError( _('An inventory is being conducted at the following ' 'location(s):\n%s') % " - " + quant.location_id.name) diff --git a/stock_inventory_lockdown/tests/test_stock_inventory_lockdown.py b/stock_inventory_lockdown/tests/test_stock_inventory_lockdown.py index 905aad629..cfcb7dfeb 100644 --- a/stock_inventory_lockdown/tests/test_stock_inventory_lockdown.py +++ b/stock_inventory_lockdown/tests/test_stock_inventory_lockdown.py @@ -4,7 +4,6 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from openerp.exceptions import ValidationError - from openerp.addons.stock.tests.common import TestStockCommon