From 7bd5488238eeb6b34aafb78b2916c04ad45b29f2 Mon Sep 17 00:00:00 2001 From: inso <insomniak.fr@gmail.com> Date: Mon, 9 Jan 2017 18:06:53 +0100 Subject: [PATCH] Display quantitative with cents --- src/sakia/money/quant_zerosum.py | 4 +-- src/sakia/money/quantitative.py | 20 +++++-------- .../unit/core/money/test_quantitative.py | 28 +++++++++---------- .../unit/core/money/test_quantitative_zsum.py | 24 ++++++++-------- 4 files changed, 35 insertions(+), 41 deletions(-) diff --git a/src/sakia/money/quant_zerosum.py b/src/sakia/money/quant_zerosum.py index 61ddf32e..a1a95205 100644 --- a/src/sakia/money/quant_zerosum.py +++ b/src/sakia/money/quant_zerosum.py @@ -75,7 +75,7 @@ class QuantitativeZSum(BaseReferential): average = int(monetary_mass / last_members_count) else: average = 0 - return self.amount - average + return (self.amount - average)/100 def differential(self): return Quantitative(self.amount, self.currency, self.app).value() @@ -87,7 +87,7 @@ class QuantitativeZSum(BaseReferential): if international_system: localized_value, prefix = Quantitative.to_si(value, self.app.parameters.digits_after_comma) else: - localized_value = QLocale().toString(float(value), 'f', 0) + localized_value = QLocale().toString(float(value), 'f', 2) if units or international_system: return QCoreApplication.translate("QuantitativeZSum", diff --git a/src/sakia/money/quantitative.py b/src/sakia/money/quantitative.py index 5fe5fb49..ea7aa469 100644 --- a/src/sakia/money/quantitative.py +++ b/src/sakia/money/quantitative.py @@ -50,7 +50,7 @@ class Quantitative(BaseReferential): :param sakia.core.community.Community community: Community instance :return: int """ - return int(self.amount) + return int(self.amount) / 100 def differential(self): return self.value() @@ -66,12 +66,6 @@ class Quantitative(BaseReferential): for n in range(4, 10): unicodes[str(n)] = ord('\u2070') + n - exponent = 0 - scientific_value = value - while scientific_value > 1000: - exponent += 3 - scientific_value /= 1000 - if value < 0: value = -value multiplier = -1 @@ -81,7 +75,7 @@ class Quantitative(BaseReferential): scientific_value = value exponent = 0 - while scientific_value > 1000: + while scientific_value > 1000 and int(scientific_value) * 10**exponent == scientific_value: exponent += 3 scientific_value /= 1000 @@ -89,7 +83,7 @@ class Quantitative(BaseReferential): localized_value = QLocale().toString(float(scientific_value * multiplier), 'f', digits) power_of_10 = "x10" + "".join([chr(unicodes[e]) for e in str(exponent)]) else: - localized_value = QLocale().toString(float(value * multiplier), 'f', 0) + localized_value = QLocale().toString(float(value * multiplier), 'f', 2) power_of_10 = "" return localized_value, power_of_10 @@ -98,9 +92,9 @@ class Quantitative(BaseReferential): value = self.value() prefix = "" if international_system: - localized_value, prefix = Quantitative.to_si(value, self.app.parameters.digits_after_comma) + localized_value, prefix = Quantitative.to_si(value, 2) else: - localized_value = QLocale().toString(float(value), 'f', 0) + localized_value = QLocale().toString(float(value), 'f', 2) if units or international_system: return QCoreApplication.translate("Quantitative", @@ -115,9 +109,9 @@ class Quantitative(BaseReferential): value = self.differential() prefix = "" if international_system: - localized_value, prefix = Quantitative.to_si(value, self.app.parameters.digits_after_comma) + localized_value, prefix = Quantitative.to_si(value, 2) else: - localized_value = QLocale().toString(float(value), 'f', 0) + localized_value = QLocale().toString(float(value), 'f', 2) if units or international_system: return QCoreApplication.translate("Quantitative", diff --git a/src/sakia/tests/unit/core/money/test_quantitative.py b/src/sakia/tests/unit/core/money/test_quantitative.py index a17318c5..e8cf769a 100644 --- a/src/sakia/tests/unit/core/money/test_quantitative.py +++ b/src/sakia/tests/unit/core/money/test_quantitative.py @@ -14,64 +14,64 @@ def test_diff_units(application_with_one_connection, bob): def test_value(application_with_one_connection, bob): referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) value = referential.value() - assert value == 101010110 + assert value == 1010101.10 def test_differential(application_with_one_connection, bob): referential = Quantitative(110, bob.currency, application_with_one_connection, None) value = referential.value() - assert value == 110 + assert value == 1.10 def test_localized_no_si(application_with_one_connection, bob): referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) value = referential.localized(units=True) - assert value == "101,010,110 TC" + assert value == "1,010,101.10 TC" def test_localized_with_si(application_with_one_connection, bob): application_with_one_connection.parameters.digits_after_comma = 6 - referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) + referential = Quantitative(101000000, bob.currency, application_with_one_connection, None) value = referential.localized(units=True, international_system=True) - assert value == "101.010110 x10â¶ TC" + assert value == "1,010.00 x10³ TC" def test_localized_no_units_no_si(application_with_one_connection, bob): application_with_one_connection.parameters.digits_after_comma = 6 referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) value = referential.localized(units=False, international_system=False) - assert value == "101,010,110" + assert value == "1,010,101.10" def test_localized_no_units_with_si(application_with_one_connection, bob): application_with_one_connection.parameters.digits_after_comma = 6 - referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) + referential = Quantitative(101000000, bob.currency, application_with_one_connection, None) value = referential.localized(units=False, international_system=True) - assert value == "101.010110 x10â¶" + assert value == "1,010.00 x10³" def test_diff_localized_no_si(application_with_one_connection, bob): referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) value = referential.diff_localized(units=True) - assert value == "101,010,110 TC" + assert value == "1,010,101.10 TC" def test_diff_localized_with_si(application_with_one_connection, bob): application_with_one_connection.parameters.digits_after_comma = 6 - referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) + referential = Quantitative(101000000, bob.currency, application_with_one_connection, None) value = referential.diff_localized(units=True, international_system=True) - assert value == "101.010110 x10â¶ TC" + assert value == "1,010.00 x10³ TC" def test_diff_localized_no_units_no_si(application_with_one_connection, bob): application_with_one_connection.parameters.digits_after_comma = 6 referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) value = referential.diff_localized(units=False, international_system=False) - assert value == "101,010,110" + assert value == "1,010,101.10" def test_diff_localized_no_units_with_si(application_with_one_connection, bob): application_with_one_connection.parameters.digits_after_comma = 6 - referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) + referential = Quantitative(101000000, bob.currency, application_with_one_connection, None) value = referential.diff_localized(units=False, international_system=True) - assert value == "101.010110 x10â¶" + assert value == "1,010.00 x10³" diff --git a/src/sakia/tests/unit/core/money/test_quantitative_zsum.py b/src/sakia/tests/unit/core/money/test_quantitative_zsum.py index 81d2c5a5..7f3931fe 100644 --- a/src/sakia/tests/unit/core/money/test_quantitative_zsum.py +++ b/src/sakia/tests/unit/core/money/test_quantitative_zsum.py @@ -14,64 +14,64 @@ def test_diff_units(application_with_one_connection, bob): def test_value(application_with_one_connection, bob): referential = QuantitativeZSum(110, bob.currency, application_with_one_connection, None) value = referential.value() - assert value == -1079 + assert value == -10.79 def test_differential(application_with_one_connection, bob): referential = QuantitativeZSum(110, bob.currency, application_with_one_connection, None) value = referential.value() - assert value == -1079 + assert value == -10.79 def test_localized_no_si(application_with_one_connection, bob): referential = QuantitativeZSum(110, bob.currency, application_with_one_connection, None) value = referential.localized(units=True) - assert value == "-1,079 Q0 TC" + assert value == "-10.79 Q0 TC" def test_localized_with_si(application_with_one_connection, bob): application_with_one_connection.parameters.digits_after_comma = 6 referential = QuantitativeZSum(110 * 1000, bob.currency, application_with_one_connection, None) value = referential.localized(units=True, international_system=True) - assert value == "108.811000 x10³ Q0 TC" + assert value == "1,088.11 Q0 TC" def test_localized_no_units_no_si(application_with_one_connection, bob): application_with_one_connection.parameters.digits_after_comma = 6 referential = QuantitativeZSum(110, bob.currency, application_with_one_connection, None) value = referential.localized(units=False, international_system=False) - assert value == "-1,079" + assert value == "-10.79" def test_localized_no_units_with_si(application_with_one_connection, bob): application_with_one_connection.parameters.digits_after_comma = 6 referential = QuantitativeZSum(110 * 1000, bob.currency, application_with_one_connection, None) value = referential.localized(units=False, international_system=True) - assert value == "108.811000 x10³ Q0" + assert value == "1,088.11 Q0" def test_diff_localized_no_si(application_with_one_connection, bob): referential = QuantitativeZSum(110 * 1000, bob.currency, application_with_one_connection, None) value = referential.diff_localized(units=True) - assert value == "110,000 TC" + assert value == "1,100.00 TC" def test_diff_localized_with_si(application_with_one_connection, bob): application_with_one_connection.parameters.digits_after_comma = 6 - referential = QuantitativeZSum(101010110, bob.currency, application_with_one_connection, None) + referential = QuantitativeZSum(101000000, bob.currency, application_with_one_connection, None) value = referential.diff_localized(units=True, international_system=True) - assert value == "101.010110 x10â¶ TC" + assert value == "1,010.00 x10³ TC" def test_diff_localized_no_units_no_si(application_with_one_connection, bob): application_with_one_connection.parameters.digits_after_comma = 6 referential = QuantitativeZSum(101010110, bob.currency, application_with_one_connection, None) value = referential.diff_localized(units=False, international_system=False) - assert value == "101,010,110" + assert value == "1,010,101.10" def test_diff_localized_no_units_with_si(application_with_one_connection, bob): application_with_one_connection.parameters.digits_after_comma = 6 - referential = QuantitativeZSum(101010110, bob.currency, application_with_one_connection, None) + referential = QuantitativeZSum(101000000, bob.currency, application_with_one_connection, None) value = referential.diff_localized(units=False, international_system=True) - assert value == "101.010110 x10â¶" + assert value == "1,010.00 x10³" -- GitLab