transformed

This commit is contained in:
Tanapattara Wongkhamchan 2024-08-15 16:43:40 +07:00
parent 8a968cd73c
commit b6ff9d0b28
41 changed files with 21560 additions and 0 deletions

View file

@ -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);

View file

@ -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);
}
}
}

View file

@ -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));
}
}
}

File diff suppressed because it is too large Load diff

272
visualization/CHANGELOG.md Normal file
View file

@ -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 `<xsl:template name="identifier-with-scheme-and-version">`

21
visualization/README.md Normal file
View file

@ -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).

View file

@ -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 |
<caption style="align:center;"><em>Abbildung 2: Bestandteile und Verantwortlichkeiten</em></caption>
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.

View file

@ -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.
![Grundkonzept der Visualisierung von XRechnung](../img/visualization-concept.png)
<figcaption align="center" style="width:80%;"><em>Abbildung 1: Grundkonzept der Visualisierung von XRechnung</em></figcaption>
*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.

View file

@ -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:

View file

@ -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

View file

@ -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
<xsl:param name="foengine"/>
```
Supported values are:
* axf - Antenna House XSL Formatter
* fop - Apache FOP
### Layout options
**Configuration of the general invoice layout **
```xml
<xsl:param name="invoiceline-layout">normal</xsl:param>
```
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
<xsl:param name="tabular-layout-widths">2 7 2 2 2 2 1.3 2</xsl:param>
```
Change column proportions according to your tabular layout.
**Configuration of the invoice line numbering scheme**
```xml
<xsl:param name="invoiceline-numbering">normal</xsl:param>
```
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
<xsl:param name="lang" select="'de'"/>
```
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).

View file

@ -0,0 +1,352 @@
<?xml version="1.0" encoding="UTF-8"?>
<ns0:CreditNote
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
xmlns:ns0="urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>1234567890</cbc:ID>
<cbc:IssueDate>2018-10-15</cbc:IssueDate>
<cbc:CreditNoteTypeCode>381</cbc:CreditNoteTypeCode>
<cbc:Note>Bemerkung zu der Rechnung gibt es nicht, da dies eine Testrechnung
ist.</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>99000000-01514-29</cbc:BuyerReference>
<cac:InvoicePeriod>
<cbc:StartDate>2018-10-16</cbc:StartDate>
<cbc:EndDate>2018-10-23</cbc:EndDate>
</cac:InvoicePeriod>
<cac:OrderReference>
<cbc:ID>2345678901</cbc:ID>
<cbc:SalesOrderID>Auftragsreferenz</cbc:SalesOrderID>
</cac:OrderReference>
<cac:ContractDocumentReference>
<cbc:ID>Vertragsreferenz</cbc:ID>
</cac:ContractDocumentReference>
<cac:OriginatorDocumentReference>
<cbc:ID>Vergabe-und Losreferenz</cbc:ID>
</cac:OriginatorDocumentReference>
<!--
<cac:ProjectReference>
<cbc:ID>Projektreferenz</cbc:ID>
</cac:ProjectReference>-->
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">rechnungsausgang@test.com</cbc:EndpointID>
<cac:PartyIdentification>
<!-- BT-29 -->
<cbc:ID>292345678</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>EntServDE</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Straße Rechnungssteller 1</cbc:StreetName>
<cbc:AdditionalStreetName>Erweiterte Anschrift
Rechnungssteller</cbc:AdditionalStreetName>
<cbc:CityName>Ort Rechnungssteller</cbc:CityName>
<cbc:PostalZone>12345</cbc:PostalZone>
<cbc:CountrySubentity>Bundesland Rechnungssteller</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>DK</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>ATU13585627</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyTaxScheme>
<cbc:CompanyID>456</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>AAA</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>EntServ Deutschland GmbH</cbc:RegistrationName>
<cbc:CompanyID schemeID="0198">123456789</cbc:CompanyID>
<cbc:CompanyLegalForm>Weitere rechtliche
Informationen</cbc:CompanyLegalForm>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>EntServ Deutschland</cbc:Name>
<cbc:Telephone>0123 456789</cbc:Telephone>
<cbc:ElectronicMail>kontakt@Rechnungssteller.de</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">rechnungseingang@test.de</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0094">DPMA-678</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Abweichender Handelsname Rechnungsempfänger</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Straße Rechnungsempfänger 1</cbc:StreetName>
<cbc:AdditionalStreetName>Erweitere Adresse
Rechnungempfänger</cbc:AdditionalStreetName>
<cbc:CityName>Ort Rechnungsempfänger</cbc:CityName>
<cbc:PostalZone>67890</cbc:PostalZone>
<cbc:CountrySubentity>Bundesland
Rechnungsempfänger</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>CN</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>ATU13585627</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Deutsches Patent - und
Markenamt</cbc:RegistrationName>
<cbc:CompanyID schemeID="0094">90000000-03083-12</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Kontakt Rechnungsempfänger</cbc:Name>
<cbc:Telephone>0987 654321</cbc:Telephone>
<cbc:ElectronicMail>tina@tester.de</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PayeeParty>
<cac:PartyIdentification>
<!-- BT-60 -->
<cbc:ID>601234567</cbc:ID>
</cac:PartyIdentification>
<cac:PartyIdentification>
<!-- BT-90 -->
<cbc:ID schemeID="SEPA">DE64500105173922382999</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Abweichender Zahlungsempfänger</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:CompanyID schemeID="0198">AZE-123</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:PayeeParty>
<cac:Delivery>
<cbc:ActualDeliveryDate>2018-10-22</cbc:ActualDeliveryDate>
<cac:DeliveryLocation>
<cbc:ID schemeID="0088">AL</cbc:ID>
<cac:Address>
<cbc:StreetName>Anderer Leistungsempfänger Straße 1</cbc:StreetName>
<cbc:AdditionalStreetName>Anderer Leistungsempfänger erweiterte
Adresse</cbc:AdditionalStreetName>
<cbc:CityName>Anderer Leistungsempfänger Ort</cbc:CityName>
<cbc:PostalZone>45678</cbc:PostalZone>
<cbc:CountrySubentity>Anderer Leistungempfänger
Bundesland</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>BS</cbc:IdentificationCode>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
<cac:DeliveryParty>
<cac:PartyName>
<cbc:Name>Anderer Leistungsempfänger</cbc:Name>
</cac:PartyName>
</cac:DeliveryParty>
</cac:Delivery>
<cac:PaymentMeans>
<!-- 59: SEPA Direct debit -->
<cbc:PaymentMeansCode>59</cbc:PaymentMeansCode>
<cac:PaymentMandate>
<cbc:ID>12345</cbc:ID>
<cac:PayerFinancialAccount>
<cbc:ID>DE22500105175263185267</cbc:ID>
</cac:PayerFinancialAccount>
</cac:PaymentMandate>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:Note>Zahlungsbedingungen gibt es nicht, da dies eine Testrechnung
ist.</cbc:Note>
</cac:PaymentTerms>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für den Nachlass auf
Dokumentenebene</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">1000.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">2000.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für den Zuschlag auf
Dokumentenenbene</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">400.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">4000.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für Nachlass 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">1500.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">15000.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">510.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">400.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">10000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">700.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-1000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">-190.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-1500.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReason>Grund für die Befreiung</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">10000.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">7900.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">8410.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR"
>2500.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">400.00</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="EUR">500.00</cbc:PrepaidAmount>
<cbc:PayableRoundingAmount currencyID="EUR"
>210.00</cbc:PayableRoundingAmount>
<cbc:PayableAmount currencyID="EUR">8120.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:CreditNoteLine>
<cbc:ID>123</cbc:ID>
<cbc:CreditedQuantity unitCode="LTR">10.00</cbc:CreditedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">10000.00</cbc:LineExtensionAmount>
<cbc:AccountingCost>BRE</cbc:AccountingCost>
<cac:OrderLineReference>
<cbc:LineID>RPB</cbc:LineID>
</cac:OrderLineReference>
<cac:DocumentReference>
<cbc:ID schemeID="AAD">7362789</cbc:ID>
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
</cac:DocumentReference>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Nachlass</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Nachlass 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">100.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">200.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Zuschlag</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">100.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">200.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Zuschlag 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:Item>
<cbc:Description>Beschreibung Artikel</cbc:Description>
<cbc:Name>Bezeichung Artikel</cbc:Name>
<cac:BuyersItemIdentification>
<cbc:ID>BB</cbc:ID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>456</cbc:ID>
</cac:SellersItemIdentification>
<cac:StandardItemIdentification>
<cbc:ID schemeID="0088">1234567890128</cbc:ID>
</cac:StandardItemIdentification>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="ZZZ" listVersionID="1.0">12344321</cbc:ItemClassificationCode>
</cac:CommodityClassification>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<cac:AdditionalItemProperty>
<cbc:Name>Name der Eigenschaft</cbc:Name>
<cbc:Value>Wert der Eigenschaft</cbc:Value>
</cac:AdditionalItemProperty>
<cac:AdditionalItemProperty>
<cbc:Name>Name der Artikeleigenschaft</cbc:Name>
<cbc:Value>Wert der Artikeleigenschaft</cbc:Value>
</cac:AdditionalItemProperty>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">1000</cbc:PriceAmount>
</cac:Price>
</cac:CreditNoteLine>
</ns0:CreditNote>

View file

@ -0,0 +1,357 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This is just a technical example it does not reflect any busines case and hence might not reflect anything real -->
<ns0:Invoice xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
xmlns:ns0="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>1234567890</cbc:ID>
<cbc:IssueDate>2018-10-15</cbc:IssueDate>
<cbc:DueDate>2018-10-29</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:Note>Bemerkung zu der Rechnung gibt es nicht, da dies eine Testrechnung
ist.</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>99000000-01514-29</cbc:BuyerReference>
<cac:InvoicePeriod>
<cbc:StartDate>2018-10-16</cbc:StartDate>
<cbc:EndDate>2018-10-23</cbc:EndDate>
</cac:InvoicePeriod>
<cac:OrderReference>
<cbc:ID>2345678901</cbc:ID>
<cbc:SalesOrderID>Auftragsreferenz</cbc:SalesOrderID>
</cac:OrderReference>
<cac:OriginatorDocumentReference>
<cbc:ID>Vergabe-und Losreferenz</cbc:ID>
</cac:OriginatorDocumentReference>
<cac:ContractDocumentReference>
<cbc:ID>Vertragsreferenz</cbc:ID>
</cac:ContractDocumentReference>
<!-- <cac:BillingReference>
<cac:InvoiceDocumentReference>
<cbc:ID>PRG1502168</cbc:ID>
<cbc:IssueDate>2018-10-23</cbc:IssueDate>
</cac:InvoiceDocumentReference>
</cac:BillingReference>-->
<cac:ProjectReference>
<cbc:ID>Projektreferenz</cbc:ID>
</cac:ProjectReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">rechnungsausgang@test.com</cbc:EndpointID>
<cac:PartyIdentification>
<!-- BT-29 -->
<cbc:ID>987654321</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>EntServDE</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Straße Rechnungssteller 1</cbc:StreetName>
<cbc:AdditionalStreetName>Erweiterte Anschrift
Rechnungssteller</cbc:AdditionalStreetName>
<cbc:CityName>Ort Rechnungssteller</cbc:CityName>
<cbc:PostalZone>12345</cbc:PostalZone>
<cbc:CountrySubentity>Bundesland Rechnungssteller</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>DK</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>ATU13585627</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyTaxScheme>
<cbc:CompanyID>456</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>AAA</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>EntServ Deutschland GmbH</cbc:RegistrationName>
<cbc:CompanyID schemeID="0198">123456789</cbc:CompanyID>
<cbc:CompanyLegalForm>Weitere rechtliche
Informationen</cbc:CompanyLegalForm>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>EntServ Deutschland</cbc:Name>
<cbc:Telephone>0123 456789</cbc:Telephone>
<cbc:ElectronicMail>kontakt@Rechnungssteller.de</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">rechnungseingang@test.de</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0094">DPMA-678</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Abweichender Handelsname Rechnungsempfänger</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Straße Rechnungsempfänger 1</cbc:StreetName>
<cbc:AdditionalStreetName>Erweitere Adresse
Rechnungempfänger</cbc:AdditionalStreetName>
<cbc:CityName>Ort Rechnungsempfänger</cbc:CityName>
<cbc:PostalZone>67890</cbc:PostalZone>
<cbc:CountrySubentity>Bundesland
Rechnungsempfänger</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>CN</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>ATU13585627</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Deutsches Patent - und
Markenamt</cbc:RegistrationName>
<cbc:CompanyID schemeID="0094">90000000-03083-12</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Kontakt Rechnungsempfänger</cbc:Name>
<cbc:Telephone>0987 654321</cbc:Telephone>
<cbc:ElectronicMail>tina@tester.de</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PayeeParty>
<cac:PartyIdentification>
<!-- BT-60 -->
<cbc:ID>601234567</cbc:ID>
</cac:PartyIdentification>
<cac:PartyIdentification>
<!-- BT-90 -->
<cbc:ID schemeID="SEPA">DE64500105173922382999</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Abweichender Zahlungsempfänger</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:CompanyID schemeID="0198">AZE-123</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:PayeeParty>
<cac:Delivery>
<cbc:ActualDeliveryDate>2018-10-22</cbc:ActualDeliveryDate>
<cac:DeliveryLocation>
<cbc:ID schemeID="0088">AL</cbc:ID>
<cac:Address>
<cbc:StreetName>Anderer Leistungsempfänger Straße 1</cbc:StreetName>
<cbc:AdditionalStreetName>Anderer Leistungsempfänger erweiterte
Adresse</cbc:AdditionalStreetName>
<cbc:CityName>Anderer Leistungsempfänger Ort</cbc:CityName>
<cbc:PostalZone>45678</cbc:PostalZone>
<cbc:CountrySubentity>Anderer Leistungempfänger
Bundesland</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>BS</cbc:IdentificationCode>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
<cac:DeliveryParty>
<cac:PartyName>
<cbc:Name>Anderer Leistungsempfänger</cbc:Name>
</cac:PartyName>
</cac:DeliveryParty>
</cac:Delivery>
<cac:PaymentMeans>
<!-- 59: SEPA Direct debit -->
<cbc:PaymentMeansCode>59</cbc:PaymentMeansCode>
<cac:PaymentMandate>
<cbc:ID>12345</cbc:ID>
<cac:PayerFinancialAccount>
<cbc:ID>DE22500105175263185267</cbc:ID>
</cac:PayerFinancialAccount>
</cac:PaymentMandate>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:Note>Zahlungsbedingungen gibt es nicht, da dies eine Testrechnung
ist.</cbc:Note>
</cac:PaymentTerms>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für den Nachlass auf
Dokumentenebene</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>40.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">1000.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">2500.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für den Zuschlag auf
Dokumentenenbene</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>30.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">400.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">1333.33</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für Nachlass 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>80.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">1500.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">1875.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">510.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">400.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">10000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">700.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-1000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">-190.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-1500.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReason>Grund für die Befreiung</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">10000.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">7900.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">8410.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR">2500.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">400.00</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="EUR">500.00</cbc:PrepaidAmount>
<cbc:PayableRoundingAmount currencyID="EUR">210.00</cbc:PayableRoundingAmount>
<cbc:PayableAmount currencyID="EUR">8120.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>123</cbc:ID>
<cbc:InvoicedQuantity unitCode="LTR">10.00</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">10000.00</cbc:LineExtensionAmount>
<cbc:AccountingCost>BRE</cbc:AccountingCost>
<cac:OrderLineReference>
<cbc:LineID>RPB</cbc:LineID>
</cac:OrderLineReference>
<cac:DocumentReference>
<cbc:ID schemeID="AAD">7362789</cbc:ID>
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
</cac:DocumentReference>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Nachlass</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Nachlass 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">100.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">200.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Zuschlag</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">100.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">200.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Zuschlag 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:Item>
<cbc:Description>Beschreibung Artikel</cbc:Description>
<cbc:Name>Bezeichung Artikel</cbc:Name>
<cac:BuyersItemIdentification>
<cbc:ID>BB</cbc:ID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>456</cbc:ID>
</cac:SellersItemIdentification>
<cac:StandardItemIdentification>
<cbc:ID schemeID="0088">1234567890128</cbc:ID>
</cac:StandardItemIdentification>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="ZZZ" listVersionID="1.0"
>12344321</cbc:ItemClassificationCode>
</cac:CommodityClassification>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<cac:AdditionalItemProperty>
<cbc:Name>Name der Eigenschaft</cbc:Name>
<cbc:Value>Wert der Eigenschaft</cbc:Value>
</cac:AdditionalItemProperty>
<cac:AdditionalItemProperty>
<cbc:Name>Name der Artikeleigenschaft</cbc:Name>
<cbc:Value>Wert der Artikeleigenschaft</cbc:Value>
</cac:AdditionalItemProperty>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">1000</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</ns0:Invoice>

View file

@ -0,0 +1,352 @@
<?xml version="1.0" encoding="UTF-8"?>
<ns0:CreditNote
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
xmlns:ns0="urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>1234567890</cbc:ID>
<cbc:IssueDate>2018-10-15</cbc:IssueDate>
<cbc:CreditNoteTypeCode>381</cbc:CreditNoteTypeCode>
<cbc:Note>Bemerkung zu der Rechnung gibt es nicht, da dies eine Testrechnung
ist.</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>99000000-01514-29</cbc:BuyerReference>
<cac:InvoicePeriod>
<cbc:StartDate>2018-10-16</cbc:StartDate>
<cbc:EndDate>2018-10-23</cbc:EndDate>
</cac:InvoicePeriod>
<cac:OrderReference>
<cbc:ID>2345678901</cbc:ID>
<cbc:SalesOrderID>Auftragsreferenz</cbc:SalesOrderID>
</cac:OrderReference>
<cac:ContractDocumentReference>
<cbc:ID>Vertragsreferenz</cbc:ID>
</cac:ContractDocumentReference>
<cac:OriginatorDocumentReference>
<cbc:ID>Vergabe-und Losreferenz</cbc:ID>
</cac:OriginatorDocumentReference>
<!--
<cac:ProjectReference>
<cbc:ID>Projektreferenz</cbc:ID>
</cac:ProjectReference>-->
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">rechnungsausgang@test.com</cbc:EndpointID>
<cac:PartyIdentification>
<!-- BT-29 -->
<cbc:ID schemeID="0088">291234567</cbc:ID>
</cac:PartyIdentification>
<cac:PartyIdentification>
<!-- BT-90 -->
<cbc:ID schemeID="SEPA">DE64500105173922382999</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>EntServDE</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Straße Rechnungssteller 1</cbc:StreetName>
<cbc:AdditionalStreetName>Erweiterte Anschrift
Rechnungssteller</cbc:AdditionalStreetName>
<cbc:CityName>Ort Rechnungssteller</cbc:CityName>
<cbc:PostalZone>12345</cbc:PostalZone>
<cbc:CountrySubentity>Bundesland Rechnungssteller</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>DK</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>ATU13585627</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyTaxScheme>
<cbc:CompanyID>456</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>AAA</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>EntServ Deutschland GmbH</cbc:RegistrationName>
<cbc:CompanyID schemeID="0198">123456789</cbc:CompanyID>
<cbc:CompanyLegalForm>Weitere rechtliche
Informationen</cbc:CompanyLegalForm>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>EntServ Deutschland</cbc:Name>
<cbc:Telephone>0123 456789</cbc:Telephone>
<cbc:ElectronicMail>kontakt@Rechnungssteller.de</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">rechnungseingang@test.de</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0094">DPMA-678</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Abweichender Handelsname Rechnungsempfänger</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Straße Rechnungsempfänger 1</cbc:StreetName>
<cbc:AdditionalStreetName>Erweitere Adresse
Rechnungempfänger</cbc:AdditionalStreetName>
<cbc:CityName>Ort Rechnungsempfänger</cbc:CityName>
<cbc:PostalZone>67890</cbc:PostalZone>
<cbc:CountrySubentity>Bundesland
Rechnungsempfänger</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>CN</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>ATU13585627</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Deutsches Patent - und
Markenamt</cbc:RegistrationName>
<cbc:CompanyID schemeID="0094">90000000-03083-12</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Kontakt Rechnungsempfänger</cbc:Name>
<cbc:Telephone>0987 654321</cbc:Telephone>
<cbc:ElectronicMail>tina@tester.de</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PayeeParty>
<cac:PartyIdentification>
<!-- BT-60 -->
<cbc:ID schemeID="0118">AZE</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Abweichender Zahlungsempfänger</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:CompanyID schemeID="0198">AZE-123</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:PayeeParty>
<cac:Delivery>
<cbc:ActualDeliveryDate>2018-10-22</cbc:ActualDeliveryDate>
<cac:DeliveryLocation>
<cbc:ID schemeID="0088">AL</cbc:ID>
<cac:Address>
<cbc:StreetName>Anderer Leistungsempfänger Straße 1</cbc:StreetName>
<cbc:AdditionalStreetName>Anderer Leistungsempfänger erweiterte
Adresse</cbc:AdditionalStreetName>
<cbc:CityName>Anderer Leistungsempfänger Ort</cbc:CityName>
<cbc:PostalZone>45678</cbc:PostalZone>
<cbc:CountrySubentity>Anderer Leistungempfänger
Bundesland</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>BS</cbc:IdentificationCode>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
<cac:DeliveryParty>
<cac:PartyName>
<cbc:Name>Anderer Leistungsempfänger</cbc:Name>
</cac:PartyName>
</cac:DeliveryParty>
</cac:Delivery>
<cac:PaymentMeans>
<!-- 59: SEPA Direct debit -->
<cbc:PaymentMeansCode>59</cbc:PaymentMeansCode>
<cac:PaymentMandate>
<cbc:ID>12345</cbc:ID>
<cac:PayerFinancialAccount>
<cbc:ID>DE22500105175263185267</cbc:ID>
</cac:PayerFinancialAccount>
</cac:PaymentMandate>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:Note>Zahlungsbedingungen gibt es nicht, da dies eine Testrechnung
ist.</cbc:Note>
</cac:PaymentTerms>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für den Nachlass auf
Dokumentenebene</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">1000.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">2000.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für den Zuschlag auf
Dokumentenenbene</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">400.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">4000.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für Nachlass 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">1500.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">15000.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">510.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">400.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">10000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">700.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-1000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">-190.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-1500.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReason>Grund für die Befreiung</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">10000.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">7900.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">8410.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR"
>2500.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">400.00</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="EUR">500.00</cbc:PrepaidAmount>
<cbc:PayableRoundingAmount currencyID="EUR"
>210.00</cbc:PayableRoundingAmount>
<cbc:PayableAmount currencyID="EUR">8120.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:CreditNoteLine>
<cbc:ID>123</cbc:ID>
<cbc:CreditedQuantity unitCode="LTR">10.00</cbc:CreditedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">10000.00</cbc:LineExtensionAmount>
<cbc:AccountingCost>BRE</cbc:AccountingCost>
<cac:OrderLineReference>
<cbc:LineID>RPB</cbc:LineID>
</cac:OrderLineReference>
<cac:DocumentReference>
<cbc:ID schemeID="AAD">7362789</cbc:ID>
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
</cac:DocumentReference>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Nachlass</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Nachlass 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">100.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">200.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Zuschlag</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">100.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">200.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Zuschlag 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:Item>
<cbc:Description>Beschreibung Artikel</cbc:Description>
<cbc:Name>Bezeichung Artikel</cbc:Name>
<cac:BuyersItemIdentification>
<cbc:ID>BB</cbc:ID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>456</cbc:ID>
</cac:SellersItemIdentification>
<cac:StandardItemIdentification>
<cbc:ID schemeID="0088">1234567890128</cbc:ID>
</cac:StandardItemIdentification>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="ZZZ" listVersionID="1.0">12344321</cbc:ItemClassificationCode>
</cac:CommodityClassification>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<cac:AdditionalItemProperty>
<cbc:Name>Name der Eigenschaft</cbc:Name>
<cbc:Value>Wert der Eigenschaft</cbc:Value>
</cac:AdditionalItemProperty>
<cac:AdditionalItemProperty>
<cbc:Name>Name der Artikeleigenschaft</cbc:Name>
<cbc:Value>Wert der Artikeleigenschaft</cbc:Value>
</cac:AdditionalItemProperty>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">1000</cbc:PriceAmount>
</cac:Price>
</cac:CreditNoteLine>
</ns0:CreditNote>

View file

@ -0,0 +1,357 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This is just a technical example it does not reflect any busines case and hence might not reflect anything real -->
<ns0:Invoice xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
xmlns:ns0="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>1234567890</cbc:ID>
<cbc:IssueDate>2018-10-15</cbc:IssueDate>
<cbc:DueDate>2018-10-29</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:Note>Bemerkung zu der Rechnung gibt es nicht, da dies eine Testrechnung
ist.</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>99000000-01514-29</cbc:BuyerReference>
<cac:InvoicePeriod>
<cbc:StartDate>2018-10-16</cbc:StartDate>
<cbc:EndDate>2018-10-23</cbc:EndDate>
</cac:InvoicePeriod>
<cac:OrderReference>
<cbc:ID>2345678901</cbc:ID>
<cbc:SalesOrderID>Auftragsreferenz</cbc:SalesOrderID>
</cac:OrderReference>
<cac:OriginatorDocumentReference>
<cbc:ID>Vergabe-und Losreferenz</cbc:ID>
</cac:OriginatorDocumentReference>
<cac:ContractDocumentReference>
<cbc:ID>Vertragsreferenz</cbc:ID>
</cac:ContractDocumentReference>
<!-- <cac:BillingReference>
<cac:InvoiceDocumentReference>
<cbc:ID>PRG1502168</cbc:ID>
<cbc:IssueDate>2018-10-23</cbc:IssueDate>
</cac:InvoiceDocumentReference>
</cac:BillingReference>-->
<cac:ProjectReference>
<cbc:ID>Projektreferenz</cbc:ID>
</cac:ProjectReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">rechnungsausgang@test.com</cbc:EndpointID>
<cac:PartyIdentification>
<!-- BT-29 -->
<cbc:ID schemeID="0088">291234567</cbc:ID>
</cac:PartyIdentification>
<cac:PartyIdentification>
<!-- BT-90 -->
<cbc:ID schemeID="SEPA">DE64500105173922382999</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>EntServDE</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Straße Rechnungssteller 1</cbc:StreetName>
<cbc:AdditionalStreetName>Erweiterte Anschrift
Rechnungssteller</cbc:AdditionalStreetName>
<cbc:CityName>Ort Rechnungssteller</cbc:CityName>
<cbc:PostalZone>12345</cbc:PostalZone>
<cbc:CountrySubentity>Bundesland Rechnungssteller</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>DK</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>ATU13585627</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyTaxScheme>
<cbc:CompanyID>456</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>AAA</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>EntServ Deutschland GmbH</cbc:RegistrationName>
<cbc:CompanyID schemeID="0198">123456789</cbc:CompanyID>
<cbc:CompanyLegalForm>Weitere rechtliche
Informationen</cbc:CompanyLegalForm>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>EntServ Deutschland</cbc:Name>
<cbc:Telephone>0123 456789</cbc:Telephone>
<cbc:ElectronicMail>kontakt@Rechnungssteller.de</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">rechnungseingang@test.de</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0094">DPMA-678</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Abweichender Handelsname Rechnungsempfänger</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Straße Rechnungsempfänger 1</cbc:StreetName>
<cbc:AdditionalStreetName>Erweitere Adresse
Rechnungempfänger</cbc:AdditionalStreetName>
<cbc:CityName>Ort Rechnungsempfänger</cbc:CityName>
<cbc:PostalZone>67890</cbc:PostalZone>
<cbc:CountrySubentity>Bundesland
Rechnungsempfänger</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>CN</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>ATU13585627</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Deutsches Patent - und
Markenamt</cbc:RegistrationName>
<cbc:CompanyID schemeID="0094">90000000-03083-12</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Kontakt Rechnungsempfänger</cbc:Name>
<cbc:Telephone>0987 654321</cbc:Telephone>
<cbc:ElectronicMail>tina@tester.de</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PayeeParty>
<cac:PartyIdentification>
<!-- BT-60 -->
<cbc:ID schemeID="0118">AZE</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Abweichender Zahlungsempfänger</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:CompanyID schemeID="0198">AZE-123</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:PayeeParty>
<cac:Delivery>
<cbc:ActualDeliveryDate>2018-10-22</cbc:ActualDeliveryDate>
<cac:DeliveryLocation>
<cbc:ID schemeID="0088">AL</cbc:ID>
<cac:Address>
<cbc:StreetName>Anderer Leistungsempfänger Straße 1</cbc:StreetName>
<cbc:AdditionalStreetName>Anderer Leistungsempfänger erweiterte
Adresse</cbc:AdditionalStreetName>
<cbc:CityName>Anderer Leistungsempfänger Ort</cbc:CityName>
<cbc:PostalZone>45678</cbc:PostalZone>
<cbc:CountrySubentity>Anderer Leistungempfänger
Bundesland</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>BS</cbc:IdentificationCode>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
<cac:DeliveryParty>
<cac:PartyName>
<cbc:Name>Anderer Leistungsempfänger</cbc:Name>
</cac:PartyName>
</cac:DeliveryParty>
</cac:Delivery>
<cac:PaymentMeans>
<!-- 59: SEPA Direct debit -->
<cbc:PaymentMeansCode>59</cbc:PaymentMeansCode>
<cac:PaymentMandate>
<cbc:ID>12345</cbc:ID>
<cac:PayerFinancialAccount>
<cbc:ID>DE22500105175263185267</cbc:ID>
</cac:PayerFinancialAccount>
</cac:PaymentMandate>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:Note>Zahlungsbedingungen gibt es nicht, da dies eine Testrechnung
ist.</cbc:Note>
</cac:PaymentTerms>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für den Nachlass auf
Dokumentenebene</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">1000.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">2000.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für den Zuschlag auf
Dokumentenenbene</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">400.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">4000.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für Nachlass 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">1500.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">15000.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">510.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">400.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">10000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">700.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-1000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">-190.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-1500.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReason>Grund für die Befreiung</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">10000.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">7900.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">8410.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR">2500.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">400.00</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="EUR">500.00</cbc:PrepaidAmount>
<cbc:PayableRoundingAmount currencyID="EUR">210.00</cbc:PayableRoundingAmount>
<cbc:PayableAmount currencyID="EUR">8120.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>123</cbc:ID>
<cbc:InvoicedQuantity unitCode="LTR">10.00</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">10000.00</cbc:LineExtensionAmount>
<cbc:AccountingCost>BRE</cbc:AccountingCost>
<cac:OrderLineReference>
<cbc:LineID>RPB</cbc:LineID>
</cac:OrderLineReference>
<cac:DocumentReference>
<cbc:ID schemeID="AAD">7362789</cbc:ID>
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
</cac:DocumentReference>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Nachlass</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Nachlass 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">100.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">200.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Zuschlag</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">100.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">200.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Zuschlag 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:Item>
<cbc:Description>Beschreibung Artikel</cbc:Description>
<cbc:Name>Bezeichung Artikel</cbc:Name>
<cac:BuyersItemIdentification>
<cbc:ID>BB</cbc:ID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>456</cbc:ID>
</cac:SellersItemIdentification>
<cac:StandardItemIdentification>
<cbc:ID schemeID="0088">1234567890128</cbc:ID>
</cac:StandardItemIdentification>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="ZZZ" listVersionID="1.0"
>12344321</cbc:ItemClassificationCode>
</cac:CommodityClassification>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<cac:AdditionalItemProperty>
<cbc:Name>Name der Eigenschaft</cbc:Name>
<cbc:Value>Wert der Eigenschaft</cbc:Value>
</cac:AdditionalItemProperty>
<cac:AdditionalItemProperty>
<cbc:Name>Name der Artikeleigenschaft</cbc:Name>
<cbc:Value>Wert der Artikeleigenschaft</cbc:Value>
</cac:AdditionalItemProperty>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">1000</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</ns0:Invoice>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>123456XX</cbc:ID>
<cbc:IssueDate>2016-04-04</cbc:IssueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:Note>#ADU#Es gelten unsere Allgem. Geschäftsbedingungen, die Sie unter […] finden.</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>04011000-12345-03</cbc:BuyerReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">seller@seller.com</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>[Seller trading name]</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>[Seller address line 1]</cbc:StreetName>
<cbc:CityName>[Seller city]</cbc:CityName>
<cbc:PostalZone>12345</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>DE 123456789</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>[Seller name]</cbc:RegistrationName>
<cbc:CompanyID>[HRA-Eintrag]</cbc:CompanyID>
<cbc:CompanyLegalForm>123/456/7890, HRA-Eintrag in […]</cbc:CompanyLegalForm>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>nicht vorhanden</cbc:Name>
<cbc:Telephone>+49 1234-5678</cbc:Telephone>
<cbc:ElectronicMail>seller@email.de</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">buyer@buyer.com</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID>[Buyer identifier]</cbc:ID>
</cac:PartyIdentification>
<cac:PostalAddress>
<cbc:StreetName>[Buyer address line 1]</cbc:StreetName>
<cbc:CityName>[Buyer city]</cbc:CityName>
<cbc:PostalZone>12345</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyLegalEntity>
<cbc:RegistrationName>[Buyer name]</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PaymentMeans>
<cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
<cac:PayeeFinancialAccount>
<!-- dies ist eine nicht existerende aber valide IBAN als test dummy -->
<cbc:ID>DE75512108001245126199</cbc:ID>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:Note>Zahlbar sofort ohne Abzug.</cbc:Note>
</cac:PaymentTerms>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">22.04</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">314.86</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">22.04</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">314.86</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">314.86</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">336.9</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">336.9</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>Zeitschrift [...]</cbc:ID>
<cbc:Note>Die letzte Lieferung im Rahmen des abgerechneten Abonnements erfolgt in 12/2016 Lieferung erfolgt / erfolgte direkt vom Verlag</cbc:Note>
<cbc:InvoicedQuantity unitCode="XPP">1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">288.79</cbc:LineExtensionAmount>
<cac:InvoicePeriod>
<cbc:StartDate>2016-01-01</cbc:StartDate>
<cbc:EndDate>2016-12-31</cbc:EndDate>
</cac:InvoicePeriod>
<cac:OrderLineReference>
<cbc:LineID>6171175.1</cbc:LineID>
</cac:OrderLineReference>
<cac:Item>
<cbc:Description>Zeitschrift Inland</cbc:Description>
<cbc:Name>Zeitschrift [...]</cbc:Name>
<cac:SellersItemIdentification>
<cbc:ID>246</cbc:ID>
</cac:SellersItemIdentification>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="IB">0721-880X</cbc:ItemClassificationCode>
</cac:CommodityClassification>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<cac:AdditionalItemProperty>
<cbc:Name>Property Name</cbc:Name>
<cbc:Value>Property value</cbc:Value>
</cac:AdditionalItemProperty>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">288.79</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
<cac:InvoiceLine>
<cbc:ID>Porto + Versandkosten</cbc:ID>
<cbc:InvoicedQuantity unitCode="XPP">1</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">26.07</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Porto + Versandkosten</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">26.07</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</ubl:Invoice>

View file

@ -0,0 +1,365 @@
<?xml version="1.0" encoding="UTF-8"?>
<ns0:CreditNote
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
xmlns:ns0="urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>1234567890</cbc:ID>
<cbc:IssueDate>2018-10-15</cbc:IssueDate>
<cbc:CreditNoteTypeCode>381</cbc:CreditNoteTypeCode>
<cbc:Note>Bemerkung zu der Rechnung gibt es nicht, da dies eine Testrechnung
ist.</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>99000000-01514-29</cbc:BuyerReference>
<cac:InvoicePeriod>
<cbc:StartDate>2018-10-01</cbc:StartDate>
<cbc:EndDate>2018-10-23</cbc:EndDate>
</cac:InvoicePeriod>
<cac:OrderReference>
<cbc:ID>2345678901</cbc:ID>
<cbc:SalesOrderID>Auftragsreferenz</cbc:SalesOrderID>
</cac:OrderReference>
<cac:BillingReference>
<cac:InvoiceDocumentReference>
<cbc:ID>PRG1502168</cbc:ID>
<cbc:IssueDate>2018-10-13</cbc:IssueDate>
</cac:InvoiceDocumentReference>
</cac:BillingReference>
<cac:ContractDocumentReference>
<cbc:ID>Vertragsreferenz</cbc:ID>
</cac:ContractDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>Dokument Referenz</cbc:ID>
<cbc:DocumentDescription>Beschreibung der angehängten JPG-Datei</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>Kennung des Objekts</cbc:ID>
<cbc:DocumentDescription>ATS</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<!-- BT-11 -->
<cac:AdditionalDocumentReference>
<cbc:ID>Projektreferenz</cbc:ID>
<cbc:DocumentTypeCode>50</cbc:DocumentTypeCode>
</cac:AdditionalDocumentReference>
<cac:OriginatorDocumentReference>
<cbc:ID>Vergabe-und Losreferenz</cbc:ID>
</cac:OriginatorDocumentReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">rechnungsausgang@test.com</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0013">Kennung des Verkäufers</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>EntServDE</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Straße Rechnungssteller 1</cbc:StreetName>
<cbc:AdditionalStreetName>Erweiterte Anschrift
Rechnungssteller</cbc:AdditionalStreetName>
<cbc:CityName>Ort Rechnungssteller</cbc:CityName>
<cbc:PostalZone>12345</cbc:PostalZone>
<cbc:CountrySubentity>Bundesland Rechnungssteller</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>DK</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>ATU13585627</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyTaxScheme>
<cbc:CompanyID>456</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>AAA</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>EntServ Deutschland GmbH</cbc:RegistrationName>
<cbc:CompanyID schemeID="0198">123456789</cbc:CompanyID>
<cbc:CompanyLegalForm>Weitere rechtliche
Informationen</cbc:CompanyLegalForm>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>EntServ Deutschland</cbc:Name>
<cbc:Telephone>0123 456789</cbc:Telephone>
<cbc:ElectronicMail>kontakt@Rechnungssteller.de</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">rechnungseingang@test.de</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0094">DPMA-678</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Abweichender Handelsname Rechnungsempfänger</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Straße Rechnungsempfänger 1</cbc:StreetName>
<cbc:AdditionalStreetName>Erweitere Adresse
Rechnungempfänger</cbc:AdditionalStreetName>
<cbc:CityName>Ort Rechnungsempfänger</cbc:CityName>
<cbc:PostalZone>67890</cbc:PostalZone>
<cbc:CountrySubentity>Bundesland
Rechnungsempfänger</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>CN</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>ATU13585627</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Deutsches Patent - und
Markenamt</cbc:RegistrationName>
<cbc:CompanyID schemeID="0094">90000000-03083-12</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Kontakt Rechnungsempfänger</cbc:Name>
<cbc:Telephone>0987 654321</cbc:Telephone>
<cbc:ElectronicMail>tina@tester.de</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PayeeParty>
<cac:PartyIdentification>
<cbc:ID schemeID="0118">AZE</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Abweichender Zahlungsempfänger</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:CompanyID schemeID="0198">AZE-123</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:PayeeParty>
<cac:Delivery>
<cbc:ActualDeliveryDate>2018-10-22</cbc:ActualDeliveryDate>
<cac:DeliveryLocation>
<cbc:ID schemeID="0088">AL</cbc:ID>
<cac:Address>
<cbc:StreetName>Anderer Leistungsempfänger Straße 1</cbc:StreetName>
<cbc:AdditionalStreetName>Anderer Leistungsempfänger erweiterte
Adresse</cbc:AdditionalStreetName>
<cbc:CityName>Anderer Leistungsempfänger Ort</cbc:CityName>
<cbc:PostalZone>45678</cbc:PostalZone>
<cbc:CountrySubentity>Anderer Leistungempfänger
Bundesland</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>BS</cbc:IdentificationCode>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
<cac:DeliveryParty>
<cac:PartyName>
<cbc:Name>Anderer Leistungsempfänger</cbc:Name>
</cac:PartyName>
</cac:DeliveryParty>
</cac:Delivery>
<cac:PaymentMeans>
<cbc:PaymentMeansCode name="Credit transfer">30</cbc:PaymentMeansCode>
<cbc:PaymentID>Verwendungszweck</cbc:PaymentID>
<cac:PayeeFinancialAccount>
<cbc:ID>DE84 6004 0071 0561 5158 01</cbc:ID>
<cbc:Name>EntServ Deutschland GmbH</cbc:Name>
<cac:FinancialInstitutionBranch>
<cbc:ID>XXX0561515801</cbc:ID>
</cac:FinancialInstitutionBranch>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:Note>Zahlungsbedingungen gibt es nicht, da dies eine Testrechnung
ist.</cbc:Note>
</cac:PaymentTerms>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für den Nachlass auf
Dokumentenebene</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>40.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">1000.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">2500.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für den Zuschlag auf
Dokumentenenbene</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>30.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">400.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">1333.33</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für Nachlass 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>80.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">1500.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">1875.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">510.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">400.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">10000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">700.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-1000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">-190.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-1500.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReason>Grund für die Befreiung</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">10000.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">7900.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">8410.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR"
>2500.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">400.00</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="EUR">500.00</cbc:PrepaidAmount>
<cbc:PayableRoundingAmount currencyID="EUR"
>210.00</cbc:PayableRoundingAmount>
<cbc:PayableAmount currencyID="EUR">8120.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:CreditNoteLine>
<cbc:ID>123</cbc:ID>
<cbc:CreditedQuantity unitCode="LTR">10.00</cbc:CreditedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">10000.00</cbc:LineExtensionAmount>
<cbc:AccountingCost>BRE</cbc:AccountingCost>
<cac:InvoicePeriod>
<cbc:StartDate>2018-10-05</cbc:StartDate>
<cbc:EndDate>2018-10-07</cbc:EndDate>
</cac:InvoicePeriod>
<cac:OrderLineReference>
<cbc:LineID>RPB</cbc:LineID>
</cac:OrderLineReference>
<cac:DocumentReference>
<cbc:ID schemeID="AAD">7362789</cbc:ID>
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
</cac:DocumentReference>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Nachlass 1</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">100.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">200.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Nachlass 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Zuschlag 1</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Zuschlag 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">100.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">200.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:Item>
<cbc:Description>Beschreibung Artikel</cbc:Description>
<cbc:Name>Bezeichung Artikel</cbc:Name>
<cac:BuyersItemIdentification>
<cbc:ID>BB</cbc:ID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>456</cbc:ID>
</cac:SellersItemIdentification>
<cac:StandardItemIdentification>
<cbc:ID schemeID="0088">1234567890128</cbc:ID>
</cac:StandardItemIdentification>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="ZZZ" listVersionID="1.0">12344321</cbc:ItemClassificationCode>
</cac:CommodityClassification>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<cac:AdditionalItemProperty>
<cbc:Name>Farbe</cbc:Name>
<cbc:Value>blau</cbc:Value>
</cac:AdditionalItemProperty>
<cac:AdditionalItemProperty>
<cbc:Name>Größe</cbc:Name>
<cbc:Value>XL</cbc:Value>
</cac:AdditionalItemProperty>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">1000</cbc:PriceAmount>
</cac:Price>
</cac:CreditNoteLine>
</ns0:CreditNote>

View file

@ -0,0 +1,368 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This is just a technical example it does not reflect any busines case and hence might not reflect anything real -->
<ns0:Invoice xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
xmlns:ns0="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>1234567890</cbc:ID>
<cbc:IssueDate>2018-10-15</cbc:IssueDate>
<cbc:DueDate>2018-10-29</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:Note>Bemerkung zu der Rechnung gibt es nicht, da dies eine Testrechnung
ist.</cbc:Note>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cbc:BuyerReference>99000000-01514-29</cbc:BuyerReference>
<cac:InvoicePeriod>
<cbc:StartDate>2018-10-01</cbc:StartDate>
<cbc:EndDate>2018-10-23</cbc:EndDate>
</cac:InvoicePeriod>
<cac:OrderReference>
<cbc:ID>2345678901</cbc:ID>
<cbc:SalesOrderID>Auftragsreferenz</cbc:SalesOrderID>
</cac:OrderReference>
<cac:BillingReference>
<cac:InvoiceDocumentReference>
<cbc:ID>PRG1502168</cbc:ID>
<cbc:IssueDate>2018-10-13</cbc:IssueDate>
</cac:InvoiceDocumentReference>
</cac:BillingReference>
<cac:OriginatorDocumentReference>
<cbc:ID>Vergabe-und Losreferenz</cbc:ID>
</cac:OriginatorDocumentReference>
<cac:ContractDocumentReference>
<cbc:ID>Vertragsreferenz</cbc:ID>
</cac:ContractDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>Dokument Referenz</cbc:ID>
<cbc:DocumentDescription>Beschreibung der angehängten JPG-Datei</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<cac:AdditionalDocumentReference>
<cbc:ID>Kennung des Objekts</cbc:ID>
<cbc:DocumentDescription>ATS</cbc:DocumentDescription>
</cac:AdditionalDocumentReference>
<!-- BT-11 -->
<cac:ProjectReference>
<cbc:ID>Projektreferenz</cbc:ID>
</cac:ProjectReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">rechnungsausgang@test.com</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0013">987654321</cbc:ID>
</cac:PartyIdentification>
<cac:PartyIdentification>
<cbc:ID schemeID="0013">987654320</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>EntServDE</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Straße Rechnungssteller 1</cbc:StreetName>
<cbc:AdditionalStreetName>Erweiterte Anschrift
Rechnungssteller</cbc:AdditionalStreetName>
<cbc:CityName>Ort Rechnungssteller</cbc:CityName>
<cbc:PostalZone>12345</cbc:PostalZone>
<cbc:CountrySubentity>Bundesland Rechnungssteller</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>DK</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>ATU13585627</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyTaxScheme>
<cbc:CompanyID>456</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>AAA</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>EntServ Deutschland GmbH</cbc:RegistrationName>
<cbc:CompanyID schemeID="0198">123456789</cbc:CompanyID>
<cbc:CompanyLegalForm>Weitere rechtliche
Informationen</cbc:CompanyLegalForm>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>EntServ Deutschland</cbc:Name>
<cbc:Telephone>0123 456789</cbc:Telephone>
<cbc:ElectronicMail>kontakt@Rechnungssteller.de</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="EM">rechnungseingang@test.de</cbc:EndpointID>
<cac:PartyIdentification>
<cbc:ID schemeID="0094">DPMA-678</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Abweichender Handelsname Rechnungsempfänger</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Straße Rechnungsempfänger 1</cbc:StreetName>
<cbc:AdditionalStreetName>Erweitere Adresse
Rechnungempfänger</cbc:AdditionalStreetName>
<cbc:CityName>Ort Rechnungsempfänger</cbc:CityName>
<cbc:PostalZone>67890</cbc:PostalZone>
<cbc:CountrySubentity>Bundesland
Rechnungsempfänger</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>CN</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>ATU13585627</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Deutsches Patent - und
Markenamt</cbc:RegistrationName>
<cbc:CompanyID schemeID="0094">90000000-03083-12</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Kontakt Rechnungsempfänger</cbc:Name>
<cbc:Telephone>0987 654321</cbc:Telephone>
<cbc:ElectronicMail>tina@tester.de</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:PayeeParty>
<cac:PartyIdentification>
<cbc:ID schemeID="0118">AZE</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Abweichender Zahlungsempfänger</cbc:Name>
</cac:PartyName>
<cac:PartyLegalEntity>
<cbc:CompanyID schemeID="0198">AZE-123</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:PayeeParty>
<cac:Delivery>
<cbc:ActualDeliveryDate>2018-10-22</cbc:ActualDeliveryDate>
<cac:DeliveryLocation>
<cbc:ID schemeID="0088">AL</cbc:ID>
<cac:Address>
<cbc:StreetName>Anderer Leistungsempfänger Straße 1</cbc:StreetName>
<cbc:AdditionalStreetName>Anderer Leistungsempfänger erweiterte
Adresse</cbc:AdditionalStreetName>
<cbc:CityName>Anderer Leistungsempfänger Ort</cbc:CityName>
<cbc:PostalZone>45678</cbc:PostalZone>
<cbc:CountrySubentity>Anderer Leistungempfänger
Bundesland</cbc:CountrySubentity>
<cac:Country>
<cbc:IdentificationCode>BS</cbc:IdentificationCode>
</cac:Country>
</cac:Address>
</cac:DeliveryLocation>
<cac:DeliveryParty>
<cac:PartyName>
<cbc:Name>Anderer Leistungsempfänger</cbc:Name>
</cac:PartyName>
</cac:DeliveryParty>
</cac:Delivery>
<cac:PaymentMeans>
<cbc:PaymentMeansCode name="Credit transfer">30</cbc:PaymentMeansCode>
<cbc:PaymentID>Verwendungszweck</cbc:PaymentID>
<cac:PayeeFinancialAccount>
<cbc:ID>DE84 6004 0071 0561 5158 01</cbc:ID>
<cbc:Name>EntServ Deutschland GmbH</cbc:Name>
<cac:FinancialInstitutionBranch>
<cbc:ID>XXX0561515801</cbc:ID>
</cac:FinancialInstitutionBranch>
</cac:PayeeFinancialAccount>
</cac:PaymentMeans>
<cac:PaymentTerms>
<cbc:Note>Zahlungsbedingungen gibt es nicht, da dies eine Testrechnung
ist.</cbc:Note>
</cac:PaymentTerms>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für den Nachlass auf
Dokumentenebene</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">1000.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">2000.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für den Zuschlag auf
Dokumentenenbene</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">400.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">4000.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund für Nachlass 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">1500.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">15000.00</cbc:BaseAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">510.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">400.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>Z</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">10000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">700.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-1000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">-190.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">-1500.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReason>Grund für die Befreiung</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">10000.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">7900.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">8410.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR">2500.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">400.00</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="EUR">500.00</cbc:PrepaidAmount>
<cbc:PayableRoundingAmount currencyID="EUR">210.00</cbc:PayableRoundingAmount>
<cbc:PayableAmount currencyID="EUR">8120.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>123</cbc:ID>
<cbc:InvoicedQuantity unitCode="LTR">10.00</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">10000.00</cbc:LineExtensionAmount>
<cbc:AccountingCost>BRE</cbc:AccountingCost>
<cac:InvoicePeriod>
<cbc:StartDate>2018-10-05</cbc:StartDate>
<cbc:EndDate>2018-10-07</cbc:EndDate>
</cac:InvoicePeriod>
<cac:OrderLineReference>
<cbc:LineID>RPB</cbc:LineID>
</cac:OrderLineReference>
<cac:DocumentReference>
<cbc:ID schemeID="AAD">7362789</cbc:ID>
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
</cac:DocumentReference>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Nachlass 1</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Nachlass 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">100.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">200.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Zuschlag 1</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>50.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">100.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">200.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Grund Zuschlag 2</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10.00</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<cac:Item>
<cbc:Description>Beschreibung Artikel</cbc:Description>
<cbc:Name>Bezeichung Artikel</cbc:Name>
<cac:BuyersItemIdentification>
<cbc:ID>BB</cbc:ID>
</cac:BuyersItemIdentification>
<cac:SellersItemIdentification>
<cbc:ID>456</cbc:ID>
</cac:SellersItemIdentification>
<cac:StandardItemIdentification>
<cbc:ID schemeID="0088">1234567890128</cbc:ID>
</cac:StandardItemIdentification>
<cac:CommodityClassification>
<cbc:ItemClassificationCode listID="ZZZ" listVersionID="1.0"
>12344321</cbc:ItemClassificationCode>
</cac:CommodityClassification>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<cac:AdditionalItemProperty>
<cbc:Name>Farbe</cbc:Name>
<cbc:Value>blau</cbc:Value>
</cac:AdditionalItemProperty>
<cac:AdditionalItemProperty>
<cbc:Name>Größe</cbc:Name>
<cbc:Value>XL</cbc:Value>
</cac:AdditionalItemProperty>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">1000</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</ns0:Invoice>

View file

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="UTF-8"?>
<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
<rsm:ExchangedDocumentContext>
<ram:BusinessProcessSpecifiedDocumentContextParameter>
<ram:ID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</ram:ID>
</ram:BusinessProcessSpecifiedDocumentContextParameter>
<ram:GuidelineSpecifiedDocumentContextParameter>
<ram:ID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</ram:ID>
</ram:GuidelineSpecifiedDocumentContextParameter>
</rsm:ExchangedDocumentContext>
<rsm:ExchangedDocument>
<ram:ID>123456XX</ram:ID>
<ram:TypeCode>380</ram:TypeCode>
<ram:IssueDateTime>
<udt:DateTimeString format="102">Dies ist kein Datum</udt:DateTimeString>
</ram:IssueDateTime>
<ram:IncludedNote>
<ram:Content>Es gelten unsere Allgem. Geschäftsbedingungen, die Sie unter […] finden.</ram:Content>
<ram:SubjectCode>ADU</ram:SubjectCode>
</ram:IncludedNote>
</rsm:ExchangedDocument>
<rsm:SupplyChainTradeTransaction>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>Zeitschrift [...]</ram:LineID>
<ram:IncludedNote>
<ram:Content>Die letzte Lieferung im Rahmen des abgerechneten Abonnements erfolgt in 12/2016 Lieferung erfolgt / erfolgte direkt vom Verlag</ram:Content>
</ram:IncludedNote>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:SellerAssignedID>246</ram:SellerAssignedID>
<ram:Name>Zeitschrift [...]</ram:Name>
<ram:Description>Zeitschrift Inland</ram:Description>
<ram:DesignatedProductClassification>
<ram:ClassCode listID="IB">0721-880X</ram:ClassCode>
</ram:DesignatedProductClassification>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:BuyerOrderReferencedDocument>
<ram:LineID>6171175.1</ram:LineID>
</ram:BuyerOrderReferencedDocument>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>288.79</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="XPP">1</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>7</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:BillingSpecifiedPeriod>
<ram:StartDateTime>
<udt:DateTimeString format="102">20160101</udt:DateTimeString>
</ram:StartDateTime>
<ram:EndDateTime>
<udt:DateTimeString format="102">20161231</udt:DateTimeString>
</ram:EndDateTime>
</ram:BillingSpecifiedPeriod>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>288.79</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>Porto + Versandkosten</ram:LineID>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:Name>Porto + Versandkosten</ram:Name>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>26.07</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="XPP">1</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>7</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>26.07</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:ApplicableHeaderTradeAgreement>
<ram:BuyerReference>04011000-12345-03</ram:BuyerReference>
<ram:SellerTradeParty>
<ram:Name>[Seller name]</ram:Name>
<ram:Description>123/456/7890, HRA-Eintrag in […]</ram:Description>
<ram:SpecifiedLegalOrganization>
<ram:ID>[HRA-Eintrag]</ram:ID>
<ram:TradingBusinessName>[Seller trading name]</ram:TradingBusinessName>
</ram:SpecifiedLegalOrganization>
<ram:DefinedTradeContact>
<ram:PersonName>nicht vorhanden</ram:PersonName>
<ram:TelephoneUniversalCommunication>
<ram:CompleteNumber>+49 1234-5678</ram:CompleteNumber>
</ram:TelephoneUniversalCommunication>
<ram:EmailURIUniversalCommunication>
<ram:URIID>seller@email.de</ram:URIID>
</ram:EmailURIUniversalCommunication>
</ram:DefinedTradeContact>
<ram:PostalTradeAddress>
<ram:PostcodeCode>12345</ram:PostcodeCode>
<ram:LineOne>[Seller address line 1]</ram:LineOne>
<ram:CityName>[Seller city]</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
<ram:URIUniversalCommunication>
<ram:URIID schemeID="EM">seller@seller.com</ram:URIID>
</ram:URIUniversalCommunication>
<ram:SpecifiedTaxRegistration>
<ram:ID schemeID="VA">DE 123456789</ram:ID>
</ram:SpecifiedTaxRegistration>
</ram:SellerTradeParty>
<ram:BuyerTradeParty>
<ram:ID>[Buyer identifier]</ram:ID>
<ram:Name>[Buyer name]</ram:Name>
<ram:PostalTradeAddress>
<ram:PostcodeCode>12345</ram:PostcodeCode>
<ram:LineOne>[Buyer address line 1]</ram:LineOne>
<ram:CityName>[Buyer city]</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
<ram:URIUniversalCommunication>
<ram:URIID schemeID="EM">buyer@buyer.com</ram:URIID>
</ram:URIUniversalCommunication>
</ram:BuyerTradeParty>
</ram:ApplicableHeaderTradeAgreement>
<ram:ApplicableHeaderTradeDelivery/>
<ram:ApplicableHeaderTradeSettlement>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
<ram:SpecifiedTradeSettlementPaymentMeans>
<ram:TypeCode>58</ram:TypeCode>
<ram:PayeePartyCreditorFinancialAccount>
<!-- dies ist eine nicht existerende aber valide IBAN als test dummy -->
<ram:IBANID>DE75512108001245126199</ram:IBANID>
</ram:PayeePartyCreditorFinancialAccount>
</ram:SpecifiedTradeSettlementPaymentMeans>
<ram:ApplicableTradeTax>
<ram:CalculatedAmount>22.04</ram:CalculatedAmount>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:BasisAmount>314.86</ram:BasisAmount>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>7</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradePaymentTerms>
<ram:Description>Zahlbar sofort ohne Abzug.</ram:Description>
</ram:SpecifiedTradePaymentTerms>
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:LineTotalAmount>314.86</ram:LineTotalAmount>
<ram:TaxBasisTotalAmount>314.86</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">22.04</ram:TaxTotalAmount>
<ram:GrandTotalAmount>336.9</ram:GrandTotalAmount>
<ram:DuePayableAmount>336.9</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
</ram:ApplicableHeaderTradeSettlement>
</rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>

View file

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="UTF-8"?>
<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
<rsm:ExchangedDocumentContext>
<ram:BusinessProcessSpecifiedDocumentContextParameter>
<ram:ID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</ram:ID>
</ram:BusinessProcessSpecifiedDocumentContextParameter>
<ram:GuidelineSpecifiedDocumentContextParameter>
<ram:ID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</ram:ID>
</ram:GuidelineSpecifiedDocumentContextParameter>
</rsm:ExchangedDocumentContext>
<rsm:ExchangedDocument>
<ram:ID>123456XX</ram:ID>
<ram:TypeCode>380</ram:TypeCode>
<ram:IssueDateTime>
<udt:DateTimeString format="102">00000000</udt:DateTimeString>
</ram:IssueDateTime>
<ram:IncludedNote>
<ram:Content>Es gelten unsere Allgem. Geschäftsbedingungen, die Sie unter […] finden.</ram:Content>
<ram:SubjectCode>ADU</ram:SubjectCode>
</ram:IncludedNote>
</rsm:ExchangedDocument>
<rsm:SupplyChainTradeTransaction>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>Zeitschrift [...]</ram:LineID>
<ram:IncludedNote>
<ram:Content>Die letzte Lieferung im Rahmen des abgerechneten Abonnements erfolgt in 12/2016 Lieferung erfolgt / erfolgte direkt vom Verlag</ram:Content>
</ram:IncludedNote>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:SellerAssignedID>246</ram:SellerAssignedID>
<ram:Name>Zeitschrift [...]</ram:Name>
<ram:Description>Zeitschrift Inland</ram:Description>
<ram:DesignatedProductClassification>
<ram:ClassCode listID="IB">0721-880X</ram:ClassCode>
</ram:DesignatedProductClassification>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:BuyerOrderReferencedDocument>
<ram:LineID>6171175.1</ram:LineID>
</ram:BuyerOrderReferencedDocument>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>288.79</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="XPP">1</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>7</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:BillingSpecifiedPeriod>
<ram:StartDateTime>
<udt:DateTimeString format="102">20160101</udt:DateTimeString>
</ram:StartDateTime>
<ram:EndDateTime>
<udt:DateTimeString format="102">20161231</udt:DateTimeString>
</ram:EndDateTime>
</ram:BillingSpecifiedPeriod>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>288.79</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>Porto + Versandkosten</ram:LineID>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:Name>Porto + Versandkosten</ram:Name>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>26.07</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="XPP">1</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>7</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>26.07</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:ApplicableHeaderTradeAgreement>
<ram:BuyerReference>04011000-12345-03</ram:BuyerReference>
<ram:SellerTradeParty>
<ram:Name>[Seller name]</ram:Name>
<ram:Description>123/456/7890, HRA-Eintrag in […]</ram:Description>
<ram:SpecifiedLegalOrganization>
<ram:ID>[HRA-Eintrag]</ram:ID>
<ram:TradingBusinessName>[Seller trading name]</ram:TradingBusinessName>
</ram:SpecifiedLegalOrganization>
<ram:DefinedTradeContact>
<ram:PersonName>nicht vorhanden</ram:PersonName>
<ram:TelephoneUniversalCommunication>
<ram:CompleteNumber>+49 1234-5678</ram:CompleteNumber>
</ram:TelephoneUniversalCommunication>
<ram:EmailURIUniversalCommunication>
<ram:URIID>seller@email.de</ram:URIID>
</ram:EmailURIUniversalCommunication>
</ram:DefinedTradeContact>
<ram:PostalTradeAddress>
<ram:PostcodeCode>12345</ram:PostcodeCode>
<ram:LineOne>[Seller address line 1]</ram:LineOne>
<ram:CityName>[Seller city]</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
<ram:URIUniversalCommunication>
<ram:URIID schemeID="EM">seller@seller.com</ram:URIID>
</ram:URIUniversalCommunication>
<ram:SpecifiedTaxRegistration>
<ram:ID schemeID="VA">DE 123456789</ram:ID>
</ram:SpecifiedTaxRegistration>
</ram:SellerTradeParty>
<ram:BuyerTradeParty>
<ram:ID>[Buyer identifier]</ram:ID>
<ram:Name>[Buyer name]</ram:Name>
<ram:PostalTradeAddress>
<ram:PostcodeCode>12345</ram:PostcodeCode>
<ram:LineOne>[Buyer address line 1]</ram:LineOne>
<ram:CityName>[Buyer city]</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
<ram:URIUniversalCommunication>
<ram:URIID schemeID="EM">buyer@buyer.com</ram:URIID>
</ram:URIUniversalCommunication>
</ram:BuyerTradeParty>
</ram:ApplicableHeaderTradeAgreement>
<ram:ApplicableHeaderTradeDelivery/>
<ram:ApplicableHeaderTradeSettlement>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
<ram:SpecifiedTradeSettlementPaymentMeans>
<ram:TypeCode>58</ram:TypeCode>
<ram:PayeePartyCreditorFinancialAccount>
<!-- dies ist eine nicht existerende aber valide IBAN als test dummy -->
<ram:IBANID>DE75512108001245126199</ram:IBANID>
</ram:PayeePartyCreditorFinancialAccount>
</ram:SpecifiedTradeSettlementPaymentMeans>
<ram:ApplicableTradeTax>
<ram:CalculatedAmount>22.04</ram:CalculatedAmount>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:BasisAmount>314.86</ram:BasisAmount>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>7</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradePaymentTerms>
<ram:Description>Zahlbar sofort ohne Abzug.</ram:Description>
</ram:SpecifiedTradePaymentTerms>
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:LineTotalAmount>314.86</ram:LineTotalAmount>
<ram:TaxBasisTotalAmount>314.86</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">22.04</ram:TaxTotalAmount>
<ram:GrandTotalAmount>336.9</ram:GrandTotalAmount>
<ram:DuePayableAmount>336.9</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
</ram:ApplicableHeaderTradeSettlement>
</rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>

File diff suppressed because it is too large Load diff

View file

@ -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;
}
});

2150
visualization/xsl/cii-xr.xsl Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl"
xmlns:xr="urn:ce.eu:en16931:2017:xoev-de:kosit:standard:xrechnung-1"
exclude-result-prefixes="xs" version="2.0">
<xsl:include href="functions.xsl"/>
<xsl:variable name="datepattern" as="xs:string" select="'^[0-9]{8}'" />
<xsl:template name="text">
<xsl:value-of select="." />
</xsl:template>
<xsl:template name="date">
<xsl:variable name="normalizeddate" select="normalize-space(replace(., '-', ''))" />
<xsl:variable name="datematch" as="xs:boolean"
select="matches($normalizeddate, $datepattern)" />
<xsl:variable name="year" as="xs:integer">
<xsl:variable name="yearstring" select="substring($normalizeddate, 1, 4)" />
<xsl:value-of select="
if (matches($yearstring, '^[0-9]{4}')
and xs:integer($yearstring) &gt; 0)
then
xs:integer($yearstring)
else
0
" />
</xsl:variable>
<xsl:variable name="month" as="xs:integer">
<xsl:variable name="monthstring" select="substring($normalizeddate, 5, 2)" />
<xsl:value-of select="
if (matches($monthstring, '^[0-9]{2}') and xs:integer($monthstring) &gt; 0 and xs:integer($monthstring) &lt; 13) then
xs:integer($monthstring)
else
0" />
</xsl:variable>
<xsl:variable name="day" as="xs:integer">
<xsl:variable name="daystring" select="substring($normalizeddate, 7, 2)" />
<xsl:value-of select="
if (matches($daystring, '^[0-9]{2}') and xs:integer($daystring) &gt; 0 and xs:integer($daystring) &lt; 32) then
xs:integer($daystring)
else
0" />
</xsl:variable>
<xsl:choose>
<xsl:when test="$year &gt; 0 and $month &gt; 0 and $day &gt; 0">
<xsl:value-of
select="xs:date(concat(format-number($year,'0000'), '-', format-number($month, '00'), '-', format-number($day, '00')))"
/>
</xsl:when>
<xsl:otherwise>ILLEGAL DATE FORMAT of "<xsl:value-of select="." />".</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="identifier">
<xsl:if test="@listID | @schemeID">
<xsl:attribute name="scheme_identifier" select="(@listID, @schemeID)[1]" />
</xsl:if>
<xsl:if test="@schemeVersionID | @listVersionID">
<xsl:attribute name="scheme_version_identifier"
select="(@listVersionID, @schemeVersionID)[1]" />
</xsl:if>
<xsl:value-of select="." />
</xsl:template>
<xsl:template name="identifier-with-scheme">
<xsl:param name="schemeID" as="element()?" />
<xsl:if test="@schemeID">
<xsl:attribute name="scheme_identifier" select="($schemeID, @listID, @schemeID)[1]" />
</xsl:if>
<xsl:value-of select="." />
</xsl:template>
<xsl:template name="code">
<xsl:value-of select="." />
</xsl:template>
<xsl:template name="amount">
<xsl:value-of select="." />
</xsl:template>
<xsl:template name="percentage">
<xsl:value-of select="." />
</xsl:template>
<xsl:template name="binary_object">
<xsl:if test="@mimeCode">
<xsl:attribute name="mime_code">
<xsl:value-of select="@mimeCode" />
</xsl:attribute>
</xsl:if>
<xsl:if test="@filename">
<xsl:attribute name="filename">
<xsl:value-of select="@filename" />
</xsl:attribute>
</xsl:if>
<xsl:value-of select="." />
</xsl:template>
<xsl:template name="unit_price_amount">
<xsl:value-of select="." />
</xsl:template>
<xsl:template name="quantity">
<xsl:value-of select="." />
</xsl:template>
<xsl:template name="document_reference">
<xsl:value-of select="." />
</xsl:template>
<xd:doc>
<xd:desc> Liefert einen XPath-Pfad, welches $n eindeutig identifiziert. </xd:desc>
<xd:param name="n" />
</xd:doc>
<xsl:function name="xr:src-path" as="xs:string">
<xsl:param name="n" as="node()" />
<xsl:variable name="segments" as="xs:string*">
<xsl:apply-templates select="$n" mode="xr:src-path" />
</xsl:variable>
<xsl:sequence select="string-join($segments, '')" />
</xsl:function>
<xd:doc>
<xd:desc> Liefert einen XPath-Pfad, welches $n eindeutig identifiziert. </xd:desc>
<xd:param name="n" />
</xd:doc>
<xsl:template match="node() | @*" mode="xr:src-path">
<xsl:for-each select="ancestor-or-self::*">
<xsl:text>/</xsl:text>
<xsl:value-of select="name(.)" />
<xsl:if
test="preceding-sibling::*[name(.) = name(current())] or following-sibling::*[name(.) = name(current())]">
<xsl:text>[</xsl:text>
<xsl:value-of select="count(preceding-sibling::*[name(.) = name(current())]) + 1" />
<xsl:text>]</xsl:text>
</xsl:if>
</xsl:for-each>
<xsl:if test="not(self::*)">
<xsl:text />/@<xsl:value-of select="name(.)" />
</xsl:if>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,151 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:math="http://www.w3.org/2005/xpath-functions/math"
xmlns:xrf="https://projekte.kosit.org/xrechnung/xrechnung-visualization/functions"
exclude-result-prefixes="xs math xrf"
version="2.0">
<!-- Language of output -->
<xsl:param name="lang" select="'de'"/>
<!-- Enable fallback lookup based on natural string in German -->
<xsl:param name="l10n-nl-lookup" select="false()"/>
<!-- Filename with language file -->
<xsl:variable name="l10n-filename" select="'l10n/' || $lang || '.xml'"/>
<!-- Master localization file is German, it is used when key uses natural text in German to lookup proper key -->
<xsl:variable name="l10n-master-filename" select="'l10n/de.xml'"/>
<!-- Variable holding contents of l10n file -->
<xsl:variable name="l10n-doc">
<xsl:choose>
<xsl:when test="doc-available($l10n-filename)">
<xsl:sequence select="doc($l10n-filename)"/>
</xsl:when>
<xsl:when test="doc-available($l10n-master-filename)">
<xsl:sequence select="doc($l10n-master-filename)"/>
<!--<xsl:message>Unable to find localization for {$lang}. Using default from de.xml.</xsl:message>-->
</xsl:when>
<xsl:otherwise>
<!--<xsl:message>Unable to find localization for {$lang}. Can't load default from de.xml. Using empty localization.</xsl:message>-->
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Variable holding contents of master l10n file -->
<xsl:variable name="l10n-master-doc">
<xsl:choose>
<xsl:when test="doc-available($l10n-master-filename)">
<xsl:sequence select="doc($l10n-master-filename)"/>
<!--<xsl:message>Unable to find localization for {$lang}. Using default from de.xml.</xsl:message>-->
</xsl:when>
<xsl:otherwise>
<!--<xsl:message>Unable to find localization for {$lang}. Can't load default from de.xml. Using empty localization.</xsl:message>-->
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Key for quicker lookups of localized strings -->
<xsl:key name="l10n" match="entry" use="@key"/>
<!-- Key for quicker lookups of key for string -->
<xsl:key name="l10n-key" match="entry" use="normalize-space(.)"/>
<!-- Function returning localized string -->
<xsl:function name="xrf:_" as="xs:string">
<xsl:param name="key" as="xs:string"/>
<xsl:variable name="localized" select="key('l10n', $key, $l10n-doc)"/>
<xsl:choose>
<xsl:when test="$localized">
<xsl:sequence select="string($localized)"/>
</xsl:when>
<xsl:when test="$l10n-nl-lookup">
<!-- Some transformations use natural text in German as translation keys -->
<xsl:variable name="key2" select="(key('l10n-key', $key, $l10n-master-doc)/@key)[1]"/>
<xsl:variable name="localized2" select="key('l10n', $key2, $l10n-doc)"/>
<xsl:choose>
<xsl:when test="$localized2">
<xsl:sequence select="string($localized2)"/>
</xsl:when>
<xsl:otherwise>
<xsl:sequence select="$key"/>
<!--<xsl:message>Unable to find localization for {$key}.</xsl:message>-->
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:sequence select="'???' || $key || '???'"/>
<!--<xsl:message>Unable to find localization for {$key}.</xsl:message>-->
</xsl:otherwise>
</xsl:choose>
</xsl:function>
<!-- Function returning ID of localized string.
ID is holding original BT/BG number from EU norm -->
<xsl:function name="xrf:get-id" as="xs:string">
<xsl:param name="key" as="xs:string"/>
<xsl:variable name="localized" select="key('l10n', $key, $l10n-doc)"/>
<xsl:choose>
<xsl:when test="$localized/@id">
<xsl:sequence select="$localized/@id"/>
</xsl:when>
<xsl:otherwise>
<xsl:sequence select="'???'"/>
<!--<xsl:message>Unable to find BT/BG id for {$key}.</xsl:message>-->
</xsl:otherwise>
</xsl:choose>
</xsl:function>
<!-- We are emulating older template for getting labels in order to maintain backward compatability -->
<xsl:template name="field-mapping">
<xsl:param name="identifier"/>
<label><xsl:value-of select="xrf:_($identifier)"/></label>
<nummer><xsl:value-of select="xrf:get-id($identifier)"/></nummer>
</xsl:template>
<xsl:function name="xrf:field-label" as="xs:string">
<xsl:param name="identifier"/>
<xsl:sequence select="xrf:_($identifier)"></xsl:sequence>
</xsl:function>
<xsl:variable name="amount-picture" select="xrf:_('amount-format')" />
<xsl:variable name="at-least-two-picture" select="xrf:_('at-least-two-format')" />
<xsl:function name="xrf:format-with-at-least-two-digits" as="xs:string">
<xsl:param name="input-number"/>
<xsl:param name="lang"/>
<xsl:choose>
<xsl:when test="string-length(substring-after(xs:string($input-number), '.'))>2">
<xsl:sequence select="format-number($input-number,$at-least-two-picture,$lang)"></xsl:sequence>
</xsl:when>
<xsl:otherwise>
<xsl:sequence select="format-number($input-number,$amount-picture,$lang)"></xsl:sequence>
</xsl:otherwise>
</xsl:choose>
</xsl:function>
<!-- auxiliary function to insert a line break in extension specification identifier -->
<xsl:function name="xrf:handle-specification-identifier" as="xs:string">
<xsl:param name="specification-identifier"/>
<xsl:choose>
<xsl:when test="matches($specification-identifier, 'xrechnung_[0-9]\.[0-9]#conformant')">
<xsl:value-of select="replace($specification-identifier, '(xrechnung_[0-9]\.[0-9])(#conformant)', '$1 $2')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$specification-identifier"/>
</xsl:otherwise>
</xsl:choose>
</xsl:function>
</xsl:stylesheet>

View file

@ -0,0 +1,259 @@
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<entry key="xr:Buyer_reference" id="BT-10">Käuferreferenz</entry>
<entry key="xr:Buyer_name" id="BT-44">Name</entry>
<entry key="xr:Buyer_address_line_1" id="BT-50">Adresszeile 1</entry>
<entry key="xr:Buyer_address_line_2" id="BT-51">Adresszeile 2</entry>
<entry key="xr:Buyer_address_line_3" id="BT-163">Adresszeile 3</entry>
<entry key="xr:Buyer_post_code" id="BT-53">PLZ</entry>
<entry key="xr:Buyer_city" id="BT-52">Ort</entry>
<entry key="xr:Buyer_country_code" id="BT-55">Ländercode</entry>
<entry key="xr:Buyer_identifier" id="BT-46">Kennung</entry>
<entry key="xr:Buyer_identifier/@scheme_identifier" id="BT-46_scheme">Schema der Kennung</entry>
<entry key="xr:Buyer_contact_point" id="BT-56">Name</entry>
<entry key="xr:Buyer_contact_telephone_number" id="BT-57">Telefon</entry>
<entry key="xr:Buyer_contact_email_address" id="BT-58">E-Mail-Adresse</entry>
<entry key="xr:Seller_name" id="BT-27">Firmenname</entry>
<entry key="xr:Seller_address_line_1" id="BT-35">Adresszeile 1</entry>
<entry key="xr:Seller_address_line_2" id="BT-36">Adresszeile 2</entry>
<entry key="xr:Seller_address_line_3" id="BT-162">Adresszeile 3</entry>
<entry key="xr:Seller_post_code" id="BT-38">PLZ</entry>
<entry key="xr:Seller_city" id="BT-37">Ort</entry>
<entry key="xr:Seller_country_subdivision" id="BT-39">Bundesland</entry>
<entry key="xr:Seller_country_code" id="BT-40">Ländercode</entry>
<entry key="xr:Seller_identifier" id="BT-29">Kennung</entry>
<entry key="xr:Seller_identifier/@scheme_identifier" id="BT-29_scheme">Schema der Kennung</entry>
<entry key="xr:Seller_contact_point" id="BT-41">Name</entry>
<entry key="xr:Seller_contact_telephone_number" id="BT-42">Telefon</entry>
<entry key="xr:Seller_contact_email_address" id="BT-43">E-Mail-Adresse</entry>
<entry key="xr:Invoice_number" id="BT-1">Rechnungsnummer</entry>
<entry key="xr:Invoice_issue_date" id="BT-2">Rechnungsdatum</entry>
<entry key="xr:Invoice_type_code" id="BT-3">Rechnungsart</entry>
<entry key="xr:Invoice_currency_code" id="BT-5">Währung</entry>
<entry key="xr:Project_reference" id="BT-11">Projektnummer</entry>
<entry key="xr:Contract_reference" id="BT-12">Vertragsnummer</entry>
<entry key="xr:Purchase_order_reference" id="BT-13">Bestellnummer</entry>
<entry key="xr:Sales_order_reference" id="BT-14">Auftragsnummer</entry>
<!-- Be aware that these are for the whole invoice -->
<entry key="xr:Invoicing_period_start_date" id="BT-73">Von</entry>
<entry key="xr:Invoicing_period_end_date" id="BT-74">Bis</entry>
<entry key="xr:Preceding_Invoice_reference" id="BT-25">Rechnungsnummer</entry>
<entry key="xr:Preceding_Invoice_issue_date" id="BT-26">Rechnungsdatum</entry>
<entry key="xr:Sum_of_Invoice_line_net_amount" id="BT-106">Summe aller Positionen</entry>
<entry key="xr:Sum_of_allowances_on_document_level" id="BT-107">Summe Nachlässe</entry>
<entry key="xr:Sum_of_charges_on_document_level" id="BT-108">Summe Zuschläge</entry>
<entry key="xr:Invoice_total_amount_without_VAT" id="BT-109">Gesamtsumme</entry>
<entry key="xr:Invoice_total_VAT_amount" id="BT-110">Summe Umsatzsteuer</entry>
<entry key="xr:Invoice_total_VAT_amount_in_accounting_currency" id="BT-111">Summe Umsatzsteuer in Abrechnungswährung</entry>
<entry key="xr:Invoice_total_amount_with_VAT" id="BT-112">Gesamtsumme</entry>
<entry key="xr:Paid_amount" id="BT-113">Gezahlter Betrag</entry>
<entry key="xr:Rounding_amount" id="BT-114">Rundungsbetrag</entry>
<entry key="xr:Amount_due_for_payment" id="BT-115">Fälliger Betrag</entry>
<entry key="xr:VAT_category_code" id="BT-118">Umsatzsteuerkategorie</entry>
<entry key="xr:VAT_category_taxable_amount" id="BT-116">Gesamtsumme</entry>
<entry key="xr:VAT_category_rate" id="BT-119">Umsatzsteuersatz</entry>
<entry key="xr:VAT_category_tax_amount" id="BT-117">Umsatzsteuerbetrag</entry>
<entry key="xr:VAT_exemption_reason_text" id="BT-120">Befreiungsgrund</entry>
<entry key="xr:VAT_exemption_reason_code" id="BT-121">Kennung für den Befreiungsgrund</entry>
<!-- Nachlaesse -->
<entry key="xr:Document_level_allowance_VAT_category_code" id="BT-95">Umsatzsteuerkategorie des
Nachlasses</entry>
<entry key="xr:Document_level_allowance_base_amount" id="BT-93">Grundbetrag</entry>
<entry key="xr:Document_level_allowance_percentage" id="BT-94">Prozentsatz</entry>
<entry key="xr:Document_level_allowance_amount" id="BT-92">Nachlass</entry>
<entry key="xr:Document_level_allowance_VAT_rate" id="BT-96">Umsatzsteuersatz des
Nachlasses</entry>
<entry key="xr:Document_level_allowance_reason" id="BT-97">Grund für den Nachlass</entry>
<entry key="xr:Document_level_allowance_reason_code" id="BT-98">Kennung für den Nachlassgrund</entry>
<!-- Zuschlaege -->
<entry key="xr:Document_level_charge_VAT_category_code" id="BT-102">Umsatzsteuerkategorie des
Zuschlages</entry>
<entry key="xr:Document_level_charge_base_amount" id="BT-100">Grundbetrag</entry>
<entry key="xr:Document_level_charge_percentage" id="BT-101">Prozentsatz</entry>
<entry key="xr:Document_level_charge_amount" id="BT-99">Zuschlag</entry>
<entry key="xr:Document_level_charge_VAT_rate" id="BT-103">Umsatzsteuersatz des Zuschlages</entry>
<entry key="xr:Document_level_charge_reason" id="BT-104">Grund für den Zuschlag</entry>
<entry key="xr:Document_level_charge_reason_code" id="BT-105">Kennung für den Zuschlagsgrund</entry>
<entry key="xr:Payment_terms" id="BT-20">Skonto; weitere Zahlungsbedingungen</entry>
<entry key="xr:Payment_due_date" id="BT-9">Fälligkeitsdatum</entry>
<entry key="xr:Payment_means_type_code" id="BT-81">Code für das Zahlungsmittel</entry>
<entry key="xr:Payment_means_text" id="BT-82">Zahlungsmittel</entry>
<entry key="xr:Remittance_information" id="BT-83">Verwendungszweck</entry>
<entry key="xr:Payment_card_primary_account_number" id="BT-87">Kartennummer</entry>
<entry key="xr:Payment_card_holder_name" id="BT-88">Karteninhaber</entry>
<!-- BG-19 Direct Debit -->
<entry key="xr:Mandate_reference_identifier" id="BT-89">Mandatsreferenznr.</entry>
<entry key="xr:Debited_account_identifier" id="BT-91">IBAN</entry>
<entry key="xr:Bank_assigned_creditor_identifier" id="BT-90">Gläubiger-ID</entry>
<!-- BG-17 Credit Transfer-->
<entry key="xr:Payment_account_name" id="BT-85">Kontoinhaber</entry>
<entry key="xr:Payment_account_identifier" id="BT-84">IBAN</entry>
<entry key="xr:Payment_service_provider_identifier" id="BT-86">BIC</entry>
<entry key="xr:Invoice_note_subject_code" id="BT-21">Betreff</entry>
<entry key="xr:Invoice_note" id="BT-22">Bemerkung</entry>
<!-- BG-4 Seller and others -->
<entry key="xr:Seller_trading_name" id="BT-28">Abweichender Handelsname</entry>
<entry key="xr:Seller_electronic_address" id="BT-34">Elektronische Adresse</entry>
<entry key="xr:Seller_electronic_address/@scheme_identifier" id="BT-34_scheme">Schema der elektronischen Adresse</entry>
<entry key="xr:Seller_legal_registration_identifier" id="BT-30">Register-/Registriernummer</entry>
<entry key="xr:Seller_legal_registration_identifier/@scheme_identifier" id="BT-30_scheme">Schema der Registernummer</entry>
<entry key="xr:Seller_VAT_identifier" id="BT-31">Umsatzsteuer-ID</entry>
<entry key="xr:Seller_tax_registration_identifier" id="BT-32">Steuernummer</entry>
<entry key="xr:Seller_additional_legal_information" id="BT-33">Weitere rechtliche Informationen</entry>
<entry key="xr:VAT_accounting_currency_code" id="BT-6">Code der Umsatzsteuerwährung</entry>
<!-- BG 12 and 11 Tax Representative party -->
<entry key="xr:Seller_tax_representative_name" id="BT-62">Name</entry>
<entry key="xr:Tax_representative_address_line_1" id="BT-64">Adresszeile 1</entry>
<entry key="xr:Tax_representative_address_line_2" id="BT-65">Adresszeile 2</entry>
<entry key="xr:Tax_representative_address_line_3" id="BT-164">Adresszeile 3</entry>
<entry key="xr:Tax_representative_post_code" id="BT-67">PLZ</entry>
<entry key="xr:Tax_representative_city" id="BT-66">Ort</entry>
<entry key="xr:Tax_representative_country_subdivision" id="BT-68">Bundesland</entry>
<entry key="xr:Tax_representative_country_code" id="BT-69">Ländercode</entry>
<entry key="xr:Seller_tax_representative_VAT_identifier" id="BT-63">Umsatzsteuer-ID</entry>
<!-- Additional buyer information from different bgs -->
<entry key="xr:Buyer_trading_name" id="BT-45">Abweichender Handelsname</entry>
<entry key="xr:Buyer_country_subdivision" id="BT-54">Bundesland</entry>
<entry key="xr:Buyer_electronic_address" id="BT-49">Elektronische Adresse</entry>
<entry key="xr:Buyer_electronic_address/@scheme_identifier" id="BT-49_scheme">Schema der elektronischen Adresse</entry>
<entry key="xr:Buyer_legal_registration_identifier" id="BT-47">Register-/Registriernummer</entry>
<entry key="xr:Buyer_legal_registration_identifier/@scheme_identifier" id="BT-47_scheme">Schema der Register-/Registriernummer</entry>
<entry key="xr:Buyer_VAT_identifier" id="BT-48">Umsatzsteuer-ID</entry>
<entry key="xr:Value_added_tax_point_date" id="BT-7">Abrechnungsdatum der Umsatzsteuer</entry>
<entry key="xr:Value_added_tax_point_date_code" id="BT-8">Code des Umsatzsteuer-Abrechnungsdatums</entry>
<entry key="xr:Buyer_accounting_reference" id="BT-19">Kontierungsinformation</entry>
<entry key="xr:Deliver_to_location_identifier" id="BT-71">Kennung des Lieferorts</entry>
<entry key="xr:Deliver_to_location_identifier/@scheme_identifier" id="BT-71_scheme">Schema der Kennung</entry>
<entry key="xr:Actual_delivery_date" id="BT-72">Lieferdatum</entry>
<entry key="xr:Deliver_to_party_name" id="BT-70">Name des Empfängers</entry>
<entry key="xr:Deliver_to_address_line_1" id="BT-75">Adresszeile 1</entry>
<entry key="xr:Deliver_to_address_line_2" id="BT-76">Adresszeile 2</entry>
<entry key="xr:Deliver_to_address_line_3" id="BT-165">Adresszeile 3</entry>
<entry key="xr:Deliver_to_post_code" id="BT-78">PLZ</entry>
<entry key="xr:Deliver_to_city" id="BT-77">Ort</entry>
<entry key="xr:Deliver_to_country_subdivision" id="BT-79">Bundesland</entry>
<entry key="xr:Deliver_to_country_code" id="BT-80">Ländercode</entry>
<entry key="xr:Tender_or_lot_reference" id="BT-17">Vergabenummer</entry>
<entry key="xr:Receiving_advice_reference" id="BT-15">Kennung der Empfangsbestätigung</entry>
<entry key="xr:Despatch_advice_reference" id="BT-16">Kennung der Versandanzeige</entry>
<entry key="xr:Business_process_type_identifier" id="BT-23">Prozesskennung</entry>
<entry key="xr:Specification_identifier" id="BT-24">Spezifikationskennung</entry>
<entry key="xr:Invoiced_object_identifier" id="BT-18">Objektkennung</entry>
<entry key="xr:Invoiced_object_identifier/@scheme_identifier" id="BT-18_scheme">Schema der Objektkennung</entry>
<!-- BG 10 -->
<entry key="xr:Payee_name" id="BT-59">Name</entry>
<entry key="xr:Payee_identifier" id="BT-60">Kennung</entry>
<entry key="xr:Payee_identifier/@scheme_identifier" id="BT-60_scheme">Schema der Kennung</entry>
<entry key="xr:Payee_legal_registration_identifier" id="BT-61">Register-/Registriernummer</entry>
<entry key="xr:Payee_legal_registration_identifier/@scheme_identifier" id="BT-61_scheme">Schema der Register-/Registriernummer</entry>
<!-- BG 24 Additonal supporting Documents -->
<entry key="xr:Supporting_document_reference" id="BT-122">Kennung</entry>
<entry key="xr:Supporting_document_description" id="BT-123">Beschreibung</entry>
<entry key="xr:External_document_location" id="BT-124">Verweis (z.B. Internetadresse)</entry>
<entry key="xr:Attached_document" id="BT-125">Anhangsdokument</entry>
<entry key="xr:Attached_document/@mime_code" id="BT-125_mime_code">Format des Anhangdokuments</entry>
<entry key="xr:Attached_document/@filename" id="BT-125_filename">Name des Anhangsdokuments</entry>
<entry key="xrv:zeitstempel">Datum/Uhrzeit</entry>
<entry key="xrv:betreff">Betreff</entry>
<entry key="xrv:text">Text</entry>
<entry key="xrv:details">Details</entry>
<entry key="xr:Invoice_line_identifier" id="BT-126">Position</entry>
<entry key="xr:Invoice_line_note" id="BT-127">Freitext</entry>
<entry key="xr:Invoice_line_object_identifier" id="BT-128_identifier">Objektkennung</entry>
<entry key="xr:Invoice_line_object_identifier/@scheme_identifier" id="BT-128_scheme">Schema der Objektkennung</entry>
<entry key="xr:Referenced_purchase_order_line_reference" id="BT-132">Nummer der Auftragsposition</entry>
<entry key="xr:Invoice_line_Buyer_accounting_reference" id="BT-133">Kontierungshinweis</entry>
<entry key="xr:Invoice_line_period_start_date" id="BT-134">Von</entry>
<entry key="xr:Invoice_line_period_end_date" id="BT-135">Bis</entry>
<entry key="xr:Invoiced_quantity" id="BT-129">Menge</entry>
<entry key="xr:Invoiced_quantity_unit_of_measure_code" id="BT-130">Einheit</entry>
<entry key="xr:Item_net_price" id="BT-146">Preis pro Einheit (netto)</entry>
<entry key="xr:Invoice_line_net_amount" id="BT-131">Gesamtpreis (netto)</entry>
<entry key="xr:Item_price_discount" id="BT-147">Rabatt (netto)</entry>
<entry key="xr:Item_gross_price" id="BT-148">Listenpreis (netto)</entry>
<entry key="xr:Item_price_base_quantity" id="BT-149">Basismenge zum Artikelpreis</entry>
<entry key="xr:Item_price_base_quantity_unit_of_measure" id="BT-150">Code der Maßeinheit</entry>
<entry key="xr:Invoiced_item_VAT_category_code" id="BT-151">Umsatzsteuer</entry>
<entry key="xr:Invoiced_item_VAT_rate" id="BT-152">Umsatzsteuersatz</entry>
<entry key="xr:Item_name" id="BT-153">Bezeichnung</entry>
<entry key="xr:Item_description" id="BT-154">Beschreibung</entry>
<entry key="xr:Item_Sellers_identifier" id="BT-155">Artikelnummer</entry>
<entry key="xr:Item_Buyers_identifier" id="BT-156">Artikelkennung des Käufers</entry>
<entry key="xr:Item_standard_identifier" id="BT-157">Artikelkennung</entry>
<entry key="xr:Item_standard_identifier/@scheme_identifier" class="BT-157_scheme">Schema der Artikelkennung</entry>
<entry key="xr:Item_classification_identifier" id="BT-158">Code der Artikelklassifizierung</entry>
<entry key="xr:Item_classification_identifier/@scheme_identifier" id="BT-158_scheme">Kennung zur Bildung des Schemas</entry>
<entry key="xr:Item_classification_identifier/@scheme_version_identifier" id="BT-158_scheme_version">Version zur Bildung des Schemas</entry>
<entry key="xr:Item_country_of_origin" id="BT-159">Code des Herkunftslandes</entry>
<entry key="xr:Invoice_line_allowance_base_amount" id="BT-137">Grundbetrag (netto)</entry>
<entry key="xr:Invoice_line_allowance_percentage" id="BT-138">Prozentsatz</entry>
<entry key="xr:Invoice_line_allowance_amount" id="BT-136">Nachlass (netto)</entry>
<entry key="xr:Invoice_line_allowance_reason" id="BT-139">Grund des Nachlasses</entry>
<entry key="xr:Invoice_line_allowance_reason_code" id="BT-140">Code für den Nachlassgrund</entry>
<entry key="xr:Invoice_line_charge_base_amount" id="BT-142">Grundbetrag (netto)</entry>
<entry key="xr:Invoice_line_charge_percentage" id="BT-143">Prozentsatz</entry>
<entry key="xr:Invoice_line_charge_amount" id="BT-141">Zuschlag (netto)</entry>
<entry key="xr:Invoice_line_charge_reason" id="BT-144">Grund des Zuschlags</entry>
<entry key="xr:Invoice_line_charge_reason_code" id="BT-145">Code für den Zuschlagsgrund</entry>
<entry key="xr:Third_party_payment_type" id="BT-DEX-001">Art der Fremdforderung</entry>
<entry key="xr:Third_party_payment_amount" id="BT-DEX-002">Betrag der Fremdforderung</entry>
<entry key="xr:Third_party_payment_description" id="BT-DEX-003">Beschreibung der Fremdforderung</entry>
<entry key="uebersicht">Übersicht</entry>
<entry key="uebersichtKaeufer" id="BG-7">Informationen zum Käufer</entry>
<entry key="uebersichtVerkaeufer" id="BG-4">Informationen zum Verkäufer</entry>
<entry key="uebersichtRechnungsInfo" id="invoice-data">Rechnungsdaten</entry>
<entry key="uebersichtRechnungsuebersicht" id="BG-22">Gesamtbeträge der Rechnung</entry>
<entry key="uebersichtFremdleistungen" id="BG-DEX-09">Fremdforderung</entry>
<entry key="uebersichtUmsatzsteuer" id="BG-23">Aufschlüsselung der Umsatzsteuer auf Ebene der Rechnung</entry>
<entry key="uebersichtNachlass" id="BG-20">Nachlass auf Ebene der Rechnung</entry>
<entry key="uebersichtZuschlaege" id="BG-21">Zuschlag auf Ebene der Rechnung</entry>
<entry key="uebersichtRechnungAbrechnungszeitraum">Abrechnungszeitraum</entry>
<entry key="uebersichtRechnungVorausgegangeneRechnungen" id="BG-3">Vorausgegangene Rechnungen</entry>
<entry key="uebersichtZahlungInfo" id="BG-4">Zahlungsdaten</entry>
<entry key="uebersichtZahlungKarte" id="BG-18">Karteninformation</entry>
<entry key="uebersichtZahlungLastschrift" id="BG-19">Lastschrift</entry>
<entry key="uebersichtZahlungUeberweisung" id="BG-17">Überweisung</entry>
<entry key="uebersichtBemerkungen" id="BG-1">Bemerkungen zur Rechnung</entry>
<entry key="details">Details</entry>
<entry key="detailsPositionAbrechnungszeitraum" id="BG-26">Abrechnungszeitraum</entry>
<entry key="detailsPositionPreiseinzelheiten" id="BG-29">Preiseinzelheiten</entry>
<entry key="detailsPositionNachlaesse" id="BG-27">Nachlässe auf Ebene der Rechnungsposition</entry>
<entry key="detailsPositionZuschlaege" id="BG-28">Zuschläge auf Ebene der Rechnungsposition</entry>
<entry key="detailsPositionArtikelinformationen" id="BG-31">Artikelinformationen</entry>
<entry key="detailsPositionArtikeleigenschaften" id="BG-32">Eigenschaften des Artikels</entry>
<entry key="zusaetze">Zusätze</entry>
<entry key="zusaetzeVerkaeufer" id="BG-4">Informationen zum Verkäufer</entry>
<entry key="zusaetzeSteuervertreter" id="BG-11">Steuervertreter des Verkäufers</entry>
<entry key="zusaetzeKaeufer" id="BG-7">Informationen zum Käufer</entry>
<entry key="zusaetzeLieferung" id="BG-13">Lieferinformationen</entry>
<entry key="zusaetzeVertrag">Informationen zum Vertrag</entry>
<entry key="zusaetzeZahlungsempfaenger" id="BG-10">Vom Verkäufer abweichender Zahlungsempfänger</entry>
<entry key="laufzettel">Laufzettel</entry>
<entry key="laufzettelHistorie">Bearbeitungshistorie</entry>
<entry key="anlagen">Anlagen</entry>
<entry key="anlagenListe">Rechnungsbegründende Unterlagen</entry>
<entry key="artikelklassifizierung">Artikelklassifizierung</entry>
<entry key="date-format">[D].[M].[Y,4]</entry>
<entry key="datetime-format">[D].[M].[Y,4] [H]:[m]:[s]</entry>
<entry key="amount-format">###.##0,00</entry>
<entry key="percentage-format">##0,00</entry>
<entry key="at-least-two-format">###.##0,#################</entry>
<entry key="sum-of-third-party-payment-amounts">Summe Fremdforderungen</entry>
<entry key="no-script">Inhalte auf dieser Seite sind ohne JavaScript nur eingeschränkt darstellbar.</entry>
<entry key="_disclaimer">Wir übernehmen keine Haftung für die Richtigkeit der Daten.</entry>
<entry key="_invoice-note-group">Bemerkungen zur Rechnung</entry>
<entry key="_open">Öffnen</entry>
<entry key="no-data">Keine Daten vorhanden</entry>
<entry key="_net">netto</entry>
<entry key="_gross">brutto</entry>
<entry key="_no-content">Bereiche ohne Inhalte werden nicht dargestellt!</entry>
<entry key="_description">Beschreibung</entry>
<entry key="_price">Preis</entry>
<entry key="_price-unit">Preiseinheit</entry>
<entry key="_vat">USt. Satz</entry>
<entry key="_tax-code">St. Code</entry>
<entry key="_total">Gesamt</entry>
<entry key="_page">Seite</entry>
</properties>

View file

@ -0,0 +1,257 @@
<?xml version = "1.0" encoding = "UTF-8"?>
<properties>
<entry key="xr:Buyer_reference" id="BT-10">Buyer reference</entry>
<entry key="xr:Buyer_name" id="BT-44">Name</entry>
<entry key="xr:Buyer_address_line_1" id="BT-50">Address line 1</entry>
<entry key="xr:Buyer_address_line_2" id="BT-51">Address line 2</entry>
<entry key="xr:Buyer_address_line_3" id="BT-163">Address line 3</entry>
<entry key="xr:Buyer_post_code" id="BT-53">ZIP</entry>
<entry key="xr:Buyer_city" id="BT-52">Location</entry>
<entry key="xr:Buyer_country_code" id="BT-55">Country code</entry>
<entry key="xr:Buyer_identifier" id="BT-46">Identifier</entry>
<entry key="xr:Buyer_identifier/@scheme_identifier" id="BT-46_scheme">Scheme identifier</entry>
<entry key="xr:Buyer_contact_point" id="BT-56">Contact point</entry>
<entry key="xr:Buyer_contact_telephone_number" id="BT-57">Contact point phone</entry>
<entry key="xr:Buyer_contact_email_address" id="BT-58">Contact point email</entry>
<entry key="xr:Seller_name" id="BT-27">Company name</entry>
<entry key="xr:Seller_address_line_1" id="BT-35">Address line 1</entry>
<entry key="xr:Seller_address_line_2" id="BT-36">Address line 2</entry>
<entry key="xr:Seller_address_line_3">Address line 3</entry>
<entry key="xr:Seller_post_code" id="BT-38">ZIP</entry>
<entry key="xr:Seller_city" id="BT-37">Location</entry>
<entry key="xr:Seller_country_subdivision" id="BT-39">State</entry>
<entry key="xr:Seller_country_code" id="BT-40">Country code</entry>
<entry key="xr:Seller_identifier" id="BT-29">Identifier</entry>
<entry key="xr:Seller_identifier/@scheme_identifier" id="BT-29_scheme">Scheme identifier</entry>
<entry key="xr:Seller_contact_point" id="BT-41">Contact point</entry>
<entry key="xr:Seller_contact_telephone_number" id="BT-42">Contact point phone</entry>
<entry key="xr:Seller_contact_email_address" id="BT-43">Contact point email</entry>
<entry key="xr:Invoice_number" id="BT-1">Invoice number</entry>
<entry key="xr:Invoice_issue_date" id="BT-2">Invoice date</entry>
<entry key="xr:Invoice_type_code" id="BT-3">Invoice type</entry>
<entry key="xr:Invoice_currency_code" id="BT-5">Currency</entry>
<entry key="xr:Project_reference" id="BT-11">Project reference</entry>
<entry key="xr:Contract_reference" id="BT-12">Contract reference</entry>
<entry key="xr:Purchase_order_reference" id="BT-13">Purchase order reference</entry>
<entry key="xr:Sales_order_reference" id="BT-14">Sales order reference</entry>
<!-- Be aware that these are for the whole invoice -->
<entry key="xr:Invoicing_period_start_date" id="BT-73">From</entry>
<entry key="xr:Invoicing_period_end_date" id="BT-74">To</entry>
<entry key="xr:Preceding_Invoice_reference" id="BT-25">Invoice number</entry>
<entry key="xr:Preceding_Invoice_issue_date" id="BT-26">Invoice date</entry>
<entry key="xr:Sum_of_Invoice_line_net_amount" id="BT-106">Total invoice line net amount</entry>
<entry key="xr:Sum_of_allowances_on_document_level" id="BT-107">Total allowances</entry>
<entry key="xr:Sum_of_charges_on_document_level" id="BT-108">Total charges</entry>
<entry key="xr:Invoice_total_amount_without_VAT" id="BT-109">Total amount</entry>
<entry key="xr:Invoice_total_VAT_amount" id="BT-110">Total VAT</entry>
<entry key="xr:Invoice_total_VAT_amount_in_accounting_currency" id="BT-111">Total VAT in accounting currency</entry>
<entry key="xr:Invoice_total_amount_with_VAT" id="BT-112">Total</entry>
<entry key="xr:Paid_amount" id="BT-113">Already paid</entry>
<entry key="xr:Rounding_amount" id="BT-114">Rounding amount</entry>
<entry key="xr:Amount_due_for_payment" id="BT-115">Amount due</entry>
<entry key="xr:VAT_category_code" id="BT-118">VAT category</entry>
<entry key="xr:VAT_category_taxable_amount" id="BT-116">Total</entry>
<entry key="xr:VAT_category_rate" id="BT-119">VAT rate</entry>
<entry key="xr:VAT_category_tax_amount" id="BT-117">VAT amount</entry>
<entry key="xr:VAT_exemption_reason_text" id="BT-120">Exemption reason</entry>
<entry key="xr:VAT_exemption_reason_code" id="BT-121">Exemption reason code</entry>
<!-- Allowances -->
<entry key="xr:Document_level_allowance_VAT_category_code" id="BT-95">Allowance VAT category code</entry>
<entry key="xr:Document_level_allowance_base_amount" id="BT-93">Base amount</entry>
<entry key="xr:Document_level_allowance_percentage" id="BT-94">Percentage</entry>
<entry key="xr:Document_level_allowance_amount" id="BT-92">Amount</entry>
<entry key="xr:Document_level_allowance_VAT_rate" id="BT-96">Allowance VAT rate</entry>
<entry key="xr:Document_level_allowance_reason" id="BT-97">Allowance reason</entry>
<entry key="xr:Document_level_allowance_reason_code" id="BT-98">Allowance reason code</entry>
<!-- Charges -->
<entry key="xr:Document_level_charge_VAT_category_code" id="BT-102">Charge VAT category code</entry>
<entry key="xr:Document_level_charge_base_amount" id="BT-100">Base amount</entry>
<entry key="xr:Document_level_charge_percentage" id="BT-101">Percentage</entry>
<entry key="xr:Document_level_charge_amount" id="BT-99">Amount</entry>
<entry key="xr:Document_level_charge_VAT_rate" id="BT-103">VAT rate</entry>
<entry key="xr:Document_level_charge_reason" id="BT-104">Charge Reason</entry>
<entry key="xr:Document_level_charge_reason_code" id="BT-105">Charge reason code</entry>
<entry key="xr:Payment_terms" id="BT-20">Payment terms</entry>
<entry key="xr:Payment_due_date" id="BT-9">Due date</entry>
<entry key="xr:Payment_means_type_code" id="BT-81">Payment means type code</entry>
<entry key="xr:Payment_means_text" id="BT-82">Payment means</entry>
<entry key="xr:Remittance_information" id="BT-83">Remittance information</entry>
<entry key="xr:Payment_card_primary_account_number" id="BT-87">Card number</entry>
<entry key="xr:Payment_card_holder_name" id="BT-88">Card holder</entry>
<!-- BG-19 Direct Debit -->
<entry key="xr:Mandate_reference_identifier" id="BT-89">Mandate reference no.</entry>
<entry key="xr:Debited_account_identifier" id="BT-91">Debited account identifier</entry>
<entry key="xr:Bank_assigned_creditor_identifier" id="BT-90">Creditor ID</entry>
<!-- BG-17 Credit Transfer-->
<entry key="xr:Payment_account_name" id="BT-85">Account holder</entry>
<entry key="xr:Payment_account_identifier" id="BT-84">Account identifier</entry>
<entry key="xr:Payment_service_provider_identifier" id="BT-86">BIC</entry>
<entry key="xr:Invoice_note_subject_code" id="BT-21">Subject code</entry>
<entry key="xr:Invoice_note" id="BT-22">Note</entry>
<!-- BG-4 Seller and others -->
<entry key="xr:Seller_trading_name" id="BT-28">Different trading name</entry>
<entry key="xr:Seller_electronic_address" id="BT-34">Electronic address</entry>
<entry key="xr:Seller_electronic_address/@scheme_identifier" id="BT-34_scheme">Electronic address
scheme</entry>
<entry key="xr:Seller_legal_registration_identifier" id="BT-30">Legal registration identifier</entry>
<entry key="xr:Seller_legal_registration_identifier/@scheme_identifier" id="BT-30_scheme">Legal registration identifier scheme</entry>
<entry key="xr:Seller_VAT_identifier" id="BT-31">VAT ID</entry>
<entry key="xr:Seller_tax_registration_identifier" id="BT-32">Tax number</entry>
<entry key="xr:Seller_additional_legal_information" id="BT-33">Further legal information</entry>
<entry key="xr:VAT_accounting_currency_code" id="BT-6">VAT accounting currency</entry>
<!-- BG 12 and 11 Tax Representative party -->
<entry key="xr:Seller_tax_representative_name" id="BT-62">Name</entry>
<entry key="xr:Tax_representative_address_line_1" id="BT-64">Address line 1</entry>
<entry key="xr:Tax_representative_address_line_2" id="BT-65">Address line 2</entry>
<entry key="xr:Tax_representative_address_line_3" id="BT-164">Address line 3</entry>
<entry key="xr:Tax_representative_post_code" id="BT-67">ZIP</entry>
<entry key="xr:Tax_representative_city" id="BT-66">Location</entry>
<entry key="xr:Tax_representative_country_subdivision" id="BT-68">State</entry>
<entry key="xr:Tax_representative_country_code" id="BT-69">Country code</entry>
<entry key="xr:Seller_tax_representative_VAT_identifier" id="BT-63">VAT ID</entry>
<!-- Additional buyer information from different bgs -->
<entry key="xr:Buyer_trading_name" id="BT-45">Different trading name</entry>
<entry key="xr:Buyer_country_subdivision" id="BT-54">State</entry>
<entry key="xr:Buyer_electronic_address" id="BT-49">Electronic address</entry>
<entry key="xr:Buyer_electronic_address/@scheme_identifier" id="BT-49_scheme">Electronic address scheme</entry>
<entry key="xr:Buyer_legal_registration_identifier" id="BT-47">Legal registration identifier</entry>
<entry key="xr:Buyer_legal_registration_identifier/@scheme_identifier" id="BT-47_scheme">Legal registration identifier scheme</entry>
<entry key="xr:Buyer_VAT_identifier" id="BT-48">VAT ID</entry>
<entry key="xr:Value_added_tax_point_date" id="BT-7">Value added tax point date</entry>
<entry key="xr:Value_added_tax_point_date_code" id="BT-8">Value added tax point date code</entry>
<entry key="xr:Buyer_accounting_reference" id="BT-19">Buyer accounting reference</entry>
<entry key="xr:Deliver_to_location_identifier" id="BT-71">Delivery location identifier</entry>
<entry key="xr:Deliver_to_location_identifier/@scheme_identifier" id="BT-71_scheme">Identification scheme</entry>
<entry key="xr:Actual_delivery_date" id="BT-72">Delivery date</entry>
<entry key="xr:Deliver_to_party_name" id="BT-70">Name of the recipient</entry>
<entry key="xr:Deliver_to_address_line_1" id="BT-75">Address line 1</entry>
<entry key="xr:Deliver_to_address_line_2" id="BT-76">Address line 2</entry>
<entry key="xr:Deliver_to_address_line_3" id="BT-165">Address line 3</entry>
<entry key="xr:Deliver_to_post_code" id="BT-78">ZIP</entry>
<entry key="xr:Deliver_to_city" id="BT-77">Location</entry>
<entry key="xr:Deliver_to_country_subdivision" id="BT-79">State</entry>
<entry key="xr:Deliver_to_country_code" id="BT-80">Country code</entry>
<entry key="xr:Tender_or_lot_reference" id="BT-17">Award reference</entry>
<entry key="xr:Receiving_advice_reference" id="BT-15">Receiving advice reference</entry>
<entry key="xr:Despatch_advice_reference" id="BT-16">Despatch advice reference</entry>
<entry key="xr:Business_process_type" id="BT-23">Process identifier</entry>
<entry key="xr:Specification_identifier" id="BT-24">Specification identifier</entry>
<entry key="xr:Invoiced_object_identifier" id="BT-18">Object identifier</entry>
<entry key="xr:Invoiced_object_identifier/@scheme_identifier" id="BT-18_scheme">Object identifier scheme</entry>
<!-- BG 10 -->
<entry key="xr:Payee_name" id="BT-59">Name</entry>
<entry key="xr:Payee_identifier" id="BT-60">Identifier</entry>
<entry key="xr:Payee_identifier/@scheme_identifier" id="BT-60_scheme">Identification scheme</entry>
<entry key="xr:Payee_legal_registration_identifier" id="BT-61">Legal registration identifier</entry>
<entry key="xr:Payee_legal_registration_identifier/@scheme_identifier" id="BT-61_scheme">Legal registration identifier scheme</entry>
<!-- BG 24 Additonal supporting Documents -->
<entry key="xr:Supporting_document_reference" id="BT-122">Identifier</entry>
<entry key="xr:Supporting_document_description" id="BT-123">Description</entry>
<entry key="xr:External_document_location" id="BT-124">Location (e.g. Internet address )</entry>
<entry key="xr:Attached_document" id="BT-125">Attached document</entry>
<entry key="xr:Attached_document/@mime_code" id="BT-125_mime_code">MIME type of the attached document</entry>
<entry key="xr:Attached_document/@filename" id="BT-125_filename">Name of the attachment document</entry>
<entry key="xrv:timestamp">Date / time</entry>
<entry key="xrv:subject">Subject</entry>
<entry key="xrv:text">Text</entry>
<entry key="xrv:details">Details</entry>
<entry key="xr:Invoice_line_identifier" id="BT-126">Identifier</entry>
<entry key="xr:Invoice_line_note" id="BT-127">Free text</entry>
<entry key="xr:Invoice_line_object_identifier" id="BT-128_identifier">Object identifier</entry>
<entry key="xr:Invoice_line_object_identifier/@scheme_identifier" id="BT-128_scheme">Object identifier scheme</entry>
<entry key="xr:Referenced_purchase_order_line_reference" id="BT-132">Order item number</entry>
<entry key="xr:Invoice_line_Buyer_accounting_reference" id="BT-133">Buyer accounting reference</entry>
<entry key="xr:Invoice_line_period_start_date" id="BT-134">From</entry>
<entry key="xr:Invoice_line_period_end_date" id="BT-135">To</entry>
<entry key="xr:Invoiced_quantity" id="BT-129">Quantity</entry>
<entry key="xr:Invoiced_quantity_unit_of_measure_code" id="BT-130">Unit</entry>
<entry key="xr:Item_net_price" id="BT-146">Price per unit (net)</entry>
<entry key="xr:Invoice_line_net_amount" id="BT-131">Total price (net)</entry>
<entry key="xr:Item_price_discount" id="BT-147">Discount (net)</entry>
<entry key="xr:Item_gross_price" id="BT-148">List price (net)</entry>
<entry key="xr:Item_price_base_quantity" id="BT-149">Item price base quantity</entry>
<entry key="xr:Item_price_base_quantity_unit_of_measure" id="BT-150">Unit code</entry>
<entry key="xr:Invoiced_item_VAT_category_code" id="BT-151">VAT category</entry>
<entry key="xr:Invoiced_item_VAT_rate" id="BT-152">VAT rate</entry>
<entry key="xr:Item_name" id="BT-153">Name</entry>
<entry key="xr:Item_description" id="BT-154">Description</entry>
<entry key="xr:Item_Sellers_identifier" id="BT-155">Item identifier</entry>
<entry key="xr:Item_Buyers_identifier" id="BT-156">Buyer's item identifier</entry>
<entry key="xr:Item_standard_identifier" id="BT-157">Item standard identifier</entry>
<entry key="xr:Item_standard_identifier/@scheme_identifier" id="BT-157_scheme">Item standard identifier scheme</entry>
<entry key="xr:Item_classification_identifier" id="BT-158">Item classification code</entry>
<entry key="xr:Item_classification_identifier/@scheme_identifier" id="BT-158_scheme">Item classification code scheme</entry>
<entry key="xr:Item_classification_identifier/@scheme_version_identifier" id="BT-158_scheme_version">Schema version</entry>
<entry key="xr:Item_country_of_origin" id="BT-159">Country of origin</entry>
<entry key="xr:Invoice_line_allowance_base_amount" id="BT-137">Base amount (net)</entry>
<entry key="xr:Invoice_line_allowance_percentage" id="BT-138">Percentage</entry>
<entry key="xr:Invoice_line_allowance_amount" id="BT-136">Allowance (net)</entry>
<entry key="xr:Invoice_line_allowance_reason" id="BT-139">Allowance reason</entry>
<entry key="xr:Invoice_line_allowance_reason_code" id="BT-140">Allowance reason code</entry>
<entry key="xr:Invoice_line_charge_base_amount" id="BT-142">Base amount (net)</entry>
<entry key="xr:Invoice_line_charge_percentage" id="BT-143">Percentage</entry>
<entry key="xr:Invoice_line_charge_amount" id="BT-141">Charge (net)</entry>
<entry key="xr:Invoice_line_charge_reason" id="BT-144">Reason for the Charge</entry>
<entry key="xr:Invoice_line_charge_reason_code" id="BT-145">Charge reason code</entry>
<entry key="xr:Third_party_payment_type" id="BT-DEX-001">Third party payment type</entry>
<entry key="xr:Third_party_payment_amount" id="BT-DEX-002">Third party payment amount</entry>
<entry key="xr:Third_party_payment_description" id="BT-DEX-003">Third party payment description</entry>
<entry key="uebersicht">Overview</entry>
<entry key="uebersichtKaeufer" id="BG-7">Information about the buyer</entry>
<entry key="uebersichtVerkaeufer" id="BG-4">Information about the seller</entry>
<entry key="uebersichtRechnungsInfo" id="invoice-data">Invoice data</entry>
<entry key="uebersichtRechnungsuebersicht" id="BG-22">Invoice totals</entry>
<entry key="uebersichtFremdleistungen" id="BG-DEX-09">Third party payment</entry>
<entry key="uebersichtUmsatzsteuer" id="BG-23">Sales tax breakdown at invoice level</entry>
<entry key="uebersichtNachlass" id="BG-20">Invoice level discount</entry>
<entry key="uebersichtZuschlaege" id="BG-21">Invoice level surcharge</entry>
<entry key="uebersichtRechnungAbrechnungszeitraum">Billing period</entry>
<entry key="uebersichtRechnungVorausgegangeneRechnungen" id="BG-3">Previous invoices</entry>
<entry key="uebersichtZahlungInfo" id="BG-4">Payment data</entry>
<entry key="uebersichtZahlungKarte" id="BG-18">Card information</entry>
<entry key="uebersichtZahlungLastschrift" id="BG-19">Direct debit</entry>
<entry key="uebersichtZahlungUeberweisung" id="BG-17">Transfer</entry>
<entry key="uebersichtBemerkungen" id="BG-1">Notes on the invoice</entry>
<entry key="details">Details</entry>
<entry key="detailsPositionAbrechnungszeitraum" id="BG-26">Billing period</entry>
<entry key="detailsPositionPreiseinzelheiten" id="BG-29">Price details</entry>
<entry key="detailsPositionNachlaesse" id="BG-27">Allowances on invoice item level</entry>
<entry key="detailsPositionZuschlaege" id="BG-28">Charges at invoice item level</entry>
<entry key="detailsPositionArtikelinformationen" id="BG-31">Item information</entry>
<entry key="detailsPositionArtikeleigenschaften" id="BG-32">Properties of the item</entry>
<entry key="zusaetze">Supplements</entry>
<entry key="zusaetzeVerkaeufer" id="BG-4">Information about the seller</entry>
<entry key="zusaetzeSteuervertreter" id="BG-11">Tax representative of the seller</entry>
<entry key="zusaetzeKaeufer" id="BG-7">Information about the buyer</entry>
<entry key="zusaetzeLieferung" id="BG-13">Delivery information</entry>
<entry key="zusaetzeVertrag">Information about the contract</entry>
<entry key="zusaetzeZahlungsempfaenger" id="BG-10">Payee different from the seller</entry>
<entry key="laufzettel">Routing slip</entry>
<entry key="laufzettelHistorie">Processing history</entry>
<entry key="anlagen">Attachments</entry>
<entry key="anlagenListe">Documents justifying the invoice</entry>
<entry key="artikelklassifizierung">Item classification</entry>
<entry key="date-format">[Y,4]-[M,2]-[D,2]</entry>
<entry key="datetime-format">[Y,4]-[M,2]-[D,2] [H]:[m]:[s]</entry>
<entry key="amount-format">###,##0.00</entry>
<entry key="percentage-format">##0.00</entry>
<entry key="at-least-two-format">###,##0.#################</entry>
<entry key="sum-of-third-party-payment-amounts">Third party payment total</entry>
<entry key="no-script">The display of content on this page is limited without JavaScript.</entry>
<entry key="_disclaimer">We assume no liability for the accuracy of the data.</entry>
<entry key="_invoice-note-group">Notes on the invoice</entry>
<entry key="_open">Open</entry>
<entry key="no-data">No data available</entry>
<entry key="_net">net</entry>
<entry key="_gross">gross</entry>
<entry key="_no-content">Areas without content are not displayed!</entry>
<entry key="_description">Description</entry>
<entry key="_price">Price</entry>
<entry key="_price-unit">Price unit</entry>
<entry key="_vat">VAT</entry>
<entry key="_tax-code">Code</entry>
<entry key="_total">Total</entry>
<entry key="_page">Page</entry>
</properties>

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cn="urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
exclude-result-prefixes="xs xsi"
version="2.0">
<xsl:param name="xr-version"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"></xsl:apply-templates>
</xsl:copy>
</xsl:template>
<!-- update XRechnung Version -->
<!-- CII -->
<xsl:template match="/*:CrossIndustryInvoice/*:ExchangedDocumentContext/*:GuidelineSpecifiedDocumentContextParameter/*:ID/text()">
<xsl:value-of select='replace(., "_\d\.\d", $xr-version)'/>
</xsl:template>
<!-- UBL Invoice and CreditNote-->
<xsl:template match="/*:Invoice/*:CustomizationID/text() | /*:CreditNote/*:CustomizationID/text()">
<xsl:value-of select='replace(., "_\d\.\d", $xr-version)'/>
</xsl:template>
<!-- remove xsi schemaLocation -->
<xsl:template match="@*:schemaLocation"></xsl:template>
</xsl:stylesheet>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,939 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xr="urn:ce.eu:en16931:2017:xoev-de:kosit:standard:xrechnung-1"
xmlns:xrv="http://www.example.org/XRechnung-Viewer"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xrf="https://projekte.kosit.org/xrechnung/xrechnung-visualization/functions">
<xsl:decimal-format name="de" decimal-separator="," grouping-separator="." NaN="" />
<xsl:decimal-format name="en" decimal-separator="." grouping-separator="," NaN="" />
<xsl:template name="uebersicht">
<xsl:call-template name="page">
<xsl:with-param name="identifier" select="'uebersicht'"/>
<xsl:with-param name="content">
<xsl:call-template name="uebersicht_Content"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersicht_Content">
<xsl:call-template name="uebersichtKaeufer"/>
<xsl:call-template name="uebersichtVerkaeufer"/>
<xsl:call-template name="uebersichtRechnungsInfo"/>
<xsl:call-template name="uebersichtFremdleistungen"/>
<xsl:call-template name="uebersichtRechnungsuebersicht"/>
<xsl:call-template name="uebersichtUmsatzsteuer"/>
<xsl:call-template name="uebersichtNachlass"/>
<xsl:call-template name="uebersichtZuschlaege"/>
<xsl:call-template name="uebersichtZahlungInfo"/>
<xsl:call-template name="uebersichtBemerkungen"/>
</xsl:template>
<xsl:template name="uebersichtKaeufer">
<xsl:call-template name="box">
<xsl:with-param name="identifier" select="'uebersichtKaeufer'"/>
<xsl:with-param name="content">
<xsl:call-template name="list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:Buyer_reference"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:Buyer_name"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:BUYER_POSTAL_ADDRESS/xr:Buyer_address_line_1"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:BUYER_POSTAL_ADDRESS/xr:Buyer_address_line_2"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:BUYER_POSTAL_ADDRESS/xr:Buyer_address_line_3"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:BUYER_POSTAL_ADDRESS/xr:Buyer_post_code"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:BUYER_POSTAL_ADDRESS/xr:Buyer_city"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:BUYER_POSTAL_ADDRESS/xr:Buyer_country_subdivision"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:BUYER_POSTAL_ADDRESS/xr:Buyer_country_code"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:Buyer_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:Buyer_identifier/@scheme_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Buyer_identifier/@scheme_identifier'"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:BUYER_CONTACT/xr:Buyer_contact_point"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:BUYER_CONTACT/xr:Buyer_contact_telephone_number"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:BUYER_CONTACT/xr:Buyer_contact_email_address"/>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtVerkaeufer">
<xsl:call-template name="box">
<xsl:with-param name="identifier" select="'uebersichtVerkaeufer'"/>
<xsl:with-param name="content">
<xsl:call-template name="list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:Seller_name"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:SELLER_POSTAL_ADDRESS/xr:Seller_address_line_1"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:SELLER_POSTAL_ADDRESS/xr:Seller_address_line_2"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:SELLER_POSTAL_ADDRESS/xr:Seller_address_line_3"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:SELLER_POSTAL_ADDRESS/xr:Seller_post_code"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:SELLER_POSTAL_ADDRESS/xr:Seller_city"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:SELLER_POSTAL_ADDRESS/xr:Seller_country_subdivision"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:SELLER_POSTAL_ADDRESS/xr:Seller_country_code"/>
<xsl:for-each select="xr:SELLER/xr:Seller_identifier">
<xsl:apply-templates mode="list-entry" select="."/>
<xsl:apply-templates mode="list-entry" select="./@scheme_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Seller_identifier/@scheme_identifier'"/>
</xsl:apply-templates>
</xsl:for-each>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:SELLER_CONTACT/xr:Seller_contact_point"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:SELLER_CONTACT/xr:Seller_contact_telephone_number"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:SELLER_CONTACT/xr:Seller_contact_email_address"/>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtRechnungsInfo">
<xsl:call-template name="box">
<xsl:with-param name="identifier" select="'uebersichtRechnungsInfo'"/>
<xsl:with-param name="content">
<xsl:call-template name="uebersichtRechnungsInfo_Content"/>
<xsl:call-template name="uebersichtRechnungAbrechnungszeitraum_Content"/>
<xsl:call-template name="uebersichtRechnungVorausgegangeneRechnungen_Content"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtRechnungsInfo_Content">
<xsl:call-template name="list">
<xsl:with-param name="content">
<xsl:apply-templates select="xr:Invoice_number" mode="list-entry"/>
<xsl:apply-templates select="xr:Invoice_issue_date" mode="list-entry">
<xsl:with-param name="value" select="if (matches(
normalize-space(
replace(xr:Invoice_issue_date, '-', '')
),
$datepattern)
)
then
format-date(xr:Invoice_issue_date, xrf:_('date-format'))
else
xr:Invoice_issue_date/text()"/>
</xsl:apply-templates>
<xsl:apply-templates select="xr:Invoice_type_code" mode="list-entry"/>
<xsl:apply-templates select="xr:Invoice_currency_code" mode="list-entry"/>
<xsl:for-each select="tokenize(xr:Value_added_tax_point_date,';')">
<xsl:call-template name="list-entry-bt-7">
<xsl:with-param name="value" select="format-date(xs:date(.),xrf:_('date-format'))"/>
<xsl:with-param name="field-mapping-identifier" select="'xr:Value_added_tax_point_date'"/>
</xsl:call-template>
</xsl:for-each>
<xsl:apply-templates select="xr:Value_added_tax_point_date_code" mode="list-entry"/>
<xsl:apply-templates select="xr:Project_reference" mode="list-entry"/>
<xsl:apply-templates select="xr:Contract_reference" mode="list-entry"/>
<xsl:apply-templates select="xr:Purchase_order_reference" mode="list-entry"/>
<xsl:apply-templates select="xr:Sales_order_reference" mode="list-entry"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtRechnungAbrechnungszeitraum_Content">
<xsl:call-template name="list">
<xsl:with-param name="headingId" select="'uebersichtRechnungAbrechnungszeitraum'"/>
<xsl:with-param name="content">
<xsl:apply-templates select="xr:INVOICING_PERIOD/xr:Invoicing_period_start_date" mode="list-entry">
<xsl:with-param name="value" select="format-date(xr:INVOICING_PERIOD/xr:Invoicing_period_start_date, xrf:_('date-format'))"/>
</xsl:apply-templates>
<xsl:apply-templates select="xr:INVOICING_PERIOD/xr:Invoicing_period_end_date" mode="list-entry">
<xsl:with-param name="value" select="format-date(xr:INVOICING_PERIOD/xr:Invoicing_period_end_date, xrf:_('date-format'))"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtRechnungVorausgegangeneRechnungen_Content">
<xsl:call-template name="list">
<xsl:with-param name="headingId" select="'uebersichtRechnungVorausgegangeneRechnungen'"/>
<xsl:with-param name="content">
<xsl:for-each select="xr:PRECEDING_INVOICE_REFERENCE">
<xsl:call-template name="sub-list">
<xsl:with-param name="content">
<xsl:apply-templates select="xr:Preceding_Invoice_reference" mode="list-entry"/>
<xsl:apply-templates select="xr:Preceding_Invoice_issue_date" mode="list-entry">
<xsl:with-param name="value" select="format-date(xr:Preceding_Invoice_issue_date, xrf:_('date-format'))"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtFremdleistungen">
<xsl:for-each select="xr:THIRD_PARTY_PAYMENT">
<xsl:call-template name="spanned-box">
<xsl:with-param name="identifier" select="'uebersichtFremdleistungen'"/>
<xsl:with-param name="content">
<xsl:call-template name="list">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:Third_party_payment_type"/>
</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="list">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:Third_party_payment_description"/>
</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="value-list">
<xsl:with-param name="content">
<xsl:apply-templates mode="sum-list-entry" select="xr:Third_party_payment_amount">
<xsl:with-param name="value" select="xr:Third_party_payment_amount"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
<xsl:template name="uebersichtRechnungsuebersicht">
<xsl:call-template name="spanned-box">
<xsl:with-param name="identifier" select="'uebersichtRechnungsuebersicht'"/>
<xsl:with-param name="content">
<xsl:call-template name="value-list">
<xsl:with-param name="content">
<xsl:apply-templates mode="value-list-entry" select="xr:DOCUMENT_TOTALS/xr:Sum_of_Invoice_line_net_amount">
<xsl:with-param name="value" select="format-number(xr:DOCUMENT_TOTALS/xr:Sum_of_Invoice_line_net_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="xr:DOCUMENT_TOTALS/xr:Sum_of_allowances_on_document_level">
<xsl:with-param name="value" select="format-number(xr:DOCUMENT_TOTALS/xr:Sum_of_allowances_on_document_level,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="xr:DOCUMENT_TOTALS/xr:Sum_of_charges_on_document_level">
<xsl:with-param name="value" select="format-number(xr:DOCUMENT_TOTALS/xr:Sum_of_charges_on_document_level,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="sum-list-entry" select="xr:DOCUMENT_TOTALS/xr:Invoice_total_amount_without_VAT">
<xsl:with-param name="value" select="format-number(xr:DOCUMENT_TOTALS/xr:Invoice_total_amount_without_VAT,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="xr:DOCUMENT_TOTALS/xr:Invoice_total_VAT_amount">
<xsl:with-param name="value" select="format-number(xr:DOCUMENT_TOTALS/xr:Invoice_total_VAT_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="xr:DOCUMENT_TOTALS/xr:Invoice_total_VAT_amount_in_accounting_currency">
<xsl:with-param name="value" select="format-number(xr:DOCUMENT_TOTALS/xr:Invoice_total_VAT_amount_in_accounting_currency,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="sum-list-entry" select="xr:DOCUMENT_TOTALS/xr:Invoice_total_amount_with_VAT">
<xsl:with-param name="value" select="format-number(xr:DOCUMENT_TOTALS/xr:Invoice_total_amount_with_VAT,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="xr:DOCUMENT_TOTALS/xr:Paid_amount">
<xsl:with-param name="value" select="format-number(xr:DOCUMENT_TOTALS/xr:Paid_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="xr:DOCUMENT_TOTALS/xr:Rounding_amount">
<xsl:with-param name="value" select="format-number(xr:DOCUMENT_TOTALS/xr:Rounding_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="/xr:invoice">
<xsl:with-param name="field-mapping-identifier" select="'sum-of-third-party-payment-amounts'"/>
<xsl:with-param name="value" select="format-number(sum(xr:THIRD_PARTY_PAYMENT/xr:Third_party_payment_amount),$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="sum-list-entry" select="xr:DOCUMENT_TOTALS/xr:Amount_due_for_payment">
<xsl:with-param name="level" select="'final'"/>
<xsl:with-param name="value" select="format-number(xr:DOCUMENT_TOTALS/xr:Amount_due_for_payment,$amount-picture,$lang)"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtUmsatzsteuer">
<xsl:call-template name="spanned-box">
<xsl:with-param name="identifier" select="'uebersichtUmsatzsteuer'"/>
<xsl:with-param name="content">
<xsl:for-each select="xr:VAT_BREAKDOWN">
<xsl:call-template name="value-list">
<xsl:with-param name="headingId" select="'xr:VAT_category_code'"/>
<xsl:with-param name="headingValue" select="xr:VAT_category_code"/>
<xsl:with-param name="content">
<xsl:apply-templates mode="value-list-entry" select="xr:VAT_category_taxable_amount">
<xsl:with-param name="value" select="format-number(xr:VAT_category_taxable_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="xr:VAT_category_rate">
<xsl:with-param name="value" select="concat(format-number(xr:VAT_category_rate,$percentage-picture,$lang), '%')"/>
</xsl:apply-templates>
<xsl:apply-templates mode="sum-list-entry" select="xr:VAT_category_tax_amount">
<xsl:with-param name="value" select="format-number(xr:VAT_category_tax_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
<xsl:if test="not(xr:VAT_category_code = ('S', 'Z', 'IGIC', 'IPSI' ))">
<xsl:call-template name="list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:VAT_exemption_reason_text"/>
<xsl:apply-templates mode="list-entry" select="xr:VAT_exemption_reason_code"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtNachlass">
<xsl:call-template name="box">
<xsl:with-param name="identifier" select="'uebersichtNachlass'"/>
<xsl:with-param name="content">
<xsl:for-each select="xr:DOCUMENT_LEVEL_ALLOWANCES">
<xsl:call-template name="section">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="content">
<xsl:call-template name="value-list">
<xsl:with-param name="headingId" select="'xr:Document_level_allowance_VAT_category_code'"/>
<xsl:with-param name="headingValue" select="xr:Document_level_allowance_VAT_category_code"/>
<xsl:with-param name="content">
<xsl:apply-templates mode="value-list-entry" select="xr:Document_level_allowance_base_amount">
<xsl:with-param name="value" select="format-number(xr:Document_level_allowance_base_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="xr:Document_level_allowance_percentage">
<xsl:with-param name="value" select="concat(format-number(xr:Document_level_allowance_percentage,$percentage-picture,$lang), '%')"/>
</xsl:apply-templates>
<xsl:apply-templates mode="sum-list-entry" select="xr:Document_level_allowance_amount">
<xsl:with-param name="value" select="format-number(xr:Document_level_allowance_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="xr:Document_level_allowance_VAT_rate">
<xsl:with-param name="value" select="concat(format-number(xr:Document_level_allowance_VAT_rate,$percentage-picture,$lang), '%')"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:Document_level_allowance_reason"/>
<xsl:apply-templates mode="list-entry" select="xr:Document_level_allowance_reason_code"/>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtZuschlaege">
<xsl:call-template name="box">
<xsl:with-param name="identifier" select="'uebersichtZuschlaege'"/>
<xsl:with-param name="content">
<xsl:for-each select="xr:DOCUMENT_LEVEL_CHARGES">
<xsl:call-template name="section">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="content">
<xsl:call-template name="value-list">
<xsl:with-param name="headingId" select="'xr:Document_level_charge_VAT_category_code'"/>
<xsl:with-param name="headingValue" select="xr:Document_level_charge_VAT_category_code"/>
<xsl:with-param name="content">
<xsl:apply-templates mode="value-list-entry" select="xr:Document_level_charge_base_amount">
<xsl:with-param name="value" select="format-number(xr:Document_level_charge_base_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="xr:Document_level_charge_percentage">
<xsl:with-param name="value" select="concat(format-number(xr:Document_level_charge_percentage,$percentage-picture,$lang), '%')"/>
</xsl:apply-templates>
<xsl:apply-templates mode="sum-list-entry" select="xr:Document_level_charge_amount">
<xsl:with-param name="value" select="format-number(xr:Document_level_charge_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="xr:Document_level_charge_VAT_rate">
<xsl:with-param name="value" select="concat(format-number(xr:Document_level_charge_VAT_rate,$percentage-picture,$lang), '%')"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:Document_level_charge_reason"/>
<xsl:apply-templates mode="list-entry" select="xr:Document_level_charge_reason_code"/>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtZahlungInfo">
<xsl:call-template name="box">
<xsl:with-param name="identifier" select="'uebersichtZahlungInfo'"/>
<xsl:with-param name="content">
<xsl:call-template name="uebersichtZahlungInfo_Content"/>
<xsl:call-template name="uebersichtZahlungKarte_Content"/>
<xsl:call-template name="uebersichtZahlungLastschrift_Content"/>
<fo:block xsl:use-attribute-sets="separator" span="all" line-height="0pt"/>
<xsl:call-template name="uebersichtZahlungUeberweisung_Content"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtZahlungInfo_Content">
<xsl:call-template name="list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:Payment_terms"/>
<xsl:apply-templates mode="list-entry" select="xr:Payment_due_date"/>
<xsl:apply-templates mode="list-entry" select="xr:PAYMENT_INSTRUCTIONS/xr:Payment_means_type_code"/>
<xsl:apply-templates mode="list-entry" select="xr:PAYMENT_INSTRUCTIONS/xr:Payment_means_text"/>
<xsl:apply-templates mode="list-entry" select="xr:PAYMENT_INSTRUCTIONS/xr:Remittance_information"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtZahlungKarte_Content">
<xsl:call-template name="list">
<xsl:with-param name="headingId" select="'uebersichtZahlungKarte'"/>
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:PAYMENT_INSTRUCTIONS/xr:PAYMENT_CARD_INFORMATION/xr:Payment_card_primary_account_number"/>
<xsl:apply-templates mode="list-entry" select="xr:PAYMENT_INSTRUCTIONS/xr:PAYMENT_CARD_INFORMATION/xr:Payment_card_holder_name"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtZahlungLastschrift_Content">
<xsl:call-template name="list">
<xsl:with-param name="headingId" select="'uebersichtZahlungLastschrift'"/>
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:PAYMENT_INSTRUCTIONS/xr:DIRECT_DEBIT/xr:Mandate_reference_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:PAYMENT_INSTRUCTIONS/xr:DIRECT_DEBIT/xr:Debited_account_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:PAYMENT_INSTRUCTIONS/xr:DIRECT_DEBIT/xr:Bank_assigned_creditor_identifier"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtZahlungUeberweisung_Content">
<xsl:call-template name="list">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="headingId" select="'uebersichtZahlungUeberweisung'"/>
<xsl:with-param name="content">
<xsl:for-each select="xr:PAYMENT_INSTRUCTIONS/xr:CREDIT_TRANSFER">
<xsl:call-template name="sub-list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:Payment_account_name"/>
<xsl:apply-templates mode="list-entry" select="xr:Payment_account_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:Payment_service_provider_identifier"/>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="uebersichtBemerkungen">
<xsl:call-template name="spanned-box">
<xsl:with-param name="identifier" select="'uebersichtBemerkungen'"/>
<xsl:with-param name="content">
<xsl:for-each select="xr:INVOICE_NOTE">
<xsl:call-template name="list">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:Invoice_note_subject_code"/>
<xsl:apply-templates mode="list-entry" select="xr:Invoice_note"/>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="details">
<xsl:choose>
<xsl:when test="$invoiceline-layout = 'normal'">
<xsl:call-template name="page">
<xsl:with-param name="identifier" select="'details'"/>
<xsl:with-param name="content">
<xsl:apply-templates select="xr:INVOICE_LINE"/>
</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<fo:block span="all">
<xsl:call-template name="page">
<xsl:with-param name="identifier" select="'details'"/>
<xsl:with-param name="content">
<fo:table xsl:use-attribute-sets="invoicelines-table" span="all">
<xsl:for-each select="tokenize($tabular-layout-widths, '\s+')">
<fo:table-column column-width="proportional-column-width({.})"/>
</xsl:for-each>
<fo:table-header xsl:use-attribute-sets="invoicelines-table-header">
<fo:table-row>
<fo:table-cell>
<fo:block>#</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block><xsl:value-of select="xrf:_('_description')"/></fo:block>
</fo:table-cell>
<fo:table-cell text-align="center">
<fo:block><xsl:value-of select="xrf:_('xr:Invoiced_quantity')"/></fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" padding-right="1em">
<fo:block><xsl:value-of select="xrf:_('_price')"/></fo:block>
</fo:table-cell>
<fo:table-cell text-align="center">
<fo:block><xsl:value-of select="xrf:_('_price-unit')"/></fo:block>
</fo:table-cell>
<fo:table-cell text-align="center">
<fo:block><xsl:value-of select="xrf:_('_vat')"/></fo:block>
</fo:table-cell>
<fo:table-cell text-align="center">
<fo:block><xsl:value-of select="xrf:_('_tax-code')"/></fo:block>
</fo:table-cell>
<fo:table-cell text-align="right">
<fo:block><xsl:value-of select="xrf:_('_total')"/></fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<xsl:apply-templates select="xr:INVOICE_LINE" mode="invoiceline-tabular"/>
</fo:table-body>
</fo:table>
</xsl:with-param>
</xsl:call-template>
</fo:block>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="detailsPosition">
<xsl:call-template name="detailsPosition_Content"/>
<xsl:call-template name="detailsPositionAbrechnungszeitraum"/>
<xsl:call-template name="detailsPositionPreiseinzelheiten"/>
<xsl:call-template name="detailsPositionNachlaesse"/>
<xsl:call-template name="detailsPositionZuschlaege"/>
<xsl:call-template name="detailsPositionArtikelinformationen"/>
<xsl:call-template name="detailsPositionArtikeleigenschaften"/>
</xsl:template>
<xsl:template name="detailsPosition_Content">
<xsl:variable name="content">
<xsl:apply-templates mode="list-entry" select="xr:Invoice_line_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:Invoice_line_note"/>
<xsl:apply-templates mode="list-entry" select="xr:Invoice_line_object_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:Invoice_line_object_identifier/@scheme_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Invoice_line_object_identifier/@scheme_identifier'"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:Referenced_purchase_order_line_reference"/>
<xsl:apply-templates mode="list-entry" select="xr:Invoice_line_Buyer_accounting_reference"/>
</xsl:variable>
<xsl:call-template name="list">
<xsl:with-param name="content" select="$content"/>
</xsl:call-template>
<xsl:if test="normalize-space($content)">
<fo:block xsl:use-attribute-sets="separator" span="all"/>
</xsl:if>
</xsl:template>
<xsl:template name="detailsPositionAbrechnungszeitraum">
<xsl:variable name="content">
<xsl:apply-templates mode="list-entry" select="xr:INVOICE_LINE_PERIOD/xr:Invoice_line_period_start_date">
<xsl:with-param name="value" select="format-date(xr:INVOICE_LINE_PERIOD/xr:Invoice_line_period_start_date, xrf:_('date-format'))"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:INVOICE_LINE_PERIOD/xr:Invoice_line_period_end_date">
<xsl:with-param name="value" select="format-date(xr:INVOICE_LINE_PERIOD/xr:Invoice_line_period_end_date, xrf:_('date-format'))"/>
</xsl:apply-templates>
</xsl:variable>
<xsl:call-template name="list">
<xsl:with-param name="headingId" select="'detailsPositionAbrechnungszeitraum'"/>
<xsl:with-param name="content" select="$content"/>
</xsl:call-template>
<xsl:if test="normalize-space($content)">
<fo:block xsl:use-attribute-sets="separator" span="all"/>
</xsl:if>
</xsl:template>
<xsl:template name="detailsPositionPreiseinzelheiten">
<xsl:call-template name="section">
<xsl:with-param name="headingId" select="'detailsPositionPreiseinzelheiten'"/>
<xsl:with-param name="content">
<xsl:call-template name="value-list">
<xsl:with-param name="content">
<xsl:apply-templates mode="value-list-entry" select="xr:Invoiced_quantity"/>
<xsl:apply-templates mode="value-list-entry" select="xr:Invoiced_quantity_unit_of_measure_code"/>
<xsl:apply-templates mode="value-list-entry" select="xr:PRICE_DETAILS/xr:Item_net_price">
<xsl:with-param name="value" select="format-number(xr:PRICE_DETAILS/xr:Item_net_price,$at-least-two-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="sum-list-entry" select="xr:Invoice_line_net_amount">
<xsl:with-param name="value" select="format-number(xr:Invoice_line_net_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="list">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:PRICE_DETAILS/xr:Item_price_discount">
<xsl:with-param name="value" select="format-number(xr:PRICE_DETAILS/xr:Item_price_discount,$at-least-two-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:PRICE_DETAILS/xr:Item_gross_price">
<xsl:with-param name="value" select="format-number(xr:PRICE_DETAILS/xr:Item_gross_price,$at-least-two-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:PRICE_DETAILS/xr:Item_price_base_quantity"/>
<xsl:apply-templates mode="list-entry" select="xr:PRICE_DETAILS/xr:Item_price_base_quantity_unit_of_measure"/>
<xsl:apply-templates mode="list-entry" select="xr:LINE_VAT_INFORMATION/xr:Invoiced_item_VAT_category_code"/>
<xsl:apply-templates mode="list-entry" select="xr:LINE_VAT_INFORMATION/xr:Invoiced_item_VAT_rate">
<xsl:with-param name="value" select="concat(format-number(xr:LINE_VAT_INFORMATION/xr:Invoiced_item_VAT_rate,$percentage-picture,$lang), '%')"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="detailsPositionNachlaesse">
<xsl:call-template name="section">
<xsl:with-param name="headingId" select="'detailsPositionNachlaesse'"/>
<xsl:with-param name="content">
<xsl:for-each select="xr:INVOICE_LINE_ALLOWANCES">
<xsl:call-template name="section">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="content">
<xsl:call-template name="value-list">
<xsl:with-param name="content">
<xsl:apply-templates mode="value-list-entry" select="xr:Invoice_line_allowance_base_amount">
<xsl:with-param name="value" select="format-number(xr:Invoice_line_allowance_base_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="xr:Invoice_line_allowance_percentage">
<xsl:with-param name="value" select="concat(format-number(xr:Invoice_line_allowance_percentage,$percentage-picture,$lang), '%')"/>
</xsl:apply-templates>
<xsl:apply-templates mode="sum-list-entry" select="xr:Invoice_line_allowance_amount">
<xsl:with-param name="value" select="format-number(xr:Invoice_line_allowance_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="list">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:Invoice_line_allowance_reason"/>
<xsl:apply-templates mode="list-entry" select="xr:Invoice_line_allowance_reason_code"/>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="detailsPositionZuschlaege">
<xsl:variable name="content">
<xsl:for-each select="xr:INVOICE_LINE_CHARGES">
<xsl:call-template name="section">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="content">
<xsl:call-template name="value-list">
<xsl:with-param name="content">
<xsl:apply-templates mode="value-list-entry" select="xr:Invoice_line_charge_base_amount">
<xsl:with-param name="value" select="format-number(xr:Invoice_line_charge_base_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
<xsl:apply-templates mode="value-list-entry" select="xr:Invoice_line_charge_percentage">
<xsl:with-param name="value" select="concat(format-number(xr:Invoice_line_charge_percentage,$percentage-picture,$lang), '%')"/>
</xsl:apply-templates>
<xsl:apply-templates mode="sum-list-entry" select="xr:Invoice_line_charge_amount">
<xsl:with-param name="value" select="format-number(xr:Invoice_line_charge_amount,$amount-picture,$lang)"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="list">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:Invoice_line_charge_reason"/>
<xsl:apply-templates mode="list-entry" select="xr:Invoice_line_charge_reason_code"/>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:variable>
<xsl:call-template name="section">
<xsl:with-param name="headingId" select="'detailsPositionZuschlaege'"/>
<xsl:with-param name="content" select="$content"/>
</xsl:call-template>
<xsl:if test="normalize-space($content)">
<fo:block xsl:use-attribute-sets="separator" span="all"/>
</xsl:if>
</xsl:template>
<xsl:template name="detailsPositionArtikelinformationen">
<xsl:call-template name="list">
<xsl:with-param name="headingId" select="'detailsPositionArtikelinformationen'"/>
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:ITEM_INFORMATION/xr:Item_name"/>
<xsl:apply-templates mode="list-entry" select="xr:ITEM_INFORMATION/xr:Item_description"/>
<xsl:apply-templates mode="list-entry" select="xr:ITEM_INFORMATION/xr:Item_Sellers_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:ITEM_INFORMATION/xr:Item_Buyers_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:ITEM_INFORMATION/xr:Item_standard_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:ITEM_INFORMATION/xr:Item_standard_identifier/@scheme_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Item_standard_identifier/@scheme_identifier'"/>
</xsl:apply-templates>
<xsl:for-each select="xr:ITEM_INFORMATION/xr:Item_classification_identifier">
<xsl:apply-templates mode="list-entry" select="."/>
<xsl:apply-templates mode="list-entry" select="./@scheme_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Item_classification_identifier/@scheme_identifier'"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="./@scheme_version_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Item_classification_identifier/@scheme_version_identifier'"/>
</xsl:apply-templates>
</xsl:for-each>
<xsl:apply-templates mode="list-entry" select="xr:ITEM_INFORMATION/xr:Item_country_of_origin"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="detailsPositionArtikeleigenschaften">
<xsl:call-template name="list">
<xsl:with-param name="headingId" select="'detailsPositionArtikeleigenschaften'"/>
<xsl:with-param name="content">
<xsl:apply-templates select="xr:ITEM_INFORMATION/xr:ITEM_ATTRIBUTES"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="zusaetze">
<xsl:call-template name="page">
<xsl:with-param name="identifier" select="'zusaetze'"/>
<xsl:with-param name="content">
<xsl:call-template name="zusaetze_Content"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="zusaetze_Content">
<xsl:call-template name="zusaetzeVerkaeufer"/>
<xsl:call-template name="zusaetzeSteuervertreter"/>
<xsl:call-template name="zusaetzeKaeufer"/>
<xsl:call-template name="zusaetzeLieferung"/>
<xsl:call-template name="zusaetzeVertrag"/>
<xsl:call-template name="zusaetzeZahlungsempfaenger"/>
</xsl:template>
<xsl:template name="zusaetzeVerkaeufer">
<xsl:call-template name="box">
<xsl:with-param name="identifier" select="'zusaetzeVerkaeufer'"/>
<xsl:with-param name="content">
<xsl:call-template name="list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:Seller_trading_name"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:SELLER_POSTAL_ADDRESS/xr:Seller_country_subdivision"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:Seller_electronic_address"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:Seller_electronic_address/@scheme_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Seller_electronic_address/@scheme_identifier'"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:Seller_legal_registration_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:Seller_legal_registration_identifier/@scheme_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Seller_legal_registration_identifier/@scheme_identifier'"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:Seller_VAT_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:Seller_tax_registration_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER/xr:Seller_additional_legal_information"/>
<xsl:apply-templates mode="list-entry" select="xr:VAT_accounting_currency_code"/>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="zusaetzeSteuervertreter">
<xsl:call-template name="box">
<xsl:with-param name="identifier" select="'zusaetzeSteuervertreter'"/>
<xsl:with-param name="content">
<xsl:call-template name="list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:SELLER_TAX_REPRESENTATIVE_PARTY/xr:Seller_tax_representative_name"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER_TAX_REPRESENTATIVE_PARTY/xr:SELLER_TAX_REPRESENTATIVE_POSTAL_ADDRESS/xr:Tax_representative_address_line_1"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER_TAX_REPRESENTATIVE_PARTY/xr:SELLER_TAX_REPRESENTATIVE_POSTAL_ADDRESS/xr:Tax_representative_address_line_2"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER_TAX_REPRESENTATIVE_PARTY/xr:SELLER_TAX_REPRESENTATIVE_POSTAL_ADDRESS/xr:Tax_representative_address_line_3"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER_TAX_REPRESENTATIVE_PARTY/xr:SELLER_TAX_REPRESENTATIVE_POSTAL_ADDRESS/xr:Tax_representative_post_code"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER_TAX_REPRESENTATIVE_PARTY/xr:SELLER_TAX_REPRESENTATIVE_POSTAL_ADDRESS/xr:Tax_representative_city"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER_TAX_REPRESENTATIVE_PARTY/xr:SELLER_TAX_REPRESENTATIVE_POSTAL_ADDRESS/xr:Tax_representative_country_subdivision"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER_TAX_REPRESENTATIVE_PARTY/xr:SELLER_TAX_REPRESENTATIVE_POSTAL_ADDRESS/xr:Tax_representative_country_code"/>
<xsl:apply-templates mode="list-entry" select="xr:SELLER_TAX_REPRESENTATIVE_PARTY/xr:Seller_tax_representative_VAT_identifier"/>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="zusaetzeKaeufer">
<xsl:call-template name="box">
<xsl:with-param name="identifier" select="'zusaetzeKaeufer'"/>
<xsl:with-param name="content">
<xsl:call-template name="list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:Buyer_trading_name"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:BUYER_POSTAL_ADDRESS/xr:Buyer_country_subdivision"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:Buyer_electronic_address"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:Buyer_electronic_address/@scheme_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Buyer_electronic_address/@scheme_identifier'"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:Buyer_legal_registration_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:Buyer_legal_registration_identifier/@scheme_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Buyer_legal_registration_identifier/@scheme_identifier'"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:Buyer_VAT_identifier"/>
<xsl:for-each select="tokenize(xr:Value_added_tax_point_date,';')">
<xsl:call-template name="list-entry-bt-7">
<xsl:with-param name="value" select="format-date(xs:date(.), xrf:_('date-format'))"/>
<xsl:with-param name="field-mapping-identifier" select="'xr:Value_added_tax_point_date'"/>
</xsl:call-template>
</xsl:for-each>
<xsl:apply-templates mode="list-entry" select="xr:BUYER/xr:Value_added_tax_point_date_code"/>
<xsl:apply-templates mode="list-entry" select="xr:Buyer_accounting_reference"/>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="zusaetzeLieferung">
<xsl:call-template name="box">
<xsl:with-param name="identifier" select="'zusaetzeLieferung'"/>
<xsl:with-param name="content">
<xsl:call-template name="list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:DELIVERY_INFORMATION/xr:Deliver_to_location_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:DELIVERY_INFORMATION/xr:Deliver_to_location_identifier/@scheme_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Deliver_to_location_identifier/@scheme_identifier'"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:DELIVERY_INFORMATION/xr:Actual_delivery_date">
<xsl:with-param name="value" select="format-date(xr:DELIVERY_INFORMATION/xr:Actual_delivery_date, xrf:_('date-format'))"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:DELIVERY_INFORMATION/xr:Deliver_to_party_name"/>
<xsl:apply-templates mode="list-entry" select="xr:DELIVERY_INFORMATION/xr:DELIVER_TO_ADDRESS/xr:Deliver_to_address_line_1"/>
<xsl:apply-templates mode="list-entry" select="xr:DELIVERY_INFORMATION/xr:DELIVER_TO_ADDRESS/xr:Deliver_to_address_line_2"/>
<xsl:apply-templates mode="list-entry" select="xr:DELIVERY_INFORMATION/xr:DELIVER_TO_ADDRESS/xr:Deliver_to_address_line_3"/>
<xsl:apply-templates mode="list-entry" select="xr:DELIVERY_INFORMATION/xr:DELIVER_TO_ADDRESS/xr:Deliver_to_post_code"/>
<xsl:apply-templates mode="list-entry" select="xr:DELIVERY_INFORMATION/xr:DELIVER_TO_ADDRESS/xr:Deliver_to_city"/>
<xsl:apply-templates mode="list-entry" select="xr:DELIVERY_INFORMATION/xr:DELIVER_TO_ADDRESS/xr:Deliver_to_country_subdivision"/>
<xsl:apply-templates mode="list-entry" select="xr:DELIVERY_INFORMATION/xr:DELIVER_TO_ADDRESS/xr:Deliver_to_country_code"/>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="zusaetzeVertrag">
<xsl:call-template name="spanned-box">
<xsl:with-param name="identifier" select="'zusaetzeVertrag'"/>
<xsl:with-param name="content">
<xsl:call-template name="list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:Tender_or_lot_reference"/>
<xsl:apply-templates mode="list-entry" select="xr:Receiving_advice_reference"/>
<xsl:apply-templates mode="list-entry" select="xr:Despatch_advice_reference"/>
<xsl:apply-templates mode="list-entry" select="xr:PROCESS_CONTROL/xr:Business_process_type"/>
<xsl:apply-templates mode="list-entry" select="xr:PROCESS_CONTROL/xr:Specification_identifier">
<xsl:with-param name="value" select="xrf:handle-specification-identifier(xr:PROCESS_CONTROL/xr:Specification_identifier)"></xsl:with-param>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:PROCESS_CONTROL/xr:Business_process_type_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:Invoiced_object_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:Invoiced_object_identifier/@scheme_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Invoiced_object_identifier/@scheme_identifier'"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="zusaetzeZahlungsempfaenger">
<xsl:call-template name="box">
<xsl:with-param name="identifier" select="'zusaetzeZahlungsempfaenger'"/>
<xsl:with-param name="content">
<xsl:call-template name="list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:PAYEE/xr:Payee_name"/>
<xsl:apply-templates mode="list-entry" select="xr:PAYEE/xr:Payee_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:PAYEE/xr:Payee_identifier/@scheme_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Payee_identifier/@scheme_identifier'"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:PAYEE/xr:Payee_legal_registration_identifier"/>
<xsl:apply-templates mode="list-entry" select="xr:PAYEE/xr:Payee_legal_registration_identifier/@scheme_identifier">
<xsl:with-param name="field-mapping-identifier" select="'xr:Payee_legal_registration_identifier/@scheme_identifier'"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="anlagen">
<xsl:call-template name="page">
<xsl:with-param name="identifier" select="'anlagen'"/>
<xsl:with-param name="content">
<xsl:call-template name="anlagen_Content"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="anlagen_Content">
<xsl:call-template name="box">
<xsl:with-param name="identifier" select="'anlagenListe'"/>
<xsl:with-param name="content">
<xsl:call-template name="list">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="content">
<xsl:for-each select="xr:ADDITIONAL_SUPPORTING_DOCUMENTS">
<xsl:call-template name="sub-list">
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xr:Supporting_document_reference"/>
<xsl:apply-templates mode="list-entry" select="xr:Supporting_document_description"/>
<xsl:apply-templates mode="list-entry" select="xr:External_document_location">
<xsl:with-param name="value">
<xsl:apply-templates mode="internet-link" select="xr:External_document_location"/>
</xsl:with-param>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:Attached_document">
<xsl:with-param name="value">
<xsl:apply-templates mode="binary" select="xr:Attached_document">
<xsl:with-param name="identifier" select="xr:Attached_document/@filename"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:Attached_document/@mime_code">
<xsl:with-param name="field-mapping-identifier" select="'xr:Attached_document/@mime_code'"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xr:Attached_document/@filename">
<xsl:with-param name="field-mapping-identifier" select="'xr:Attached_document/@filename'"/>
</xsl:apply-templates>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="laufzettel">
<xsl:call-template name="page">
<xsl:with-param name="identifier" select="'laufzettel'"/>
<xsl:with-param name="content">
<xsl:call-template name="laufzettel_Content"/>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
<xsl:template name="laufzettel_Content">
<xsl:call-template name="box">
<xsl:with-param name="identifier" select="'laufzettelHistorie'"/>
<xsl:with-param name="content">
<xsl:call-template name="list">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="content">
<xsl:for-each select="//xrv:laufzettel/xrv:laufzettelEintrag">
<xsl:call-template name="sub-list">
<xsl:with-param name="layout" select="'einspaltig'"/>
<xsl:with-param name="content">
<xsl:apply-templates mode="list-entry" select="xrv:zeitstempel">
<xsl:with-param name="value" select="format-dateTime(xrv:zeitstempel, xrf:_('datetime-format'))"/>
</xsl:apply-templates>
<xsl:apply-templates mode="list-entry" select="xrv:betreff"/>
<xsl:apply-templates mode="list-entry" select="xrv:text"/>
<xsl:apply-templates mode="list-entry" select="xrv:details"/>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
xmlns:xr="urn:ce.eu:en16931:2017:xoev-de:kosit:standard:xrechnung-1"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xrv="http://www.example.org/XRechnung-Viewer"
version="2.0">
<!-- ==========================================================================
== Imports
=========================================================================== -->
<xsl:import href="common-xr.xsl"/>
<xsl:import href="xr-content.xsl"/>
<xsl:import href="xr-pdf/lib/konstanten.xsl"/>
<xsl:import href="xr-pdf/lib/structure/layout-master-set.xsl"/>
<xsl:import href="xr-pdf/lib/structure/content-templates.xsl"/>
<xsl:import href="xr-pdf/lib/structure/page-sequence.xsl"/>
<xsl:output method="xml" version="1.0" encoding="utf-8" />
<!-- FO engine used can be specified. Specific extensions will be then enabled.
Supported values are:
axf - Antenna House XSL Formatter
fop - Apache FOP
-->
<xsl:param name="foengine"/>
<!-- Layout of invoce lines:
normal - default behaviour
tabular - table like
-->
<xsl:param name="invoiceline-layout">normal</xsl:param>
<!-- Numbering of invoice line/sub lines
normal - use numbers from invoice
1.1 - use multilevel arabic numbering
1.i - use mixture of arabic and roman numbering
00001 - use arabic numbering and align them
- any picture string supported by xsl:number instruction can be used
-->
<xsl:param name="invoiceline-numbering">normal</xsl:param>
<!-- This parameter can be used when different proportions of table columns
are needed for tabular layout
-->
<xsl:param name="tabular-layout-widths">2 7 2 2 2 2 1.3 2</xsl:param>
<xsl:param name="axf.extensions" select="if ($foengine eq 'axf') then true() else false()"/>
<xsl:param name="fop.extensions" select="if ($foengine eq 'fop') then true() else false()"/>
<!-- ==========================================================================
== Basic structure
=========================================================================== -->
<xsl:template match="xr:invoice">
<fo:root xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf"
language="{$lang}" font-family="{$fontSans}">
<xsl:call-template name="generiere-layout-master-set"/>
<fo:declarations>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
<dc:title><xsl:value-of select="xr:Invoice_number"/></dc:title>
<!--
<dc:creator></dc:creator>
<dc:description></dc:description>
-->
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<xsl:for-each select="xr:ADDITIONAL_SUPPORTING_DOCUMENTS">
<xsl:apply-templates mode="binary-declaration" select="xr:Attached_document">
<xsl:with-param name="identifier" select="xr:Attached_document/@filename"/>
</xsl:apply-templates>
</xsl:for-each>
</fo:declarations>
<xsl:call-template name="generiere-page-sequence">
<xsl:with-param name="body-content-flow">
<fo:flow flow-name="xrBody"
xsl:use-attribute-sets="fliesstext">
<xsl:call-template name="uebersicht"/>
<xsl:call-template name="details"/>
<xsl:call-template name="zusaetze"/>
<xsl:call-template name="anlagen"/>
<xsl:call-template name="laufzettel"/>
<fo:block id="seitenzahlLetzteSeite"></fo:block>
</fo:flow>
</xsl:with-param>
</xsl:call-template>
</fo:root>
</xsl:template>
<xsl:template name="betragsUebersicht">
<xsl:param name="betraege"/>
<xsl:param name="gruende"/>
<!-- TODO -->
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,235 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
xmlns:xr="urn:ce.eu:en16931:2017:xoev-de:kosit:standard:xrechnung-1"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xrv="http://www.example.org/XRechnung-Viewer"
xmlns:xrf="https://projekte.kosit.org/xrechnung/xrechnung-visualization/functions"
version="2.0">
<!-- ==========================================================================
== Schriften
=========================================================================== -->
<xsl:variable name="fontSans">SourceSerifPro</xsl:variable>
<xsl:variable name="fontSerif">SourceSerifPro</xsl:variable>
<xsl:variable name="amount-picture" select="xrf:_('amount-format')"/>
<xsl:variable name="percentage-picture" select="xrf:_('percentage-format')"/>
<!-- ==========================================================================
== Attribute-Sets
=========================================================================== -->
<!-- Fliesstext -->
<xsl:attribute-set name="fliesstext">
<xsl:attribute name="font-family"><xsl:value-of select="$fontSans"/></xsl:attribute>
<xsl:attribute name="font-size">9pt</xsl:attribute>
<xsl:attribute name="line-height">12pt</xsl:attribute>
<xsl:attribute name="hyphenation-ladder-count">3</xsl:attribute>
<xsl:attribute name="hyphenate">true</xsl:attribute>
<xsl:attribute name="language">de</xsl:attribute>
</xsl:attribute-set>
<!-- H1 Marker -->
<xsl:attribute-set name="marker">
<xsl:attribute name="font-size">18pt</xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="$fontSerif"/></xsl:attribute>
<xsl:attribute name="hyphenate">false</xsl:attribute>
<xsl:attribute name="span">all</xsl:attribute>
</xsl:attribute-set>
<!-- H1 -->
<xsl:attribute-set name="h1">
<xsl:attribute name="font-size">18pt</xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="$fontSerif"/></xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="margin-bottom">4mm</xsl:attribute>
<xsl:attribute name="hyphenate">false</xsl:attribute>
<xsl:attribute name="span">all</xsl:attribute>
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
</xsl:attribute-set>
<!-- H2-Container -->
<xsl:attribute-set name="h2-container">
<xsl:attribute name="border-top">0.5pt solid</xsl:attribute>
<xsl:attribute name="padding-top">2.5pt</xsl:attribute>
<xsl:attribute name="span">all</xsl:attribute>
<xsl:attribute name="margin-bottom">4mm</xsl:attribute>
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
</xsl:attribute-set>
<!-- H2 -->
<xsl:attribute-set name="h2">
<xsl:attribute name="font-size">9pt</xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="$fontSans"/></xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="border">0.5pt solid</xsl:attribute>
<xsl:attribute name="padding">4pt 6pt</xsl:attribute>
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
<xsl:attribute name="margin">0</xsl:attribute>
</xsl:attribute-set>
<!-- H3 -->
<xsl:attribute-set name="h3">
<xsl:attribute name="font-size">10pt</xsl:attribute>
<xsl:attribute name="font-family"><xsl:value-of select="$fontSans"/></xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="margin-bottom">1mm</xsl:attribute>
<xsl:attribute name="margin-left">2mm</xsl:attribute>
<xsl:attribute name="margin-top">2mm</xsl:attribute>
<xsl:attribute name="span">all</xsl:attribute>
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
</xsl:attribute-set>
<!-- Separator -->
<xsl:attribute-set name="separator">
<xsl:attribute name="margin-left">2mm</xsl:attribute>
<xsl:attribute name="margin-bottom">3mm</xsl:attribute>
<xsl:attribute name="border-bottom">0.5pt dotted</xsl:attribute>
<xsl:attribute name="color">#999999</xsl:attribute>
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
</xsl:attribute-set>
<!-- Wert-Felder -->
<xsl:variable name="wertHG">#eeeeee</xsl:variable>
<xsl:variable name="wert-legende-breite">30</xsl:variable>
<xsl:attribute-set name="wert-legende">
<xsl:attribute name="font-size">7pt</xsl:attribute>
<xsl:attribute name="line-height">10pt</xsl:attribute>
<xsl:attribute name="padding-top">1mm</xsl:attribute>
<xsl:attribute name="padding-bottom">1mm</xsl:attribute>
<xsl:attribute name="margin-left">2mm</xsl:attribute>
<xsl:attribute name="padding-right">1mm</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="wert-ausgabe">
<xsl:attribute name="font-size">9pt</xsl:attribute>
<xsl:attribute name="line-height">10pt</xsl:attribute>
<xsl:attribute name="background-color"><xsl:value-of select="$wertHG"/></xsl:attribute>
<xsl:attribute name="padding-top">1mm</xsl:attribute>
<xsl:attribute name="padding-bottom">1mm</xsl:attribute>
<xsl:attribute name="padding-left">2mm</xsl:attribute>
<xsl:attribute name="padding-right">2mm</xsl:attribute>
<xsl:attribute name="keep-together.within-column">always</xsl:attribute>
</xsl:attribute-set>
<!-- Rechnung-Felder -->
<xsl:attribute-set name="rechnung-legende">
<xsl:attribute name="font-size">9pt</xsl:attribute>
<xsl:attribute name="text-align">left</xsl:attribute>
<xsl:attribute name="padding-top">0.2mm</xsl:attribute>
<xsl:attribute name="padding-bottom">0.2mm</xsl:attribute>
<xsl:attribute name="padding-left">0mm</xsl:attribute>
<xsl:attribute name="padding-right">1mm</xsl:attribute>
<xsl:attribute name="margin-left">0mm</xsl:attribute>
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="rechnung-steuer">
<xsl:attribute name="font-size">9pt</xsl:attribute>
<xsl:attribute name="text-align">left</xsl:attribute>
<xsl:attribute name="padding-top">0.2mm</xsl:attribute>
<xsl:attribute name="padding-bottom">0.2mm</xsl:attribute>
<xsl:attribute name="padding-left">0mm</xsl:attribute>
<xsl:attribute name="padding-right">1mm</xsl:attribute>
<xsl:attribute name="margin-left">0mm</xsl:attribute>
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="rechnung-wert">
<xsl:attribute name="font-size">9pt</xsl:attribute>
<xsl:attribute name="text-align">right</xsl:attribute>
<xsl:attribute name="padding-top">0.2mm</xsl:attribute>
<xsl:attribute name="padding-bottom">0.2mm</xsl:attribute>
<xsl:attribute name="padding-left">0mm</xsl:attribute>
<xsl:attribute name="padding-right">0mm</xsl:attribute>
<xsl:attribute name="margin-left">0mm</xsl:attribute>
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="rechnung-legende-summe">
<xsl:attribute name="font-size">9pt</xsl:attribute>
<xsl:attribute name="text-align">left</xsl:attribute>
<xsl:attribute name="padding-top">0.4mm</xsl:attribute>
<xsl:attribute name="padding-bottom">0.2mm</xsl:attribute>
<xsl:attribute name="padding-left">0mm</xsl:attribute>
<xsl:attribute name="padding-right">1mm</xsl:attribute>
<xsl:attribute name="border-top">0.1pt solid #999999</xsl:attribute>
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="rechnung-steuer-summe">
<xsl:attribute name="font-size">9pt</xsl:attribute>
<xsl:attribute name="text-align">left</xsl:attribute>
<xsl:attribute name="padding-top">0.4mm</xsl:attribute>
<xsl:attribute name="padding-bottom">0.2mm</xsl:attribute>
<xsl:attribute name="padding-left">0mm</xsl:attribute>
<xsl:attribute name="padding-right">1mm</xsl:attribute>
<xsl:attribute name="border-top">0.1pt solid #999999</xsl:attribute>
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="rechnung-wert-summe">
<xsl:attribute name="font-size">9pt</xsl:attribute>
<xsl:attribute name="font-weight">bold</xsl:attribute>
<xsl:attribute name="text-align">right</xsl:attribute>
<xsl:attribute name="padding-top">0.4mm</xsl:attribute>
<xsl:attribute name="padding-bottom">0.2mm</xsl:attribute>
<xsl:attribute name="padding-left">0mm</xsl:attribute>
<xsl:attribute name="padding-right">0mm</xsl:attribute>
<xsl:attribute name="border-top">0.1pt solid #999999</xsl:attribute>
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
</xsl:attribute-set>
<!-- Box-Container -->
<xsl:attribute-set name="box-container-kapitel">
<xsl:attribute name="margin-bottom">10mm</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="box-container-bereich">
<xsl:attribute name="margin-bottom">2mm</xsl:attribute>
<xsl:attribute name="keep-together.within-page">always</xsl:attribute>
<xsl:attribute name="span">all</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="box-container-inner">
<xsl:attribute name="margin-bottom">2mm</xsl:attribute>
</xsl:attribute-set>
<!-- Tabular invoice lines -->
<xsl:attribute-set name="invoicelines-table">
<xsl:attribute name="padding-left">2pt</xsl:attribute>
<xsl:attribute name="padding-right">2pt</xsl:attribute>
<xsl:attribute name="width">100%</xsl:attribute>
<xsl:attribute name="table-layout">fixed</xsl:attribute>
<xsl:attribute name="margin-bottom">2mm</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="invoicelines-table-header">
<xsl:attribute name="font-weight">bold</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="invoicelines-table-row">
<!-- Nested sub-invoice lines will recursively decrease font-size -->
<xsl:attribute name="font-size" select="if (self::xr:SUB_INVOICE_LINE) then '90%' else '100%'"/>
</xsl:attribute-set>
<xsl:attribute-set name="invoicelines-nested-info">
<xsl:attribute name="font-size">80%</xsl:attribute>
<xsl:attribute name="font-style">italic</xsl:attribute>
</xsl:attribute-set>
<xsl:attribute-set name="invoicelines-allowances-table">
<xsl:attribute name="padding-left">2pt</xsl:attribute>
<xsl:attribute name="padding-right">2pt</xsl:attribute>
<xsl:attribute name="width">100%</xsl:attribute>
<xsl:attribute name="table-layout">fixed</xsl:attribute>
<xsl:attribute name="font-size">80%</xsl:attribute>
<xsl:attribute name="font-style">italic</xsl:attribute>
</xsl:attribute-set>
</xsl:stylesheet>

View file

@ -0,0 +1,972 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
xmlns:xr="urn:ce.eu:en16931:2017:xoev-de:kosit:standard:xrechnung-1"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xrv="http://www.example.org/XRechnung-Viewer"
xmlns:xrf="https://projekte.kosit.org/xrechnung/xrechnung-visualization/functions"
xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf"
version="2.0">
<xsl:template name="betragsUebersicht"/>
<!-- ==========================================================================
== Inhalt eines Kapitels
=========================================================================== -->
<xsl:template name="page">
<xsl:param name="identifier"/>
<xsl:param name="content"/>
<xsl:if test="normalize-space($content)">
<xsl:variable name="heading">
<xsl:call-template name="field-mapping">
<xsl:with-param name="identifier" select="$identifier"/>
</xsl:call-template>
</xsl:variable>
<xsl:call-template name="h1">
<xsl:with-param name="titel" select="$heading/label"/>
</xsl:call-template>
<xsl:copy-of select="$content"/>
</xsl:if>
</xsl:template>
<!-- ==========================================================================
== Inhalt eines Abschnittes
=========================================================================== -->
<xsl:template name="box">
<xsl:param name="identifier"/>
<xsl:param name="content"/>
<xsl:if test="normalize-space($content)">
<xsl:variable name="heading">
<xsl:call-template name="field-mapping">
<xsl:with-param name="identifier" select="$identifier"/>
</xsl:call-template>
</xsl:variable>
<xsl:call-template name="h2">
<xsl:with-param name="titel" select="$heading/label"/>
</xsl:call-template>
<!-- FIXME: keep-together.within-page="always" has been lost during refactor -->
<xsl:for-each select="$content/*">
<xsl:copy-of select="."/>
</xsl:for-each>
<fo:block xsl:use-attribute-sets="box-container-bereich"/>
</xsl:if>
</xsl:template>
<xsl:template name="spanned-box">
<xsl:param name="identifier"/>
<xsl:param name="content"/>
<xsl:if test="normalize-space($content)">
<xsl:variable name="heading">
<xsl:call-template name="field-mapping">
<xsl:with-param name="identifier" select="$identifier"/>
</xsl:call-template>
</xsl:variable>
<fo:block xsl:use-attribute-sets="box-container-bereich" span="all">
<xsl:call-template name="h2">
<xsl:with-param name="titel" select="$heading/label"/>
</xsl:call-template>
<xsl:for-each select="$content/*">
<xsl:copy-of select="."/>
</xsl:for-each>
</fo:block>
</xsl:if>
</xsl:template>
<!-- ==========================================================================
== Inhalt eines Teilbereich eines Abschnittes
=========================================================================== -->
<xsl:template name="section">
<xsl:param name="layout">zweispaltig</xsl:param>
<xsl:param name="headingId"/>
<xsl:param name="content"/>
<xsl:if test="normalize-space($content)">
<xsl:if test="$headingId">
<xsl:variable name="heading">
<xsl:call-template name="field-mapping">
<xsl:with-param name="identifier" select="$headingId"/>
</xsl:call-template>
</xsl:variable>
<xsl:call-template name="h3">
<xsl:with-param name="titel" select="$heading/label"/>
</xsl:call-template>
</xsl:if>
<fo:block>
<xsl:copy-of select="$content"/>
</fo:block>
</xsl:if>
</xsl:template>
<!-- ==========================================================================
== Inhaltseinheit mit optionaler Überschrift
=========================================================================== -->
<xsl:template name="list">
<xsl:param name="layout">zweispaltig</xsl:param>
<xsl:param name="headingId"/>
<xsl:param name="content"/>
<xsl:if test="normalize-space($content)">
<xsl:variable name="boxContent">
<xsl:copy-of select="$content"/>
<!-- Placeholder for spacing after the box -->
<fo:block xsl:use-attribute-sets="box-container-inner" line-height="0pt" span="all"/>
</xsl:variable>
<xsl:if test="$headingId">
<xsl:variable name="heading">
<xsl:call-template name="field-mapping">
<xsl:with-param name="identifier" select="$headingId"/>
</xsl:call-template>
</xsl:variable>
<xsl:call-template name="h3">
<xsl:with-param name="titel" select="$heading/label"/>
</xsl:call-template>
</xsl:if>
<xsl:copy-of select="$boxContent"/>
</xsl:if>
</xsl:template>
<!-- ==========================================================================
==
=========================================================================== -->
<xsl:template name="sub-list">
<xsl:param name="layout">zweispaltig</xsl:param>
<xsl:param name="content"/>
<xsl:if test="normalize-space($content)">
<xsl:call-template name="list">
<xsl:with-param name="layout" select="$layout"/>
<xsl:with-param name="content" select="$content"/>
</xsl:call-template>
<!-- Placeholder for spacing after the box -->
<fo:block xsl:use-attribute-sets="box-container-inner" line-height="0pt" span="all"/>
</xsl:if>
</xsl:template>
<!-- ==========================================================================
== Ausgabe eines Legende/Wert-Paares
=========================================================================== -->
<xsl:template match="@*|*" mode="list-entry">
<xsl:param name="value"/>
<xsl:param name="field-mapping-identifier">
<xsl:value-of select="name()"/>
</xsl:param>
<xsl:if test="normalize-space(.)">
<xsl:variable name="field-mapping">
<xsl:call-template name="field-mapping">
<xsl:with-param name="identifier" select="$field-mapping-identifier"/>
</xsl:call-template>
</xsl:variable>
<fo:list-block margin-bottom="1mm"
provisional-distance-between-starts="{$wert-legende-breite}mm">
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block xsl:use-attribute-sets="wert-legende"><xsl:value-of select="$field-mapping/label"/>:</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block xsl:use-attribute-sets="wert-ausgabe">
<xsl:choose>
<xsl:when test="$value">
<xsl:copy-of select="$value"/>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="$field-mapping-identifier = 'xr:Payment_due_date'"><xsl:value-of select="format-date(xs:date(.), xrf:_('date-format'))"/></xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
</xsl:if>
</xsl:template>
<xsl:template name="list-entry-bt-7">
<xsl:param name="value"/>
<xsl:param name="field-mapping-identifier">
<xsl:value-of select="name()"/>
</xsl:param>
<xsl:if test="normalize-space(.)">
<xsl:variable name="field-mapping">
<xsl:call-template name="field-mapping">
<xsl:with-param name="identifier" select="$field-mapping-identifier"/>
</xsl:call-template>
</xsl:variable>
<fo:list-block margin-bottom="1mm"
provisional-distance-between-starts="{$wert-legende-breite}mm">
<fo:list-item>
<fo:list-item-label end-indent="label-end()">
<fo:block xsl:use-attribute-sets="wert-legende"><xsl:value-of select="$field-mapping/label"/>:</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block xsl:use-attribute-sets="wert-ausgabe">
<xsl:choose>
<xsl:when test="$value">
<xsl:copy-of select="$value"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
</xsl:if>
</xsl:template>
<!-- ==========================================================================
== Ausgabe einer Tabelle
=========================================================================== -->
<xsl:template name="value-list">
<xsl:param name="headingId"/>
<xsl:param name="headingValue"/>
<xsl:param name="content"/>
<xsl:if test="normalize-space($content)">
<xsl:variable name="boxContent">
<fo:table xsl:use-attribute-sets="box-container-inner" margin-left="2mm"
keep-together.within-column="always">
<fo:table-column column-number="1" column-width="68%"/>
<fo:table-column column-number="2" column-width="10%"/>
<fo:table-column column-number="3" column-width="22%"/>
<fo:table-header>
<fo:table-row><fo:table-cell><fo:block/></fo:table-cell></fo:table-row>
</fo:table-header>
<fo:table-body start-indent="0"
end-indent="0">
<xsl:copy-of select="$content"/>
</fo:table-body>
</fo:table>
</xsl:variable>
<xsl:choose>
<xsl:when test="$headingId">
<xsl:variable name="heading">
<xsl:call-template name="field-mapping">
<xsl:with-param name="identifier" select="$headingId"/>
</xsl:call-template>
</xsl:variable>
<fo:block margin-left="2mm" font-weight="bold"><fo:inline><xsl:value-of select="$heading/label"/>: </fo:inline><fo:inline><xsl:value-of select="$headingValue"/>
</fo:inline></fo:block>
<xsl:copy-of select="$boxContent"/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$boxContent"/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
<xsl:template match="*|@*" mode="value-list-entry">
<xsl:param name="value"/>
<xsl:param name="field-mapping-identifier">
<xsl:value-of select="name()"/>
</xsl:param>
<xsl:if test="normalize-space(.)">
<xsl:variable name="field-mapping">
<xsl:call-template name="field-mapping">
<xsl:with-param name="identifier" select="$field-mapping-identifier"/>
</xsl:call-template>
</xsl:variable>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="rechnung-legende"><fo:block><xsl:value-of select="$field-mapping/label"/></fo:block></fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="rechnung-steuer"><fo:block><xsl:value-of select="$field-mapping/art"/></fo:block></fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="rechnung-wert">
<fo:block>
<xsl:choose>
<xsl:when test="$value">
<xsl:value-of select="$value"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:if>
</xsl:template>
<xsl:template match="*|@*" mode="sum-list-entry">
<xsl:param name="level"/>
<xsl:param name="value"/>
<xsl:param name="field-mapping-identifier">
<xsl:value-of select="name()"/>
</xsl:param>
<xsl:if test="normalize-space(.)">
<xsl:variable name="field-mapping">
<xsl:call-template name="field-mapping">
<xsl:with-param name="identifier" select="$field-mapping-identifier"/>
</xsl:call-template>
</xsl:variable>
<fo:table-row>
<xsl:choose>
<xsl:when test="$level='final'">
<fo:table-cell xsl:use-attribute-sets="rechnung-legende-summe" font-weight="bold"><fo:block><xsl:value-of select="$field-mapping/label"/></fo:block></fo:table-cell>
</xsl:when>
<xsl:otherwise>
<fo:table-cell xsl:use-attribute-sets="rechnung-legende-summe"><fo:block><xsl:value-of select="$field-mapping/label"/></fo:block></fo:table-cell>
</xsl:otherwise>
</xsl:choose>
<fo:table-cell xsl:use-attribute-sets="rechnung-steuer-summe"><fo:block><xsl:value-of select="$field-mapping/art"/></fo:block></fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="rechnung-wert-summe">
<fo:block>
<xsl:choose>
<xsl:when test="$value">
<xsl:value-of select="$value"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:if>
</xsl:template>
<!-- ==========================================================================
== Ausgabe Resourcen / Links
=========================================================================== -->
<xsl:template match="*|@*" mode="internet-link">
<xsl:param name="title" select="." />
<xsl:if test="normalize-space(.)">
<xsl:value-of select="."/>
</xsl:if>
</xsl:template>
<xsl:template match="*|@*" mode="file-link">
<xsl:param name="title" select="'Öffnen'" />
<xsl:if test="normalize-space(.)">
<xsl:value-of select="."/>
</xsl:if>
</xsl:template>
<xsl:template match="*|@*" mode="binary">
<xsl:param name="identifier"/>
<fo:basic-link>
<xsl:attribute name="external-destination">url(embedded-file:<xsl:value-of select="encode-for-uri($identifier)"/>)</xsl:attribute>
<xsl:value-of select="$identifier"/>
</fo:basic-link>
</xsl:template>
<xsl:template match="*|@*" mode="binary-declaration">
<xsl:param name="identifier"/>
<pdf:embedded-file>
<xsl:attribute name="filename"><xsl:value-of select="$identifier"/></xsl:attribute>
<xsl:attribute name="src">data:application/pdf;base64,<xsl:value-of select="normalize-space(.)"/></xsl:attribute>
</pdf:embedded-file>
</xsl:template>
<!-- ==========================================================================
== Detailpositionenen
=========================================================================== -->
<xsl:template match="xr:INVOICE_LINE">
<xsl:variable name="identifier">
<xsl:choose>
<xsl:when test="$invoiceline-numbering = 'normal'">
<xsl:value-of select="xr:Invoice_line_identifier"/>
</xsl:when>
<xsl:otherwise>
<xsl:number format="{$invoiceline-numbering}"
level="multiple"
count="xr:INVOICE_LINE | xr:SUB_INVOICE_LINE"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="h2">
<xsl:with-param name="titel" select="$identifier"/>
</xsl:call-template>
<xsl:variable name="content">
<xsl:call-template name="detailsPosition"/>
</xsl:variable>
<xsl:for-each select="$content/*">
<xsl:copy-of select="."/>
</xsl:for-each>
<xsl:apply-templates select="xr:SUB_INVOICE_LINE"/>
<fo:block xsl:use-attribute-sets="box-container-bereich"/>
</xsl:template>
<xsl:template match="xr:SUB_INVOICE_LINE">
<xsl:variable name="identifier">
<xsl:choose>
<xsl:when test="$invoiceline-numbering = 'normal'">
<xsl:value-of select="xr:Invoice_line_identifier"/>
</xsl:when>
<xsl:otherwise>
<xsl:number format="{$invoiceline-numbering}"
level="multiple"
count="xr:INVOICE_LINE | xr:SUB_INVOICE_LINE"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="h2">
<xsl:with-param name="titel" select="$identifier"/>
</xsl:call-template>
<xsl:variable name="content">
<xsl:call-template name="detailsPosition"/>
</xsl:variable>
<xsl:for-each select="$content/*">
<xsl:copy-of select="."/>
</xsl:for-each>
<xsl:apply-templates select="xr:SUB_INVOICE_LINE"/>
<fo:block xsl:use-attribute-sets="box-container-bereich"/>
</xsl:template>
<!-- ==========================================================================
== Artikeleigenschaften
=========================================================================== -->
<xsl:template match="xr:ITEM_ATTRIBUTES">
<fo:block-container margin-bottom="1mm">
<fo:block-container margin="0mm">
<fo:table margin-bottom="1mm">
<fo:table-column>
<xsl:attribute name="column-width"><xsl:value-of select="$wert-legende-breite"/>mm</xsl:attribute>
</fo:table-column>
<fo:table-column column-width="{86 - $wert-legende-breite}mm"/>
<fo:table-header>
<fo:table-row><fo:table-cell><fo:block/></fo:table-cell></fo:table-row>
</fo:table-header>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:table width="100%">
<fo:table-header>
<fo:table-row><fo:table-cell><fo:block/></fo:table-cell></fo:table-row>
</fo:table-header>
<fo:table-body>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="wert-ausgabe">
<fo:block><xsl:value-of select="xr:Item_attribute_name"/>:</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="wert-ausgabe">
<fo:block><xsl:value-of select="xr:Item_attribute_value"/></fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block-container>
</fo:block-container>
</xsl:template>
<!-- ==========================================================================
== Headlines
=========================================================================== -->
<xsl:template name="h1">
<xsl:param name="titel"/>
<!-- Markers are not working with flat blocks approach that must have been used to for two-column layout in FOP -->
<!--
<xsl:if test="not($axf.extensions)">
<fo:block>
<fo:marker marker-class-name="aktueller-bereich-forts"></fo:marker>
<fo:leader/>
</fo:block>
</xsl:if>
-->
<fo:block xsl:use-attribute-sets="h1">
<xsl:if test="$axf.extensions">
<xsl:attribute name="axf:suppress-if-first-on-page">true</xsl:attribute>
<xsl:attribute name="axf:pdftag">h1</xsl:attribute>
</xsl:if>
<!--
<fo:marker marker-class-name="aktueller-bereich-forts">
<fo:inline font-weight="bold"><xsl:value-of select="$titel"/></fo:inline>
<xsl:text> (Fortsetzung)</xsl:text>
</fo:marker>
-->
<xsl:value-of select="$titel"/>
</fo:block>
</xsl:template>
<xsl:template name="h2">
<xsl:param name="titel"/>
<fo:block xsl:use-attribute-sets="h2-container">
<xsl:if test="$axf.extensions">
<xsl:attribute name="axf:pdftag">h2</xsl:attribute>
</xsl:if>
<fo:inline xsl:use-attribute-sets="h2">
<xsl:value-of select="$titel"/>
</fo:inline>
</fo:block>
</xsl:template>
<xsl:template name="h3">
<xsl:param name="titel"/>
<fo:block xsl:use-attribute-sets="h3"><xsl:value-of select="$titel"/></fo:block>
</xsl:template>
<!-- ==========================================================================
== Invoice lines in tabular presentation
=========================================================================== -->
<xsl:template match="xr:INVOICE_LINE | xr:SUB_INVOICE_LINE" mode="invoiceline-tabular">
<!-- Process basic information -->
<fo:table-row xsl:use-attribute-sets="invoicelines-table-row">
<fo:table-cell>
<fo:block>
<xsl:choose>
<xsl:when test="$invoiceline-numbering = 'normal'">
<xsl:value-of select="xr:Invoice_line_identifier"/>
</xsl:when>
<xsl:otherwise>
<xsl:number format="{$invoiceline-numbering}"
level="multiple"
count="xr:INVOICE_LINE | xr:SUB_INVOICE_LINE"/>
</xsl:otherwise>
</xsl:choose>
</fo:block>
</fo:table-cell>
<fo:table-cell padding-left="{count(ancestor-or-self::xr:SUB_INVOICE_LINE)}em">
<fo:block><xsl:value-of select="xr:ITEM_INFORMATION/xr:Item_name"/></fo:block>
</fo:table-cell>
<fo:table-cell text-align="center">
<fo:block>
<xsl:value-of select="xr:Invoiced_quantity"/>
<xsl:text> </xsl:text>
<xsl:value-of select="xr:Invoiced_quantity_unit_of_measure_code"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" padding-right="1em">
<fo:block><xsl:value-of select="format-number(xr:PRICE_DETAILS/xr:Item_net_price, $at-least-two-picture, $lang)"/></fo:block>
</fo:table-cell>
<fo:table-cell text-align="center">
<fo:block>
<xsl:value-of select="xr:PRICE_DETAILS/xr:Item_price_base_quantity"/>
<xsl:text> </xsl:text>
<xsl:value-of select="xr:PRICE_DETAILS/xr:Item_price_base_quantity_unit_of_measure"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="center">
<fo:block><xsl:value-of select="concat(format-number(xr:LINE_VAT_INFORMATION/xr:Invoiced_item_VAT_rate, $percentage-picture, $lang), '%')"/></fo:block>
</fo:table-cell>
<fo:table-cell text-align="center">
<fo:block><xsl:value-of select="xr:LINE_VAT_INFORMATION/xr:Invoiced_item_VAT_category_code"/></fo:block>
</fo:table-cell>
<fo:table-cell text-align="right">
<fo:block><xsl:value-of select="format-number(xr:Invoice_line_net_amount, $amount-picture, $lang)"/></fo:block>
</fo:table-cell>
</fo:table-row>
<xsl:if test="xr:ITEM_INFORMATION/xr:Item_description | xr:Invoice_line_note">
<fo:table-row xsl:use-attribute-sets="invoicelines-table-row">
<fo:table-cell>
<fo:block/>
</fo:table-cell>
<fo:table-cell padding-left="{count(ancestor-or-self::xr:SUB_INVOICE_LINE)}em" number-columns-spanned="6">
<xsl:for-each select="xr:ITEM_INFORMATION/xr:Item_description | xr:Invoice_line_note">
<fo:block>
<xsl:value-of select="."/>
</fo:block>
</xsl:for-each>
</fo:table-cell>
<fo:table-cell>
<fo:block/>
</fo:table-cell>
</fo:table-row>
</xsl:if>
<xsl:if test="xr:Referenced_purchase_order_line_reference | xr:Invoice_line_Buyer_accounting_reference">
<xsl:call-template name="invoiceline-tabular-2-col-info">
<xsl:with-param name="col1">
<xsl:if test="xr:Referenced_purchase_order_line_reference">
<xsl:value-of select="xrf:field-label('xr:Referenced_purchase_order_line_reference')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="xr:Referenced_purchase_order_line_reference"/>
</xsl:if>
</xsl:with-param>
<xsl:with-param name="col2">
<xsl:if test="xr:Invoice_line_Buyer_accounting_reference">
<xsl:value-of select="xrf:field-label('xr:Invoice_line_Buyer_accounting_reference')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="xr:Invoice_line_Buyer_accounting_reference"/>
</xsl:if>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:if test="xr:Invoice_line_object_identifier">
<xsl:call-template name="invoiceline-tabular-2-col-info">
<xsl:with-param name="col1">
<xsl:value-of select="xrf:field-label('xr:Invoice_line_object_identifier')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="xr:Invoice_line_object_identifier"/>
</xsl:with-param>
<xsl:with-param name="col2">
<xsl:if test="xr:Invoice_line_object_identifier/@scheme_identifier">
<xsl:value-of select="xrf:field-label('xr:Invoice_line_object_identifier/@scheme_identifier')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="xr:Invoice_line_object_identifier/@scheme_identifier"/>
</xsl:if>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:if test="xr:INVOICE_LINE_PERIOD">
<xsl:call-template name="invoiceline-tabular-2-col-info">
<xsl:with-param name="col1">
<xsl:if test="xr:INVOICE_LINE_PERIOD/xr:Invoice_line_period_start_date">
<xsl:value-of select="xrf:field-label('xr:Invoice_line_period_start_date')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="format-date(xr:INVOICE_LINE_PERIOD/xr:Invoice_line_period_start_date, xrf:_('date-format'))"/>
</xsl:if>
</xsl:with-param>
<xsl:with-param name="col2">
<xsl:if test="xr:INVOICE_LINE_PERIOD/xr:Invoice_line_period_end_date">
<xsl:value-of select="xrf:field-label('xr:Invoice_line_period_end_date')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="format-date(xr:INVOICE_LINE_PERIOD/xr:Invoice_line_period_end_date, xrf:_('date-format'))"/>
</xsl:if>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:if test="xr:PRICE_DETAILS/xr:Item_price_discount | xr:PRICE_DETAILS/xr:Item_gross_price">
<xsl:call-template name="invoiceline-tabular-2-col-info">
<xsl:with-param name="col1">
<xsl:if test="xr:PRICE_DETAILS/xr:Item_price_discount">
<xsl:value-of select="xrf:field-label('xr:Item_price_discount')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="format-number(xr:PRICE_DETAILS/xr:Item_price_discount, $at-least-two-picture, $lang)"/>
</xsl:if>
</xsl:with-param>
<xsl:with-param name="col2">
<xsl:if test="xr:PRICE_DETAILS/xr:Item_gross_price">
<xsl:value-of select="xrf:field-label('xr:Item_gross_price')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="format-number(xr:PRICE_DETAILS/xr:Item_gross_price, $at-least-two-picture, $lang)"/>
</xsl:if>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:if test="xr:ITEM_INFORMATION/xr:Item_Sellers_identifier | xr:ITEM_INFORMATION/xr:Item_Buyers_identifier">
<xsl:call-template name="invoiceline-tabular-2-col-info">
<xsl:with-param name="col1">
<xsl:if test="xr:ITEM_INFORMATION/xr:Item_Sellers_identifier">
<xsl:value-of select="xrf:field-label('xr:Item_Sellers_identifier')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="xr:ITEM_INFORMATION/xr:Item_Sellers_identifier"/>
</xsl:if>
</xsl:with-param>
<xsl:with-param name="col2">
<xsl:if test="xr:ITEM_INFORMATION/xr:Item_Buyers_identifier">
<xsl:value-of select="xrf:field-label('xr:Item_Buyers_identifier')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="xr:ITEM_INFORMATION/xr:Item_Buyers_identifier"/>
</xsl:if>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:if test="xr:ITEM_INFORMATION/xr:Item_standard_identifier">
<xsl:call-template name="invoiceline-tabular-2-col-info">
<xsl:with-param name="col1">
<xsl:value-of select="xrf:field-label('xr:Item_standard_identifier')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="xr:ITEM_INFORMATION/xr:Item_standard_identifier"/>
</xsl:with-param>
<xsl:with-param name="col2">
<xsl:if test="xr:ITEM_INFORMATION/xr:Item_standard_identifier/@scheme_identifier">
<xsl:value-of select="xrf:field-label('xr:Item_standard_identifier/@scheme_identifier')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="xr:ITEM_INFORMATION/xr:Item_standard_identifier/@scheme_identifier"/>
</xsl:if>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:if test="xr:ITEM_INFORMATION/xr:Item_country_of_origin">
<xsl:call-template name="invoiceline-tabular-2-col-info">
<xsl:with-param name="col1">
<xsl:value-of select="xrf:field-label('xr:Item_country_of_origin')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="xr:ITEM_INFORMATION/xr:Item_country_of_origin"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="xr:ITEM_INFORMATION/xr:Item_classification_identifier">
<xsl:call-template name="invoiceline-tabular-2-col-info">
<xsl:with-param name="col1">
<xsl:value-of select="xrf:field-label('xr:Item_classification_identifier')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="."/>
</xsl:with-param>
<xsl:with-param name="col2">
<xsl:if test="@scheme_identifier">
<xsl:value-of select="xrf:field-label('xr:Item_classification_identifier/@scheme_identifier')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="@scheme_identifier"/>
</xsl:if>
</xsl:with-param>
</xsl:call-template>
<xsl:call-template name="invoiceline-tabular-2-col-info">
<xsl:with-param name="col2">
<xsl:if test="@scheme_version_identifier">
<xsl:value-of select="xrf:field-label('xr:Item_classification_identifier/@scheme_version_identifier')"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="@scheme_version_identifier"/>
</xsl:if>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
<xsl:for-each select="xr:ITEM_INFORMATION/xr:ITEM_ATTRIBUTES">
<xsl:call-template name="invoiceline-tabular-2-col-info">
<xsl:with-param name="col1">
<xsl:value-of select="xr:Item_attribute_name"/>
<xsl:text>: </xsl:text>
<xsl:value-of select="xr:Item_attribute_value"/>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
<xsl:if test="xr:INVOICE_LINE_ALLOWANCES">
<fo:table-row xsl:use-attribute-sets="invoicelines-table-row">
<fo:table-cell>
<fo:block/>
</fo:table-cell>
<fo:table-cell padding-left="{count(ancestor-or-self::xr:SUB_INVOICE_LINE)}em" number-columns-spanned="6">
<fo:table xsl:use-attribute-sets="invoicelines-allowances-table">
<fo:table-column column-width="proportional-column-width(6)"/>
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-column column-width="proportional-column-width(2)"/>
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-column column-width="proportional-column-width(2)"/>
<fo:table-header xsl:use-attribute-sets="invoicelines-table-header">
<fo:table-row>
<fo:table-cell>
<fo:block>
<xsl:value-of select="xrf:field-label('xr:Invoice_line_allowance_reason')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<!-- Standard full description is too long -->
<!--<xsl:value-of select="xrf:field-label('xr:Invoice_line_allowance_reason_code')"/>-->
Code
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" padding-right="1em">
<fo:block>
<xsl:value-of select="xrf:field-label('xr:Invoice_line_allowance_base_amount')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="center">
<fo:block>
<xsl:value-of select="xrf:field-label('xr:Invoice_line_allowance_percentage')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right">
<fo:block>
<xsl:value-of select="xrf:field-label('xr:Invoice_line_allowance_amount')"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<xsl:for-each select="xr:INVOICE_LINE_ALLOWANCES">
<fo:table-row>
<fo:table-cell>
<fo:block>
<xsl:value-of select="xr:Invoice_line_allowance_reason"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="xr:Invoice_line_allowance_reason_code"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" padding-right="1em">
<fo:block>
<xsl:value-of select="xr:Invoice_line_allowance_base_amount"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="center">
<fo:block>
<xsl:value-of select="concat(format-number(xr:Invoice_line_allowance_percentage, $percentage-picture, $lang), '%')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right">
<fo:block>
<xsl:value-of select="xr:Invoice_line_allowance_amount"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</fo:table-cell>
<fo:table-cell>
<fo:block/>
</fo:table-cell>
</fo:table-row>
</xsl:if>
<xsl:if test="xr:INVOICE_LINE_CHARGES">
<fo:table-row xsl:use-attribute-sets="invoicelines-table-row">
<fo:table-cell>
<fo:block/>
</fo:table-cell>
<fo:table-cell padding-left="{count(ancestor-or-self::xr:SUB_INVOICE_LINE)}em" number-columns-spanned="6">
<fo:table xsl:use-attribute-sets="invoicelines-allowances-table">
<fo:table-column column-width="proportional-column-width(6)"/>
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-column column-width="proportional-column-width(2)"/>
<fo:table-column column-width="proportional-column-width(1)"/>
<fo:table-column column-width="proportional-column-width(2)"/>
<fo:table-header xsl:use-attribute-sets="invoicelines-table-header">
<fo:table-row>
<fo:table-cell>
<fo:block>
<xsl:value-of select="xrf:field-label('xr:Invoice_line_charge_reason')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<!-- Standard full description is too long -->
<!--<xsl:value-of select="xrf:field-label('xr:Invoice_line_charge_reason_code')"/>-->
Code
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" padding-right="1em">
<fo:block>
<xsl:value-of select="xrf:field-label('xr:Invoice_line_charge_base_amount')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="center">
<fo:block>
<xsl:value-of select="xrf:field-label('xr:Invoice_line_charge_percentage')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right">
<fo:block>
<xsl:value-of select="xrf:field-label('xr:Invoice_line_charge_amount')"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<xsl:for-each select="xr:INVOICE_LINE_CHARGES">
<fo:table-row>
<fo:table-cell>
<fo:block>
<xsl:value-of select="xr:Invoice_line_charge_reason"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>
<xsl:value-of select="xr:Invoice_line_charge_reason_code"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right" padding-right="1em">
<fo:block>
<xsl:value-of select="xr:Invoice_line_charge_base_amount"/>
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="center">
<fo:block>
<xsl:value-of select="concat(format-number(xr:Invoice_line_charge_percentage, $percentage-picture, $lang), '%')" />
</fo:block>
</fo:table-cell>
<fo:table-cell text-align="right">
<fo:block>
<xsl:value-of select="xr:Invoice_line_charge_amount"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</fo:table-cell>
<fo:table-cell>
<fo:block/>
</fo:table-cell>
</fo:table-row>
</xsl:if>
<xsl:apply-templates select="xr:SUB_INVOICE_LINE" mode="invoiceline-tabular"/>
</xsl:template>
<xsl:template name="invoiceline-tabular-2-col-info">
<xsl:param name="col1"/>
<xsl:param name="col2"/>
<fo:table-row xsl:use-attribute-sets="invoicelines-nested-info">
<fo:table-cell>
<fo:block/>
</fo:table-cell>
<fo:table-cell padding-left="{count(ancestor-or-self::xr:SUB_INVOICE_LINE)}em" number-columns-spanned="6">
<fo:list-block>
<fo:list-item provisional-distance-between-starts="50%">
<fo:list-item-label end-indent="label-end()">
<fo:block>
<xsl:copy-of select="$col1"/>
</fo:block>
</fo:list-item-label>
<fo:list-item-body start-indent="body-start()">
<fo:block>
<xsl:copy-of select="$col2"/>
</fo:block>
</fo:list-item-body>
</fo:list-item>
</fo:list-block>
</fo:table-cell>
<fo:table-cell>
<fo:block/>
</fo:table-cell>
</fo:table-row>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
xmlns:xr="urn:ce.eu:en16931:2017:xoev-de:kosit:standard:xrechnung-1"
version="2.0">
<xsl:template name="generiere-layout-master-set">
<fo:layout-master-set>
<fo:simple-page-master master-name="A4Hoch"
page-height="297mm"
page-width="210mm">
<fo:region-body region-name="xrBody"
margin="20mm 10mm 20mm 20mm"
column-count="2"
column-gap="8mm"/>
<fo:region-before region-name="header"
extent="20mm"/>
<fo:region-after region-name="footer"
extent="20mm"/>
<fo:region-start region-name="innen"
extent="20mm"/>
<fo:region-end region-name="aussen"
extent="10mm"/>
</fo:simple-page-master>
<fo:page-sequence-master master-name="xrDokument">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference master-reference="A4Hoch" />
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
</fo:layout-master-set>
</xsl:template>
</xsl:stylesheet>

View file

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
xmlns:xr="urn:ce.eu:en16931:2017:xoev-de:kosit:standard:xrechnung-1"
xmlns:xrf="https://projekte.kosit.org/xrechnung/xrechnung-visualization/functions"
version="2.0">
<xsl:template name="generiere-page-sequence">
<xsl:param name="body-content-flow" required="yes" as="node()"/>
<fo:page-sequence master-reference="xrDokument">
<!-- Header -->
<fo:static-content flow-name="header">
<fo:block-container height="10mm"
display-align="after">
<fo:block>
<fo:table width="100%"
font-family="{$fontSans}"
font-size="9pt">
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block font-weight="bold">
<xsl:value-of select="xrf:_('_no-content')"/>
</fo:block>
</fo:table-cell>
<fo:table-cell white-space="nowrap"
text-align="end">
<fo:block>
<xsl:value-of select="./xr:SELLER/xr:Seller_VAT_identifier"/>/<xsl:value-of select="xr:Invoice_number"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</fo:block-container>
<fo:block-container height="17mm"
display-align="after">
<fo:block xsl:use-attribute-sets="marker">
<fo:inline>
<fo:retrieve-marker retrieve-class-name="aktueller-bereich-forts"
retrieve-position="first-including-carryover"/>
</fo:inline>
</fo:block>
</fo:block-container>
</fo:static-content>
<!-- Footer -->
<fo:static-content flow-name="footer">
<fo:block-container height="12mm"
display-align="after">
<fo:block font-family="{$fontSans}"
font-size="9pt"
text-align="center">
<fo:block><xsl:value-of select="xrf:_('_page')"/><xsl:text> </xsl:text><fo:page-number/> / <fo:page-number-citation ref-id="seitenzahlLetzteSeite"/></fo:block>
</fo:block>
</fo:block-container>
</fo:static-content>
<!-- Content -->
<xsl:copy-of select="$body-content-flow"/>
</fo:page-sequence>
</xsl:template>
</xsl:stylesheet>

File diff suppressed because it is too large Load diff

View file

@ -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;
}
}

View file

@ -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;
};
});