diff --git a/purchase.odt b/purchase.odt
index 420bbd0a4b..37fd688e28 100644
Binary files a/purchase.odt and b/purchase.odt differ
diff --git a/purchase.py b/purchase.py
index c0a34feae2..5fe5b964b4 100644
--- a/purchase.py
+++ b/purchase.py
@@ -534,6 +534,7 @@ class PurchaseLine(OSV):
('title', 'Title'),
], 'Type', select=1, required=True)
quantity = fields.Float('Quantity',
+ digits="(16, unit_digits)",
states={
'invisible': "type != 'line'",
'required': "type == 'line'",
@@ -543,6 +544,8 @@ class PurchaseLine(OSV):
'required': "product",
'invisible': "type != 'line'",
}, domain="[('category', '=', (product, 'product'))]")
+ unit_digits = fields.Function('get_unit_digits', type='integer',
+ string='Unit Digits', on_change_with=['unit'])
product = fields.Many2One('product.product', 'Product',
domain=[('purchasable', '=', True)],
states={
@@ -639,6 +642,22 @@ class PurchaseLine(OSV):
res[line.id] = val
return res
+ def on_change_with_unit_digits(self, cursor, user, ids, vals,
+ context=None):
+ uom_obj = self.pool.get('product.uom')
+ if vals.get('unit'):
+ uom = uom_obj.browse(cursor, user, vals['unit'],
+ context=context)
+ return uom.digits
+ return 2
+
+ def get_unit_digits(self, cursor, user, ids, name, arg, context=None):
+ res = {}
+ for line in self.browse(cursor, user, ids, context=context):
+ if line.unit:
+ res[line.id] = line.unit.digits
+ return res
+
def on_change_product(self, cursor, user, ids, vals, context=None):
party_obj = self.pool.get('relationship.party')
product_obj = self.pool.get('product.product')
@@ -688,6 +707,7 @@ class PurchaseLine(OSV):
or vals.get('unit') not in [x.id for x in category.uoms]:
res['unit'] = uom_obj.name_get(cursor, user, product.default_uom.id,
context=context)[0]
+ res['unit_digits'] = product.default_uom.digits
return res
def on_change_with_amount(self, cursor, user, ids, vals, context=None):
diff --git a/purchase.xml b/purchase.xml
index c4bbfa4056..83766be7ad 100644
--- a/purchase.xml
+++ b/purchase.xml
@@ -47,6 +47,7 @@
+
@@ -568,6 +569,7 @@
+
]]>
@@ -588,6 +590,7 @@
+
]]>