diff --git a/src/sakia/money/quant_zerosum.py b/src/sakia/money/quant_zerosum.py index 61ddf32eeb8052b9fad76380d9c6082552980a1b..a1a95205425cc06a0038cc7fe87572eac0f4a54f 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 5fe5fb49014ca16307b30a2cbcc365b3eb5aa670..ea7aa4690319392ddf8d32a005a226528c5cd4dd 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 a17318c5b995a88801a2cccdd2dc0211acf5eb61..e8cf769ad8d349cf270aa5f1b7168033433e8370 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 81d2c5a535beef958c308f14629a4de9ebf714d5..7f3931fe504a492959c1af910f2f19f84cdef6c7 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³"