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')