summaryrefslogtreecommitdiff
path: root/odoo/addons/base
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-04-16 18:34:56 +0200
committerChristophe Simonis <chs@odoo.com>2018-04-16 18:34:56 +0200
commit5f2d080cf85d54bc52895f9dbc4075b10989d324 (patch)
treec925509b609fb07f6fbef8896710b756c3c6a86f /odoo/addons/base
parent026be48ccbbb15daefda070697b135f089f49564 (diff)
parentad825b673b57344a6a1571234f62a0b3aa543bf7 (diff)
[MERGE] forward port branch 11.0 up to ad825b673b5
Diffstat (limited to 'odoo/addons/base')
-rw-r--r--odoo/addons/base/data/res_country_data.xml2
-rw-r--r--odoo/addons/base/data/res_currency_data.xml8
-rw-r--r--odoo/addons/base/data/res_currency_rate_demo.xml6
-rw-r--r--odoo/addons/base/models/ir_module.py2
-rw-r--r--odoo/addons/base/models/res_currency.py13
-rw-r--r--odoo/addons/base/tests/test_float.py9
6 files changed, 33 insertions, 7 deletions
diff --git a/odoo/addons/base/data/res_country_data.xml b/odoo/addons/base/data/res_country_data.xml
index fdbb6fff9f2..db41e2370ce 100644
--- a/odoo/addons/base/data/res_country_data.xml
+++ b/odoo/addons/base/data/res_country_data.xml
@@ -1399,7 +1399,7 @@
<field name="name">Sudan</field>
<field name="code">sd</field>
<field file="base/static/img/country_flags/sd.png" name="image" type="base64" />
- <field name="currency_id" ref="SDD" />
+ <field name="currency_id" ref="SDG" />
<field eval="249" name="phone_code" />
</record>
<record id="se" model="res.country">
diff --git a/odoo/addons/base/data/res_currency_data.xml b/odoo/addons/base/data/res_currency_data.xml
index 6e2d8cf5dc8..d9c56dfe558 100644
--- a/odoo/addons/base/data/res_currency_data.xml
+++ b/odoo/addons/base/data/res_currency_data.xml
@@ -1292,6 +1292,7 @@
<field name="currency_subunit_label">Cents</field>
</record>
+ <!-- no longer in use since 2007 -->
<record id="SDD" model="res.currency">
<field name="name">SDD</field>
<field name="symbol">£Sd</field>
@@ -1301,6 +1302,13 @@
<field name="currency_subunit_label">Fils</field>
</record>
+ <record id="SDG" model="res.currency">
+ <field name="name">SDG</field>
+ <field name="symbol">ج.س.</field>
+ <field name="rounding">0.01</field>
+ <field name="active" eval="False"/>
+ </record>
+
<record id="LKR" model="res.currency">
<field name="name">LKR</field>
<field name="symbol">Rs</field>
diff --git a/odoo/addons/base/data/res_currency_rate_demo.xml b/odoo/addons/base/data/res_currency_rate_demo.xml
index 220e7849668..99fcdcf05f7 100644
--- a/odoo/addons/base/data/res_currency_rate_demo.xml
+++ b/odoo/addons/base/data/res_currency_rate_demo.xml
@@ -871,6 +871,12 @@
<field name="rate">544.44</field>
</record>
+ <record forcecreate="0" id="rateSDG" model="res.currency.rate">
+ <field name="currency_id" ref="SDG" />
+ <field name="name">2010-01-01</field>
+ <field name="rate">3.1999</field>
+ </record>
+
<record forcecreate="0" id="rateLKR" model="res.currency.rate">
<field name="currency_id" ref="LKR" />
<field name="name">2010-01-01</field>
diff --git a/odoo/addons/base/models/ir_module.py b/odoo/addons/base/models/ir_module.py
index 073eedfb535..a330b7d3dd3 100644
--- a/odoo/addons/base/models/ir_module.py
+++ b/odoo/addons/base/models/ir_module.py
@@ -676,7 +676,7 @@ class Module(models.Model):
res = [0, 0] # [update, add]
default_version = modules.adapt_version('1.0')
- known_mods = self.search([])
+ known_mods = self.with_context(lang=None).search([])
known_mods_names = {mod.name: mod for mod in known_mods}
# iterate through detected modules and update/create them in db
diff --git a/odoo/addons/base/models/res_currency.py b/odoo/addons/base/models/res_currency.py
index 54b4d106120..509bb548ecc 100644
--- a/odoo/addons/base/models/res_currency.py
+++ b/odoo/addons/base/models/res_currency.py
@@ -101,17 +101,20 @@ class Currency(models.Model):
logging.getLogger(__name__).warning("The library 'num2words' is missing, cannot render textual amounts.")
return ""
- fractional_value, integer_value = math.modf(amount)
- fractional_amount = round(abs(fractional_value), self.decimal_places) * (math.pow(10, self.decimal_places))
+ formatted = "%.{0}f".format(self.decimal_places) % amount
+ parts = formatted.partition('.')
+ integer_value = int(parts[0])
+ fractional_value = int(parts[2] or 0)
+
lang_code = self.env.context.get('lang') or self.env.user.lang
lang = self.env['res.lang'].search([('code', '=', lang_code)])
amount_words = tools.ustr('{amt_value} {amt_word}').format(
- amt_value=_num2words(int(integer_value), lang=lang.iso_code),
+ amt_value=_num2words(integer_value, lang=lang.iso_code),
amt_word=self.currency_unit_label,
)
- if not self.is_zero(fractional_value):
+ if not self.is_zero(amount - integer_value):
amount_words += ' ' + _('and') + tools.ustr(' {amt_value} {amt_word}').format(
- amt_value=_num2words(int(fractional_amount), lang=lang.iso_code),
+ amt_value=_num2words(fractional_value, lang=lang.iso_code),
amt_word=self.currency_subunit_label,
)
return amount_words
diff --git a/odoo/addons/base/tests/test_float.py b/odoo/addons/base/tests/test_float.py
index 6e42f8adf1d..a5f91982303 100644
--- a/odoo/addons/base/tests/test_float.py
+++ b/odoo/addons/base/tests/test_float.py
@@ -206,3 +206,12 @@ class TestFloatPrecision(TransactionCase):
with self.assertRaises(AssertionError):
float_round(0.01, precision_digits=3, precision_rounding=0.01)
+
+ def test_amount_to_text_10(self):
+ """ verify that amount_to_text works as expected """
+ currency = self.env.ref('base.EUR')
+
+ amount_target = currency.amount_to_text(0.29)
+ amount_test = currency.amount_to_text(0.28)
+ self.assertNotEqual(amount_test, amount_target,
+ "Amount in text should not depend on float representation")