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 @@ + ]]>