diff --git a/addons/product/product.py b/addons/product/product.py index fa35591c0b4..9025f46602f 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -715,6 +715,13 @@ class product_template(osv.osv): ''' Store the standard price change in order to be able to retrieve the cost of a product template for a given date''' if isinstance(ids, (int, long)): ids = [ids] + if 'uom_id' in vals: + new_uom = self.pool.get('product.uom').browse(cr, uid, vals['uom_id'], context=context) + for product in self.browse(cr, uid, ids, context=context): + old_uom = product.uom_id + if old_uom != new_uom: + if self.pool.get('stock.move').search(cr, uid, [('product_id', 'in', [x.id for x in product.product_variant_ids]), ('state', '!=', 'cancel')], context=context): + raise osv.except_osv(_('Unit of Measure can not be changed anymore!'), _("As there are existing stock moves of this product, you can not change the Unit of Measurement anymore. ")) if 'standard_price' in vals: for prod_template_id in ids: self._set_standard_price(cr, uid, prod_template_id, vals['standard_price'], context=context) @@ -767,7 +774,7 @@ class product_template(osv.osv): return True _constraints = [ - (_check_uom, 'Error: The default Unit of Measure and the purchase Unit of Measure must be in the same category.', ['uom_id']), + (_check_uom, 'Error: The default Unit of Measure and the purchase Unit of Measure must be in the same category.', ['uom_id', 'uom_po_id']), ] def name_get(self, cr, user, ids, context=None):