Compare commits

...

10 Commits

Author SHA1 Message Date
Jochen Stärk
833961a42b test for #1133
Some checks failed
Java CI with Maven / build (push) Has been cancelled
2026-05-29 19:18:06 +02:00
langfr
9f22ce3b14 Merge branch 'ladapos-master' 2026-05-28 15:40:49 +01:00
langfr
c97c949a2c Enhance javadoc. 2026-05-28 15:39:58 +01:00
langfr
3cd2273621 Merge branch 'master' of https://github.com/ladapos/mustangproject into ladapos-master 2026-05-28 15:12:57 +01:00
langfr
90ecf8313b Merge branch 'langfr-bugfix/1127' 2026-05-28 15:01:21 +01:00
langfr
a542a61194 Merge branch 'bugfix/1127' of https://github.com/langfr/mustangproject into langfr-bugfix/1127 2026-05-28 14:58:51 +01:00
langfr
a8d5ee8822 Fix possible StringIndexOutOfBoundsException when extracting XMP. 2026-05-28 14:49:39 +01:00
A422382
938d23dc87 Fix #1126 IncludedNote SubjectCode ACB, INV 2026-05-27 12:15:23 +02:00
Jochen Stärk
926a953292 [maven-release-plugin] prepare for next development iteration 2026-05-21 10:04:24 +02:00
Jochen Stärk
55486cca41 [maven-release-plugin] prepare release core-2.23.1 2026-05-21 09:59:26 +02:00
10 changed files with 542 additions and 21 deletions

View File

@@ -1,3 +1,5 @@
- 'Fix possible StringIndexOutOfBoundsException when extracting XMP.'
2.23.1
=======
2026-05-13

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>org.mustangproject</groupId>
<artifactId>core</artifactId>
<version>2.23.1-SNAPSHOT</version>
<version>2.23.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>Mustang-CLI</artifactId>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>org.mustangproject</groupId>
<artifactId>core</artifactId>
<version>2.23.1-SNAPSHOT</version>
<version>2.23.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -72,6 +72,14 @@ public class IncludedNote {
return new IncludedNote(content, SubjectCode.PMD);
}
public static IncludedNote additionalInformationNote(String content) {
return new IncludedNote(content, SubjectCode.ACB);
}
public static IncludedNote invoiceInstructionNote(String content) {
return new IncludedNote(content, SubjectCode.INV);
}
public static IncludedNote unspecifiedNote(String content) {
return new IncludedNote(content, null);
}

View File

@@ -2,7 +2,25 @@ package org.mustangproject;
/**
* EN16931-ID: BT-21 - the qualification of the free text on the invoice from BT-22
* In the first step only the recommended codes are implemented.
* @see <a href="https://service.unece.org/trade/untdid/d96a/uncl/uncl4451.htm">UNTDID - D.96A - Element 4451</a> for a complete list of codes
*
* In the first step only the recommended codes are implemented:
* AAI : General information / Allgemeine Informationen
* SUR : Supplier remarks / Anmerkungen des Verkäufers
* REG : Regulatory information / Regulatorische Informationen
* ABL : Government information / Rechtliche Informationen
* TXD : Tax declaration / Informationen zur Steuer
* CUS : Customs declaration information / Zollinformationen
*
* plus
* ACY : Introduction
* AAK : Price conditions
* ABZ : Instructions/information about revolving documentary credit
* PMT : Payment information
* PMD : Payment detail/remittance information
* AAB : Terms of payments
* ACB : Additional information
* INV : Invoice instruction
*/
public enum SubjectCode {
/**
@@ -38,22 +56,28 @@ public enum SubjectCode {
*/
AAK,
/**
* Vehicle licence number
* Instructions/information about revolving documentary credit
*/
ABZ,
/**
* Payment information
*/
PMT,
/**
* Payment detail/remittance information
*/
PMD,
/**
* Payment term
*/
AAB
/**
* Payment information
*/
PMT,
/**
* Payment detail/remittance information
*/
PMD,
/**
* Payment term
*/
AAB,
/**
* Additional information
*/
ACB,
/**
* Invoice instruction
*/
INV
}

View File

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.mustangproject</groupId>
<artifactId>core</artifactId>
<version>2.23.1-SNAPSHOT</version>
<version>2.23.2-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Mustang</name>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>org.mustangproject</groupId>
<artifactId>core</artifactId>
<version>2.23.1-SNAPSHOT</version>
<version>2.23.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>validator</artifactId>

View File

@@ -131,8 +131,10 @@ public class PDFValidator extends Validator {
String xmp;
if (zi.getXMP() == null) {
xmp = null;
} else {
} else if (zi.getXMP().indexOf('<') > 0) {
xmp = zi.getXMP().substring(zi.getXMP().indexOf('<'));
} else {
xmp = zi.getXMP();
}
final Document docXMP;

View File

@@ -4,6 +4,7 @@ import java.io.File;
import javax.xml.transform.Source;
import org.junit.Test;
import org.xmlunit.builder.Input;
import org.xmlunit.xpath.JAXPXPathEngine;
import org.xmlunit.xpath.XPathEngine;
@@ -459,6 +460,24 @@ public class XMLValidatorTest extends ResourceCase {
// ignore, will be in XML output anyway
}
xv.context.clear();
tempFile = getResourceAsFile("X03_01_Abschlagsrechnung_SubInvoiceLine_u_LV_Nr.xml");
try {
xv.setFilename(tempFile.getAbsolutePath());
xv.validate();
String s = "<validation>" + xv.getXMLResult() + "</validation>";
// hierarchy mismatch should produce at least one warning
assertThat(s).valueByXPath("count(//warning)")
.asInt()
.isEqualTo(0);
} catch (final IrrecoverableValidationError e) {
// ignore, will be in XML output anyway
}
}
}

View File

@@ -0,0 +1,466 @@
<?xml version='1.0' encoding='UTF-8'?>
<!--English disclaimer below.-->
<!--
Nutzungsrechte
ZUGFeRD Datenformat Version 2.4.0, 29.10.2025
Beispiel Version 29.10.2025
Zweck des Forums elektronisch Rechnung Deutschland, welches am 31. März 2010 unter der Arbeitsgemeinschaft für
wirtschaftliche Verwaltung e. V. gegründet wurde, ist u. a. die Schaffung und Spezifizierung eines offenen Datenformats
für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht diskriminierender, standardisierter
Technologien („ZUGFeRD Datenformat“).
Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung
frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine
Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht
diskriminierenden Bedingungen an.
Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung
abrufbar unter www.ferd-net.de.
Im Einzelnen schließt die Nutzungsgewährung ein:
=====================================
FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils
geltenden und akzeptierten Fassung (www.ferd-net.de) ein.
Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung,
Weiterbearbeitung und Verbindung mit anderen Produkten.
Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder
anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige
Anwendungen und Dienste.
Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente
und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um
notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch
die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden.
Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares,
unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit
anderen Produkten einzuräumen.
Die Lizenz wird kostenfrei zur Verfügung gestellt.
Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen
Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten,
Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete,
beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der
Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.
-->
<!--
Right of use
ZUGFeRD Data format version 2.4.0, October 29th, 2025
The purpose of the Forum elektronische Rechnung Deutschland (FeRD), which was founded on March 31, 2010 under the
umbrella of Arbeitsgemeinschaft für wirtschaftliche Verwaltung e. V., is, among other things, to create and specify an
open data format for structured electronic data exchange on the basis of open and non discriminatory, standardised
technologies ("ZUGFeRD data format").
The ZUGFeRD data format is used by both companies and public administration according to the FeRD
made freely accessible. For this purpose FeRD offers all companies and organisations of the public administration a
License to use the copyrighted ZUGFeRD data format in a fair, appropriate and non
discriminatory conditions.
The specification of the FeRD for the implementation of the ZUGFeRD data format is, in its currently valid version
available at www.ferd-net.de.
In detail, the grant of use includes
=====================================
FeRD grants a license for the use of the copyrighted ZUGFeRD data format in the respective
valid and accepted version (www.ferd-net.de).
The license includes an irrevocable right of use including the right of further development,
Further processing and connection with other products.
The license applies in particular to the development, design, production, sale, use or
other use of the ZUGFeRD data format for hardware and/or software products and other
applications and services.
This license does not include the essential patents of the members of FeRD. The essential patents are patents
and patent applications worldwide which contain one or more claims that are
necessary claims. Necessary claims are only those claims of the essential patents which are
the implementation of the ZUGFeRD data format would necessarily be violated.
The Licensee is entitled to provide its respective group companies with an unlimited, worldwide, non-transferable,
irrevocable right of use including the right of further development, further processing and connection with
other products.
The license is provided free of charge.
Except in the case of intentional fault or gross negligence, FeRD is not liable for loss of use, loss of
Profit, loss of data, loss of communication, loss of revenue, loss of contracts, loss of business or for costs
damages, losses or liabilities in connection with an interruption of business, nor for concrete,
incidental, indirect, punitive or consequential damages, even if the possibility of
costs, losses or damages could normally have been foreseen.
-->
<rsm:CrossIndustryInvoice xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
<rsm:ExchangedDocumentContext>
<ram:GuidelineSpecifiedDocumentContextParameter>
<ram:ID>urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended</ram:ID>
</ram:GuidelineSpecifiedDocumentContextParameter>
</rsm:ExchangedDocumentContext>
<rsm:ExchangedDocument>
<ram:ID>210111 mit LV</ram:ID>
<ram:TypeCode>875</ram:TypeCode>
<ram:IssueDateTime>
<udt:DateTimeString format="102">20260530</udt:DateTimeString>
</ram:IssueDateTime>
<ram:IncludedNote>
<ram:Content>1. Abschlagsrechnung</ram:Content>
<ram:SubjectCode>ACB</ram:SubjectCode>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>Geschäftsführer: Herr Geschäftsführer , Muster Bau GmbH etc.</ram:Content>
<ram:SubjectCode>REG</ram:SubjectCode>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>Es bestehen Vereinbarungen, aus denen sich Minderungen des Entgelts ergeben können.</ram:Content>
<ram:SubjectCode>AAI</ram:SubjectCode>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>ZUGFeRD vers 2.4.0 Extended</ram:Content>
<ram:SubjectCode>ACB</ram:SubjectCode>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>Dies ist eine Beispiel-Rechnung zur Darstellung einer Bau-Abschlags-Rechnung mit Sub-Invoice-Lines und Leistungsverzeichnis-Bezug je Position</ram:Content>
<ram:SubjectCode>ACB</ram:SubjectCode>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>Betreff zum LV für eine Kurzinformation zum Bauvorhaben BT-22</ram:Content>
<ram:SubjectCode>ACB</ram:SubjectCode>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>Kopftext für zusätzliche Beschreibungen zur Rechnung. Z.B. als Anschreiben für die Rechnung BT-22</ram:Content>
<ram:SubjectCode>ACB</ram:SubjectCode>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>ergänzneder Fußtext für die Rechnung mit zusätzlichen Angaben. Z.B: Ist kein gesondertes Lieferdatum angegeben, entspricht das Rechnungsdatum dem Datum der Lieferung und Leistung</ram:Content>
<ram:SubjectCode>ACB</ram:SubjectCode>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>freier Text zur Rechnung BT-22</ram:Content>
<ram:SubjectCode>ACB</ram:SubjectCode>
</ram:IncludedNote>
</rsm:ExchangedDocument>
<rsm:SupplyChainTradeTransaction>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>01.01</ram:LineID>
<ram:ParentLineID>01</ram:ParentLineID>
<ram:LineStatusReasonCode>GROUP</ram:LineStatusReasonCode>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:Name>Baugelände abräumen Anfallender Schutt, Pflanzenreste und Müll entsorgen</ram:Name>
</ram:SpecifiedTradeProduct>
<!-- <ram:SpecifiedLineTradeAgreement>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>7.00</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="H87">300.00</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery> -->
<ram:SpecifiedLineTradeSettlement>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>2100.00</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>01.01.01</ram:LineID>
<ram:ParentLineID>01.01</ram:ParentLineID>
<ram:LineStatusReasonCode>DETAIL</ram:LineStatusReasonCode>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:Name>Baugelände abräumen</ram:Name>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:AdditionalReferencedDocument>
<ram:IssuerAssignedID>LV 1.1.1.1.1.</ram:IssuerAssignedID>
<ram:LineID>LV_01.01.01</ram:LineID>
<ram:TypeCode>130</ram:TypeCode>
<ram:Name>Leistungsverzeichnis</ram:Name>
<ram:ReferenceTypeCode>BD</ram:ReferenceTypeCode>
</ram:AdditionalReferencedDocument>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>7.00</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="H87">100.00</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>700.00</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>01.01.02</ram:LineID>
<ram:ParentLineID>01.01</ram:ParentLineID>
<ram:LineStatusReasonCode>DETAIL</ram:LineStatusReasonCode>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:Name>Anfallender Pflanzenreste entsorgen</ram:Name>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:AdditionalReferencedDocument>
<ram:IssuerAssignedID>LV 1.1.1.1.1.</ram:IssuerAssignedID>
<ram:LineID>LV01.01.02</ram:LineID>
<ram:TypeCode>130</ram:TypeCode>
<ram:Name>Leistungsverzeichnis</ram:Name>
<ram:ReferenceTypeCode>BD</ram:ReferenceTypeCode>
</ram:AdditionalReferencedDocument>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>7.00</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="H87">100.00</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>700.00</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>01.01.03</ram:LineID>
<ram:ParentLineID>01.01</ram:ParentLineID>
<ram:LineStatusReasonCode>DETAIL</ram:LineStatusReasonCode>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:Name>Müll entsorgen</ram:Name>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:AdditionalReferencedDocument>
<ram:IssuerAssignedID>LV 1.1.1.1.1.</ram:IssuerAssignedID>
<ram:LineID>LV01.01.03</ram:LineID>
<ram:TypeCode>130</ram:TypeCode>
<ram:Name>Leistungsverzeichnis</ram:Name>
<ram:ReferenceTypeCode>BD</ram:ReferenceTypeCode>
</ram:AdditionalReferencedDocument>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>7.00</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="H87">100.00</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>700.00</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>01.02</ram:LineID>
<ram:ParentLineID>01</ram:ParentLineID>
<ram:LineStatusReasonCode>DETAIL</ram:LineStatusReasonCode>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:Name>Pflasterfläche vorbereiten, Planum herstellen und verdichten</ram:Name>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>6.00</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="MTK">250.00</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>1500.00</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>01</ram:LineID>
<ram:LineStatusReasonCode>GROUP</ram:LineStatusReasonCode>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:Name>Summe 01 Bauabschnitt 1 - Vorarbeiten</ram:Name>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:BuyerOrderReferencedDocument>
<ram:LineID>000001</ram:LineID>
</ram:BuyerOrderReferencedDocument>
</ram:SpecifiedLineTradeAgreement>
<!-- <ram:NetPriceProductTradePrice>
<ram:ChargeAmount>3600</ram:ChargeAmount>
<ram:BasisQuantity unitCode="H87">1.0000</ram:BasisQuantity>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="H87">1.00</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery> -->
<ram:SpecifiedLineTradeSettlement>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>3600.00</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:ApplicableHeaderTradeAgreement>
<ram:BuyerReference>Kundenref. BT-10</ram:BuyerReference>
<ram:SellerTradeParty>
<ram:ID>998877</ram:ID>
<ram:Name>Musterbetrieb AG Demodaten</ram:Name>
<ram:SpecifiedLegalOrganization>
<ram:ID>HRA 45678</ram:ID>
</ram:SpecifiedLegalOrganization>
<ram:DefinedTradeContact>
<ram:PersonName>Kontaktperson</ram:PersonName>
<ram:TelephoneUniversalCommunication>
<ram:CompleteNumber>5578</ram:CompleteNumber>
</ram:TelephoneUniversalCommunication>
<ram:EmailURIUniversalCommunication>
<ram:URIID>absender@musterberieb.de</ram:URIID>
</ram:EmailURIUniversalCommunication>
</ram:DefinedTradeContact>
<ram:PostalTradeAddress>
<ram:PostcodeCode>37079</ram:PostcodeCode>
<ram:LineOne>August-Spindler-Strasse 222</ram:LineOne>
<ram:CityName>Göttingen</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
<ram:SpecifiedTaxRegistration>
<ram:ID schemeID="VA">DE727081482</ram:ID>
</ram:SpecifiedTaxRegistration>
</ram:SellerTradeParty>
<ram:BuyerTradeParty>
<ram:ID>330145</ram:ID>
<ram:Name>Auftraggeber Firmenkunde GmbH</ram:Name>
<ram:DefinedTradeContact>
<ram:PersonName>Herr Thomas Auftraggeber</ram:PersonName>
<ram:TelephoneUniversalCommunication>
<ram:CompleteNumber>+49 321 456789</ram:CompleteNumber>
</ram:TelephoneUniversalCommunication>
<ram:EmailURIUniversalCommunication>
<ram:URIID>thomas.auftraggeber@Firmenkunde.de</ram:URIID>
</ram:EmailURIUniversalCommunication>
</ram:DefinedTradeContact>
<ram:PostalTradeAddress>
<ram:PostcodeCode>37073</ram:PostcodeCode>
<ram:LineOne>Gartenstraße 1212</ram:LineOne>
<ram:CityName>Göttingen</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
<ram:SpecifiedTaxRegistration>
<ram:ID schemeID="VA">DE106008386</ram:ID>
</ram:SpecifiedTaxRegistration>
</ram:BuyerTradeParty>
<ram:SellerOrderReferencedDocument>
<ram:IssuerAssignedID>G12042-1-01</ram:IssuerAssignedID>
</ram:SellerOrderReferencedDocument>
<ram:BuyerOrderReferencedDocument>
<ram:IssuerAssignedID>BT-13</ram:IssuerAssignedID>
</ram:BuyerOrderReferencedDocument>
<ram:ContractReferencedDocument>
<ram:IssuerAssignedID>Vertragsnr. BT-12</ram:IssuerAssignedID>
</ram:ContractReferencedDocument>
<ram:AdditionalReferencedDocument>
<ram:IssuerAssignedID>Vergabenr. BT-17</ram:IssuerAssignedID>
<ram:TypeCode>50</ram:TypeCode>
</ram:AdditionalReferencedDocument>
<ram:SpecifiedProcuringProject>
<ram:ID>Projektnr. BT-11</ram:ID>
<ram:Name>Project reference</ram:Name>
</ram:SpecifiedProcuringProject>
</ram:ApplicableHeaderTradeAgreement>
<ram:ApplicableHeaderTradeDelivery>
<ram:ShipToTradeParty>
<ram:Name>Auftraggeber Firmenkunde GmbH</ram:Name>
<ram:PostalTradeAddress>
<ram:PostcodeCode>37073</ram:PostcodeCode>
<ram:LineOne>Gartenstraße 1212</ram:LineOne>
<ram:CityName>Göttingen</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
</ram:ShipToTradeParty>
<ram:ActualDeliverySupplyChainEvent>
<ram:OccurrenceDateTime>
<udt:DateTimeString format="102">20260530</udt:DateTimeString>
</ram:OccurrenceDateTime>
</ram:ActualDeliverySupplyChainEvent>
</ram:ApplicableHeaderTradeDelivery>
<ram:ApplicableHeaderTradeSettlement>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
<ram:SpecifiedTradeSettlementPaymentMeans>
<ram:TypeCode>58</ram:TypeCode>
<ram:PayeePartyCreditorFinancialAccount>
<ram:IBANID>DE75512108001245126199</ram:IBANID>
<ram:AccountName>Musterbetrieb Kontoname</ram:AccountName>
</ram:PayeePartyCreditorFinancialAccount>
<ram:PayeeSpecifiedCreditorFinancialInstitution>
<ram:BICID>PBNKDEFF</ram:BICID>
</ram:PayeeSpecifiedCreditorFinancialInstitution>
</ram:SpecifiedTradeSettlementPaymentMeans>
<ram:ApplicableTradeTax>
<ram:CalculatedAmount>684.00</ram:CalculatedAmount>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:BasisAmount>3600.00</ram:BasisAmount>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:BillingSpecifiedPeriod>
<ram:StartDateTime>
<udt:DateTimeString format="102">20260513</udt:DateTimeString>
</ram:StartDateTime>
<ram:EndDateTime>
<udt:DateTimeString format="102">20260530</udt:DateTimeString>
</ram:EndDateTime>
</ram:BillingSpecifiedPeriod>
<ram:SpecifiedTradePaymentTerms>
<ram:Description>Bei Zahlung bis zum 06.06.2026 zahlen Sie mit 2,50 % Skonto € 4.176,90</ram:Description>
<ram:DueDateDateTime>
<udt:DateTimeString format="102">20260606</udt:DateTimeString>
</ram:DueDateDateTime>
<ram:ApplicableTradePaymentDiscountTerms>
<ram:BasisAmount>4284.00</ram:BasisAmount>
<ram:CalculationPercent>2.5</ram:CalculationPercent>
</ram:ApplicableTradePaymentDiscountTerms>
</ram:SpecifiedTradePaymentTerms>
<ram:SpecifiedTradePaymentTerms>
<ram:Description>Bis zum zum 13.06.2026 ohne Abzug</ram:Description>
<ram:DueDateDateTime>
<udt:DateTimeString format="102">20260613</udt:DateTimeString>
</ram:DueDateDateTime>
</ram:SpecifiedTradePaymentTerms>
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:LineTotalAmount>3600.00</ram:LineTotalAmount>
<ram:ChargeTotalAmount>0.00</ram:ChargeTotalAmount>
<ram:AllowanceTotalAmount>0.00</ram:AllowanceTotalAmount>
<ram:TaxBasisTotalAmount>3600.00</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">684.00</ram:TaxTotalAmount>
<ram:GrandTotalAmount>4284.00</ram:GrandTotalAmount>
<ram:TotalPrepaidAmount>0.00</ram:TotalPrepaidAmount>
<ram:DuePayableAmount>4284.00</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:ReceivableSpecifiedTradeAccountingAccount>
<ram:ID>Kostenstelle BT-19</ram:ID>
</ram:ReceivableSpecifiedTradeAccountingAccount>
</ram:ApplicableHeaderTradeSettlement>
</rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>