diff --git a/openerp/addons/base/ir/ir_qweb.py b/openerp/addons/base/ir/ir_qweb.py index cb5e741b409..609f527d7dc 100644 --- a/openerp/addons/base/ir/ir_qweb.py +++ b/openerp/addons/base/ir/ir_qweb.py @@ -554,6 +554,8 @@ class CurrencyConverter(osv.AbstractModel): _inherit = 'ir.qweb.field' def record_to_html(self, cr, uid, field_name, record, column, options): + Currency = self.pool['res.currency'] + symbol_pre = symbol_post = space_pre = space_post = u'' currency = record[options['currency']] if currency.position == 'before': @@ -566,7 +568,7 @@ class CurrencyConverter(osv.AbstractModel): return u'{symbol_pre}{space_pre}' \ u'{0}' \ u'{space_post}{symbol_post}'.format( - record[field_name], + Currency.round(cr, uid, currency, record[field_name]), space_pre=space_pre, symbol_pre=symbol_pre, space_post=space_post, diff --git a/openerp/tests/addons/test_converter/tests/test_html.py b/openerp/tests/addons/test_converter/tests/test_html.py index f36333487f7..026cfae7f3c 100644 --- a/openerp/tests/addons/test_converter/tests/test_html.py +++ b/openerp/tests/addons/test_converter/tests/test_html.py @@ -132,6 +132,25 @@ class TestCurrencyExport(TestExport): symbol=currency.symbol.encode('utf-8') ),) + def test_currency_precision(self): + """ Precision should be the currency's, not the float field's + """ + currency = self.create(self.Currency, name="Test", symbol=u"test",) + obj = self.create(self.Model, value=0.1234567, currency_id=currency.id) + + converted = self.convert(obj) + + self.assertEqual( + converted, + '' + '0.12' + ' {symbol}'.format( + obj=obj, + symbol=currency.symbol.encode('utf-8') + ),) + class TestTextExport(TestBasicExport): def test_text(self): converter = self.get_converter('text')