from .elements import Element
from .fields import (
CurrencyField,
- Field,
DateTimeField,
DecimalField,
IndicatorField,
MultiField,
QuantityField,
StringField,
- MultiDecimalField,
+ MultiCurrencyField,
)
profile=BASIC,
_d="Gesamtbetrag der Abschläge",
)
- tax_basis_total = DecimalField(
+ tax_basis_total = CurrencyField(
NS_RAM,
"TaxBasisTotalAmount",
required=True,
profile=BASIC,
_d="Steuerbasisbetrag",
)
- tax_total = DecimalField(
+ tax_total = CurrencyField(
NS_RAM, "TaxTotalAmount", required=True, profile=BASIC, _d="Steuergesamtbetrag"
)
- grand_total = DecimalField(
+ tax_total_other_currency = MultiCurrencyField(
+ NS_RAM, "TaxTotalAmount", profile=EXTENDED, _d="Steuergesamtbetrag"
+ )
+ grand_total = CurrencyField(
NS_RAM, "GrandTotalAmount", required=True, profile=BASIC, _d="Bruttosumme"
)
prepaid_total = DecimalField(
el.currency = child[1]
def add_from_etree(self, root):
- self.add((root.text, root.attrib["currencyID"]))
+ if root.attrib.get("currencyID"):
+ self.add((root.text, root.attrib["currencyID"]))
+ else:
+ self.add(root.text)
class IDContainer(SimpleContainer):
class CurrencyElement(StringElement):
- def __init__(self, namespace, tag, amount="", currency="EUR"):
+ def __init__(self, namespace, tag, amount="", currency=None):
super().__init__(namespace, tag)
self.amount = amount
self.currency = currency
def to_etree(self):
node = self._etree_node()
node.text = str(self.amount)
- node.attrib["currencyID"] = self.currency
+ if self.currency is not None:
+ node.attrib["currencyID"] = self.currency
+ elif "currencyID" in node.attrib:
+ del node.attrib["currencyID"]
return node
def from_etree(self, root):
self.amount = Decimal(root.text)
- self.currency = root.attrib.get("currencyID", "EUR")
+ self.currency = root.attrib.get("currencyID") or None
self.set_on_input = True
return self
if instance._data.get(self.name, None) is None:
instance._data[self.name] = self.initialize()
+ if isinstance(value, (int, float, Decimal)):
+ value = (value, None)
if not isinstance(value, (tuple, list)):
raise TypeError("Please pass a 2-tuple of including amount and currency.")
return self.cls(child_type=str, namespace=self.namespace, tag=self.tag)
-class MultiDecimalField(Field):
+class MultiCurrencyField(Field):
def __init__(
self, namespace, tag, default=False, required=False, profile=BASIC, _d=None
):
DateTimeField,
DecimalField,
Field,
- MultiDecimalField,
MultiStringField,
QuantityField,
StringField,
DirectDateTimeField,
IDField,
+ MultiCurrencyField,
)
debit_mandate_id = StringField(
NS_RAM, "DirectDebitMandateID", required=False, profile=BASIC
)
- partial_amount = MultiDecimalField(
+ partial_amount = MultiCurrencyField(
NS_RAM,
"PartialPaymentAmount",
profile=EXTENDED,