Files
stock-logistics-warehouse/stock_inventory_lockdown/models/stock_move.py
Jordi Ballester 1b387a743b refactor the module to perform lockdown validations using constraint
in stock move instead of checks in quants. This will allow for a more
 robust lockdown, and still make it possible to perform inventory adjustments
 in the locked location. Also resolves an outstanding issue related to the
 previous design not allowing inventory adjustments where negative quants existed.
2017-08-28 14:13:49 +02:00

27 lines
1.1 KiB
Python

# -*- coding: utf-8 -*-
# © 2016 Numérigraphe SARL
# Copyright 2017 Eficent Business and IT Consulting Services S.L.
# (http://www.eficent.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import api, models, _
from openerp.exceptions import ValidationError
class StockMove(models.Model):
_inherit = 'stock.move'
@api.constrains('location_dest_id', 'location_id', 'state')
def _check_locked_location(self):
for move in self.filtered(lambda m: m.state != 'draft'):
locked_location_ids = self.env[
'stock.inventory']._get_locations_open_inventories(
[move.location_dest_id.id, move.location_id.id])
if (locked_location_ids and
move.product_id.property_stock_inventory not in [
move.location_dest_id, move.location_id]):
location_names = locked_location_ids.mapped('complete_name')
raise ValidationError(
_('An inventory is being conducted at the following '
'location(s):\n%s') % "\n - ".join(location_names))