diff options
| author | Christophe Simonis <chs@odoo.com> | 2018-04-16 18:34:56 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2018-04-16 18:34:56 +0200 |
| commit | 5f2d080cf85d54bc52895f9dbc4075b10989d324 (patch) | |
| tree | c925509b609fb07f6fbef8896710b756c3c6a86f /odoo/addons/base | |
| parent | 026be48ccbbb15daefda070697b135f089f49564 (diff) | |
| parent | ad825b673b57344a6a1571234f62a0b3aa543bf7 (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.xml | 2 | ||||
| -rw-r--r-- | odoo/addons/base/data/res_currency_data.xml | 8 | ||||
| -rw-r--r-- | odoo/addons/base/data/res_currency_rate_demo.xml | 6 | ||||
| -rw-r--r-- | odoo/addons/base/models/ir_module.py | 2 | ||||
| -rw-r--r-- | odoo/addons/base/models/res_currency.py | 13 | ||||
| -rw-r--r-- | odoo/addons/base/tests/test_float.py | 9 |
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") |
