diff --git a/src/main/java/de/kosit/validationtool/daemon/Daemon.java b/src/main/java/de/kosit/validationtool/daemon/Daemon.java
index 4ad7fbd..7c5cd23 100644
--- a/src/main/java/de/kosit/validationtool/daemon/Daemon.java
+++ b/src/main/java/de/kosit/validationtool/daemon/Daemon.java
@@ -87,7 +87,10 @@ public class Daemon {
final DefaultCheck check = new DefaultCheck(processor, config);
server = HttpServer.create(getSocket(), 0);
+
server.createContext("/", createRootHandler(check, processor));
+ server.createContext("/transform", transformRootHandler(check, processor));
+
server.createContext("/server/health", new HealthHandler(check.getConfiguration(), healthConverter));
server.createContext("/server/config", new ConfigHandler(check.getConfiguration(), converter));
server.setExecutor(createExecutor());
@@ -99,6 +102,13 @@ public class Daemon {
}
}
+ private HttpHandler transformRootHandler(final DefaultCheck check, final Processor processor) {
+ final TransformHandler checkHandler = new TransformHandler(check, processor);
+
+ final GuiHandler gui = new GuiHandler();
+ return new TransformRoutingHandler(checkHandler);
+ }
+
private HttpHandler createRootHandler(final DefaultCheck check, final Processor processor) {
final HttpHandler rootHandler;
final CheckHandler checkHandler = new CheckHandler(check, processor);
diff --git a/src/main/java/de/kosit/validationtool/daemon/TransformHandler.java b/src/main/java/de/kosit/validationtool/daemon/TransformHandler.java
new file mode 100644
index 0000000..e14f88f
--- /dev/null
+++ b/src/main/java/de/kosit/validationtool/daemon/TransformHandler.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2017-2022 Koordinierungsstelle für IT-Standards (KoSIT)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package de.kosit.validationtool.daemon;
+
+import com.sun.net.httpserver.HttpExchange;
+import de.kosit.validationtool.api.Check;
+import de.kosit.validationtool.api.InputFactory;
+import de.kosit.validationtool.api.Result;
+import de.kosit.validationtool.impl.DefaultCheck;
+import de.kosit.validationtool.impl.Printer;
+import de.kosit.validationtool.impl.input.SourceInput;
+import de.kosit.validationtool.impl.input.StreamHelper;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import net.sf.saxon.s9api.*;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+import java.io.*;
+import java.net.URI;
+import java.util.concurrent.atomic.AtomicLong;
+
+@Slf4j
+@RequiredArgsConstructor
+public class TransformHandler extends BaseHandler {
+
+ private static final AtomicLong counter = new AtomicLong(0);
+
+ private final Check implemenation;
+
+ private final Processor processor;
+
+ @Override
+ public void handle(final HttpExchange httpExchange) throws IOException {
+ try {
+ Printer.writeOut("\nTransformHandler");
+
+ final String requestMethod = httpExchange.getRequestMethod();
+ if (requestMethod.equals("POST")) {
+ final BufferedInputStream buffered = StreamHelper.wrapPeekable(httpExchange.getRequestBody());
+ final SourceInput serverInput = (SourceInput) InputFactory.read(buffered, resolveInputName(httpExchange.getRequestURI()));
+ // final Result result = this.implemenation.checkInput(serverInput);
+
+ write(httpExchange, serializeXR2HTML(serverInput.getSource()), APPLICATION_XML, HttpStatus.SC_OK);
+ }
+ } catch (final Exception e) {
+ Printer.writeOut("Error TransformHandler", e);
+ error(httpExchange, HttpStatus.SC_INTERNAL_SERVER_ERROR, "Internal error: " + e.getMessage());
+ }
+ }
+
+ private static String resolveInputName(final URI requestURI) {
+ final String path = requestURI.getPath();
+ if (path.equalsIgnoreCase("/")) {
+ return "supplied_instance_" + counter.incrementAndGet();
+ }
+ return path.substring((path.lastIndexOf('/') + 1));
+ }
+
+ private static int resolveStatus(final Result result) {
+ if (result.isProcessingSuccessful()) {
+ return result.isAcceptable() ? HttpStatus.SC_OK : HttpStatus.SC_NOT_ACCEPTABLE;
+ }
+ return HttpStatus.SC_UNPROCESSABLE_ENTITY;
+ }
+
+ private byte[] serializeXR2HTML(final Source source) {
+ try ( final ByteArrayOutputStream out = new ByteArrayOutputStream() ) {
+ Processor processor = new Processor(false);
+ XsltCompiler xsltCompiler = processor.newXsltCompiler();
+ XsltExecutable stylesheet = xsltCompiler.compile(new StreamSource(new File("visualization/xsl/ubl-invoice-xr.xsl")));
+ Serializer serializer = processor.newSerializer(out);
+ serializer.setOutputProperty(Serializer.Property.METHOD, "html");
+ serializer.setOutputProperty(Serializer.Property.INDENT, "yes");
+ Xslt30Transformer transformer = stylesheet.load30();
+ transformer.transform(source, serializer);
+ return out.toByteArray();
+ } catch (final IOException | SaxonApiException e) {
+ Printer.writeOut("Error serializeXR2HTML IOException result", e);
+ throw new IllegalStateException("Can not serialize result", e);
+ }
+ }
+}
diff --git a/src/main/java/de/kosit/validationtool/daemon/TransformRoutingHandler.java b/src/main/java/de/kosit/validationtool/daemon/TransformRoutingHandler.java
new file mode 100644
index 0000000..9bab16e
--- /dev/null
+++ b/src/main/java/de/kosit/validationtool/daemon/TransformRoutingHandler.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2017-2022 Koordinierungsstelle für IT-Standards (KoSIT)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package de.kosit.validationtool.daemon;
+
+import com.sun.net.httpserver.HttpExchange;
+import lombok.RequiredArgsConstructor;
+
+import java.io.IOException;
+
+/**
+ * A simple handler which routes between the {@link CheckHandler} and the {@link GuiHandler} depending on the request.
+ */
+@RequiredArgsConstructor
+class TransformRoutingHandler extends BaseHandler {
+
+ private final TransformHandler checkHandler;
+
+ @Override
+ public void handle(final HttpExchange exchange) throws IOException {
+ final String requestMethod = exchange.getRequestMethod();
+ if (requestMethod.equals("POST")) {
+ this.checkHandler.handle(exchange);
+ } else {
+ error(exchange, 405, String.format("Method % not supported", requestMethod));
+ }
+ }
+}
diff --git a/src/main/java/de/kosit/validationtool/daemon/styles/ubl-invoice-xr.xsl b/src/main/java/de/kosit/validationtool/daemon/styles/ubl-invoice-xr.xsl
new file mode 100644
index 0000000..d0d544d
--- /dev/null
+++ b/src/main/java/de/kosit/validationtool/daemon/styles/ubl-invoice-xr.xsl
@@ -0,0 +1,2114 @@
+
+
+
+
+
+ Author: KoSIT Bremen (kosit@finanzen.bremen.de)
+ Fassung vom: 2020-06-30+02:00
+ Überführt eine zur EN 16931 konforme elektronische Rechnung in der konkreten Syntax
+ UBL.2_1.Invoice in eine Instanz gemäß des Schemas für den Namensraum
+ urn:ce.eu:en16931:2017:xoev-de:kosit:standard:xrechnung-1.
+ Das Skript setzt voraus, dass das zu verarbeitende Dokument valide bzgl. des XML
+ Schemas und der Schematron-Regeln der Quelle ist. Für nicht valide Dokumente ist das
+ Ergebnis nicht definiert.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/visualization/CHANGELOG.md b/visualization/CHANGELOG.md
new file mode 100644
index 0000000..fbf4355
--- /dev/null
+++ b/visualization/CHANGELOG.md
@@ -0,0 +1,272 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
+
+
+## v2024-06-20
+
+This release is compatible with XRechnung 3.0.x
+
+### Fixed
+
+* Incorrect German translation for BT-10 (thanks to GitHub user @futurescenario9)
+* BT-31: scheme identifier 'VAT' removed from templates
+* condition removed from BT-29 in cii2xr conversion, which prevented display of multiple BT-29 from different bindings
+* Display of specification identifier in PDF
+
+## v2023-11-15
+
+This release is compatible with XRechnung 3.0.x
+
+### Changed
+
+* Display of BT-158 in HTML
+* BG-3 "PRECEDING INVOICE REFERENCE" was added to test files `maxRechnung_ubl.xml` and `maxRechnung_creditnote.xml`
+* BT-11 "Project reference" with Document Type Code `50` was added to test file `maxRechnung_creditnote.xml`
+
+## v2023-09-22
+
+This release is compatible with XRechnung 3.0.x
+
+### Fixed
+
+* Cardinalities of BT-23 "Business process type", BT-34 "Seller electronic address", and BT-49 "Buyer electronic address" in `src/xsd/xrechnung-semantic-model.xsd`
+
+## v2023-07-31
+
+This release is compatible with XRechnung 3.0.x
+
+### Changed
+
+* Test files in accordance with new Schematron rules (see [XRechnung Schematron 2.0.0](https://github.com/itplr-kosit/xrechnung-schematron/releases/tag/release-2.0.0))
+* Removed references to "Verzugszinsen" from `xrechnung-semantic-model.xsd`
+
+### Fixed
+
+* Bug on selection of BT-61 path in `cii-xr.xsl`
+
+## v2023-05-12
+
+This release is compatible with XRechnung 2.3.x
+
+### Added
+
+* Notification if JavaScript is disabled
+
+### Changed
+
+* BT-160 marked as value, not label
+* Removed id for Third Party Payment Total from translation files and html
+
+## Fixed
+
+* Display of elements with unrestricted number of fraction digits (BT-146, BT-147, BT-148) in PDF (thanks to GitHub user @JannickWeisshaupt).
+* Display of BT-29 and BT-60 in UBL to prevent display of BT-90 as BT-29 or BT-60.
+* Superfluous display of BT-120 and BT-121 labels for VAT category codes that prohibit BT-120 and BT-121.
+* Missing output of BT-49 (Buyer electronic address) in HTML.
+* Misplaced output of BT-30 (Seller legal registration identifier) and BT-31 (Seller VAT identifier) values in Buyer section in HTML.
+* Bug on dates with years less than 1000 (thanks to GitHub user @JannickWeisshaupt).
+* Display of multiple BT-29 and BT-158.
+
+## v2023-01-31
+
+This release is compatible with XRechnung 2.3.x
+
+### Added
+
+* Visualization of third party payment
+
+### Changed
+
+* Normalization of newlines in embedded documents
+* Percentage sign format in PDF and HTML now identical
+
+### Fixed
+
+* Missing condition to BT-110 and BT-111 in ubl-creditnote-xr.xsl
+* Selection of identifier for pdf attachments
+* Missing percentage sign `%` output in PDF and PDF Tabular
+
+## v2022-11-15
+
+This release is compatible with XRechnung 2.2.0
+
+### Added
+
+* BG-26 INVOICE LINE PERIOD elements to `maxRechnung_ubl.xml` and `maxRechnung_creditNote.xml` test instances
+
+### Changed
+
+* Unified country code labels
+* Unified translation of BG-1 INVOICE NOTE in PDF and HTML
+
+### Fixed
+
+* Missing display of BG-14 INVOICING PERIOD
+* Missing display of BT-54 "Buyer country subdivision" in PDF
+* Removed unnecessary xslt messages
+* Display of BT-128 scheme identifier label in PDF normal
+* Incorrect elements in UBL test files removed
+* bug that prevented output of BT-82 in UBL
+
+
+### Changed
+
+* Percentage sign format in PDF and HTML now identical
+
+### Fixed
+
+* Missing percentage sign `%` output in PDF and PDF Tabular
+
+## v2022-07-31
+
+This release is compatible with XRechnung 2.2.0
+
+### Added
+
+* Added multiple BG-27 and BG-28 to `maxRechnung_ubl.xml` and `maxRechnung_creditNote.xml` test instances
+
+### Fixed
+
+* Bug that prevented display of multiple embedded documents in PDF
+
+
+## v2022-07-15
+
+This release is compatible with XRechnung 2.2.0
+
+### Added
+
+* BT-128 "Invoice line object identifier" and "Invoice line object identifier/Scheme identifier" to `maxRechnung_ubl.xml` and `maxRechnung_creditNote.xml` test instances
+* Tests for BT-90 Scheme ID (see [Guide for visual testing Direct Debit](./doc/guide-for-visual-testing.md))
+
+### Fixed
+
+* Missing display of BT-107 "Sum of allowances on document level"
+* Superfluous display of BT-32 scheme identifier
+
+## v2022-05-31
+
+### Added
+
+* Several more test documents
+* Guide for visual testing
+
+### Changed
+
+* Added FileSaver.js for better cross-browser attachment download functionality
+* Created ubl-common-xr.xsl for common named templates as a single point of change
+* Handling of calendar date display is now more robust
+
+### Fixed
+
+* Missing display of BG-32 (thanks to GitHub user @JannickWeisshaupt)
+* BT-47 bug in UBL CreditNote
+* Logic and display of BT-110 and BT-111 in CII
+* Display of percentage sign for VAT percentage rate
+* Missing tooltips in HTML
+
+## v2022-01-31
+
+### Changed
+
+* Tests for all Testsuite instances (except for DiGA example codes) are included
+
+### Fixed
+
+* HTML errors except "stray start tag script" as VNU The Nu Html Checker (v.Nu) reports
+* Translation key for BT-126 (Invoice Line Identifier)
+* Address Labels in HTML for:
+ * Buyer Address (BT-50, BT-51, BT-163),
+ * Seller Address (BT-35, BT-36, BT-162),
+ * Tax representative Address (BT-64, BT-65, BT-164), and
+ * Deliver To Address (BT-75, BT-76, BT-165)
+* Display of BT-72 (Actual Delivery Date)
+
+
+## v2021-11-15
+
+### Added
+
+* Added documentation about [architecture](doc/architecture.md) and [usage](doc/usage.md)
+* Added support for localization -- English and German output is supported. This was done for HTML and PDF output.
+* Added BT-26 to maxRechnung.xml
+
+### Changed
+
+* Enhanced accessibility of HTML output
+* PDF output is now accessible (PDF/UA level), fonts are embedded into PDF
+* Saxon version is configurable with properties (thanks to GitHub user @knoxyz)
+* Default saxon version is set to HE-10.6
+* Rewrote README.md for more details and added links to documentation
+
+### Fixed
+
+* Fixed format-date of BT-26 in xrechnung-html.xsl (thanks to GitHub user @knoxyz)
+* BT-30-Scheme-ID visualized
+
+## v2021-07-31
+
+### Added
+
+* Configuration option for customizable line numbering of invoice lines
+* Configuration option for tabular display of line items for PDF generation
+
+### Fixed
+
+* BT-23 get displayed
+* BT-7 and BT-8 is now displayed in invoice data section
+* Correct translation of BT-86 in cii
+
+## v2020-12-31
+
+### Changed
+
+* cii-xr.xsl tolerates dates with hyphens
+
+### Fixed
+
+* Fixed german date format of bt-9 in pdf visualization
+* Fixed visualization of BG-20, BG-21, BG-27, BG-28
+* Fixed visualization of BT-11 in UBL-CreditNote
+
+## v2020-07-30
+
+### Added
+
+* Sub Invoice Line with recursion in UBL-Invoice
+* PDF visualization
+* Ids to html divs
+
+### Changed
+
+* Compatible with XRechnung 2.0.0
+* Xsl scripts are not generated automatically from xrechnung-model anymore
+* Add scheme-ids and scheme-version-ids to div ids
+* Show multiple payment terms and payment due days from CII
+
+### Fixed
+
+* Issue double generation of BT-47, BT-86
+* Multiple line allowances and line charges (BG-27, BG-28)
+* Id of BG-27 fixed in xr-mapping.xsl and xrechnung-html.xsl
+* Fixed german decimal seperator and missing zero in decimal smaller than 1
+* Fixed visualization of BT-74 and BT-74
+* Fixed BT-39 in HTML
+
+## v2019-06-24
+
+### Added
+
+* License
+
+### Changed
+
+* compatible with XRechnung 1.2.1
+* Add CEN license statement
+
+### Fixed
+
+* BUG in the creation of ``
diff --git a/visualization/README.md b/visualization/README.md
new file mode 100644
index 0000000..9ea5850
--- /dev/null
+++ b/visualization/README.md
@@ -0,0 +1,21 @@
+# XRechnung Visualization Transformators
+
+XSL transformators for web rendering of German CIUS XRechnung or EN16931-1:2017.
+
+The source documents have to be in either UBL Invoice/CreditNote XML and CII XML and have to be conforming to German CIUS XRechnung or EN16931-1:2017.
+
+The transformations have to happen in two steps:
+
+1. Either UBL Invoice/CreditNote XML or CII XML have to be transformed to an intermediate XML which has to be valid to a proprietary simple [XML Schema](src/xsd/xrechnung-semantic-model.xsd)
+2. Then you can use either
+ - [xrechnung-html.xsl](src/xsl/xrechnung-html.xsl) to render an HTML document or
+ - [xr-pdf.xsl](src/xsl/xr-pdf.xsl) to render an PDF document
+
+See our [architecture documentation](doc/architecture.md) (in German) for a general overview.
+Here you can find more details on [configuration and usage options](doc/usage.md)
+
+You can find an example use of these transformations in the [ant build script](build.xml). It also includes some technical tests.
+
+This GitHub repository is only a mirror of our [GitLab project repository](https://projekte.kosit.org/xrechnung/xrechnung-visualization).
+
+For questions please contact [KoSIT](https://xeinkauf.de/kontakt/#support).
diff --git a/visualization/doc/about.md b/visualization/doc/about.md
new file mode 100644
index 0000000..38562d4
--- /dev/null
+++ b/visualization/doc/about.md
@@ -0,0 +1,25 @@
+# About
+
+Die zur Umsetzung des beschriebenen Konzepts benötigten Komponenten beinhalten
+verschiedene Bestandteile.
+
+Elektronische Rechnungen, die visualisiert werden sollen, sind XRechnungskonforme XML-Instanzen in den vorgegebenen Syntaxen UBL und CII. Diese können mittels von der KoSIT
+bereitgestellten Transformationsskripten in das syntaxneutrale Format überführt werden.
+
+Eine beispielhafte Visualisierung des Kompetenzzentrums für das Kassen- und
+Rechnungswesen des Bundes (KKR) ist mittels eines weiteren Transformationsskriptes in
+(X)HTML-Format möglich und kann anhand von CSS-Datei(en) zur Umsetzung von Layout
+und Labeln gestaltet werden. Diese Visualisierung dient der Veranschaulichung und kann
+anwendungsspezifisch angepasst werden.
+
+Die Komponenten zur Visualisierung bestehen aus den folgenden Teilen:
+
+| # | Komponente - Beschreibung | Verantwortung |
+| :--- | :---: | :---: |
+| 1. | Transformationsskripte (XSLTs) zur Überführung von Rechnungen im UBL-Format und CII-Format (konform zu XRechnung) in das syntaxneutrale Format | KoSIT |
+| 2. | XML Schema-Definition (XSD) zur Validierung der erzeugten Rechnungen im syntaxneutralen Format | KoSIT |
+| 3. | Transformationsskript (XSLT) zur Überführung von syntaxneutralen Rechnungen in das (X)HTML-Format | KKR |
+| 4. | CSS-Datei(en) zur Umsetzung von Layout und Labeln | KKR |
+Abbildung 2: Bestandteile und Verantwortlichkeiten
+
+Als Betreiberin des Standards XRechnung stellt die KoSIT die *Bestandteile 1 und 2* bereit, das KKR liefert die *Bestandteile 3 und 4* zur beispielhaften Visualisierung.
\ No newline at end of file
diff --git a/visualization/doc/architecture.md b/visualization/doc/architecture.md
new file mode 100644
index 0000000..fab2999
--- /dev/null
+++ b/visualization/doc/architecture.md
@@ -0,0 +1,41 @@
+# Architecture
+
+Der Standard XRechnung basiert auf der Europäischen Norm EN16931. Diese Norm besteht
+aus einem semantischen Datenmodell und sogenannten Syntax-Bindings zu den
+vorgegebenen Syntaxen.
+
+Das semantische Datenmodell spezifiziert in nicht-technischer Form mögliche Bestandteile
+(Rechnungsnummer, Rechnungsdatum, Rechnungsbetrag, Käufer etc.) elektronischer
+Rechnungen in Form von Business Terms (BT), Business Groups (BG) und Business Rules
+(BR). Mit den Syntax-Bindings wird spezifiziert, wie diese Bestandteile in technischer Form
+abgebildet werden müssen. Grundlage dieser Spezifikation sind die beiden durch die Norm
+vorgegebenen Syntaxen UBL und CII und die diesen Syntaxen zugrundeliegenden XML
+Schema-Dateien.
+
+Im Rahmen der Umsetzung der elektronischen Rechnungsbe- und -verarbeitung wurde in
+unterschiedlichen Zusammenhängen die Anforderung formuliert, die durch die Norm
+spezifizierte technische Abbildung einer konkreten Rechnung (= XML-Instanz) in
+strukturierter Form für menschliche Leser\*innen optimiert lesbar anzuzeigen. Bestandteile
+dieser Anzeige (Visualisierung) sind zum einen die konkreten Inhalte der elektronischen
+Rechnung und deren Bezug zu den BTs und BGs der Norm. Zum anderen muss das
+Konzept der Visualisierung anwendungsspezifische Anforderungen hinsichtlich Position,
+Reihenfolge und Bezeichnung der Bestandteile einer Rechnung unterstützen.
+
+*Abbildung 1* zeigt einen konzeptionellen Ansatz zur Erzeugung der Visualisierung von
+XRechnungen unter Berücksichtigung der genannten Anforderungen.
+
+
+Abbildung 1: Grundkonzept der Visualisierung von XRechnung
+
+*Schritt 1* beinhaltet die Rechnungen im Format der durch die Norm geforderten technischen
+Syntaxen (XML-Instanzen in UBL bzw. CII).
+
+*Schritt 2* zeigt die mittels einer bereitgestellten Transformation (XSL-Datei aus den
+gegebenen XML-Instanzen) in eine „syntaxneutrale“ Abbildung der Rechnung, die um die
+Information zu den in der Rechnung genutzten BTs und BGs angereichert ist.
+
+Diese Abbildung ist die Basis für eine zweite Transformation der Rechnung in eine domänen- bzw. anwendungsspezifische Visualisierung im HTML-Format (*Schritt 3*). Die letztendliche
+Visualisierung dieser HTML-Instanzen erfolgt mittels CSS-Dateien, in denen individuelle
+Bezeichner, Positionen und Reihenfolgen der BTs/BGs und der zugehörigen
+Rechnungsinhalte spezifiziert sind. Transformation (XSL-Datei) und zugehörige CSS-Dateien
+werden durch die jeweiligen Anwendungsbereiche bereitgestellt.
\ No newline at end of file
diff --git a/visualization/doc/development.md b/visualization/doc/development.md
new file mode 100644
index 0000000..f3f8f96
--- /dev/null
+++ b/visualization/doc/development.md
@@ -0,0 +1,112 @@
+# Development of XRechnung Visualization
+
+
+## Project Structure
+
+* `src` contains the source files.
+* `src/test` contains example instances of invoice files.
+* `src/xsd` contains the schema of the intermediate xml.
+* `src/xsl` contains the transformation files.
+
+## Dependencies Overview
+
+### Compile Time
+
+That is for creating visualizations.
+
+* Apache FOP
+* Saxon HE
+* XRechnung-Testsuite
+
+### Testing
+
+* validator-configuration-xrechnung
+* VNU HTML Validator
+
+## The build environment
+
+This repository contains an ANT `build.xml` for development and test.
+
+We recommend `Apache Ant` version 1.10.x or newer (but should work with > 1.8.x).
+
+The main `ant` targets for development are:
+
+* `clean` deletes all generated folders i.e. foremost the `build` directory.
+* `transform-to-visualization` generates all visualizations from xrechnung-testsuite and test instances in `src/test`
+* `test` validates source UBL or CII XML against XRechnung, transforms to XR Sem Model and schema validates results and transforms and test HTML and PDF visualization
+* and `dist` (creating the distribution artefact)
+
+However, because of the complex dependencies, you may only expect `transform-to-visualization` target to work without any customizations.
+
+## Test dependencies on the fly
+
+If you build own local custom versions of dependencies such as XRechnung Testsuite or Validator Configuration XRechnung, you can customize the ant build at runtime.
+
+### Test with local Validator Configuration XRechnung
+
+If you want to test with a local validator configuration xrechnung installation set the ant property `validator.repository.dir` to the directory (full path) like e.g. `validator.repository.dir=/mnt/c/data/git-repos/validator-configuration-xrechnung/build` (Linux).
+To execute the `test` target, for example, call
+
+```shell
+ant -Dvalidator.repository.dir=/home/renzo/projects/validator-configuration-xrechnung/build test
+```
+
+For Windows users:
+
+```shell
+ant "-Dvalidator.repository.dir=/c:/dev/git/validator-configuration-xrechnung/build" test
+```
+
+### Development properties file
+
+In order to configure more complex adoption to the local development needs, you have to load a set of different properties from a file.
+
+We provide the `development.build.properties.example` file for the most common properties to be set different than default. It contains some documentation.
+
+You have to copy the file to e.g. `development.build.properties` and you have to explicitly provide the property file location at CLI for your development (otherwise tests will always fail or not be executed at all).
+
+
+## Distribution
+
+The `ant` target `dist` creates the distribution zip Archive for releases.
+
+## Release
+
+### Checklist
+
+* Are all issues scheduled for the release solved?
+* Is everything merged to master branch?
+* Make sure that CHANGELOG.md is up to date
+* Make sure all external contributors are mentioned
+
+
+### Prepare
+
+* Make sure you committed and pushed everything
+* Create the distribution
+
+ * Use the `clean` target to build and test all from scratch
+
+```
+ant clean dist
+```
+
+* Tag the last commit according to the following naming rule: `v${xr-visu.version.full}` e.g.
+ `git tag v2024-06-20 && git push origin v2024-06-20`
+
+### Publish
+
+* Draft a new release at https://github.com/itplr-kosit/xrechnung-visualization/releases/new
+ * Choose the git tag you just created
+* Add release title of the following scheme: `XRechnung Visualization ${xr-visu.version.full} compatible with XRechnung ${xrechnung.version}`
+* Copy & paste the high quality changelog entries for this release from CHANGELOG.md.
+* Upload distribution zip and tick mark this release as a `pre-release`.
+* If **all** released components are checked to be okay, then uncheck pre-release.
+
+### Post-Release
+
+* Change the version of this component in `build.xml` to the next release and commit
+* bump version
+* update CHANGELOG.md
+
+You are done :smile:
diff --git a/visualization/doc/guide-for-visual-testing.md b/visualization/doc/guide-for-visual-testing.md
new file mode 100644
index 0000000..e5e28ca
--- /dev/null
+++ b/visualization/doc/guide-for-visual-testing.md
@@ -0,0 +1,39 @@
+# Guide for Visual Testing
+
+## Embedded Documents
+For testing embedded documents' features, use
+* embedded-documents-bt-125_ubl.xml
+* embedded-documents-with-newline-and-whitespace_ubl.xml
+* 01.15
+
+Expectation:
+* HTML: should work across all browsers
+* PDF: default configuration should work:
+ * with Adobe Professional 2017
+ * with PDF-XChange Viewer 2.5
+ * but not in browsers at all
+
+## Scheme Identifier for various BTs
+* maxRechnung_ubl.xml
+* maxRechnung_creditnote.xml
+
+## "Project reference" (BT-11) in UBL Creditnote
+* maxRechnung_creditnote.xml
+
+## Direct Debit (BG-19)
+
+* direct-debit-bt-90-seller_ubl.xml (BT-29 and BT-60 with @schemeID)
+* direct-debit-bt-90-payee_ubl.xml (BT-29 and BT-60 without @schemeID)
+* direct-debit-bt-90-seller_creditnote.xml (BT-29 and BT-60 with @schemeID)
+* direct-debit-bt-90-payee_creditnote.xml (BT-29 and BT-60 without @schemeID)
+
+## Item Attributes (BG-32)
+* itemAttributes_ubl.xml
+
+## Dates
+* wrong-date-with-text-uncefact.xml
+* wrong-date-with-zeros-uncefact.xml
+
+expectation:
+* fields should contain "no date defined" or similar
+* all others should show YYYY-MM-DD without timezone
diff --git a/visualization/doc/usage.md b/visualization/doc/usage.md
new file mode 100644
index 0000000..b02880b
--- /dev/null
+++ b/visualization/doc/usage.md
@@ -0,0 +1,72 @@
+# Usage
+
+There are various configuration options for the XSLT transformations.
+
+## PDF Transformation
+
+### Choice of PDF Profile
+
+There are various profiles for PDF generation. The default uses none with enabled accessibility.
+In order to use profile PDF/UA-1 and PDF/A-1, you can use another FOP configuration during build time, e.g.
+```bash
+ant -Dfop.config=conf/fop-with-ua1-a1.xconf transform-xr-to-pdf
+```
+
+Note: PDF/A-1 does not allow embedded files. Use the default profile for display of embedded documents.
+
+### Choice of FO engine
+
+The FO engine used can be specified. Engine specific extensions will then be enabled.
+
+```xml
+
+```
+
+Supported values are:
+* axf - Antenna House XSL Formatter
+* fop - Apache FOP
+
+### Layout options
+
+**Configuration of the general invoice layout **
+
+```xml
+normal
+```
+Supported values are:
+* normal - Similar to HTML layout incl. box layout of invoice lines
+* tabular - Tabular layout of invoice lines
+
+**Configuration of table column width**
+
+```xml
+2 7 2 2 2 2 1.3 2
+```
+
+Change column proportions according to your tabular layout.
+
+**Configuration of the invoice line numbering scheme**
+
+```xml
+normal
+```
+
+Supported values are:
+* normal - use numbers as in original invoice
+* 1.1 - use multilevel arabic numbering
+* 1.i - use mixture of arabic and roman numbering
+* 00001 - use aligned arabic numbering
+* *other* - any picture string supported by [xsl:number](https://developer.mozilla.org/en-US/docs/Web/XSLT/Element/number) instruction can be used
+
+### Choice of Language for HTML and PDF
+
+Default language is German (de), an English (en) translation is also provided.
+
+```xml
+
+```
+
+Translation files are located in the [l10n subdirectory](../src/xsl/l10n/) and can be customized according to specific local needs.
+
+Translation files are formatted according to Java Properties in XML (see https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Properties.html for details).
+Additional languages can be included by adding XML Properties files to the [l10n directory](../src/xsl/l10n/). By default, files have to be named according to ISO 639-1 two letter language codes (e.g. `fr.xml` for French).
\ No newline at end of file
diff --git a/visualization/test/instances/direct-debit-bt-90-payee_creditnote.xml b/visualization/test/instances/direct-debit-bt-90-payee_creditnote.xml
new file mode 100644
index 0000000..3475e77
--- /dev/null
+++ b/visualization/test/instances/direct-debit-bt-90-payee_creditnote.xml
@@ -0,0 +1,352 @@
+
+
+ urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+ 1234567890
+ 2018-10-15
+ 381
+ Bemerkung zu der Rechnung gibt es nicht, da dies eine Testrechnung
+ ist.
+ EUR
+ 99000000-01514-29
+
+ 2018-10-16
+ 2018-10-23
+
+
+ 2345678901
+ Auftragsreferenz
+
+
+ Vertragsreferenz
+
+
+
+ Vergabe-und Losreferenz
+
+
+
+
+ rechnungsausgang@test.com
+
+
+ 292345678
+
+
+ EntServDE
+
+
+ Straße Rechnungssteller 1
+ Erweiterte Anschrift
+ Rechnungssteller
+ Ort Rechnungssteller
+ 12345
+ Bundesland Rechnungssteller
+
+ DK
+
+
+
+ ATU13585627
+
+ VAT
+
+
+
+ 456
+
+ AAA
+
+
+
+ EntServ Deutschland GmbH
+ 123456789
+ Weitere rechtliche
+ Informationen
+
+
+ EntServ Deutschland
+ 0123 456789
+ kontakt@Rechnungssteller.de
+
+
+
+
+
+ rechnungseingang@test.de
+
+ DPMA-678
+
+
+ Abweichender Handelsname Rechnungsempfänger
+
+
+ Straße Rechnungsempfänger 1
+ Erweitere Adresse
+ Rechnungempfänger
+ Ort Rechnungsempfänger
+ 67890
+ Bundesland
+ Rechnungsempfänger
+
+ CN
+
+
+
+ ATU13585627
+
+ VAT
+
+
+
+ Deutsches Patent - und
+ Markenamt
+ 90000000-03083-12
+
+
+ Kontakt Rechnungsempfänger
+ 0987 654321
+ tina@tester.de
+
+
+
+
+
+
+ 601234567
+
+
+
+ DE64500105173922382999
+
+
+ Abweichender Zahlungsempfänger
+
+
+ AZE-123
+
+
+
+ 2018-10-22
+
+ AL
+
+ Anderer Leistungsempfänger Straße 1
+ Anderer Leistungsempfänger erweiterte
+ Adresse
+ Anderer Leistungsempfänger Ort
+ 45678
+ Anderer Leistungempfänger
+ Bundesland
+
+ BS
+
+
+
+
+
+ Anderer Leistungsempfänger
+
+
+
+
+
+ 59
+
+ 12345
+
+ DE22500105175263185267
+
+
+
+
+ Zahlungsbedingungen gibt es nicht, da dies eine Testrechnung
+ ist.
+
+
+ false
+ Grund für den Nachlass auf
+ Dokumentenebene
+ 50.00
+ 1000.00
+ 2000.00
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ true
+ Grund für den Zuschlag auf
+ Dokumentenenbene
+ 10.00
+ 400.00
+ 4000.00
+
+ Z
+ 0
+
+ VAT
+
+
+
+
+ false
+ Grund für Nachlass 2
+ 10.00
+ 1500.00
+ 15000.00
+
+ E
+ 0
+
+ VAT
+
+
+
+
+ 510.00
+
+ 400.00
+ 0
+
+ Z
+ 0
+
+ VAT
+
+
+
+
+ 10000.00
+ 700.00
+
+ S
+ 7
+
+ VAT
+
+
+
+
+ -1000.00
+ -190.00
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ -1500.00
+ 0
+
+ E
+ 0
+ Grund für die Befreiung
+
+ VAT
+
+
+
+
+
+ 10000.00
+ 7900.00
+ 8410.00
+ 2500.00
+ 400.00
+ 500.00
+ 210.00
+ 8120.00
+
+
+ 123
+ 10.00
+ 10000.00
+ BRE
+
+ RPB
+
+
+ 7362789
+ 130
+
+
+ false
+ Grund Nachlass
+ 10.00
+ 10.00
+ 100.00
+
+
+ false
+ Grund Nachlass 2
+ 50.00
+ 100.00
+ 200.00
+
+
+ true
+ Grund Zuschlag
+ 50.00
+ 100.00
+ 200.00
+
+
+ true
+ Grund Zuschlag 2
+ 10.00
+ 10.00
+ 100.00
+
+
+ Beschreibung Artikel
+ Bezeichung Artikel
+
+ BB
+
+
+ 456
+
+
+ 1234567890128
+
+
+ 12344321
+
+
+ S
+ 7
+
+ VAT
+
+
+
+ Name der Eigenschaft
+ Wert der Eigenschaft
+
+
+ Name der Artikeleigenschaft
+ Wert der Artikeleigenschaft
+
+
+
+ 1000
+
+
+
diff --git a/visualization/test/instances/direct-debit-bt-90-payee_ubl.xml b/visualization/test/instances/direct-debit-bt-90-payee_ubl.xml
new file mode 100644
index 0000000..0ea5892
--- /dev/null
+++ b/visualization/test/instances/direct-debit-bt-90-payee_ubl.xml
@@ -0,0 +1,357 @@
+
+
+
+
+ urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+ 1234567890
+ 2018-10-15
+ 2018-10-29
+ 380
+ Bemerkung zu der Rechnung gibt es nicht, da dies eine Testrechnung
+ ist.
+ EUR
+ 99000000-01514-29
+
+ 2018-10-16
+ 2018-10-23
+
+
+ 2345678901
+ Auftragsreferenz
+
+
+ Vergabe-und Losreferenz
+
+
+ Vertragsreferenz
+
+
+
+ Projektreferenz
+
+
+
+ rechnungsausgang@test.com
+
+
+ 987654321
+
+
+ EntServDE
+
+
+ Straße Rechnungssteller 1
+ Erweiterte Anschrift
+ Rechnungssteller
+ Ort Rechnungssteller
+ 12345
+ Bundesland Rechnungssteller
+
+ DK
+
+
+
+ ATU13585627
+
+ VAT
+
+
+
+ 456
+
+ AAA
+
+
+
+ EntServ Deutschland GmbH
+ 123456789
+ Weitere rechtliche
+ Informationen
+
+
+ EntServ Deutschland
+ 0123 456789
+ kontakt@Rechnungssteller.de
+
+
+
+
+
+ rechnungseingang@test.de
+
+ DPMA-678
+
+
+ Abweichender Handelsname Rechnungsempfänger
+
+
+ Straße Rechnungsempfänger 1
+ Erweitere Adresse
+ Rechnungempfänger
+ Ort Rechnungsempfänger
+ 67890
+ Bundesland
+ Rechnungsempfänger
+
+ CN
+
+
+
+ ATU13585627
+
+ VAT
+
+
+
+ Deutsches Patent - und
+ Markenamt
+ 90000000-03083-12
+
+
+ Kontakt Rechnungsempfänger
+ 0987 654321
+ tina@tester.de
+
+
+
+
+
+
+ 601234567
+
+
+
+ DE64500105173922382999
+
+
+ Abweichender Zahlungsempfänger
+
+
+ AZE-123
+
+
+
+ 2018-10-22
+
+ AL
+
+ Anderer Leistungsempfänger Straße 1
+ Anderer Leistungsempfänger erweiterte
+ Adresse
+ Anderer Leistungsempfänger Ort
+ 45678
+ Anderer Leistungempfänger
+ Bundesland
+
+ BS
+
+
+
+
+
+ Anderer Leistungsempfänger
+
+
+
+
+
+ 59
+
+ 12345
+
+ DE22500105175263185267
+
+
+
+
+ Zahlungsbedingungen gibt es nicht, da dies eine Testrechnung
+ ist.
+
+
+ false
+ Grund für den Nachlass auf
+ Dokumentenebene
+ 40.00
+ 1000.00
+ 2500.00
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ true
+ Grund für den Zuschlag auf
+ Dokumentenenbene
+ 30.00
+ 400.00
+ 1333.33
+
+ Z
+ 0
+
+ VAT
+
+
+
+
+ false
+ Grund für Nachlass 2
+ 80.00
+ 1500.00
+ 1875.00
+
+ E
+ 0
+
+ VAT
+
+
+
+
+ 510.00
+
+ 400.00
+ 0
+
+ Z
+ 0
+
+ VAT
+
+
+
+
+ 10000.00
+ 700.00
+
+ S
+ 7
+
+ VAT
+
+
+
+
+ -1000.00
+ -190.00
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ -1500.00
+ 0
+
+ E
+ 0
+ Grund für die Befreiung
+
+ VAT
+
+
+
+
+
+ 10000.00
+ 7900.00
+ 8410.00
+ 2500.00
+ 400.00
+ 500.00
+ 210.00
+ 8120.00
+
+
+ 123
+ 10.00
+ 10000.00
+ BRE
+
+ RPB
+
+
+ 7362789
+ 130
+
+
+ false
+ Grund Nachlass
+ 10.00
+ 10.00
+ 100.00
+
+
+ false
+ Grund Nachlass 2
+ 50.00
+ 100.00
+ 200.00
+
+
+ true
+ Grund Zuschlag
+ 50.00
+ 100.00
+ 200.00
+
+
+ true
+ Grund Zuschlag 2
+ 10.00
+ 10.00
+ 100.00
+
+
+ Beschreibung Artikel
+ Bezeichung Artikel
+
+ BB
+
+
+ 456
+
+
+ 1234567890128
+
+
+ 12344321
+
+
+ S
+ 7
+
+ VAT
+
+
+
+ Name der Eigenschaft
+ Wert der Eigenschaft
+
+
+ Name der Artikeleigenschaft
+ Wert der Artikeleigenschaft
+
+
+
+ 1000
+
+
+
diff --git a/visualization/test/instances/direct-debit-bt-90-seller_creditnote.xml b/visualization/test/instances/direct-debit-bt-90-seller_creditnote.xml
new file mode 100644
index 0000000..74c3351
--- /dev/null
+++ b/visualization/test/instances/direct-debit-bt-90-seller_creditnote.xml
@@ -0,0 +1,352 @@
+
+
+ urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+ 1234567890
+ 2018-10-15
+ 381
+ Bemerkung zu der Rechnung gibt es nicht, da dies eine Testrechnung
+ ist.
+ EUR
+ 99000000-01514-29
+
+ 2018-10-16
+ 2018-10-23
+
+
+ 2345678901
+ Auftragsreferenz
+
+
+ Vertragsreferenz
+
+
+
+ Vergabe-und Losreferenz
+
+
+
+
+ rechnungsausgang@test.com
+
+
+ 291234567
+
+
+
+ DE64500105173922382999
+
+
+ EntServDE
+
+
+ Straße Rechnungssteller 1
+ Erweiterte Anschrift
+ Rechnungssteller
+ Ort Rechnungssteller
+ 12345
+ Bundesland Rechnungssteller
+
+ DK
+
+
+
+ ATU13585627
+
+ VAT
+
+
+
+ 456
+
+ AAA
+
+
+
+ EntServ Deutschland GmbH
+ 123456789
+ Weitere rechtliche
+ Informationen
+
+
+ EntServ Deutschland
+ 0123 456789
+ kontakt@Rechnungssteller.de
+
+
+
+
+
+ rechnungseingang@test.de
+
+ DPMA-678
+
+
+ Abweichender Handelsname Rechnungsempfänger
+
+
+ Straße Rechnungsempfänger 1
+ Erweitere Adresse
+ Rechnungempfänger
+ Ort Rechnungsempfänger
+ 67890
+ Bundesland
+ Rechnungsempfänger
+
+ CN
+
+
+
+ ATU13585627
+
+ VAT
+
+
+
+ Deutsches Patent - und
+ Markenamt
+ 90000000-03083-12
+
+
+ Kontakt Rechnungsempfänger
+ 0987 654321
+ tina@tester.de
+
+
+
+
+
+
+ AZE
+
+
+ Abweichender Zahlungsempfänger
+
+
+ AZE-123
+
+
+
+ 2018-10-22
+
+ AL
+
+ Anderer Leistungsempfänger Straße 1
+ Anderer Leistungsempfänger erweiterte
+ Adresse
+ Anderer Leistungsempfänger Ort
+ 45678
+ Anderer Leistungempfänger
+ Bundesland
+
+ BS
+
+
+
+
+
+ Anderer Leistungsempfänger
+
+
+
+
+
+ 59
+
+ 12345
+
+ DE22500105175263185267
+
+
+
+
+ Zahlungsbedingungen gibt es nicht, da dies eine Testrechnung
+ ist.
+
+
+ false
+ Grund für den Nachlass auf
+ Dokumentenebene
+ 50.00
+ 1000.00
+ 2000.00
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ true
+ Grund für den Zuschlag auf
+ Dokumentenenbene
+ 10.00
+ 400.00
+ 4000.00
+
+ Z
+ 0
+
+ VAT
+
+
+
+
+ false
+ Grund für Nachlass 2
+ 10.00
+ 1500.00
+ 15000.00
+
+ E
+ 0
+
+ VAT
+
+
+
+
+ 510.00
+
+ 400.00
+ 0
+
+ Z
+ 0
+
+ VAT
+
+
+
+
+ 10000.00
+ 700.00
+
+ S
+ 7
+
+ VAT
+
+
+
+
+ -1000.00
+ -190.00
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ -1500.00
+ 0
+
+ E
+ 0
+ Grund für die Befreiung
+
+ VAT
+
+
+
+
+
+ 10000.00
+ 7900.00
+ 8410.00
+ 2500.00
+ 400.00
+ 500.00
+ 210.00
+ 8120.00
+
+
+ 123
+ 10.00
+ 10000.00
+ BRE
+
+ RPB
+
+
+ 7362789
+ 130
+
+
+ false
+ Grund Nachlass
+ 10.00
+ 10.00
+ 100.00
+
+
+ false
+ Grund Nachlass 2
+ 50.00
+ 100.00
+ 200.00
+
+
+ true
+ Grund Zuschlag
+ 50.00
+ 100.00
+ 200.00
+
+
+ true
+ Grund Zuschlag 2
+ 10.00
+ 10.00
+ 100.00
+
+
+ Beschreibung Artikel
+ Bezeichung Artikel
+
+ BB
+
+
+ 456
+
+
+ 1234567890128
+
+
+ 12344321
+
+
+ S
+ 7
+
+ VAT
+
+
+
+ Name der Eigenschaft
+ Wert der Eigenschaft
+
+
+ Name der Artikeleigenschaft
+ Wert der Artikeleigenschaft
+
+
+
+ 1000
+
+
+
diff --git a/visualization/test/instances/direct-debit-bt-90-seller_ubl.xml b/visualization/test/instances/direct-debit-bt-90-seller_ubl.xml
new file mode 100644
index 0000000..7fd4355
--- /dev/null
+++ b/visualization/test/instances/direct-debit-bt-90-seller_ubl.xml
@@ -0,0 +1,357 @@
+
+
+
+
+ urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+ 1234567890
+ 2018-10-15
+ 2018-10-29
+ 380
+ Bemerkung zu der Rechnung gibt es nicht, da dies eine Testrechnung
+ ist.
+ EUR
+ 99000000-01514-29
+
+ 2018-10-16
+ 2018-10-23
+
+
+ 2345678901
+ Auftragsreferenz
+
+
+ Vergabe-und Losreferenz
+
+
+ Vertragsreferenz
+
+
+
+ Projektreferenz
+
+
+
+ rechnungsausgang@test.com
+
+
+ 291234567
+
+
+
+ DE64500105173922382999
+
+
+ EntServDE
+
+
+ Straße Rechnungssteller 1
+ Erweiterte Anschrift
+ Rechnungssteller
+ Ort Rechnungssteller
+ 12345
+ Bundesland Rechnungssteller
+
+ DK
+
+
+
+ ATU13585627
+
+ VAT
+
+
+
+ 456
+
+ AAA
+
+
+
+ EntServ Deutschland GmbH
+ 123456789
+ Weitere rechtliche
+ Informationen
+
+
+ EntServ Deutschland
+ 0123 456789
+ kontakt@Rechnungssteller.de
+
+
+
+
+
+ rechnungseingang@test.de
+
+ DPMA-678
+
+
+ Abweichender Handelsname Rechnungsempfänger
+
+
+ Straße Rechnungsempfänger 1
+ Erweitere Adresse
+ Rechnungempfänger
+ Ort Rechnungsempfänger
+ 67890
+ Bundesland
+ Rechnungsempfänger
+
+ CN
+
+
+
+ ATU13585627
+
+ VAT
+
+
+
+ Deutsches Patent - und
+ Markenamt
+ 90000000-03083-12
+
+
+ Kontakt Rechnungsempfänger
+ 0987 654321
+ tina@tester.de
+
+
+
+
+
+
+ AZE
+
+
+ Abweichender Zahlungsempfänger
+
+
+ AZE-123
+
+
+
+ 2018-10-22
+
+ AL
+
+ Anderer Leistungsempfänger Straße 1
+ Anderer Leistungsempfänger erweiterte
+ Adresse
+ Anderer Leistungsempfänger Ort
+ 45678
+ Anderer Leistungempfänger
+ Bundesland
+
+ BS
+
+
+
+
+
+ Anderer Leistungsempfänger
+
+
+
+
+
+ 59
+
+ 12345
+
+ DE22500105175263185267
+
+
+
+
+ Zahlungsbedingungen gibt es nicht, da dies eine Testrechnung
+ ist.
+
+
+ false
+ Grund für den Nachlass auf
+ Dokumentenebene
+ 50.00
+ 1000.00
+ 2000.00
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ true
+ Grund für den Zuschlag auf
+ Dokumentenenbene
+ 10.00
+ 400.00
+ 4000.00
+
+ Z
+ 0
+
+ VAT
+
+
+
+
+ false
+ Grund für Nachlass 2
+ 10.00
+ 1500.00
+ 15000.00
+
+ E
+ 0
+
+ VAT
+
+
+
+
+ 510.00
+
+ 400.00
+ 0
+
+ Z
+ 0
+
+ VAT
+
+
+
+
+ 10000.00
+ 700.00
+
+ S
+ 7
+
+ VAT
+
+
+
+
+ -1000.00
+ -190.00
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ -1500.00
+ 0
+
+ E
+ 0
+ Grund für die Befreiung
+
+ VAT
+
+
+
+
+
+ 10000.00
+ 7900.00
+ 8410.00
+ 2500.00
+ 400.00
+ 500.00
+ 210.00
+ 8120.00
+
+
+ 123
+ 10.00
+ 10000.00
+ BRE
+
+ RPB
+
+
+ 7362789
+ 130
+
+
+ false
+ Grund Nachlass
+ 10.00
+ 10.00
+ 100.00
+
+
+ false
+ Grund Nachlass 2
+ 50.00
+ 100.00
+ 200.00
+
+
+ true
+ Grund Zuschlag
+ 50.00
+ 100.00
+ 200.00
+
+
+ true
+ Grund Zuschlag 2
+ 10.00
+ 10.00
+ 100.00
+
+
+ Beschreibung Artikel
+ Bezeichung Artikel
+
+ BB
+
+
+ 456
+
+
+ 1234567890128
+
+
+ 12344321
+
+
+ S
+ 7
+
+ VAT
+
+
+
+ Name der Eigenschaft
+ Wert der Eigenschaft
+
+
+ Name der Artikeleigenschaft
+ Wert der Artikeleigenschaft
+
+
+
+ 1000
+
+
+
diff --git a/visualization/test/instances/embedded-documents-bt-125_ubl.xml b/visualization/test/instances/embedded-documents-bt-125_ubl.xml
new file mode 100644
index 0000000..7c62b81
--- /dev/null
+++ b/visualization/test/instances/embedded-documents-bt-125_ubl.xml
@@ -0,0 +1,213 @@
+
+
+ urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+ 0000123456
+ 2017-12-11
+ 2018-01-10
+ 380
+ #ADU#[Invoice note]
+ EUR
+ 11002002-98765-14
+
+ 10520
+
+
+ 0000000752
+
+
+ 01_15_Anhang_01.pdf
+ Aufschlüsselung der einzelnen
+ Leistungspositionen
+
+ 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
+
+
+
+ 01_15_Anhang_02.pdf
+ Aufschlüsselung der einzelnen
+ Leistungspositionen
+
+ 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
+
+
+
+ Entwicklung System
+
+
+
+ seller@seller.com
+
+ [Seller street]
+ [Seller city]
+ 10623
+
+ DE
+
+
+
+ DE123456789
+
+ VAT
+
+
+
+ [Seller name]
+
+
+ [Seller contact person]
+ 1234567890
+ contact@seller.de
+
+
+
+
+
+ buyer@buyer.com
+
+ [Buyer street]
+ [Buyer city]
+ 12345
+
+ DE
+
+
+
+ [Buyer name]
+
+
+ [Buyer contact person]
+ buyer@contact.com
+
+
+
+
+ 58
+ 0000123456
+
+
+ DE75512108001245126199
+ [Payment account name]
+
+ [BIC]
+
+
+
+
+ Bei Zahlungen binnen 14 Tagen, 2% Skonto
+
+
+ 1706.2
+
+ 8980
+ 1706.2
+
+ S
+ 19
+
+ VAT
+
+
+
+
+
+ 8980
+ 8980
+ 10686.2
+ 10686.2
+
+
+ 0
+ 1
+ 850
+
+ Anforderungmanagament
+ Anforderungsaufnahme
+
+ 1034
+
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ 850
+
+
+
+ 1
+ 1
+ 2986
+
+ Erstellung Lastenheft bis Abnahme
+ Lastenheft
+
+ 1035
+
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ 2986
+
+
+
+ 2
+ 1
+ 2344
+
+ Erstellung Pflichtenheft bis Abnahme
+ Pflichtenheft
+
+ 1036
+
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ 2344
+
+
+
+ 3
+ 1
+ 2800
+
+ Entwicklung System bis Implementierung
+ Entwicklung
+
+ 1037
+
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ 2800
+
+
+
diff --git a/visualization/test/instances/embedded-documents-with-newline-and-whitespace_ubl.xml b/visualization/test/instances/embedded-documents-with-newline-and-whitespace_ubl.xml
new file mode 100644
index 0000000..066d7b1
--- /dev/null
+++ b/visualization/test/instances/embedded-documents-with-newline-and-whitespace_ubl.xml
@@ -0,0 +1,215 @@
+
+
+ urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+ 0000123456
+ 2017-12-11
+ 2018-01-10
+ 380
+ #ADU#[Invoice note]
+ EUR
+ 11002002-98765-14
+
+ 10520
+
+
+ 0000000752
+
+
+ 01_15_Anhang_01.pdf
+ Aufschlüsselung der einzelnen
+ Leistungspositionen
+
+ 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
+
+
+
+ 01_15_Anhang_02.pdf
+ Aufschlüsselung der einzelnen
+ Leistungspositionen
+
+
+ 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
+
+
+
+
+ Entwicklung System
+
+
+
+ seller@seller.com
+
+ [Seller street]
+ [Seller city]
+ 10623
+
+ DE
+
+
+
+ DE123456789
+
+ VAT
+
+
+
+ [Seller name]
+
+
+ [Seller contact person]
+ 1234567890
+ contact@seller.de
+
+
+
+
+
+ buyer@buyer.com
+
+ [Buyer street]
+ [Buyer city]
+ 12345
+
+ DE
+
+
+
+ [Buyer name]
+
+
+ [Buyer contact person]
+ buyer@contact.com
+
+
+
+
+ 58
+ 0000123456
+
+
+ DE75512108001245126199
+ [Payment account name]
+
+ [BIC]
+
+
+
+
+ Bei Zahlungen binnen 14 Tagen, 2% Skonto
+
+
+ 1706.2
+
+ 8980
+ 1706.2
+
+ S
+ 19
+
+ VAT
+
+
+
+
+
+ 8980
+ 8980
+ 10686.2
+ 10686.2
+
+
+ 0
+ 1
+ 850
+
+ Anforderungmanagament
+ Anforderungsaufnahme
+
+ 1034
+
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ 850
+
+
+
+ 1
+ 1
+ 2986
+
+ Erstellung Lastenheft bis Abnahme
+ Lastenheft
+
+ 1035
+
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ 2986
+
+
+
+ 2
+ 1
+ 2344
+
+ Erstellung Pflichtenheft bis Abnahme
+ Pflichtenheft
+
+ 1036
+
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ 2344
+
+
+
+ 3
+ 1
+ 2800
+
+ Entwicklung System bis Implementierung
+ Entwicklung
+
+ 1037
+
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ 2800
+
+
+
diff --git a/visualization/test/instances/itemAttributes_ubl.xml b/visualization/test/instances/itemAttributes_ubl.xml
new file mode 100644
index 0000000..2a673ce
--- /dev/null
+++ b/visualization/test/instances/itemAttributes_ubl.xml
@@ -0,0 +1,149 @@
+
+
+ urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+ 123456XX
+ 2016-04-04
+ 380
+ #ADU#Es gelten unsere Allgem. Geschäftsbedingungen, die Sie unter […] finden.
+ EUR
+ 04011000-12345-03
+
+
+ seller@seller.com
+
+ [Seller trading name]
+
+
+ [Seller address line 1]
+ [Seller city]
+ 12345
+
+ DE
+
+
+
+ DE 123456789
+
+ VAT
+
+
+
+ [Seller name]
+ [HRA-Eintrag]
+ 123/456/7890, HRA-Eintrag in […]
+
+
+ nicht vorhanden
+ +49 1234-5678
+ seller@email.de
+
+
+
+
+
+ buyer@buyer.com
+
+ [Buyer identifier]
+
+
+ [Buyer address line 1]
+ [Buyer city]
+ 12345
+
+ DE
+
+
+
+ [Buyer name]
+
+
+
+
+ 58
+
+
+ DE75512108001245126199
+
+
+
+ Zahlbar sofort ohne Abzug.
+
+
+ 22.04
+
+ 314.86
+ 22.04
+
+ S
+ 7
+
+ VAT
+
+
+
+
+
+ 314.86
+ 314.86
+ 336.9
+ 336.9
+
+
+ Zeitschrift [...]
+ Die letzte Lieferung im Rahmen des abgerechneten Abonnements erfolgt in 12/2016 Lieferung erfolgt / erfolgte direkt vom Verlag
+ 1
+ 288.79
+
+ 2016-01-01
+ 2016-12-31
+
+
+ 6171175.1
+
+
+ Zeitschrift Inland
+ Zeitschrift [...]
+
+ 246
+
+
+ 0721-880X
+
+
+ S
+ 7
+
+ VAT
+
+
+
+ Property Name
+ Property value
+
+
+
+ 288.79
+
+
+
+ Porto + Versandkosten
+ 1
+ 26.07
+
+ Porto + Versandkosten
+
+ S
+ 7
+
+ VAT
+
+
+
+
+ 26.07
+
+
+
diff --git a/visualization/test/instances/maxRechnung_creditnote.xml b/visualization/test/instances/maxRechnung_creditnote.xml
new file mode 100644
index 0000000..326b164
--- /dev/null
+++ b/visualization/test/instances/maxRechnung_creditnote.xml
@@ -0,0 +1,365 @@
+
+
+ urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+ 1234567890
+ 2018-10-15
+ 381
+ Bemerkung zu der Rechnung gibt es nicht, da dies eine Testrechnung
+ ist.
+ EUR
+ 99000000-01514-29
+
+ 2018-10-01
+ 2018-10-23
+
+
+ 2345678901
+ Auftragsreferenz
+
+
+
+ PRG1502168
+ 2018-10-13
+
+
+
+ Vertragsreferenz
+
+
+ Dokument Referenz
+ Beschreibung der angehängten JPG-Datei
+
+
+ Kennung des Objekts
+ ATS
+
+
+
+ Projektreferenz
+ 50
+
+
+ Vergabe-und Losreferenz
+
+
+
+ rechnungsausgang@test.com
+
+ Kennung des Verkäufers
+
+
+ EntServDE
+
+
+ Straße Rechnungssteller 1
+ Erweiterte Anschrift
+ Rechnungssteller
+ Ort Rechnungssteller
+ 12345
+ Bundesland Rechnungssteller
+
+ DK
+
+
+
+ ATU13585627
+
+ VAT
+
+
+
+ 456
+
+ AAA
+
+
+
+ EntServ Deutschland GmbH
+ 123456789
+ Weitere rechtliche
+ Informationen
+
+
+ EntServ Deutschland
+ 0123 456789
+ kontakt@Rechnungssteller.de
+
+
+
+
+
+ rechnungseingang@test.de
+
+ DPMA-678
+
+
+ Abweichender Handelsname Rechnungsempfänger
+
+
+ Straße Rechnungsempfänger 1
+ Erweitere Adresse
+ Rechnungempfänger
+ Ort Rechnungsempfänger
+ 67890
+ Bundesland
+ Rechnungsempfänger
+
+ CN
+
+
+
+ ATU13585627
+
+ VAT
+
+
+
+ Deutsches Patent - und
+ Markenamt
+ 90000000-03083-12
+
+
+ Kontakt Rechnungsempfänger
+ 0987 654321
+ tina@tester.de
+
+
+
+
+
+ AZE
+
+
+ Abweichender Zahlungsempfänger
+
+
+ AZE-123
+
+
+
+ 2018-10-22
+
+ AL
+
+ Anderer Leistungsempfänger Straße 1
+ Anderer Leistungsempfänger erweiterte
+ Adresse
+ Anderer Leistungsempfänger Ort
+ 45678
+ Anderer Leistungempfänger
+ Bundesland
+
+ BS
+
+
+
+
+
+ Anderer Leistungsempfänger
+
+
+
+
+ 30
+ Verwendungszweck
+
+ DE84 6004 0071 0561 5158 01
+ EntServ Deutschland GmbH
+
+ XXX0561515801
+
+
+
+
+ Zahlungsbedingungen gibt es nicht, da dies eine Testrechnung
+ ist.
+
+
+ false
+ Grund für den Nachlass auf
+ Dokumentenebene
+ 40.00
+ 1000.00
+ 2500.00
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ true
+ Grund für den Zuschlag auf
+ Dokumentenenbene
+ 30.00
+ 400.00
+ 1333.33
+
+ Z
+ 0
+
+ VAT
+
+
+
+
+ false
+ Grund für Nachlass 2
+ 80.00
+ 1500.00
+ 1875.00
+
+ E
+ 0
+
+ VAT
+
+
+
+
+ 510.00
+
+ 400.00
+ 0
+
+ Z
+ 0
+
+ VAT
+
+
+
+
+ 10000.00
+ 700.00
+
+ S
+ 7
+
+ VAT
+
+
+
+
+ -1000.00
+ -190.00
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ -1500.00
+ 0
+
+ E
+ 0
+ Grund für die Befreiung
+
+ VAT
+
+
+
+
+
+ 10000.00
+ 7900.00
+ 8410.00
+ 2500.00
+ 400.00
+ 500.00
+ 210.00
+ 8120.00
+
+
+ 123
+ 10.00
+ 10000.00
+ BRE
+
+ 2018-10-05
+ 2018-10-07
+
+
+ RPB
+
+
+ 7362789
+ 130
+
+
+ false
+ Grund Nachlass 1
+ 50.00
+ 100.00
+ 200.00
+
+
+ false
+ Grund Nachlass 2
+ 10.00
+ 10.00
+ 100.00
+
+
+ true
+ Grund Zuschlag 1
+ 10.00
+ 10.00
+ 100.00
+
+
+ true
+ Grund Zuschlag 2
+ 50.00
+ 100.00
+ 200.00
+
+
+ Beschreibung Artikel
+ Bezeichung Artikel
+
+ BB
+
+
+ 456
+
+
+ 1234567890128
+
+
+ 12344321
+
+
+ S
+ 7
+
+ VAT
+
+
+
+ Farbe
+ blau
+
+
+ Größe
+ XL
+
+
+
+ 1000
+
+
+
\ No newline at end of file
diff --git a/visualization/test/instances/maxRechnung_ubl.xml b/visualization/test/instances/maxRechnung_ubl.xml
new file mode 100644
index 0000000..2e634f1
--- /dev/null
+++ b/visualization/test/instances/maxRechnung_ubl.xml
@@ -0,0 +1,368 @@
+
+
+
+
+ urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+ 1234567890
+ 2018-10-15
+ 2018-10-29
+ 380
+ Bemerkung zu der Rechnung gibt es nicht, da dies eine Testrechnung
+ ist.
+ EUR
+ 99000000-01514-29
+
+ 2018-10-01
+ 2018-10-23
+
+
+ 2345678901
+ Auftragsreferenz
+
+
+
+ PRG1502168
+ 2018-10-13
+
+
+
+ Vergabe-und Losreferenz
+
+
+ Vertragsreferenz
+
+
+ Dokument Referenz
+ Beschreibung der angehängten JPG-Datei
+
+
+ Kennung des Objekts
+ ATS
+
+
+
+ Projektreferenz
+
+
+
+ rechnungsausgang@test.com
+
+ 987654321
+
+
+ 987654320
+
+
+ EntServDE
+
+
+ Straße Rechnungssteller 1
+ Erweiterte Anschrift
+ Rechnungssteller
+ Ort Rechnungssteller
+ 12345
+ Bundesland Rechnungssteller
+
+ DK
+
+
+
+ ATU13585627
+
+ VAT
+
+
+
+ 456
+
+ AAA
+
+
+
+ EntServ Deutschland GmbH
+ 123456789
+ Weitere rechtliche
+ Informationen
+
+
+ EntServ Deutschland
+ 0123 456789
+ kontakt@Rechnungssteller.de
+
+
+
+
+
+ rechnungseingang@test.de
+
+ DPMA-678
+
+
+ Abweichender Handelsname Rechnungsempfänger
+
+
+ Straße Rechnungsempfänger 1
+ Erweitere Adresse
+ Rechnungempfänger
+ Ort Rechnungsempfänger
+ 67890
+ Bundesland
+ Rechnungsempfänger
+
+ CN
+
+
+
+ ATU13585627
+
+ VAT
+
+
+
+ Deutsches Patent - und
+ Markenamt
+ 90000000-03083-12
+
+
+ Kontakt Rechnungsempfänger
+ 0987 654321
+ tina@tester.de
+
+
+
+
+
+ AZE
+
+
+ Abweichender Zahlungsempfänger
+
+
+ AZE-123
+
+
+
+ 2018-10-22
+
+ AL
+
+ Anderer Leistungsempfänger Straße 1
+ Anderer Leistungsempfänger erweiterte
+ Adresse
+ Anderer Leistungsempfänger Ort
+ 45678
+ Anderer Leistungempfänger
+ Bundesland
+
+ BS
+
+
+
+
+
+ Anderer Leistungsempfänger
+
+
+
+
+ 30
+ Verwendungszweck
+
+ DE84 6004 0071 0561 5158 01
+ EntServ Deutschland GmbH
+
+ XXX0561515801
+
+
+
+
+ Zahlungsbedingungen gibt es nicht, da dies eine Testrechnung
+ ist.
+
+
+ false
+ Grund für den Nachlass auf
+ Dokumentenebene
+ 50.00
+ 1000.00
+ 2000.00
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ true
+ Grund für den Zuschlag auf
+ Dokumentenenbene
+ 10.00
+ 400.00
+ 4000.00
+
+ Z
+ 0
+
+ VAT
+
+
+
+
+ false
+ Grund für Nachlass 2
+ 10.00
+ 1500.00
+ 15000.00
+
+ E
+ 0
+
+ VAT
+
+
+
+
+ 510.00
+
+ 400.00
+ 0
+
+ Z
+ 0
+
+ VAT
+
+
+
+
+ 10000.00
+ 700.00
+
+ S
+ 7
+
+ VAT
+
+
+
+
+ -1000.00
+ -190.00
+
+ S
+ 19
+
+ VAT
+
+
+
+
+ -1500.00
+ 0
+
+ E
+ 0
+ Grund für die Befreiung
+
+ VAT
+
+
+
+
+
+ 10000.00
+ 7900.00
+ 8410.00
+ 2500.00
+ 400.00
+ 500.00
+ 210.00
+ 8120.00
+
+
+ 123
+ 10.00
+ 10000.00
+ BRE
+
+ 2018-10-05
+ 2018-10-07
+
+
+ RPB
+
+
+ 7362789
+ 130
+
+
+ false
+ Grund Nachlass 1
+ 10.00
+ 10.00
+ 100.00
+
+
+ false
+ Grund Nachlass 2
+ 50.00
+ 100.00
+ 200.00
+
+
+ true
+ Grund Zuschlag 1
+ 50.00
+ 100.00
+ 200.00
+
+
+ true
+ Grund Zuschlag 2
+ 10.00
+ 10.00
+ 100.00
+
+
+ Beschreibung Artikel
+ Bezeichung Artikel
+
+ BB
+
+
+ 456
+
+
+ 1234567890128
+
+
+ 12344321
+
+
+ S
+ 7
+
+ VAT
+
+
+
+ Farbe
+ blau
+
+
+ Größe
+ XL
+
+
+
+ 1000
+
+
+
\ No newline at end of file
diff --git a/visualization/test/instances/wrong-date-with-text-uncefact.xml b/visualization/test/instances/wrong-date-with-text-uncefact.xml
new file mode 100644
index 0000000..39674e8
--- /dev/null
+++ b/visualization/test/instances/wrong-date-with-text-uncefact.xml
@@ -0,0 +1,171 @@
+
+
+
+
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+
+
+ urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
+
+
+
+ 123456XX
+ 380
+
+ Dies ist kein Datum
+
+
+ Es gelten unsere Allgem. Geschäftsbedingungen, die Sie unter […] finden.
+ ADU
+
+
+
+
+
+ Zeitschrift [...]
+
+ Die letzte Lieferung im Rahmen des abgerechneten Abonnements erfolgt in 12/2016 Lieferung erfolgt / erfolgte direkt vom Verlag
+
+
+
+ 246
+ Zeitschrift [...]
+ Zeitschrift Inland
+
+ 0721-880X
+
+
+
+
+ 6171175.1
+
+
+ 288.79
+
+
+
+ 1
+
+
+
+ VAT
+ S
+ 7
+
+
+
+ 20160101
+
+
+ 20161231
+
+
+
+ 288.79
+
+
+
+
+
+ Porto + Versandkosten
+
+
+ Porto + Versandkosten
+
+
+
+ 26.07
+
+
+
+ 1
+
+
+
+ VAT
+ S
+ 7
+
+
+ 26.07
+
+
+
+
+ 04011000-12345-03
+
+ [Seller name]
+ 123/456/7890, HRA-Eintrag in […]
+
+ [HRA-Eintrag]
+ [Seller trading name]
+
+
+ nicht vorhanden
+
+ +49 1234-5678
+
+
+ seller@email.de
+
+
+
+ 12345
+ [Seller address line 1]
+ [Seller city]
+ DE
+
+
+ seller@seller.com
+
+
+ DE 123456789
+
+
+
+ [Buyer identifier]
+ [Buyer name]
+
+ 12345
+ [Buyer address line 1]
+ [Buyer city]
+ DE
+
+
+ buyer@buyer.com
+
+
+
+
+
+ EUR
+
+ 58
+
+
+ DE75512108001245126199
+
+
+
+ 22.04
+ VAT
+ 314.86
+ S
+ 7
+
+
+ Zahlbar sofort ohne Abzug.
+
+
+ 314.86
+ 314.86
+ 22.04
+ 336.9
+ 336.9
+
+
+
+
diff --git a/visualization/test/instances/wrong-date-with-zeros-uncefact.xml b/visualization/test/instances/wrong-date-with-zeros-uncefact.xml
new file mode 100644
index 0000000..7d9444f
--- /dev/null
+++ b/visualization/test/instances/wrong-date-with-zeros-uncefact.xml
@@ -0,0 +1,171 @@
+
+
+
+
+ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0
+
+
+ urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0
+
+
+
+ 123456XX
+ 380
+
+ 00000000
+
+
+ Es gelten unsere Allgem. Geschäftsbedingungen, die Sie unter […] finden.
+ ADU
+
+
+
+
+
+ Zeitschrift [...]
+
+ Die letzte Lieferung im Rahmen des abgerechneten Abonnements erfolgt in 12/2016 Lieferung erfolgt / erfolgte direkt vom Verlag
+
+
+
+ 246
+ Zeitschrift [...]
+ Zeitschrift Inland
+
+ 0721-880X
+
+
+
+
+ 6171175.1
+
+
+ 288.79
+
+
+
+ 1
+
+
+
+ VAT
+ S
+ 7
+
+
+
+ 20160101
+
+
+ 20161231
+
+
+
+ 288.79
+
+
+
+
+
+ Porto + Versandkosten
+
+
+ Porto + Versandkosten
+
+
+
+ 26.07
+
+
+
+ 1
+
+
+
+ VAT
+ S
+ 7
+
+
+ 26.07
+
+
+
+
+ 04011000-12345-03
+
+ [Seller name]
+ 123/456/7890, HRA-Eintrag in […]
+
+ [HRA-Eintrag]
+ [Seller trading name]
+
+
+ nicht vorhanden
+
+ +49 1234-5678
+
+
+ seller@email.de
+
+
+
+ 12345
+ [Seller address line 1]
+ [Seller city]
+ DE
+
+
+ seller@seller.com
+
+
+ DE 123456789
+
+
+
+ [Buyer identifier]
+ [Buyer name]
+
+ 12345
+ [Buyer address line 1]
+ [Buyer city]
+ DE
+
+
+ buyer@buyer.com
+
+
+
+
+
+ EUR
+
+ 58
+
+
+ DE75512108001245126199
+
+
+
+ 22.04
+ VAT
+ 314.86
+ S
+ 7
+
+
+ Zahlbar sofort ohne Abzug.
+
+
+ 314.86
+ 314.86
+ 22.04
+ 336.9
+ 336.9
+
+
+
+
diff --git a/visualization/xsd/xrechnung-semantic-model.xsd b/visualization/xsd/xrechnung-semantic-model.xsd
new file mode 100644
index 0000000..5edb477
--- /dev/null
+++ b/visualization/xsd/xrechnung-semantic-model.xsd
@@ -0,0 +1,2550 @@
+
+
+
+ Dieses Schema bildet die Struktur der Informationselemente (Business Groups und Business Terms) des semantischen Datenmodells der Spezifikation XRechnung in
+ XML ab. Die Elementnamen in diesem Schema entsprechen den Bezeichnern der Informationselemente, wobei Leerzeichen durch Unterstriche ersetzt
+ wurden. Die Dokumentation der Informationselemente in diesem Schema entspricht ihrer Dokumentation in der Spezifikation. Das Schema ist ausschließlich als
+ einheitliche Grundlage zur Visualisierung von elektronischen Rechnungsdokumenten vorgesehen.
+
+
+
+ Diese zusätzlichen Attribute können in allen XML-Elementen für Business Groups und Business Terms eingefügt werden.
+
+
+
+ Das Label der / des entsprechenden Business Group oder Business Terms gemäß der Spezifikation XRechnung, zum Beispiel BT-1 oder BG-12.
+
+
+
+
+ Rückbezug auf Element der elektronischen Rechnung in der technischen Syntax UBL oder CII, welches durch das vorliegende Element abgebildet wird (in Form eines XPath
+ Ausdrucks).
+
+
+
+
+
+
+
+
+ BT-1
+ Eine eindeutige Kennung der Rechnung, die diese im System des Verkäufers identifiziert. Anmerkung: Es ist kein «identification scheme» zu verwenden.
+
+
+
+
+ BT-2
+ Das Datum, an dem die Rechnung ausgestellt wurde.
+
+
+
+
+ BT-3
+ Ein Code, der den Funktionstyp der Rechnung angibt. Anmerkung: Der Rechnungstyp muss gemäß UNTDID 1001 spezifiziert werden. Folgende Codes aus der Codeliste sollen verwendet werden:
+326 (Partial invoice)
+380 (Commercial invoice)
+384 (Corrected invoice)
+389 (Self-billed invoice)
+381 (Credit note)
+875 (Partial construction invoice)
+876 (Partial final construction invoice)
+877 (Final construction invoice)
+
+
+
+
+
+ BT-5
+ Die Währung, in der alle Rechnungsbeträge angegeben werden, ausgenommen ist der Umsatzsteuer-Gesamtbetrag, der in der Abrechnungswährung anzugeben ist. Anmerkung: Nur eine Währung ist in der Rechnung zu verwenden, der Invoice_total_VAT_amount_in_accounting_currency-BT-111; ist in der Abrechnungswährung auszuweisen. Die gültigen Währungen sind bei der ISO 4217 «Codes for the representation of currencies and funds» registriert. Nur die Alpha-3-Darstellung darf verwendet werden.
+
+
+
+
+ BT-6
+ Die für die Umsatzsteuer-Abrechnungs- und -Meldezwecke verwendete Währung, die im Land des Verkäufers gültig ist oder verlangt wird. Anmerkung: Zu Verwenden in Kombination mit Invoice_total_VAT_amount_in_accounting_currency-BT-111;, wenn die Umsatzsteuerabrechnungswährung von der Rechnungswährung abweicht. Die gültigen Währungen sind bei der ISO 4217 «Codes for the representation of currencies and funds» registriert. Nur die Alpha-3-Darstellung darf verwendet werden.
+
+
+
+
+ BT-7
+ Das Datum, zu dem die Umsatzsteuer für den Verkäufer und für den Erwerber abrechnungsrelevant wird. Die Anwendung von BT-7 und 8 schließen sich gegenseitig aus.
+
+
+
+
+ BT-8
+ Ein Code für den Zeitpunkt, an dem die Umsatzsteuer für den Erwerber und den Verkäufer in der Buchführung nachzuweisen ist. Folgende Codes aus der Codeliste UNTDID 2005 werden verwendet:
+3 (Invoice document issue date time)
+35 (Delivery date/time, actual)
+432 (Paid to date)
+ Das Informationselement Value_added_tax_point_date_code-BT-8; wird verwendet, wenn das Informationselement Value_added_tax_point_date-BT-7; zum Zeitpunkt der Rechnungsstellung noch nicht bekannt ist. Die Anwendung von BT-7 und 8 schließen sich gegenseitig aus.
+
+
+
+
+ BT-9
+ Das Fälligkeitsdatum des Rechnungsbetrages.
+
+
+
+
+ BT-10
+ Ein vom Erwerber zugewiesener und für interne Lenkungszwecke benutzter Bezeichner. Anmerkung: Im Rahmen des Steuerungsprojekts eRechnung ist mit der so genannten Leitweg-ID eine Zuordnungsmöglichkeit entwickelt worden, deren verbindliche Nutzung von Bund und mehreren Ländern vorgegeben wird. Die Leitweg-ID ist prinzipiell für Bund, Länder und Kommunen einsetzbar. Für die Darstellung der Leitweg-ID wird das in XRechnung verpflichtende Feld Buyer Reference benutzt. Länder und Kommunen, die ihren Rechnungsstellern abweichend von der Leitweg-ID eigene Zuordnungsmuster mitteilen, können diese statt der Leitweg-ID im Feld Buyer Reference verwenden. Hinweis: Es existiert eine Handreichung zur Bildung der Leitweg-ID, die über die KoSIT zu erhalten ist (siehe Website XRechnung bzw. FAQ-Liste).
+
+
+
+
+ BT-11
+ Die Kennung eines Projektes, auf das sich die Rechnung bezieht.
+
+
+
+
+ BT-12
+ Eine eindeutige Bezeichnung des Vertrages (z. B. Vertragsnummer).
+
+
+
+
+ BT-13
+ Eine vom Erwerber ausgegebene Kennung für eine referenzierte Bestellung.
+
+
+
+
+ BT-14
+ Eine vom Verkäufer ausgegebene Kennung für einen referenzierten Auftrag.
+
+
+
+
+ BT-15
+ Eine Kennung für eine referenzierte Empfangsbestätigung.
+
+
+
+
+ BT-16
+ Eine Kennung für eine referenzierte Versandanzeige.
+
+
+
+
+ BT-17
+ Die Kennung der Ausschreibung oder des Loses auf die/das sich die Rechnung bezieht.
+
+
+
+
+ BT-18
+ Eine vom Verkäufer angegebene Kennung für ein Objekt, auf das sich die Rechnung bezieht (z. B. Zählernummer, Telefonnummer, Kfz-Kennzeichen, versicherte Person, Abonnement-Nummer, Rufnummer).
+
+
+
+
+ BT-19
+ Ein Textwert, der angibt, an welcher Stelle die betreffenden Daten in den Finanzkonten des Erwerbers zu buchen sind.
+
+
+
+
+ BT-20
+ Eine Textbeschreibung der Zahlungsbedingungen, die für den fälligen Zahlungsbetrag gelten (einschließlich Beschreibung möglicher Skontobedingungen). Dieses Informationselement kann mehrere Zeilen und mehrere Angaben zu Zahlungsbedingungen beinhalten und sowohl unstrukturierten als strukturierten Text enthalten. Der unstrukturierte Text darf dabei keine # enthalten. Werden Informationen zur Gewährung von Skonto angegeben, sind sie wie folgt darzustellen: Anzugeben ist im ersten Segment «SKONTO», im zweiten «TAGE=n», im dritten «PROZENT=n».
+Prozentzahlen sind ohne Vorzeichen sowie mit Punkt getrennt von zwei Nachkommastellen anzugeben. Liegt dem zu berechnenden Betrag nicht BT-115, «fälliger Betrag» zugrunde, sondern nur ein Teil des fälligen Betrags der Rechnung, ist der Grundwert zur Berechnung von Skonto als viertes Segment «BASISBETRAG=n» gemäß dem semantischen Datentypen Amount anzugeben. Jeder Eintrag beginnt mit einer #, die Segmente sind mit einer # getrennt und eine Zeile schließt mit einer # ab. Am Ende einer vollständigen Skontoangabe muss ein XML-konformer Zeilenumbruch folgen. Beispiele mit drei Segmenten je Zeile: #SKONTO#TAGE=14#PROZENT=2.25# #SKONTO#TAGE=28#PROZENT=1.00# Beispiele mit vier Segmenten je Zeile (die Gewährung von Skonto bezieht sich nur auf einen Teilbetrag der Rechnung (z. B. Material) und der Grundwert zur Berechnung des Skonto muss mit angegeben werden): #SKONTO#TAGE=14#PROZENT=2.25#BASISBETRAG=357.93# #SKONTO#TAGE=28#PROZENT=1.00#BASISBETRAG=357.93# Alle Angaben zur Gewährung von Skonto müssen in Großbuchstaben gemacht werden. Zusätzliches Whitespace (Leerzeichen, Tabulatoren oder Zeilenumbrüche) ist nicht zulässig. Andere Zeichen oder Texte als in den oberen Beispielen genannt sind nicht zulässig.
+
+
+
+
+ BG-1
+ Eine Gruppe von Informationselementen für rechnungsrelevante Erläuterungen mit Hinweisen auf den Rechnungsbetreff.
+
+
+
+
+ BG-2
+ Eine Gruppe von Informationselementen, die Informationen über den Geschäftsprozess und für die Rechnung geltende Regeln liefern.
+
+
+
+
+ BG-3
+ Eine Gruppe von Informationselementen, die Informationen über eine vorausgegangene Rechnung liefern, die berichtigt oder gutgeschrieben werden soll. Anmerkung: Das Informationselement ist zu verwenden, wenn eine vorangegangene Rechnung korrigiert wird, eine Abschlussrechnung auf vorangegangene Teilrechnungen Bezug nimmt oder eine Abschlussrechnung auf vorangegangene Vorauszahlungsrechnungen Bezug nimmt.
+
+
+
+
+ BG-4
+ Eine Gruppe von Informationselementen, die Informationen über den Verkäufer liefern.
+
+
+
+
+ BG-7
+ Eine Gruppe von Informationselementen, die Informationen über den Erwerber liefern.
+
+
+
+
+ BG-10
+ Eine Gruppe von Informationselementen, die Informationen über den Zahlungsempfänger liefern. Die Gruppe wird genutzt, wenn der Zahlungsempfänger nicht mit dem Verkäufer identisch ist.
+
+
+
+
+ BG-11
+ Eine Gruppe von Informationselementen, die Informationen über den Steuervertreter des Verkäufers liefern.
+
+
+
+
+ BG-13
+ Eine Gruppe von Informationselementen, die Informationen darüber liefern, wo und wann die in Rechnung gestellten Waren und Dienstleistungen geliefert bzw. erbracht werden.
+
+
+
+
+ BG-14
+ Eine Gruppe von Informationselementen, die Informationen über den Rechnungszeitraum liefern.
+
+
+
+
+ BG-16
+ Eine Gruppe von Informationselementen, die Informationen darüber liefern, wie die Zahlung erfolgen soll.
+
+
+
+
+ BG-20
+ Eine Gruppe von Informationselementen, die Informationen über Nachlässe liefern, die für die Rechnung als Ganzes gelten. Anmerkung: Abzüge, wie z. B. einbehaltene Steuern, können auch in dieser Gruppe ausgewiesen werden.
+
+
+
+
+ BG-21
+ Eine Gruppe von Informationselementen, die Informationen über Kosten, Zuschläge, und Steuern ndash; ausgenommen die Umsatzsteuer ndash; enthalten, die für die Rechnung als Ganzes gelten.
+
+
+
+
+ BG-22
+ Eine Gruppe von Informationselementen, die die monetären Gesamtbeträge der Rechnung liefern.
+
+
+
+
+ BG-23
+ Eine Gruppe von Informationselementen, die Informationen über die Umsatzsteueraufschlüsselung in verschiedene Kategorien liefern.
+
+
+
+
+ BG-24
+ Eine Gruppe von Informationselementen mit Informationen über rechnungsbegründende Unterlagen, die Belege für die in der Rechnung gestellten Ansprüche enthalten. Dateinamen rechnungsbegründender Unterlagen müssen innerhalb einer Rechnung eindeutig sein (nicht case-sensitiv). Die Dateinamenserweiterung (extension), in der meist der Typ der Datei angegeben wird, ist dabei Teil des Dateinamens und wird bei der Bestimmung der Eindeutigkeit einbezogen. Anmerkung:
+Die Gruppe kann verwendet werden, um auf eine dem Erwerber bekannte Dokumentennummer oder ein externes Dokument (referenziert über eine URL als separat herunterladbare Ressource) oder ein eingebettetes Dokument (wie z. B. ein Leistungsnachweis als pdf) zu referenzieren. Von der Möglichkeit der Trennung von Rechnung und rechnungsbegründenden Unterlagen kann insbesondere im Fall großer Anlagen oder sensibler Daten Gebrauch gemacht werden.
+
+
+
+
+ BG-25
+ Eine Gruppe von Informationselementen, die Informationen über einzelne Rechnungspositionen liefern.
+
+
+
+
+ BG-DEX-09
+ Eine Gruppe von Informationselementen, die Informationen über Fremdforderungen enthalten.
+
+
+
+
+
+
+
+
+
+ BT-21
+ Der Betreff für den nachfolgenden Textvermerk zur Rechnung. Anmerkung: Die Auswahl erfolgt aus UNTDID 4451.
+
+
+
+
+ BT-22
+ Ein Textvermerk, der unstrukturierte Informationen enthält, die für die Rechnung als Ganzes maßgeblich sind. Erforderlichenfalls können Angaben zur Aufbewahrungspflicht gem. § 14 Abs. 4 UStG hier aufgenommen werden. Anmerkung: Im Falle einer bereits fakturierten Rechnung kann hier z. B. der Grund der Korrektur angegeben werden.
+
+
+
+
+
+
+
+
+
+ BT-23
+ Identifiziert den Kontext des Geschäftsprozesses, in dem die Transaktion erfolgt. Er ermöglicht es dem Erwerber, die Rechnung in angemessener Weise zu verarbeiten. Anmerkung: Die mit diesem Informationselement zu übermittelnde Angabe wird vom Erwerber spezifiziert.
+
+
+
+
+ BT-24
+ Eine Kennung der Spezifikation, die das gesamte Regelwerk zum semantischen Inhalt, zu den Kardinalitäten und den Geschäftsregeln enthält, denen die in der Rechnung enthaltenen Daten entsprechen. Anmerkung: Damit wird die Konformität zum jeweiligen Dokument erklärt. Für den Verweis auf die EU-Norm ist urn:cen.eu:en16931:2017 anzugeben. Rechnungen, die zum Standard XRechnung konform sind, geben hier urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_1.2 an. Es ist kein Schema zu verwenden.
+
+
+
+
+
+
+
+
+
+ BT-25
+ Die Kennung der vorausgegangenen Rechnung, auf die Bezug genommen wird.
+
+
+
+
+ BT-26
+ Das Datum, zu dem die vorausgegangene Rechnung ausgestellt wurde. Anmerkung: Für den Fall, dass die Nummer der vorausgegangenen Rechnung (Preceding invoice identifier) nicht eindeutig ist, soll das Datum der vorausgegangenen Rechnung (Preceding invoice issue date) angegeben werden.
+
+
+
+
+
+
+
+
+
+ BT-27
+ Der vollständige Name, unter dem der Verkäufer im nationalen Register für juristische Personen oder als steuerpflichtige
+Person eingetragen ist oder anderweitig als Person(en) handelt (Firma).
+
+
+
+
+ BT-28
+ Ein Name, unter dem der Verkäufer bekannt ist, sofern abweichend vom Namen des Verkäufers.
+
+
+
+
+ BT-29
+ Eine (i. d. R. vom Erwerber vergebene) Kennung des Verkäufers, wie z. B. die Kreditorennummer für das Mittelbewirtschaftungsverfahren oder die Lieferantennummer für das Bestellsystem.
+
+
+
+
+ BT-30
+ Eine von einer offiziellen Registrierstelle ausgegebene Kennung, die den Verkäufer als Rechtsträger oder juristische Person identifiziert.
+
+
+
+
+ BT-31
+ Die Umsatzsteuer-Identifikationsnummer des Verkäufers. Verfügt der Verkäufer über eine solche, ist sie hier anzugeben, sofern nicht Angaben zum Seller tax representative gemacht werden.
+
+
+
+
+ BT-32
+ Eine örtliche steuerrechtliche Kennung des Verkäufers (bestimmt durch dessen Adresse) oder ein Verweis auf seinen eingetragenen Steuerstatus. (Hier ist ggf. die Angabe «Steuerschuldnerschaft des Leistungsempfängers» oder die USt-Befreiung des Rechnungsstellers einzutragen.)
+
+
+
+
+ BT-33
+ Weitere rechtliche Informationen, die für den Verkäufer maßgeblich sind (wie z. B. Grundkapital).
+
+
+
+
+ BT-34
+ Gibt die elektronische Adresse des Verkäufers an, an die die Antwort der Anwendungsebene auf eine Rechnung gesendet werden kann.
+
+
+
+
+ BG-5
+ Eine Gruppe von Informationselementen, die Informationen über die Verkäuferanschrift liefern.
+
+
+
+
+ BG-6
+ Eine Gruppe von Informationselementen, die Kontaktinformationen des Verkäufers enthalten.
+
+
+
+
+
+
+
+
+
+ BT-35
+ Die Hauptzeile in einer Anschrift. Üblicherweise ist dies entweder Strasse und Hausnummer oder der Text "Postfach" gefolgt von der Postfachnummer.
+
+
+
+
+ BT-36
+ Eine zusätzliche Adresszeile in einer Anschrift, die verwendet werden kann, um weitere Einzelheiten in Ergänzung zur Hauptzeile anzugeben.
+
+
+
+
+ BT-162
+ Eine zusätzliche Adresszeile in einer Anschrift, die verwendet werden kann, um weitere Einzelheiten in Ergänzung zur Hauptzeile anzugeben.
+
+
+
+
+ BT-37
+ Die Bezeichnung der Stadt oder Gemeinde, in der sich die Verkäuferanschrift befindet.
+
+
+
+
+ BT-38
+ Der Bezeichner für eine dem zuständigen Postdienst entsprechend adressierbare Gruppe
+von Eigenschaften.
+
+
+
+
+ BT-39
+ Die Unterteilung eines Landes (wie Region, Bundesland, Provinz etc.).
+
+
+
+
+ BT-40
+ Ein Code, mit dem das Land bezeichnet wird. Anmerkung: Die Liste der zulässigen Länder ist bei der ISO 3166-1 «Codes for the representation of names of countries and their subdivisions» erhältlich. Nur die Alpha-2-Darstellung darf verwendet werden.
+
+
+
+
+
+
+
+
+
+ BT-41
+ Angaben zu Ansprechpartner oder Kontaktstelle (wie z. B. Name einer Person, Abteilungs- oder Bürobezeichnung).
+
+
+
+
+ BT-42
+ Telefonnummer des Ansprechpartners oder der Kontaktstelle
+
+
+
+
+ BT-43
+ Eine E-Mail-Adresse des Ansprechpartners oder der Kontaktstelle.
+
+
+
+
+
+
+
+
+
+ BT-44
+ Der vollständige Name des Erwerbers.
+
+
+
+
+ BT-45
+ Ein Name, unter dem der Erwerber bekannt ist, sofern abweichend vom Namen des Erwerbers.
+
+
+
+
+ BT-46
+ Eine (i. d. R. vom Verkäufer vergebene) Kennung des Erwerbers, wie z. B. die Debitorennummer für die Buchhaltung oder die Kundennnummer für die Auftragsverwaltung. Anmerkung: Für die Bildung des Buyer Identifier ist kein einheitliches Schema erforderlich.
+
+
+
+
+ BT-47
+ Ein von einer offiziellen Registrierstelle ausgegebener Bezeichner, der den Erwerber als Rechtsträger oder juristische Person identifiziert. Z. B. Handelsregister-Eintrag, Vereinsregister etc.
+
+
+
+
+ BT-48
+ Die Umsatzsteuer-Identifikationsnummer des Erwerbers.
+
+
+
+
+ BT-49
+ Gibt eine elektronische Adresse des Erwerbers an, an die eine Rechnung gesendet werden sollte.
+
+
+
+
+ BG-8
+ Eine Gruppe von Informationselementen, die Informationen über die Anschrift des Erwerbers liefern. Anmerkung: Es ist eine gültige vollständige Anschrift anzugeben.
+
+
+
+
+ BG-9
+ Eine Gruppe von Informationselementen, die Angaben zum Ansprechpartner oder der Kontaktstelle beim Erwerber liefern.
+
+
+
+
+
+
+
+
+
+ BT-50
+ Die Hauptzeile einer Anschrift. Üblicherweise ist dies entweder Strasse und Hausnummer oder der Text "Postfach" gefolgt von der Postfachnummer.
+
+
+
+
+ BT-51
+ Eine zusätzliche Adresszeile in einer Anschrift, die verwendet werden kann, um weitere Einzelheiten in Ergänzung zur Hauptzeile anzugeben.
+
+
+
+
+ BT-163
+ Eine zusätzliche Adresszeile in einer Anschrift, die verwendet werden kann, um weitere Einzelheiten in Ergänzung zur Hauptzeile anzugeben.
+
+
+
+
+ BT-52
+ Die Bezeichnung der Stadt oder Gemeinde, in der sich die Erwerberanschrift befindet.
+
+
+
+
+ BT-53
+ Der Bezeichner für eine dem zuständigen Postdienst entsprechend adressierbare Gruppe von Eigenschaften.
+
+
+
+
+ BT-54
+ Die Unterteilung eines Landes (wie Region, Bundesland, Provinz etc.).
+
+
+
+
+ BT-55
+ Ein Code, mit dem das Land bezeichnet wird. Anmerkung: Die Liste der zulässigen Länder ist bei der ISO 3166-1 «Codes for the representation of names of countries and their subdivisions» erhältlich. Nur die Alpha-2-Darstellung darf verwendet werden.
+
+
+
+
+
+
+
+
+
+ BT-56
+ Ansprechpartner oder Kontaktstelle beim Erwerber (wie z. B. Name einer Person, Abteilungs- oder Bürobezeichnung).
+
+
+
+
+ BT-57
+ Eine Telefonnummer der Kontaktstelle.
+
+
+
+
+ BT-58
+ Eine E-Mail-Adresse der Kontaktstelle.
+
+
+
+
+
+
+
+
+
+ BT-59
+ Der Name des Zahlungsempfängers. Anmerkung: Wird verwendet, wenn der Zahlungsempfänger nicht mit dem Verkäufer identisch ist. Gleichwohl kann der Name des Zahlungsempfänger identisch sein mit dem Namen des Verkäufers.
+
+
+
+
+ BT-60
+ Eine Kennung für den Zahlungsempfänger. Anmerkung: Wenn kein Schema verwendet wird, sollte die Kennung Erwerber und Verkäufer bekannt sein, z. B. eine von Verkäufer oder Erwerber zugewiesene Kennung.
+
+
+
+
+ BT-61
+ Eine von einer offiziellen Registrierstelle ausgegebene Kennung, die den Zahlungsempfänger als einen Rechtsträger oder eine juristische Person identifiziert.
+
+
+
+
+
+
+
+
+
+ BT-62
+ Der vollständige Name des Steuervertreters des Verkäufers.
+
+
+
+
+ BT-63
+ Die Umsatzsteuer-Identifikationsnummer des Steuervertreters des Verkäufers.
+
+
+
+
+ BG-12
+ Eine Gruppe von Informationselementen, die Informationen über die Postanschrift des Steuervertreters liefern.
+
+
+
+
+
+
+
+
+
+ BT-64
+ Die Hauptzeile in einer Anschrift. Üblicherweise ist dies entweder Strasse und Hausnummer oder der Text "Postfach" gefolgt von der Postfachnummer.
+
+
+
+
+ BT-65
+ Eine zusätzliche Adresszeile in einer Anschrift, die verwendet werden kann, um weitere Einzelheiten in Ergänzung zur Hauptzeile anzugeben.
+
+
+
+
+ BT-164
+ Eine zusätzliche Adresszeile in einer Anschrift, die verwendet werden kann, um weitere Einzelheiten in Ergänzung zur Hauptzeile anzugeben.
+
+
+
+
+ BT-66
+ Die Bezeichnung der Stadt oder Gemeinde, in der sich die Anschrift des Steuervertreters befindet.
+
+
+
+
+ BT-67
+ Der Bezeichner für eine dem zuständigen Postdienst entsprechend adressierbare Gruppe von Eigenschaften.
+
+
+
+
+ BT-68
+ Die Unterteilung eines Landes.
+
+
+
+
+ BT-69
+ Ein Code, mit dem das Land bezeichnet wird. Anmerkung: Die Liste der zulässigen Länder ist bei der ISO 3166-1 «Codes for the representation of names of countries and their subdivisions» erhältlich. Nur die Alpha-2-Darstellung darf verwendet werden.
+
+
+
+
+
+
+
+
+
+ BT-70
+ Der Name des Empfängers, an den die Waren geliefert bzw. für den die Dienstleistungen erbracht werden. Das Informationselement ist zu verwenden, wenn der Empfänger vom Erwerber abweicht.
+
+
+
+
+ BT-71
+ Ein Bezeichner für den Ort, an den die Waren geliefert oder an dem die Dienstleistungen erbracht werden.
+
+
+
+
+ BT-72
+ Datum, an dem die Lieferung tatsächlich erfolgt bzw. die Dienstleistung tatsächlich erbracht wird.
+
+
+
+
+
+ BG-15
+ Eine Gruppe von Informationselementen, die Informationen über die Anschrift liefern, an die die Waren geliefert oder an der die Dienstleistungen erbracht werden. Die Gruppe ist nur zu verwenden, wenn die Lieferanschrift von der Erwerberanschrift abweicht. Wenn die Waren abgeholt werden, ist die Abholadresse die Lieferadresse. Eine vollständige gültige Anschrift ist anzugeben.
+
+
+
+
+
+
+
+
+
+ BT-73
+ Das Datum, an dem der Rechnungszeitraum beginnt.
+
+
+
+
+ BT-74
+ Das Datum, an dem der Rechnungszeitraum endet.
+
+
+
+
+
+
+
+
+
+ BT-75
+ Die Hauptzeile einer Anschrift. Üblicherweise ist dies entweder Strasse und Hausnummer oder der Text "Postfach" gefolgt von der Postfachnummer.
+
+
+
+
+ BT-76
+ Eine zusätzliche Adresszeile in einer Anschrift, die verwendet werden kann, um weitere Einzelheiten in Ergänzung zur Hauptzeile anzugeben.
+
+
+
+
+ BT-165
+ Eine zusätzliche Adresszeile in einer Anschrift, die verwendet werden kann, um weitere Einzelheiten in Ergänzung zur Hauptzeile anzugeben.
+
+
+
+
+ BT-77
+ Die Bezeichnung der Stadt oder Gemeinde, in der sich die Erwerberanschrift befindet.
+
+
+
+
+ BT-78
+ Der Bezeichner für eine dem zuständigen Postdienst entsprechend adressierbare Gruppe von Eigenschaften.
+
+
+
+
+ BT-79
+ Die Unterteilung eines Landes (wie Region, Bundesland, Provinz etc.).
+
+
+
+
+ BT-80
+ Ein Code, mit dem das Land bezeichnet wird. Anmerkung: Die Liste der zulässigen Länder ist bei der ISO 3166-1 «Codes for the representation of names of countries and their subdivisions» erhältlich. Nur die Alpha-2-Darstellung darf verwendet werden.
+
+
+
+
+
+
+
+
+
+ BT-81
+ Das als Code ausgedrückte erwartete oder genutzte Zahlungsmittel. Hierzu wird auf die Codeliste UN/ECE 4461 verwiesen.
+
+
+
+
+ BT-82
+ Das in Textform ausgedrückte erwartete oder genutzte Zahlungsmittel.
+
+
+
+
+ BT-83
+ Ein Textwert, der zur Verknüpfung der Zahlung mit der vom Verkäufer ausgestellten Rechnung verwendet wird. Anmerkung: Die Angabe eines Verwendungszwecks hilft dem Verkäufer bei der Zuweisung einer eingehenden Zahlung zum jeweiligen Zahlungsprozess. Wenn Remittance information in der Rechnung übermittelt wurde, sollte diese daher bei der Zahlung genutzt werden.
+
+
+
+
+ BG-17
+ Eine Gruppe von Informationselementen, die Informationen über das Bankkonto geben, auf das die Überweisung zu leisten ist. Die Gruppe ist alternativ zu PAYMENT_CARD_INFORMATION-BG-18; oder zu DIRECT_DEBIT-BG-19; anzugeben, wenn eine Zahlung per Überweisung erfolgen soll.
+
+
+
+
+ BG-18
+ Eine Gruppe von Informationselementen, die Informationen über die für die Zahlung genutzte Karte liefern. Die Gruppe ist alternativ zu DIRECT_DEBIT-BG-19; (Lastschrift mit Vorliegen einer Mandatsreferenz) oder zu CREDIT_TRANSFER-BG-17; (Überweisung) anzugeben, wenn eine Zahlung per Zahlungskarte/Kreditkarte erfolgte.
+
+
+
+
+ BG-19
+ Eine Gruppe von Informationselementen, die spezifische Informationen über die vorgesehene Lastschrift geben. Die Gruppe ist alternativ zu CREDIT_TRANSFER-BG-17; oder zu PAYMENT_CARD_INFORMATION-BG-18; anzugeben, wenn ein Mandat erteilt wurde und der Rechnungsbetrag per Lastschrift beglichen werden soll.
+
+
+
+
+
+
+
+
+
+ BT-84
+ Die Kennung des Kontos, auf das die Zahlung erfolgen soll: IBAN für Zahlungen im SEPA-Raum, Kontonummer oder IBAN im Falle von Auslandszahlungen.
+
+
+
+
+ BT-85
+ Name des Kontos bei einem Zahlungsdienstleister, auf das die Zahlung erfolgen soll. (z. B. Kontoinhaber)
+
+
+
+
+ BT-86
+ Die Kennung des Konto führenden Kreditinstitutes, ergibt sich bei Zahlungen im SEPA-Raum im Regelfall aus IBAN; für Auslandszahlungen, bei denen um BIC ergänzt werden muss:
+
+ für alle Zahlungen an Bankverbindungen des SEPA-Raumes als SCT (Code 58 des Payment_means_type_code-BT-81;) oder SDD (Code 59 des Payment_means_type_code-BT-81;) mit Ausnahme der nachstehenden Ausnahmen, reicht die Angabe der IBAN, die in der Länge variiert; BIC nicht erforderlich. Ausnahmen: z. B. San Marino, Monaco, Schweiz, Saint Pierre und Miquelon, wobei die Länge der IBAN variiert, aber immer 1. und 2. Stelle = Ländercode nach ISO, 3. und 4. Stelle = Prüfziffer; Angabe des BIC ist neben der Angabe der IBAN zwingend erforderlich
+
+
+ für alle Zahlungen an Bankverbindungen außerhalb des SEPA-Raumes (Code 30 (Credit transfer (non-SEPA)) bzw. (Code 49 Direct debit (non-SEPA)) des Payment_means_type_code-BT-81;) sind, abhängig vom empfangenden Institut, IBAN bzw. Kontonummer und BIC nötig
+
+
+
+
+
+
+
+
+
+
+
+ BT-87
+ Die Nummer der Kreditkarte, die für die Zahlung genutzt wurde. Anmerkung: In Übereinstimmung mit den für Kreditkarten geltenden Sicherheitsstandards darf eine Rechnung nicht die vollständige Kartennummer enthalten.
+
+
+
+
+ BT-88
+ Name des Karteninhabers.
+
+
+
+
+
+
+
+
+
+ BT-89
+ Eindeutige Kennung, die vom Zahlungsempfänger zur Referenzierung der Einzugsermächtigung zugewiesen wird (Mandatsreferenznummer).
+
+
+
+
+ BT-90
+ Die eindeutige Kennung des Verkäufers (Seller) oder des Zahlungsempfängers (Payee), um am SEPA-Lastschriftverfahren teilnehmen zu können (Gläubiger-ID).
+
+
+
+
+ BT-91
+ Die Kennung des Kontos, von dem die Lastschrift erfolgen soll: IBAN für Zahlungen im SEPA-Raum, Kontonummer oder IBAN im Falle von Auslandszahlungen.
+
+
+
+
+
+
+
+
+
+ BT-92
+ Der Nachlassbetrag ohne Umsatzsteuer.
+
+
+
+
+ BT-93
+ Der Grundbetrag, der in Verbindung mit dem Prozentsatz des Nachlasses auf der Dokumentenebene zur Berechnung des Betrags des Nachlasses auf der Dokumentenebene verwendet werden kann.
+
+
+
+
+ BT-94
+ Der Prozentsatz, der in Verbindung mit dem Grundbetrag des Nachlasses auf der Dokumentenebene zur Berechnung des Betrags des Nachlasses auf der Dokumentenebene verwendet werden kann.
+
+
+
+
+ BT-95
+ Ein Code für das Umsatzsteuermerkmal, das auf den Nachlass auf Dokumentenebene anzuwenden ist. Anmerkung: Folgende Codes aus der Codeliste UNTDID 5305 müssen verwendet werden:
+S (Standard rate)
+Z (Zero rated goods)
+E (Exempt from tax)
+AE (VAT Reverse Charge)
+K (VAT exempt for EEA intra-community supply of goods and services)
+G (Free export item, tax not charged)
+O (Services outside scope of tax)
+L (Canary Islands general indirect tax)
+M (Tax for production, services and importation in Ceuta and Melilla)
+
+
+
+
+
+ BT-96
+ Der für den Nachlass auf der Dokumentenebene geltende und in Prozent angegebene Umsatzsteuersatz.
+
+
+
+
+ BT-97
+ Der in Textform angegebene Grund für den Nachlass auf der Dokumentenebene.
+
+
+
+
+ BT-98
+ Der als Code angegebene Grund für den Nachlass auf der Dokumentenebene. Anmerkung: Hier sind die Codes aus der Codeliste UNTDID 5189 zu verwenden. Dabei müssen Document level allowance reason code und Document level allowance reason text den gleichen Grund für den Nachlass angeben.
+
+
+
+
+
+
+
+
+
+ BT-99
+ Der Betrag einer Abgabe ohne die Umsatzsteuer.
+
+
+
+
+ BT-100
+ Der Grundbetrag, der in Verbindung mit dem Prozentsatz der Abgaben auf der Dokumentenebene zur Berechnung des Betrags der Abgaben auf der Dokumentenebene verwendet werden kann (Bemessungsgrundlage).
+
+
+
+
+ BT-101
+ Der Prozentsatz, der in Verbindung mit dem Grundbetrag der Abgaben auf der Dokumentenebene zur Berechnung des Betrags der Abgaben auf der Dokumentenebene verwendet werden kann.
+
+
+
+
+ BT-102
+ Ein Code für das Umsatzsteuermerkmal dieser Elementgruppe. Anmerkung: Folgende Codes aus der Codeliste UNTDID 5305 müssen verwendet werden:
+S (Standard rate)
+Z (Zero rated goods)
+E (Exempt from tax)
+AE (VAT Reverse Charge)
+K (VAT exempt for EEA intra-community supply of goods and services)
+G (Free export item, tax not charged)
+O (Services outside scope of tax)
+L (Canary Islands general indirect tax)
+M (Tax for production, services and importation in Ceuta and Melilla)
+
+
+
+
+
+ BT-103
+ Der Umsatzsteuersatz, dargestellt als Prozentsatz, der für die Abgaben auf der Dokumentenebene gilt.
+
+
+
+
+ BT-104
+ Der in Textform angegebene Grund für die Abgaben auf der Dokumentenebene.
+
+
+
+
+ BT-105
+ Der als Code angegebene Grund für die Abgaben auf der Dokumentenebene. Anmerkung: Hier sind die Codes aus der Codeliste UNTDID 7161 zu verwenden. Document level charge reason code und Document level charge reason müssen auf den gleichen Grund für die Abgaben auf Dokumentenebene verweisen.
+
+
+
+
+
+
+
+
+
+ BT-106
+ Summe aller Rechnungspositionen-Nettobeträge der Rechnung.
+
+
+
+
+ BT-107
+ Summe aller in der Rechnung enthaltenen Nachlässe der Dokumentenebene.
+
+
+
+
+ BT-108
+ Summe aller in der Rechnung enthaltenen Abgaben der Dokumentenebene.
+
+
+
+
+ BT-109
+ Der Gesamtbetrag der Rechnung ohne Umsatzsteuer.
+
+
+
+
+ BT-110
+ Der Gesamtbetrag der Umsatzsteuer für die Rechnung.
+
+
+
+
+ BT-111
+ Der Umsatzsteuergesamtbetrag, angegeben in der Abrechnungswährung, die im Land des Verkäufers gültig ist oder verlangt wird.
+
+
+
+
+ BT-112
+ Der Gesamtbetrag der Rechnung mit Umsatzsteuer.
+
+
+
+
+ BT-113
+ Summe bereits gezahlter Beträge.
+
+
+
+
+ BT-114
+ Der Betrag, um den der Rechnungsbetrag gerundet wurde.
+
+
+
+
+ BT-115
+ Der ausstehende Betrag. Dies ist der Rechnungsbetrag inkl. Umsatzsteuer abzüglich des bereits gezahlten Betrags. Dieser Betrag ist der Rechnungsgesamtbetrag einschließlich Umsatzsteuer abzüglich der Summe bereits gezahlter Beträge. Im Falle einer vollständig beglichenen Rechnung ist dieser Betrag gleich null. Der Betrag ist negativ, falls der gezahlte Betrag größer als der Rechnungsgesamtbetrag einschließlich Umsatzsteuer ist.
+
+
+
+
+
+
+
+
+
+ BT-116
+ Summe aller zu versteuernden Beträge, für die ein bestimmter Code der Umsatzsteuerkategorie und ein bestimmter Umsatzsteuersatz gelten (falls ein kategoriespezifischer Umsatzsteuersatz gilt).
+
+
+
+
+ BT-117
+ Der für die betreffende Umsatzsteuerkategorie zu entrichtende Gesamtbetrag. Anmerkung: Die Berechnung erfolgt durch Multiplikation des VAT category taxable amount mit der VAT category rate der jeweiligen VAT category.
+
+
+
+
+ BT-118
+ Codierte Bezeichnung einer Umsatzsteuerkategorie. Anmerkung: Folgende Codes aus der Codeliste UNTDID 5305 müssen verwendet werden:
+S (Standard rate)
+Z (Zero rated goods)
+E (Exempt from tax)
+AE (VAT Reverse Charge)
+K (VAT exempt for EEA intra-community supply of goods and services)
+G (Free export item, tax not charged)
+O (Services outside scope of tax)
+L (Canary Islands general indirect tax)
+M (Tax for production, services and importation in Ceuta and Melilla)
+
+
+
+
+
+ BT-119
+ Der Umsatzsteuersatz, angegeben als für die betreffende Umsatzsteuerkategorie geltender Prozentsatz.
+
+
+
+
+ BT-120
+ In Textform angegebener Grund für die Ausnahme des Betrages von der Umsatzsteuerpflicht. Sofern die Umsatzsteuerkategorie «AE» für die Rechnung gilt, ist hier der Text «Umkehrung der Steuerschuldnerschaft» oder der entsprechende Normtext in der für die Rechnung gewählten Sprache anzugeben.
+
+
+
+
+ BT-121
+ Ein Code für den Grund für die Ausnahme des Betrages von der Umsatzsteuerpflicht. Die Codeliste «VAT exemption reason code list (VATEX)» wird von der Connecting Europe Facility gepflegt und herausgegeben.
+
+
+
+
+
+
+
+
+
+ BT-122
+ Eine Kennung der rechnungsbegründenden Unterlage.
+
+
+
+
+ BT-123
+ Eine Beschreibung der rechnungsbegründenden Unterlage.
+
+
+
+
+ BT-124
+ Die Internetadresse bzw. URL (Uniform Resource Locator), unter der das externe Dokument verfügbar ist.
+
+
+
+
+ BT-125
+ Ein als Binärobjekt eingebettetes
+Anhangsdokument.
+
+
+
+
+
+
+
+
+
+ BT-126
+ Eindeutige Bezeichnung für die betreffende Rechnungsposition.
+
+
+
+
+ BT-127
+ Ein Textvermerk, der unstrukturierte Informationen enthält, die für die Rechnungsposition maßgeblich sind.
+
+
+
+
+ BT-128
+ Eine vom Verkäufer angegebene Kennung für ein Objekt, auf das sich die Rechnungsposition bezieht (z. B. Zählernummer, Telefonnummer, Kfz-Kennzeichen, versicherte Person, Abonnement-Nummer, Rufnummer).
+
+
+
+
+ BT-129
+ Die Menge zu dem in der betreffenden Zeile in Rechnung gestellten Einzelposten (Waren oder Dienstleistungen).
+
+
+
+
+ BT-130
+ Die für die in Rechnung gestellte Menge geltende Maßeinheit. Die Maßeinheit muss unter Anwendung der in UN/ECE Rec No 20 Intro 2.a) beschriebenen Methode aus den Listen UN/ECE Recommendation No. 20 «Codes for Units of Measure Used in International Trade» und UN/ECE Recommendation No 21 «Codes for Passengers, Types of Cargo, Packages and Packaging Materials (with Complementary Codes for Package Names)» ausgewählt werden. In den meisten Fällen ist es nicht erforderlich, dass Verkäufer und Erwerber diese Listen vollständig in ihren Anwendungen implementieren. Verkäufer müssen nur die erforderlichen Einheiten für ihre Güter und Dienstleistungen unterstützen. Erwerber überprüfen lediglich, ob die in der Rechnung verwendeten Einheiten mit denen in anderen Dokumenten zum Erwerb (wie z. B. Vertrag, Katalog, Bestellung oder Lieferschein) identisch sind.
+
+
+
+
+ BT-131
+ Der Gesamtbetrag der Rechnungsposition. Dies ist der Betrag ohne Umsatzsteuer, aber einschließlich aller für die Rechnungsposition geltenden Nachlässe und Abgaben sowie sonstiger anfallender Steuern.
+
+
+
+
+ BT-132
+ Eine vom Erwerber ausgegebene Kennung für eine referenzierte Position einer Bestellung/eines Auftrags. Anmerkung: Auf den Auftrag wird auf Rechnungsebene Bezug genommen.
+
+
+
+
+ BT-133
+ Ein Textwert, der angibt, an welcher Stelle die betreffenden Daten in den Finanzkonten des Erwerbers zu buchen sind. Anmerkung: Wenn die Angabe genutzt werden soll, muss der Erwerber dem Verkäufer diese Referenz vor der Rechnungserstellung mitteilen.
+
+
+
+
+ BG-26
+ Eine Gruppe von Informationselementen, die Informationen über den für die Rechnungsposition maßgeblichen Rechnungszeitraum liefern.
+
+
+
+
+ BG-27
+ Eine Gruppe von Informationselementen, die Informationen über die für die betreffende Rechnungsposition geltenden Nachlässe liefern.
+
+
+
+
+ BG-28
+ Eine Gruppe von Informationselementen, die Informationen über Kosten, Zuschläge, und Steuern ndash; ausgenommen die Umsatzsteuer ndash; enthalten, die für die jeweilige Rechnungsposition gelten. Anmerkung: Es wird davon ausgegangen, dass alle Kosten und Zuschläge dem gleichen Umsatzsteuersatz unterliegen wie die Rechnungsposition.
+
+
+
+
+ BG-29
+ Eine Gruppe von Informationselementen, die Informationen über den Preis für die in der betreffenden Rechnungsposition in Rechnung gestellten Waren und Dienstleistungen liefern.
+
+
+
+
+ BG-30
+ Eine Gruppe von Informationselementen, die Informationen über die Umsatzsteuer liefern, die für die in der betreffenden Zeile in Rechnung gestellten Waren und Dienstleistungen gilt.
+
+
+
+
+ BG-31
+ Eine Gruppe von Informationselementen, die Informationen über die in Rechnung gestellten Waren und Dienstleistungen liefern.
+
+
+
+
+ BG-DEX-01
+ Eine Gruppe von Informationselementen, die Informationen über einzelne Rechnungspositionen liefern.
+
+
+
+
+
+
+
+
+
+ BT-134
+ Das Datum, an dem der Rechnungszeitraum der betreffenden Rechnungsposition beginnt.
+
+
+
+
+ BT-135
+ Das Datum, an dem der Rechnungszeitraum der betreffenden Rechnungsposition endet.
+
+
+
+
+
+
+
+
+
+ BT-136
+ Der Nachlassbetrag ohne Umsatzsteuer.
+
+
+
+
+ BT-137
+ Der Grundbetrag, der in Verbindung mit dem prozentualen Rechnungspositionennachlass zur Berechnung des Betrags des Rechnungspositionennachlasses verwendet werden kann.
+
+
+
+
+ BT-138
+ Der Prozentsatz, der in Verbindung mit dem Grundbetrag des Rechnungspositionennachlasses zur Berechnung des Betrags des Rechnungspositionennachlasses verwendet werden kann.
+
+
+
+
+ BT-139
+ Der in Textform angegebene Grund für den Rechnungspositionennachlass.
+
+
+
+
+ BT-140
+ Der als Code angegebene Grund für den Rechnungspositionennachlass. Anmerkung: Hier sind die Codes aus der Codeliste UNTDID 5189 zu verwenden. Invoice line level allowance reason code und Invoice line level allowance reason müssen den gleichen Nachlassgrund angeben.
+
+
+
+
+
+
+
+
+
+ BT-141
+ Der Betrag einer Abgabe ohne die Umsatzsteuer.
+
+
+
+
+ BT-142
+ Der Grundbetrag, der in Verbindung mit den prozentualen Rechnungspositionenabgaben zur Berechnung des Betrags der Rechnungspositionenabgaben verwendet werden kann.
+
+
+
+
+ BT-143
+ Der Prozentsatz, der in Verbindung mit dem Grundbetrag der Rechnungspositionenabgaben zur Berechnung des Betrags der Rechnungspositionenabgaben verwendet werden kann.
+
+
+
+
+ BT-144
+ Der in Textform angegebene Grund für die Rechnungspositionenabgaben.
+
+
+
+
+ BT-145
+ Der als Code angegebene Grund für die Rechnungspositionenabgaben. Anmerkung: Hier sind die Codes aus der Codeliste UNTDID 7161 zu verwenden. Invoice line charge reason code und Invoice line charge reason müssen auf den gleichen Grund für die Abgaben auf die Rechnungsposition verweisen.
+
+
+
+
+
+
+
+
+
+ BT-146
+ Der Preis eines Postens, ohne Umsatzsteuer, nach Abzug des für diese Rechnungsposition geltenden Rabatts. Anmerkung: Item net price muss gleich Item gross price abzüglich Item price discount sein.
+
+
+
+
+ BT-147
+ Der gesamte zur Berechnung des Netto-Postenpreises vom Brutto-Postenpreis subtrahierte Rabatt. Anmerkung: Nur anzugeben, wenn der Nachlass pro Verpackungseinheit gegeben wird und nicht in den Item gross price inkludiert ist.
+
+
+
+
+ BT-148
+ Der Postenpreis ohne Umsatzsteuer vor Abzug des Postenpreisrabatts.
+
+
+
+
+ BT-149
+ Die Anzahl von Einheiten, für die der Postenpreis gilt.
+
+
+
+
+ BT-150
+ Der Code der zu Grunde gelegten Maßeinheit. Die Maßeinheit der Item price base quantity unit of measure sollte gleich der Maßeinheit der in Rechnung gestellten Menge (BT-130) sein.
+
+
+
+
+
+
+
+
+
+ BT-151
+ Der Code der für den in Rechnung gestellten Posten geltenden Umsatzsteuerkategorie. Anmerkung: Folgende Codes aus der Codeliste UNTDID 5305 müssen verwendet werden:
+S (Standard rate)
+Z (Zero rated goods)
+E (Exempt from tax)
+AE (VAT Reverse Charge)
+K (VAT exempt for EEA intra-community supply of goods and services)
+G (Free export item, tax not charged)
+O (Services outside scope of tax)
+L (Canary Islands general indirect tax)
+M (Tax for production, services and importation in Ceuta and Melilla)
+
+
+
+
+
+ BT-152
+ Der für den in Rechnung gestellten Posten geltende und als Prozentsatz angegebene Umsatzsteuersatz. Anmerkung: Ein Umsatzsteuersatz von 0 Prozent wird für Kalkulationszwecke auch dann angewandt, wenn der Posten außerhalb der Reichweite der Umsatzsteuer ist.
+
+
+
+
+
+
+
+
+
+ BT-153
+ Ein Name des Postens.
+
+
+
+
+ BT-154
+ Eine Beschreibung des Postens. Anmerkung: Hier kann der Posten detaillierter beschrieben werden als im Namen.
+
+
+
+
+ BT-155
+ Eine dem Posten vom Verkäufer zugewiesene Kennung.
+
+
+
+
+ BT-156
+ Eine dem Posten vom Erwerber zugewiesene Kennung.
+
+
+
+
+ BT-157
+ Eine auf einem registrierten Schema basierende Postenkennung.
+
+
+
+
+ BT-158
+ Ein Code für die Klassifizierung des Postens nach Typ bzw. Art oder Wesen bzw. Beschaffenheit. Anmerkung: Klassifizierungscodes werden verwendet, um die Zusammenfassung gleichartiger Posten für unterschiedliche Zwecke zu ermöglichen.
+
+
+
+
+ BT-159
+ Der Ländercode, der das Land angibt, aus dem die Ware stammt oder in dem die Dienstleistung erbracht wird. Anmerkung: Die Liste der zulässigen Länder ist bei der ISO 3166-1 «Codes for the representation of names of countries and their subdivisions» erhältlich. Nur die Alpha-2-Darstellung darf verwendet werden.
+
+
+
+
+ BG-32
+ Eine Gruppe von Informationselementen, die Informationen über die Eigenschaften der in Rechnung gestellten Waren und Dienstleistungen liefern.
+
+
+
+
+
+
+
+
+
+ BT-160
+ Der Name der Eigenschaft des Postens, wie z. B. «Farbe».
+
+
+
+
+ BT-161
+ Der Wert der Eigenschaft des Postens, wie z. B. «rot».
+
+
+
+
+
+
+
+
+
+ BT-126
+ Eindeutige Bezeichnung für die betreffende Rechnungsposition.
+
+
+
+
+ BT-127
+ Ein Textvermerk, der unstrukturierte Informationen enthält, die für die Rechnungsposition maßgeblich sind.
+
+
+
+
+ BT-128
+ Eine vom Verkäufer angegebene Kennung für ein Objekt, auf das sich die Rechnungsposition bezieht (z. B. Zählernummer, Telefonnummer, Kfz-Kennzeichen, versicherte Person, Abonnement-Nummer, Rufnummer).
+
+
+
+
+ BT-129
+ Die Menge zu dem in der betreffenden Zeile in Rechnung gestellten Einzelposten (Waren oder Dienstleistungen).
+
+
+
+
+ BT-130
+ Die für die in Rechnung gestellte Menge geltende Maßeinheit. Die Maßeinheit muss unter Anwendung der in UN/ECE Rec No 20 Intro 2.a) beschriebenen Methode aus den Listen UN/ECE Recommendation No. 20 «Codes for Units of Measure Used in International Trade» und UN/ECE Recommendation No 21 «Codes for Passengers, Types of Cargo, Packages and Packaging Materials (with Complementary Codes for Package Names)» ausgewählt werden. In den meisten Fällen ist es nicht erforderlich, dass Verkäufer und Erwerber diese Listen vollständig in ihren Anwendungen implementieren. Verkäufer müssen nur die erforderlichen Einheiten für ihre Güter und Dienstleistungen unterstützen. Erwerber überprüfen lediglich, ob die in der Rechnung verwendeten Einheiten mit denen in anderen Dokumenten zum Erwerb (wie z. B. Vertrag, Katalog, Bestellung oder Lieferschein) identisch sind.
+
+
+
+
+ BT-131
+ Der Gesamtbetrag der Rechnungsposition. Dies ist der Betrag ohne Umsatzsteuer, aber einschließlich aller für die Rechnungsposition geltenden Nachlässe und Abgaben sowie sonstiger anfallender Steuern.
+
+
+
+
+ BT-132
+ Eine vom Erwerber ausgegebene Kennung für eine referenzierte Position einer Bestellung/eines Auftrags. Anmerkung: Auf den Auftrag wird auf Rechnungsebene Bezug genommen.
+
+
+
+
+ BT-133
+ Ein Textwert, der angibt, an welcher Stelle die betreffenden Daten in den Finanzkonten des Erwerbers zu buchen sind. Anmerkung: Wenn die Angabe genutzt werden soll, muss der Erwerber dem Verkäufer diese Referenz vor der Rechnungserstellung mitteilen.
+
+
+
+
+ BG-DEX-02
+ Eine Gruppe von Informationselementen, die Informationen über die in Rechnung gestellten Waren und Dienstleistungen liefern.
+
+
+
+
+ BG-DEX-03
+ Eine Gruppe von Informationselementen, die Informationen über die für die betreffende Rechnungsposition geltenden Nachlässe liefern.
+
+
+
+
+ BG-DEX-04
+ Eine Gruppe von Informationselementen, die Informationen über Kosten, Zuschläge, und Steuern ndash; ausgenommen die Umsatzsteuer ndash; enthalten, die für die jeweilige Rechnungsposition gelten. Anmerkung: Es wird davon ausgegangen, dass alle Kosten und Zuschläge dem gleichen Umsatzsteuersatz unterliegen wie die Rechnungsposition.
+
+
+
+
+ BG-DEX-05
+ Eine Gruppe von Informationselementen, die Informationen über den für die Rechnungsposition maßgeblichen Rechnungszeitraum liefern.
+
+
+
+
+ BG-DEX-06
+ Eine Gruppe von Informationselementen, die Informationen über die Umsatzsteuer liefern, die für die in der betreffenden Zeile in Rechnung gestellten Waren und Dienstleistungen gilt.
+
+
+
+
+ BG-DEX-07
+ Eine Gruppe von Informationselementen, die Informationen über den Preis für die in der betreffenden Rechnungsposition in Rechnung gestellten Waren und Dienstleistungen liefern.
+
+
+
+
+
+
+
+
+
+ BT-153
+ Ein Name des Postens.
+
+
+
+
+ BT-154
+ Eine Beschreibung des Postens. Anmerkung: Hier kann der Posten detaillierter beschrieben werden als im Namen.
+
+
+
+
+ BT-155
+ Eine dem Posten vom Verkäufer zugewiesene Kennung.
+
+
+
+
+ BT-156
+ Eine dem Posten vom Erwerber zugewiesene Kennung.
+
+
+
+
+ BT-157
+ Eine auf einem registrierten Schema basierende Postenkennung.
+
+
+
+
+ BT-158
+ Ein Code für die Klassifizierung des Postens nach Typ bzw. Art oder Wesen bzw. Beschaffenheit. Anmerkung: Klassifizierungscodes werden verwendet, um die Zusammenfassung gleichartiger Posten für unterschiedliche Zwecke zu ermöglichen.
+
+
+
+
+ BT-159
+ Der Ländercode, der das Land angibt, aus dem die Ware stammt oder in dem die Dienstleistung erbracht wird. Anmerkung: Die Liste der zulässigen Länder ist bei der ISO 3166-1 «Codes for the representation of names of countries and their subdivisions» erhältlich. Nur die Alpha-2-Darstellung darf verwendet werden.
+
+
+
+
+ BG-DEX-08
+ Eine Gruppe von Informationselementen, die Informationen über die Eigenschaften der in Rechnung gestellten Waren und Dienstleistungen liefern.
+
+
+
+
+
+
+
+
+
+ BT-160
+ Der Name der Eigenschaft des Postens, wie z. B. «Farbe».
+
+
+
+
+ BT-161
+ Der Wert der Eigenschaft des Postens, wie z. B. «rot».
+
+
+
+
+
+
+
+
+
+ BT-136
+ Der Nachlassbetrag ohne Umsatzsteuer.
+
+
+
+
+ BT-137
+ Der Grundbetrag, der in Verbindung mit dem prozentualen Rechnungspositionennachlass zur Berechnung des Betrags des Rechnungspositionennachlasses verwendet werden kann.
+
+
+
+
+ BT-138
+ Der Prozentsatz, der in Verbindung mit dem Grundbetrag des Rechnungspositionennachlasses zur Berechnung des Betrags des Rechnungspositionennachlasses verwendet werden kann.
+
+
+
+
+ BT-139
+ Der in Textform angegebene Grund für den Rechnungspositionennachlass.
+
+
+
+
+ BT-140
+ Der als Code angegebene Grund für den Rechnungspositionennachlass. Anmerkung: Hier sind die Codes aus der Codeliste UNTDID 5189 zu verwenden. Invoice line level allowance reason code und Invoice line level allowance reason müssen den gleichen Nachlassgrund angeben.
+
+
+
+
+
+
+
+
+
+ BT-141
+ Der Betrag einer Abgabe ohne die Umsatzsteuer.
+
+
+
+
+ BT-142
+ Der Grundbetrag, der in Verbindung mit den prozentualen Rechnungspositionenabgaben zur Berechnung des Betrags der Rechnungspositionenabgaben verwendet werden kann.
+
+
+
+
+ BT-143
+ Der Prozentsatz, der in Verbindung mit dem Grundbetrag der Rechnungspositionenabgaben zur Berechnung des Betrags der Rechnungspositionenabgaben verwendet werden kann.
+
+
+
+
+ BT-144
+ Der in Textform angegebene Grund für die Rechnungspositionenabgaben.
+
+
+
+
+ BT-145
+ Der als Code angegebene Grund für die Rechnungspositionenabgaben. Anmerkung: Hier sind die Codes aus der Codeliste UNTDID 7161 zu verwenden. Invoice line charge reason code und Invoice line charge reason müssen auf den gleichen Grund für die Abgaben auf die Rechnungsposition verweisen.
+
+
+
+
+
+
+
+
+
+ BT-134
+ Das Datum, an dem der Rechnungszeitraum der betreffenden Rechnungsposition beginnt.
+
+
+
+
+ BT-135
+ Das Datum, an dem der Rechnungszeitraum der betreffenden Rechnungsposition endet.
+
+
+
+
+
+
+
+
+
+ BT-151
+ Der Code der für den in Rechnung gestellten Posten geltenden Umsatzsteuerkategorie. Anmerkung: Folgende Codes aus der Codeliste UNTDID 5305 müssen verwendet werden:
+S (Standard rate)
+Z (Zero rated goods)
+E (Exempt from tax)
+AE (VAT Reverse Charge)
+K (VAT exempt for EEA intra-community supply of goods and services)
+G (Free export item, tax not charged)
+O (Services outside scope of tax)
+L (Canary Islands general indirect tax)
+M (Tax for production, services and importation in Ceuta and Melilla)
+
+
+
+
+
+ BT-152
+ Der für den in Rechnung gestellten Posten geltende und als Prozentsatz angegebene Umsatzsteuersatz. Anmerkung: Ein Umsatzsteuersatz von 0 Prozent wird für Kalkulationszwecke auch dann angewandt, wenn der Posten außerhalb der Reichweite der Umsatzsteuer ist.
+
+
+
+
+
+
+
+
+
+ BT-146
+ Der Preis eines Postens, ohne Umsatzsteuer, nach Abzug des für diese Rechnungsposition geltenden Rabatts. Anmerkung: Item net price muss gleich Item gross price abzüglich Item price discount sein.
+
+
+
+
+ BT-147
+ Der gesamte zur Berechnung des Netto-Postenpreises vom Brutto-Postenpreis subtrahierte Rabatt. Anmerkung: Nur anzugeben, wenn der Nachlass pro Verpackungseinheit gegeben wird und nicht in den Item gross price inkludiert ist.
+
+
+
+
+ BT-148
+ Der Postenpreis ohne Umsatzsteuer vor Abzug des Postenpreisrabatts.
+
+
+
+
+ BT-149
+ Die Anzahl von Einheiten, für die der Postenpreis gilt.
+
+
+
+
+ BT-150
+ Der Code der zu Grunde gelegten Maßeinheit. Die Maßeinheit der Item price base quantity unit of measure sollte gleich der Maßeinheit der in Rechnung gestellten Menge (BT-130) sein.
+
+
+
+
+
+
+
+
+
+ BT-DEX-001
+ Die Art der Fremdforderung.
+
+
+
+
+ BT-DEX-002
+ Der Betrag der Fremdforderung.
+
+
+
+
+ BT-DEX-003
+ Eine innerhalb der Rechnung eindeutige Beschreibung der Fremdforderung.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/visualization/xsl/FileSaver-v2.0.5.js b/visualization/xsl/FileSaver-v2.0.5.js
new file mode 100644
index 0000000..e07c980
--- /dev/null
+++ b/visualization/xsl/FileSaver-v2.0.5.js
@@ -0,0 +1,188 @@
+(function (global, factory) {
+ if (typeof define === "function" && define.amd) {
+ define([], factory);
+ } else if (typeof exports !== "undefined") {
+ factory();
+ } else {
+ var mod = {
+ exports: {}
+ };
+ factory();
+ global.FileSaver = mod.exports;
+ }
+})(this, function () {
+ "use strict";
+
+ /*
+ * FileSaver.js
+ * A saveAs() FileSaver implementation.
+ *
+ * By Eli Grey, http://eligrey.com
+ *
+ * License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)
+ * source : http://purl.eligrey.com/github/FileSaver.js
+ */
+ // The one and only way of getting global scope in all environments
+ // https://stackoverflow.com/q/3277182/1008999
+ var _global = typeof window === 'object' && window.window === window ? window : typeof self === 'object' && self.self === self ? self : typeof global === 'object' && global.global === global ? global : void 0;
+
+ function bom(blob, opts) {
+ if (typeof opts === 'undefined') opts = {
+ autoBom: false
+ };else if (typeof opts !== 'object') {
+ console.warn('Deprecated: Expected third argument to be a object');
+ opts = {
+ autoBom: !opts
+ };
+ } // prepend BOM for UTF-8 XML and text/* types (including HTML)
+ // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
+
+ if (opts.autoBom && /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
+ return new Blob([String.fromCharCode(0xFEFF), blob], {
+ type: blob.type
+ });
+ }
+
+ return blob;
+ }
+
+ function download(url, name, opts) {
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', url);
+ xhr.responseType = 'blob';
+
+ xhr.onload = function () {
+ saveAs(xhr.response, name, opts);
+ };
+
+ xhr.onerror = function () {
+ console.error('could not download file');
+ };
+
+ xhr.send();
+ }
+
+ function corsEnabled(url) {
+ var xhr = new XMLHttpRequest(); // use sync to avoid popup blocker
+
+ xhr.open('HEAD', url, false);
+
+ try {
+ xhr.send();
+ } catch (e) {}
+
+ return xhr.status >= 200 && xhr.status <= 299;
+ } // `a.click()` doesn't work for all browsers (#465)
+
+
+ function click(node) {
+ try {
+ node.dispatchEvent(new MouseEvent('click'));
+ } catch (e) {
+ var evt = document.createEvent('MouseEvents');
+ evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);
+ node.dispatchEvent(evt);
+ }
+ } // Detect WebView inside a native macOS app by ruling out all browsers
+ // We just need to check for 'Safari' because all other browsers (besides Firefox) include that too
+ // https://www.whatismybrowser.com/guides/the-latest-user-agent/macos
+
+
+ var isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent);
+ var saveAs = _global.saveAs || ( // probably in some web worker
+ typeof window !== 'object' || window !== _global ? function saveAs() {}
+ /* noop */
+ // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView
+ : 'download' in HTMLAnchorElement.prototype && !isMacOSWebView ? function saveAs(blob, name, opts) {
+ var URL = _global.URL || _global.webkitURL;
+ var a = document.createElement('a');
+ name = name || blob.name || 'download';
+ a.download = name;
+ a.rel = 'noopener'; // tabnabbing
+ // TODO: detect chrome extensions & packaged apps
+ // a.target = '_blank'
+
+ if (typeof blob === 'string') {
+ // Support regular links
+ a.href = blob;
+
+ if (a.origin !== location.origin) {
+ corsEnabled(a.href) ? download(blob, name, opts) : click(a, a.target = '_blank');
+ } else {
+ click(a);
+ }
+ } else {
+ // Support blobs
+ a.href = URL.createObjectURL(blob);
+ setTimeout(function () {
+ URL.revokeObjectURL(a.href);
+ }, 4E4); // 40s
+
+ setTimeout(function () {
+ click(a);
+ }, 0);
+ }
+ } // Use msSaveOrOpenBlob as a second approach
+ : 'msSaveOrOpenBlob' in navigator ? function saveAs(blob, name, opts) {
+ name = name || blob.name || 'download';
+
+ if (typeof blob === 'string') {
+ if (corsEnabled(blob)) {
+ download(blob, name, opts);
+ } else {
+ var a = document.createElement('a');
+ a.href = blob;
+ a.target = '_blank';
+ setTimeout(function () {
+ click(a);
+ });
+ }
+ } else {
+ navigator.msSaveOrOpenBlob(bom(blob, opts), name);
+ }
+ } // Fallback to using FileReader and a popup
+ : function saveAs(blob, name, opts, popup) {
+ // Open a popup immediately do go around popup blocker
+ // Mostly only available on user interaction and the fileReader is async so...
+ popup = popup || open('', '_blank');
+
+ if (popup) {
+ popup.document.title = popup.document.body.innerText = 'downloading...';
+ }
+
+ if (typeof blob === 'string') return download(blob, name, opts);
+ var force = blob.type === 'application/octet-stream';
+
+ var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari;
+
+ var isChromeIOS = /CriOS\/[\d]+/.test(navigator.userAgent);
+
+ if ((isChromeIOS || force && isSafari || isMacOSWebView) && typeof FileReader !== 'undefined') {
+ // Safari doesn't allow downloading of blob URLs
+ var reader = new FileReader();
+
+ reader.onloadend = function () {
+ var url = reader.result;
+ url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;');
+ if (popup) popup.location.href = url;else location = url;
+ popup = null; // reverse-tabnabbing #460
+ };
+
+ reader.readAsDataURL(blob);
+ } else {
+ var URL = _global.URL || _global.webkitURL;
+ var url = URL.createObjectURL(blob);
+ if (popup) popup.location = url;else location.href = url;
+ popup = null; // reverse-tabnabbing #460
+
+ setTimeout(function () {
+ URL.revokeObjectURL(url);
+ }, 4E4); // 40s
+ }
+ });
+ _global.saveAs = saveAs.saveAs = saveAs;
+
+ if (typeof module !== 'undefined') {
+ module.exports = saveAs;
+ }
+});
diff --git a/visualization/xsl/cii-xr.xsl b/visualization/xsl/cii-xr.xsl
new file mode 100644
index 0000000..30ef577
--- /dev/null
+++ b/visualization/xsl/cii-xr.xsl
@@ -0,0 +1,2150 @@
+
+
+
+
+
+ Author: KoSIT Bremen (kosit@finanzen.bremen.de)
+ Fassung vom: 2020-06-30+02:00
+ Überführt eine zur EN 16931 konforme elektronische Rechnung in der konkreten Syntax UNCEFACT.CII.D16B in eine Instanz gemäß des Schemas für den Namensraum urn:ce.eu:en16931:2017:xoev-de:kosit:standard:xrechnung-1.
+ Das Skript setzt voraus, dass das zu verarbeitende Dokument valide bzgl. des XML Schemas und der Schematron-Regeln der Quelle ist. Für nicht valide Dokumente ist das Ergebnis nicht definiert.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/visualization/xsl/common-xr.xsl b/visualization/xsl/common-xr.xsl
new file mode 100644
index 0000000..5c67307
--- /dev/null
+++ b/visualization/xsl/common-xr.xsl
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ILLEGAL DATE FORMAT of "".
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Liefert einen XPath-Pfad, welches $n eindeutig identifiziert.
+
+
+
+
+
+
+
+
+
+
+ Liefert einen XPath-Pfad, welches $n eindeutig identifiziert.
+
+
+
+
+ /
+
+
+ [
+
+ ]
+
+
+
+ /@
+
+
+
+
diff --git a/visualization/xsl/functions.xsl b/visualization/xsl/functions.xsl
new file mode 100644
index 0000000..25a10ab
--- /dev/null
+++ b/visualization/xsl/functions.xsl
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/visualization/xsl/l10n/de.xml b/visualization/xsl/l10n/de.xml
new file mode 100644
index 0000000..9c859f9
--- /dev/null
+++ b/visualization/xsl/l10n/de.xml
@@ -0,0 +1,259 @@
+
+
+ Käuferreferenz
+ Name
+ Adresszeile 1
+ Adresszeile 2
+ Adresszeile 3
+ PLZ
+ Ort
+ Ländercode
+ Kennung
+ Schema der Kennung
+ Name
+ Telefon
+ E-Mail-Adresse
+ Firmenname
+ Adresszeile 1
+ Adresszeile 2
+ Adresszeile 3
+ PLZ
+ Ort
+ Bundesland
+ Ländercode
+ Kennung
+ Schema der Kennung
+ Name
+ Telefon
+ E-Mail-Adresse
+ Rechnungsnummer
+ Rechnungsdatum
+ Rechnungsart
+ Währung
+ Projektnummer
+ Vertragsnummer
+ Bestellnummer
+ Auftragsnummer
+
+ Von
+ Bis
+ Rechnungsnummer
+ Rechnungsdatum
+ Summe aller Positionen
+ Summe Nachlässe
+ Summe Zuschläge
+ Gesamtsumme
+ Summe Umsatzsteuer
+ Summe Umsatzsteuer in Abrechnungswährung
+ Gesamtsumme
+ Gezahlter Betrag
+ Rundungsbetrag
+ Fälliger Betrag
+ Umsatzsteuerkategorie
+ Gesamtsumme
+ Umsatzsteuersatz
+ Umsatzsteuerbetrag
+ Befreiungsgrund
+ Kennung für den Befreiungsgrund
+
+ Umsatzsteuerkategorie des
+ Nachlasses
+ Grundbetrag
+ Prozentsatz
+ Nachlass
+ Umsatzsteuersatz des
+ Nachlasses
+ Grund für den Nachlass
+ Kennung für den Nachlassgrund
+
+ Umsatzsteuerkategorie des
+ Zuschlages
+ Grundbetrag
+ Prozentsatz
+ Zuschlag
+ Umsatzsteuersatz des Zuschlages
+ Grund für den Zuschlag
+ Kennung für den Zuschlagsgrund
+ Skonto; weitere Zahlungsbedingungen
+ Fälligkeitsdatum
+ Code für das Zahlungsmittel
+ Zahlungsmittel
+ Verwendungszweck
+ Kartennummer
+ Karteninhaber
+
+ Mandatsreferenznr.
+ IBAN
+ Gläubiger-ID
+
+ Kontoinhaber
+ IBAN
+ BIC
+ Betreff
+ Bemerkung
+
+ Abweichender Handelsname
+ Elektronische Adresse
+ Schema der elektronischen Adresse
+ Register-/Registriernummer
+ Schema der Registernummer
+ Umsatzsteuer-ID
+ Steuernummer
+ Weitere rechtliche Informationen
+ Code der Umsatzsteuerwährung
+
+ Name
+ Adresszeile 1
+ Adresszeile 2
+ Adresszeile 3
+ PLZ
+ Ort
+ Bundesland
+ Ländercode
+ Umsatzsteuer-ID
+
+ Abweichender Handelsname
+ Bundesland
+ Elektronische Adresse
+ Schema der elektronischen Adresse
+ Register-/Registriernummer
+ Schema der Register-/Registriernummer
+ Umsatzsteuer-ID
+ Abrechnungsdatum der Umsatzsteuer
+ Code des Umsatzsteuer-Abrechnungsdatums
+ Kontierungsinformation
+ Kennung des Lieferorts
+ Schema der Kennung
+ Lieferdatum
+ Name des Empfängers
+ Adresszeile 1
+ Adresszeile 2
+ Adresszeile 3
+ PLZ
+ Ort
+ Bundesland
+ Ländercode
+ Vergabenummer
+ Kennung der Empfangsbestätigung
+ Kennung der Versandanzeige
+ Prozesskennung
+ Spezifikationskennung
+ Objektkennung
+ Schema der Objektkennung
+
+ Name
+ Kennung
+ Schema der Kennung
+ Register-/Registriernummer
+ Schema der Register-/Registriernummer
+
+ Kennung
+ Beschreibung
+ Verweis (z.B. Internetadresse)
+ Anhangsdokument
+ Format des Anhangdokuments
+ Name des Anhangsdokuments
+ Datum/Uhrzeit
+ Betreff
+ Text
+ Details
+ Position
+ Freitext
+ Objektkennung
+ Schema der Objektkennung
+ Nummer der Auftragsposition
+ Kontierungshinweis
+ Von
+ Bis
+ Menge
+ Einheit
+ Preis pro Einheit (netto)
+ Gesamtpreis (netto)
+ Rabatt (netto)
+ Listenpreis (netto)
+ Basismenge zum Artikelpreis
+ Code der Maßeinheit
+ Umsatzsteuer
+ Umsatzsteuersatz
+ Bezeichnung
+ Beschreibung
+ Artikelnummer
+ Artikelkennung des Käufers
+ Artikelkennung
+ Schema der Artikelkennung
+ Code der Artikelklassifizierung
+ Kennung zur Bildung des Schemas
+ Version zur Bildung des Schemas
+ Code des Herkunftslandes
+ Grundbetrag (netto)
+ Prozentsatz
+ Nachlass (netto)
+ Grund des Nachlasses
+ Code für den Nachlassgrund
+ Grundbetrag (netto)
+ Prozentsatz
+ Zuschlag (netto)
+ Grund des Zuschlags
+ Code für den Zuschlagsgrund
+ Art der Fremdforderung
+ Betrag der Fremdforderung
+ Beschreibung der Fremdforderung
+ Übersicht
+ Informationen zum Käufer
+ Informationen zum Verkäufer
+ Rechnungsdaten
+ Gesamtbeträge der Rechnung
+ Fremdforderung
+ Aufschlüsselung der Umsatzsteuer auf Ebene der Rechnung
+ Nachlass auf Ebene der Rechnung
+ Zuschlag auf Ebene der Rechnung
+ Abrechnungszeitraum
+ Vorausgegangene Rechnungen
+ Zahlungsdaten
+ Karteninformation
+ Lastschrift
+ Überweisung
+ Bemerkungen zur Rechnung
+ Details
+ Abrechnungszeitraum
+ Preiseinzelheiten
+ Nachlässe auf Ebene der Rechnungsposition
+ Zuschläge auf Ebene der Rechnungsposition
+ Artikelinformationen
+ Eigenschaften des Artikels
+ Zusätze
+ Informationen zum Verkäufer
+ Steuervertreter des Verkäufers
+ Informationen zum Käufer
+ Lieferinformationen
+ Informationen zum Vertrag
+ Vom Verkäufer abweichender Zahlungsempfänger
+ Laufzettel
+ Bearbeitungshistorie
+ Anlagen
+ Rechnungsbegründende Unterlagen
+ Artikelklassifizierung
+ [D].[M].[Y,4]
+ [D].[M].[Y,4] [H]:[m]:[s]
+ ###.##0,00
+ ##0,00
+ ###.##0,#################
+
+ Summe Fremdforderungen
+
+ Inhalte auf dieser Seite sind ohne JavaScript nur eingeschränkt darstellbar.
+ Wir übernehmen keine Haftung für die Richtigkeit der Daten.
+ Bemerkungen zur Rechnung
+ Öffnen
+ Keine Daten vorhanden
+ netto
+ brutto
+ Bereiche ohne Inhalte werden nicht dargestellt!
+ Beschreibung
+ Preis
+ Preiseinheit
+ USt. Satz
+ St. Code
+ Gesamt
+ Seite
+
diff --git a/visualization/xsl/l10n/en.xml b/visualization/xsl/l10n/en.xml
new file mode 100644
index 0000000..525e44f
--- /dev/null
+++ b/visualization/xsl/l10n/en.xml
@@ -0,0 +1,257 @@
+
+
+ Buyer reference
+ Name
+ Address line 1
+ Address line 2
+ Address line 3
+ ZIP
+ Location
+ Country code
+ Identifier
+ Scheme identifier
+ Contact point
+ Contact point phone
+ Contact point email
+ Company name
+ Address line 1
+ Address line 2
+ Address line 3
+ ZIP
+ Location
+ State
+ Country code
+ Identifier
+ Scheme identifier
+ Contact point
+ Contact point phone
+ Contact point email
+ Invoice number
+ Invoice date
+ Invoice type
+ Currency
+ Project reference
+ Contract reference
+ Purchase order reference
+ Sales order reference
+
+ From
+ To
+ Invoice number
+ Invoice date
+ Total invoice line net amount
+ Total allowances
+ Total charges
+ Total amount
+ Total VAT
+ Total VAT in accounting currency
+ Total
+ Already paid
+ Rounding amount
+ Amount due
+ VAT category
+ Total
+ VAT rate
+ VAT amount
+ Exemption reason
+ Exemption reason code
+
+ Allowance VAT category code
+ Base amount
+ Percentage
+ Amount
+ Allowance VAT rate
+ Allowance reason
+ Allowance reason code
+
+ Charge VAT category code
+ Base amount
+ Percentage
+ Amount
+ VAT rate
+ Charge Reason
+ Charge reason code
+ Payment terms
+ Due date
+ Payment means type code
+ Payment means
+ Remittance information
+ Card number
+ Card holder
+
+ Mandate reference no.
+ Debited account identifier
+ Creditor ID
+
+ Account holder
+ Account identifier
+ BIC
+ Subject code
+ Note
+
+ Different trading name
+ Electronic address
+ Electronic address
+ scheme
+ Legal registration identifier
+ Legal registration identifier scheme
+ VAT ID
+ Tax number
+ Further legal information
+ VAT accounting currency
+
+ Name
+ Address line 1
+ Address line 2
+ Address line 3
+ ZIP
+ Location
+ State
+ Country code
+ VAT ID
+
+ Different trading name
+ State
+ Electronic address
+ Electronic address scheme
+ Legal registration identifier
+ Legal registration identifier scheme
+ VAT ID
+ Value added tax point date
+ Value added tax point date code
+ Buyer accounting reference
+ Delivery location identifier
+ Identification scheme
+ Delivery date
+ Name of the recipient
+ Address line 1
+ Address line 2
+ Address line 3
+ ZIP
+ Location
+ State
+ Country code
+ Award reference
+ Receiving advice reference
+ Despatch advice reference
+ Process identifier
+ Specification identifier
+ Object identifier
+ Object identifier scheme
+
+ Name
+ Identifier
+ Identification scheme
+ Legal registration identifier
+ Legal registration identifier scheme
+
+ Identifier
+ Description
+ Location (e.g. Internet address )
+ Attached document
+ MIME type of the attached document
+ Name of the attachment document
+ Date / time
+ Subject
+ Text
+ Details
+ Identifier
+ Free text
+ Object identifier
+ Object identifier scheme
+ Order item number
+ Buyer accounting reference
+ From
+ To
+ Quantity
+ Unit
+ Price per unit (net)
+ Total price (net)
+ Discount (net)
+ List price (net)
+ Item price base quantity
+ Unit code
+ VAT category
+ VAT rate
+ Name
+ Description
+ Item identifier
+ Buyer's item identifier
+ Item standard identifier
+ Item standard identifier scheme
+ Item classification code
+ Item classification code scheme
+ Schema version
+ Country of origin
+ Base amount (net)
+ Percentage
+ Allowance (net)
+ Allowance reason
+ Allowance reason code
+ Base amount (net)
+ Percentage
+ Charge (net)
+ Reason for the Charge
+ Charge reason code
+ Third party payment type
+ Third party payment amount
+ Third party payment description
+ Overview
+ Information about the buyer
+ Information about the seller
+ Invoice data
+ Invoice totals
+ Third party payment
+ Sales tax breakdown at invoice level
+ Invoice level discount
+ Invoice level surcharge
+ Billing period
+ Previous invoices
+ Payment data
+ Card information
+ Direct debit
+ Transfer
+ Notes on the invoice
+ Details
+ Billing period
+ Price details
+ Allowances on invoice item level
+ Charges at invoice item level
+ Item information
+ Properties of the item
+ Supplements
+ Information about the seller
+ Tax representative of the seller
+ Information about the buyer
+ Delivery information
+ Information about the contract
+ Payee different from the seller
+ Routing slip
+ Processing history
+ Attachments
+ Documents justifying the invoice
+ Item classification
+ [Y,4]-[M,2]-[D,2]
+ [Y,4]-[M,2]-[D,2] [H]:[m]:[s]
+ ###,##0.00
+ ##0.00
+ ###,##0.#################
+
+ Third party payment total
+
+ The display of content on this page is limited without JavaScript.
+ We assume no liability for the accuracy of the data.
+ Notes on the invoice
+ Open
+ No data available
+ net
+ gross
+ Areas without content are not displayed!
+ Description
+ Price
+ Price unit
+ VAT
+ Code
+ Total
+ Page
+
diff --git a/visualization/xsl/normalization.xsl b/visualization/xsl/normalization.xsl
new file mode 100644
index 0000000..aa9c12e
--- /dev/null
+++ b/visualization/xsl/normalization.xsl
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/visualization/xsl/ubl-creditnote-xr.xsl b/visualization/xsl/ubl-creditnote-xr.xsl
new file mode 100644
index 0000000..df32ca8
--- /dev/null
+++ b/visualization/xsl/ubl-creditnote-xr.xsl
@@ -0,0 +1,2107 @@
+
+
+
+
+
+ Author: KoSIT Bremen (kosit@finanzen.bremen.de)
+ Fassung vom: 2020-06-30+02:00
+ Überführt eine zur EN 16931 konforme elektronische Rechnung in der konkreten Syntax UBL.2_1.CreditNote in eine Instanz gemäß des Schemas für den Namensraum urn:ce.eu:en16931:2017:xoev-de:kosit:standard:xrechnung-1.
+ Das Skript setzt voraus, dass das zu verarbeitende Dokument valide bzgl. des XML Schemas und der Schematron-Regeln der Quelle ist. Für nicht valide Dokumente ist das Ergebnis nicht definiert.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/visualization/xsl/ubl-invoice-xr.xsl b/visualization/xsl/ubl-invoice-xr.xsl
new file mode 100644
index 0000000..d0d544d
--- /dev/null
+++ b/visualization/xsl/ubl-invoice-xr.xsl
@@ -0,0 +1,2114 @@
+
+
+
+
+
+ Author: KoSIT Bremen (kosit@finanzen.bremen.de)
+ Fassung vom: 2020-06-30+02:00
+ Überführt eine zur EN 16931 konforme elektronische Rechnung in der konkreten Syntax
+ UBL.2_1.Invoice in eine Instanz gemäß des Schemas für den Namensraum
+ urn:ce.eu:en16931:2017:xoev-de:kosit:standard:xrechnung-1.
+ Das Skript setzt voraus, dass das zu verarbeitende Dokument valide bzgl. des XML
+ Schemas und der Schematron-Regeln der Quelle ist. Für nicht valide Dokumente ist das
+ Ergebnis nicht definiert.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/visualization/xsl/xr-content.xsl b/visualization/xsl/xr-content.xsl
new file mode 100644
index 0000000..4d120a0
--- /dev/null
+++ b/visualization/xsl/xr-content.xsl
@@ -0,0 +1,939 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/visualization/xsl/xr-pdf.xsl b/visualization/xsl/xr-pdf.xsl
new file mode 100644
index 0000000..153dba4
--- /dev/null
+++ b/visualization/xsl/xr-pdf.xsl
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ normal
+
+
+ normal
+
+
+ 2 7 2 2 2 2 1.3 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/visualization/xsl/xr-pdf/lib/konstanten.xsl b/visualization/xsl/xr-pdf/lib/konstanten.xsl
new file mode 100644
index 0000000..eb040ae
--- /dev/null
+++ b/visualization/xsl/xr-pdf/lib/konstanten.xsl
@@ -0,0 +1,235 @@
+
+
+
+
+
+ SourceSerifPro
+ SourceSerifPro
+
+
+
+
+
+
+
+
+
+
+ 9pt
+ 12pt
+ 3
+ true
+ de
+
+
+
+
+ 18pt
+
+ false
+ all
+
+
+
+
+ 18pt
+
+ bold
+ 4mm
+ false
+ all
+ always
+
+
+
+
+ 0.5pt solid
+ 2.5pt
+ all
+ 4mm
+ always
+
+
+
+
+ 9pt
+
+ bold
+ 0.5pt solid
+ 4pt 6pt
+ always
+ 0
+
+
+
+
+ 10pt
+
+ bold
+ 1mm
+ 2mm
+ 2mm
+ all
+ always
+
+
+
+
+ 2mm
+ 3mm
+ 0.5pt dotted
+ #999999
+ always
+
+
+
+ #eeeeee
+ 30
+
+
+ 7pt
+ 10pt
+ 1mm
+ 1mm
+ 2mm
+ 1mm
+
+
+
+ 9pt
+ 10pt
+
+ 1mm
+ 1mm
+ 2mm
+ 2mm
+ always
+
+
+
+
+ 9pt
+ left
+ 0.2mm
+ 0.2mm
+ 0mm
+ 1mm
+ 0mm
+ always
+
+
+
+ 9pt
+ left
+ 0.2mm
+ 0.2mm
+ 0mm
+ 1mm
+ 0mm
+ always
+
+
+
+ 9pt
+ right
+ 0.2mm
+ 0.2mm
+ 0mm
+ 0mm
+ 0mm
+ always
+
+
+
+ 9pt
+ left
+ 0.4mm
+ 0.2mm
+ 0mm
+ 1mm
+ 0.1pt solid #999999
+ always
+
+
+
+ 9pt
+ left
+ 0.4mm
+ 0.2mm
+ 0mm
+ 1mm
+ 0.1pt solid #999999
+ always
+
+
+
+ 9pt
+ bold
+ right
+ 0.4mm
+ 0.2mm
+ 0mm
+ 0mm
+ 0.1pt solid #999999
+ always
+
+
+
+
+ 10mm
+
+
+
+ 2mm
+ always
+ all
+
+
+
+ 2mm
+
+
+
+
+ 2pt
+ 2pt
+ 100%
+ fixed
+ 2mm
+
+
+
+ bold
+
+
+
+
+
+
+
+
+ 80%
+ italic
+
+
+
+ 2pt
+ 2pt
+ 100%
+ fixed
+ 80%
+ italic
+
+
+
\ No newline at end of file
diff --git a/visualization/xsl/xr-pdf/lib/structure/content-templates.xsl b/visualization/xsl/xr-pdf/lib/structure/content-templates.xsl
new file mode 100644
index 0000000..d0ebbcb
--- /dev/null
+++ b/visualization/xsl/xr-pdf/lib/structure/content-templates.xsl
@@ -0,0 +1,972 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zweispaltig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zweispaltig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ zweispaltig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ url(embedded-file:)
+
+
+
+
+
+
+
+
+ data:application/pdf;base64,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ h1
+
+
+
+
+
+
+
+
+
+
+ h2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Code
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Code
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/visualization/xsl/xr-pdf/lib/structure/layout-master-set.xsl b/visualization/xsl/xr-pdf/lib/structure/layout-master-set.xsl
new file mode 100644
index 0000000..ef3bc41
--- /dev/null
+++ b/visualization/xsl/xr-pdf/lib/structure/layout-master-set.xsl
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/visualization/xsl/xr-pdf/lib/structure/page-sequence.xsl b/visualization/xsl/xr-pdf/lib/structure/page-sequence.xsl
new file mode 100644
index 0000000..864c29d
--- /dev/null
+++ b/visualization/xsl/xr-pdf/lib/structure/page-sequence.xsl
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/visualization/xsl/xrechnung-html.xsl b/visualization/xsl/xrechnung-html.xsl
new file mode 100644
index 0000000..8644016
--- /dev/null
+++ b/visualization/xsl/xrechnung-html.xsl
@@ -0,0 +1,2259 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ XRechnung
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/visualization/xsl/xrechnung-viewer.css b/visualization/xsl/xrechnung-viewer.css
new file mode 100644
index 0000000..c2dda2b
--- /dev/null
+++ b/visualization/xsl/xrechnung-viewer.css
@@ -0,0 +1,932 @@
+/* Grundformatierung ********************************************/
+
+*,
+*:after,
+*:before
+{
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+}
+
+.clear:after
+{
+ content: ".";
+ clear: both;
+ display: block;
+ visibility: hidden;
+ height: 0;
+}
+
+html,
+body
+{
+ height: 100%;
+ min-width: 320px;
+ margin: 0;
+ padding: 0;
+ color: #000;
+ font-size: 14px;
+}
+
+body
+{
+ overflow-y: scroll;
+ background-color: rgba(4, 101, 161, 0.08);
+}
+
+h4
+{
+ color: inherit;
+ font-size: inherit;
+ margin-bottom: 0.5rem;
+}
+
+
+/* Grundaufbau *************************************************/
+
+.menue
+{
+ position: relative;
+ z-index: 2000;
+ background-color: #000;
+ margin-bottom: 30px;
+}
+
+.innen
+{
+ max-width: 1080px;
+ margin: 0 auto;
+ padding: 0 2%;
+}
+
+.menue .innen div {
+ display: inline-block;
+ margin: 0 16px;
+}
+
+
+/* Formatierungen *************************************************/
+
+.color2
+{
+ color: rgba(0, 0, 0, 0.6);
+}
+
+.schwarz
+{
+ color: #555 !important;
+}
+
+.normal
+{
+ font-weight: normal;
+}
+
+.bold
+{
+ font-weight: bold;
+}
+
+.abstandUnten
+{
+ margin-bottom: 5px;
+}
+
+.abstandUntenKlein
+{
+ margin-bottom: 10px;
+}
+
+.noPaddingTop
+{
+ padding-top: 0 !important;
+}
+
+.ausrichtungRechts
+{
+ text-align: right;
+}
+
+
+
+
+/* Menü ********************************************************/
+
+button
+{
+ position: relative;
+ font-family: serif;
+ padding-top: 15px;
+ padding-left: 0;
+ padding-right: 0;
+ margin-right: 2%;
+}
+
+.btnAktiv
+{
+ font-size: 22px;
+ color: #ffb619;
+ height: 50px;
+ outline: none;
+ border: none;
+ background: none;
+}
+
+.btnAktiv:after
+{
+ content: "";
+ display: block;
+ position: absolute;
+ top: 50px;
+ left: 50%;
+ z-index: 10;
+ font-size: 0;
+ line-height: 0;
+ height: 0;
+ padding: 0;
+ margin: 0;
+ transform: translateX(-50%);
+ border: 15px solid #000;
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: transparent;
+}
+
+.btnInaktiv,
+.tab
+{
+ font-size: 22px;
+ color: #fff;
+ height: 50px;
+ z-index: 0;
+ outline: none;
+ border: none;
+ background: none;
+ transition: color 0.3s ease;
+}
+
+.btnInaktiv:hover,
+.tab:hover
+{
+ color: #ffb619;
+ cursor: pointer;
+}
+
+.divHide
+{
+ display: none;
+}
+
+/* Content *********************************************************************/
+
+.inhalt
+{
+ font-family: sans-serif;
+ margin-bottom: 30px;
+}
+
+.noscript
+{
+ color: #000;
+ text-align: center;
+ padding: 20px;
+ margin-bottom: 30px;
+ width: 100%;
+ border: 1px solid #ff6347;
+ background-color: #ffd5ce;
+}
+
+.haftungausschluss
+{
+ color: #000;
+ text-align: center;
+ padding: 7px;
+ margin-bottom: 30px;
+ width: 100%;
+ border: 1px solid #ffb619;
+ background-color: #fff;
+}
+
+.box
+{
+ position: relative;
+ display: table-cell;
+ padding: 0;
+ border: 1px solid rgba(4, 101, 161, 0.2);
+ background-color: #fff;
+}
+
+.subBox
+{
+ border-top: none;
+ width: 50%;
+}
+
+.subBox:last-child
+{
+ border-left: none;
+}
+
+.first > .boxzeile > .subBox
+{
+ border-top: 1px solid rgba(4, 101, 161, 0.2) !important;
+}
+
+.boxtitel
+{
+ display: inline-block;
+ background-color: #0465A1;
+ padding: 7px 10px;
+ color: #fff;
+ font-weight: bold;
+}
+
+.boxBorderTop
+{
+ border-top: none;
+}
+
+.boxBorderLeft
+{
+ border-left: none;
+}
+
+.boxtitelSub
+{
+ color: #000;
+ background-color: rgba(4, 101, 161, 0.1);
+ border-right: 1px solid rgba(4, 101, 161, 0.2);
+ border-bottom: 1px solid rgba(4, 101, 161, 0.2);
+}
+
+.boxinhalt
+{
+ padding: 15px 20px;
+}
+
+.boxtabelle
+{
+ display: table;
+ width: 100%;
+}
+
+.borderSpacing
+{
+ border-spacing: 0 5px;
+}
+
+.boxabstandtop
+{
+ margin-top: 30px;
+}
+
+.boxzeile
+{
+ display: table-row;
+}
+
+.boxzeile .box:last-child
+{
+ margin-bottom: 0;
+}
+
+.boxdaten
+{
+ display: table-cell;
+ padding: 5px 0;
+ vertical-align: middle;
+ height: 38px;
+ /*
+ -ms-word-break: break-all;
+ word-break: break-all;
+ word-break: break-word;
+ -webkit-hyphens: auto;
+ -moz-hyphens: auto;
+ hyphens: auto;
+*/
+}
+
+.boxdaten.wert
+{
+ padding: 5px 10px;
+}
+
+.boxcell
+{
+ display: table-cell;
+}
+
+.boxdatenBlock
+{
+ display: block;
+ padding: 3px 0;
+ /*
+ -ms-word-break: break-all;
+ word-break: break-all;
+ word-break: break-word;
+ -webkit-hyphens: auto;
+ -moz-hyphens: auto;
+ hyphens: auto;
+*/
+}
+
+.noBreak
+{
+ -ms-word-break: keep-all;
+ word-break: keep-all;
+ word-break: keep-all;
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ hyphens: none;
+}
+
+.boxabstand
+{
+ display: table-cell;
+ width: 30px;
+}
+
+.legende
+{
+ color: rgba(0, 0, 0, 0.6);
+ width: 170px;
+ font-size: 13px;
+ line-height: 16px;
+ padding-right: 5px;
+}
+
+.wert
+{
+ background-color: rgba(4, 101, 161, 0.03);
+}
+
+.boxtabelleEinspaltig
+{
+ width: 49%;
+}
+
+.boxtabelleZweispaltig,
+.boxtabelleDreispaltig
+{
+ width: 100%;
+}
+
+.box5050
+{
+ width: 50%;
+}
+
+.boxEinspaltig
+{
+ width: 100%;
+}
+
+.boxZweispaltig
+{
+ width: 48.5%;
+}
+
+.boxSpalte1 {
+ width: 50%;
+}
+
+.boxSpalte2 {
+ width: 50%;
+ padding-left: 20px;
+}
+
+.paddingLeft {
+ padding-left: 0.1em;
+}
+
+.noPadding {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+}
+
+.rechnungsZeile
+{
+ display: table-row;
+}
+
+.rechnungsZeile .boxdaten
+{
+ height: auto;
+}
+
+.rechnungSp1
+{
+ width: 65%;
+ font-size: 16px;
+}
+
+.rechnungSp2
+{
+ width: 10%;
+}
+
+.rechnungSp3
+{
+ width: 25%;
+ font-size: 16px;
+ text-align: right;
+}
+
+.detailSp1,
+.detailSp2
+{
+ width: 50%;
+}
+
+.detailSp2
+{
+ text-align: right;
+}
+
+.line1Bottom
+{
+ border-bottom: 1px solid #000;
+}
+
+.line1BottomLight
+{
+ padding-bottom: 5px;
+ border-bottom: 1px solid #f0f0f0;
+ margin-bottom: 5px;
+}
+
+.line2Bottom
+{
+ border-bottom: 2px solid #000;
+}
+
+.paddingTop
+{
+ padding-top: 10px;
+}
+
+.paddingBottom
+{
+ padding-bottom: 10px;
+}
+
+.grund
+{
+ font-size: 16px;
+ display: block;
+ width: 100%;
+ padding: 0 20px 15px 20px;
+}
+
+.grundDetail
+{
+ display: block;
+ width: 100%;
+ padding: 0 20px 15px 20px;
+}
+
+/* Übersichtformatierungen */
+#uebersichtLastschrift.box,
+#uebersichtUeberweisung.box
+{
+ border-top: none;
+}
+
+#uebersichtUeberweisung.box
+{
+ border-left: none;
+}
+
+
+/* Formatierungen Detailseite */
+
+.detailsSpalte1,
+.detailsSpalte2
+{
+ width: 30%;
+ float: left;
+ font-size: 90%;
+ line-height: 115%;
+ margin-right: 5%;
+}
+
+.detailsSpalte3
+{
+ width: 30%;
+ float: left;
+ font-size: 90%;
+ line-height: 115%;
+}
+
+.detailsSpalte1 .legende,
+.detailsSpalte2 .legende,
+.detailsSpalte3 .legende
+{
+ width: 145px;
+}
+
+.titelPosition
+{
+ font-size: 17px;
+ font-weight: bold;
+}
+
+
+/* Laufzettelformatierungen */
+#laufzettelHistorie .boxtabelle:not(:nth-child(2))
+{
+ border-top: 1px solid rgba(4, 101, 161, 0.2);
+ padding-top: 10px;
+ margin-top: 10px;
+}
+
+
+
+
+
+/* 1023px und kleiner ************************************************/
+
+@media screen and (max-width : 1023px) {
+
+ .box
+ {
+ display: block;
+ width: 100%;
+ margin-bottom: 20px;
+ }
+
+ .boxabstandtop
+ {
+ margin-top: 15px;
+ }
+
+ .subBox:first-child
+ {
+ margin-bottom: 0 !important;
+ }
+
+ .subBox:last-child
+ {
+ border-left: 1px solid rgba(4, 101, 161, 0.2);
+ }
+
+ .first > .boxzeile > .subBox
+ {
+ border-top: none !important;
+ }
+
+ .first > .boxzeile > .subBox:first-child
+ {
+ border-top: 1px solid rgba(4, 101, 161, 0.2) !important;
+ }
+
+ .first > .boxzeile
+ {
+ margin-bottom: 0;
+ }
+
+ #uebersichtUeberweisung.box
+ {
+ border-left: 1px solid rgba(4, 101, 161, 0.2);
+ }
+
+ #uebersichtLastschrift.box
+ {
+ margin-bottom: 0;
+ }
+
+ .boxzeile
+ {
+ display: block;
+ margin-bottom: 5px;
+ }
+
+ .boxzeile:after
+ {
+ visibility: hidden;
+ display: block;
+ font-size: 0;
+ content: " ";
+ clear: both;
+ height: 0;
+ }
+
+ #details > .boxtabelle > .boxzeile
+ {
+ margin-bottom: 0px;
+ }
+
+ .boxcell
+ {
+ display: block;
+ }
+
+ .boxcell:last-child
+ {
+ margin-top: 20px;
+ }
+
+ .boxZweispaltig
+ {
+ width: 100%;
+ }
+
+ .legende
+ {
+ display: block;
+ float: left;
+ width: 170px;
+ padding: 5px 0;
+ height: auto;
+ }
+
+ .wert
+ {
+ display: block;
+ float: left;
+ width: calc(100% - 170px);
+ padding: 11px 10px !important;
+ line-height: 1.3;
+ min-height: 38px;
+ height: auto;
+ }
+
+ .boxdaten .legende
+ {
+ height: auto;
+ }
+
+ .rechnungsZeile .boxdaten
+ {
+ padding: 5px 0;
+ }
+
+ .boxabstand
+ {
+ display: none;
+ }
+
+ .boxtabelleEinspaltig {
+ width: 100%;
+ }
+
+ .boxSpalte1 {
+ display: block;
+ width: auto;
+ }
+
+ .boxSpalte2 {
+ display: block;
+ width: auto;
+ padding-left: 0px;
+ margin-top: 1.2rem;
+ }
+
+ .detailsSpalte1,
+ .detailsSpalte2,
+ .detailsSpalte3
+ {
+ width: 100%;
+ float: none;
+ padding-right: 0px;
+ }
+
+ .detailsSpalte2,
+ .detailsSpalte3
+ {
+ margin-top: 15px;
+ }
+
+ .detailsSpalte2,
+ .detailsSpalte3
+ {
+ margin-top: 10px;
+ }
+
+ .tableNumberAlignRight
+ {
+ display: block;
+ width: 130px;
+ text-align: right;
+ }
+}
+
+
+
+/* 800px und kleiner ************************************************/
+
+@media screen and (max-width : 800px) {
+
+ button
+ {
+ padding-top: 10px;
+ }
+
+ .btnAktiv,
+ .btnInaktiv,
+ .tab
+ {
+ font-size: 20px;
+ height: 40px;
+ }
+
+ .btnAktiv:after
+ {
+ top: 40px;
+ }
+
+ .rechnungSp1
+ {
+ width: 55%;
+ font-size: 15px;
+ }
+
+ .rechnungSp2
+ {
+ width: 10%;
+ }
+
+ .rechnungSp3
+ {
+ width: 35%;
+ text-align: right;
+ font-size: 15px;
+ }
+
+ .grund
+ {
+ font-size: 15px;
+ }
+}
+
+/* 450px und kleiner ************************************************/
+
+@media screen and (max-width : 450px)
+{
+
+ html,
+ body
+ {
+ font-size: 12px;
+ }
+
+ .menue
+ {
+ margin-bottom: 20px;
+ }
+
+ button
+ {
+ padding-top: 5px;
+ }
+
+ .btnAktiv,
+ .btnInaktiv,
+ .tab
+ {
+ font-size: 17px;
+ height: 35px;
+ }
+
+ .btnAktiv:after
+ {
+ top: 35px;
+ }
+
+ .legende
+ {
+ font-size: 12px;
+ width: 100%;
+ }
+
+ .wert
+ {
+ font-size: 12px;
+ line-height: 1.3;
+ width: 100%;
+ margin-bottom: 10px
+ }
+
+ .boxzeile
+ {
+ margin-bottom: 0px
+ }
+
+ .boxdaten
+ {
+ height: auto;
+ }
+
+ .haftungausschluss
+ {
+ margin-bottom: 20px;
+ }
+
+ .boxinhalt
+ {
+ margin-top: 0px;
+ }
+
+ .boxabstandtop
+ {
+ margin-top: 20px;
+ }
+
+ .boxtitel
+ {
+ padding: 7px 8px;
+ }
+
+ .box
+ {
+ margin-bottom: 10px;
+ padding: 0;
+ }
+
+ .boxabstandtop
+ {
+ margin-top: 10px;
+ }
+
+ .boxdaten,
+ .boxdatenBlock
+ {
+ padding: 2px 0;
+ }
+
+ .rechnungSp1
+ {
+ width: 50%;
+ font-size: inherit;
+ }
+
+ .rechnungSp2
+ {
+ width: 15%;
+ }
+
+ .rechnungSp3
+ {
+ width: 35%;
+ font-size: inherit;
+ text-align: right;
+ }
+
+ .grund
+ {
+ font-size: inherit;
+ }
+
+ .titelPosition
+ {
+ font-size: 15px;
+ }
+
+ .abstandUnten
+ {
+ margin-bottom: 5px;
+ }
+
+ .detailsSpalte1,
+ .detailsSpalte2,
+ .detailsSpalte3
+ {
+ font-size: inherit;
+ line-height: inherit;
+ }
+}
+
+/* 380px und kleiner ************************************************/
+
+@media screen and (max-width : 380px) {
+
+ html,
+ body
+ {
+ font-size: 11px;
+ line-height: 100%;
+ }
+
+ .btnAktiv,
+ .btnInaktiv,
+ .tab
+ {
+ font-size: 15px;
+ }
+
+ .boxdaten
+.boxdatenBlock
+ {
+ padding: 2px 0;
+ }
+
+ .boxinhalt
+ {
+ margin-top: 0px;
+ }
+
+ .boxtitel
+ {
+ padding: 5px 7px;
+ }
+}
diff --git a/visualization/xsl/xrechnung-viewer.js b/visualization/xsl/xrechnung-viewer.js
new file mode 100644
index 0000000..ae5a305
--- /dev/null
+++ b/visualization/xsl/xrechnung-viewer.js
@@ -0,0 +1,148 @@
+
+/* Tab-Container aufbauen **************************************************/
+
+var a = new Array("uebersicht", "details", "zusaetze", "anlagen", "laufzettel");
+var b = new Array("menueUebersicht", "menueDetails", "menueZusaetze", "menueAnlagen", "menueLaufzettel");
+
+function show(e) {
+ var i = 0;
+ var j = 1;
+ for (var t = 0; t < b.length; t++) {
+ if (b[t] === e.id) {
+ i = t;
+ if (i > 0) {
+ j = 0;
+ } else {
+ j = i + 1;
+ }
+ break;
+ }
+ }
+ e.setAttribute("class", "btnAktiv");
+ e.setAttribute("aria-selected", "true");
+ for (var k = 0; k < b.length; k++) {
+ if (k === i && (document.getElementById(a[k]) != null)) {
+ document.getElementById(a[k]).style.display = "block";
+ if (i === j)
+ j = i + 1;
+ } else {
+ if (document.getElementById(a[k]) != null) {
+ document.getElementById(a[j]).style.display = "none";
+ document.getElementById(b[j]).setAttribute("class", "btnInaktiv");
+ document.getElementById(b[j]).setAttribute("aria-selected", "false");
+ j += 1;
+ }
+ }
+ }
+}
+
+window.onload = function () {
+ document.getElementById(b[0]).setAttribute("class", "btnAktiv");
+ document.getElementById(b[0]).setAttribute("aria-selected", "true");
+ // could be substituted by an xslt solution
+ document.body.querySelectorAll('[data-title]').forEach(function(element, index) {
+ element.setAttribute('title', element.getAttribute('data-title'));
+ });
+}
+
+/* Eingebettete Binaerdaten runterladen ************************************/
+
+
+function base64_to_binary(data) {
+ var chars = atob(data);
+ var bytes = new Array(chars.length);
+ for (var i = 0; i < chars.length; i++) {
+ bytes[i] = chars.charCodeAt(i);
+ }
+ return new Uint8Array(bytes);
+}
+
+function downloadData(element_id, mimetype, filename) {
+ var data_element = document.getElementById(element_id);
+ var text = data_element.innerHTML;
+ var binary = base64_to_binary(text);
+ var blob = new Blob([binary], {
+ type: mimetype, size: binary.length
+ });
+
+ if (window.navigator && window.navigator.msSaveOrOpenBlob) {
+ // IE
+ window.navigator.msSaveOrOpenBlob(blob, filename);
+ } else {
+ saveAs(blob, filename);
+ }
+}
+
+
+/* Polyfill IE atob/btoa ************************************/
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module.
+ define([], function () {
+ factory(root);
+ });
+ } else factory(root);
+ // node.js has always supported base64 conversions, while browsers that support
+ // web workers support base64 too, but you may never know.
+})(typeof exports !== "undefined" ? exports : this, function (root) {
+ if (root.atob) {
+ // Some browsers' implementation of atob doesn't support whitespaces
+ // in the encoded string (notably, IE). This wraps the native atob
+ // in a function that strips the whitespaces.
+ // The original function can be retrieved in atob.original
+ try {
+ root.atob(" ");
+ } catch (e) {
+ root.atob = (function (atob) {
+ var func = function (string) {
+ return atob(String(string).replace(/[\t\n\f\r ]+/g, ""));
+ };
+ func.original = atob;
+ return func;
+ })(root.atob);
+ }
+ return;
+ }
+
+ // base64 character set, plus padding character (=)
+ var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
+ // Regular expression to check formal correctness of base64 encoded strings
+ b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
+
+ root.btoa = function (string) {
+ string = String(string);
+ var bitmap, a, b, c,
+ result = "", i = 0,
+ rest = string.length % 3; // To determine the final padding
+
+ for (; i < string.length;) {
+ if ((a = string.charCodeAt(i++)) > 255 || (b = string.charCodeAt(i++)) > 255 || (c = string.charCodeAt(i++)) > 255)
+ throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");
+
+ bitmap = (a << 16) | (b << 8) | c;
+ result += b64.charAt(bitmap >> 18 & 63) + b64.charAt(bitmap >> 12 & 63) + b64.charAt(bitmap >> 6 & 63) + b64.charAt(bitmap & 63);
+ }
+
+ // If there's need of padding, replace the last 'A's with equal signs
+ return rest ? result.slice(0, rest - 3) + "===".substring(rest) : result;
+ };
+
+ root.atob = function (string) {
+ // atob can work with strings with whitespaces, even inside the encoded part,
+ // but only \t, \n, \f, \r and ' ', which can be stripped.
+ string = String(string).replace(/[\t\n\f\r ]+/g, "");
+ if (!b64re.test(string))
+ throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
+
+ // Adding the padding if missing, for semplicity
+ string += "==".slice(2 - (string.length & 3));
+ var bitmap, result = "", r1, r2, i = 0;
+ for (; i < string.length;) {
+ bitmap = b64.indexOf(string.charAt(i++)) << 18 | b64.indexOf(string.charAt(i++)) << 12 | (r1 = b64.indexOf(string.charAt(i++))) << 6 | (r2 = b64.indexOf(string.charAt(i++)));
+
+ result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) : r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) : String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);
+ }
+ return result;
+ };
+});