[FIX] stock: correctly check UoM and Locations modifications

This commit is contained in:
Christophe Simonis
2018-06-27 20:13:37 +02:00
parent bb78b7608a
commit d44a4df863
2 changed files with 17 additions and 13 deletions
+14 -10
View File
@@ -591,15 +591,19 @@ class ProductUoM(models.Model):
def write(self, values):
# Users can not update the factor if open stock moves are based on it
if 'factor' in values or 'factor_inv' in values or 'category_id' in values:
stock_move_lines = self.env['stock.move.line'].search_count([
('product_uom_id.category_id', '=', self.category_id.id),
('state', '!=', 'cancel'),
])
changed = self.filtered(
lambda u: any(u[f] != values[f] if f in values else False
for f in {'factor', 'factor_inv', 'category_id'}))
if changed:
stock_move_lines = self.env['stock.move.line'].search_count([
('product_uom_id.category_id', 'in', changed.mapped('category_id.id')),
('state', '!=', 'cancel'),
])
if stock_move_lines:
raise UserError(_(
"You cannot change the ratio of this unit of mesure as some"
" products with this UoM have already been moved or are "
"currently reserved."
))
if stock_move_lines:
raise UserError(_(
"You cannot change the ratio of this unit of mesure as some"
" products with this UoM have already been moved or are "
"currently reserved."
))
return super(ProductUoM, self).write(values)
+3 -3
View File
@@ -84,10 +84,10 @@ class Location(models.Model):
if self.mapped('quant_ids'):
raise UserError(_("This location's usage cannot be changed to view as it contains products."))
if 'usage' in values or 'scrap_location' in values:
modified_locations = self.filtered(
lambda l: l.usage != values.get('usage') or
l.scrap_location != values.get('scrap_location')
)
lambda l: any(l[f] != values[f] if f in values else False
for f in {'usage', 'scrap_location'}))
reserved_quantities = self.env['stock.move.line'].search_count([
('location_id', 'in', modified_locations.ids),
('product_qty', '>', 0),