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

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