From 2a86e9245c91d6564257aad4ed69673576f10918 Mon Sep 17 00:00:00 2001 From: "Lucas Perais (lpe)" Date: Fri, 1 Dec 2017 11:35:03 +0100 Subject: [FIX][BACKPORT] Always round monetary values in database backport of afef71d6b92a2741ab56b4d039eba1624a45197f Original commit message: Let `create` and `write` round monetary field values before sending them to the database. Pass the values to be written to `field.convert_to_column`, so that the currency can be retrieved from the values, and the value be rounded. --- odoo/models.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'odoo/models.py') diff --git a/odoo/models.py b/odoo/models.py index 595250b54f2..387f4a1cfcb 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -3584,7 +3584,7 @@ class BaseModel(object): if field.column_type: if single_lang or not (has_trans and field.translate is True): # val is not a translation: update the table - val = field.convert_to_column(val, self) + val = field.convert_to_column(val, self, vals) updates.append((name, field.column_format, val)) direct.append(name) else: @@ -3624,7 +3624,7 @@ class BaseModel(object): # Insert value to DB src_trans = vals[name] self.with_context(lang=None).write({name: src_trans}) - val = field.convert_to_column(vals[name], self) + val = field.convert_to_column(vals[name], self, vals) tname = "%s,%s" % (self._name, name) self.env['ir.translation']._set_ids( tname, 'model', self.env.lang, self.ids, val, src_trans) @@ -3848,7 +3848,7 @@ class BaseModel(object): parent_id = self.env[parent_model].create(parent_vals).id else: self.env[parent_model].browse(parent_id).write(parent_vals) - updates.append((self._inherits[parent_model], '%s', parent_id)) + vals[self._inherits[parent_model]] = parent_id # set boolean fields to False by default (to make search more powerful) for name, field in self._fields.iteritems(): @@ -3856,10 +3856,12 @@ class BaseModel(object): vals[name] = False # determine SQL values + self = self.browse() for name, val in vals.iteritems(): field = self._fields[name] if field.store and field.column_type: - updates.append((name, field.column_format, field.convert_to_column(val, self))) + column_val = field.convert_to_column(val, self, vals) + updates.append((name, field.column_format, column_val)) else: upd_todo.append(name) -- cgit v1.2.3