diff --git a/addons/product/product.py b/addons/product/product.py
index 1fa97b291f8..8546f764ce6 100644
--- a/addons/product/product.py
+++ b/addons/product/product.py
@@ -53,16 +53,43 @@ product_uom_categ()
class product_uom(osv.osv):
_name = 'product.uom'
_description = 'Product Unit of Measure'
+
+ def _factor(self, cursor, user, ids, name, arg, context):
+ res = {}
+ for uom in self.browse(cursor, user, ids, context=context):
+ if uom.factor:
+ res[uom.id] = round(1 / uom.factor, 4)
+ else:
+ res[uom.id] = 0.0
+ return res
+
+ def _factor_inv(self, cursor, user, id, name, value, arg, context):
+ ctx = context.copy()
+ if 'read_delta' in ctx:
+ del ctx['read_delta']
+ if value:
+ self.write(cursor, user, id, {'factor': round(1/value, 6)},
+ context=ctx)
+ else:
+ self.write(cursor, user, id, {'factor': 0.0}, context=ctx)
+
_columns = {
'name': fields.char('Name', size=64, required=True),
'category_id': fields.many2one('product.uom.categ', 'UOM Category', required=True, ondelete='cascade'),
- 'factor': fields.float('Factor', digits=(12, 6), required=True),
+ 'factor': fields.float('Rate', digits=(12, 6), required=True,
+ help='The coefficient for the formula:\n' \
+ '1 (base unit) = coef (this unit)'),
+ 'factor_inv': fields.function(_factor, fnct_inv=_factor_inv, digits=(12, 4),
+ method=True, string='Factor',
+ help='The coefficient for the formula:\n' \
+ 'coef (base unit) = 1 (this unit)'),
'rounding': fields.float('Rounding Precision', digits=(16, 3), required=True),
'active': fields.boolean('Active'),
}
_defaults = {
'factor': lambda *a: 1.0,
+ 'factor_inv': lambda *a: 1.0,
'active': lambda *a: 1,
'rounding': lambda *a: 0.01,
}
@@ -97,6 +124,12 @@ class product_uom(osv.osv):
amount = amount / to_unit.factor
return amount
+ def onchange_factor_inv(self, cursor, user, ids, value):
+ return {'value': {'factor': round(1/value, 6)}}
+
+ def onchange_factor(self, cursor, user, ids, value):
+ return {'value': {'factor_inv': round(1/value, 4)}}
+
product_uom()
diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml
index 391f84aa662..d3bd9637a6f 100644
--- a/addons/product/product_view.xml
+++ b/addons/product/product_view.xml
@@ -326,7 +326,8 @@
-
+
+
@@ -339,8 +340,8 @@