Skip to content
Snippets Groups Projects
Commit 7bd54882 authored by inso's avatar inso
Browse files

Display quantitative with cents

parent 3f9e54ac
Branches
Tags
No related merge requests found
...@@ -75,7 +75,7 @@ class QuantitativeZSum(BaseReferential): ...@@ -75,7 +75,7 @@ class QuantitativeZSum(BaseReferential):
average = int(monetary_mass / last_members_count) average = int(monetary_mass / last_members_count)
else: else:
average = 0 average = 0
return self.amount - average return (self.amount - average)/100
def differential(self): def differential(self):
return Quantitative(self.amount, self.currency, self.app).value() return Quantitative(self.amount, self.currency, self.app).value()
...@@ -87,7 +87,7 @@ class QuantitativeZSum(BaseReferential): ...@@ -87,7 +87,7 @@ class QuantitativeZSum(BaseReferential):
if international_system: if international_system:
localized_value, prefix = Quantitative.to_si(value, self.app.parameters.digits_after_comma) localized_value, prefix = Quantitative.to_si(value, self.app.parameters.digits_after_comma)
else: else:
localized_value = QLocale().toString(float(value), 'f', 0) localized_value = QLocale().toString(float(value), 'f', 2)
if units or international_system: if units or international_system:
return QCoreApplication.translate("QuantitativeZSum", return QCoreApplication.translate("QuantitativeZSum",
......
...@@ -50,7 +50,7 @@ class Quantitative(BaseReferential): ...@@ -50,7 +50,7 @@ class Quantitative(BaseReferential):
:param sakia.core.community.Community community: Community instance :param sakia.core.community.Community community: Community instance
:return: int :return: int
""" """
return int(self.amount) return int(self.amount) / 100
def differential(self): def differential(self):
return self.value() return self.value()
...@@ -66,12 +66,6 @@ class Quantitative(BaseReferential): ...@@ -66,12 +66,6 @@ class Quantitative(BaseReferential):
for n in range(4, 10): for n in range(4, 10):
unicodes[str(n)] = ord('\u2070') + n unicodes[str(n)] = ord('\u2070') + n
exponent = 0
scientific_value = value
while scientific_value > 1000:
exponent += 3
scientific_value /= 1000
if value < 0: if value < 0:
value = -value value = -value
multiplier = -1 multiplier = -1
...@@ -81,7 +75,7 @@ class Quantitative(BaseReferential): ...@@ -81,7 +75,7 @@ class Quantitative(BaseReferential):
scientific_value = value scientific_value = value
exponent = 0 exponent = 0
while scientific_value > 1000: while scientific_value > 1000 and int(scientific_value) * 10**exponent == scientific_value:
exponent += 3 exponent += 3
scientific_value /= 1000 scientific_value /= 1000
...@@ -89,7 +83,7 @@ class Quantitative(BaseReferential): ...@@ -89,7 +83,7 @@ class Quantitative(BaseReferential):
localized_value = QLocale().toString(float(scientific_value * multiplier), 'f', digits) localized_value = QLocale().toString(float(scientific_value * multiplier), 'f', digits)
power_of_10 = "x10" + "".join([chr(unicodes[e]) for e in str(exponent)]) power_of_10 = "x10" + "".join([chr(unicodes[e]) for e in str(exponent)])
else: else:
localized_value = QLocale().toString(float(value * multiplier), 'f', 0) localized_value = QLocale().toString(float(value * multiplier), 'f', 2)
power_of_10 = "" power_of_10 = ""
return localized_value, power_of_10 return localized_value, power_of_10
...@@ -98,9 +92,9 @@ class Quantitative(BaseReferential): ...@@ -98,9 +92,9 @@ class Quantitative(BaseReferential):
value = self.value() value = self.value()
prefix = "" prefix = ""
if international_system: 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: else:
localized_value = QLocale().toString(float(value), 'f', 0) localized_value = QLocale().toString(float(value), 'f', 2)
if units or international_system: if units or international_system:
return QCoreApplication.translate("Quantitative", return QCoreApplication.translate("Quantitative",
...@@ -115,9 +109,9 @@ class Quantitative(BaseReferential): ...@@ -115,9 +109,9 @@ class Quantitative(BaseReferential):
value = self.differential() value = self.differential()
prefix = "" prefix = ""
if international_system: 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: else:
localized_value = QLocale().toString(float(value), 'f', 0) localized_value = QLocale().toString(float(value), 'f', 2)
if units or international_system: if units or international_system:
return QCoreApplication.translate("Quantitative", return QCoreApplication.translate("Quantitative",
......
...@@ -14,64 +14,64 @@ def test_diff_units(application_with_one_connection, bob): ...@@ -14,64 +14,64 @@ def test_diff_units(application_with_one_connection, bob):
def test_value(application_with_one_connection, bob): def test_value(application_with_one_connection, bob):
referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) referential = Quantitative(101010110, bob.currency, application_with_one_connection, None)
value = referential.value() value = referential.value()
assert value == 101010110 assert value == 1010101.10
def test_differential(application_with_one_connection, bob): def test_differential(application_with_one_connection, bob):
referential = Quantitative(110, bob.currency, application_with_one_connection, None) referential = Quantitative(110, bob.currency, application_with_one_connection, None)
value = referential.value() value = referential.value()
assert value == 110 assert value == 1.10
def test_localized_no_si(application_with_one_connection, bob): def test_localized_no_si(application_with_one_connection, bob):
referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) referential = Quantitative(101010110, bob.currency, application_with_one_connection, None)
value = referential.localized(units=True) 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): def test_localized_with_si(application_with_one_connection, bob):
application_with_one_connection.parameters.digits_after_comma = 6 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) 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): def test_localized_no_units_no_si(application_with_one_connection, bob):
application_with_one_connection.parameters.digits_after_comma = 6 application_with_one_connection.parameters.digits_after_comma = 6
referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) referential = Quantitative(101010110, bob.currency, application_with_one_connection, None)
value = referential.localized(units=False, international_system=False) 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): def test_localized_no_units_with_si(application_with_one_connection, bob):
application_with_one_connection.parameters.digits_after_comma = 6 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) 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): def test_diff_localized_no_si(application_with_one_connection, bob):
referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) referential = Quantitative(101010110, bob.currency, application_with_one_connection, None)
value = referential.diff_localized(units=True) 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): def test_diff_localized_with_si(application_with_one_connection, bob):
application_with_one_connection.parameters.digits_after_comma = 6 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) 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): def test_diff_localized_no_units_no_si(application_with_one_connection, bob):
application_with_one_connection.parameters.digits_after_comma = 6 application_with_one_connection.parameters.digits_after_comma = 6
referential = Quantitative(101010110, bob.currency, application_with_one_connection, None) referential = Quantitative(101010110, bob.currency, application_with_one_connection, None)
value = referential.diff_localized(units=False, international_system=False) 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): def test_diff_localized_no_units_with_si(application_with_one_connection, bob):
application_with_one_connection.parameters.digits_after_comma = 6 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) value = referential.diff_localized(units=False, international_system=True)
assert value == "101.010110 x10" assert value == "1,010.00 x10³"
...@@ -14,64 +14,64 @@ def test_diff_units(application_with_one_connection, bob): ...@@ -14,64 +14,64 @@ def test_diff_units(application_with_one_connection, bob):
def test_value(application_with_one_connection, bob): def test_value(application_with_one_connection, bob):
referential = QuantitativeZSum(110, bob.currency, application_with_one_connection, None) referential = QuantitativeZSum(110, bob.currency, application_with_one_connection, None)
value = referential.value() value = referential.value()
assert value == -1079 assert value == -10.79
def test_differential(application_with_one_connection, bob): def test_differential(application_with_one_connection, bob):
referential = QuantitativeZSum(110, bob.currency, application_with_one_connection, None) referential = QuantitativeZSum(110, bob.currency, application_with_one_connection, None)
value = referential.value() value = referential.value()
assert value == -1079 assert value == -10.79
def test_localized_no_si(application_with_one_connection, bob): def test_localized_no_si(application_with_one_connection, bob):
referential = QuantitativeZSum(110, bob.currency, application_with_one_connection, None) referential = QuantitativeZSum(110, bob.currency, application_with_one_connection, None)
value = referential.localized(units=True) 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): def test_localized_with_si(application_with_one_connection, bob):
application_with_one_connection.parameters.digits_after_comma = 6 application_with_one_connection.parameters.digits_after_comma = 6
referential = QuantitativeZSum(110 * 1000, bob.currency, application_with_one_connection, None) referential = QuantitativeZSum(110 * 1000, bob.currency, application_with_one_connection, None)
value = referential.localized(units=True, international_system=True) 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): def test_localized_no_units_no_si(application_with_one_connection, bob):
application_with_one_connection.parameters.digits_after_comma = 6 application_with_one_connection.parameters.digits_after_comma = 6
referential = QuantitativeZSum(110, bob.currency, application_with_one_connection, None) referential = QuantitativeZSum(110, bob.currency, application_with_one_connection, None)
value = referential.localized(units=False, international_system=False) 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): def test_localized_no_units_with_si(application_with_one_connection, bob):
application_with_one_connection.parameters.digits_after_comma = 6 application_with_one_connection.parameters.digits_after_comma = 6
referential = QuantitativeZSum(110 * 1000, bob.currency, application_with_one_connection, None) referential = QuantitativeZSum(110 * 1000, bob.currency, application_with_one_connection, None)
value = referential.localized(units=False, international_system=True) 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): def test_diff_localized_no_si(application_with_one_connection, bob):
referential = QuantitativeZSum(110 * 1000, bob.currency, application_with_one_connection, None) referential = QuantitativeZSum(110 * 1000, bob.currency, application_with_one_connection, None)
value = referential.diff_localized(units=True) 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): def test_diff_localized_with_si(application_with_one_connection, bob):
application_with_one_connection.parameters.digits_after_comma = 6 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) 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): def test_diff_localized_no_units_no_si(application_with_one_connection, bob):
application_with_one_connection.parameters.digits_after_comma = 6 application_with_one_connection.parameters.digits_after_comma = 6
referential = QuantitativeZSum(101010110, bob.currency, application_with_one_connection, None) referential = QuantitativeZSum(101010110, bob.currency, application_with_one_connection, None)
value = referential.diff_localized(units=False, international_system=False) 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): def test_diff_localized_no_units_with_si(application_with_one_connection, bob):
application_with_one_connection.parameters.digits_after_comma = 6 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) value = referential.diff_localized(units=False, international_system=True)
assert value == "101.010110 x10" assert value == "1,010.00 x10³"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment