]> git.ipfire.org Git - thirdparty/python-drafthorse.git/commitdiff
Make all official samples pass
authorRaphael Michel <mail@raphaelmichel.de>
Mon, 15 Oct 2018 22:55:39 +0000 (00:55 +0200)
committerRaphael Michel <mail@raphaelmichel.de>
Mon, 15 Oct 2018 22:55:39 +0000 (00:55 +0200)
24 files changed:
drafthorse/models/accounting.py
drafthorse/models/elements.py
drafthorse/models/fields.py
drafthorse/models/note.py
drafthorse/models/party.py
drafthorse/models/payment.py
drafthorse/models/product.py
drafthorse/models/references.py
drafthorse/models/trade.py
drafthorse/models/tradelines.py
drafthorse/utils.py
tests/samples/ZUGFeRD_1p0_BASIC_Einfach.xml [new file with mode: 0644]
tests/samples/ZUGFeRD_1p0_BASIC_Rechnungskorrektur.xml [new file with mode: 0644]
tests/samples/ZUGFeRD_1p0_COMFORT_Einfach.xml [new file with mode: 0644]
tests/samples/ZUGFeRD_1p0_COMFORT_Haftpflichtversicherung_Versicherungssteuer.xml [new file with mode: 0644]
tests/samples/ZUGFeRD_1p0_COMFORT_Kraftfahrversicherung_Bruttopreise.xml [new file with mode: 0644]
tests/samples/ZUGFeRD_1p0_COMFORT_Rabatte.xml [new file with mode: 0644]
tests/samples/ZUGFeRD_1p0_COMFORT_Rechnungskorrektur.xml [new file with mode: 0644]
tests/samples/ZUGFeRD_1p0_COMFORT_SEPA_Prenotification.xml [new file with mode: 0644]
tests/samples/ZUGFeRD_1p0_COMFORT_Sachversicherung_berechneter_Steuersatz.xml [new file with mode: 0644]
tests/samples/ZUGFeRD_1p0_EXTENDED_Kostenrechnung.xml [new file with mode: 0644]
tests/samples/ZUGFeRD_1p0_EXTENDED_Rechnungskorrektur.xml [new file with mode: 0644]
tests/samples/ZUGFeRD_1p0_EXTENDED_Warenrechnung.xml [new file with mode: 0644]
tests/test_roundtrip.py

index 4ce17b7c6917a0f1791484a1e67a607ad7815ffc..0d8320a01b2f945b438e40790dbf6f9d27cbe067 100644 (file)
@@ -1,7 +1,7 @@
 from . import BASIC, COMFORT, EXTENDED, NS_RAM
 from .elements import Element
 from .fields import (CurrencyField, DateTimeField, DecimalField,
-                     IndicatorField, MultiField, StringField)
+                     IndicatorField, MultiField, StringField, QuantityField)
 
 
 class LineApplicableTradeTax(Element):
@@ -51,7 +51,15 @@ class AccountingAccount(Element):
 
     class Meta:
         namespace = NS_RAM
-        tag = "ReceivableSpecifiedTradeAccount"
+        tag = "SpecifiedTradeAccountingAccount"
+
+
+class ReceivableAccountingAccount(Element):
+    id = StringField(NS_RAM, "ID", required=True, profile=EXTENDED, _d="Buchungsreferenz")
+
+    class Meta:
+        namespace = NS_RAM
+        tag = "ReceivableSpecifiedTradeAccountingAccount"
 
 
 class MonetarySummation(Element):
@@ -112,7 +120,7 @@ class TradeAllowanceCharge(Element):
                                        _d="Rabatt in Prozent")
     basis_amount = CurrencyField(NS_RAM, "BasisAmount", required=False,
                                  profile=EXTENDED, _d="Basisbetrag des Rabatts")
-    basis_quantity = CurrencyField(NS_RAM, "BasisQuantity", required=False,
+    basis_quantity = QuantityField(NS_RAM, "BasisQuantity", required=False,
                                    profile=EXTENDED, _d="Basismenge des Rabatts")
     actual_amount = CurrencyField(NS_RAM, "ActualAmount", required=True,
                                   profile=COMFORT, _d="Betrag des Zu-/Abschlags")
index 16c5b441fbf97c83a32dce05cc2e632e7c2bfe98..7c5a2da187ede8c3a44189a34635f15d48acf1b5 100644 (file)
@@ -26,6 +26,7 @@ class BaseElementMeta(type):
 
 class Element(metaclass=BaseElementMeta):
     def __init__(self, **kwargs):
+        self.required = kwargs.get('required', False)
         self._data = OrderedDict([
             (f.name, f.initialize() if f.default else None) for f in self._fields
         ])
@@ -49,9 +50,9 @@ class Element(metaclass=BaseElementMeta):
     def get_tag(self):
         return "{%s}%s" % (self.Meta.namespace, self.Meta.tag)
 
-    def append_to(self, node, required=False):
+    def append_to(self, node):
         el = self.to_etree()
-        if required or list(el) or el.text:
+        if self.required or list(el) or el.text:
             node.append(el)
 
     def serialize(self):
@@ -66,6 +67,8 @@ class Element(metaclass=BaseElementMeta):
             element = getattr(self, field.name)
             field_index[element.get_tag()] = (field.name, element)
         for child in root:
+            if child.tag == ET.Comment:
+                continue
             if child.tag in field_index:
                 name, childel = field_index[child.tag]
                 if isinstance(getattr(self, name), Container):
@@ -73,6 +76,7 @@ class Element(metaclass=BaseElementMeta):
                 else:
                     getattr(self, name).from_etree(child)
             else:
+                print(root, field_index)
                 raise TypeError("Unknown element {}".format(child.tag))
         return self
 
@@ -203,7 +207,7 @@ class AgencyIDElement(StringElement):
         return node
 
     def from_etree(self, root):
-        self.text = Decimal(root.text)
+        self.text = root.text
         self.scheme_id = root.attrib['schemeAgencyID']
         return self
 
@@ -241,9 +245,13 @@ class DateTimeElement(StringElement):
     def to_etree(self):
         t = self._etree_node()
         node = ET.Element("{%s}%s" % (NS_UDT, "DateTimeString"))
-        node.text = self.value.strftime("%Y%m%d")
-        node.attrib['format'] = self.format
-        t.append(node)
+        if self.value:
+            if self.format == '102':
+                node.text = self.value.strftime("%Y%m%d")
+            elif self.format == '616':
+                node.text = self.value.strftime("%G%V")
+            node.attrib['format'] = self.format
+            t.append(node)
         return t
 
     def from_etree(self, root):
@@ -251,10 +259,33 @@ class DateTimeElement(StringElement):
             raise TypeError("Date containers should have one child")
         if root[0].tag != "{%s}%s" % (NS_UDT, "DateTimeString"):
             raise TypeError("Tag %s not recognized" % root[0].tag)
-        if root[0].attrib['format'] != '102':
-            raise TypeError("Date format %s cannot be parsed" % root[0].attrib['format'])
-        self.value = datetime.strptime(root[0].text, '%Y%m%d').date()
         self.format = root[0].attrib['format']
+        if self.format == '102':
+            self.value = datetime.strptime(root[0].text, '%Y%m%d').date()
+        elif self.format == '616':
+            self.value = datetime.strptime(root[0].text + '1', '%G%V%u').date()
+        else:
+            raise TypeError("Date format %s cannot be parsed" % root[0].attrib['format'])
+        return self
+
+    def __str__(self):
+        return "{}".format(self.value)
+
+
+class DirectDateTimeElement(StringElement):
+    def __init__(self, namespace, tag, value=None):
+        super().__init__(namespace, tag)
+        self.value = value
+        self.format = format
+
+    def to_etree(self):
+        t = self._etree_node()
+        if self.value:
+            t.text = self.value.strftime("%Y-%m-%dT%H:%M:%S")
+        return t
+
+    def from_etree(self, root):
+        self.value = datetime.strptime(root.text, '%Y-%m-%dT%H:%M:%S').date()
         return self
 
     def __str__(self):
@@ -262,7 +293,7 @@ class DateTimeElement(StringElement):
 
 
 class IndicatorElement(StringElement):
-    def __init__(self, namespace, tag, value=False):
+    def __init__(self, namespace, tag, value=None):
         super().__init__(namespace, tag)
         self.value = value
 
@@ -271,6 +302,8 @@ class IndicatorElement(StringElement):
 
     def to_etree(self):
         t = self._etree_node()
+        if self.value is None:
+            return t
         node = ET.Element("{%s}%s" % (NS_UDT, "Indicator"))
         node.text = str(self.value).lower()
         t.append(node)
@@ -278,3 +311,11 @@ class IndicatorElement(StringElement):
 
     def __str__(self):
         return "{}".format(self.value)
+
+    def from_etree(self, root):
+        if len(root) != 1:
+            raise TypeError("Indicator containers should have one child")
+        if root[0].tag != "{%s}%s" % (NS_UDT, "Indicator"):
+            raise TypeError("Tag %s not recognized" % root[0].tag)
+        self.value = root[0].text == 'true'
+        return self
index c50d8a3196d0b21d682044c4cfcd4f3b285e456f..5b10b3897ece0fc41fb0f989fc45d1ac7951e9e2 100644 (file)
@@ -13,7 +13,7 @@ class Field:
         super().__init__()
 
     def initialize(self):
-        return self.cls()
+        return self.cls(required=self.required)
 
     def __get__(self, instance, objtype):
         if instance._data.get(self.name, None) is None:
@@ -190,6 +190,22 @@ class DateTimeField(Field):
         return self.cls(self.namespace, self.tag)
 
 
+class DirectDateTimeField(Field):
+    def __init__(self, namespace, tag, default=False, required=False, profile=BASIC, _d=None):
+        from .elements import DirectDateTimeElement
+        super().__init__(DirectDateTimeElement, default, required, profile, _d)
+        self.namespace = namespace
+        self.tag = tag
+
+    def __set__(self, instance, value):
+        if instance._data.get(self.name, None) is None:
+            instance._data[self.name] = self.initialize()
+        instance._data[self.name].value = value
+
+    def initialize(self):
+        return self.cls(self.namespace, self.tag)
+
+
 class MultiField(Field):
     def __init__(self, inner_type, default=False, required=False, profile=BASIC, _d=None):
         super().__init__(Container, default, required, profile, _d)
index 997a632e31d22a51d58f75f2747b544f04f3bb7f..559945ad57b11b578888c9279e7186313df5d7a8 100644 (file)
@@ -4,10 +4,10 @@ from .fields import MultiStringField, StringField
 
 
 class IncludedNote(Element):
-    content = MultiStringField(NS_RAM, "Content", required=False,
-                               profile=BASIC)
     content_code = StringField(NS_RAM, "ContentCode", required=False,
                                profile=EXTENDED)
+    content = MultiStringField(NS_RAM, "Content", required=False,
+                               profile=BASIC)
     subject_code = StringField(NS_RAM, "SubjectCode", required=False,
                                profile=COMFORT)
 
index b0373392ea5f3683c754cbc73cd8d24dd0649a09..b4d4e2f0476649436d97524a4be391a844cf13da 100644 (file)
@@ -47,7 +47,7 @@ class EmailURI(Element):
 
     class Meta:
         namespace = NS_RAM
-        tag = "EmailURICommunication"
+        tag = "EmailURIUniversalCommunication"
 
 
 class TradeContact(Element):
index bb6bcc634109364ff302f3eff7a8cd345bdce46b..9dfb7d9af9c7a2185dfcdb46ac683dd7a2955672 100644 (file)
@@ -2,7 +2,7 @@ from . import BASIC, COMFORT, EXTENDED, NS_RAM
 from .elements import Element
 from .fields import (CurrencyField, DateTimeField, DecimalField, Field,
                      IDField, MultiCurrencyField, MultiStringField,
-                     StringField)
+                     StringField, AgencyIDField, QuantityField)
 
 
 class PayerFinancialAccount(Element):
@@ -47,7 +47,7 @@ class PayeeFinancialInstitution(Element):
 class PaymentMeans(Element):
     type_code = StringField(NS_RAM, "TypeCode", required=False, profile=COMFORT)
     information = MultiStringField(NS_RAM, "Information", required=False, profile=COMFORT)
-    id = IDField(NS_RAM, "ID", required=False, profile=BASIC)
+    id = AgencyIDField(NS_RAM, "ID", required=False, profile=BASIC)
     payer_account = Field(PayerFinancialAccount)
     payer_institution = Field(PayerFinancialInstitution)
     payee_account = Field(PayeeFinancialAccount)
@@ -61,8 +61,8 @@ class PaymentMeans(Element):
 class PaymentPenaltyTerms(Element):
     basis_date_time = DateTimeField(NS_RAM, "BasisDateTime", required=False,
                                     profile=EXTENDED, _d="Bezugsdatum der Fälligkeit")
-    basis_period_measure = StringField(NS_RAM, "BasisPeriodMeasure", required=False,
-                                       profile=EXTENDED, _d="Fälligkeitszeitraum")
+    basis_period_measure = QuantityField(NS_RAM, "BasisPeriodMeasure", required=False,
+                                         profile=EXTENDED, _d="Fälligkeitszeitraum")
     basis_amount = CurrencyField(NS_RAM, "BasisAmount", required=False,
                                  profile=EXTENDED, _d="Basisbetrag des Zahlungszuschlags")
     calculation_percent = DecimalField(NS_RAM, "CalculationPercent", required=False,
@@ -78,8 +78,8 @@ class PaymentPenaltyTerms(Element):
 class PaymentDiscountTerms(Element):
     basis_date_time = DateTimeField(NS_RAM, "BasisDateTime", required=False,
                                     profile=EXTENDED, _d="Bezugsdatum der Fälligkeit")
-    basis_period_measure = StringField(NS_RAM, "BasisPeriodMeasure", required=False,
-                                       profile=EXTENDED, _d="Fälligkeitszeitraum")
+    basis_period_measure = QuantityField(NS_RAM, "BasisPeriodMeasure", required=False,
+                                         profile=EXTENDED, _d="Fälligkeitszeitraum")
     basis_amount = CurrencyField(NS_RAM, "BasisAmount", required=False,
                                  profile=EXTENDED, _d="Basisbetrag des Zahlungsabschlags")
     calculation_percent = DecimalField(NS_RAM, "CalculationPercent", required=False,
index 1617c0e3d43332a8779938e57509db49c5e529c7..d153794b39243bf816add5baef09885dba06c965 100644 (file)
@@ -37,13 +37,13 @@ class OriginCountry(Element):
 
 
 class ReferencedProduct(Element):
-    name = StringField(NS_RAM, "Name", required=False, profile=EXTENDED)
-    description = StringField(NS_RAM, "Description", required=False, profile=EXTENDED)
     global_id = IDField(NS_RAM, "GlobalID", required=False, profile=EXTENDED)
     seller_assigned_id = StringField(NS_RAM, "SellerAssignedID", required=False,
                                      profile=EXTENDED)
     buyer_assigned_id = StringField(NS_RAM, "BuyerAssignedID", required=False,
                                     profile=EXTENDED)
+    name = StringField(NS_RAM, "Name", required=False, profile=EXTENDED)
+    description = StringField(NS_RAM, "Description", required=False, profile=EXTENDED)
     unit_quantity = QuantityField(NS_RAM, "UnitQuantity", required=False,
                                   profile=EXTENDED)
 
index b9a09a38461f8f5dacdfcded95801f49ed7ae0ba..025ce6539682881d78361f0066abe44a8c769fcd 100644 (file)
@@ -1,11 +1,11 @@
 from . import COMFORT, EXTENDED, NS_RAM
 from .elements import Element
-from .fields import DateTimeField, StringField
+from .fields import StringField, DirectDateTimeField
 
 
 class ReferencedDocument(Element):
-    issue_date_time = DateTimeField(NS_RAM, "IssueDateTime", required=False,
-                                    profile=COMFORT)
+    issue_date_time = DirectDateTimeField(NS_RAM, "IssueDateTime", required=False,
+                                          profile=COMFORT)
     id = StringField(NS_RAM, "ID", required=False,
                      profile=COMFORT)
 
@@ -22,8 +22,12 @@ class ContractReferencedDocument(ReferencedDocument):
         tag = "ContractReferencedDocument"
 
 
-class AdditionalReferencedDocument(ReferencedDocument):
-    type_code = StringField(NS_RAM, "ReferenceTypeCode", profile=EXTENDED, required=True)
+class AdditionalReferencedDocument(Element):
+    issue_date_time = DirectDateTimeField(NS_RAM, "IssueDateTime", required=False,
+                                          profile=COMFORT)
+    type_code = StringField(NS_RAM, "TypeCode", profile=EXTENDED, required=True)
+    id = StringField(NS_RAM, "ID", required=False,
+                     profile=COMFORT)
 
     class Meta:
         namespace = NS_RAM
@@ -82,9 +86,13 @@ class LineReceivingAdviceReferencedDocument(ReferencedDocument):
         tag = "ReceivingAdviceReferencedDocument"
 
 
-class LineAdditionalReferencedDocument(ReferencedDocument):
+class LineAdditionalReferencedDocument(Element):
     line_id = StringField(NS_RAM, "LineID", required=False, profile=EXTENDED)
-    type_code = StringField(NS_RAM, "ReferenceTypeCode", profile=EXTENDED, required=True)
+    issue_date_time = DirectDateTimeField(NS_RAM, "IssueDateTime", required=False,
+                                          profile=COMFORT)
+    type_code = StringField(NS_RAM, "TypeCode", profile=EXTENDED, required=True)
+    id = StringField(NS_RAM, "ID", required=False,
+                     profile=COMFORT)
 
     class Meta:
         namespace = NS_RAM
@@ -100,4 +108,4 @@ class DeliveryNoteReferencedDocument(ReferencedDocument):
 class LineDeliveryNoteReferencedDocument(ReferencedDocument):
     class Meta:
         namespace = NS_RAM
-        tag = "LineDeliveryNoteReferencedDocument"
+        tag = "DeliveryNoteReferencedDocument"
index 1860d72481fda7b4ddcaed89c064c28f82aa4af0..42c197e32649c764b5fe471ac1eec1318909c6c9 100644 (file)
@@ -1,7 +1,7 @@
 from . import BASIC, COMFORT, EXTENDED, NS_RAM, NS_FERD_1p0
-from .accounting import (AccountingAccount, ApplicableTradeTax,
+from .accounting import (ApplicableTradeTax,
                          BillingSpecifiedPeriod, MonetarySummation,
-                         TradeAllowanceCharge)
+                         TradeAllowanceCharge, AppliedTradeTax, ReceivableAccountingAccount)
 from .delivery import TradeDelivery
 from .elements import Element
 from .fields import CurrencyField, Field, MultiField, StringField
@@ -15,17 +15,25 @@ from .references import (AdditionalReferencedDocument,
 from .tradelines import LineItem
 
 
+class DeliveryTerms(Element):
+    type_code = StringField(NS_RAM, "DeliveryTypeCode", required=False,
+                            profile=EXTENDED, _d="Lieferbedingung (Code)")
+
+    class Meta:
+        namespace = NS_RAM
+        tag = "ApplicableTradeDeliveryTerms"
+
+
 class TradeAgreement(Element):
     buyer_reference = StringField(NS_RAM, "BuyerReference", required=False,
                                   profile=COMFORT, _d="Referenz des Käufers")
     seller = Field(SellerTradeParty, required=True, _d="Detailinformationen zum Verkäufer")
     buyer = Field(BuyerTradeParty, required=True)
     end_user = Field(EndUserTradeParty, required=False, _d="Abweichender Endverbraucher")
-    delivery_type_code = StringField(NS_RAM, "DeliveryTypeCode", required=False,
-                                     profile=EXTENDED, _d="Lieferbedingung (Code)")
-    buyer_order = BuyerOrderReferencedDocument(required=False, profile=COMFORT)
-    customer_order = CustomerOrderReferencedDocument(required=False, profile=COMFORT)
-    contract = ContractReferencedDocument(required=False, profile=COMFORT)
+    delivery_terms = Field(DeliveryTerms, required=False, profile=EXTENDED)
+    buyer_order = Field(BuyerOrderReferencedDocument, required=False, profile=COMFORT)
+    customer_order = Field(CustomerOrderReferencedDocument, required=False, profile=COMFORT)
+    contract = Field(ContractReferencedDocument, required=False, profile=COMFORT)
     additional_references = MultiField(AdditionalReferencedDocument, required=False,
                                        profile=COMFORT)
 
@@ -39,7 +47,7 @@ class LogisticsServiceCharge(Element):
                               _d="Identifikation der Servicegebühr")
     applied_amount = CurrencyField(NS_RAM, "AppliedAmount", required=True,
                                    profile=COMFORT, _d="Betrag der Servicegebühr")
-    trade_tax = MultiField(ApplicableTradeTax, required=False, profile=COMFORT)
+    trade_tax = MultiField(AppliedTradeTax, required=False, profile=COMFORT)
 
     class Meta:
         namespace = NS_RAM
@@ -62,7 +70,7 @@ class TradeSettlement(Element):
     terms = MultiField(PaymentTerms, required=False, profile=COMFORT)
     money_summation = Field(MonetarySummation, required=True, profile=BASIC,
                             _d="Detailinformation zu Belegsummen")
-    accounting_account = Field(AccountingAccount, required=False, profile=EXTENDED,
+    accounting_account = Field(ReceivableAccountingAccount, required=False, profile=EXTENDED,
                                _d="Detailinformationen zur Buchungsreferenz")
 
     class Meta:
index b60e1a092819718a353cfbb9a27109b4612be7a4..b4082a795b8b50320defcc45d400ab395b8e9bd5 100644 (file)
@@ -28,7 +28,7 @@ class GrossPrice(Element):
                            _d="Bruttopreis")
     basis_quantity = QuantityField(NS_RAM, "BasisQuantity", required=False,
                                    profile=COMFORT, _d="Preisbasismenge")
-    charge = Field(AllowanceCharge, required=False, profile=COMFORT)
+    charge = MultiField(AllowanceCharge, required=False, profile=COMFORT)
 
     class Meta:
         namespace = NS_RAM
@@ -73,7 +73,7 @@ class LineDelivery(Element):
                                     profile=BASIC, _d="Menge, berechnet")
     charge_free_quantity = QuantityField(NS_RAM, "ChargeFreeQuantity", required=False,
                                          profile=EXTENDED, _d="Menge, ohne Berechnung")
-    package_quantity = QuantityField(NS_RAM, "ChargeFreeQuantity", required=False,
+    package_quantity = QuantityField(NS_RAM, "PackageQuantity", required=False,
                                      profile=EXTENDED, _d="Anzahl Packstücke")
     ship_to = Field(ShipToTradeParty, required=False, profile=EXTENDED)
     ultimate_ship_to = Field(UltimateShipToTradeParty, required=False, profile=EXTENDED)
@@ -118,7 +118,7 @@ class LineItem(Element):
     document = Field(LineDocument, required=True)
     agreement = Field(LineAgreement)
     delivery = Field(LineDelivery)
-    settlement = Field(LineSettlement)
+    settlement = Field(LineSettlement, required=True)
     product = Field(TradeProduct)
 
     class Meta:
index 085ea2f562ffcba5e52cdcfbb805859c25c3c1e8..9bf8aa36252977d07e74bcf2c84382ad2412e1ba 100644 (file)
@@ -14,14 +14,14 @@ def minify(xml):
         return xml
 
 
-def prettify(xml):
+def prettify(xml, **kwargs):
     try:
         from lxml import etree
     except ImportError:
         reparsed = minidom.parseString(xml)
         return reparsed.toprettyxml(indent="\t")
     else:
-        parser = etree.XMLParser(remove_blank_text=True)
+        parser = etree.XMLParser(remove_blank_text=True, **kwargs)
         return b"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + etree.tostring(
             etree.fromstring(xml, parser), pretty_print=True
         )
diff --git a/tests/samples/ZUGFeRD_1p0_BASIC_Einfach.xml b/tests/samples/ZUGFeRD_1p0_BASIC_Einfach.xml
new file mode 100644 (file)
index 0000000..b9f86d2
--- /dev/null
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- \r
+\r
+Nutzungsrechte \r
+ZUGFeRD Datenformat Version 1.0, 25.6.2014\r
+Beispiel Version 29.09.2014\r
+\r
+Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung \r
+eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht \r
+diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)\r
+\r
+Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung \r
+frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine \r
+Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht \r
+diskriminierenden Bedingungen an.\r
+\r
+Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung \r
+abrufbar unter www.ferd-net.de.\r
+\r
+Im Einzelnen schließt die Nutzungsgewährung ein: \r
+=====================================\r
+\r
+FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils \r
+geltenden und akzeptierten Fassung (www.ferd-net.de) ein. \r
+Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, \r
+Weiterbearbeitung und Verbindung mit anderen Produkten.\r
+Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder \r
+anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige \r
+Anwendungen und Dienste. \r
+Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente \r
+und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um \r
+notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch \r
+die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. \r
+Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, \r
+unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit \r
+anderen Produkten einzuräumen. \r
+\r
+Die Lizenz wird kostenfrei zur Verfügung gestellt. \r
+\r
+Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen \r
+Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, \r
+Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, \r
+beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der \r
+Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.\r
+\r
+-->\r
+<rsm:CrossIndustryDocument xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"\r
+                                                  xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0"\r
+                                                  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">\r
+       <rsm:SpecifiedExchangedDocumentContext>\r
+               <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. -->\r
+               <ram:GuidelineSpecifiedDocumentContextParameter>\r
+                       <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:basic</ram:ID>\r
+               </ram:GuidelineSpecifiedDocumentContextParameter>\r
+       </rsm:SpecifiedExchangedDocumentContext>\r
+       <rsm:HeaderExchangedDocument>\r
+               <ram:ID>471102</ram:ID>\r
+               <ram:Name>RECHNUNG</ram:Name>\r
+               <ram:TypeCode>380</ram:TypeCode>\r
+               <ram:IssueDateTime><udt:DateTimeString format="102">20130305</udt:DateTimeString></ram:IssueDateTime>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Rechnung gemäß Bestellung vom 01.03.2013.</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Lieferant GmbH\r
+Lieferantenstraße 20\r
+80333 München\r
+Deutschland\r
+Geschäftsführer: Hans Muster\r
+Handelsregisternummer: H A 123\r
+</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Unsere GLN: 4000001123452\r
+Ihre GLN: 4000001987658\r
+Ihre Kundennummer: GE2020211\r
+\r
+\r
+Zahlbar innerhalb 30 Tagen netto bis 04.04.2013, 3% Skonto innerhalb 10 Tagen bis 15.03.2013.</ram:Content>\r
+               </ram:IncludedNote>\r
+       </rsm:HeaderExchangedDocument>\r
+       <rsm:SpecifiedSupplyChainTradeTransaction>\r
+               <ram:ApplicableSupplyChainTradeAgreement>\r
+                       <ram:SellerTradeParty>\r
+                               <ram:Name>Lieferant GmbH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>80333</ram:PostcodeCode>\r
+                                       <ram:LineOne>Lieferantenstraße 20</ram:LineOne>\r
+                                       <ram:CityName>München</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="FC">201/113/40209</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="VA">DE123456789</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                       </ram:SellerTradeParty>\r
+                       <ram:BuyerTradeParty>\r
+                               <ram:Name>Kunden AG Mitte</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>69876</ram:PostcodeCode>\r
+                                       <ram:LineOne>Hans Muster</ram:LineOne>\r
+                                       <ram:LineTwo>Kundenstraße 15</ram:LineTwo>\r
+                                       <ram:CityName>Frankfurt</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:BuyerTradeParty>\r
+               </ram:ApplicableSupplyChainTradeAgreement>\r
+               <ram:ApplicableSupplyChainTradeDelivery>\r
+                       <ram:ActualDeliverySupplyChainEvent>\r
+                               <ram:OccurrenceDateTime><udt:DateTimeString format="102">20130305</udt:DateTimeString> </ram:OccurrenceDateTime>\r
+                       </ram:ActualDeliverySupplyChainEvent>\r
+               </ram:ApplicableSupplyChainTradeDelivery>\r
+               <ram:ApplicableSupplyChainTradeSettlement>\r
+                       <ram:PaymentReference>2013-471102</ram:PaymentReference>\r
+                       <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\r
+                       <ram:SpecifiedTradeSettlementPaymentMeans>\r
+                               <ram:PayeePartyCreditorFinancialAccount>\r
+                                       <ram:IBANID>DE08700901001234567890</ram:IBANID>\r
+                               </ram:PayeePartyCreditorFinancialAccount>\r
+                               <ram:PayeeSpecifiedCreditorFinancialInstitution>\r
+                                       <ram:BICID>GENODEF1M04</ram:BICID>\r
+                               </ram:PayeeSpecifiedCreditorFinancialInstitution>\r
+                       </ram:SpecifiedTradeSettlementPaymentMeans>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">37.62</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">198.00</ram:BasisAmount>\r
+                               <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                               <ram:LineTotalAmount currencyID="EUR">198.00</ram:LineTotalAmount>\r
+                               <ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount>\r
+                               <ram:AllowanceTotalAmount currencyID="EUR">0.00</ram:AllowanceTotalAmount>\r
+                               <ram:TaxBasisTotalAmount currencyID="EUR">198.00</ram:TaxBasisTotalAmount>\r
+                               <ram:TaxTotalAmount currencyID="EUR">37.62</ram:TaxTotalAmount>\r
+                               <ram:GrandTotalAmount currencyID="EUR">235.62</ram:GrandTotalAmount>\r
+                       </ram:SpecifiedTradeSettlementMonetarySummation>\r
+               </ram:ApplicableSupplyChainTradeSettlement>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">20.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">198.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0160">4012345001235</ram:GlobalID>\r
+                               <ram:SellerAssignedID>TB100A4</ram:SellerAssignedID>\r
+                               <ram:Name>GTIN: 4012345001235\r
+Unsere Art.-Nr.: TB100A4\r
+Trennblätter A4</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+       </rsm:SpecifiedSupplyChainTradeTransaction>\r
+</rsm:CrossIndustryDocument>
\ No newline at end of file
diff --git a/tests/samples/ZUGFeRD_1p0_BASIC_Rechnungskorrektur.xml b/tests/samples/ZUGFeRD_1p0_BASIC_Rechnungskorrektur.xml
new file mode 100644 (file)
index 0000000..93e95b7
--- /dev/null
@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- \r
+\r
+Nutzungsrechte \r
+ZUGFeRD Datenformat Version 1.0, 25.6.2014\r
+Beispiel Version 29.09.2014\r
+\r
+Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung \r
+eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht \r
+diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)\r
+\r
+Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung \r
+frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine \r
+Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht \r
+diskriminierenden Bedingungen an.\r
+\r
+Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung \r
+abrufbar unter www.ferd-net.de.\r
+\r
+Im Einzelnen schließt die Nutzungsgewährung ein: \r
+=====================================\r
+\r
+FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils \r
+geltenden und akzeptierten Fassung (www.ferd-net.de) ein. \r
+Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, \r
+Weiterbearbeitung und Verbindung mit anderen Produkten.\r
+Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder \r
+anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige \r
+Anwendungen und Dienste. \r
+Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente \r
+und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um \r
+notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch \r
+die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. \r
+Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, \r
+unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit \r
+anderen Produkten einzuräumen. \r
+\r
+Die Lizenz wird kostenfrei zur Verfügung gestellt. \r
+\r
+Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen \r
+Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, \r
+Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, \r
+beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der \r
+Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.\r
+\r
+-->\r
+<rsm:CrossIndustryDocument xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"\r
+                                                  xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0"\r
+                                                  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">\r
+       <rsm:SpecifiedExchangedDocumentContext>\r
+               <ram:TestIndicator>\r
+                       <udt:Indicator>true</udt:Indicator>\r
+               </ram:TestIndicator>\r
+               <!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. -->\r
+               <ram:GuidelineSpecifiedDocumentContextParameter>\r
+                       <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:basic</ram:ID>\r
+               </ram:GuidelineSpecifiedDocumentContextParameter>\r
+       </rsm:SpecifiedExchangedDocumentContext>\r
+       <rsm:HeaderExchangedDocument>\r
+               <ram:ID>RK21012345</ram:ID>\r
+               <ram:Name>RECHNUNGS-KORREKTUR</ram:Name>\r
+               <ram:TypeCode>380</ram:TypeCode>\r
+               <ram:IssueDateTime>\r
+                       <udt:DateTimeString format="102">20130916</udt:DateTimeString>\r
+               </ram:IssueDateTime>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Es bestehen Rabatt- oder Bonusvereinbarungen.</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>MUSTERLIEFERANT GMBH\r
+BAHNHOFSTRASSE 99\r
+99199 MUSTERHAUSEN\r
+Geschäftsführung:\r
+Max Mustermann\r
+USt-IdNr: DE123456789\r
+Telefon: +49 932 431 0\r
+www.musterlieferant.de\r
+HRB Nr. 372876\r
+Amtsgericht Musterstadt\r
+GLN 4304171000002</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Bei Rückfragen:\r
+Telefon: +49 932 431 500\r
+E-Mail : max.muster@musterlieferant.de</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Warenempfänger\r
+GLN 430417088093\r
+MUSTER-MARKT\r
+\r
+HAUPTSTRASSE 44\r
+31157 SARSTEDT\r
+\r
+Abteilung : 8211</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Bestell-Nr          : B123456789\r
+Bestell-Datum      : 01.08.2013\r
+\r
+Lieferschein-Nr     : L87654321012345\r
+Lieferschein-Datum : 05.08.2013\r
+Ursprungsbeleg-Nr  : R87654321012345\r
+Reklamationsnummer : REKLA-2013-235</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Rechnungsempfänger\r
+GLN 4304171000002                      \r
+MUSTER-KUNDE GMBH\r
+\r
+KUNDENWEG 88\r
+40235 DUESSELDORF\r
+Kunden-Nr. : 009420</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Rechnungsrabatt 1 -2,00% Basisbetrag: -5,00, MwSt.-% 19,0, Rabattbetrag:    0,10                   \r
+Basisbetrag: -2,90, MwSt.-%  7,0, Rabattbetrag:   0,06\r
+Rechnungsrabatt 2       Basisbetrag: -5,00, MwSt.-% 19,0, Rabattbetrag:   0,05\r
+Basisbetrag: -2,90, MwSt.-%  7,0, Rabattbetrag:   0,02</ram:Content>\r
+               </ram:IncludedNote>\r
+       </rsm:HeaderExchangedDocument>\r
+       <rsm:SpecifiedSupplyChainTradeTransaction>\r
+               <ram:ApplicableSupplyChainTradeAgreement>\r
+                       <ram:SellerTradeParty>\r
+                               <ram:Name>GLN 4333741000005 \r
+Lief-Nr: 549910\r
+MUSTERLIEFERANT GMBH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>99199</ram:PostcodeCode>\r
+                                       <ram:LineOne>BAHNHOFSTRASSE 99</ram:LineOne>\r
+                                       <ram:CityName>MUSTERHAUSEN</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="VA">DE123456789</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                       </ram:SellerTradeParty>\r
+                       <ram:BuyerTradeParty>\r
+                               <ram:Name>GLN 4304171000002 \r
+Kunden-Nr. : 009420\r
+MUSTER-KUNDE GMBH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>40235</ram:PostcodeCode>\r
+                                       <ram:LineOne>KUNDENWEG 88</ram:LineOne>\r
+                                       <ram:CityName>DUESSELDORF</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:BuyerTradeParty>\r
+               </ram:ApplicableSupplyChainTradeAgreement>\r
+               <ram:ApplicableSupplyChainTradeDelivery>\r
+                       <ram:ActualDeliverySupplyChainEvent>\r
+                               <ram:OccurrenceDateTime>\r
+                                       <udt:DateTimeString format="102">20130805</udt:DateTimeString>\r
+                               </ram:OccurrenceDateTime>\r
+                       </ram:ActualDeliverySupplyChainEvent>\r
+               </ram:ApplicableSupplyChainTradeDelivery>\r
+               <ram:ApplicableSupplyChainTradeSettlement>\r
+                       <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">-0.92</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">-4.85</ram:BasisAmount>\r
+                               <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">-0.20</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">-2.82</ram:BasisAmount>\r
+                               <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                               <ram:LineTotalAmount currencyID="EUR">-7.90</ram:LineTotalAmount>\r
+                               <ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount>\r
+                               <ram:AllowanceTotalAmount currencyID="EUR">-0.23</ram:AllowanceTotalAmount>\r
+                               <ram:TaxBasisTotalAmount currencyID="EUR">-7.67</ram:TaxBasisTotalAmount>\r
+                               <ram:TaxTotalAmount currencyID="EUR">-1.12</ram:TaxTotalAmount>\r
+                               <ram:GrandTotalAmount currencyID="EUR">-8.79</ram:GrandTotalAmount>\r
+                       </ram:SpecifiedTradeSettlementMonetarySummation>\r
+               </ram:ApplicableSupplyChainTradeSettlement>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:IncludedNote>\r
+                                       <ram:Content>Gemäß Ihres Reklamationsschreibens vom 10.09.2013 und unseres Telefonats vom 12.09.2013 erhalten Sie die\r
+nachfolgenden Leistungen gutgeschrieben.</ram:Content>\r
+                               </ram:IncludedNote>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement/>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument/>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">-5.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">-5.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:Name>GTIN 4123456000014\r
+Art-Nr-Lieferant ZS9997\r
+Zitronensäure 100ml\r
+Verpackung: Flasche\r
+VKE/Geb: 1</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument/>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">-2.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">-2.90</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:Name>GTIN 4123456000021\r
+Art-Nr-Lieferant GZ250\r
+Gelierzucker Extra 250g\r
+Verpackung: Karton\r
+VKE/Geb: 1</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+       </rsm:SpecifiedSupplyChainTradeTransaction>\r
+</rsm:CrossIndustryDocument>\r
diff --git a/tests/samples/ZUGFeRD_1p0_COMFORT_Einfach.xml b/tests/samples/ZUGFeRD_1p0_COMFORT_Einfach.xml
new file mode 100644 (file)
index 0000000..2730d10
--- /dev/null
@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- \r
+\r
+Nutzungsrechte \r
+ZUGFeRD Datenformat Version 1.0, 25.6.2014\r
+Beispiel Version 29.09.2014\r
+\r
+Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung \r
+eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht \r
+diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)\r
+\r
+Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung \r
+frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine \r
+Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht \r
+diskriminierenden Bedingungen an.\r
+\r
+Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung \r
+abrufbar unter www.ferd-net.de.\r
+\r
+Im Einzelnen schließt die Nutzungsgewährung ein: \r
+=====================================\r
+\r
+FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils \r
+geltenden und akzeptierten Fassung (www.ferd-net.de) ein. \r
+Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, \r
+Weiterbearbeitung und Verbindung mit anderen Produkten.\r
+Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder \r
+anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige \r
+Anwendungen und Dienste. \r
+Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente \r
+und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um \r
+notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch \r
+die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. \r
+Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, \r
+unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit \r
+anderen Produkten einzuräumen. \r
+\r
+Die Lizenz wird kostenfrei zur Verfügung gestellt. \r
+\r
+Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen \r
+Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, \r
+Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, \r
+beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der \r
+Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.\r
+\r
+-->\r
+<rsm:CrossIndustryDocument xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"\r
+                                                  xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0"\r
+                                                  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">\r
+       <rsm:SpecifiedExchangedDocumentContext>\r
+               <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. -->\r
+               <ram:GuidelineSpecifiedDocumentContextParameter>\r
+                       <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:comfort</ram:ID>\r
+               </ram:GuidelineSpecifiedDocumentContextParameter>\r
+       </rsm:SpecifiedExchangedDocumentContext>\r
+       <rsm:HeaderExchangedDocument>\r
+               <ram:ID>471102</ram:ID>\r
+               <ram:Name>RECHNUNG</ram:Name>\r
+               <ram:TypeCode>380</ram:TypeCode>\r
+               <ram:IssueDateTime><udt:DateTimeString format="102">20130305</udt:DateTimeString></ram:IssueDateTime>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Rechnung gemäß Bestellung vom 01.03.2013.</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Lieferant GmbH                             \r
+Lieferantenstraße 20                          \r
+80333 München                         \r
+Deutschland                            \r
+Geschäftsführer: Hans Muster\r
+Handelsregisternummer: H A 123\r
+</ram:Content>\r
+<ram:SubjectCode>REG</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+       </rsm:HeaderExchangedDocument>\r
+       <rsm:SpecifiedSupplyChainTradeTransaction>\r
+               <ram:ApplicableSupplyChainTradeAgreement>\r
+                       <ram:SellerTradeParty>\r
+                               <ram:GlobalID schemeID="0088">4000001123452</ram:GlobalID>\r
+                               <ram:Name>Lieferant GmbH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>80333</ram:PostcodeCode>\r
+                                       <ram:LineOne>Lieferantenstraße 20</ram:LineOne>\r
+                                       <ram:CityName>München</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="FC">201/113/40209</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="VA">DE123456789</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                       </ram:SellerTradeParty>\r
+                       <ram:BuyerTradeParty>\r
+                               <ram:ID>GE2020211</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4000001987658</ram:GlobalID>\r
+                               <ram:Name>Kunden AG Mitte</ram:Name>\r
+                               <ram:DefinedTradeContact>\r
+                                       <ram:PersonName>Hans Muster</ram:PersonName>\r
+                               </ram:DefinedTradeContact>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>69876</ram:PostcodeCode>\r
+                                       <ram:LineOne>Kundenstraße 15</ram:LineOne>\r
+                                       <ram:CityName>Frankfurt</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:BuyerTradeParty>\r
+               </ram:ApplicableSupplyChainTradeAgreement>\r
+               <ram:ApplicableSupplyChainTradeDelivery>\r
+                       <ram:ActualDeliverySupplyChainEvent>\r
+                               <ram:OccurrenceDateTime><udt:DateTimeString format="102">20130305</udt:DateTimeString> </ram:OccurrenceDateTime>\r
+                       </ram:ActualDeliverySupplyChainEvent>\r
+               </ram:ApplicableSupplyChainTradeDelivery>\r
+               <ram:ApplicableSupplyChainTradeSettlement>\r
+                       <ram:PaymentReference>2013-471102</ram:PaymentReference>\r
+                       <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\r
+                       <ram:SpecifiedTradeSettlementPaymentMeans>\r
+                               <ram:TypeCode>31</ram:TypeCode>\r
+                               <ram:Information>Überweisung</ram:Information>\r
+                               <ram:PayeePartyCreditorFinancialAccount>\r
+                                       <ram:IBANID>DE08700901001234567890</ram:IBANID>\r
+                               </ram:PayeePartyCreditorFinancialAccount>\r
+                               <ram:PayeeSpecifiedCreditorFinancialInstitution>\r
+                                       <ram:BICID>GENODEF1M04</ram:BICID>\r
+                               </ram:PayeeSpecifiedCreditorFinancialInstitution>\r
+                       </ram:SpecifiedTradeSettlementPaymentMeans>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">19.25</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">275.00</ram:BasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">37.62</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">198.00</ram:BasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:SpecifiedTradePaymentTerms>\r
+                               <ram:Description>Zahlbar innerhalb 30 Tagen netto bis 04.04.2013, 3% Skonto innerhalb 10 Tagen bis 15.03.2013</ram:Description>\r
+                               <ram:DueDateDateTime><udt:DateTimeString format="102">20130404</udt:DateTimeString></ram:DueDateDateTime>\r
+                       </ram:SpecifiedTradePaymentTerms>\r
+                       <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                               <ram:LineTotalAmount currencyID="EUR">473.00</ram:LineTotalAmount>\r
+                               <ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount>\r
+                               <ram:AllowanceTotalAmount currencyID="EUR">0.00</ram:AllowanceTotalAmount>\r
+                               <ram:TaxBasisTotalAmount currencyID="EUR">473.00</ram:TaxBasisTotalAmount>\r
+                               <ram:TaxTotalAmount currencyID="EUR">56.87</ram:TaxTotalAmount>\r
+                               <ram:GrandTotalAmount currencyID="EUR">529.87</ram:GrandTotalAmount>\r
+                               <ram:TotalPrepaidAmount currencyID="EUR">0.00</ram:TotalPrepaidAmount>\r
+                               <ram:DuePayableAmount currencyID="EUR">529.87</ram:DuePayableAmount>\r
+                       </ram:SpecifiedTradeSettlementMonetarySummation>\r
+               </ram:ApplicableSupplyChainTradeSettlement>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:LineID>1</ram:LineID>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">9.9000</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">9.9000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">20.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">198.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0160">4012345001235</ram:GlobalID>\r
+                               <ram:SellerAssignedID>TB100A4</ram:SellerAssignedID>\r
+                               <ram:Name>Trennblätter A4</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:LineID>2</ram:LineID>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">5.5000</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">5.5000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">50.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">275.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0160">4000050986428</ram:GlobalID>\r
+                               <ram:SellerAssignedID>ARNR2</ram:SellerAssignedID>\r
+                               <ram:Name>Joghurt Banane</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>         \r
+       </rsm:SpecifiedSupplyChainTradeTransaction>\r
+</rsm:CrossIndustryDocument>
\ No newline at end of file
diff --git a/tests/samples/ZUGFeRD_1p0_COMFORT_Haftpflichtversicherung_Versicherungssteuer.xml b/tests/samples/ZUGFeRD_1p0_COMFORT_Haftpflichtversicherung_Versicherungssteuer.xml
new file mode 100644 (file)
index 0000000..40299e4
--- /dev/null
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- \r
+\r
+Nutzungsrechte \r
+ZUGFeRD Datenformat Version 1.0, 25.6.2014\r
+Beispiel Version 29.09.2014\r
+\r
+Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung \r
+eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht \r
+diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)\r
+\r
+Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung \r
+frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine \r
+Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht \r
+diskriminierenden Bedingungen an.\r
+\r
+Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung \r
+abrufbar unter www.ferd-net.de.\r
+\r
+Im Einzelnen schließt die Nutzungsgewährung ein: \r
+=====================================\r
+\r
+FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils \r
+geltenden und akzeptierten Fassung (www.ferd-net.de) ein. \r
+Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, \r
+Weiterbearbeitung und Verbindung mit anderen Produkten.\r
+Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder \r
+anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige \r
+Anwendungen und Dienste. \r
+Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente \r
+und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um \r
+notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch \r
+die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. \r
+Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, \r
+unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit \r
+anderen Produkten einzuräumen. \r
+\r
+Die Lizenz wird kostenfrei zur Verfügung gestellt. \r
+\r
+Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen \r
+Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, \r
+Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, \r
+beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der \r
+Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.\r
+\r
+-->\r
+<rsm:CrossIndustryDocument xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"\r
+                                                  xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0"\r
+                                                  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">\r
+       <rsm:SpecifiedExchangedDocumentContext>\r
+               <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. -->\r
+               <ram:GuidelineSpecifiedDocumentContextParameter>\r
+                       <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:comfort</ram:ID>\r
+               </ram:GuidelineSpecifiedDocumentContextParameter>\r
+       </rsm:SpecifiedExchangedDocumentContext>\r
+       <rsm:HeaderExchangedDocument>\r
+               <ram:ID>01.234.567.8-2014-1</ram:ID>\r
+               <ram:Name>Beitragsrechnung</ram:Name>\r
+               <ram:TypeCode>380</ram:TypeCode>\r
+               <ram:IssueDateTime><udt:DateTimeString format="102">20140124</udt:DateTimeString></ram:IssueDateTime>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Allgemeine Haftpflichtversicherung VSNR: 01.234.567.8\r
+(Bei Schriftwechsel und Zahlung bitte angeben.)</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>MVM Musterhafter\r
+Versicherungsverein Musterstadt a.G.\r
+Versicherungsbüro\r
+Muster\r
+Musterstr. 12\r
+12345 Musterstadt\r
+Tel.: 0123/45678\r
+Fax.: 01231/99 45678\r
+Mo.-Fr. 08.30 - 12.30 Uhr\r
+Mo.-Fr. 14.00 - 17.00 Uhr\r
+Mo-Fr 8.00-20.00 Uhr, Sa 8.00-14.00 Uhr\r
+</ram:Content>\r
+                       <ram:SubjectCode>REG</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+       </rsm:HeaderExchangedDocument>\r
+       <rsm:SpecifiedSupplyChainTradeTransaction>\r
+               <ram:ApplicableSupplyChainTradeAgreement>\r
+                       <ram:BuyerReference>01.234.567.8</ram:BuyerReference>\r
+                       <ram:SellerTradeParty>\r
+                               <ram:Name>MVM Musterhafter\r
+Versicherungsverein Musterstadt a.G.</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>12345</ram:PostcodeCode>\r
+                                       <ram:LineOne>Musterstr. 12</ram:LineOne>\r
+                                       <ram:CityName>Musterstadt</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:SellerTradeParty>\r
+                       <ram:BuyerTradeParty>\r
+                               <ram:Name>Herrn\r
+Max Mustermann</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>12346</ram:PostcodeCode>\r
+                                       <ram:LineOne>Musterstr. 11</ram:LineOne>\r
+                                       <ram:CityName>Bad Musterhausen</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:BuyerTradeParty>\r
+               </ram:ApplicableSupplyChainTradeAgreement>\r
+               <ram:ApplicableSupplyChainTradeDelivery>\r
+                       <ram:ActualDeliverySupplyChainEvent>\r
+                               <ram:OccurrenceDateTime><udt:DateTimeString format="102">20141206</udt:DateTimeString> </ram:OccurrenceDateTime>\r
+                       </ram:ActualDeliverySupplyChainEvent>\r
+               </ram:ApplicableSupplyChainTradeDelivery>\r
+               <ram:ApplicableSupplyChainTradeSettlement>\r
+                       <ram:PaymentReference>01.234.567.8</ram:PaymentReference>\r
+                       <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\r
+                       <ram:SpecifiedTradeSettlementPaymentMeans>\r
+                               <ram:TypeCode>42</ram:TypeCode>\r
+                               <ram:Information>Überweisung</ram:Information>\r
+                               <ram:PayeePartyCreditorFinancialAccount>\r
+                                       <ram:IBANID>DE75123456780000001234</ram:IBANID>\r
+                               </ram:PayeePartyCreditorFinancialAccount>\r
+                               <ram:PayeeSpecifiedCreditorFinancialInstitution>\r
+                                       <ram:BICID>WELADED1MST</ram:BICID>\r
+                                       <ram:Name>Sparkasse Musterstadt Ost</ram:Name>\r
+                               </ram:PayeeSpecifiedCreditorFinancialInstitution>\r
+                       </ram:SpecifiedTradeSettlementPaymentMeans>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">9.50</ram:CalculatedAmount>\r
+                               <ram:TypeCode>ZF_INSURANCE_TAX</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">50.00</ram:BasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:BillingSpecifiedPeriod><ram:StartDateTime>\r
+                               <udt:DateTimeString format="102">20131206</udt:DateTimeString>\r
+                       </ram:StartDateTime>\r
+                       <ram:EndDateTime>\r
+                               <udt:DateTimeString format="102">20141206</udt:DateTimeString>\r
+                       </ram:EndDateTime></ram:BillingSpecifiedPeriod>\r
+                       <ram:SpecifiedTradePaymentTerms>\r
+                               <ram:Description>Einen zu zahlenden Beitrag überweisen Sie bitte auf folgende Bankverbindung: IBAN DE75123456780000001234, BIC WELADED1MST, Sparkasse Musterstadt Ost.\r
+Einfacher für Sie ist es, wenn Sie uns ein SEPA-Lastschriftmandat erteilen. Wir würden dann zu der Fälligkeit 06.12.2013 den Beitrag von dem uns bekannten Konto abbuchen. In diesem Fall würden Sie, sofern sich keine Beitragsänderung ergibt, zukünftig keine Zwischenrechnung erhalten.\r
+\r
+Beitragsgutschriften aus Ihrem Vertrag erstatten wir per Scheck.\r
+</ram:Description>\r
+                               <ram:DueDateDateTime><udt:DateTimeString format="102">20131206</udt:DateTimeString></ram:DueDateDateTime>\r
+                       </ram:SpecifiedTradePaymentTerms>\r
+                       <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                               <ram:LineTotalAmount currencyID="EUR">50.00</ram:LineTotalAmount>\r
+                               <ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount>\r
+                               <ram:AllowanceTotalAmount currencyID="EUR">0.00</ram:AllowanceTotalAmount>\r
+                               <ram:TaxBasisTotalAmount currencyID="EUR">50.00</ram:TaxBasisTotalAmount>\r
+                               <ram:TaxTotalAmount currencyID="EUR">9.50</ram:TaxTotalAmount>\r
+                               <ram:GrandTotalAmount currencyID="EUR">59.50</ram:GrandTotalAmount>\r
+                               <ram:TotalPrepaidAmount currencyID="EUR">0.00</ram:TotalPrepaidAmount>\r
+                               <ram:DuePayableAmount currencyID="EUR">59.50</ram:DuePayableAmount>\r
+                       </ram:SpecifiedTradeSettlementMonetarySummation>\r
+               </ram:ApplicableSupplyChainTradeSettlement>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:IncludedNote>\r
+                                       <ram:Content>Sehr geehrter Herr Mustermann,\r
+zu Ihrer Haftpflichtversicherung wird der Beitrag für den Zeitraum vom 06.12.2013 bis zum 06.12.2014 am 06.12.2013\r
+fällig.\r
+\r
+\r
+Folgende Risiken sind versichert:</ram:Content>\r
+                               </ram:IncludedNote>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement />\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">50.0000</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">50.0000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">1.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>ZF_INSURANCE_TAX</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">50.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:Name>Privathaftpflicht</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">0.0000</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">0.0000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">1.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>ZF_INSURANCE_TAX</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">0.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:Name>Lebensgefährte/in zur Privathaftpflicht</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>         \r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:IncludedNote>\r
+                                       <ram:Content>Der Beitrag hat sich auf Grund einer Beitragsangleichung gem. § 8 III AHB gegenüber dem Vorjahr erhöht. Auf Ihr Kündigungsrecht innerhalb eines Monats nach Zugang dieser Mitteilung weisen wir hin.\r
+Denken Sie bitte daran, dass neu eingetretene Haftpflichtrisiken innerhalb eines Monats nach Erhalt dieser Aufforderung angemeldet werden müssen, da ansonsten der Versicherungsschutz hierfür rückwirkend entfällt (§ 2 Ziff. 1 AHB).\r
+Innerhalb der gleichen Frist sind zwischenzeitlich eingetretene Erhöhungen und Erweiterungen des versicherten Haftpflichtrisikos gemäß § 8 Ziff. II AHB anzuzeigen.\r
+\r
+Nähere Angaben zu den versicherten Risiken entnehmen Sie bitte Ihrem Versicherungsschein/Nachtrag.\r
+\r
+Dieses Dokument dient auch zur Vorlage beim Finanzamt.\r
+\r
+\r
+Freundliche Grüße</ram:Content>\r
+                               </ram:IncludedNote>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement />\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+       </rsm:SpecifiedSupplyChainTradeTransaction>\r
+</rsm:CrossIndustryDocument>
\ No newline at end of file
diff --git a/tests/samples/ZUGFeRD_1p0_COMFORT_Kraftfahrversicherung_Bruttopreise.xml b/tests/samples/ZUGFeRD_1p0_COMFORT_Kraftfahrversicherung_Bruttopreise.xml
new file mode 100644 (file)
index 0000000..b041637
--- /dev/null
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- \r
+\r
+Nutzungsrechte \r
+ZUGFeRD Datenformat Version 1.0, 25.6.2014\r
+Beispiel Version 29.09.2014\r
+\r
+Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung \r
+eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht \r
+diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)\r
+\r
+Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung \r
+frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine \r
+Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht \r
+diskriminierenden Bedingungen an.\r
+\r
+Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung \r
+abrufbar unter www.ferd-net.de.\r
+\r
+Im Einzelnen schließt die Nutzungsgewährung ein: \r
+=====================================\r
+\r
+FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils \r
+geltenden und akzeptierten Fassung (www.ferd-net.de) ein. \r
+Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, \r
+Weiterbearbeitung und Verbindung mit anderen Produkten.\r
+Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder \r
+anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige \r
+Anwendungen und Dienste. \r
+Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente \r
+und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um \r
+notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch \r
+die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. \r
+Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, \r
+unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit \r
+anderen Produkten einzuräumen. \r
+\r
+Die Lizenz wird kostenfrei zur Verfügung gestellt. \r
+\r
+Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen \r
+Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, \r
+Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, \r
+beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der \r
+Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.\r
+\r
+-->\r
+<rsm:CrossIndustryDocument xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"\r
+                                                  xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0"\r
+                                                  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">\r
+       <rsm:SpecifiedExchangedDocumentContext>\r
+               <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. -->\r
+               <ram:GuidelineSpecifiedDocumentContextParameter>\r
+                       <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:comfort</ram:ID>\r
+               </ram:GuidelineSpecifiedDocumentContextParameter>\r
+       </rsm:SpecifiedExchangedDocumentContext>\r
+       <rsm:HeaderExchangedDocument>\r
+               <ram:ID>00.123.456.7-2014-1</ram:ID>\r
+               <ram:Name>Beitragsrechnung</ram:Name>\r
+               <ram:TypeCode>380</ram:TypeCode>\r
+               <ram:IssueDateTime><udt:DateTimeString format="102">20140311</udt:DateTimeString></ram:IssueDateTime>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Beitragsrechnung zur Kraftfahrtversicherung Nr. 00.123.456.7</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>MVM Musterhafter\r
+Versicherungsverein Musterstadt a.G.\r
+Versicherungsbüro\r
+Muster\r
+Musterstr. 12\r
+12345 Musterstadt\r
+Tel.: 0123/45678\r
+Fax.: 01231/99 45678\r
+Mo.-Fr. 08.30 - 12.30 Uhr\r
+Mo.-Fr. 14.00 - 17.00 Uhr\r
+Mo-Fr 8.00-20.00 Uhr, Sa 8.00-14.00 Uhr\r
+</ram:Content>\r
+                       <ram:SubjectCode>REG</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+       </rsm:HeaderExchangedDocument>\r
+       <rsm:SpecifiedSupplyChainTradeTransaction>\r
+               <ram:ApplicableSupplyChainTradeAgreement>\r
+                       <ram:BuyerReference>00.123.456.7</ram:BuyerReference>\r
+                       <ram:SellerTradeParty>\r
+                               <ram:Name>MVM Musterhafter\r
+Versicherungsverein Musterstadt a.G.</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>12345</ram:PostcodeCode>\r
+                                       <ram:LineOne>Musterstr. 12</ram:LineOne>\r
+                                       <ram:CityName>Musterstadt</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:SellerTradeParty>\r
+                       <ram:BuyerTradeParty>\r
+                               <ram:Name>Herrn\r
+Max Mustermann</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>12346</ram:PostcodeCode>\r
+                                       <ram:LineOne>Musterstr. 11</ram:LineOne>\r
+                                       <ram:CityName>Bad Musterhausen</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:BuyerTradeParty>\r
+               </ram:ApplicableSupplyChainTradeAgreement>\r
+               <ram:ApplicableSupplyChainTradeDelivery>\r
+                       <ram:ActualDeliverySupplyChainEvent>\r
+                               <ram:OccurrenceDateTime><udt:DateTimeString format="102">20140630</udt:DateTimeString> </ram:OccurrenceDateTime>\r
+                       </ram:ActualDeliverySupplyChainEvent>\r
+               </ram:ApplicableSupplyChainTradeDelivery>\r
+               <ram:ApplicableSupplyChainTradeSettlement>\r
+                       <ram:PaymentReference>00.123.456.7</ram:PaymentReference>\r
+                       <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\r
+                       <ram:SpecifiedTradeSettlementPaymentMeans>\r
+                               <ram:TypeCode>42</ram:TypeCode>\r
+                               <ram:Information>Überweisung</ram:Information>\r
+                               <ram:PayeePartyCreditorFinancialAccount>\r
+                                       <ram:IBANID>DE75123456780000001234</ram:IBANID>\r
+                               </ram:PayeePartyCreditorFinancialAccount>\r
+                               <ram:PayeeSpecifiedCreditorFinancialInstitution>\r
+                                       <ram:BICID>WELADED1MST</ram:BICID>\r
+                                       <ram:Name>Sparkasse Musterstadt Ost</ram:Name>\r
+                               </ram:PayeeSpecifiedCreditorFinancialInstitution>\r
+                       </ram:SpecifiedTradeSettlementPaymentMeans>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">35.13</ram:CalculatedAmount>\r
+                               <ram:TypeCode>ZF_INSURANCE_TAX</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">184.87</ram:BasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:BillingSpecifiedPeriod><ram:StartDateTime>\r
+                               <udt:DateTimeString format="102">20140401</udt:DateTimeString>\r
+                       </ram:StartDateTime>\r
+                       <ram:EndDateTime>\r
+                               <udt:DateTimeString format="102">20140630</udt:DateTimeString>\r
+                       </ram:EndDateTime></ram:BillingSpecifiedPeriod>\r
+                       <ram:SpecifiedTradePaymentTerms>\r
+                               <ram:Description>Einen zu zahlenden Beitrag überweisen Sie bitte auf folgende Bankverbindung:\r
+DE75123456780000001234, BIC WELADED1MST, Sparkasse Musterstadt Ost. Einfacher für Sie ist es, wenn Sie uns ein SEPA-Lastschriftmandat erteilen. Wir würden dann zu den Fälligkeiten 01.07.2014, 01.10.2014 den jeweiligen Beitrag von dem uns bekannten Konto abbuchen. In diesem Fall würden Sie, sofern sich keine Beitragsänderung ergibt, zukünftig keine Zwischenrechnung erhalten.\r
+Beitragsgutschriften aus Ihrem Vertrag erstatten wir per Scheck.\r
+Rabattservice: Wenn Sie im laufenden Kalenderjahr nur einen Kfz-Haftpflichtschaden oder nur einen Vollkaskoschaden melden, gilt für Sie der Rabattretter.\r
+</ram:Description>\r
+                               <ram:DueDateDateTime><udt:DateTimeString format="102">20140401</udt:DateTimeString></ram:DueDateDateTime>\r
+                       </ram:SpecifiedTradePaymentTerms>\r
+                       <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                               <ram:LineTotalAmount currencyID="EUR">184.87</ram:LineTotalAmount>\r
+                               <ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount>\r
+                               <ram:AllowanceTotalAmount currencyID="EUR">0.00</ram:AllowanceTotalAmount>\r
+                               <ram:TaxBasisTotalAmount currencyID="EUR">184.87</ram:TaxBasisTotalAmount>\r
+                               <ram:TaxTotalAmount currencyID="EUR">35.13</ram:TaxTotalAmount>\r
+                               <ram:GrandTotalAmount currencyID="EUR">220.00</ram:GrandTotalAmount>\r
+                               <ram:TotalPrepaidAmount currencyID="EUR">-220.00</ram:TotalPrepaidAmount>\r
+                               <ram:DuePayableAmount currencyID="EUR">440.00</ram:DuePayableAmount>\r
+                       </ram:SpecifiedTradeSettlementMonetarySummation>\r
+               </ram:ApplicableSupplyChainTradeSettlement>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:IncludedNote>\r
+                                       <ram:Content>Bei Ausstellung der Beitragsrechnung wurde der bekannte Vertragsstand (Zahlungen, Vertragsänderungen) bis zum 04.03.2014 berücksichtigt. Lösen Sie die Beitragsrechnung bitte auch bei Änderungen (z.B. Fahrzeugwechsel) ein. Die Zahlung werden wir verrechnen.\r
+\r
+Amtliches Kennzeichen: MS xx zzzz\r
+Fahrzeug: PKW\r
+\r
+Versicherungsumfang:\r
+Kfz-Haftpflicht: Deckung 100 Mio. € pausch/12 Mio. € pro Pers./Umweltschadengesetz:\r
+5 Mio. € je Schadenereignis, max. 10 Mio. € pro Jahr\r
+Vollkasko mit 300 € Selbstbeteiligung inkl. Teilkasko ohne Selbstbeteiligung</ram:Content>\r
+                               </ram:IncludedNote>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement />\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">67.2269</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">67.2269</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">1.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>ZF_INSURANCE_TAX</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">67.23</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:Name>Kfz-Haftpflicht SF25 (30 %) Typkl. 18 Regio R9</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">117.6471</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">117.6471</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">1.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>ZF_INSURANCE_TAX</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">117.65</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:Name>Vollkasko SF25 (30 %) Typkl. 21 Regio R4</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:IncludedNote>\r
+                                       <ram:Content>Beitrag bei vierteljährlicher Zahlung\r
+                                       \r
+Ausstehende Forderungen am Ausstellungstag (Stand 04.03.2014) betragen 220,00 €\r
+\r
+Diese Rechnung wird auch als Beitragsnachweis vom Finanzamt anerkannt.\r
+                                       \r
+                                       \r
+Freundliche Grüße</ram:Content>\r
+                               </ram:IncludedNote>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement />\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+       </rsm:SpecifiedSupplyChainTradeTransaction>\r
+</rsm:CrossIndustryDocument>
\ No newline at end of file
diff --git a/tests/samples/ZUGFeRD_1p0_COMFORT_Rabatte.xml b/tests/samples/ZUGFeRD_1p0_COMFORT_Rabatte.xml
new file mode 100644 (file)
index 0000000..fdc785a
--- /dev/null
@@ -0,0 +1,381 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- \r
+\r
+Nutzungsrechte \r
+ZUGFeRD Datenformat Version 1.0, 25.6.2014\r
+Beispiel Version 29.09.2014\r
+\r
+Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung \r
+eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht \r
+diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)\r
+\r
+Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung \r
+frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine \r
+Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht \r
+diskriminierenden Bedingungen an.\r
+\r
+Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung \r
+abrufbar unter www.ferd-net.de.\r
+\r
+Im Einzelnen schließt die Nutzungsgewährung ein: \r
+=====================================\r
+\r
+FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils \r
+geltenden und akzeptierten Fassung (www.ferd-net.de) ein. \r
+Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, \r
+Weiterbearbeitung und Verbindung mit anderen Produkten.\r
+Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder \r
+anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige \r
+Anwendungen und Dienste. \r
+Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente \r
+und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um \r
+notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch \r
+die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. \r
+Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, \r
+unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit \r
+anderen Produkten einzuräumen. \r
+\r
+Die Lizenz wird kostenfrei zur Verfügung gestellt. \r
+\r
+Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen \r
+Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, \r
+Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, \r
+beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der \r
+Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.\r
+\r
+-->\r
+<rsm:CrossIndustryDocument xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"\r
+                                                  xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0"\r
+                                                  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">\r
+       <rsm:SpecifiedExchangedDocumentContext>\r
+               <ram:TestIndicator>\r
+                       <udt:Indicator>true</udt:Indicator>\r
+               </ram:TestIndicator>\r
+               <!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. -->\r
+               <ram:GuidelineSpecifiedDocumentContextParameter>\r
+                       <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:comfort</ram:ID>\r
+               </ram:GuidelineSpecifiedDocumentContextParameter>\r
+       </rsm:SpecifiedExchangedDocumentContext>\r
+       <rsm:HeaderExchangedDocument>\r
+               <ram:ID>471102</ram:ID>\r
+               <ram:Name>RECHNUNG</ram:Name>\r
+               <ram:TypeCode>380</ram:TypeCode>\r
+               <ram:IssueDateTime>\r
+                       <udt:DateTimeString format="102">20130605</udt:DateTimeString>\r
+               </ram:IssueDateTime>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>\r
+Rechnung gemäß Bestellung Nr. 2013-471331 vom 01.03.2013. \r
+      </ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>\r
+Es bestehen Rabatt- und Bonusvereinbarungen.\r
+                       </ram:Content>\r
+                       <ram:SubjectCode>AAK</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Lieferant GmbH                             \r
+Lieferantenstraße 20                          \r
+80333 München                         \r
+Deutschland                            \r
+Geschäftsführer: Hans Muster\r
+Handelsregisternummer: H A 123\r
+</ram:Content>\r
+                       <ram:SubjectCode>REG</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+       </rsm:HeaderExchangedDocument>\r
+       <rsm:SpecifiedSupplyChainTradeTransaction>\r
+               <ram:ApplicableSupplyChainTradeAgreement>\r
+                       <ram:BuyerReference>AB-312</ram:BuyerReference>\r
+                       <ram:SellerTradeParty>\r
+                               <ram:GlobalID schemeID="0088">4000001123452</ram:GlobalID>\r
+                               <ram:Name>Lieferant GmbH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>80333</ram:PostcodeCode>\r
+                                       <ram:LineOne>Lieferantenstraße 20</ram:LineOne>\r
+                                       <ram:CityName>München</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="FC">201/113/40209</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="VA">DE123456789</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                       </ram:SellerTradeParty>\r
+                       <ram:BuyerTradeParty>\r
+                               <ram:ID>GE2020211</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4000001987658</ram:GlobalID>\r
+                               <ram:Name>Kunden AG Mitte</ram:Name>\r
+                               <ram:DefinedTradeContact>\r
+                                       <ram:PersonName>Hans Muster</ram:PersonName>\r
+                               </ram:DefinedTradeContact>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>69876</ram:PostcodeCode>\r
+                                       <ram:LineOne>Kundenstraße 15</ram:LineOne>\r
+                                       <ram:CityName>Frankfurt</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="VA">DE234567890</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                       </ram:BuyerTradeParty>\r
+                       <ram:BuyerOrderReferencedDocument>\r
+                               <ram:IssueDateTime>2013-03-01T00:00:00</ram:IssueDateTime>\r
+                               <ram:ID>2013-471331</ram:ID>\r
+                       </ram:BuyerOrderReferencedDocument>\r
+               </ram:ApplicableSupplyChainTradeAgreement>\r
+               <ram:ApplicableSupplyChainTradeDelivery>\r
+                       <ram:ActualDeliverySupplyChainEvent>\r
+                               <ram:OccurrenceDateTime>\r
+                                       <udt:DateTimeString format="102">20130603</udt:DateTimeString>\r
+                               </ram:OccurrenceDateTime>\r
+                       </ram:ActualDeliverySupplyChainEvent>\r
+                       <ram:DeliveryNoteReferencedDocument>\r
+                               <ram:IssueDateTime>2013-06-03T00:00:00</ram:IssueDateTime>\r
+                               <ram:ID>2013-51112</ram:ID>\r
+                       </ram:DeliveryNoteReferencedDocument>\r
+               </ram:ApplicableSupplyChainTradeDelivery>\r
+               <ram:ApplicableSupplyChainTradeSettlement>\r
+                       <ram:PaymentReference>GE2020211-471102</ram:PaymentReference>\r
+                       <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\r
+                       <ram:SpecifiedTradeSettlementPaymentMeans>\r
+                               <ram:TypeCode>42</ram:TypeCode>\r
+                               <ram:Information>Überweisung</ram:Information>\r
+                               <ram:PayeePartyCreditorFinancialAccount>\r
+                                       <ram:IBANID>DE08700901001234567890</ram:IBANID>\r
+                                       <ram:ProprietaryID>1234567890</ram:ProprietaryID>\r
+                               </ram:PayeePartyCreditorFinancialAccount>\r
+                               <ram:PayeeSpecifiedCreditorFinancialInstitution>\r
+                                       <ram:BICID>GENODEF1M04</ram:BICID>\r
+                                       <ram:GermanBankleitzahlID>70090100</ram:GermanBankleitzahlID>\r
+                                       <ram:Name>Hausbank München</ram:Name>\r
+                               </ram:PayeeSpecifiedCreditorFinancialInstitution>\r
+                       </ram:SpecifiedTradeSettlementPaymentMeans>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">9.06</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">129.37</ram:BasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">12.25</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">64.46</ram:BasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator>\r
+                                       <udt:Indicator>false</udt:Indicator>\r
+                               </ram:ChargeIndicator>\r
+                               <ram:BasisAmount currencyID="EUR">10.00</ram:BasisAmount>\r
+                               <ram:ActualAmount currencyID="EUR">1.00</ram:ActualAmount>\r
+                               <ram:Reason>Sondernachlass</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>\r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator>\r
+                                       <udt:Indicator>false</udt:Indicator>\r
+                               </ram:ChargeIndicator>\r
+                               <ram:BasisAmount currencyID="EUR">137.30</ram:BasisAmount>\r
+                               <ram:ActualAmount currencyID="EUR">13.73</ram:ActualAmount>\r
+                               <ram:Reason>Sondernachlass</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>\r
+                       <ram:SpecifiedLogisticsServiceCharge>\r
+                               <ram:Description>Versandkosten</ram:Description>\r
+                               <ram:AppliedAmount currencyID="EUR">5.80</ram:AppliedAmount>\r
+                               <ram:AppliedTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:AppliedTradeTax>\r
+                       </ram:SpecifiedLogisticsServiceCharge>\r
+                       <ram:SpecifiedTradePaymentTerms>\r
+                               <ram:Description>Zahlbar innerhalb 30 Tagen netto bis 04.07.2013, 3% Skonto innerhalb 10 Tagen bis 15.06.2013</ram:Description>\r
+                               <ram:DueDateDateTime>\r
+                                       <udt:DateTimeString format="102">20130704</udt:DateTimeString>\r
+                               </ram:DueDateDateTime>\r
+                       </ram:SpecifiedTradePaymentTerms>\r
+                       <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                               <ram:LineTotalAmount currencyID="EUR">202.76</ram:LineTotalAmount>\r
+                               <ram:ChargeTotalAmount currencyID="EUR">5.80</ram:ChargeTotalAmount>\r
+                               <ram:AllowanceTotalAmount currencyID="EUR">14.73</ram:AllowanceTotalAmount>\r
+                               <ram:TaxBasisTotalAmount currencyID="EUR">193.83</ram:TaxBasisTotalAmount>\r
+                               <ram:TaxTotalAmount currencyID="EUR">21.31</ram:TaxTotalAmount>\r
+                               <ram:GrandTotalAmount currencyID="EUR">215.14</ram:GrandTotalAmount>\r
+                               <ram:TotalPrepaidAmount currencyID="EUR">50.00</ram:TotalPrepaidAmount>\r
+                               <ram:DuePayableAmount currencyID="EUR">165.14</ram:DuePayableAmount>\r
+                       </ram:SpecifiedTradeSettlementMonetarySummation>\r
+               </ram:ApplicableSupplyChainTradeSettlement>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:IncludedNote>\r
+                                       <ram:Content>Wir erlauben uns Ihnen folgende Positionen aus der Lieferung Nr. 2013-51112 in Rechnung zu stellen:</ram:Content>\r
+                               </ram:IncludedNote>                             \r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement />\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:LineID>1</ram:LineID>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">4.0000</ram:ChargeAmount>\r
+                                       <ram:BasisQuantity unitCode="MTK">1.0000</ram:BasisQuantity>\r
+                                       <ram:AppliedTradeAllowanceCharge>\r
+                                               <ram:ChargeIndicator>\r
+                                                       <udt:Indicator>false</udt:Indicator>\r
+                                               </ram:ChargeIndicator>\r
+                                               <ram:ActualAmount currencyID="EUR">0.6667</ram:ActualAmount>\r
+                                               <ram:Reason>Rabatt</ram:Reason>\r
+                                       </ram:AppliedTradeAllowanceCharge>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">3.3333</ram:ChargeAmount>\r
+                                       <ram:BasisQuantity unitCode="MTK">1</ram:BasisQuantity>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="MTK">3.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">10.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0160">4012345001235</ram:GlobalID>\r
+                               <ram:SellerAssignedID>KR3M</ram:SellerAssignedID>\r
+                               <ram:BuyerAssignedID>55T01</ram:BuyerAssignedID>\r
+                               <ram:Name>Kunstrasen grün 3m breit</ram:Name>\r
+                               <ram:Description>300cm x 100 cm</ram:Description>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:LineID>2</ram:LineID>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">5.5000</ram:ChargeAmount>\r
+                                       <ram:BasisQuantity unitCode="KGM">1.0000</ram:BasisQuantity>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">5.5000</ram:ChargeAmount>\r
+                                       <ram:BasisQuantity unitCode="KGM">1.0000</ram:BasisQuantity>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="KGM">5.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">27.50</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0160">4000050986428</ram:GlobalID>\r
+                               <ram:SellerAssignedID>SFK5</ram:SellerAssignedID>\r
+                               <ram:BuyerAssignedID>55T02</ram:BuyerAssignedID>\r
+                               <ram:Name>Schweinesteak</ram:Name>\r
+                               <ram:Description>aus Deutschland</ram:Description>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:LineID>3</ram:LineID>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">5.4900</ram:ChargeAmount>\r
+                                       <ram:BasisQuantity unitCode="C62">1.0000</ram:BasisQuantity>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">5.4900</ram:ChargeAmount>\r
+                                       <ram:BasisQuantity unitCode="C62">1.0000</ram:BasisQuantity>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">20.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">109.80</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0160">4000001234561</ram:GlobalID>\r
+                               <ram:SellerAssignedID>GTRWA5</ram:SellerAssignedID>\r
+                               <ram:BuyerAssignedID>55T03</ram:BuyerAssignedID>\r
+                               <ram:Name>Mineralwasser Medium \r
+12 x 1,0l PET</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:LineID>4</ram:LineID>\r
+                               <ram:IncludedNote>\r
+                                       <ram:Content>nicht rabattierfähig</ram:Content>\r
+                                       <ram:SubjectCode>PRF</ram:SubjectCode>\r
+                               </ram:IncludedNote>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">2.7700</ram:ChargeAmount>\r
+                                       <ram:BasisQuantity unitCode="C62">1.0000</ram:BasisQuantity>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">2.7700</ram:ChargeAmount>\r
+                                       <ram:BasisQuantity unitCode="C62">1</ram:BasisQuantity>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">20.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">55.46</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0160">4000001234578</ram:GlobalID>\r
+                               <ram:SellerAssignedID>PFA5</ram:SellerAssignedID>\r
+                               <ram:BuyerAssignedID>55T04</ram:BuyerAssignedID>\r
+                               <ram:Name>Pfand</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+       </rsm:SpecifiedSupplyChainTradeTransaction>\r
+</rsm:CrossIndustryDocument>\r
diff --git a/tests/samples/ZUGFeRD_1p0_COMFORT_Rechnungskorrektur.xml b/tests/samples/ZUGFeRD_1p0_COMFORT_Rechnungskorrektur.xml
new file mode 100644 (file)
index 0000000..293ecdd
--- /dev/null
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- \r
+\r
+Nutzungsrechte \r
+ZUGFeRD Datenformat Version 1.0, 25.6.2014\r
+Beispiel Version 29.09.2014\r
+\r
+Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung \r
+eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht \r
+diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)\r
+\r
+Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung \r
+frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine \r
+Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht \r
+diskriminierenden Bedingungen an.\r
+\r
+Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung \r
+abrufbar unter www.ferd-net.de.\r
+\r
+Im Einzelnen schließt die Nutzungsgewährung ein: \r
+=====================================\r
+\r
+FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils \r
+geltenden und akzeptierten Fassung (www.ferd-net.de) ein. \r
+Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, \r
+Weiterbearbeitung und Verbindung mit anderen Produkten.\r
+Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder \r
+anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige \r
+Anwendungen und Dienste. \r
+Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente \r
+und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um \r
+notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch \r
+die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. \r
+Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, \r
+unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit \r
+anderen Produkten einzuräumen. \r
+\r
+Die Lizenz wird kostenfrei zur Verfügung gestellt. \r
+\r
+Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen \r
+Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, \r
+Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, \r
+beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der \r
+Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.\r
+\r
+-->\r
+\r
+<rsm:CrossIndustryDocument xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"\r
+                                                  xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0"\r
+                                                  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">\r
+       <rsm:SpecifiedExchangedDocumentContext>\r
+               <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. -->\r
+               <ram:GuidelineSpecifiedDocumentContextParameter>\r
+                       <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:comfort</ram:ID>\r
+               </ram:GuidelineSpecifiedDocumentContextParameter>\r
+       </rsm:SpecifiedExchangedDocumentContext>\r
+       <rsm:HeaderExchangedDocument>\r
+               <ram:ID>RK21012345</ram:ID>\r
+               <ram:Name>RECHNUNGS-KORREKTUR</ram:Name>\r
+               <ram:TypeCode>380</ram:TypeCode>\r
+               <ram:IssueDateTime>\r
+                       <udt:DateTimeString format="102">20130916</udt:DateTimeString>\r
+               </ram:IssueDateTime>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Es bestehen Rabatt- oder Bonusvereinbarungen.</ram:Content>\r
+                       <ram:SubjectCode>AAK</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>MUSTERLIEFERANT GMBH\r
+BAHNHOFSTRASSE 99\r
+99199 MUSTERHAUSEN\r
+Geschäftsführung:\r
+Max Mustermann\r
+USt-IdNr: DE123456789\r
+Telefon: +49 932 431 0\r
+www.musterlieferant.de\r
+HRB Nr. 372876\r
+Amtsgericht Musterstadt\r
+GLN 4304171000002</ram:Content>\r
+                       <ram:SubjectCode>REG</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Bei Rückfragen:\r
+Telefon: +49 932 431 500\r
+E-Mail : max.muster@musterlieferant.de</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Ursprungsbeleg-Nr  : R87654321012345\r
+Reklamationsnummer : REKLA-2013-235</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Warenempfänger\r
+GLN 430417088093\r
+MUSTER-MARKT\r
+\r
+HAUPTSTRASSE 44\r
+31157 SARSTEDT\r
+\r
+Abteilung : 8211</ram:Content>\r
+               </ram:IncludedNote>\r
+       </rsm:HeaderExchangedDocument>\r
+       <rsm:SpecifiedSupplyChainTradeTransaction>\r
+               <ram:ApplicableSupplyChainTradeAgreement>\r
+                       <ram:SellerTradeParty>\r
+                               <ram:ID>549910</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4333741000005</ram:GlobalID>\r
+                               <ram:Name>MUSTERLIEFERANT GMBH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>99199</ram:PostcodeCode>\r
+                                       <ram:LineOne>BAHNHOFSTRASSE 99</ram:LineOne>\r
+                                       <ram:CityName>MUSTERHAUSEN</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="VA">DE123456789</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                       </ram:SellerTradeParty>\r
+                       <ram:BuyerTradeParty>\r
+                               <ram:ID>009420</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID>\r
+                               <ram:Name>MUSTER-KUNDE GMBH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>40235</ram:PostcodeCode>\r
+                                       <ram:LineOne>KUNDENWEG 88</ram:LineOne>\r
+                                       <ram:CityName>DUESSELDORF</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:BuyerTradeParty>\r
+                       <ram:BuyerOrderReferencedDocument>\r
+                               <ram:IssueDateTime>2013-08-01T00:00:00</ram:IssueDateTime>\r
+                               <ram:ID>B123456789</ram:ID>\r
+                       </ram:BuyerOrderReferencedDocument>\r
+               </ram:ApplicableSupplyChainTradeAgreement>\r
+               <ram:ApplicableSupplyChainTradeDelivery>\r
+                       <ram:ActualDeliverySupplyChainEvent>\r
+                               <ram:OccurrenceDateTime>\r
+                                       <udt:DateTimeString format="102">20130805</udt:DateTimeString>\r
+                               </ram:OccurrenceDateTime>\r
+                       </ram:ActualDeliverySupplyChainEvent>\r
+                       <ram:DeliveryNoteReferencedDocument>\r
+                               <ram:IssueDateTime>2013-08-05T00:00:00</ram:IssueDateTime>\r
+                               <ram:ID>L87654321012345</ram:ID>\r
+                       </ram:DeliveryNoteReferencedDocument>\r
+               </ram:ApplicableSupplyChainTradeDelivery>\r
+               <ram:ApplicableSupplyChainTradeSettlement>\r
+                       <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\r
+                       <ram:InvoiceeTradeParty>\r
+                               <ram:ID>009420</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID>\r
+                               <ram:Name>MUSTER-KUNDE GMBH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>40235</ram:PostcodeCode>\r
+                                       <ram:LineOne>KUNDENWEG 88</ram:LineOne>\r
+                                       <ram:CityName>DUESSELDORF</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:InvoiceeTradeParty>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">-0.92</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">-4.85</ram:BasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">-0.20</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">-2.82</ram:BasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                               <ram:ActualAmount currencyID="EUR">0.10</ram:ActualAmount>\r
+                               <ram:Reason>Rechnungsrabatt 1 -2,00% Basisbetrag: -5,00, MwSt.-% 19,0</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>\r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                               <ram:ActualAmount currencyID="EUR">0.06</ram:ActualAmount>\r
+                               <ram:Reason>Rechnungsrabatt 1 -2,00% Basisbetrag: -2,90, MwSt.-%  7,0</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>\r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                               <ram:ActualAmount currencyID="EUR">0.05</ram:ActualAmount>\r
+                               <ram:Reason>Rechnungsrabatt 2       Basisbetrag: -5,00, MwSt.-% 19,0</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>                    \r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                               <ram:ActualAmount currencyID="EUR">0.02</ram:ActualAmount>\r
+                               <ram:Reason>Rechnungsrabatt 2       Basisbetrag: -2,90, MwSt.-%  7,0</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>                    \r
+                       <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                               <ram:LineTotalAmount currencyID="EUR">-7.90</ram:LineTotalAmount>\r
+                               <ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount>\r
+                               <ram:AllowanceTotalAmount currencyID="EUR">-0.23</ram:AllowanceTotalAmount>\r
+                               <ram:TaxBasisTotalAmount currencyID="EUR">-7.67</ram:TaxBasisTotalAmount>\r
+                               <ram:TaxTotalAmount currencyID="EUR">-1.12</ram:TaxTotalAmount>\r
+                               <ram:GrandTotalAmount currencyID="EUR">-8.79</ram:GrandTotalAmount>\r
+                               <ram:TotalPrepaidAmount currencyID="EUR">0.00</ram:TotalPrepaidAmount>\r
+                               <ram:DuePayableAmount currencyID="EUR">0.00</ram:DuePayableAmount>\r
+                       </ram:SpecifiedTradeSettlementMonetarySummation>\r
+               </ram:ApplicableSupplyChainTradeSettlement>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                               <ram:AssociatedDocumentLineDocument>\r
+                                       <ram:IncludedNote>\r
+                                               <ram:Content>Gemäß Ihres Reklamationsschreibens vom 10.09.2013 und unseres Telefonats vom 12.09.2013 erhalten Sie die\r
+nachfolgenden Leistungen gutgeschrieben.</ram:Content>\r
+                                       </ram:IncludedNote>\r
+                               </ram:AssociatedDocumentLineDocument>\r
+                               <ram:SpecifiedSupplyChainTradeSettlement/>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument/>\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1.0000</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1.0000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">-5.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">-5.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">4123456000014</ram:GlobalID>\r
+                               <ram:SellerAssignedID>ZS997</ram:SellerAssignedID>\r
+                               <ram:Name>Zitronensäure 100ml</ram:Name>\r
+                               <ram:Description>Verpackung: Flasche\r
+VKE/Geb: 1</ram:Description>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument/>                   \r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1.5000</ram:ChargeAmount>\r
+                                       <ram:AppliedTradeAllowanceCharge>\r
+                                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                                               <ram:ActualAmount currencyID="EUR">0.0300</ram:ActualAmount>\r
+                                               <ram:Reason>Artikelrabatt 1: -2,00%  Basis: -1,500 €  Rabatt: 0,03 €</ram:Reason>\r
+                                       </ram:AppliedTradeAllowanceCharge>\r
+                                       <ram:AppliedTradeAllowanceCharge>\r
+                                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                                               <ram:ActualAmount currencyID="EUR">0.0200</ram:ActualAmount>\r
+                                               <ram:Reason>Artikelrabatt 2:         Basis:            Rabatt: 0,02 €/Stk.</ram:Reason>\r
+                                       </ram:AppliedTradeAllowanceCharge>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1.4500</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">-2.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">-2.90</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">4123456000021</ram:GlobalID>\r
+                               <ram:SellerAssignedID>GZ250</ram:SellerAssignedID>\r
+                               <ram:Name>Gelierzucker Extra 250g</ram:Name>                            \r
+                               <ram:Description>Verpackung: Karton\r
+VKE/Geb: 1\r
+                               </ram:Description>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>         \r
+       </rsm:SpecifiedSupplyChainTradeTransaction>\r
+</rsm:CrossIndustryDocument>\r
diff --git a/tests/samples/ZUGFeRD_1p0_COMFORT_SEPA_Prenotification.xml b/tests/samples/ZUGFeRD_1p0_COMFORT_SEPA_Prenotification.xml
new file mode 100644 (file)
index 0000000..5735df8
--- /dev/null
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- \r
+\r
+Nutzungsrechte \r
+ZUGFeRD Datenformat Version 1.0, 25.6.2014\r
+Beispiel Version 29.09.2014\r
+\r
+Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung \r
+eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht \r
+diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)\r
+\r
+Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung \r
+frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine \r
+Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht \r
+diskriminierenden Bedingungen an.\r
+\r
+Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung \r
+abrufbar unter www.ferd-net.de.\r
+\r
+Im Einzelnen schließt die Nutzungsgewährung ein: \r
+=====================================\r
+\r
+FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils \r
+geltenden und akzeptierten Fassung (www.ferd-net.de) ein. \r
+Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, \r
+Weiterbearbeitung und Verbindung mit anderen Produkten.\r
+Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder \r
+anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige \r
+Anwendungen und Dienste. \r
+Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente \r
+und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um \r
+notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch \r
+die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. \r
+Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, \r
+unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit \r
+anderen Produkten einzuräumen. \r
+\r
+Die Lizenz wird kostenfrei zur Verfügung gestellt. \r
+\r
+Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen \r
+Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, \r
+Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, \r
+beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der \r
+Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.\r
+\r
+-->\r
+<rsm:CrossIndustryDocument xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"\r
+                                                  xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0"\r
+                                                  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">\r
+       <rsm:SpecifiedExchangedDocumentContext>\r
+               <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. -->\r
+               <ram:GuidelineSpecifiedDocumentContextParameter>\r
+                       <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:comfort</ram:ID>\r
+               </ram:GuidelineSpecifiedDocumentContextParameter>\r
+       </rsm:SpecifiedExchangedDocumentContext>\r
+       <rsm:HeaderExchangedDocument>\r
+               <ram:ID>471102</ram:ID>\r
+               <ram:Name>RECHNUNG</ram:Name>\r
+               <ram:TypeCode>380</ram:TypeCode>\r
+               <ram:IssueDateTime><udt:DateTimeString format="102">20140305</udt:DateTimeString></ram:IssueDateTime>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Rechnung gemäß Bestellung Nr. 2014-471331 vom 01.03.2014.</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Es bestehen Rabatt- und Bonusvereinbarungen.</ram:Content>\r
+                       <ram:SubjectCode>AAK</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Lieferant GmbH                             \r
+Lieferantenstraße 20                          \r
+80333 München                         \r
+Deutschland                            \r
+Geschäftsführer: Hans Muster\r
+Handelsregisternummer: H A 123\r
+</ram:Content>\r
+<ram:SubjectCode>REG</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+       </rsm:HeaderExchangedDocument>\r
+       <rsm:SpecifiedSupplyChainTradeTransaction>\r
+               <ram:ApplicableSupplyChainTradeAgreement>\r
+                       <ram:SellerTradeParty>\r
+                               <ram:GlobalID schemeID="0088">4000001123452</ram:GlobalID>\r
+                               <ram:Name>Lieferant GmbH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>80333</ram:PostcodeCode>\r
+                                       <ram:LineOne>Lieferantenstraße 20</ram:LineOne>\r
+                                       <ram:CityName>München</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="FC">201/113/40209</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="VA">DE123456789</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                       </ram:SellerTradeParty>\r
+                       <ram:BuyerTradeParty>\r
+                               <ram:ID>GE2020211</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4000001987658</ram:GlobalID>\r
+                               <ram:Name>Kunden AG Mitte</ram:Name>\r
+                               <ram:DefinedTradeContact>\r
+                                       <ram:PersonName>Hans Muster</ram:PersonName>\r
+                               </ram:DefinedTradeContact>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>69876</ram:PostcodeCode>\r
+                                       <ram:LineOne>Kundenstraße 15</ram:LineOne>\r
+                                       <ram:CityName>Frankfurt</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:BuyerTradeParty>\r
+               </ram:ApplicableSupplyChainTradeAgreement>\r
+               <ram:ApplicableSupplyChainTradeDelivery>\r
+                       <ram:ActualDeliverySupplyChainEvent>\r
+                               <ram:OccurrenceDateTime><udt:DateTimeString format="102">20130305</udt:DateTimeString> </ram:OccurrenceDateTime>\r
+                       </ram:ActualDeliverySupplyChainEvent>\r
+               </ram:ApplicableSupplyChainTradeDelivery>\r
+               <ram:ApplicableSupplyChainTradeSettlement>\r
+                       <ram:PaymentReference>2013-471102</ram:PaymentReference>\r
+                       <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\r
+                       <ram:SpecifiedTradeSettlementPaymentMeans>\r
+                               <ram:TypeCode>49</ram:TypeCode>\r
+                               <ram:Information>SEPA-Lastschrift</ram:Information>\r
+                               <ram:ID schemeAgencyID="DE98ZZZ09999999999">REF A-123</ram:ID>\r
+                               <ram:PayerPartyDebtorFinancialAccount>\r
+                                       <ram:IBANID>DE21860000000086001055</ram:IBANID>\r
+                               </ram:PayerPartyDebtorFinancialAccount>\r
+                               <ram:PayerSpecifiedDebtorFinancialInstitution>\r
+                                       <ram:BICID>MARKDEF1860</ram:BICID>\r
+                                       <ram:Name>Deutsche Bundesbank -Filiale Leipzig-</ram:Name>\r
+                               </ram:PayerSpecifiedDebtorFinancialInstitution>\r
+                       </ram:SpecifiedTradeSettlementPaymentMeans>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">19.25</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">275.00</ram:BasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">37.62</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">198.00</ram:BasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:SpecifiedTradePaymentTerms>\r
+                               <ram:Description>Der Betrag in Höhe von EUR 529,87 wird am 20.03.2014 von Ihrem Konto mit IBAN DE21860000000086001055\r
+und BIC MARKDEF1860, Deutsche Bundesbank -Filiale Leipzig- per SEPA-Lastschrift eingezogen.\r
+Mandatsreferenz: REF A-123, Gläubiger-Identifikationsnummer: DE98ZZZ09999999999</ram:Description>\r
+                               <ram:DueDateDateTime><udt:DateTimeString format="102">20140320</udt:DateTimeString></ram:DueDateDateTime>\r
+                       </ram:SpecifiedTradePaymentTerms>\r
+                       <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                               <ram:LineTotalAmount currencyID="EUR">473.00</ram:LineTotalAmount>\r
+                               <ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount>\r
+                               <ram:AllowanceTotalAmount currencyID="EUR">0.00</ram:AllowanceTotalAmount>\r
+                               <ram:TaxBasisTotalAmount currencyID="EUR">473.00</ram:TaxBasisTotalAmount>\r
+                               <ram:TaxTotalAmount currencyID="EUR">56.87</ram:TaxTotalAmount>\r
+                               <ram:GrandTotalAmount currencyID="EUR">529.87</ram:GrandTotalAmount>\r
+                               <ram:TotalPrepaidAmount currencyID="EUR">0.00</ram:TotalPrepaidAmount>\r
+                               <ram:DuePayableAmount currencyID="EUR">529.87</ram:DuePayableAmount>\r
+                       </ram:SpecifiedTradeSettlementMonetarySummation>\r
+               </ram:ApplicableSupplyChainTradeSettlement>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:LineID>1</ram:LineID>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">9.9000</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">9.9000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">20.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">198.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0160">4012345001235</ram:GlobalID>\r
+                               <ram:SellerAssignedID>TB100A4</ram:SellerAssignedID>\r
+                               <ram:Name>Trennblätter A4</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:LineID>2</ram:LineID>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">5.5000</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">5.5000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">50.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">275.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0160">4000050986428</ram:GlobalID>\r
+                               <ram:SellerAssignedID>ARNR2</ram:SellerAssignedID>\r
+                               <ram:Name>Joghurt Banane</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>         \r
+       </rsm:SpecifiedSupplyChainTradeTransaction>\r
+</rsm:CrossIndustryDocument>
\ No newline at end of file
diff --git a/tests/samples/ZUGFeRD_1p0_COMFORT_Sachversicherung_berechneter_Steuersatz.xml b/tests/samples/ZUGFeRD_1p0_COMFORT_Sachversicherung_berechneter_Steuersatz.xml
new file mode 100644 (file)
index 0000000..d94b4c7
--- /dev/null
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- \r
+\r
+Nutzungsrechte \r
+ZUGFeRD Datenformat Version 1.0, 25.6.2014\r
+Beispiel Version 29.09.2014\r
+\r
+Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung \r
+eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht \r
+diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)\r
+\r
+Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung \r
+frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine \r
+Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht \r
+diskriminierenden Bedingungen an.\r
+\r
+Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung \r
+abrufbar unter www.ferd-net.de.\r
+\r
+Im Einzelnen schließt die Nutzungsgewährung ein: \r
+=====================================\r
+\r
+FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils \r
+geltenden und akzeptierten Fassung (www.ferd-net.de) ein. \r
+Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, \r
+Weiterbearbeitung und Verbindung mit anderen Produkten.\r
+Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder \r
+anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige \r
+Anwendungen und Dienste. \r
+Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente \r
+und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um \r
+notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch \r
+die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. \r
+Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, \r
+unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit \r
+anderen Produkten einzuräumen. \r
+\r
+Die Lizenz wird kostenfrei zur Verfügung gestellt. \r
+\r
+Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen \r
+Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, \r
+Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, \r
+beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der \r
+Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.\r
+\r
+-->\r
+<rsm:CrossIndustryDocument xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"\r
+                                                  xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0"\r
+                                                  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">\r
+       <rsm:SpecifiedExchangedDocumentContext>\r
+               <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. -->\r
+               <ram:GuidelineSpecifiedDocumentContextParameter>\r
+                       <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:comfort</ram:ID>\r
+               </ram:GuidelineSpecifiedDocumentContextParameter>\r
+       </rsm:SpecifiedExchangedDocumentContext>\r
+       <rsm:HeaderExchangedDocument>\r
+               <ram:ID>00.123.456.7-2014-1</ram:ID>\r
+               <ram:Name>Beitragsrechnung</ram:Name>\r
+               <ram:TypeCode>380</ram:TypeCode>\r
+               <ram:IssueDateTime><udt:DateTimeString format="102">20140418</udt:DateTimeString></ram:IssueDateTime>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Sachversicherungsvertrag Nr: 00.123.456.7\r
+(Bei Schriftwechsel und Zahlung bitte angeben.)</ram:Content>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>MVM Musterhafter\r
+Versicherungsverein Musterstadt a.G.\r
+Versicherungsbüro\r
+Muster\r
+Musterstr. 12\r
+12345 Musterstadt\r
+Tel.: 0123/45678\r
+Fax.: 01231/99 45678\r
+Mo.-Fr. 08.30 - 12.30 Uhr\r
+Mo.-Fr. 14.00 - 17.00 Uhr\r
+Mo-Fr 8.00-20.00 Uhr, Sa 8.00-14.00 Uhr\r
+</ram:Content>\r
+                       <ram:SubjectCode>REG</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+       </rsm:HeaderExchangedDocument>\r
+       <rsm:SpecifiedSupplyChainTradeTransaction>\r
+               <ram:ApplicableSupplyChainTradeAgreement>\r
+                       <ram:BuyerReference>00.123.456.7</ram:BuyerReference>\r
+                       <ram:SellerTradeParty>\r
+                               <ram:Name>MVM Musterhafter\r
+Versicherungsverein Musterstadt a.G.</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>12345</ram:PostcodeCode>\r
+                                       <ram:LineOne>Musterstr. 12</ram:LineOne>\r
+                                       <ram:CityName>Musterstadt</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:SellerTradeParty>\r
+                       <ram:BuyerTradeParty>\r
+                               <ram:Name>Herrn\r
+Max Mustermann</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>12346</ram:PostcodeCode>\r
+                                       <ram:LineOne>Musterstr. 11</ram:LineOne>\r
+                                       <ram:CityName>Bad Musterhausen</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:BuyerTradeParty>\r
+               </ram:ApplicableSupplyChainTradeAgreement>\r
+               <ram:ApplicableSupplyChainTradeDelivery>\r
+                       <ram:ActualDeliverySupplyChainEvent>\r
+                               <ram:OccurrenceDateTime><udt:DateTimeString format="102">20150521</udt:DateTimeString> </ram:OccurrenceDateTime>\r
+                       </ram:ActualDeliverySupplyChainEvent>\r
+               </ram:ApplicableSupplyChainTradeDelivery>\r
+               <ram:ApplicableSupplyChainTradeSettlement>\r
+                       <ram:PaymentReference>00.123.456.7</ram:PaymentReference>\r
+                       <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\r
+                       <ram:SpecifiedTradeSettlementPaymentMeans>\r
+                               <ram:TypeCode>42</ram:TypeCode>\r
+                               <ram:Information>Überweisung</ram:Information>\r
+                               <ram:PayeePartyCreditorFinancialAccount>\r
+                                       <ram:IBANID>DE75123456780000001234</ram:IBANID>\r
+                               </ram:PayeePartyCreditorFinancialAccount>\r
+                               <ram:PayeeSpecifiedCreditorFinancialInstitution>\r
+                                       <ram:BICID>WELADED1MST</ram:BICID>\r
+                                       <ram:Name>Sparkasse Musterstadt Ost</ram:Name>\r
+                               </ram:PayeeSpecifiedCreditorFinancialInstitution>\r
+                       </ram:SpecifiedTradeSettlementPaymentMeans>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">163.40</ram:CalculatedAmount>\r
+                               <ram:TypeCode>ZF_INSURANCE_TAX</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">1000.00</ram:BasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>16.34</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:BillingSpecifiedPeriod><ram:StartDateTime>\r
+                               <udt:DateTimeString format="102">20140521</udt:DateTimeString>\r
+                       </ram:StartDateTime>\r
+                       <ram:EndDateTime>\r
+                               <udt:DateTimeString format="102">20150521</udt:DateTimeString>\r
+                       </ram:EndDateTime></ram:BillingSpecifiedPeriod>\r
+                       <ram:SpecifiedTradePaymentTerms>\r
+                               <ram:Description>Einen zu zahlenden Beitrag überweisen Sie bitte auf folgende Bankverbindung: IBAN DE75123456780000001234, BIC WELADED1MST, Sparkasse Musterstadt Ost.\r
+Einfacher für Sie ist es, wenn Sie uns ein SEPA-Lastschriftmandat erteilen. Wir würden dann zu der Fälligkeit 21.05.2014 den Beitrag von dem uns bekannten Konto abbuchen. In diesem Fall würden Sie, sofern sich keine Beitragsänderung ergibt, zukünftig keine Zwischenrechnung erhalten.\r
+Beitragsgutschriften aus Ihrem Vertrag erstatten wir per Scheck.\r
+</ram:Description>\r
+                               <ram:DueDateDateTime><udt:DateTimeString format="102">20140521</udt:DateTimeString></ram:DueDateDateTime>\r
+                       </ram:SpecifiedTradePaymentTerms>\r
+                       <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                               <ram:LineTotalAmount currencyID="EUR">1000.00</ram:LineTotalAmount>\r
+                               <ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount>\r
+                               <ram:AllowanceTotalAmount currencyID="EUR">0.00</ram:AllowanceTotalAmount>\r
+                               <ram:TaxBasisTotalAmount currencyID="EUR">1000.00</ram:TaxBasisTotalAmount>\r
+                               <ram:TaxTotalAmount currencyID="EUR">163.40</ram:TaxTotalAmount>\r
+                               <ram:GrandTotalAmount currencyID="EUR">1163.40</ram:GrandTotalAmount>\r
+                               <ram:TotalPrepaidAmount currencyID="EUR">0.00</ram:TotalPrepaidAmount>\r
+                               <ram:DuePayableAmount currencyID="EUR">1163.40</ram:DuePayableAmount>\r
+                       </ram:SpecifiedTradeSettlementMonetarySummation>\r
+               </ram:ApplicableSupplyChainTradeSettlement>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:IncludedNote>\r
+                                       <ram:Content>Sehr geehrter Herr Mustermann,\r
+zu Ihrer Verbundenen Wohngebäudeversicherung berechnen wir Ihnen für den Zeitraum vom 21.05.2014 bis\r
+21.05.2015 nachstehenden Beitrag:\r
+Versicherungsort: Muster Str. 11, 12345 Bad Musterhausen\r
+- Weisen Sie uns bitte auf eine Änderung Ihrer Anschrift und/oder Ihres Versicherungsgrundstückes hin -\r
+\r
+Vereinbarter Versicherungsschutz:</ram:Content>\r
+                               </ram:IncludedNote>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement />\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1000.0000</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1000.0000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">1.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>ZF_INSURANCE_TAX</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>16.34</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">1000.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:Name>Verbundene Wohngebäudeversicherung</ram:Name>\r
+                               <ram:Description>- Feuerversicherung - Teil A § 2 62.000 MK1914\r
+- Leitungswasserversicherung - Teil A § 3 62.000 MK1914\r
+- Sturm- und Hagelversicherung - Teil A § 4 Ziff. 2 62.000 MK1914\r
+- WohngebäudePlus und zusätzliche Einschlüsse gemäß Antrag\r
+- Weitere Elementargefahren - Teil A § 4 Ziff. 3 62.000 MK1914\r
+</ram:Description>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:IncludedNote>\r
+                                       <ram:Content>Der Versicherungsteuerbetrag in der Verbundenen Wohngebäudeversicherung berechnet sich mit dem Versicherungsteuersatz von 19 % von 86 % des Versicherungsentgelts (Nettobeitrag).\r
+\r
+Bitte lösen Sie diese Rechnung auch bei beantragten Vertragsänderungen ein. Die Zahlung wird verrechnet.\r
+Durch die Baupreisentwicklung hat sich der Gleitende Neuwertfaktor erhöht auf 16,6 (Teil A §12 VGB2011). Die Haftung, die Leistung des Versicherers und der Beitrag wurden entsprechend geändert.\r
+Sofern sich der Wert Ihres Gebäudes während der laufenden Versicherungsperiode durch Um-, An- oder Ausbauten erhöht hat, sprechen Sie bitte unbedingt mit Ihrer Vertrauensfrau / Ihrem Vertrauensmann! Die Versicherungssumme für Ihr Gebäude muss angepasst werden.\r
+Dieses Dokument dient auch zur Vorlage beim Finanzamt.\r
+\r
+\r
+\r
+Freundliche Grüße</ram:Content>\r
+                               </ram:IncludedNote>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement />\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+       </rsm:SpecifiedSupplyChainTradeTransaction>\r
+</rsm:CrossIndustryDocument>
\ No newline at end of file
diff --git a/tests/samples/ZUGFeRD_1p0_EXTENDED_Kostenrechnung.xml b/tests/samples/ZUGFeRD_1p0_EXTENDED_Kostenrechnung.xml
new file mode 100644 (file)
index 0000000..5315747
--- /dev/null
@@ -0,0 +1,478 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- \r
+\r
+Nutzungsrechte \r
+ZUGFeRD Datenformat Version 1.0, 25.6.2014\r
+Beispiel Version 29.09.2014\r
+\r
+Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung \r
+eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht \r
+diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)\r
+\r
+Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung \r
+frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine \r
+Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht \r
+diskriminierenden Bedingungen an.\r
+\r
+Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung \r
+abrufbar unter www.ferd-net.de.\r
+\r
+Im Einzelnen schließt die Nutzungsgewährung ein: \r
+=====================================\r
+\r
+FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils \r
+geltenden und akzeptierten Fassung (www.ferd-net.de) ein. \r
+Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, \r
+Weiterbearbeitung und Verbindung mit anderen Produkten.\r
+Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder \r
+anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige \r
+Anwendungen und Dienste. \r
+Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente \r
+und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um \r
+notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch \r
+die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. \r
+Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, \r
+unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit \r
+anderen Produkten einzuräumen. \r
+\r
+Die Lizenz wird kostenfrei zur Verfügung gestellt. \r
+\r
+Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen \r
+Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, \r
+Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, \r
+beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der \r
+Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.\r
+\r
+-->\r
+\r
+<rsm:CrossIndustryDocument xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"\r
+                                                  xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0"\r
+                                                  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">\r
+       <rsm:SpecifiedExchangedDocumentContext>\r
+               <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. -->\r
+               <ram:GuidelineSpecifiedDocumentContextParameter>\r
+                       <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:extended</ram:ID>\r
+               </ram:GuidelineSpecifiedDocumentContextParameter>\r
+       </rsm:SpecifiedExchangedDocumentContext>\r
+       <rsm:HeaderExchangedDocument>\r
+               <ram:ID>KR87654321012</ram:ID>\r
+               <ram:Name>KOSTENRECHNUNG</ram:Name>\r
+               <ram:TypeCode>380</ram:TypeCode>\r
+               <ram:IssueDateTime>\r
+                       <udt:DateTimeString format="102">20131006</udt:DateTimeString>\r
+               </ram:IssueDateTime>\r
+               <ram:IncludedNote>\r
+                       <ram:ContentCode>ST3</ram:ContentCode>\r
+                       <ram:Content>Es bestehen Rabatt- oder Bonusvereinbarungen.</ram:Content>\r
+                       <ram:SubjectCode>AAK</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:ContentCode>EEV</ram:ContentCode>\r
+                       <ram:Content>Der Verkäufer bleibt Eigentümer der Waren bis zur vollständigen Erfüllung der Kaufpreisforderung.</ram:Content>\r
+                       <ram:SubjectCode>AAJ</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>MUSTERLIEFERANT GMBH\r
+BAHNHOFSTRASSE 99\r
+99199 MUSTERHAUSEN\r
+Geschäftsführung:\r
+Max Mustermann\r
+USt-IdNr: DE123456789\r
+Telefon: +49 932 431 0\r
+www.musterlieferant.de\r
+HRB Nr. 372876\r
+Amtsgericht Musterstadt\r
+GLN 4304171000002</ram:Content>\r
+                       <ram:SubjectCode>REG</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+       </rsm:HeaderExchangedDocument>\r
+       <rsm:SpecifiedSupplyChainTradeTransaction>\r
+               <ram:ApplicableSupplyChainTradeAgreement>\r
+                       <ram:SellerTradeParty>\r
+                               <ram:ID>549910</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4333741000005</ram:GlobalID>\r
+                               <ram:Name>MUSTERLIEFERANT GMBH</ram:Name>\r
+                               <ram:DefinedTradeContact>\r
+                                       <ram:TelephoneUniversalCommunication>\r
+                                               <ram:CompleteNumber>+49 932 431 500</ram:CompleteNumber>\r
+                                       </ram:TelephoneUniversalCommunication>\r
+                                       <ram:EmailURIUniversalCommunication>\r
+                                               <ram:URIID>max.mustermann@musterlieferant.de</ram:URIID>\r
+                                       </ram:EmailURIUniversalCommunication>\r
+                               </ram:DefinedTradeContact>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>99199</ram:PostcodeCode>\r
+                                       <ram:LineOne>BAHNHOFSTRASSE 99</ram:LineOne>\r
+                                       <ram:CityName>MUSTERHAUSEN</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="FC">5133081508159</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                       </ram:SellerTradeParty>\r
+                       <ram:BuyerTradeParty>\r
+                               <ram:ID>339420</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID>\r
+                               <ram:Name>MUSTER-KUNDE GMBH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>40235</ram:PostcodeCode>\r
+                                       <ram:LineOne>KUNDENWEG 88</ram:LineOne>\r
+                                       <ram:CityName>DUESSELDORF</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:BuyerTradeParty>\r
+                       <ram:ContractReferencedDocument>\r
+                               <ram:IssueDateTime>2013-04-01T00:00:00</ram:IssueDateTime>\r
+                               <ram:ID>V88456789</ram:ID>                              \r
+                       </ram:ContractReferencedDocument>\r
+                       <ram:AdditionalReferencedDocument>\r
+                               <ram:IssueDateTime>2014-04-02T00:00:00</ram:IssueDateTime>\r
+                               <ram:TypeCode>VN</ram:TypeCode>\r
+                               <ram:ID>A777123</ram:ID>\r
+                       </ram:AdditionalReferencedDocument>\r
+               </ram:ApplicableSupplyChainTradeAgreement>\r
+               <ram:ApplicableSupplyChainTradeDelivery>\r
+                       <ram:ShipToTradeParty>\r
+                               <ram:GlobalID schemeID="0088">4304171088093</ram:GlobalID>\r
+                               <ram:Name>MUSTER-MARKT</ram:Name>\r
+                               <ram:DefinedTradeContact>\r
+                                       <ram:DepartmentName>7322</ram:DepartmentName>\r
+                               </ram:DefinedTradeContact>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>31157</ram:PostcodeCode>\r
+                                       <ram:LineOne>HAUPTSTRASSE 44</ram:LineOne>\r
+                                       <ram:CityName>SARSTEDT</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:ShipToTradeParty>\r
+                       <ram:ShipFromTradeParty>\r
+                               <ram:GlobalID schemeID="0088">4333741002207</ram:GlobalID>\r
+                               <ram:Name>KOSTENLIEFERANT GMBH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>99199</ram:PostcodeCode>\r
+                                       <ram:LineOne>Werk 3</ram:LineOne>\r
+                                       <ram:LineTwo>Hauptstr. 1</ram:LineTwo>\r
+                                       <ram:CityName>MUSTERHAUSEN</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:ShipFromTradeParty>\r
+                       <ram:ActualDeliverySupplyChainEvent>                            \r
+                               <ram:OccurrenceDateTime>\r
+                                       <udt:DateTimeString format="102">20130930</udt:DateTimeString>\r
+                               </ram:OccurrenceDateTime>\r
+                       </ram:ActualDeliverySupplyChainEvent>\r
+                       <ram:DeliveryNoteReferencedDocument>\r
+                               <ram:IssueDateTime>2013-09-30T00:00:00</ram:IssueDateTime>\r
+                               <ram:ID>L87654321012</ram:ID>\r
+                       </ram:DeliveryNoteReferencedDocument>\r
+               </ram:ApplicableSupplyChainTradeDelivery>\r
+               <ram:ApplicableSupplyChainTradeSettlement>\r
+                       <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\r
+                       <ram:InvoiceeTradeParty>\r
+                               <ram:ID>339420</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID>\r
+                               <ram:Name>MUSTER-KUNDE GMBH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>40235</ram:PostcodeCode>\r
+                                       <ram:LineOne>KUNDENWEG 88</ram:LineOne>\r
+                                       <ram:CityName>DUESSELDORF</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:InvoiceeTradeParty>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">200.65</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">1056.05</ram:BasisAmount>\r
+                               <ram:LineTotalBasisAmount currencyID="EUR">1062.60</ram:LineTotalBasisAmount>\r
+                               <ram:AllowanceChargeBasisAmount currencyID="EUR">-6.55</ram:AllowanceChargeBasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:BillingSpecifiedPeriod>\r
+                               <ram:StartDateTime>\r
+                                       <udt:DateTimeString format="102">20130102</udt:DateTimeString>\r
+                               </ram:StartDateTime>\r
+                               <ram:EndDateTime>\r
+                                       <udt:DateTimeString format="102">20130930</udt:DateTimeString>\r
+                               </ram:EndDateTime>\r
+                       </ram:BillingSpecifiedPeriod>\r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                               <ram:BasisAmount currencyID="EUR">1077.60</ram:BasisAmount>\r
+                               <ram:ActualAmount currencyID="EUR">-21.55</ram:ActualAmount>\r
+                               <ram:ReasonCode>EAB</ram:ReasonCode>\r
+                               <ram:Reason>Skonto sofort</ram:Reason>                          \r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>\r
+                       <ram:SpecifiedLogisticsServiceCharge>\r
+                               <ram:Description>Transportkosten: Frachbetrag</ram:Description>\r
+                               <ram:AppliedAmount currencyID="EUR">15.00</ram:AppliedAmount>\r
+                               <ram:AppliedTradeTax>\r
+                                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                                               <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:AppliedTradeTax>                          \r
+                       </ram:SpecifiedLogisticsServiceCharge>\r
+                       <ram:SpecifiedTradePaymentTerms>\r
+                               <ram:Description>Skontovereinbarung: 2% bei Zahlung innerhalb 10 Tagen nach Rechnungsdatum</ram:Description>\r
+                               <ram:ApplicableTradePaymentDiscountTerms>\r
+                                               <ram:BasisDateTime>\r
+                                                       <udt:DateTimeString format="102">20131006</udt:DateTimeString>\r
+                                               </ram:BasisDateTime>\r
+                                               <ram:BasisPeriodMeasure unitCode="DAY">10</ram:BasisPeriodMeasure>\r
+                                               <ram:CalculationPercent>2.00</ram:CalculationPercent>\r
+                               </ram:ApplicableTradePaymentDiscountTerms>\r
+                       </ram:SpecifiedTradePaymentTerms>\r
+                       <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                               <ram:LineTotalAmount currencyID="EUR">1062.60</ram:LineTotalAmount>\r
+                               <ram:ChargeTotalAmount currencyID="EUR">15.00</ram:ChargeTotalAmount>\r
+                               <ram:AllowanceTotalAmount currencyID="EUR">21.55</ram:AllowanceTotalAmount>\r
+                               <ram:TaxBasisTotalAmount currencyID="EUR">1056.05</ram:TaxBasisTotalAmount>\r
+                               <ram:TaxTotalAmount currencyID="EUR">200.65</ram:TaxTotalAmount>\r
+                               <ram:GrandTotalAmount currencyID="EUR">1256.70</ram:GrandTotalAmount>\r
+                               <ram:TotalPrepaidAmount currencyID="EUR">0.00</ram:TotalPrepaidAmount>\r
+                               <ram:DuePayableAmount currencyID="EUR">1256.70</ram:DuePayableAmount>\r
+                       </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       <ram:ReceivableSpecifiedTradeAccountingAccount>\r
+                               <ram:ID>4430-MG-100</ram:ID>\r
+                       </ram:ReceivableSpecifiedTradeAccountingAccount>\r
+               </ram:ApplicableSupplyChainTradeSettlement>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:IncludedNote>\r
+                                       <ram:Content>Wichtige Information: Bei Bestellungen bis zum 19.12. ist die Auslieferung bis spätestens 23.12. garantiert.</ram:Content>\r
+                               </ram:IncludedNote>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement />\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">0.0520</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">0.0520</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="KWH">10000.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:BillingSpecifiedPeriod>\r
+                                       <ram:StartDateTime>\r
+                                               <udt:DateTimeString format="102">20130901</udt:DateTimeString>\r
+                                       </ram:StartDateTime>\r
+                                       <ram:EndDateTime>\r
+                                               <udt:DateTimeString format="102">20130930</udt:DateTimeString>\r
+                                       </ram:EndDateTime>\r
+                               </ram:BillingSpecifiedPeriod>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">520.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>                                \r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">4123456000014</ram:GlobalID>\r
+                               <ram:SellerAssignedID>WA997</ram:SellerAssignedID>\r
+                               <ram:Name>Wirkarbeit HT</ram:Name>\r
+                               <ram:ApplicableProductCharacteristic>\r
+                                       <ram:TypeCode>METER_LOCATION</ram:TypeCode>\r
+                                       <ram:Description>Zählpunkt</ram:Description>\r
+                                       <ram:Value>DE0001346484600000000000000100038</ram:Value>\r
+                               </ram:ApplicableProductCharacteristic>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">0.0205</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">0.0205</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="KWH">10000.0000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:BillingSpecifiedPeriod>\r
+                                       <ram:StartDateTime>\r
+                                               <udt:DateTimeString format="616">201338</udt:DateTimeString>\r
+                                       </ram:StartDateTime>\r
+                                       <ram:EndDateTime>\r
+                                               <udt:DateTimeString format="616">201338</udt:DateTimeString>\r
+                                       </ram:EndDateTime>\r
+                               </ram:BillingSpecifiedPeriod>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">205.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>                                \r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">4123456000021</ram:GlobalID>\r
+                               <ram:SellerAssignedID>ÖST250</ram:SellerAssignedID>\r
+                               <ram:Name>Ökosteuer Lieferant</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">15.0000</ram:ChargeAmount>\r
+                                       <ram:AppliedTradeAllowanceCharge>\r
+                                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                                               <ram:CalculationPercent>30.00</ram:CalculationPercent>                                          \r
+                                               <ram:BasisAmount currencyID="EUR">15.0000</ram:BasisAmount>\r
+                                               <ram:ActualAmount currencyID="EUR">4.5000</ram:ActualAmount>\r
+                                               <ram:Reason>Artikelrabatt 1</ram:Reason>\r
+                                       </ram:AppliedTradeAllowanceCharge>                              \r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">10.5000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="HUR">27.5000</ram:BilledQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:BillingSpecifiedPeriod>\r
+                                       <ram:StartDateTime>\r
+                                               <udt:DateTimeString format="616">201336</udt:DateTimeString>\r
+                                       </ram:StartDateTime>\r
+                                       <ram:EndDateTime>\r
+                                               <udt:DateTimeString format="616">201336</udt:DateTimeString>\r
+                                       </ram:EndDateTime>\r
+                               </ram:BillingSpecifiedPeriod>\r
+                               <ram:SpecifiedTradeAccountingAccount>\r
+                                       <ram:ID>5465-8876</ram:ID>\r
+                               </ram:SpecifiedTradeAccountingAccount>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">288.75</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">4260331811362</ram:GlobalID>\r
+                               <ram:BuyerAssignedID>K6521</ram:BuyerAssignedID>\r
+                               <ram:Name>Kommissionierer 1250032 D. Muster</ram:Name>\r
+                               <ram:Description>Besteller: Hr. Mayer, Personalnr. 4488</ram:Description>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:BuyerOrderReferencedDocument>\r
+                                       <ram:ID>B61006152350010</ram:ID>\r
+                               </ram:BuyerOrderReferencedDocument>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">0.0105</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">0.0105</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">3500.0000</ram:BilledQuantity>\r
+                               <ram:DeliveryNoteReferencedDocument>\r
+                                       <ram:ID>L87654321011</ram:ID>\r
+                               </ram:DeliveryNoteReferencedDocument>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">36.75</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">2001015001325</ram:GlobalID>                              \r
+                               <ram:SellerAssignedID>FB05</ram:SellerAssignedID>                               \r
+                               <ram:BuyerAssignedID>K4322</ram:BuyerAssignedID>                                \r
+                               <ram:Name>FALTENBEUTEL 16x6x28 CM</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />                  \r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:BuyerOrderReferencedDocument>\r
+                                       <ram:ID>B610061523500010</ram:ID>\r
+                               </ram:BuyerOrderReferencedDocument>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">0.0100</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">0.0100</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">1210.0000</ram:BilledQuantity>\r
+                               <ram:ShipToTradeParty>\r
+                                       <ram:Name>Mustermarkt</ram:Name>\r
+                                       <ram:DefinedTradeContact>\r
+                                               <ram:DepartmentName>Sekretariat-2</ram:DepartmentName>\r
+                                       </ram:DefinedTradeContact>\r
+                                       <ram:PostalTradeAddress>\r
+                                               <ram:PostcodeCode>31157</ram:PostcodeCode>\r
+                                               <ram:LineOne>Hauptstr. 46</ram:LineOne>\r
+                                               <ram:CityName>Sarstedt</ram:CityName>\r
+                                               <ram:CountryID>DE</ram:CountryID>\r
+                                       </ram:PostalTradeAddress>                                       \r
+                               </ram:ShipToTradeParty>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:BillingSpecifiedPeriod>\r
+                                       <ram:StartDateTime>\r
+                                               <udt:DateTimeString format="102">20130915</udt:DateTimeString>\r
+                                       </ram:StartDateTime>\r
+                                       <ram:EndDateTime>\r
+                                               <udt:DateTimeString format="102">20130930</udt:DateTimeString>\r
+                                       </ram:EndDateTime>\r
+                               </ram:BillingSpecifiedPeriod>\r
+                               <ram:SpecifiedTradeAccountingAccount>\r
+                                       <ram:ID>4430-MG-002</ram:ID>\r
+                               </ram:SpecifiedTradeAccountingAccount>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">12.10</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">4123456000038</ram:GlobalID>\r
+                               <ram:SellerAssignedID>KOP05</ram:SellerAssignedID>                              \r
+                               <ram:BuyerAssignedID>K4322</ram:BuyerAssignedID>                                \r
+                               <ram:Name>Kopierpapier A4</ram:Name>\r
+                               <ram:Description>Zählerstand von-bis: 543210 - 544420</ram:Description>\r
+                               <ram:ApplicableProductCharacteristic>\r
+                                       <ram:TypeCode>METER_NUMBER</ram:TypeCode>\r
+                                       <ram:Description>Zähler-Nr.</ram:Description>\r
+                                       <ram:Value>MG-X79318</ram:Value>\r
+                               </ram:ApplicableProductCharacteristic>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+       </rsm:SpecifiedSupplyChainTradeTransaction>\r
+</rsm:CrossIndustryDocument>\r
diff --git a/tests/samples/ZUGFeRD_1p0_EXTENDED_Rechnungskorrektur.xml b/tests/samples/ZUGFeRD_1p0_EXTENDED_Rechnungskorrektur.xml
new file mode 100644 (file)
index 0000000..91f0be9
--- /dev/null
@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- \r
+\r
+Nutzungsrechte \r
+ZUGFeRD Datenformat Version 1.0, 25.6.2014\r
+Beispiel Version 29.09.2014\r
+\r
+Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung \r
+eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht \r
+diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)\r
+\r
+Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung \r
+frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine \r
+Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht \r
+diskriminierenden Bedingungen an.\r
+\r
+Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung \r
+abrufbar unter www.ferd-net.de.\r
+\r
+Im Einzelnen schließt die Nutzungsgewährung ein: \r
+=====================================\r
+\r
+FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils \r
+geltenden und akzeptierten Fassung (www.ferd-net.de) ein. \r
+Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, \r
+Weiterbearbeitung und Verbindung mit anderen Produkten.\r
+Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder \r
+anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige \r
+Anwendungen und Dienste. \r
+Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente \r
+und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um \r
+notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch \r
+die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. \r
+Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, \r
+unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit \r
+anderen Produkten einzuräumen. \r
+\r
+Die Lizenz wird kostenfrei zur Verfügung gestellt. \r
+\r
+Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen \r
+Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, \r
+Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, \r
+beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der \r
+Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.\r
+\r
+-->\r
+\r
+<rsm:CrossIndustryDocument xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"\r
+                                                  xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0"\r
+                                                  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">\r
+       <rsm:SpecifiedExchangedDocumentContext>\r
+               <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. -->\r
+               <ram:GuidelineSpecifiedDocumentContextParameter>\r
+                       <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:extended</ram:ID>\r
+               </ram:GuidelineSpecifiedDocumentContextParameter>\r
+       </rsm:SpecifiedExchangedDocumentContext>\r
+       <rsm:HeaderExchangedDocument>\r
+               <ram:ID>RK21012345</ram:ID>\r
+               <ram:Name>RECHNUNGS-KORREKTUR</ram:Name>\r
+               <ram:TypeCode>380</ram:TypeCode>\r
+               <ram:IssueDateTime>\r
+                       <udt:DateTimeString format="102">20130916</udt:DateTimeString>\r
+               </ram:IssueDateTime>\r
+               <ram:IncludedNote>\r
+                       <ram:ContentCode>ST3</ram:ContentCode>\r
+                       <ram:Content>Es bestehen Rabatt- oder Bonusvereinbarungen.</ram:Content>\r
+                       <ram:SubjectCode>AAK</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>MUSTERLIEFERANT GMBH\r
+BAHNHOFSTRASSE 99\r
+99199 MUSTERHAUSEN\r
+Geschäftsführung:\r
+Max Mustermann\r
+USt-IdNr: DE123456789\r
+Telefon: +49 932 431 0\r
+www.musterlieferant.de\r
+HRB Nr. 372876\r
+Amtsgericht Musterstadt\r
+GLN 4304171000002</ram:Content>\r
+                       <ram:SubjectCode>REG</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+       </rsm:HeaderExchangedDocument>\r
+       <rsm:SpecifiedSupplyChainTradeTransaction>\r
+               <ram:ApplicableSupplyChainTradeAgreement>\r
+                       <ram:SellerTradeParty>\r
+                               <ram:ID>549910</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4333741000005</ram:GlobalID>\r
+                               <ram:Name>MUSTERLIEFERANT GMBH</ram:Name>\r
+                               <ram:DefinedTradeContact>\r
+                                       <ram:TelephoneUniversalCommunication>\r
+                                               <ram:CompleteNumber>+49 932 431 500</ram:CompleteNumber>\r
+                                       </ram:TelephoneUniversalCommunication>\r
+                                       <ram:EmailURIUniversalCommunication>\r
+                                               <ram:URIID>max.mustermann@musterlieferant.de</ram:URIID>\r
+                                       </ram:EmailURIUniversalCommunication>\r
+                               </ram:DefinedTradeContact>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>99199</ram:PostcodeCode>\r
+                                       <ram:LineOne>BAHNHOFSTRASSE 99</ram:LineOne>\r
+                                       <ram:CityName>MUSTERHAUSEN</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="VA">DE123456789</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                       </ram:SellerTradeParty>\r
+                       <ram:BuyerTradeParty>\r
+                               <ram:ID>009420</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID>\r
+                               <ram:Name>MUSTER-KUNDE GMBH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>40235</ram:PostcodeCode>\r
+                                       <ram:LineOne>KUNDENWEG 88</ram:LineOne>\r
+                                       <ram:CityName>DUESSELDORF</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:BuyerTradeParty>\r
+                       <ram:BuyerOrderReferencedDocument>\r
+                               <ram:IssueDateTime>2013-08-01T00:00:00</ram:IssueDateTime>\r
+                               <ram:ID>B123456789</ram:ID>\r
+                       </ram:BuyerOrderReferencedDocument>\r
+                       <ram:AdditionalReferencedDocument>\r
+                               <ram:TypeCode>AGG</ram:TypeCode>\r
+                               <ram:ID>REKLA-2013-235</ram:ID>\r
+                       </ram:AdditionalReferencedDocument>\r
+                       <ram:AdditionalReferencedDocument>\r
+                               <ram:TypeCode>OI</ram:TypeCode>\r
+                               <ram:ID>R87654321012345</ram:ID>\r
+                       </ram:AdditionalReferencedDocument>\r
+               </ram:ApplicableSupplyChainTradeAgreement>\r
+               <ram:ApplicableSupplyChainTradeDelivery>\r
+                       <ram:ShipToTradeParty>\r
+                               <ram:GlobalID schemeID="0088">4304171088093</ram:GlobalID>\r
+                               <ram:Name>MUSTER-MARKT</ram:Name>\r
+                               <ram:DefinedTradeContact>\r
+                                       <ram:DepartmentName>8211</ram:DepartmentName>\r
+                               </ram:DefinedTradeContact>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>31157</ram:PostcodeCode>\r
+                                       <ram:LineOne>HAUPTSTRASSE 44</ram:LineOne>\r
+                                       <ram:CityName>SARSTEDT</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:ShipToTradeParty>\r
+                       <ram:ActualDeliverySupplyChainEvent>\r
+                               <ram:OccurrenceDateTime>\r
+                                       <udt:DateTimeString format="102">20130805</udt:DateTimeString>\r
+                               </ram:OccurrenceDateTime>\r
+                       </ram:ActualDeliverySupplyChainEvent>\r
+                       <ram:DeliveryNoteReferencedDocument>\r
+                               <ram:IssueDateTime>2013-08-05T00:00:00</ram:IssueDateTime>\r
+                               <ram:ID>L87654321012345</ram:ID>\r
+                       </ram:DeliveryNoteReferencedDocument>\r
+               </ram:ApplicableSupplyChainTradeDelivery>\r
+               <ram:ApplicableSupplyChainTradeSettlement>\r
+                       <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\r
+                       <ram:InvoiceeTradeParty>\r
+                               <ram:ID>009420</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID>\r
+                               <ram:Name>MUSTER-KUNDE GMBH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>40235</ram:PostcodeCode>\r
+                                       <ram:LineOne>KUNDENWEG 88</ram:LineOne>\r
+                                       <ram:CityName>DUESSELDORF</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:InvoiceeTradeParty>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">-0.92</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">-4.85</ram:BasisAmount>\r
+                               <ram:LineTotalBasisAmount currencyID="EUR">-5.00</ram:LineTotalBasisAmount>\r
+                               <ram:AllowanceChargeBasisAmount currencyID="EUR">0.15</ram:AllowanceChargeBasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">-0.20</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">-2.82</ram:BasisAmount>\r
+                               <ram:LineTotalBasisAmount currencyID="EUR">-2.90</ram:LineTotalBasisAmount>\r
+                               <ram:AllowanceChargeBasisAmount currencyID="EUR">0.08</ram:AllowanceChargeBasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                               <ram:CalculationPercent>-2.00</ram:CalculationPercent>\r
+                               <ram:BasisAmount currencyID="EUR">-5.00</ram:BasisAmount>                               \r
+                               <ram:ActualAmount currencyID="EUR">0.10</ram:ActualAmount>\r
+                               <ram:Reason>Rechnungsrabatt 1</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>\r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                               <ram:CalculationPercent>-2.00</ram:CalculationPercent>\r
+                               <ram:BasisAmount currencyID="EUR">-2.90</ram:BasisAmount>                               \r
+                               <ram:ActualAmount currencyID="EUR">0.06</ram:ActualAmount>\r
+                               <ram:Reason>Rechnungsrabatt 1</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>\r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                               <ram:BasisAmount currencyID="EUR">-5.00</ram:BasisAmount>\r
+                               <ram:BasisQuantity unitCode="C62">1</ram:BasisQuantity>\r
+                               <ram:ActualAmount currencyID="EUR">0.05</ram:ActualAmount>\r
+                               <ram:Reason>Rechnungsrabatt 2</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>                    \r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                               <ram:BasisAmount currencyID="EUR">-2.90</ram:BasisAmount>\r
+                               <ram:BasisQuantity unitCode="C62">1</ram:BasisQuantity>\r
+                               <ram:ActualAmount currencyID="EUR">0.02</ram:ActualAmount>\r
+                               <ram:Reason>Rechnungsrabatt 2</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>                    \r
+                       <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                               <ram:LineTotalAmount currencyID="EUR">-7.90</ram:LineTotalAmount>\r
+                               <ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount>\r
+                               <ram:AllowanceTotalAmount currencyID="EUR">-0.23</ram:AllowanceTotalAmount>\r
+                               <ram:TaxBasisTotalAmount currencyID="EUR">-7.67</ram:TaxBasisTotalAmount>\r
+                               <ram:TaxTotalAmount currencyID="EUR">-1.12</ram:TaxTotalAmount>\r
+                               <ram:GrandTotalAmount currencyID="EUR">-8.79</ram:GrandTotalAmount>\r
+                               <ram:TotalPrepaidAmount currencyID="EUR">0.00</ram:TotalPrepaidAmount>\r
+                               <ram:DuePayableAmount currencyID="EUR">0.00</ram:DuePayableAmount>\r
+                       </ram:SpecifiedTradeSettlementMonetarySummation>\r
+               </ram:ApplicableSupplyChainTradeSettlement>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                               <ram:AssociatedDocumentLineDocument>\r
+                                       <ram:IncludedNote>\r
+                                               <ram:Content>Gemäß Ihres Reklamationsschreibens vom 10.09.2013 und unseres Telefonats vom 12.09.2013 erhalten Sie die\r
+nachfolgenden Leistungen gutgeschrieben.</ram:Content>\r
+                                       </ram:IncludedNote>\r
+                               </ram:AssociatedDocumentLineDocument>\r
+                               <ram:SpecifiedSupplyChainTradeSettlement />\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1.0000</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1.0000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">-5.0000</ram:BilledQuantity>\r
+                               <ram:PackageQuantity unitCode="BO">1.0000</ram:PackageQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">-5.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">4123456000014</ram:GlobalID>\r
+                               <ram:SellerAssignedID>ZS997</ram:SellerAssignedID>\r
+                               <ram:Name>Zitronensäure 100ml</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1.5000</ram:ChargeAmount>\r
+                                       <ram:AppliedTradeAllowanceCharge>\r
+                                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                                               <ram:CalculationPercent>-2.00</ram:CalculationPercent>\r
+                                               <ram:BasisAmount currencyID="EUR">-1.5000</ram:BasisAmount>\r
+                                               <ram:ActualAmount currencyID="EUR">0.0300</ram:ActualAmount>\r
+                                               <ram:Reason>Artikelrabatt 1</ram:Reason>\r
+                                       </ram:AppliedTradeAllowanceCharge>\r
+                                       <ram:AppliedTradeAllowanceCharge>\r
+                                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                                               <ram:BasisQuantity unitCode="C62">1</ram:BasisQuantity>\r
+                                               <ram:ActualAmount currencyID="EUR">0.0200</ram:ActualAmount>\r
+                                               <ram:Reason>Artikelrabatt 2</ram:Reason>\r
+                                       </ram:AppliedTradeAllowanceCharge>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1.4500</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">-2.0000</ram:BilledQuantity>\r
+                               <ram:PackageQuantity unitCode="CT">1.0000</ram:PackageQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">-2.90</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">4123456000021</ram:GlobalID>\r
+                               <ram:SellerAssignedID>GZ250</ram:SellerAssignedID>\r
+                               <ram:Name>Gelierzucker Extra 250g</ram:Name>                            \r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>         \r
+       </rsm:SpecifiedSupplyChainTradeTransaction>\r
+</rsm:CrossIndustryDocument>\r
diff --git a/tests/samples/ZUGFeRD_1p0_EXTENDED_Warenrechnung.xml b/tests/samples/ZUGFeRD_1p0_EXTENDED_Warenrechnung.xml
new file mode 100644 (file)
index 0000000..071dbd2
--- /dev/null
@@ -0,0 +1,522 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!-- \r
+\r
+Nutzungsrechte \r
+ZUGFeRD Datenformat Version 1.0, 25.6.2014\r
+Beispiel Version 29.09.2014\r
+\r
+Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung \r
+eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht \r
+diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“)\r
+\r
+Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung \r
+frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine \r
+Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht \r
+diskriminierenden Bedingungen an.\r
+\r
+Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung \r
+abrufbar unter www.ferd-net.de.\r
+\r
+Im Einzelnen schließt die Nutzungsgewährung ein: \r
+=====================================\r
+\r
+FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils \r
+geltenden und akzeptierten Fassung (www.ferd-net.de) ein. \r
+Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, \r
+Weiterbearbeitung und Verbindung mit anderen Produkten.\r
+Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder \r
+anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige \r
+Anwendungen und Dienste. \r
+Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente \r
+und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um \r
+notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch \r
+die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. \r
+Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, \r
+unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit \r
+anderen Produkten einzuräumen. \r
+\r
+Die Lizenz wird kostenfrei zur Verfügung gestellt. \r
+\r
+Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen \r
+Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, \r
+Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, \r
+beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der \r
+Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.\r
+\r
+-->\r
+\r
+<rsm:CrossIndustryDocument xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12"\r
+                                                  xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0"\r
+                                                  xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15">\r
+       <rsm:SpecifiedExchangedDocumentContext>\r
+               <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. -->\r
+               <ram:GuidelineSpecifiedDocumentContextParameter>\r
+                       <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:extended</ram:ID>\r
+               </ram:GuidelineSpecifiedDocumentContextParameter>\r
+       </rsm:SpecifiedExchangedDocumentContext>\r
+       <rsm:HeaderExchangedDocument>\r
+               <ram:ID>R87654321012345</ram:ID>\r
+               <ram:Name>WARENRECHNUNG</ram:Name>\r
+               <ram:TypeCode>380</ram:TypeCode>\r
+               <ram:IssueDateTime>\r
+                       <udt:DateTimeString format="102">20130806</udt:DateTimeString>\r
+               </ram:IssueDateTime>\r
+               <ram:IncludedNote>\r
+                       <ram:ContentCode>ST3</ram:ContentCode>\r
+                       <ram:Content>Es bestehen Rabatt- oder Bonusvereinbarungen.</ram:Content>\r
+                       <ram:SubjectCode>AAK</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:ContentCode>EEV</ram:ContentCode>\r
+                       <ram:Content>Der Verkäufer bleibt Eigentümer der Waren bis zu vollständigen Erfüllung der Kaufpreisforderung.</ram:Content>\r
+                       <ram:SubjectCode>AAJ</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>MUSTERLIEFERANT GMBH\r
+BAHNHOFSTRASSE 99\r
+99199 MUSTERHAUSEN\r
+Geschäftsführung:\r
+Max Mustermann\r
+USt-IdNr: DE123456789\r
+Telefon: +49 932 431 0\r
+www.musterlieferant.de\r
+HRB Nr. 372876\r
+Amtsgericht Musterstadt\r
+GLN 4304171000002\r
+WEEE-Reg-Nr.: DE87654321</ram:Content>\r
+                       <ram:SubjectCode>REG</ram:SubjectCode>\r
+               </ram:IncludedNote>\r
+               <ram:IncludedNote>\r
+                       <ram:Content>Leergutwert: 46,50</ram:Content>\r
+               </ram:IncludedNote>\r
+       </rsm:HeaderExchangedDocument>\r
+       <rsm:SpecifiedSupplyChainTradeTransaction>\r
+               <ram:ApplicableSupplyChainTradeAgreement>\r
+                       <ram:SellerTradeParty>\r
+                               <ram:ID>549910</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4333741000005</ram:GlobalID>\r
+                               <ram:Name>MUSTERLIEFERANT GMBH</ram:Name>\r
+                               <ram:DefinedTradeContact>\r
+                                       <ram:TelephoneUniversalCommunication>\r
+                                               <ram:CompleteNumber>+49 932 431 500</ram:CompleteNumber>\r
+                                       </ram:TelephoneUniversalCommunication>\r
+                                       <ram:EmailURIUniversalCommunication>\r
+                                               <ram:URIID>max.mustermann@musterlieferant.de</ram:URIID>\r
+                                       </ram:EmailURIUniversalCommunication>\r
+                               </ram:DefinedTradeContact>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>99199</ram:PostcodeCode>\r
+                                       <ram:LineOne>BAHNHOFSTRASSE 99</ram:LineOne>\r
+                                       <ram:CityName>MUSTERHAUSEN</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                               <ram:SpecifiedTaxRegistration>\r
+                                       <ram:ID schemeID="VA">DE123456789</ram:ID>\r
+                               </ram:SpecifiedTaxRegistration>\r
+                       </ram:SellerTradeParty>\r
+                       <ram:BuyerTradeParty>\r
+                               <ram:ID>009420</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID>\r
+                               <ram:Name>MUSTER-KUNDE GMBH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>40235</ram:PostcodeCode>\r
+                                       <ram:LineOne>KUNDENWEG 88</ram:LineOne>\r
+                                       <ram:CityName>DUESSELDORF</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:BuyerTradeParty>\r
+                       <ram:BuyerOrderReferencedDocument>\r
+                               <ram:IssueDateTime>2013-08-01T00:00:00</ram:IssueDateTime>\r
+                               <ram:ID>B123456789</ram:ID>\r
+                       </ram:BuyerOrderReferencedDocument>\r
+                       <ram:AdditionalReferencedDocument>\r
+                               <ram:IssueDateTime>2013-08-02T00:00:00</ram:IssueDateTime>                              \r
+                               <ram:TypeCode>VN</ram:TypeCode>\r
+                               <ram:ID>A456123</ram:ID>\r
+                       </ram:AdditionalReferencedDocument>\r
+               </ram:ApplicableSupplyChainTradeAgreement>\r
+               <ram:ApplicableSupplyChainTradeDelivery>\r
+                       <ram:ShipToTradeParty>\r
+                               <ram:GlobalID schemeID="0088">4304171088093</ram:GlobalID>\r
+                               <ram:Name>MUSTER-MARKT</ram:Name>\r
+                               <ram:DefinedTradeContact>\r
+                                       <ram:DepartmentName>8211</ram:DepartmentName>\r
+                               </ram:DefinedTradeContact>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>31157</ram:PostcodeCode>\r
+                                       <ram:LineOne>HAUPTSTRASSE 44</ram:LineOne>\r
+                                       <ram:CityName>SARSTEDT</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>                               \r
+                       </ram:ShipToTradeParty>\r
+                       <ram:ActualDeliverySupplyChainEvent>\r
+                               <ram:OccurrenceDateTime>\r
+                                       <udt:DateTimeString format="102">20130805</udt:DateTimeString>\r
+                               </ram:OccurrenceDateTime>\r
+                       </ram:ActualDeliverySupplyChainEvent>\r
+                       <ram:DeliveryNoteReferencedDocument>\r
+                               <ram:IssueDateTime>2013-08-05T00:00:00</ram:IssueDateTime>\r
+                               <ram:ID>L87654321012345</ram:ID>\r
+                       </ram:DeliveryNoteReferencedDocument>\r
+               </ram:ApplicableSupplyChainTradeDelivery>\r
+               <ram:ApplicableSupplyChainTradeSettlement>\r
+                       <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\r
+                       <ram:InvoiceeTradeParty>\r
+                               <ram:ID>009420</ram:ID>\r
+                               <ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID>\r
+                               <ram:Name>MUSTER-KUNDE GMBH</ram:Name>\r
+                               <ram:PostalTradeAddress>\r
+                                       <ram:PostcodeCode>40235</ram:PostcodeCode>\r
+                                       <ram:LineOne>KUNDENWEG 88</ram:LineOne>\r
+                                       <ram:CityName>DUESSELDORF</ram:CityName>\r
+                                       <ram:CountryID>DE</ram:CountryID>\r
+                               </ram:PostalTradeAddress>\r
+                       </ram:InvoiceeTradeParty>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">61.07</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">321.40</ram:BasisAmount>\r
+                               <ram:LineTotalBasisAmount currencyID="EUR">326.50</ram:LineTotalBasisAmount>\r
+                               <ram:AllowanceChargeBasisAmount currencyID="EUR">-5.10</ram:AllowanceChargeBasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:ApplicableTradeTax>\r
+                               <ram:CalculatedAmount currencyID="EUR">8.93</ram:CalculatedAmount>\r
+                               <ram:TypeCode>VAT</ram:TypeCode>\r
+                               <ram:BasisAmount currencyID="EUR">127.59</ram:BasisAmount>\r
+                               <ram:LineTotalBasisAmount currencyID="EUR">130.70</ram:LineTotalBasisAmount>\r
+                               <ram:AllowanceChargeBasisAmount currencyID="EUR">-3.11</ram:AllowanceChargeBasisAmount>\r
+                               <ram:CategoryCode>S</ram:CategoryCode>\r
+                               <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                       </ram:ApplicableTradeTax>\r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                               <ram:CalculationPercent>2.00</ram:CalculationPercent>\r
+                               <ram:BasisAmount currencyID="EUR">280.00</ram:BasisAmount>\r
+                               <ram:ActualAmount currencyID="EUR">5.60</ram:ActualAmount>\r
+                               <ram:Reason>Rechnungsrabatt 1</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>\r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                               <ram:CalculationPercent>2.00</ram:CalculationPercent>\r
+                               <ram:BasisAmount currencyID="EUR">130.70</ram:BasisAmount>\r
+                               <ram:ActualAmount currencyID="EUR">2.61</ram:ActualAmount>\r
+                               <ram:Reason>Rechnungsrabatt 1</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>\r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                               <ram:BasisAmount currencyID="EUR">280.00</ram:BasisAmount>\r
+                               <ram:ActualAmount currencyID="EUR">2.50</ram:ActualAmount>\r
+                               <ram:Reason>Rechnungsrabatt 2</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>\r
+                       <ram:SpecifiedTradeAllowanceCharge>\r
+                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                               <ram:BasisAmount currencyID="EUR">130.70</ram:BasisAmount>\r
+                               <ram:ActualAmount currencyID="EUR">0.50</ram:ActualAmount>\r
+                               <ram:Reason>Rechnungsrabatt 2</ram:Reason>\r
+                               <ram:CategoryTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:CategoryTradeTax>\r
+                       </ram:SpecifiedTradeAllowanceCharge>\r
+                       <ram:SpecifiedLogisticsServiceCharge>\r
+                               <ram:Description>Transportkosten</ram:Description>\r
+                               <ram:AppliedAmount currencyID="EUR">3.00</ram:AppliedAmount>\r
+                               <ram:AppliedTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:AppliedTradeTax>\r
+                       </ram:SpecifiedLogisticsServiceCharge>\r
+                       <ram:SpecifiedTradePaymentTerms>\r
+                               <ram:Description>Bei Zahlung innerhalb 14 Tagen gewähren wir 2,0% Skonto.</ram:Description>\r
+                               <ram:ApplicableTradePaymentDiscountTerms>\r
+                                       <ram:BasisPeriodMeasure unitCode="DAY">14</ram:BasisPeriodMeasure>\r
+                                       <ram:CalculationPercent>2.00</ram:CalculationPercent>\r
+                               </ram:ApplicableTradePaymentDiscountTerms>\r
+                       </ram:SpecifiedTradePaymentTerms>\r
+                       <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                               <ram:LineTotalAmount currencyID="EUR">457.20</ram:LineTotalAmount>\r
+                               <ram:ChargeTotalAmount currencyID="EUR">3.00</ram:ChargeTotalAmount>\r
+                               <ram:AllowanceTotalAmount currencyID="EUR">11.21</ram:AllowanceTotalAmount>\r
+                               <ram:TaxBasisTotalAmount currencyID="EUR">448.99</ram:TaxBasisTotalAmount>\r
+                               <ram:TaxTotalAmount currencyID="EUR">70.00</ram:TaxTotalAmount>\r
+                               <ram:GrandTotalAmount currencyID="EUR">518.99</ram:GrandTotalAmount>\r
+                               <ram:TotalPrepaidAmount currencyID="EUR">0.00</ram:TotalPrepaidAmount>\r
+                               <ram:DuePayableAmount currencyID="EUR">518.99</ram:DuePayableAmount>\r
+                       </ram:SpecifiedTradeSettlementMonetarySummation>\r
+               </ram:ApplicableSupplyChainTradeSettlement>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:IncludedNote>\r
+                                       <ram:Content>Wichtige Information: Bei Bestellungen bis zum 19.12. ist die Auslieferung bis spätestens 23.12. garantiert.</ram:Content>\r
+                               </ram:IncludedNote>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement />\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1.0000</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1.0000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">100.0000</ram:BilledQuantity>\r
+                               <ram:PackageQuantity unitCode="CT">4.0000</ram:PackageQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">100.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">4123456000014</ram:GlobalID>\r
+                               <ram:SellerAssignedID>ZS997</ram:SellerAssignedID>\r
+                               <ram:Name>Zitronensäure 100ml</ram:Name>\r
+                               <ram:ApplicableProductCharacteristic>\r
+                                       <ram:TypeCode>PACKAGING_TYPE</ram:TypeCode>\r
+                                       <ram:Description>Verpackungsart</ram:Description>\r
+                                       <ram:Value>BO</ram:Value>\r
+                               </ram:ApplicableProductCharacteristic>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />                  \r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1.5000</ram:ChargeAmount>\r
+                                       <ram:AppliedTradeAllowanceCharge>\r
+                                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                                               <ram:CalculationPercent>2.00</ram:CalculationPercent>\r
+                                               <ram:BasisAmount currencyID="EUR">1.5000</ram:BasisAmount>\r
+                                               <ram:ActualAmount currencyID="EUR">0.0300</ram:ActualAmount>\r
+                                               <ram:Reason>Artikelrabatt 1</ram:Reason>\r
+                                       </ram:AppliedTradeAllowanceCharge>\r
+                                       <ram:AppliedTradeAllowanceCharge>\r
+                                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                                               <ram:BasisQuantity unitCode="C62">1</ram:BasisQuantity>\r
+                                               <ram:ActualAmount currencyID="EUR">0.0200</ram:ActualAmount>\r
+                                               <ram:Reason>Artikelrabatt 2</ram:Reason>\r
+                                       </ram:AppliedTradeAllowanceCharge>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">1.4500</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">50.0000</ram:BilledQuantity>\r
+                               <ram:PackageQuantity unitCode="CT">1.0000</ram:PackageQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">72.50</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">4123456000021</ram:GlobalID>\r
+                               <ram:SellerAssignedID>GZ250</ram:SellerAssignedID>\r
+                               <ram:Name>Gelierzucker Extra 250g</ram:Name>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">0.0000</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">0.0000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">10.0000</ram:BilledQuantity>\r
+                               <ram:PackageQuantity unitCode="CT">1.0000</ram:PackageQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">0.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">4123456000021</ram:GlobalID>\r
+                               <ram:SellerAssignedID>GZ250</ram:SellerAssignedID>\r
+                               <ram:Name>Gelierzucker Extra 250g</ram:Name>\r
+                               <ram:Description>Artikel wie vereinbart ohne Berechnung</ram:Description>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument>\r
+                               <ram:IncludedNote>\r
+                                       <ram:Content>Öko-Kontroll-Nr.: DE-BW-006-987654321054</ram:Content>\r
+                                       <ram:SubjectCode>AAY</ram:SubjectCode>\r
+                               </ram:IncludedNote>\r
+                       </ram:AssociatedDocumentLineDocument>\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">12.0000</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">12.0000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">15.0000</ram:BilledQuantity>\r
+                               <ram:PackageQuantity unitCode="BO">20.0000</ram:PackageQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">180.00</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">4100130013294</ram:GlobalID>\r
+                               <ram:SellerAssignedID>2031</ram:SellerAssignedID>\r
+                               <ram:BuyerAssignedID>K4321</ram:BuyerAssignedID>\r
+                               <ram:Name>Bierbrau Pils 20/0500</ram:Name>\r
+                               <ram:Description>EAN-VKE: 4100130913297</ram:Description>\r
+                               <ram:ApplicableProductCharacteristic>\r
+                                       <ram:TypeCode>PACKAGING_MATERIAL</ram:TypeCode>\r
+                                       <ram:Description>Verpackung</ram:Description>\r
+                                       <ram:Value>Kiste</ram:Value>\r
+                               </ram:ApplicableProductCharacteristic>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">3.1000</ram:ChargeAmount>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">3.1000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">15.0000</ram:BilledQuantity>\r
+                               <ram:PackageQuantity unitCode="BC">1.0000</ram:PackageQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>19.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">46.50</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">2001015001325</ram:GlobalID>\r
+                               <ram:SellerAssignedID>1805</ram:SellerAssignedID>\r
+                               <ram:BuyerAssignedID>K4322</ram:BuyerAssignedID>\r
+                               <ram:Name>Leergutpfand 20 x 0,5l</ram:Name>\r
+                               <ram:ApplicableProductCharacteristic>\r
+                                       <ram:TypeCode>PACKAGING_MATERIAL</ram:TypeCode>\r
+                                       <ram:Description>Verpackung</ram:Description>\r
+                                       <ram:Value>unverpackt</ram:Value>\r
+                               </ram:ApplicableProductCharacteristic>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+               <ram:IncludedSupplyChainTradeLineItem>\r
+                       <ram:AssociatedDocumentLineDocument />\r
+                       <ram:SpecifiedSupplyChainTradeAgreement>\r
+                               <ram:GrossPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">30.0000</ram:ChargeAmount>\r
+                                       <ram:AppliedTradeAllowanceCharge>\r
+                                               <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>\r
+                                               <ram:CalculationPercent>3.00</ram:CalculationPercent>\r
+                                               <ram:BasisAmount currencyID="EUR">30.0000</ram:BasisAmount>\r
+                                               <ram:ActualAmount currencyID="EUR">0.9000</ram:ActualAmount>\r
+                                               <ram:Reason>Artikelrabatt 1</ram:Reason>\r
+                                       </ram:AppliedTradeAllowanceCharge>\r
+                               </ram:GrossPriceProductTradePrice>\r
+                               <ram:NetPriceProductTradePrice>\r
+                                       <ram:ChargeAmount currencyID="EUR">29.1000</ram:ChargeAmount>\r
+                               </ram:NetPriceProductTradePrice>\r
+                       </ram:SpecifiedSupplyChainTradeAgreement>\r
+                       <ram:SpecifiedSupplyChainTradeDelivery>\r
+                               <ram:BilledQuantity unitCode="C62">2.0000</ram:BilledQuantity>\r
+                               <ram:PackageQuantity unitCode="PX">1.0000</ram:PackageQuantity>\r
+                       </ram:SpecifiedSupplyChainTradeDelivery>\r
+                       <ram:SpecifiedSupplyChainTradeSettlement>\r
+                               <ram:ApplicableTradeTax>\r
+                                       <ram:TypeCode>VAT</ram:TypeCode>\r
+                                       <ram:CategoryCode>S</ram:CategoryCode>\r
+                                       <ram:ApplicablePercent>7.00</ram:ApplicablePercent>\r
+                               </ram:ApplicableTradeTax>\r
+                               <ram:SpecifiedTradeSettlementMonetarySummation>\r
+                                       <ram:LineTotalAmount currencyID="EUR">58.20</ram:LineTotalAmount>\r
+                               </ram:SpecifiedTradeSettlementMonetarySummation>\r
+                       </ram:SpecifiedSupplyChainTradeSettlement>\r
+                       <ram:SpecifiedTradeProduct>\r
+                               <ram:GlobalID schemeID="0088">4123456000038</ram:GlobalID>\r
+                               <ram:SellerAssignedID>MP107</ram:SellerAssignedID>\r
+                               <ram:Name>Mischpalette Joghurt Karton 3 x 20</ram:Name>\r
+                               <ram:ApplicableProductCharacteristic>\r
+                                       <ram:TypeCode>PACKAGING_MATERIAL</ram:TypeCode>\r
+                                       <ram:Description>Verpackung</ram:Description>\r
+                                       <ram:Value>Karton</ram:Value>\r
+                               </ram:ApplicableProductCharacteristic>\r
+                               <ram:IncludedReferencedProduct>\r
+                                       <ram:GlobalID schemeID="0088">4123456001035</ram:GlobalID>\r
+                                       <ram:SellerAssignedID>JOG103</ram:SellerAssignedID>\r
+                                       <ram:Name>Erdbeer 20 x 150g Becher</ram:Name>\r
+                                       <ram:UnitQuantity unitCode="C62">20.0000</ram:UnitQuantity>\r
+                               </ram:IncludedReferencedProduct>\r
+                               <ram:IncludedReferencedProduct>\r
+                                       <ram:GlobalID schemeID="0088">4123456002032</ram:GlobalID>\r
+                                       <ram:SellerAssignedID>JOG203</ram:SellerAssignedID>\r
+                                       <ram:Name>Banane 20 x 150g Becher</ram:Name>\r
+                                       <ram:UnitQuantity unitCode="C62">20.0000</ram:UnitQuantity>\r
+                               </ram:IncludedReferencedProduct>\r
+                               <ram:IncludedReferencedProduct>\r
+                                       <ram:GlobalID schemeID="0088">4123456003039</ram:GlobalID>\r
+                                       <ram:SellerAssignedID>JOG303</ram:SellerAssignedID>\r
+                                       <ram:Name>Schoko 20 x 150g Becher</ram:Name>\r
+                                       <ram:UnitQuantity unitCode="C62">20.0000</ram:UnitQuantity>\r
+                               </ram:IncludedReferencedProduct>\r
+                       </ram:SpecifiedTradeProduct>\r
+               </ram:IncludedSupplyChainTradeLineItem>\r
+       </rsm:SpecifiedSupplyChainTradeTransaction>\r
+</rsm:CrossIndustryDocument>\r
index e358e9301c8a584b8553d33971865033b437e0e2..751260abd5defa69c228f66d5a421cc991184843 100644 (file)
@@ -7,12 +7,27 @@ from drafthorse.utils import prettify
 
 samples = [
     'easybill_sample.xml',
+    'ZUGFeRD_1p0_BASIC_Einfach.xml',
+    'ZUGFeRD_1p0_BASIC_Rechnungskorrektur.xml',
+    'ZUGFeRD_1p0_COMFORT_Einfach.xml',
+    'ZUGFeRD_1p0_COMFORT_Haftpflichtversicherung_Versicherungssteuer.xml',
+    'ZUGFeRD_1p0_COMFORT_Kraftfahrversicherung_Bruttopreise.xml',
+    'ZUGFeRD_1p0_COMFORT_Rabatte.xml',
+    'ZUGFeRD_1p0_COMFORT_Rechnungskorrektur.xml',
+    'ZUGFeRD_1p0_COMFORT_Sachversicherung_berechneter_Steuersatz.xml',
+    'ZUGFeRD_1p0_COMFORT_SEPA_Prenotification.xml',
+    'ZUGFeRD_1p0_EXTENDED_Kostenrechnung.xml',
+    'ZUGFeRD_1p0_EXTENDED_Rechnungskorrektur.xml',
+    'ZUGFeRD_1p0_EXTENDED_Warenrechnung.xml',
 ]
 
 
 @pytest.mark.parametrize("filename", samples)
 def test_sample_roundtrip(filename):
-    origxml = prettify(open(os.path.join(os.path.dirname(__file__), 'samples', filename), 'r').read())
+    origxml = prettify(
+        open(os.path.join(os.path.dirname(__file__), 'samples', filename), 'rb').read(),
+        remove_comments=True
+    )
     doc = Document.parse(origxml)
     generatedxml = prettify(doc.serialize())
-    assert generatedxml.decode().strip() == origxml.decode().strip()
+    assert origxml.decode().strip() == generatedxml.decode().strip()