From 7dae48e0fd4c260eb36cbd41a60a9597a7c2ff3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 26 Aug 2008 19:05:47 +0200 Subject: [PATCH] Add unit_digits and use it Add domain on uom for only uom of the same category than the default on product. --- move.py | 25 ++++++++++++++++++++++--- move.xml | 2 ++ packing_out.odt | Bin 8868 -> 8878 bytes 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/move.py b/move.py index 8187158632..67e32635aa 100644 --- a/move.py +++ b/move.py @@ -18,9 +18,12 @@ class Move(OSV): select=1, states=STATES, on_change=['product', 'type', 'currency', 'uom', 'company'], domain=[('type', '!=', 'service')]) - uom = fields.Many2One("product.uom", "Uom", required=True, states=STATES) - quantity = fields.Float("Quantity", digits=(12, 6), required=True, - states=STATES) + uom = fields.Many2One("product.uom", "Uom", required=True, states=STATES, + domain="[('category', '=', (product, 'product'))]") + unit_digits = fields.Function('get_unit_digits', type='integer', + string='Unit Digits', on_change_with=['uom']) + quantity = fields.Float("Quantity", required=True, + digits="(16, unit_digits)", states=STATES) from_location = fields.Many2One("stock.location", "From Location", select=1, required=True, states=STATES, domain=[('type', '!=', 'warehouse')], @@ -147,6 +150,21 @@ class Move(OSV): res[move.id] = 'output' 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 move in self.browse(cursor, user, ids, context=context): + res[move.id] = move.uom.digits + return res + def on_change_product(self, cursor, user, ids, vals, context=None): product_obj = self.pool.get('product.product') uom_obj = self.pool.get('product.uom') @@ -160,6 +178,7 @@ class Move(OSV): context=context) res['uom'] = uom_obj.name_get(cursor, user, product.default_uom.id, context=context)[0] + res['unit_digits'] = product.default_uom.digits if vals.get('type', 'internal') == 'input': unit_price = product.cost_price if vals.get('uom') and vals['uom'] != product.default_uom.id: diff --git a/move.xml b/move.xml index 1bd8985d9f..28d695abbc 100644 --- a/move.xml +++ b/move.xml @@ -48,6 +48,7 @@ + ]]> @@ -64,6 +65,7 @@ + ]]> diff --git a/packing_out.odt b/packing_out.odt index c9b55b4d46ed5199725275f114907f1278ae7ab8..faa042946099b27a245c442759c9b54e1d266be7 100644 GIT binary patch delta 3818 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