Merge branch 'master' of github.com:ZUGFeRD/mustangproject

This commit is contained in:
jstaerk
2025-01-06 10:25:44 +01:00
26 changed files with 4562 additions and 4191 deletions

View File

@@ -45,7 +45,7 @@
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.13</version>
<version>1.5.13</version>
</dependency>
<dependency>
<!-- This library is needed so that logback stderr output is sent to, well, stderr, otherwise it lands in stdout -->

View File

@@ -3,11 +3,14 @@ package org.mustangproject.Exceptions;
import java.text.ParseException;
/***
* will be thrown if a invoice cant be reproduced numerically
* will be thrown if an invoice cant be reproduced numerically
*/
public class ArithmetricException extends ParseException {
public ArithmetricException() {
super(
"Could not reproduce the invoice, this could mean that it could not be read properly", 0);
this("");
}
public ArithmetricException(String details) {
super("Could not reproduce the invoice. " + details, 0);
}
}

View File

@@ -38,7 +38,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Invoice implements IExportableTransaction {
protected String documentName = null, documentCode = null, number = null, ownOrganisationFullPlaintextInfo = null, referenceNumber = null, shipToOrganisationID = null, shipToOrganisationName = null, shipToStreet = null, shipToZIP = null, shipToLocation = null, shipToCountry = null, buyerOrderReferencedDocumentID = null, invoiceReferencedDocumentID = null, buyerOrderReferencedDocumentIssueDateTime = null, ownForeignOrganisationID = null, ownOrganisationName = null, currency = null, paymentTermDescription = null;
protected String documentName = null, documentCode = null, number = null, ownOrganisationFullPlaintextInfo = null, referenceNumber = null, shipToOrganisationID = null, shipToOrganisationName = null, shipToStreet = null, shipToZIP = null, shipToLocation = null, shipToCountry = null, buyerOrderReferencedDocumentID = null, buyerOrderReferencedDocumentIssueDateTime = null, ownForeignOrganisationID = null, ownOrganisationName = null, currency = null, paymentTermDescription = null;
protected Date issueDate = null, dueDate = null, deliveryDate = null;
protected TradeParty sender = null, recipient = null, deliveryAddress = null, payee = null;
protected ArrayList<CashDiscount> cashDiscounts = null;
@@ -57,7 +57,12 @@ public class Invoice implements IExportableTransaction {
protected ArrayList<IZUGFeRDAllowanceCharge> Allowances = new ArrayList<>(),
Charges = new ArrayList<>(), LogisticsServiceCharges = new ArrayList<>();
protected IZUGFeRDPaymentTerms paymentTerms = null;
protected String invoiceReferencedDocumentID = null;
protected Date invoiceReferencedIssueDate;
// New field for storing Invoiced Object Identifier (BG-3)
protected ArrayList<ReferencedDocument> invoiceReferencedDocuments = null;
protected String specifiedProcuringProjectID = null;
protected String specifiedProcuringProjectName = null;
protected String despatchAdviceReferencedDocumentID = null;
@@ -148,6 +153,7 @@ public class Invoice implements IExportableTransaction {
*/
public Invoice setCorrection(String number) {
setInvoiceReferencedDocumentID(number);
addInvoiceReferencedDocument(new ReferencedDocument(number));
documentCode = DocumentCodeTypeConstants.CORRECTEDINVOICE;
return this;
}
@@ -546,6 +552,26 @@ public class Invoice implements IExportableTransaction {
return this;
}
// Getter for BG-3
@Override
public ArrayList<ReferencedDocument> getInvoiceReferencedDocuments() {
return invoiceReferencedDocuments;
}
// Setter for BG-3
public void setInvoiceReferencedDocuments(ArrayList<ReferencedDocument> invoiceReferencedDocuments) {
this.invoiceReferencedDocuments = invoiceReferencedDocuments;
}
// Method to add a single ReferencedDocument for BG-3
public Invoice addInvoiceReferencedDocument(ReferencedDocument doc) {
if (invoiceReferencedDocuments == null) {
invoiceReferencedDocuments = new ArrayList<>();
}
invoiceReferencedDocuments.add(doc);
return this;
}
@Override
public IZUGFeRDAllowanceCharge[] getZFAllowances() {
if (Allowances.isEmpty()) {

View File

@@ -2,6 +2,8 @@ package org.mustangproject;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.Date;
import org.mustangproject.ZUGFeRD.IReferencedDocument;
import org.mustangproject.util.NodeMap;
import org.w3c.dom.Node;
@@ -13,20 +15,33 @@ public class ReferencedDocument implements IReferencedDocument {
String issuerAssignedID;
String typeCode;
String referenceTypeCode;
Date formattedIssueDateTime;
public ReferencedDocument(String issuerAssignedID, String typeCode, String referenceTypeCode) {
this.issuerAssignedID = issuerAssignedID;
this(issuerAssignedID);
this.typeCode = typeCode;
this.referenceTypeCode = referenceTypeCode;
}
public ReferencedDocument(String issuerAssignedID, String referenceTypeCode) {
this.issuerAssignedID = issuerAssignedID;
this.typeCode = "916"; // additional invoice related document
this.referenceTypeCode = referenceTypeCode;
public ReferencedDocument(String issuerAssignedID, String typeCode, String referenceTypeCode, Date formattedIssueDateTime) {
this(issuerAssignedID, typeCode, referenceTypeCode);
this.formattedIssueDateTime = formattedIssueDateTime;
}
/***
public ReferencedDocument(String issuerAssignedID, String referenceTypeCode) {
this(issuerAssignedID, "916", referenceTypeCode); // additional invoice related document
}
public ReferencedDocument(String issuerAssingedID, Date formattedIssueDateTime) {
this(issuerAssingedID);
this.formattedIssueDateTime = formattedIssueDateTime;
}
public ReferencedDocument(String issuerAssignedID) {
this.issuerAssignedID = issuerAssignedID;
}
/***
* sets an ID assigned by the sender
* @param issuerAssignedID the ID as a string :-)
*/
@@ -50,6 +65,15 @@ public class ReferencedDocument implements IReferencedDocument {
this.referenceTypeCode = referenceTypeCode;
}
/**
* issue date of this line
*
* @param formattedIssueDateTime as Date
*/
public void setFormattedIssueDateTime(Date formattedIssueDateTime) {
this.formattedIssueDateTime = formattedIssueDateTime;
}
@Override
public String getIssuerAssignedID() {
return issuerAssignedID;
@@ -65,6 +89,12 @@ public class ReferencedDocument implements IReferencedDocument {
return referenceTypeCode;
}
@Override
public Date getFormattedIssueDateTime()
{
return formattedIssueDateTime;
}
public static ReferencedDocument fromNode(Node node) {
if (!node.hasChildNodes()) {
return null;
@@ -72,6 +102,7 @@ public class ReferencedDocument implements IReferencedDocument {
NodeMap nodes = new NodeMap(node);
return new ReferencedDocument(nodes.getAsStringOrNull("IssuerAssignedID", "ID"),
nodes.getAsStringOrNull("TypeCode", "DocumentTypeCode"),
nodes.getAsStringOrNull("ReferenceTypeCode"));
nodes.getAsStringOrNull("ReferenceTypeCode"),
XMLTools.tryDate(nodes.getAsStringOrNull("FormattedIssueDateTime")));
}
}

View File

@@ -30,11 +30,13 @@ package org.mustangproject.ZUGFeRD;
* */
import java.math.BigDecimal;
import java.util.Date;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.mustangproject.FileAttachment;
import org.mustangproject.IncludedNote;
import org.mustangproject.ReferencedDocument;
import org.mustangproject.ZUGFeRD.model.DocumentCodeTypeConstants;
/***
@@ -424,13 +426,23 @@ public interface IExportableTransaction {
*
* @return the ID of the document
*/
@Deprecated
default String getInvoiceReferencedDocumentID() {
return null;
}
@Deprecated
default Date getInvoiceReferencedIssueDate() {
return null;
}
/**
* Getter for BG-3
* @return list of documents
*/
default ArrayList<ReferencedDocument> getInvoiceReferencedDocuments() {
return null;
}
/**
* get the issue timestamp of the BuyerOrderReferencedDocument, which sits in

View File

@@ -1,5 +1,7 @@
package org.mustangproject.ZUGFeRD;
import java.util.Date;
public interface IReferencedDocument {
/***
@@ -20,4 +22,12 @@ public interface IReferencedDocument {
*/
String getReferenceTypeCode();
/***
*
* issue date of this line
*
* @return date of the issue
*/
Date getFormattedIssueDateTime();
}

View File

@@ -459,6 +459,19 @@ public class OXPullProvider extends ZUGFeRD2PullProvider {
}
xml += "</ram:InvoiceReferencedDocument>";
}
if (trans.getInvoiceReferencedDocuments() != null) {
for (var doc : trans.getInvoiceReferencedDocuments()) {
xml += "<ram:InvoiceReferencedDocument>"
+ "<ram:IssuerAssignedID>"
+ XMLTools.encodeXML(doc.getIssuerAssignedID()) + "</ram:IssuerAssignedID>";
if (doc.getFormattedIssueDateTime() != null) {
xml += "<ram:FormattedIssueDateTime>"
+ DATE.qdtFormat(doc.getFormattedIssueDateTime())
+ "</ram:FormattedIssueDateTime>";
}
xml += "</ram:InvoiceReferencedDocument>";
}
}
xml += "</ram:ApplicableHeaderTradeSettlement>";
// + " <IncludedSupplyChainTradeLineItem>"

View File

@@ -4,7 +4,10 @@ import static java.math.BigDecimal.ZERO;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/***
@@ -91,17 +94,14 @@ public class TransactionCalculator implements IAbsoluteValueProvider {
}
private String getAllowanceChargeReasonForPercent(BigDecimal percent, IZUGFeRDAllowanceCharge[] charges) {
String res = " ";
if ((charges != null) && (charges.length > 0)) {
for (IZUGFeRDAllowanceCharge currentCharge : charges) {
if ((percent == null) || (currentCharge.getTaxPercent().compareTo(percent) == 0)
&& currentCharge.getReason() != null) {
res += currentCharge.getReason() + " ";
}
}
if (charges == null) {
return "";
}
res = res.substring(0, res.length() - 1);
return res;
return Arrays.stream(charges)
.filter(currentCharge -> (percent == null || currentCharge.getTaxPercent().compareTo(percent) == 0))
.map(IZUGFeRDAllowanceCharge::getReason)
.filter(Objects::nonNull)
.collect(Collectors.joining(" "));
}
/***

View File

@@ -828,6 +828,12 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
if (paymentTermsDescription != null) {
xml += "<ram:Description>" + paymentTermsDescription + "</ram:Description>";
}
if (trans.getDueDate() != null) {
xml += "<ram:DueDateDateTime>" // $NON-NLS-2$
+ DATE.udtFormat(trans.getDueDate())
+ "</ram:DueDateDateTime>";// 20130704
}
if (trans.getTradeSettlement() != null) {
for (final IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) {
@@ -837,12 +843,6 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
}
}
if (trans.getDueDate() != null) {
xml += "<ram:DueDateDateTime>" // $NON-NLS-2$
+ DATE.udtFormat(trans.getDueDate())
+ "</ram:DueDateDateTime>";// 20130704
}
xml += "</ram:SpecifiedTradePaymentTerms>";
} else {
xml += buildPaymentTermsXml();
@@ -893,6 +893,19 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
}
xml += "</ram:InvoiceReferencedDocument>";
}
if (trans.getInvoiceReferencedDocuments() != null) {
for (var doc : trans.getInvoiceReferencedDocuments()) {
xml += "<ram:InvoiceReferencedDocument>"
+ "<ram:IssuerAssignedID>"
+ XMLTools.encodeXML(doc.getIssuerAssignedID()) + "</ram:IssuerAssignedID>";
if (doc.getFormattedIssueDateTime() != null) {
xml += "<ram:FormattedIssueDateTime>"
+ DATE.qdtFormat(doc.getFormattedIssueDateTime())
+ "</ram:FormattedIssueDateTime>";
}
xml += "</ram:InvoiceReferencedDocument>";
}
}
xml += "</ram:ApplicableHeaderTradeSettlement>";
// + "<IncludedSupplyChainTradeLineItem>\n"

View File

@@ -32,6 +32,9 @@ import java.nio.file.StandardOpenOption;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ZUGFeRDInvoiceImporter {
@@ -472,9 +475,11 @@ public class ZUGFeRDInvoiceImporter {
xpr = xpath.compile("//*[local-name()=\"SpecifiedTradeSettlementHeaderMonetarySummation\"]/*[local-name()=\"DuePayableAmount\"]|//*[local-name()=\"LegalMonetaryTotal\"]/*[local-name()=\"PayableAmount\"]");
NodeList lineDueNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
BigDecimal duePayableAmount = null;
if (lineDueNodes.getLength() > 0) {
duePayableAmount = new BigDecimal(XMLTools.trimOrNull(lineDueNodes.item(0)));
if (zpp instanceof CalculatedInvoice) {
((CalculatedInvoice) zpp).setDuePayable(new BigDecimal(XMLTools.trimOrNull(lineDueNodes.item(0))));
((CalculatedInvoice) zpp).setDuePayable(duePayableAmount);
}
}
@@ -816,6 +821,23 @@ public class ZUGFeRDInvoiceImporter {
}
zpp.setInvoiceReferencedDocumentID(extractString("//*[local-name()=\"InvoiceReferencedDocument\"]/*[local-name()=\"IssuerAssignedID\"]|//*[local-name()=\"BillingReference\"]/*[local-name()=\"InvoiceDocumentReference\"]/*[local-name()=\"ID\"]"));
xpr = xpath.compile("//*[local-name()=\"InvoiceReferencedDocument\"]");
NodeList nodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
if (nodes.getLength() != 0) {
for (int i = 0; i < nodes.getLength(); i++) {
Node currentItemNode = nodes.item(i);
ReferencedDocument doc = ReferencedDocument.fromNode(currentItemNode);
if (doc != null
&& (!Objects.equals(zpp.getInvoiceReferencedDocumentID(), doc.getIssuerAssignedID())
|| !Objects.equals(zpp.getInvoiceReferencedIssueDate(), doc.getFormattedIssueDateTime())))
{
zpp.addInvoiceReferencedDocument(doc);
}
}
}
zpp.setOwnOrganisationName(extractString("//*[local-name()=\"SellerTradeParty\"]/*[local-name()=\"Name\"]|//*[local-name()=\"AccountingSupplierParty\"]/*[local-name()=\"Party\"]/*[local-name()=\"PartyName\"]").trim());
String rounding = extractString("//*[local-name()=\"SpecifiedTradeSettlementHeaderMonetarySummation\"]/*[local-name()=\"RoundingAmount\"]|//*[local-name()=\"LegalMonetaryTotal\"]/*[local-name()=\"Party\"]/*[local-name()=\"PayableRoundingAmount\"]");
@@ -834,7 +856,7 @@ public class ZUGFeRDInvoiceImporter {
}
xpr = xpath.compile("//*[local-name()=\"IncludedSupplyChainTradeLineItem\"]|//*[local-name()=\"InvoiceLine\"]");
NodeList nodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
nodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
if (nodes.getLength() != 0) {
for (int i = 0; i < nodes.getLength(); i++) {
@@ -938,8 +960,7 @@ public class ZUGFeRDInvoiceImporter {
TransactionCalculator tc = new TransactionCalculator(zpp);
String expectedStringTotalGross = tc.getGrandTotal()
.subtract(Objects.requireNonNullElse(zpp.getTotalPrepaidAmount(), BigDecimal.ZERO)).toPlainString();
String calculatedPayableTotal = tc.getDuePayable().toPlainString();
EStandard whichType;
try {
whichType = getStandard();
@@ -947,10 +968,21 @@ public class ZUGFeRDInvoiceImporter {
throw new StructureException("Could not find out if it's an invoice, order, or delivery advice", 0);
}
if ((whichType != EStandard.despatchadvice)
&& ((!expectedStringTotalGross.equals(XMLTools.nDigitFormat(expectedGrandTotal, 2)))
&& (!ignoreCalculationErrors))) {
throw new ArithmetricException();
if (whichType != EStandard.despatchadvice && !ignoreCalculationErrors) {
// Check calculation if document type allows it and calculation errors should not be ignored
String payableTotalFromXml = XMLTools.nDigitFormat(Objects.requireNonNullElse(duePayableAmount, expectedGrandTotal), 2);
if (!calculatedPayableTotal.equals(payableTotalFromXml)) {
String moreDetails = "";
try {
moreDetails = " with tax basis " + tc.getTaxBasis() + " and with positions " + tc.getTotal() + " = "
+ Stream.of(tc.trans.getZFItems())
.map(item -> new LineCalculator(item).getItemTotalNetAmount().toPlainString())
.collect(Collectors.joining(" + "));
} catch (Exception ignored) {
}
throw new ArithmetricException("Payable total in XML is " + payableTotalFromXml + ", but calculated total is " + calculatedPayableTotal + moreDetails);
}
}
}
return zpp;
@@ -1068,5 +1100,4 @@ public class ZUGFeRDInvoiceImporter {
LOGGER.error(e.getMessage(), e);
}
}
}

View File

@@ -20,42 +20,9 @@
*/
package org.mustangproject.ZUGFeRD;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Templates;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.URIResolver;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.FopFactoryBuilder;
import com.helger.commons.io.stream.StreamHelper;
import org.apache.commons.io.IOUtils;
import org.apache.fop.apps.*;
import org.apache.fop.apps.io.ResourceResolverFactory;
import org.apache.fop.configuration.Configuration;
import org.apache.fop.configuration.ConfigurationException;
@@ -65,12 +32,19 @@ import org.mustangproject.ClasspathResolverURIAdapter;
import org.mustangproject.EStandard;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.helger.commons.io.stream.StreamHelper;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.*;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Optional;
public class ZUGFeRDVisualizer {
@@ -113,7 +87,7 @@ public class ZUGFeRDVisualizer {
* @param fis inputstream (will be consumed)
* @return (facturx = cii)
*/
public EStandard findOutStandardFromRootNode(InputStream fis) {
private EStandard findOutStandardFromRootNode(InputStream fis) {
String zf1Signature = "CrossIndustryDocument";
String zf2Signature = "CrossIndustryInvoice";
@@ -144,106 +118,97 @@ public class ZUGFeRDVisualizer {
return null;
}
public String visualize(String xmlFilename, Language lang)
throws FileNotFoundException, TransformerException, IOException, SAXException, ParserConfigurationException {
try {
if (mXsltPDFTemplate == null) {
mXsltPDFTemplate = mFactory.newTemplates(
new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/xr-pdf.xsl")));
}
if (mXsltHTMLTemplate == null) {
mXsltHTMLTemplate = mFactory.newTemplates(new StreamSource(
CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/xrechnung-html." + lang.name().toLowerCase() + ".xsl")));
}
if (mXsltZF1HTMLTemplate == null) {
mXsltZF1HTMLTemplate = mFactory.newTemplates(new StreamSource(
CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/ZUGFeRD_1p0_c1p0_s1p0.xslt")));
}
} catch (TransformerConfigurationException ex) {
LOGGER.error("Failed to init XSLT templates", ex);
}
/**
* *
* http://www.unece.org/fileadmin/DAM/cefact/xml/XML-Naming-And-Design-Rules-V2_1.pdf
* http://www.ferd-net.de/upload/Dokumente/FACTUR-X_ZUGFeRD_2p0_Teil1_Profil_EN16931_1p03.pdf
* http://countwordsfree.com/xmlviewer
*/
public String visualize(String xmlFilename, Language lang) throws IOException, TransformerException {
FileInputStream fis = new FileInputStream(xmlFilename);
String fileContent = "";
try {
fileContent = new String(Files.readAllBytes(Paths.get(xmlFilename)), StandardCharsets.UTF_8);
} catch (IOException e2) {
LOGGER.error("Failed to read file content", e2);
}
return visualize(fis, lang);
}
ByteArrayOutputStream iaos = new ByteArrayOutputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
public String visualize(InputStream inputXml, Language lang) throws IOException, TransformerException {
initTemplates(lang);
boolean doPostProcessing = false;
String fileContent = new String(IOUtils.toByteArray(inputXml), StandardCharsets.UTF_8);
EStandard thestandard = findOutStandardFromRootNode(new ByteArrayInputStream(fileContent.getBytes(StandardCharsets.UTF_8)));
ByteArrayOutputStream htmlOutput = new ByteArrayOutputStream();
fis = new FileInputStream(xmlFilename); // fis wont reset() so re-read from beginning
EStandard thestandard = findOutStandardFromRootNode(fis);
fis = new FileInputStream(xmlFilename); // fis wont reset() so re-read from beginning
ByteArrayInputStream xmlContentStream = new ByteArrayInputStream(fileContent.getBytes(StandardCharsets.UTF_8));
if (thestandard == EStandard.zugferd) {
applyZF1XSLT(fis, baos);
applyZF1XSLT(xmlContentStream, htmlOutput);
return htmlOutput.toString(StandardCharsets.UTF_8);
} else if (thestandard == EStandard.facturx) {
//zf2 or fx
applyZF2XSLT(fis, iaos);
doPostProcessing = true;
applyZF2XSLT(xmlContentStream, htmlOutput);
} else if (thestandard == EStandard.ubl) {
//zf2 or fx
applyUBL2XSLT(fis, iaos);
doPostProcessing = true;
applyUBL2XSLT(xmlContentStream, htmlOutput);
} else if (thestandard == EStandard.ubl_creditnote) {
//zf2 or fx
applyUBLCreditNote2XSLT(fis, iaos);
doPostProcessing = true;
applyUBLCreditNote2XSLT(xmlContentStream, htmlOutput);
} else if (thestandard == EStandard.orderx) {
//zf2 or fx
applyCIO2XSLT(fis, iaos);
doPostProcessing = true;
applyCIO2XSLT(xmlContentStream, htmlOutput);
} else {
throw new IllegalArgumentException("File does not look like CII or UBL");
}
if (doPostProcessing) {
// take the copy of the stream and re-write it to an InputStream
PipedInputStream in = new PipedInputStream();
PipedOutputStream out;
try {
out = new PipedOutputStream(in);
new Thread(new Runnable() {
public void run() {
try {
// write the original OutputStream to the PipedOutputStream
// note that in order for the below method to work, you need
// to ensure that the data has finished writing to the
// ByteArrayOutputStream
iaos.writeTo(out);
} catch (IOException e) {
LOGGER.error("Failed to write to stream", e);
} finally {
// close the PipedOutputStream here because we're done writing data
// once this thread has completed its run
StreamHelper.close(out);
}
}
}).start();
applyXSLTToHTML(in, baos);
} catch (IOException e1) {
LOGGER.error("Failed to create HTML", e1);
}
Optional<InputStream> in = copyStream(htmlOutput);
ByteArrayOutputStream htmlOutStream = new ByteArrayOutputStream();
if (in.isPresent()) {
applyXSLTToHTML(in.get(), htmlOutStream);
}
return baos.toString(StandardCharsets.UTF_8);
return htmlOutStream.toString(StandardCharsets.UTF_8);
}
/**
* TODO: jstaerk: why not copy with that simple call: new ByteArrayInputStream(byteArrayOutputStream.toByteArray()) ?
*/
private Optional<InputStream> copyStream(ByteArrayOutputStream byteArrayOutputStream) {
// take the copy of the stream and re-write it to an InputStream
PipedInputStream in = new PipedInputStream();
try {
PipedOutputStream out = new PipedOutputStream(in);
new Thread(() -> {
try {
// write the original OutputStream to the PipedOutputStream
// note that in order for the below method to work, you need
// to ensure that the data has finished writing to the
// ByteArrayOutputStream
byteArrayOutputStream.writeTo(out);
} catch (IOException e) {
LOGGER.error("Failed to write to stream", e);
} finally {
// close the PipedOutputStream here because we're done writing data
// once this thread has completed its run
StreamHelper.close(out);
}
}).start();
} catch (IOException e1) {
LOGGER.error("Failed to create HTML", e1);
return Optional.empty();
}
return Optional.of(in);
}
private void initTemplates(Language lang) throws TransformerConfigurationException {
if (mXsltXRTemplate == null) {
mXsltXRTemplate = mFactory.newTemplates(
new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/cii-xr.xsl")));
}
if (mXsltHTMLTemplate == null) {
mXsltHTMLTemplate = mFactory.newTemplates(new StreamSource(
CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/xrechnung-html." + lang.name().toLowerCase() + ".xsl")));
}
if (mXsltZF1HTMLTemplate == null) {
mXsltZF1HTMLTemplate = mFactory.newTemplates(new StreamSource(
CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/ZUGFeRD_1p0_c1p0_s1p0.xslt")));
}
}
protected String toFOP(String xmlFilename)
throws FileNotFoundException, TransformerException {
throws IOException, TransformerException {
FileInputStream fis = new FileInputStream(xmlFilename);
EStandard theStandard = findOutStandardFromRootNode(fis);
@@ -253,8 +218,8 @@ public class ZUGFeRDVisualizer {
}
protected String toFOP(InputStream is, EStandard theStandard)
throws FileNotFoundException, TransformerException {
throws TransformerException, IOException {
try {
if (mXsltPDFTemplate == null) {
mXsltPDFTemplate = mFactory.newTemplates(
@@ -265,7 +230,6 @@ public class ZUGFeRDVisualizer {
}
ByteArrayOutputStream iaos = new ByteArrayOutputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//zf2 or fx
if (theStandard == EStandard.facturx) {
@@ -277,33 +241,11 @@ public class ZUGFeRDVisualizer {
}
PipedInputStream in = new PipedInputStream();
PipedOutputStream out;
try {
out = new PipedOutputStream(in);
new Thread(new Runnable() {
public void run() {
try {
// write the original OutputStream to the PipedOutputStream
// note that in order for the below method to work, you need
// to ensure that the data has finished writing to the
// ByteArrayOutputStream
iaos.writeTo(out);
} catch (IOException e) {
LOGGER.error("Failed to write to stream", e);
} finally {
// close the PipedOutputStream here because we're done writing data
// once this thread has completed its run
StreamHelper.close(out);
}
}
}).start();
applyXSLTToPDF(in, baos);
} catch (IOException e1) {
LOGGER.error("Failed to create PDF", e1);
Optional<InputStream> in = copyStream(iaos);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if (in.isPresent()) {
applyXSLTToPDF(in.get(), baos);
}
return baos.toString(StandardCharsets.UTF_8);
}
@@ -319,7 +261,7 @@ public class ZUGFeRDVisualizer {
*/
try {
result = this.toFOP(XMLinputFile.getAbsolutePath());
} catch (FileNotFoundException | TransformerException e) {
} catch (TransformerException | IOException e) {
LOGGER.error("Failed to apply FOP", e);
}
DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();
@@ -373,7 +315,7 @@ public class ZUGFeRDVisualizer {
}
}
protected void applyZF2XSLT(final InputStream xmlFile, final OutputStream HTMLOutstream)
protected void applyZF2XSLT(final InputStream xmlFile, final OutputStream htmlOutStream)
throws TransformerException {
if (mXsltXRTemplate == null) {
mXsltXRTemplate = mFactory.newTemplates(
@@ -382,10 +324,10 @@ public class ZUGFeRDVisualizer {
}
Transformer transformer = mXsltXRTemplate.newTransformer();
transformer.transform(new StreamSource(xmlFile), new StreamResult(HTMLOutstream));
transformer.transform(new StreamSource(xmlFile), new StreamResult(htmlOutStream));
}
protected void applyCIO2XSLT(final InputStream xmlFile, final OutputStream HTMLOutstream)
protected void applyCIO2XSLT(final InputStream xmlFile, final OutputStream htmlOutstream)
throws TransformerException {
if (mXsltCIOTemplate == null) {
mXsltCIOTemplate = mFactory.newTemplates(
@@ -393,10 +335,10 @@ public class ZUGFeRDVisualizer {
}
Transformer transformer = mXsltCIOTemplate.newTransformer();
transformer.transform(new StreamSource(xmlFile), new StreamResult(HTMLOutstream));
transformer.transform(new StreamSource(xmlFile), new StreamResult(htmlOutstream));
}
protected void applyUBL2XSLT(final InputStream xmlFile, final OutputStream HTMLOutstream)
protected void applyUBL2XSLT(final InputStream xmlFile, final OutputStream htmlOutStream)
throws TransformerException {
if (mXsltUBLTemplate == null) {
mXsltUBLTemplate = mFactory.newTemplates(
@@ -404,10 +346,10 @@ public class ZUGFeRDVisualizer {
}
Transformer transformer = mXsltUBLTemplate.newTransformer();
transformer.transform(new StreamSource(xmlFile), new StreamResult(HTMLOutstream));
transformer.transform(new StreamSource(xmlFile), new StreamResult(htmlOutStream));
}
protected void applyUBLCreditNote2XSLT(final InputStream xmlFile, final OutputStream HTMLOutstream)
protected void applyUBLCreditNote2XSLT(final InputStream xmlFile, final OutputStream htmlOutStream)
throws TransformerException {
if (mXsltUBLTemplate == null) {
mXsltUBLTemplate = mFactory.newTemplates(
@@ -415,28 +357,30 @@ public class ZUGFeRDVisualizer {
}
Transformer transformer = mXsltUBLTemplate.newTransformer();
transformer.transform(new StreamSource(xmlFile), new StreamResult(HTMLOutstream));
transformer.transform(new StreamSource(xmlFile), new StreamResult(htmlOutStream));
}
protected void applyZF1XSLT(final InputStream xmlFile, final OutputStream HTMLOutstream)
protected void applyZF1XSLT(final InputStream xmlFile, final OutputStream htmlOutStream)
throws TransformerException {
Transformer transformer = mXsltZF1HTMLTemplate.newTransformer();
transformer.transform(new StreamSource(xmlFile), new StreamResult(HTMLOutstream));
transformer.transform(new StreamSource(xmlFile), new StreamResult(htmlOutStream));
}
protected void applyXSLTToHTML(final InputStream xmlFile, final OutputStream HTMLOutstream)
throws TransformerException {
protected void applyXSLTToHTML(final InputStream xmlFile, final OutputStream htmlOutStream)
throws TransformerException, IOException {
Transformer transformer = mXsltHTMLTemplate.newTransformer();
transformer.transform(new StreamSource(xmlFile), new StreamResult(HTMLOutstream));
transformer.transform(new StreamSource(xmlFile), new StreamResult(htmlOutStream));
xmlFile.close();
}
protected void applyXSLTToPDF(final InputStream xmlFile, final OutputStream PDFOutstream)
throws TransformerException {
throws TransformerException, IOException {
Transformer transformer = mXsltPDFTemplate.newTransformer();
transformer.transform(new StreamSource(xmlFile), new StreamResult(PDFOutstream));
xmlFile.close();
}
private static class ClasspathResourceURIResolver implements URIResolver {
@@ -445,7 +389,7 @@ public class ZUGFeRDVisualizer {
}
@Override
public Source resolve(String href, String base) throws TransformerException {
public Source resolve(String href, String base) {
return new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/" + href));
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,135 +1,135 @@
<?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:xs="http://www.w3.org/2001/XMLSchema"
version="2.0">
<!-- ==========================================================================
== Imports
=========================================================================== -->
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<!-- Imports -->
<xsl:import href="common-xr.xsl"/>
<xsl:import href="xr-pdf/lib/konstanten.xsl"/>
<!-- FO engine used can be specified. Specific extensions will be then enabled.
Supported values are:
axf - Antenna House XSL Formatter
fop - Apache FOP
-->
<!--
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"/>
<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()"/>
<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()"/>
<xsl:variable name="xml_result_color">
<xsl:if test="/validation/xml/summary/@status = 'valid' ">
<xsl:if test="/validation/xml/summary/@status = 'valid'">
<xsl:text>green</xsl:text>
</xsl:if>
<xsl:if test="/validation/xml/summary/@status = 'invalid' ">
<xsl:if test="/validation/xml/summary/@status = 'invalid'">
<xsl:text>red</xsl:text>
</xsl:if>
</xsl:variable>
<xsl:variable name="pdf_result_color">
<xsl:if test="/validation/pdf/summary/@status = 'valid' ">
<xsl:if test="/validation/pdf/summary/@status = 'valid'">
<xsl:text>green</xsl:text>
</xsl:if>
<xsl:if test="/validation/pdf/summary/@status = 'invalid' ">
<xsl:if test="/validation/pdf/summary/@status = 'invalid'">
<xsl:text>red</xsl:text>
</xsl:if>
</xsl:variable>
<xsl:variable name="pdf_result_text">
<xsl:if test="/validation/xml/summary/@status = 'valid' ">
<xsl:if test="/validation/xml/summary/@status = 'valid'">
<xsl:text>Das ZUGFeRD-PDF ist valide.</xsl:text>
</xsl:if>
<xsl:if test="/validation/xml/summary/@status = 'invalid' ">
<xsl:if test="/validation/xml/summary/@status = 'invalid'">
<xsl:text>Das ZUGFeRD-PDF ist nicht valide.</xsl:text>
</xsl:if>
</xsl:variable>
<xsl:variable name="result_text">
<xsl:if test="/validation/xml/summary/@status = 'valid' ">
<xsl:text>Es wird empfohlen das Dokument anzunehmen und weiter zu verarbeiten.</xsl:text>
<xsl:if test="/validation/xml/summary/@status = 'valid'">
<xsl:text>Es wird empfohlen, das Dokument anzunehmen und weiterzuverarbeiten.</xsl:text>
</xsl:if>
<xsl:if test="/validation/xml/summary/@status = 'invalid' ">
<xsl:text>Es wird empfohlen das Dokument zurückzuweisen.</xsl:text>
<xsl:if test="/validation/xml/summary/@status = 'invalid'">
<xsl:text>Es wird empfohlen, das Dokument zurückzuweisen.</xsl:text>
</xsl:if>
</xsl:variable>
<xsl:template match="validation">
<fo:root xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf"
language="{$lang}" font-family="{$fontSans}">
<fo:root language="{$lang}"
font-family="{$fontSans}">
<fo:layout-master-set>
<fo:simple-page-master master-name="DIN-A4" page-height="297mm" page-width="210mm">
<fo:region-body region-name="body" margin="20mm 10mm 20mm 20mm" />
<fo:simple-page-master master-name="DIN-A4"
page-height="297mm"
page-width="210mm">
<fo:region-body region-name="body"
margin="20mm 10mm 20mm 20mm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="DIN-A4">
<fo:flow flow-name="body">
<fo:block font-size="24px" font-weight="bold">
Prüfbericht
<fo:block font-size="24px"
font-weight="bold">
<xsl:text>Prüfbericht</xsl:text>
</fo:block>
<xsl:call-template name="SubHeader">
<xsl:with-param name="text" select='"Angaben zum geprüften Dokument"' />
<xsl:with-param name="color" select='"black"' />
<xsl:with-param name="text"
select="&#34;Angaben zum geprüften Dokument&#34;"/>
<xsl:with-param name="color"
select="&#34;black&#34;"/>
</xsl:call-template>
<fo:block>
<fo:block text-align="justify">
<fo:float float="right">
<fo:block >
<xsl:value-of select="/validation/@filename" />
<fo:block>
<xsl:value-of select="/validation/@filename"/>
</fo:block>
</fo:float>
Referenz:
<xsl:text>Referenz:</xsl:text>
</fo:block>
</fo:block>
<fo:block>
<fo:block text-align="justify">
<fo:float float="right">
<fo:block >
<xsl:value-of select="/validation/@datetime" />
<fo:block>
<xsl:value-of select="/validation/@datetime"/>
</fo:block>
</fo:float>
Zeitpunkt der Prüfung:
<xsl:text>Zeitpunkt der Prüfung:</xsl:text>
</fo:block>
</fo:block>
<fo:block>
<fo:block text-align="justify">
<fo:float float="right">
<fo:block >
<xsl:value-of select="/validation/xml/info/profile" />
<fo:block>
<xsl:value-of select="/validation/xml/info/profile"/>
</fo:block>
</fo:float>
Erkannter Dokumenttyp:
<xsl:text>Erkannter Dokumenttyp:</xsl:text>
</fo:block>
</fo:block>
<xsl:apply-templates select="/validation/pdf" />
<!--<xsl:call-template name="SubHeader" >
<xsl:with-param name="text" select='"Konformitätsprüfung:"' />
<xsl:with-param name="color" select='"black"' />
</xsl:call-template>-->
<xsl:call-template name="SubHeader" >
<xsl:with-param name="text" select="concat('Bewertung: ', $result_text)" />
<xsl:with-param name="color" select="$xml_result_color" />
<xsl:apply-templates select="/validation/pdf"/>
<!--
<xsl:call-template name="SubHeader">
<xsl:with-param name="text"
select='"Konformitätsprüfung:"'/>
<xsl:with-param name="color"
select='"black"'/>
</xsl:call-template>
-->
<xsl:call-template name="SubHeader">
<xsl:with-param name="text"
select="concat('Bewertung: ', $result_text)"/>
<xsl:with-param name="color"
select="$xml_result_color"/>
</xsl:call-template>
<fo:block>Validierungsergebnisse im Detail:</fo:block>
<fo:table>
<fo:table-column border-style="solid" />
<fo:table-column border-style="solid" />
<fo:table-column border-style="solid" />
<fo:table-column column-width="70%" border-style="solid" />
<fo:table-column border-style="solid"/>
<fo:table-column border-style="solid"/>
<fo:table-column border-style="solid"/>
<fo:table-column column-width="70%"
border-style="solid"/>
<fo:table-header>
<fo:table-row background-color="#E0E0E0" font-weight="bold">
<fo:table-row background-color="#E0E0E0"
font-weight="bold">
<fo:table-cell>
<fo:block>Type</fo:block>
</fo:table-cell>
@@ -145,38 +145,50 @@
</fo:table-row>
</fo:table-header>
<fo:table-body>
<xsl:apply-templates select="/validation/xml/messages" />
<xsl:choose>
<xsl:when test="/validation/xml/messages">
<xsl:apply-templates select="/validation/xml/messages"/>
</xsl:when>
<xsl:otherwise>
<fo:table-row font-size="12px"
border-style="solid">
<fo:table-cell number-columns-spanned="4">
<fo:block text-align="center">Es gibt weder Hinweise noch Fehler.</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:otherwise>
</xsl:choose>
</fo:table-body>
</fo:table>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template match="notice|error">
<fo:table-row font-size="12px" border-style="solid">
<fo:table-row font-size="12px"
border-style="solid">
<fo:table-cell number-rows-spanned="2">
<fo:block>
<xsl:value-of select="@type" />
<xsl:value-of select="@type"/>
</fo:block>
</fo:table-cell>
<fo:table-cell number-rows-spanned="2">
<fo:block>
<xsl:call-template name="SUBID" >
<xsl:with-param name="myparam" select="substring-after(.,' [ID ')" />
<xsl:call-template name="SUBID">
<xsl:with-param name="myparam"
select="substring-after(.,' [ID ')"/>
</xsl:call-template>
</fo:block>
</fo:table-cell>
<fo:table-cell number-rows-spanned="2">
<fo:block >
<fo:block>
<xsl:choose>
<xsl:when test="name() = 'error'">
<xsl:attribute name="color">red</xsl:attribute>
Fehler
<xsl:text>Fehler</xsl:text>
</xsl:when>
<xsl:otherwise>
Hinweis
<xsl:text>Hinweis</xsl:text>
</xsl:otherwise>
</xsl:choose>
</fo:block>
@@ -186,42 +198,46 @@
<xsl:if test="name() = 'error'">
<xsl:attribute name="color">red</xsl:attribute>
</xsl:if>
<xsl:value-of select="substring-before(.,' [ID')" />
<xsl:value-of select="substring-before(.,' [ID')"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row font-size="12px" border-style="solid">
<fo:table-row font-size="10px"
border-style="solid">
<fo:table-cell>
<fo:block>
<xsl:if test="name() = 'error'">
<xsl:attribute name="color">red</xsl:attribute>
</xsl:if>
Pfad:
<xsl:value-of select="@location" />
<xsl:value-of select="concat('Pfad: ', @location)"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:template>
<xsl:template match="pdf">
<xsl:call-template name="SubHeader" >
<xsl:with-param name="text" select="concat('ZUGFeRD-PDF: ', $pdf_result_text)" />
<xsl:with-param name="color" select='"black"' />
<xsl:call-template name="SubHeader">
<xsl:with-param name="text"
select="concat('ZUGFeRD-PDF: ', $pdf_result_text)"/>
<xsl:with-param name="color"
select="&#34;black&#34;"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="SubHeader">
<xsl:param name="text" />
<xsl:param name="color" />
<fo:block color="{$color}" background-color="#E0E0E0" margin-bottom="10px" padding="3px" font-weight="bold" margin-top="10px">
<xsl:value-of select="$text" />
<xsl:param name="text"/>
<xsl:param name="color"/>
<fo:block color="{$color}"
background-color="#E0E0E0"
margin-bottom="10px"
padding="3px"
font-weight="bold"
margin-top="10px">
<xsl:value-of select="$text"/>
</fo:block>
</xsl:template>
<xsl:template name="SUBID">
<xsl:param name="myparam" />
<xsl:variable name="myparam.end" select="substring-before($myparam, ']')"/>
<xsl:param name="myparam"/>
<xsl:variable name="myparam.end"
select="substring-before($myparam, ']')"/>
<xsl:value-of select="$myparam.end"/>
</xsl:template>
</xsl:stylesheet>

View File

@@ -1,227 +1,229 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:variable name="i18n.bt10" select="'Leitweg-ID'"/>
<xsl:variable name="i18n.bt44" select="'Name'"/>
<xsl:variable name="i18n.title" select="'XRechnung'"/>
<xsl:variable name="i18n.overview" select="'Übersicht'"/>
<xsl:variable name="i18n.items" select="'Positionen'"/>
<xsl:variable name="i18n.information" select="'Informationen'"/>
<xsl:variable name="i18n.attachments" select="'Anhänge'"/>
<xsl:variable name="i18n.history" select="'Bearbeitungshistorie'"/>
<xsl:variable name="i18n.disclaimer" select="'Wir übernehmen keine Haftung für die Richtigkeit der Daten.'"/>
<xsl:variable name="i18n.recipientInfo" select="'Informationen zum Käufer'"/>
<xsl:variable name="i18n.bt50" select="'Straße / Haus-Nr.'"/>
<xsl:variable name="i18n.bt51" select="'Postfach'"/>
<xsl:variable name="i18n.bt163" select="'Adresszusatz'"/>
<xsl:variable name="i18n.bt53" select="'PLZ'"/>
<xsl:variable name="i18n.bt52" select="'Ort'"/>
<xsl:variable name="i18n.bt54" select="'Bundesland'"/>
<xsl:variable name="i18n.bt55" select="'Land'"/>
<xsl:variable name="i18n.bt46" select="'Kennung / Kunden-Nr.'"/>
<xsl:variable name="i18n.bt46-id" select="'Schema der Kennung'"/>
<xsl:variable name="i18n.bt56" select="'Name'"/>
<xsl:variable name="i18n.bt57" select="'Telefon'"/>
<xsl:variable name="i18n.bt58" select="'E-Mail-Adresse'"/>
<xsl:variable name="i18n.bt27" select="'Firmenname'"/>
<xsl:variable name="i18n.bt35" select="'Straße / Haus-Nr.'"/>
<xsl:variable name="i18n.bt36" select="'Postfach'"/>
<xsl:variable name="i18n.bt162" select="'Adresszusatz'"/>
<xsl:variable name="i18n.bt38" select="'PLZ'"/>
<xsl:variable name="i18n.bt37" select="'Ort'"/>
<xsl:variable name="i18n.bt39" select="'Bundesland'"/>
<xsl:variable name="i18n.bt40" select="'ndercode'"/>
<xsl:variable name="i18n.bt29" select="'Kennung'"/>
<xsl:variable name="i18n.bt29-id" select="'Schema der Kennung'"/>
<xsl:variable name="i18n.bt41" select="'Name'"/>
<xsl:variable name="i18n.bt42" select="'Telefon'"/>
<xsl:variable name="i18n.bt43" select="'E-Mail-Adresse'"/>
<xsl:variable name="i18n.bt1" select="'Rechnungsnummer'"/>
<xsl:variable name="i18n.bt2" select="'Rechnungsdatum'"/>
<xsl:variable name="i18n.details" select="'Rechnungsdaten'"/>
<xsl:variable name="i18n.period" select="'Abrechnungszeitraum'"/>
<xsl:variable name="i18n.bt3" select="'Rechnungsart'"/>
<xsl:variable name="i18n.bt5" select="'Währung'"/>
<xsl:variable name="i18n.bt73" select="'von'"/>
<xsl:variable name="i18n.bt74" select="'bis'"/>
<xsl:variable name="i18n.bt11" select="'Projektnummer'"/>
<xsl:variable name="i18n.bt12" select="'Vertragsnummer'"/>
<xsl:variable name="i18n.bt13" select="'Bestellnummer'"/>
<xsl:variable name="i18n.bt14" select="'Auftragsnummer'"/>
<xsl:variable name="i18n.bt25" select="'Rechnungsnummer'"/>
<xsl:variable name="i18n.bt26" select="'Rechnungsdatum'"/>
<xsl:variable name="i18n.bg22" select="'Gesamtbeträge der Rechnung'"/>
<xsl:variable name="i18n.bt106" select="'Summe aller Positionen'"/>
<xsl:variable name="i18n.bt107" select="'Summe Nachlässe'"/>
<xsl:variable name="i18n.bt108" select="'Summe Zuschläge'"/>
<xsl:variable name="i18n.bt109" select="'Gesamtsumme'"/>
<xsl:variable name="i18n.bt110" select="'Summe Umsatzsteuer'"/>
<xsl:variable name="i18n.bt111" select="'Summe Umsatzsteuer in Abrechnungswährung'"/>
<xsl:variable name="i18n.bt112" select="'Gesamtsumme'"/>
<xsl:variable name="i18n.bt113" select="'Gezahlter Betrag'"/>
<xsl:variable name="i18n.bt114" select="'Rundungsbetrag'"/>
<xsl:variable name="i18n.bt115" select="'Fälliger Betrag'"/>
<xsl:variable name="i18n.bg23" select="'Aufschlüsselung der Umsatzsteuer auf Ebene der Rechnung'"/>
<xsl:variable name="i18n.bt118" select="'Umsatzsteuerkategorie'"/>
<xsl:variable name="i18n.bt116" select="'Gesamtsumme'"/>
<xsl:variable name="i18n.bt119" select="'Umsatzsteuersatz'"/>
<xsl:variable name="i18n.bt117" select="'Umsatzsteuerbetrag'"/>
<xsl:variable name="i18n.bt120" select="'Befreiungsgrund'"/>
<xsl:variable name="i18n.bt121" select="'Kennung für den Befreiungsgrund'"/>
<xsl:variable name="i18n.bg20" select="'Nachlass auf Ebene der Rechnung'"/>
<xsl:variable name="i18n.bt95" select="'Umsatzsteuerkategorie des Nachlasses'"/>
<xsl:variable name="i18n.bt93" select="'Grundbetrag'"/>
<xsl:variable name="i18n.bt94" select="'Prozentsatz'"/>
<xsl:variable name="i18n.bt92" select="'Nachlass'"/>
<xsl:variable name="i18n.bt96" select="'Umsatzsteuersatz des Nachlasses'"/>
<xsl:variable name="i18n.bt97" select="'Grund für den Nachlass'"/>
<xsl:variable name="i18n.bt98" select="'Document level allowance reason code'"/>
<xsl:variable name="i18n.bg21" select="'Zuschlag auf Ebene der Rechnung'"/>
<xsl:variable name="i18n.bt102" select="'Umsatzsteuerkategorie des Zuschlages'"/>
<xsl:variable name="i18n.bt100" select="'Grundbetrag'"/>
<xsl:variable name="i18n.bt101" select="'Prozentsatz'"/>
<xsl:variable name="i18n.bt99" select="'Zuschlag'"/>
<xsl:variable name="i18n.bt103" select="'Umsatzsteuersatz des Zuschlages'"/>
<xsl:variable name="i18n.bt104" select="'Grund für den Zuschlag'"/>
<xsl:variable name="i18n.bt105" select="'Document level charge reason code'"/>
<xsl:variable name="i18n.bgx42" select="'Versandkosten'"/>
<xsl:variable name="i18n.btx274" select="'Umsatzsteuerkategorie der Versandkosten'"/>
<xsl:variable name="i18n.btx272" select="'Betrag'"/>
<xsl:variable name="i18n.btx273" select="'Umsatzsteuersatz der Versandkosten'"/>
<xsl:variable name="i18n.btx271" select="'Versandkostenbeschreibung'"/>
<xsl:variable name="i18n.bt20" select="'Skonto; weitere Zahlungsbed.'"/>
<xsl:variable name="i18n.bt9" select="'Fälligkeitsdatum'"/>
<xsl:variable name="i18n.bt81" select="'Code für das Zahlungsmittel'"/>
<xsl:variable name="i18n.bt82" select="'Zahlungsmittel'"/>
<xsl:variable name="i18n.bt83" select="'Verwendungszweck'"/>
<xsl:variable name="i18n.bg18" select="'Karteninformation'"/>
<xsl:variable name="i18n.bt87" select="'Kartennummer'"/>
<xsl:variable name="i18n.bt88" select="'Karteninhaber'"/>
<xsl:variable name="i18n.bg19" select="'Lastschrift'"/>
<xsl:variable name="i18n.bt89" select="'Mandatsreferenznr.'"/>
<xsl:variable name="i18n.bt91" select="'IBAN'"/>
<xsl:variable name="i18n.bt90" select="'Gläubiger-ID'"/>
<xsl:variable name="i18n.bg17" select="'Überweisung'"/>
<xsl:variable name="i18n.bt85" select="'Kontoinhaber'"/>
<xsl:variable name="i18n.bt84" select="'IBAN'"/>
<xsl:variable name="i18n.bt86" select="'BIC'"/>
<xsl:variable name="i18n.bg1" select="'Bemerkung zur Rechnung'"/>
<xsl:variable name="i18n.bt21" select="'Betreff'"/>
<xsl:variable name="i18n.bt22" select="'Bemerkung'"/>
<xsl:variable name="i18n.bt126" select="'Position'"/>
<xsl:variable name="i18n.bt127" select="'Freitext'"/>
<xsl:variable name="i18n.bt128" select="'Objektkennung'"/>
<xsl:variable name="i18n.bt128-id" select="'Schema der Objektkennung'"/>
<xsl:variable name="i18n.bt132" select="'Nummer der Auftragsposition'"/>
<xsl:variable name="i18n.bt133" select="'Kontierungshinweis /Kostenstelle'"/>
<xsl:variable name="i18n.bg26" select="'Abrechnungszeitraum'"/>
<xsl:variable name="i18n.bt134" select="'von'"/>
<xsl:variable name="i18n.bt135" select="'bis'"/>
<xsl:variable name="i18n.bg29" select="'Preiseinzelheiten'"/>
<xsl:variable name="i18n.bt129" select="'Menge'"/>
<xsl:variable name="i18n.bt130" select="'Einheit'"/>
<xsl:variable name="i18n.bt146" select="'Preis pro Einheit (netto)'"/>
<xsl:variable name="i18n.bt131" select="'Gesamtpreis (netto)'"/>
<xsl:variable name="i18n.bt147" select="'Rabatt (netto)'"/>
<xsl:variable name="i18n.bt148" select="'Listenpreis (netto)'"/>
<xsl:variable name="i18n.bt149" select="'Anzahl der Einheit'"/>
<xsl:variable name="i18n.bt150" select="'Code der Maßeinheit'"/>
<xsl:variable name="i18n.bt151" select="'Umsatzsteuer'"/>
<xsl:variable name="i18n.bt152" select="'Umsatzsteuersatz in %'"/>
<xsl:variable name="i18n.bg27" select="'Nachlässe auf Ebene der Rechnungsposition'"/>
<xsl:variable name="i18n.bt137" select="'Grundbetrag (netto)'"/>
<xsl:variable name="i18n.bt138" select="'Prozentsatz'"/>
<xsl:variable name="i18n.bt136" select="'Nachlass'"/>
<xsl:variable name="i18n.bt139" select="'Grund des Nachlasses'"/>
<xsl:variable name="i18n.bt140" select="'Code für den Nachlassgrund'"/>
<xsl:variable name="i18n.bg28" select="'Zuschläge auf Ebene der Rechnungsposition'"/>
<xsl:variable name="i18n.bt142" select="'Grundbetrag (netto)'"/>
<xsl:variable name="i18n.bt143" select="'Prozentsatz'"/>
<xsl:variable name="i18n.bt141" select="'Zuschlag (netto)'"/>
<xsl:variable name="i18n.bt144" select="'Grund des Zuschlags'"/>
<xsl:variable name="i18n.bt145" select="'Code für den Zuschlagsgrund'"/>
<xsl:variable name="i18n.bg31" select="'Artikelinformationen'"/>
<xsl:variable name="i18n.bt153" select="'Bezeichnung'"/>
<xsl:variable name="i18n.bt154" select="'Beschreibung'"/>
<xsl:variable name="i18n.bt155" select="'Artikelnummer'"/>
<xsl:variable name="i18n.bt156" select="'Kunden-Material-Nr.'"/>
<xsl:variable name="i18n.bg32" select="'Eigenschaften des Artikels'"/>
<xsl:variable name="i18n.bt157" select="'Artikelkennung (EAN)'"/>
<xsl:variable name="i18n.bt157-id" select="'Schema der Artikelkennung'"/>
<xsl:variable name="i18n.bt158" select="'Code der Artikelklassifizierung'"/>
<xsl:variable name="i18n.bt158-id" select="'Kennung zur Bildung des Schemas'"/>
<xsl:variable name="i18n.bt157-vers-id" select="'Version zur Bildung des Schemas'"/>
<xsl:variable name="i18n.bt159" select="'Code des Herkunftslandes'"/>
<xsl:variable name="i18n.bg4" select="'Informationen zum Verkäufer'"/>
<xsl:variable name="i18n.bt28" select="'Abweichender Handelsname'"/>
<xsl:variable name="i18n.bt34" select="'Elektronische Adresse'"/>
<xsl:variable name="i18n.bt34-id" select="'Schema der elektronischen Adresse'"/>
<xsl:variable name="i18n.bt30" select="'Register-/Registriernummer'"/>
<xsl:variable name="i18n.bt31" select="'Umsatzsteuer-ID'"/>
<xsl:variable name="i18n.bt32" select="'Steuernummer'"/>
<xsl:variable name="i18n.bt32-schema" select="'Schema der Steuernummer'"/>
<xsl:variable name="i18n.bt33" select="'Weitere rechtliche Informationen'"/>
<xsl:variable name="i18n.bt6" select="'Code der Umsatzsteuerwährung'"/>
<xsl:variable name="i18n.bg11" select="'Steuervertreter des Verkäufers'"/>
<xsl:variable name="i18n.bt62" select="'Name'"/>
<xsl:variable name="i18n.bt64" select="'Straße / Hausnummer'"/>
<xsl:variable name="i18n.bt65" select="'Postfach'"/>
<xsl:variable name="i18n.bt164" select="'Adresszusatz'"/>
<xsl:variable name="i18n.bt67" select="'PLZ'"/>
<xsl:variable name="i18n.bt66" select="'Ort'"/>
<xsl:variable name="i18n.bt68" select="'Bundesland'"/>
<xsl:variable name="i18n.bt69" select="'ndercode'"/>
<xsl:variable name="i18n.bt63" select="'Umsatzsteuer-ID'"/>
<xsl:variable name="i18n.bg7" select="'Informationen zum Käufer'"/>
<xsl:variable name="i18n.bt45" select="'Abweichender Handelsname'"/>
<xsl:variable name="i18n.bt49" select="'Elektronische Adresse'"/>
<xsl:variable name="i18n.bt49-id" select="'Schema der elektronischen Adresse'"/>
<xsl:variable name="i18n.bt47" select="'Register-/Registriernummer'"/>
<xsl:variable name="i18n.bt47-id" select="'Schema der Register-/Registriernummer'"/>
<xsl:variable name="i18n.bt48" select="'Umsatzsteuer-ID'"/>
<xsl:variable name="i18n.bt7" select="'Abrechnungsdatum der Umsatzsteuer'"/>
<xsl:variable name="i18n.bt8" select="'Code des Umsatzsteuer-Abrechnungsdatums'"/>
<xsl:variable name="i18n.bt19" select="'Kontierungsinformation / Kostenstelle'"/>
<xsl:variable name="i18n.bg13" select="'Lieferinformationen'"/>
<xsl:variable name="i18n.bt71" select="'Kennung des Lieferorts'"/>
<xsl:variable name="i18n.bt71-id" select="'Schema der Kennung'"/>
<xsl:variable name="i18n.bt72" select="'Lieferdatum'"/>
<xsl:variable name="i18n.bt70" select="'Name des Empfängers'"/>
<xsl:variable name="i18n.bt75" select="'Straße / Haus-Nr.'"/>
<xsl:variable name="i18n.bt76" select="'Postfach'"/>
<xsl:variable name="i18n.bt165" select="'Adresszusatz'"/>
<xsl:variable name="i18n.bt78" select="'PLZ'"/>
<xsl:variable name="i18n.bt77" select="'Ort'"/>
<xsl:variable name="i18n.bt79" select="'Bundesland'"/>
<xsl:variable name="i18n.bt80" select="'Land'"/>
<xsl:variable name="i18n.bt17" select="'Vergabenummer'"/>
<xsl:variable name="i18n.bt15" select="'Kennung der Empfangsbestätigung'"/>
<xsl:variable name="i18n.bt16" select="'Kennung der Versandanzeige'"/>
<xsl:variable name="i18n.bt23" select="'Prozesskennung'"/>
<xsl:variable name="i18n.bt24" select="'Spezifikationskennung'"/>
<xsl:variable name="i18n.bt18" select="'Objektkennung'"/>
<xsl:variable name="i18n.bt18-id" select="'Schema der Objektkennung'"/>
<xsl:variable name="i18n.bg10" select="'Vom Verkäufer abweichender Zahlungsempfänger'"/>
<xsl:variable name="i18n.bt59" select="'Name'"/>
<xsl:variable name="i18n.bt60" select="'Kennung'"/>
<xsl:variable name="i18n.bt60-id" select="'Schema der Kennung'"/>
<xsl:variable name="i18n.bt61" select="'Register-/Registriernummer'"/>
<xsl:variable name="i18n.bt61-id" select="'Schema der Register-/Registriernummer'"/>
<xsl:variable name="i18n.bg24" select="'Rechnungsbegründende Unterlagen'"/>
<xsl:variable name="i18n.bt122" select="'Kennung'"/>
<xsl:variable name="i18n.bt123" select="'Beschreibung'"/>
<xsl:variable name="i18n.bt124" select="'Verweis (z.B. Internetadresse)'"/>
<xsl:variable name="i18n.bt125" select="'Anhangsdokument'"/>
<xsl:variable name="i18n.bt125-format" select="'Format des Anhangdokuments'"/>
<xsl:variable name="i18n.bt125-name" select="'Name des Anhangsdokuments'"/>
<xsl:variable name="i18n.historyDate" select="'Datum/Uhrzeit'"/>
<xsl:variable name="i18n.historySubject" select="'Betreff'"/>
<xsl:variable name="i18n.historyText" select="'Text'"/>
<xsl:variable name="i18n.historyDetails" select="'Details'"/>
<xsl:variable name="i18n.payment" select="'Zahlungsdaten'"/>
<xsl:variable name="i18n.contract_information" select="'Vertragsdaten'"/>
<xsl:variable name="i18n.preceding_invoice_reference" select="'Vorausgegangene Rechnungen'"/>
<xsl:include href="xrechnung-html.univ.xsl"/>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:variable name="i18n.bt10" select="'Leitweg-ID'"/>
<xsl:variable name="i18n.bt44" select="'Name'"/>
<xsl:variable name="i18n.title" select="'XRechnung'"/>
<xsl:variable name="i18n.overview" select="'Übersicht'"/>
<xsl:variable name="i18n.items" select="'Positionen'"/>
<xsl:variable name="i18n.information" select="'Informationen'"/>
<xsl:variable name="i18n.attachments" select="'Anhänge'"/>
<xsl:variable name="i18n.history" select="'Bearbeitungshistorie'"/>
<xsl:variable name="i18n.disclaimer" select="'Wir übernehmen keine Haftung für die Richtigkeit der Daten.'"/>
<xsl:variable name="i18n.recipientInfo" select="'Informationen zum Käufer'"/>
<xsl:variable name="i18n.dateOf" select="' vom '"/>
<xsl:variable name="i18n.bt50" select="'Straße / Haus-Nr.'"/>
<xsl:variable name="i18n.bt51" select="'Postfach'"/>
<xsl:variable name="i18n.bt163" select="'Adresszusatz'"/>
<xsl:variable name="i18n.bt53" select="'PLZ'"/>
<xsl:variable name="i18n.bt52" select="'Ort'"/>
<xsl:variable name="i18n.bt54" select="'Bundesland'"/>
<xsl:variable name="i18n.bt55" select="'Land'"/>
<xsl:variable name="i18n.bt46" select="'Kennung / Kunden-Nr.'"/>
<xsl:variable name="i18n.bt46-id" select="'Schema der Kennung'"/>
<xsl:variable name="i18n.bt56" select="'Name'"/>
<xsl:variable name="i18n.bt57" select="'Telefon'"/>
<xsl:variable name="i18n.bt58" select="'E-Mail-Adresse'"/>
<xsl:variable name="i18n.bt27" select="'Firmenname'"/>
<xsl:variable name="i18n.bt35" select="'Straße / Haus-Nr.'"/>
<xsl:variable name="i18n.bt36" select="'Postfach'"/>
<xsl:variable name="i18n.bt162" select="'Adresszusatz'"/>
<xsl:variable name="i18n.bt38" select="'PLZ'"/>
<xsl:variable name="i18n.bt37" select="'Ort'"/>
<xsl:variable name="i18n.bt39" select="'Bundesland'"/>
<xsl:variable name="i18n.bt40" select="'Ländercode'"/>
<xsl:variable name="i18n.bt29" select="'Kennung'"/>
<xsl:variable name="i18n.bt29-id" select="'Schema der Kennung'"/>
<xsl:variable name="i18n.bt41" select="'Name'"/>
<xsl:variable name="i18n.bt42" select="'Telefon'"/>
<xsl:variable name="i18n.bt43" select="'E-Mail-Adresse'"/>
<xsl:variable name="i18n.bt1" select="'Rechnungsnummer'"/>
<xsl:variable name="i18n.bt2" select="'Rechnungsdatum'"/>
<xsl:variable name="i18n.details" select="'Rechnungsdaten'"/>
<xsl:variable name="i18n.period" select="'Abrechnungszeitraum'"/>
<xsl:variable name="i18n.bt3" select="'Rechnungsart'"/>
<xsl:variable name="i18n.bt5" select="'Währung'"/>
<xsl:variable name="i18n.bt73" select="'von'"/>
<xsl:variable name="i18n.bt74" select="'bis'"/>
<xsl:variable name="i18n.bt11" select="'Projektnummer'"/>
<xsl:variable name="i18n.bt12" select="'Vertragsnummer'"/>
<xsl:variable name="i18n.bt13" select="'Bestellnummer'"/>
<xsl:variable name="i18n.bt14" select="'Auftragsnummer'"/>
<xsl:variable name="i18n.bt25" select="'Rechnungsnummer'"/>
<xsl:variable name="i18n.bt26" select="'Rechnungsdatum'"/>
<xsl:variable name="i18n.bg22" select="'Gesamtbeträge der Rechnung'"/>
<xsl:variable name="i18n.bt106" select="'Summe aller Positionen'"/>
<xsl:variable name="i18n.bt107" select="'Summe Nachlässe'"/>
<xsl:variable name="i18n.bt108" select="'Summe Zuschläge'"/>
<xsl:variable name="i18n.bt109" select="'Gesamtsumme'"/>
<xsl:variable name="i18n.bt110" select="'Summe Umsatzsteuer'"/>
<xsl:variable name="i18n.bt111" select="'Summe Umsatzsteuer in Abrechnungswährung'"/>
<xsl:variable name="i18n.bt112" select="'Gesamtsumme'"/>
<xsl:variable name="i18n.bt113" select="'Gezahlter Betrag'"/>
<xsl:variable name="i18n.bt114" select="'Rundungsbetrag'"/>
<xsl:variable name="i18n.bt115" select="'Fälliger Betrag'"/>
<xsl:variable name="i18n.bg23" select="'Aufschlüsselung der Umsatzsteuer auf Ebene der Rechnung'"/>
<xsl:variable name="i18n.bt118" select="'Umsatzsteuerkategorie'"/>
<xsl:variable name="i18n.bt116" select="'Gesamtsumme'"/>
<xsl:variable name="i18n.bt119" select="'Umsatzsteuersatz'"/>
<xsl:variable name="i18n.bt117" select="'Umsatzsteuerbetrag'"/>
<xsl:variable name="i18n.bt120" select="'Befreiungsgrund'"/>
<xsl:variable name="i18n.bt121" select="'Kennung für den Befreiungsgrund'"/>
<xsl:variable name="i18n.bg20" select="'Nachlass auf Ebene der Rechnung'"/>
<xsl:variable name="i18n.bt95" select="'Umsatzsteuerkategorie des Nachlasses'"/>
<xsl:variable name="i18n.bt93" select="'Grundbetrag'"/>
<xsl:variable name="i18n.bt94" select="'Prozentsatz'"/>
<xsl:variable name="i18n.bt92" select="'Nachlass'"/>
<xsl:variable name="i18n.bt96" select="'Umsatzsteuersatz des Nachlasses'"/>
<xsl:variable name="i18n.bt97" select="'Grund für den Nachlass'"/>
<xsl:variable name="i18n.bt98" select="'Document level allowance reason code'"/>
<xsl:variable name="i18n.bg21" select="'Zuschlag auf Ebene der Rechnung'"/>
<xsl:variable name="i18n.bt102" select="'Umsatzsteuerkategorie des Zuschlages'"/>
<xsl:variable name="i18n.bt100" select="'Grundbetrag'"/>
<xsl:variable name="i18n.bt101" select="'Prozentsatz'"/>
<xsl:variable name="i18n.bt99" select="'Zuschlag'"/>
<xsl:variable name="i18n.bt103" select="'Umsatzsteuersatz des Zuschlages'"/>
<xsl:variable name="i18n.bt104" select="'Grund für den Zuschlag'"/>
<xsl:variable name="i18n.bt105" select="'Document level charge reason code'"/>
<xsl:variable name="i18n.bgx42" select="'Versandkosten'"/>
<xsl:variable name="i18n.btx274" select="'Umsatzsteuerkategorie der Versandkosten'"/>
<xsl:variable name="i18n.btx272" select="'Betrag'"/>
<xsl:variable name="i18n.btx273" select="'Umsatzsteuersatz der Versandkosten'"/>
<xsl:variable name="i18n.btx271" select="'Versandkostenbeschreibung'"/>
<xsl:variable name="i18n.bt20" select="'Skonto; weitere Zahlungsbed.'"/>
<xsl:variable name="i18n.bt9" select="'Fälligkeitsdatum'"/>
<xsl:variable name="i18n.bt81" select="'Code für das Zahlungsmittel'"/>
<xsl:variable name="i18n.bt82" select="'Zahlungsmittel'"/>
<xsl:variable name="i18n.bt83" select="'Verwendungszweck'"/>
<xsl:variable name="i18n.bg18" select="'Karteninformation'"/>
<xsl:variable name="i18n.bt87" select="'Kartennummer'"/>
<xsl:variable name="i18n.bt88" select="'Karteninhaber'"/>
<xsl:variable name="i18n.bg19" select="'Lastschrift'"/>
<xsl:variable name="i18n.bt89" select="'Mandatsreferenznr.'"/>
<xsl:variable name="i18n.bt91" select="'IBAN'"/>
<xsl:variable name="i18n.bt90" select="'Gläubiger-ID'"/>
<xsl:variable name="i18n.bg17" select="'Überweisung'"/>
<xsl:variable name="i18n.bt85" select="'Kontoinhaber'"/>
<xsl:variable name="i18n.bt84" select="'IBAN'"/>
<xsl:variable name="i18n.bt86" select="'BIC'"/>
<xsl:variable name="i18n.bg1" select="'Bemerkung zur Rechnung'"/>
<xsl:variable name="i18n.bt21" select="'Betreff'"/>
<xsl:variable name="i18n.bt22" select="'Bemerkung'"/>
<xsl:variable name="i18n.bt126" select="'Position'"/>
<xsl:variable name="i18n.bt127" select="'Freitext'"/>
<xsl:variable name="i18n.bt128" select="'Objektkennung'"/>
<xsl:variable name="i18n.bt128-id" select="'Schema der Objektkennung'"/>
<xsl:variable name="i18n.bt132" select="'Nummer der Auftragsposition'"/>
<xsl:variable name="i18n.bt133" select="'Kontierungshinweis /Kostenstelle'"/>
<xsl:variable name="i18n.bg26" select="'Abrechnungszeitraum'"/>
<xsl:variable name="i18n.bt134" select="'von'"/>
<xsl:variable name="i18n.bt135" select="'bis'"/>
<xsl:variable name="i18n.bg29" select="'Preiseinzelheiten'"/>
<xsl:variable name="i18n.bt129" select="'Menge'"/>
<xsl:variable name="i18n.bt130" select="'Einheit'"/>
<xsl:variable name="i18n.bt146" select="'Preis pro Einheit (netto)'"/>
<xsl:variable name="i18n.bt131" select="'Gesamtpreis (netto)'"/>
<xsl:variable name="i18n.bt147" select="'Rabatt (netto)'"/>
<xsl:variable name="i18n.bt148" select="'Listenpreis (netto)'"/>
<xsl:variable name="i18n.bt149" select="'Anzahl der Einheit'"/>
<xsl:variable name="i18n.bt150" select="'Code der Maßeinheit'"/>
<xsl:variable name="i18n.bt151" select="'Umsatzsteuer'"/>
<xsl:variable name="i18n.bt152" select="'Umsatzsteuersatz in %'"/>
<xsl:variable name="i18n.bg27" select="'Nachlässe auf Ebene der Rechnungsposition'"/>
<xsl:variable name="i18n.bt137" select="'Grundbetrag (netto)'"/>
<xsl:variable name="i18n.bt138" select="'Prozentsatz'"/>
<xsl:variable name="i18n.bt136" select="'Nachlass'"/>
<xsl:variable name="i18n.bt139" select="'Grund des Nachlasses'"/>
<xsl:variable name="i18n.bt140" select="'Code für den Nachlassgrund'"/>
<xsl:variable name="i18n.bg28" select="'Zuschläge auf Ebene der Rechnungsposition'"/>
<xsl:variable name="i18n.bt142" select="'Grundbetrag (netto)'"/>
<xsl:variable name="i18n.bt143" select="'Prozentsatz'"/>
<xsl:variable name="i18n.bt141" select="'Zuschlag (netto)'"/>
<xsl:variable name="i18n.bt144" select="'Grund des Zuschlags'"/>
<xsl:variable name="i18n.bt145" select="'Code für den Zuschlagsgrund'"/>
<xsl:variable name="i18n.bg31" select="'Artikelinformationen'"/>
<xsl:variable name="i18n.bt153" select="'Bezeichnung'"/>
<xsl:variable name="i18n.bt154" select="'Beschreibung'"/>
<xsl:variable name="i18n.bt155" select="'Artikelnummer'"/>
<xsl:variable name="i18n.bt156" select="'Kunden-Material-Nr.'"/>
<xsl:variable name="i18n.bg32" select="'Eigenschaften des Artikels'"/>
<xsl:variable name="i18n.bt157" select="'Artikelkennung (EAN)'"/>
<xsl:variable name="i18n.bt157-id" select="'Schema der Artikelkennung'"/>
<xsl:variable name="i18n.bt158" select="'Code der Artikelklassifizierung'"/>
<xsl:variable name="i18n.bt158-id" select="'Kennung zur Bildung des Schemas'"/>
<xsl:variable name="i18n.bt157-vers-id" select="'Version zur Bildung des Schemas'"/>
<xsl:variable name="i18n.bt159" select="'Code des Herkunftslandes'"/>
<xsl:variable name="i18n.bg4" select="'Informationen zum Verkäufer'"/>
<xsl:variable name="i18n.bt28" select="'Abweichender Handelsname'"/>
<xsl:variable name="i18n.bt34" select="'Elektronische Adresse'"/>
<xsl:variable name="i18n.bt34-id" select="'Schema der elektronischen Adresse'"/>
<xsl:variable name="i18n.bt30" select="'Register-/Registriernummer'"/>
<xsl:variable name="i18n.bt31" select="'Umsatzsteuer-ID'"/>
<xsl:variable name="i18n.bt32" select="'Steuernummer'"/>
<xsl:variable name="i18n.bt32-schema" select="'Schema der Steuernummer'"/>
<xsl:variable name="i18n.bt33" select="'Weitere rechtliche Informationen'"/>
<xsl:variable name="i18n.bt6" select="'Code der Umsatzsteuerwährung'"/>
<xsl:variable name="i18n.bg11" select="'Steuervertreter des Verkäufers'"/>
<xsl:variable name="i18n.bt62" select="'Name'"/>
<xsl:variable name="i18n.bt64" select="'Straße / Hausnummer'"/>
<xsl:variable name="i18n.bt65" select="'Postfach'"/>
<xsl:variable name="i18n.bt164" select="'Adresszusatz'"/>
<xsl:variable name="i18n.bt67" select="'PLZ'"/>
<xsl:variable name="i18n.bt66" select="'Ort'"/>
<xsl:variable name="i18n.bt68" select="'Bundesland'"/>
<xsl:variable name="i18n.bt69" select="'Ländercode'"/>
<xsl:variable name="i18n.bt63" select="'Umsatzsteuer-ID'"/>
<xsl:variable name="i18n.bg7" select="'Informationen zum Käufer'"/>
<xsl:variable name="i18n.bt45" select="'Abweichender Handelsname'"/>
<xsl:variable name="i18n.bt49" select="'Elektronische Adresse'"/>
<xsl:variable name="i18n.bt49-id" select="'Schema der elektronischen Adresse'"/>
<xsl:variable name="i18n.bt47" select="'Register-/Registriernummer'"/>
<xsl:variable name="i18n.bt47-id" select="'Schema der Register-/Registriernummer'"/>
<xsl:variable name="i18n.bt48" select="'Umsatzsteuer-ID'"/>
<xsl:variable name="i18n.bt7" select="'Abrechnungsdatum der Umsatzsteuer'"/>
<xsl:variable name="i18n.bt8" select="'Code des Umsatzsteuer-Abrechnungsdatums'"/>
<xsl:variable name="i18n.bt19" select="'Kontierungsinformation / Kostenstelle'"/>
<xsl:variable name="i18n.bg13" select="'Lieferinformationen'"/>
<xsl:variable name="i18n.bt71" select="'Kennung des Lieferorts'"/>
<xsl:variable name="i18n.bt71-id" select="'Schema der Kennung'"/>
<xsl:variable name="i18n.bt72" select="'Lieferdatum'"/>
<xsl:variable name="i18n.bt70" select="'Name des Empfängers'"/>
<xsl:variable name="i18n.bt75" select="'Straße / Haus-Nr.'"/>
<xsl:variable name="i18n.bt76" select="'Postfach'"/>
<xsl:variable name="i18n.bt165" select="'Adresszusatz'"/>
<xsl:variable name="i18n.bt78" select="'PLZ'"/>
<xsl:variable name="i18n.bt77" select="'Ort'"/>
<xsl:variable name="i18n.bt79" select="'Bundesland'"/>
<xsl:variable name="i18n.bt80" select="'Land'"/>
<xsl:variable name="i18n.bt17" select="'Vergabenummer'"/>
<xsl:variable name="i18n.bt15" select="'Kennung der Empfangsbestätigung'"/>
<xsl:variable name="i18n.bt16" select="'Kennung der Versandanzeige'"/>
<xsl:variable name="i18n.btx202" select="'Kennung des Lieferscheins'"/>
<xsl:variable name="i18n.bt23" select="'Prozesskennung'"/>
<xsl:variable name="i18n.bt24" select="'Spezifikationskennung'"/>
<xsl:variable name="i18n.bt18" select="'Objektkennung'"/>
<xsl:variable name="i18n.bt18-id" select="'Schema der Objektkennung'"/>
<xsl:variable name="i18n.bg10" select="'Vom Verkäufer abweichender Zahlungsempfänger'"/>
<xsl:variable name="i18n.bt59" select="'Name'"/>
<xsl:variable name="i18n.bt60" select="'Kennung'"/>
<xsl:variable name="i18n.bt60-id" select="'Schema der Kennung'"/>
<xsl:variable name="i18n.bt61" select="'Register-/Registriernummer'"/>
<xsl:variable name="i18n.bt61-id" select="'Schema der Register-/Registriernummer'"/>
<xsl:variable name="i18n.bg24" select="'Rechnungsbegründende Unterlagen'"/>
<xsl:variable name="i18n.bt122" select="'Kennung'"/>
<xsl:variable name="i18n.bt123" select="'Beschreibung'"/>
<xsl:variable name="i18n.bt124" select="'Verweis (z.B. Internetadresse)'"/>
<xsl:variable name="i18n.bt125" select="'Anhangsdokument'"/>
<xsl:variable name="i18n.bt125-format" select="'Format des Anhangdokuments'"/>
<xsl:variable name="i18n.bt125-name" select="'Name des Anhangsdokuments'"/>
<xsl:variable name="i18n.historyDate" select="'Datum/Uhrzeit'"/>
<xsl:variable name="i18n.historySubject" select="'Betreff'"/>
<xsl:variable name="i18n.historyText" select="'Text'"/>
<xsl:variable name="i18n.historyDetails" select="'Details'"/>
<xsl:variable name="i18n.payment" select="'Zahlungsdaten'"/>
<xsl:variable name="i18n.contract_information" select="'Vertragsdaten'"/>
<xsl:variable name="i18n.preceding_invoice_reference" select="'Vorausgegangene Rechnungen'"/>
<xsl:include href="xrechnung-html.univ.xsl"/>
</xsl:stylesheet>

View File

@@ -1,227 +1,229 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:variable name="i18n.bt10" select="'Routing ID'"/>
<xsl:variable name="i18n.bt44" select="'Name'"/>
<xsl:variable name="i18n.title" select="'XRechnung'"/>
<xsl:variable name="i18n.overview" select="'Overview'"/>
<xsl:variable name="i18n.items" select="'Items'"/>
<xsl:variable name="i18n.information" select="'Information'"/>
<xsl:variable name="i18n.attachments" select="'Attachments'"/>
<xsl:variable name="i18n.history" select="'History'"/>
<xsl:variable name="i18n.disclaimer" select="'We accept no liability for the correctness of the data'"/>
<xsl:variable name="i18n.recipientInfo" select="'Buyer Information'"/>
<xsl:variable name="i18n.bt50" select="'Street / house number'"/>
<xsl:variable name="i18n.bt51" select="'PO Box'"/>
<xsl:variable name="i18n.bt163" select="'Address Addition'"/>
<xsl:variable name="i18n.bt53" select="'Postcode'"/>
<xsl:variable name="i18n.bt52" select="'Place'"/>
<xsl:variable name="i18n.bt54" select="'State/Province'"/>
<xsl:variable name="i18n.bt55" select="'Country'"/>
<xsl:variable name="i18n.bt46" select="'ID'"/>
<xsl:variable name="i18n.bt46-id" select="'ID scheme'"/>
<xsl:variable name="i18n.bt56" select="'Name'"/>
<xsl:variable name="i18n.bt57" select="'Phone'"/>
<xsl:variable name="i18n.bt58" select="'E-mail address'"/>
<xsl:variable name="i18n.bt27" select="'Company name'"/>
<xsl:variable name="i18n.bt35" select="'Street / house number'"/>
<xsl:variable name="i18n.bt36" select="'PO Box'"/>
<xsl:variable name="i18n.bt162" select="'Address Addition'"/>
<xsl:variable name="i18n.bt38" select="'Code postal'"/>
<xsl:variable name="i18n.bt37" select="'Place'"/>
<xsl:variable name="i18n.bt39" select="'State/Province'"/>
<xsl:variable name="i18n.bt40" select="'Country code'"/>
<xsl:variable name="i18n.bt29" select="'ID'"/>
<xsl:variable name="i18n.bt29-id" select="'ID scheme'"/>
<xsl:variable name="i18n.bt41" select="'Name'"/>
<xsl:variable name="i18n.bt42" select="'Phone'"/>
<xsl:variable name="i18n.bt43" select="'E-mail address'"/>
<xsl:variable name="i18n.bt1" select="'Seller Information'"/>
<xsl:variable name="i18n.bt2" select="'Invoice date'"/>
<xsl:variable name="i18n.details" select="'Invoice details'"/>
<xsl:variable name="i18n.period" select="'Billing period'"/>
<xsl:variable name="i18n.bt3" select="'Invoice type'"/>
<xsl:variable name="i18n.bt5" select="'Currency'"/>
<xsl:variable name="i18n.bt73" select="'from'"/>
<xsl:variable name="i18n.bt74" select="'to'"/>
<xsl:variable name="i18n.bt11" select="'Project number'"/>
<xsl:variable name="i18n.bt12" select="'Contract Number'"/>
<xsl:variable name="i18n.bt13" select="'Order number'"/>
<xsl:variable name="i18n.bt14" select="'Order number'"/>
<xsl:variable name="i18n.bt25" select="'Invoice number'"/>
<xsl:variable name="i18n.bt26" select="'Invoice date'"/>
<xsl:variable name="i18n.bg22" select="'Total amounts of the invoice'"/>
<xsl:variable name="i18n.bt106" select="'Line total'"/>
<xsl:variable name="i18n.bt107" select="'Total discounts'"/>
<xsl:variable name="i18n.bt108" select="'Total charges'"/>
<xsl:variable name="i18n.bt109" select="'Grand total'"/>
<xsl:variable name="i18n.bt110" select="'VAT amount'"/>
<xsl:variable name="i18n.bt111" select="'Total VAT'"/>
<xsl:variable name="i18n.bt112" select="'Grand total'"/>
<xsl:variable name="i18n.bt113" select="'Amount paid'"/>
<xsl:variable name="i18n.bt114" select="'rounding amount'"/>
<xsl:variable name="i18n.bt115" select="'Amount Due'"/>
<xsl:variable name="i18n.bg23" select="'Breakdown of VAT at invoice level'"/>
<xsl:variable name="i18n.bt118" select="'VAT category'"/>
<xsl:variable name="i18n.bt116" select="'Grand total'"/>
<xsl:variable name="i18n.bt119" select="'VAT rate'"/>
<xsl:variable name="i18n.bt117" select="'VAT amount'"/>
<xsl:variable name="i18n.bt120" select="'Reason for exemption:'"/>
<xsl:variable name="i18n.bt121" select="'ID for the exemption reason:'"/>
<xsl:variable name="i18n.bg20" select="'Allowance at invoice level'"/>
<xsl:variable name="i18n.bt95" select="'VAT category of the discount:'"/>
<xsl:variable name="i18n.bt93" select="'Basic amount'"/>
<xsl:variable name="i18n.bt94" select="'Percentage'"/>
<xsl:variable name="i18n.bt92" select="'Allowance'"/>
<xsl:variable name="i18n.bt96" select="'VAT rate on allowance'"/>
<xsl:variable name="i18n.bt97" select="'Reason for the allowance'"/>
<xsl:variable name="i18n.bt98" select="'Document level allowance reason code'"/>
<xsl:variable name="i18n.bg21" select="'Charge amount at invoice level'"/>
<xsl:variable name="i18n.bt102" select="'VAT category of the charge amount'"/>
<xsl:variable name="i18n.bt100" select="'Basic amount'"/>
<xsl:variable name="i18n.bt101" select="'Percentage'"/>
<xsl:variable name="i18n.bt99" select="'Charge amount'"/>
<xsl:variable name="i18n.bt103" select="'VAT rate of the charge amount'"/>
<xsl:variable name="i18n.bt104" select="'Reason for the charge amount:'"/>
<xsl:variable name="i18n.bt105" select="'Document level charge reason code'"/>
<xsl:variable name="i18n.bgx42" select="'Shipping cost'"/>
<xsl:variable name="i18n.btx274" select="'VAT category of the shipping cost'"/>
<xsl:variable name="i18n.btx272" select="'Amount'"/>
<xsl:variable name="i18n.btx273" select="'VAT rate of the shipping cost'"/>
<xsl:variable name="i18n.btx271" select="'Shipping cost description'"/>
<xsl:variable name="i18n.bt20" select="'Discount; other payment terms'"/>
<xsl:variable name="i18n.bt9" select="'Due date'"/>
<xsl:variable name="i18n.bt81" select="'Code for the means of payment'"/>
<xsl:variable name="i18n.bt82" select="'Means of payment'"/>
<xsl:variable name="i18n.bt83" select="'Usage'"/>
<xsl:variable name="i18n.bg18" select="'Card information'"/>
<xsl:variable name="i18n.bt87" select="'Card number'"/>
<xsl:variable name="i18n.bt88" select="'Card holder'"/>
<xsl:variable name="i18n.bg19" select="'Direct debit'"/>
<xsl:variable name="i18n.bt89" select="'Mandate Reference No'"/>
<xsl:variable name="i18n.bt91" select="'IBAN'"/>
<xsl:variable name="i18n.bt90" select="'Creditor ID'"/>
<xsl:variable name="i18n.bg17" select="'Transfer'"/>
<xsl:variable name="i18n.bt85" select="'Account holder'"/>
<xsl:variable name="i18n.bt84" select="'IBAN'"/>
<xsl:variable name="i18n.bt86" select="'BIC'"/>
<xsl:variable name="i18n.bg1" select="'Invoice Comment'"/>
<xsl:variable name="i18n.bt21" select="'Subject'"/>
<xsl:variable name="i18n.bt22" select="'Comment'"/>
<xsl:variable name="i18n.bt126" select="'Line'"/>
<xsl:variable name="i18n.bt127" select="'Free text'"/>
<xsl:variable name="i18n.bt128" select="'Object ID'"/>
<xsl:variable name="i18n.bt128-id" select="'Object ID schema'"/>
<xsl:variable name="i18n.bt132" select="'Order line number'"/>
<xsl:variable name="i18n.bt133" select="'Account assignment information'"/>
<xsl:variable name="i18n.bg26" select="'Billing period'"/>
<xsl:variable name="i18n.bt134" select="'from'"/>
<xsl:variable name="i18n.bt135" select="'to'"/>
<xsl:variable name="i18n.bg29" select="'Price details'"/>
<xsl:variable name="i18n.bt129" select="'Quantity'"/>
<xsl:variable name="i18n.bt130" select="'Unit'"/>
<xsl:variable name="i18n.bt146" select="'Unit price (net)'"/>
<xsl:variable name="i18n.bt131" select="'Total price (net)'"/>
<xsl:variable name="i18n.bt147" select="'Discount (net)'"/>
<xsl:variable name="i18n.bt148" select="'Net list price'"/>
<xsl:variable name="i18n.bt149" select="'Number of units'"/>
<xsl:variable name="i18n.bt150" select="'Unit of measure code'"/>
<xsl:variable name="i18n.bt151" select="'VAT'"/>
<xsl:variable name="i18n.bt152" select="'VAT rate in percent'"/>
<xsl:variable name="i18n.bg27" select="'Allowances at line level'"/>
<xsl:variable name="i18n.bt137" select="'Basic amount (net)'"/>
<xsl:variable name="i18n.bt138" select="'Percentage'"/>
<xsl:variable name="i18n.bt136" select="'Allowance (net)'"/>
<xsl:variable name="i18n.bt139" select="'Reason for allowance'"/>
<xsl:variable name="i18n.bt140" select="'Code for the reason for the estate'"/>
<xsl:variable name="i18n.bg28" select="'Charges at invoice line level'"/>
<xsl:variable name="i18n.bt142" select="'Basic amount (net)'"/>
<xsl:variable name="i18n.bt143" select="'percentage'"/>
<xsl:variable name="i18n.bt141" select="'Charge amount (net)'"/>
<xsl:variable name="i18n.bt144" select="'Reason for the allowance'"/>
<xsl:variable name="i18n.bt145" select="'Reason code'"/>
<xsl:variable name="i18n.bg31" select="'Item Information'"/>
<xsl:variable name="i18n.bt153" select="'Name'"/>
<xsl:variable name="i18n.bt154" select="'Description'"/>
<xsl:variable name="i18n.bt155" select="'Part number'"/>
<xsl:variable name="i18n.bt156" select="'Customer''s material number'"/>
<xsl:variable name="i18n.bg32" select="'Article properties'"/>
<xsl:variable name="i18n.bt157" select="'Item ID'"/>
<xsl:variable name="i18n.bt157-id" select="'Item ID schema'"/>
<xsl:variable name="i18n.bt158" select="'Item classification code'"/>
<xsl:variable name="i18n.bt158-id" select="'Identifier to form the schema'"/>
<xsl:variable name="i18n.bt157-vers-id" select="'Version for creating the schema'"/>
<xsl:variable name="i18n.bt159" select="'Country of origin code'"/>
<xsl:variable name="i18n.bg4" select="'Seller Information'"/>
<xsl:variable name="i18n.bt28" select="'Differing trade name'"/>
<xsl:variable name="i18n.bt34" select="'Electronic address'"/>
<xsl:variable name="i18n.bt34-id" select="'Electronic address scheme'"/>
<xsl:variable name="i18n.bt30" select="'Register number'"/>
<xsl:variable name="i18n.bt31" select="'VAT ID'"/>
<xsl:variable name="i18n.bt32" select="'Tax ID'"/>
<xsl:variable name="i18n.bt32-schema" select="'Tax ID scheme'"/>
<xsl:variable name="i18n.bt33" select="'Further legal information'"/>
<xsl:variable name="i18n.bt6" select="'VAT currency code'"/>
<xsl:variable name="i18n.bg11" select="'seller''s tax representative'"/>
<xsl:variable name="i18n.bt62" select="'Name'"/>
<xsl:variable name="i18n.bt64" select="'Street / house number'"/>
<xsl:variable name="i18n.bt65" select="'PO Box'"/>
<xsl:variable name="i18n.bt164" select="'Address Addition'"/>
<xsl:variable name="i18n.bt67" select="'Postcode'"/>
<xsl:variable name="i18n.bt66" select="'Place'"/>
<xsl:variable name="i18n.bt68" select="'State/Province'"/>
<xsl:variable name="i18n.bt69" select="'Country code'"/>
<xsl:variable name="i18n.bt63" select="'VAT ID'"/>
<xsl:variable name="i18n.bg7" select="'Buyer Information'"/>
<xsl:variable name="i18n.bt45" select="'Differing trade name'"/>
<xsl:variable name="i18n.bt49" select="'E-mail address'"/>
<xsl:variable name="i18n.bt49-id" select="'Electronic address scheme'"/>
<xsl:variable name="i18n.bt47" select="'Register number'"/>
<xsl:variable name="i18n.bt47-id" select="'Scheme of register/register number'"/>
<xsl:variable name="i18n.bt48" select="'VAT ID'"/>
<xsl:variable name="i18n.bt7" select="'VAT payday date'"/>
<xsl:variable name="i18n.bt8" select="'VAT Statement Date Code'"/>
<xsl:variable name="i18n.bt19" select="'Account assignment information'"/>
<xsl:variable name="i18n.bg13" select="'Shipping information'"/>
<xsl:variable name="i18n.bt71" select="'Identification of the place of delivery'"/>
<xsl:variable name="i18n.bt71-id" select="'ID scheme'"/>
<xsl:variable name="i18n.bt72" select="'Date of delivery'"/>
<xsl:variable name="i18n.bt70" select="'Recipient name'"/>
<xsl:variable name="i18n.bt75" select="'Street / house number'"/>
<xsl:variable name="i18n.bt76" select="'PO Box'"/>
<xsl:variable name="i18n.bt165" select="'Address Addition'"/>
<xsl:variable name="i18n.bt78" select="'Code postal'"/>
<xsl:variable name="i18n.bt77" select="'Place'"/>
<xsl:variable name="i18n.bt79" select="'State/Province'"/>
<xsl:variable name="i18n.bt80" select="'Country'"/>
<xsl:variable name="i18n.bt17" select="'Assignment number'"/>
<xsl:variable name="i18n.bt15" select="'Receipt confirmation ID'"/>
<xsl:variable name="i18n.bt16" select="'Dispatch note ID'"/>
<xsl:variable name="i18n.bt23" select="'Process ID'"/>
<xsl:variable name="i18n.bt24" select="'Specification ID'"/>
<xsl:variable name="i18n.bt18" select="'Object ID'"/>
<xsl:variable name="i18n.bt18-id" select="'Object ID schema'"/>
<xsl:variable name="i18n.bg10" select="'Payee other than Seller'"/>
<xsl:variable name="i18n.bt59" select="'Name'"/>
<xsl:variable name="i18n.bt60" select="'ID'"/>
<xsl:variable name="i18n.bt60-id" select="'ID scheme'"/>
<xsl:variable name="i18n.bt61" select="'Register number'"/>
<xsl:variable name="i18n.bt61-id" select="'Scheme of register/register number'"/>
<xsl:variable name="i18n.bg24" select="'Documents justifying the invoice'"/>
<xsl:variable name="i18n.bt122" select="'ID'"/>
<xsl:variable name="i18n.bt123" select="'Description'"/>
<xsl:variable name="i18n.bt124" select="'Reference (e.g. Internet address)'"/>
<xsl:variable name="i18n.bt125" select="'Attachment'"/>
<xsl:variable name="i18n.bt125-format" select="'Format of attachment'"/>
<xsl:variable name="i18n.bt125-name" select="'Name of attachment'"/>
<xsl:variable name="i18n.historyDate" select="'Date/time'"/>
<xsl:variable name="i18n.historySubject" select="'Subject'"/>
<xsl:variable name="i18n.historyText" select="'Text'"/>
<xsl:variable name="i18n.historyDetails" select="'Details:'"/>
<xsl:variable name="i18n.payment" select="'Payment details'"/>
<xsl:variable name="i18n.contract_information" select="'Contract Information'"/>
<xsl:variable name="i18n.preceding_invoice_reference" select="'Previous invoices'"/>
<xsl:include href="xrechnung-html.univ.xsl"/>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:variable name="i18n.bt10" select="'Routing ID'"/>
<xsl:variable name="i18n.bt44" select="'Name'"/>
<xsl:variable name="i18n.title" select="'XRechnung'"/>
<xsl:variable name="i18n.overview" select="'Overview'"/>
<xsl:variable name="i18n.items" select="'Items'"/>
<xsl:variable name="i18n.information" select="'Information'"/>
<xsl:variable name="i18n.attachments" select="'Attachments'"/>
<xsl:variable name="i18n.history" select="'History'"/>
<xsl:variable name="i18n.disclaimer" select="'We accept no liability for the correctness of the data'"/>
<xsl:variable name="i18n.recipientInfo" select="'Buyer Information'"/>
<xsl:variable name="i18n.dateOf" select="' from '"/>
<xsl:variable name="i18n.bt50" select="'Street / house number'"/>
<xsl:variable name="i18n.bt51" select="'PO Box'"/>
<xsl:variable name="i18n.bt163" select="'Address Addition'"/>
<xsl:variable name="i18n.bt53" select="'Postcode'"/>
<xsl:variable name="i18n.bt52" select="'Place'"/>
<xsl:variable name="i18n.bt54" select="'State/Province'"/>
<xsl:variable name="i18n.bt55" select="'Country'"/>
<xsl:variable name="i18n.bt46" select="'ID'"/>
<xsl:variable name="i18n.bt46-id" select="'ID scheme'"/>
<xsl:variable name="i18n.bt56" select="'Name'"/>
<xsl:variable name="i18n.bt57" select="'Phone'"/>
<xsl:variable name="i18n.bt58" select="'E-mail address'"/>
<xsl:variable name="i18n.bt27" select="'Company name'"/>
<xsl:variable name="i18n.bt35" select="'Street / house number'"/>
<xsl:variable name="i18n.bt36" select="'PO Box'"/>
<xsl:variable name="i18n.bt162" select="'Address Addition'"/>
<xsl:variable name="i18n.bt38" select="'Code postal'"/>
<xsl:variable name="i18n.bt37" select="'Place'"/>
<xsl:variable name="i18n.bt39" select="'State/Province'"/>
<xsl:variable name="i18n.bt40" select="'Country code'"/>
<xsl:variable name="i18n.bt29" select="'ID'"/>
<xsl:variable name="i18n.bt29-id" select="'ID scheme'"/>
<xsl:variable name="i18n.bt41" select="'Name'"/>
<xsl:variable name="i18n.bt42" select="'Phone'"/>
<xsl:variable name="i18n.bt43" select="'E-mail address'"/>
<xsl:variable name="i18n.bt1" select="'Seller Information'"/>
<xsl:variable name="i18n.bt2" select="'Invoice date'"/>
<xsl:variable name="i18n.details" select="'Invoice details'"/>
<xsl:variable name="i18n.period" select="'Billing period'"/>
<xsl:variable name="i18n.bt3" select="'Invoice type'"/>
<xsl:variable name="i18n.bt5" select="'Currency'"/>
<xsl:variable name="i18n.bt73" select="'from'"/>
<xsl:variable name="i18n.bt74" select="'to'"/>
<xsl:variable name="i18n.bt11" select="'Project number'"/>
<xsl:variable name="i18n.bt12" select="'Contract Number'"/>
<xsl:variable name="i18n.bt13" select="'Order number'"/>
<xsl:variable name="i18n.bt14" select="'Order number'"/>
<xsl:variable name="i18n.bt25" select="'Invoice number'"/>
<xsl:variable name="i18n.bt26" select="'Invoice date'"/>
<xsl:variable name="i18n.bg22" select="'Total amounts of the invoice'"/>
<xsl:variable name="i18n.bt106" select="'Line total'"/>
<xsl:variable name="i18n.bt107" select="'Total discounts'"/>
<xsl:variable name="i18n.bt108" select="'Total charges'"/>
<xsl:variable name="i18n.bt109" select="'Grand total'"/>
<xsl:variable name="i18n.bt110" select="'VAT amount'"/>
<xsl:variable name="i18n.bt111" select="'Total VAT'"/>
<xsl:variable name="i18n.bt112" select="'Grand total'"/>
<xsl:variable name="i18n.bt113" select="'Amount paid'"/>
<xsl:variable name="i18n.bt114" select="'rounding amount'"/>
<xsl:variable name="i18n.bt115" select="'Amount Due'"/>
<xsl:variable name="i18n.bg23" select="'Breakdown of VAT at invoice level'"/>
<xsl:variable name="i18n.bt118" select="'VAT category'"/>
<xsl:variable name="i18n.bt116" select="'Grand total'"/>
<xsl:variable name="i18n.bt119" select="'VAT rate'"/>
<xsl:variable name="i18n.bt117" select="'VAT amount'"/>
<xsl:variable name="i18n.bt120" select="'Reason for exemption:'"/>
<xsl:variable name="i18n.bt121" select="'ID for the exemption reason:'"/>
<xsl:variable name="i18n.bg20" select="'Allowance at invoice level'"/>
<xsl:variable name="i18n.bt95" select="'VAT category of the discount:'"/>
<xsl:variable name="i18n.bt93" select="'Basic amount'"/>
<xsl:variable name="i18n.bt94" select="'Percentage'"/>
<xsl:variable name="i18n.bt92" select="'Allowance'"/>
<xsl:variable name="i18n.bt96" select="'VAT rate on allowance'"/>
<xsl:variable name="i18n.bt97" select="'Reason for the allowance'"/>
<xsl:variable name="i18n.bt98" select="'Document level allowance reason code'"/>
<xsl:variable name="i18n.bg21" select="'Charge amount at invoice level'"/>
<xsl:variable name="i18n.bt102" select="'VAT category of the charge amount'"/>
<xsl:variable name="i18n.bt100" select="'Basic amount'"/>
<xsl:variable name="i18n.bt101" select="'Percentage'"/>
<xsl:variable name="i18n.bt99" select="'Charge amount'"/>
<xsl:variable name="i18n.bt103" select="'VAT rate of the charge amount'"/>
<xsl:variable name="i18n.bt104" select="'Reason for the charge amount:'"/>
<xsl:variable name="i18n.bt105" select="'Document level charge reason code'"/>
<xsl:variable name="i18n.bgx42" select="'Shipping cost'"/>
<xsl:variable name="i18n.btx274" select="'VAT category of the shipping cost'"/>
<xsl:variable name="i18n.btx272" select="'Amount'"/>
<xsl:variable name="i18n.btx273" select="'VAT rate of the shipping cost'"/>
<xsl:variable name="i18n.btx271" select="'Shipping cost description'"/>
<xsl:variable name="i18n.bt20" select="'Discount; other payment terms'"/>
<xsl:variable name="i18n.bt9" select="'Due date'"/>
<xsl:variable name="i18n.bt81" select="'Code for the means of payment'"/>
<xsl:variable name="i18n.bt82" select="'Means of payment'"/>
<xsl:variable name="i18n.bt83" select="'Usage'"/>
<xsl:variable name="i18n.bg18" select="'Card information'"/>
<xsl:variable name="i18n.bt87" select="'Card number'"/>
<xsl:variable name="i18n.bt88" select="'Card holder'"/>
<xsl:variable name="i18n.bg19" select="'Direct debit'"/>
<xsl:variable name="i18n.bt89" select="'Mandate Reference No'"/>
<xsl:variable name="i18n.bt91" select="'IBAN'"/>
<xsl:variable name="i18n.bt90" select="'Creditor ID'"/>
<xsl:variable name="i18n.bg17" select="'Transfer'"/>
<xsl:variable name="i18n.bt85" select="'Account holder'"/>
<xsl:variable name="i18n.bt84" select="'IBAN'"/>
<xsl:variable name="i18n.bt86" select="'BIC'"/>
<xsl:variable name="i18n.bg1" select="'Invoice Comment'"/>
<xsl:variable name="i18n.bt21" select="'Subject'"/>
<xsl:variable name="i18n.bt22" select="'Comment'"/>
<xsl:variable name="i18n.bt126" select="'Line'"/>
<xsl:variable name="i18n.bt127" select="'Free text'"/>
<xsl:variable name="i18n.bt128" select="'Object ID'"/>
<xsl:variable name="i18n.bt128-id" select="'Object ID schema'"/>
<xsl:variable name="i18n.bt132" select="'Order line number'"/>
<xsl:variable name="i18n.bt133" select="'Account assignment information'"/>
<xsl:variable name="i18n.bg26" select="'Billing period'"/>
<xsl:variable name="i18n.bt134" select="'from'"/>
<xsl:variable name="i18n.bt135" select="'to'"/>
<xsl:variable name="i18n.bg29" select="'Price details'"/>
<xsl:variable name="i18n.bt129" select="'Quantity'"/>
<xsl:variable name="i18n.bt130" select="'Unit'"/>
<xsl:variable name="i18n.bt146" select="'Unit price (net)'"/>
<xsl:variable name="i18n.bt131" select="'Total price (net)'"/>
<xsl:variable name="i18n.bt147" select="'Discount (net)'"/>
<xsl:variable name="i18n.bt148" select="'Net list price'"/>
<xsl:variable name="i18n.bt149" select="'Number of units'"/>
<xsl:variable name="i18n.bt150" select="'Unit of measure code'"/>
<xsl:variable name="i18n.bt151" select="'VAT'"/>
<xsl:variable name="i18n.bt152" select="'VAT rate in percent'"/>
<xsl:variable name="i18n.bg27" select="'Allowances at line level'"/>
<xsl:variable name="i18n.bt137" select="'Basic amount (net)'"/>
<xsl:variable name="i18n.bt138" select="'Percentage'"/>
<xsl:variable name="i18n.bt136" select="'Allowance (net)'"/>
<xsl:variable name="i18n.bt139" select="'Reason for allowance'"/>
<xsl:variable name="i18n.bt140" select="'Code for the reason for the estate'"/>
<xsl:variable name="i18n.bg28" select="'Charges at invoice line level'"/>
<xsl:variable name="i18n.bt142" select="'Basic amount (net)'"/>
<xsl:variable name="i18n.bt143" select="'percentage'"/>
<xsl:variable name="i18n.bt141" select="'Charge amount (net)'"/>
<xsl:variable name="i18n.bt144" select="'Reason for the allowance'"/>
<xsl:variable name="i18n.bt145" select="'Reason code'"/>
<xsl:variable name="i18n.bg31" select="'Item Information'"/>
<xsl:variable name="i18n.bt153" select="'Name'"/>
<xsl:variable name="i18n.bt154" select="'Description'"/>
<xsl:variable name="i18n.bt155" select="'Part number'"/>
<xsl:variable name="i18n.bt156" select="'Customer''s material number'"/>
<xsl:variable name="i18n.bg32" select="'Article properties'"/>
<xsl:variable name="i18n.bt157" select="'Item ID'"/>
<xsl:variable name="i18n.bt157-id" select="'Item ID schema'"/>
<xsl:variable name="i18n.bt158" select="'Item classification code'"/>
<xsl:variable name="i18n.bt158-id" select="'Identifier to form the schema'"/>
<xsl:variable name="i18n.bt157-vers-id" select="'Version for creating the schema'"/>
<xsl:variable name="i18n.bt159" select="'Country of origin code'"/>
<xsl:variable name="i18n.bg4" select="'Seller Information'"/>
<xsl:variable name="i18n.bt28" select="'Differing trade name'"/>
<xsl:variable name="i18n.bt34" select="'Electronic address'"/>
<xsl:variable name="i18n.bt34-id" select="'Electronic address scheme'"/>
<xsl:variable name="i18n.bt30" select="'Register number'"/>
<xsl:variable name="i18n.bt31" select="'VAT ID'"/>
<xsl:variable name="i18n.bt32" select="'Tax ID'"/>
<xsl:variable name="i18n.bt32-schema" select="'Tax ID scheme'"/>
<xsl:variable name="i18n.bt33" select="'Further legal information'"/>
<xsl:variable name="i18n.bt6" select="'VAT currency code'"/>
<xsl:variable name="i18n.bg11" select="'seller''s tax representative'"/>
<xsl:variable name="i18n.bt62" select="'Name'"/>
<xsl:variable name="i18n.bt64" select="'Street / house number'"/>
<xsl:variable name="i18n.bt65" select="'PO Box'"/>
<xsl:variable name="i18n.bt164" select="'Address Addition'"/>
<xsl:variable name="i18n.bt67" select="'Postcode'"/>
<xsl:variable name="i18n.bt66" select="'Place'"/>
<xsl:variable name="i18n.bt68" select="'State/Province'"/>
<xsl:variable name="i18n.bt69" select="'Country code'"/>
<xsl:variable name="i18n.bt63" select="'VAT ID'"/>
<xsl:variable name="i18n.bg7" select="'Buyer Information'"/>
<xsl:variable name="i18n.bt45" select="'Differing trade name'"/>
<xsl:variable name="i18n.bt49" select="'E-mail address'"/>
<xsl:variable name="i18n.bt49-id" select="'Electronic address scheme'"/>
<xsl:variable name="i18n.bt47" select="'Register number'"/>
<xsl:variable name="i18n.bt47-id" select="'Scheme of register/register number'"/>
<xsl:variable name="i18n.bt48" select="'VAT ID'"/>
<xsl:variable name="i18n.bt7" select="'VAT payday date'"/>
<xsl:variable name="i18n.bt8" select="'VAT Statement Date Code'"/>
<xsl:variable name="i18n.bt19" select="'Account assignment information'"/>
<xsl:variable name="i18n.bg13" select="'Shipping information'"/>
<xsl:variable name="i18n.bt71" select="'Identification of the place of delivery'"/>
<xsl:variable name="i18n.bt71-id" select="'ID scheme'"/>
<xsl:variable name="i18n.bt72" select="'Date of delivery'"/>
<xsl:variable name="i18n.bt70" select="'Recipient name'"/>
<xsl:variable name="i18n.bt75" select="'Street / house number'"/>
<xsl:variable name="i18n.bt76" select="'PO Box'"/>
<xsl:variable name="i18n.bt165" select="'Address Addition'"/>
<xsl:variable name="i18n.bt78" select="'Code postal'"/>
<xsl:variable name="i18n.bt77" select="'Place'"/>
<xsl:variable name="i18n.bt79" select="'State/Province'"/>
<xsl:variable name="i18n.bt80" select="'Country'"/>
<xsl:variable name="i18n.bt17" select="'Assignment number'"/>
<xsl:variable name="i18n.bt15" select="'Receipt confirmation ID'"/>
<xsl:variable name="i18n.bt16" select="'Dispatch note ID'"/>
<xsl:variable name="i18n.btx202" select="'Delivery note ID'"/>
<xsl:variable name="i18n.bt23" select="'Process ID'"/>
<xsl:variable name="i18n.bt24" select="'Specification ID'"/>
<xsl:variable name="i18n.bt18" select="'Object ID'"/>
<xsl:variable name="i18n.bt18-id" select="'Object ID schema'"/>
<xsl:variable name="i18n.bg10" select="'Payee other than Seller'"/>
<xsl:variable name="i18n.bt59" select="'Name'"/>
<xsl:variable name="i18n.bt60" select="'ID'"/>
<xsl:variable name="i18n.bt60-id" select="'ID scheme'"/>
<xsl:variable name="i18n.bt61" select="'Register number'"/>
<xsl:variable name="i18n.bt61-id" select="'Scheme of register/register number'"/>
<xsl:variable name="i18n.bg24" select="'Documents justifying the invoice'"/>
<xsl:variable name="i18n.bt122" select="'ID'"/>
<xsl:variable name="i18n.bt123" select="'Description'"/>
<xsl:variable name="i18n.bt124" select="'Reference (e.g. Internet address)'"/>
<xsl:variable name="i18n.bt125" select="'Attachment'"/>
<xsl:variable name="i18n.bt125-format" select="'Format of attachment'"/>
<xsl:variable name="i18n.bt125-name" select="'Name of attachment'"/>
<xsl:variable name="i18n.historyDate" select="'Date/time'"/>
<xsl:variable name="i18n.historySubject" select="'Subject'"/>
<xsl:variable name="i18n.historyText" select="'Text'"/>
<xsl:variable name="i18n.historyDetails" select="'Details:'"/>
<xsl:variable name="i18n.payment" select="'Payment details'"/>
<xsl:variable name="i18n.contract_information" select="'Contract Information'"/>
<xsl:variable name="i18n.preceding_invoice_reference" select="'Previous invoices'"/>
<xsl:include href="xrechnung-html.univ.xsl"/>
</xsl:stylesheet>

View File

@@ -1,227 +1,229 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:variable name="i18n.bt10" select="'Identifiant d''itinéraire'"/>
<xsl:variable name="i18n.bt44" select="'Nom'"/>
<xsl:variable name="i18n.title" select="'XRechnung'"/>
<xsl:variable name="i18n.overview" select="'Aperçu'"/>
<xsl:variable name="i18n.items" select="'Détails'"/>
<xsl:variable name="i18n.information" select="'Additif'"/>
<xsl:variable name="i18n.attachments" select="'Pièces jointes'"/>
<xsl:variable name="i18n.history" select="'Historique de traitement'"/>
<xsl:variable name="i18n.disclaimer" select="'Nous n''assumons aucune responsabilité quant à l''exactitude des données.'"/>
<xsl:variable name="i18n.recipientInfo" select="'Informations sur l''acheteur'"/>
<xsl:variable name="i18n.bt50" select="'Rue / Numéro de maison'"/>
<xsl:variable name="i18n.bt51" select="'Boîte postale'"/>
<xsl:variable name="i18n.bt163" select="'Supplément d''adresse'"/>
<xsl:variable name="i18n.bt53" select="'Code postal'"/>
<xsl:variable name="i18n.bt52" select="'Lieu'"/>
<xsl:variable name="i18n.bt54" select="'Région'"/>
<xsl:variable name="i18n.bt55" select="'Pays'"/>
<xsl:variable name="i18n.bt46" select="'Identifiant'"/>
<xsl:variable name="i18n.bt46-id" select="'Schéma de l''Identifiant'"/>
<xsl:variable name="i18n.bt56" select="'Nom'"/>
<xsl:variable name="i18n.bt57" select="'Téléphone'"/>
<xsl:variable name="i18n.bt58" select="'Adresse électronique'"/>
<xsl:variable name="i18n.bt27" select="'Nom de la société'"/>
<xsl:variable name="i18n.bt35" select="'Rue / Numéro de maison'"/>
<xsl:variable name="i18n.bt36" select="'Boîte postale'"/>
<xsl:variable name="i18n.bt162" select="'Supplément d''adresse'"/>
<xsl:variable name="i18n.bt38" select="'Code postal'"/>
<xsl:variable name="i18n.bt37" select="'Lieu'"/>
<xsl:variable name="i18n.bt39" select="'Région'"/>
<xsl:variable name="i18n.bt40" select="'Code pays'"/>
<xsl:variable name="i18n.bt29" select="'Identifiant'"/>
<xsl:variable name="i18n.bt29-id" select="'Schéma de l''Identifiant'"/>
<xsl:variable name="i18n.bt41" select="'Nom'"/>
<xsl:variable name="i18n.bt42" select="'Téléphone'"/>
<xsl:variable name="i18n.bt43" select="'Adresse électronique'"/>
<xsl:variable name="i18n.bt1" select="'Informations sur le vendeur'"/>
<xsl:variable name="i18n.bt2" select="'Date de facture'"/>
<xsl:variable name="i18n.details" select="'Détails de la facturation'"/>
<xsl:variable name="i18n.period" select="'Période de facturation'"/>
<xsl:variable name="i18n.bt3" select="'Type de facture'"/>
<xsl:variable name="i18n.bt5" select="'Devise'"/>
<xsl:variable name="i18n.bt73" select="'de'"/>
<xsl:variable name="i18n.bt74" select="'jusqu''à'"/>
<xsl:variable name="i18n.bt11" select="'Numéro du projet'"/>
<xsl:variable name="i18n.bt12" select="'Numéro du contrat'"/>
<xsl:variable name="i18n.bt13" select="'Numéro de commande'"/>
<xsl:variable name="i18n.bt14" select="'Numéro de commande'"/>
<xsl:variable name="i18n.bt25" select="'Numéro de facture'"/>
<xsl:variable name="i18n.bt26" select="'Date de facture'"/>
<xsl:variable name="i18n.bg22" select="'Montants totaux de la facture'"/>
<xsl:variable name="i18n.bt106" select="'Total de toutes les lignes'"/>
<xsl:variable name="i18n.bt107" select="'Total de remises'"/>
<xsl:variable name="i18n.bt108" select="'Total de suppléments'"/>
<xsl:variable name="i18n.bt109" select="'Montant total'"/>
<xsl:variable name="i18n.bt110" select="'montant de la TVA'"/>
<xsl:variable name="i18n.bt111" select="'Montant total de TVA'"/>
<xsl:variable name="i18n.bt112" select="'Montant total'"/>
<xsl:variable name="i18n.bt113" select="'Montant payé'"/>
<xsl:variable name="i18n.bt114" select="'Montant arrondi'"/>
<xsl:variable name="i18n.bt115" select="'Montant '"/>
<xsl:variable name="i18n.bg23" select="'Ventilation de la TVA au niveau de la facture'"/>
<xsl:variable name="i18n.bt118" select="'Catégorie de TVA'"/>
<xsl:variable name="i18n.bt116" select="'Montant total'"/>
<xsl:variable name="i18n.bt119" select="'taux TVA'"/>
<xsl:variable name="i18n.bt117" select="'montant de la TVA'"/>
<xsl:variable name="i18n.bt120" select="'Motif d''exemption'"/>
<xsl:variable name="i18n.bt121" select="'Identifiant pour motif d''exemption'"/>
<xsl:variable name="i18n.bg20" select="'Allocation au niveau de la facture'"/>
<xsl:variable name="i18n.bt95" select="'Catégorie de TVA de la remise'"/>
<xsl:variable name="i18n.bt93" select="'Montant de base'"/>
<xsl:variable name="i18n.bt94" select="'Pourcentage'"/>
<xsl:variable name="i18n.bt92" select="'Allocation'"/>
<xsl:variable name="i18n.bt96" select="'Taux de TVA de la allocation'"/>
<xsl:variable name="i18n.bt97" select="'Motif de la remise'"/>
<xsl:variable name="i18n.bt98" select="'Document level allowance reason code'"/>
<xsl:variable name="i18n.bg21" select="'Supplément au niveau de la facture'"/>
<xsl:variable name="i18n.bt102" select="'Catégorie de TVA du supplément'"/>
<xsl:variable name="i18n.bt100" select="'Montant de base'"/>
<xsl:variable name="i18n.bt101" select="'Pourcentage'"/>
<xsl:variable name="i18n.bt99" select="'Supplément'"/>
<xsl:variable name="i18n.bt103" select="'Taux de TVA du supplément'"/>
<xsl:variable name="i18n.bt104" select="'Raison du supplément'"/>
<xsl:variable name="i18n.bt105" select="'Document level charge reason code'"/>
<xsl:variable name="i18n.bgx42" select="'Frais d''expédition'"/>
<xsl:variable name="i18n.btx274" select="'Catégorie de TVA des frais de port'"/>
<xsl:variable name="i18n.btx272" select="'Montant'"/>
<xsl:variable name="i18n.btx273" select="'VAT rate of the shipping cost'"/>
<xsl:variable name="i18n.btx271" select="'Taux de TVA des frais de port'"/>
<xsl:variable name="i18n.bt20" select="'Rabais; autres conditions de paiement'"/>
<xsl:variable name="i18n.bt9" select="'Date d''échéance'"/>
<xsl:variable name="i18n.bt81" select="'Code du moyen de paiement'"/>
<xsl:variable name="i18n.bt82" select="'Moyens de paiement'"/>
<xsl:variable name="i18n.bt83" select="'Utilisation'"/>
<xsl:variable name="i18n.bg18" select="'Information de la carte'"/>
<xsl:variable name="i18n.bt87" select="'Numéro de carte'"/>
<xsl:variable name="i18n.bt88" select="'Titulaire de la carte'"/>
<xsl:variable name="i18n.bg19" select="'Prélèvement automatique'"/>
<xsl:variable name="i18n.bt89" select="'Numéro de référence du mandat'"/>
<xsl:variable name="i18n.bt91" select="'IBAN'"/>
<xsl:variable name="i18n.bt90" select="'Identifiant du créancier'"/>
<xsl:variable name="i18n.bg17" select="'Transfert'"/>
<xsl:variable name="i18n.bt85" select="'Titulaire du compte'"/>
<xsl:variable name="i18n.bt84" select="'IBAN'"/>
<xsl:variable name="i18n.bt86" select="'BIC'"/>
<xsl:variable name="i18n.bg1" select="'Commentaire sur la facture'"/>
<xsl:variable name="i18n.bt21" select="'Objet'"/>
<xsl:variable name="i18n.bt22" select="'Commentaire'"/>
<xsl:variable name="i18n.bt126" select="'Position'"/>
<xsl:variable name="i18n.bt127" select="'Texte libre'"/>
<xsl:variable name="i18n.bt128" select="'Identifiant d''objet'"/>
<xsl:variable name="i18n.bt128-id" select="'Schéma de l''Identifiant objet'"/>
<xsl:variable name="i18n.bt132" select="'Numéro de ligne de commande'"/>
<xsl:variable name="i18n.bt133" select="'Information sur l''attribution de compte'"/>
<xsl:variable name="i18n.bg26" select="'Période de facturation'"/>
<xsl:variable name="i18n.bt134" select="'de'"/>
<xsl:variable name="i18n.bt135" select="'jusqu''à'"/>
<xsl:variable name="i18n.bg29" select="'Détails de prix'"/>
<xsl:variable name="i18n.bt129" select="'Quantité'"/>
<xsl:variable name="i18n.bt130" select="'Unité'"/>
<xsl:variable name="i18n.bt146" select="'Prix unitaire net'"/>
<xsl:variable name="i18n.bt131" select="'Prix total net'"/>
<xsl:variable name="i18n.bt147" select="'Remise nette'"/>
<xsl:variable name="i18n.bt148" select="'Prix catalogue (net)'"/>
<xsl:variable name="i18n.bt149" select="'Nombre d''unités'"/>
<xsl:variable name="i18n.bt150" select="'Code de l''unité de mesure '"/>
<xsl:variable name="i18n.bt151" select="'TVA'"/>
<xsl:variable name="i18n.bt152" select="'Pourcentage de TVA'"/>
<xsl:variable name="i18n.bg27" select="'Allocations au niveau de la ligne de facture'"/>
<xsl:variable name="i18n.bt137" select="'Montant de base net'"/>
<xsl:variable name="i18n.bt138" select="'Pourcentage'"/>
<xsl:variable name="i18n.bt136" select="'Allocation nette'"/>
<xsl:variable name="i18n.bt139" select="'Raison pour l''allocation '"/>
<xsl:variable name="i18n.bt140" select="'Code de la raison pour l''allocation'"/>
<xsl:variable name="i18n.bg28" select="'Supplément au niveau de la ligne de facture'"/>
<xsl:variable name="i18n.bt142" select="'Montant de base net'"/>
<xsl:variable name="i18n.bt143" select="'Pourcentage'"/>
<xsl:variable name="i18n.bt141" select="'Supplément net'"/>
<xsl:variable name="i18n.bt144" select="'Raison du supplément'"/>
<xsl:variable name="i18n.bt145" select="'Code de la raison du supplément'"/>
<xsl:variable name="i18n.bg31" select="'Informations sur l''article'"/>
<xsl:variable name="i18n.bt153" select="'Nom'"/>
<xsl:variable name="i18n.bt154" select="'Description'"/>
<xsl:variable name="i18n.bt155" select="'Numéro d''article'"/>
<xsl:variable name="i18n.bt156" select="'N° client / matériel'"/>
<xsl:variable name="i18n.bg32" select="'Propriétés de l''article'"/>
<xsl:variable name="i18n.bt157" select="'Identifiant article'"/>
<xsl:variable name="i18n.bt157-id" select="'Schéma de l''Identifiant article'"/>
<xsl:variable name="i18n.bt158" select="'Code de classification des articles'"/>
<xsl:variable name="i18n.bt158-id" select="'Identifiant pour la création du schéma'"/>
<xsl:variable name="i18n.bt157-vers-id" select="'Version de création du schéma'"/>
<xsl:variable name="i18n.bt159" select="'Code du pays d''origine'"/>
<xsl:variable name="i18n.bg4" select="'Informations sur le vendeur'"/>
<xsl:variable name="i18n.bt28" select="'Nom commercial différent'"/>
<xsl:variable name="i18n.bt34" select="'Adresse électronique'"/>
<xsl:variable name="i18n.bt34-id" select="'Schéma de l''adresse électronique'"/>
<xsl:variable name="i18n.bt30" select="'Numéro d''enregistrement'"/>
<xsl:variable name="i18n.bt31" select="'Identifiant TVA'"/>
<xsl:variable name="i18n.bt32" select="'Numéro fiscale'"/>
<xsl:variable name="i18n.bt32-schema" select="'Schéma du numéro fiscal'"/>
<xsl:variable name="i18n.bt33" select="'Autres informations légales'"/>
<xsl:variable name="i18n.bt6" select="'Code devise de la TVA'"/>
<xsl:variable name="i18n.bg11" select="'Représentant fiscal du vendeur'"/>
<xsl:variable name="i18n.bt62" select="'Nom'"/>
<xsl:variable name="i18n.bt64" select="'Rue / Numéro de maison'"/>
<xsl:variable name="i18n.bt65" select="'Boîte postale'"/>
<xsl:variable name="i18n.bt164" select="'Supplément d''adresse'"/>
<xsl:variable name="i18n.bt67" select="'Code postal'"/>
<xsl:variable name="i18n.bt66" select="'Lieu'"/>
<xsl:variable name="i18n.bt68" select="'Région'"/>
<xsl:variable name="i18n.bt69" select="'Code pays'"/>
<xsl:variable name="i18n.bt63" select="'Identifiant TVA'"/>
<xsl:variable name="i18n.bg7" select="'Informations sur l''acheteur'"/>
<xsl:variable name="i18n.bt45" select="'Nom commercial différent '"/>
<xsl:variable name="i18n.bt49" select="'Adresse électronique'"/>
<xsl:variable name="i18n.bt49-id" select="'Schéma de l''adresse électronique'"/>
<xsl:variable name="i18n.bt47" select="'Numéro d''enregistrement'"/>
<xsl:variable name="i18n.bt47-id" select="'Schéma du numéro d''enregistrement'"/>
<xsl:variable name="i18n.bt48" select="'Identifiant TVA'"/>
<xsl:variable name="i18n.bt7" select="'Date de facturation de la TVA'"/>
<xsl:variable name="i18n.bt8" select="'Code de date de règlement de la TVA'"/>
<xsl:variable name="i18n.bt19" select="'Informations sur l''attribution de compte'"/>
<xsl:variable name="i18n.bg13" select="'Informations de livraison'"/>
<xsl:variable name="i18n.bt71" select="'Identification du lieu de livraison'"/>
<xsl:variable name="i18n.bt71-id" select="'Schéma de l''Identifiant'"/>
<xsl:variable name="i18n.bt72" select="'Date de livraison'"/>
<xsl:variable name="i18n.bt70" select="'Nom du destinataire'"/>
<xsl:variable name="i18n.bt75" select="'Rue / Numéro de maison'"/>
<xsl:variable name="i18n.bt76" select="'Boîte postale'"/>
<xsl:variable name="i18n.bt165" select="'Supplément d''adresse'"/>
<xsl:variable name="i18n.bt78" select="'Code postal'"/>
<xsl:variable name="i18n.bt77" select="'Lieu'"/>
<xsl:variable name="i18n.bt79" select="'Région'"/>
<xsl:variable name="i18n.bt80" select="'Pays'"/>
<xsl:variable name="i18n.bt17" select="'Numéro d''attribution'"/>
<xsl:variable name="i18n.bt15" select="'Identifiant de l''accusé de réception'"/>
<xsl:variable name="i18n.bt16" select="'Identifiant du bordereau d''expédition'"/>
<xsl:variable name="i18n.bt23" select="'Identifiant processus'"/>
<xsl:variable name="i18n.bt24" select="'Identifiant spécification'"/>
<xsl:variable name="i18n.bt18" select="'Identifiant objet'"/>
<xsl:variable name="i18n.bt18-id" select="'Schéma de l''Identifiant objet'"/>
<xsl:variable name="i18n.bg10" select="'bénéficiaire autre que le vendeur'"/>
<xsl:variable name="i18n.bt59" select="'Nom'"/>
<xsl:variable name="i18n.bt60" select="'Identifiant'"/>
<xsl:variable name="i18n.bt60-id" select="'Schéma de l''Identifiant'"/>
<xsl:variable name="i18n.bt61" select="'Numéro d''enregistrement'"/>
<xsl:variable name="i18n.bt61-id" select="'Schéma du numéro d''enregistrement'"/>
<xsl:variable name="i18n.bg24" select="'Documents justificatifs'"/>
<xsl:variable name="i18n.bt122" select="'Identifiant'"/>
<xsl:variable name="i18n.bt123" select="'Description'"/>
<xsl:variable name="i18n.bt124" select="'Référence (par exemple l''adresse Internet)'"/>
<xsl:variable name="i18n.bt125" select="'Document joint'"/>
<xsl:variable name="i18n.bt125-format" select="'Format du document joint'"/>
<xsl:variable name="i18n.bt125-name" select="'Nom du document joint '"/>
<xsl:variable name="i18n.historyDate" select="'Date/heure'"/>
<xsl:variable name="i18n.historySubject" select="'Objet'"/>
<xsl:variable name="i18n.historyText" select="'Texte'"/>
<xsl:variable name="i18n.historyDetails" select="'Détails'"/>
<xsl:variable name="i18n.payment" select="'Détails de paiement'"/>
<xsl:variable name="i18n.contract_information" select="'Informations sur le contrat'"/>
<xsl:variable name="i18n.preceding_invoice_reference" select="'Factures précédentes'"/>
<xsl:include href="xrechnung-html.univ.xsl"/>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:variable name="i18n.bt10" select="'Identifiant d''itinéraire'"/>
<xsl:variable name="i18n.bt44" select="'Nom'"/>
<xsl:variable name="i18n.title" select="'XRechnung'"/>
<xsl:variable name="i18n.overview" select="'Aperçu'"/>
<xsl:variable name="i18n.items" select="'Détails'"/>
<xsl:variable name="i18n.information" select="'Additif'"/>
<xsl:variable name="i18n.attachments" select="'Pièces jointes'"/>
<xsl:variable name="i18n.history" select="'Historique de traitement'"/>
<xsl:variable name="i18n.disclaimer" select="'Nous n''assumons aucune responsabilité quant à l''exactitude des données.'"/>
<xsl:variable name="i18n.recipientInfo" select="'Informations sur l''acheteur'"/>
<xsl:variable name="i18n.dateOf" select="' du '"/>
<xsl:variable name="i18n.bt50" select="'Rue / Numéro de maison'"/>
<xsl:variable name="i18n.bt51" select="'Boîte postale'"/>
<xsl:variable name="i18n.bt163" select="'Supplément d''adresse'"/>
<xsl:variable name="i18n.bt53" select="'Code postal'"/>
<xsl:variable name="i18n.bt52" select="'Lieu'"/>
<xsl:variable name="i18n.bt54" select="'Région'"/>
<xsl:variable name="i18n.bt55" select="'Pays'"/>
<xsl:variable name="i18n.bt46" select="'Identifiant'"/>
<xsl:variable name="i18n.bt46-id" select="'Schéma de l''Identifiant'"/>
<xsl:variable name="i18n.bt56" select="'Nom'"/>
<xsl:variable name="i18n.bt57" select="'Téléphone'"/>
<xsl:variable name="i18n.bt58" select="'Adresse électronique'"/>
<xsl:variable name="i18n.bt27" select="'Nom de la société'"/>
<xsl:variable name="i18n.bt35" select="'Rue / Numéro de maison'"/>
<xsl:variable name="i18n.bt36" select="'Boîte postale'"/>
<xsl:variable name="i18n.bt162" select="'Supplément d''adresse'"/>
<xsl:variable name="i18n.bt38" select="'Code postal'"/>
<xsl:variable name="i18n.bt37" select="'Lieu'"/>
<xsl:variable name="i18n.bt39" select="'Région'"/>
<xsl:variable name="i18n.bt40" select="'Code pays'"/>
<xsl:variable name="i18n.bt29" select="'Identifiant'"/>
<xsl:variable name="i18n.bt29-id" select="'Schéma de l''Identifiant'"/>
<xsl:variable name="i18n.bt41" select="'Nom'"/>
<xsl:variable name="i18n.bt42" select="'Téléphone'"/>
<xsl:variable name="i18n.bt43" select="'Adresse électronique'"/>
<xsl:variable name="i18n.bt1" select="'Informations sur le vendeur'"/>
<xsl:variable name="i18n.bt2" select="'Date de facture'"/>
<xsl:variable name="i18n.details" select="'Détails de la facturation'"/>
<xsl:variable name="i18n.period" select="'Période de facturation'"/>
<xsl:variable name="i18n.bt3" select="'Type de facture'"/>
<xsl:variable name="i18n.bt5" select="'Devise'"/>
<xsl:variable name="i18n.bt73" select="'de'"/>
<xsl:variable name="i18n.bt74" select="'jusqu''à'"/>
<xsl:variable name="i18n.bt11" select="'Numéro du projet'"/>
<xsl:variable name="i18n.bt12" select="'Numéro du contrat'"/>
<xsl:variable name="i18n.bt13" select="'Numéro de commande'"/>
<xsl:variable name="i18n.bt14" select="'Numéro de commande'"/>
<xsl:variable name="i18n.bt25" select="'Numéro de facture'"/>
<xsl:variable name="i18n.bt26" select="'Date de facture'"/>
<xsl:variable name="i18n.bg22" select="'Montants totaux de la facture'"/>
<xsl:variable name="i18n.bt106" select="'Total de toutes les lignes'"/>
<xsl:variable name="i18n.bt107" select="'Total de remises'"/>
<xsl:variable name="i18n.bt108" select="'Total de suppléments'"/>
<xsl:variable name="i18n.bt109" select="'Montant total'"/>
<xsl:variable name="i18n.bt110" select="'montant de la TVA'"/>
<xsl:variable name="i18n.bt111" select="'Montant total de TVA'"/>
<xsl:variable name="i18n.bt112" select="'Montant total'"/>
<xsl:variable name="i18n.bt113" select="'Montant payé'"/>
<xsl:variable name="i18n.bt114" select="'Montant arrondi'"/>
<xsl:variable name="i18n.bt115" select="'Montant dû'"/>
<xsl:variable name="i18n.bg23" select="'Ventilation de la TVA au niveau de la facture'"/>
<xsl:variable name="i18n.bt118" select="'Catégorie de TVA'"/>
<xsl:variable name="i18n.bt116" select="'Montant total'"/>
<xsl:variable name="i18n.bt119" select="'taux TVA'"/>
<xsl:variable name="i18n.bt117" select="'montant de la TVA'"/>
<xsl:variable name="i18n.bt120" select="'Motif d''exemption'"/>
<xsl:variable name="i18n.bt121" select="'Identifiant pour motif d''exemption'"/>
<xsl:variable name="i18n.bg20" select="'Allocation au niveau de la facture'"/>
<xsl:variable name="i18n.bt95" select="'Catégorie de TVA de la remise'"/>
<xsl:variable name="i18n.bt93" select="'Montant de base'"/>
<xsl:variable name="i18n.bt94" select="'Pourcentage'"/>
<xsl:variable name="i18n.bt92" select="'Allocation'"/>
<xsl:variable name="i18n.bt96" select="'Taux de TVA de la allocation'"/>
<xsl:variable name="i18n.bt97" select="'Motif de la remise'"/>
<xsl:variable name="i18n.bt98" select="'Document level allowance reason code'"/>
<xsl:variable name="i18n.bg21" select="'Supplément au niveau de la facture'"/>
<xsl:variable name="i18n.bt102" select="'Catégorie de TVA du supplément'"/>
<xsl:variable name="i18n.bt100" select="'Montant de base'"/>
<xsl:variable name="i18n.bt101" select="'Pourcentage'"/>
<xsl:variable name="i18n.bt99" select="'Supplément'"/>
<xsl:variable name="i18n.bt103" select="'Taux de TVA du supplément'"/>
<xsl:variable name="i18n.bt104" select="'Raison du supplément'"/>
<xsl:variable name="i18n.bt105" select="'Document level charge reason code'"/>
<xsl:variable name="i18n.bgx42" select="'Frais d''expédition'"/>
<xsl:variable name="i18n.btx274" select="'Catégorie de TVA des frais de port'"/>
<xsl:variable name="i18n.btx272" select="'Montant'"/>
<xsl:variable name="i18n.btx273" select="'VAT rate of the shipping cost'"/>
<xsl:variable name="i18n.btx271" select="'Taux de TVA des frais de port'"/>
<xsl:variable name="i18n.bt20" select="'Rabais; autres conditions de paiement'"/>
<xsl:variable name="i18n.bt9" select="'Date d''échéance'"/>
<xsl:variable name="i18n.bt81" select="'Code du moyen de paiement'"/>
<xsl:variable name="i18n.bt82" select="'Moyens de paiement'"/>
<xsl:variable name="i18n.bt83" select="'Utilisation'"/>
<xsl:variable name="i18n.bg18" select="'Information de la carte'"/>
<xsl:variable name="i18n.bt87" select="'Numéro de carte'"/>
<xsl:variable name="i18n.bt88" select="'Titulaire de la carte'"/>
<xsl:variable name="i18n.bg19" select="'Prélèvement automatique'"/>
<xsl:variable name="i18n.bt89" select="'Numéro de référence du mandat'"/>
<xsl:variable name="i18n.bt91" select="'IBAN'"/>
<xsl:variable name="i18n.bt90" select="'Identifiant du créancier'"/>
<xsl:variable name="i18n.bg17" select="'Transfert'"/>
<xsl:variable name="i18n.bt85" select="'Titulaire du compte'"/>
<xsl:variable name="i18n.bt84" select="'IBAN'"/>
<xsl:variable name="i18n.bt86" select="'BIC'"/>
<xsl:variable name="i18n.bg1" select="'Commentaire sur la facture'"/>
<xsl:variable name="i18n.bt21" select="'Objet'"/>
<xsl:variable name="i18n.bt22" select="'Commentaire'"/>
<xsl:variable name="i18n.bt126" select="'Position'"/>
<xsl:variable name="i18n.bt127" select="'Texte libre'"/>
<xsl:variable name="i18n.bt128" select="'Identifiant d''objet'"/>
<xsl:variable name="i18n.bt128-id" select="'Schéma de l''Identifiant objet'"/>
<xsl:variable name="i18n.bt132" select="'Numéro de ligne de commande'"/>
<xsl:variable name="i18n.bt133" select="'Information sur l''attribution de compte'"/>
<xsl:variable name="i18n.bg26" select="'Période de facturation'"/>
<xsl:variable name="i18n.bt134" select="'de'"/>
<xsl:variable name="i18n.bt135" select="'jusqu''à'"/>
<xsl:variable name="i18n.bg29" select="'Détails de prix'"/>
<xsl:variable name="i18n.bt129" select="'Quantité'"/>
<xsl:variable name="i18n.bt130" select="'Unité'"/>
<xsl:variable name="i18n.bt146" select="'Prix unitaire net'"/>
<xsl:variable name="i18n.bt131" select="'Prix total net'"/>
<xsl:variable name="i18n.bt147" select="'Remise nette'"/>
<xsl:variable name="i18n.bt148" select="'Prix catalogue (net)'"/>
<xsl:variable name="i18n.bt149" select="'Nombre d''unités'"/>
<xsl:variable name="i18n.bt150" select="'Code de l''unité de mesure '"/>
<xsl:variable name="i18n.bt151" select="'TVA'"/>
<xsl:variable name="i18n.bt152" select="'Pourcentage de TVA'"/>
<xsl:variable name="i18n.bg27" select="'Allocations au niveau de la ligne de facture'"/>
<xsl:variable name="i18n.bt137" select="'Montant de base net'"/>
<xsl:variable name="i18n.bt138" select="'Pourcentage'"/>
<xsl:variable name="i18n.bt136" select="'Allocation nette'"/>
<xsl:variable name="i18n.bt139" select="'Raison pour l''allocation '"/>
<xsl:variable name="i18n.bt140" select="'Code de la raison pour l''allocation'"/>
<xsl:variable name="i18n.bg28" select="'Supplément au niveau de la ligne de facture'"/>
<xsl:variable name="i18n.bt142" select="'Montant de base net'"/>
<xsl:variable name="i18n.bt143" select="'Pourcentage'"/>
<xsl:variable name="i18n.bt141" select="'Supplément net'"/>
<xsl:variable name="i18n.bt144" select="'Raison du supplément'"/>
<xsl:variable name="i18n.bt145" select="'Code de la raison du supplément'"/>
<xsl:variable name="i18n.bg31" select="'Informations sur l''article'"/>
<xsl:variable name="i18n.bt153" select="'Nom'"/>
<xsl:variable name="i18n.bt154" select="'Description'"/>
<xsl:variable name="i18n.bt155" select="'Numéro d''article'"/>
<xsl:variable name="i18n.bt156" select="'N° client / matériel'"/>
<xsl:variable name="i18n.bg32" select="'Propriétés de l''article'"/>
<xsl:variable name="i18n.bt157" select="'Identifiant article'"/>
<xsl:variable name="i18n.bt157-id" select="'Schéma de l''Identifiant article'"/>
<xsl:variable name="i18n.bt158" select="'Code de classification des articles'"/>
<xsl:variable name="i18n.bt158-id" select="'Identifiant pour la création du schéma'"/>
<xsl:variable name="i18n.bt157-vers-id" select="'Version de création du schéma'"/>
<xsl:variable name="i18n.bt159" select="'Code du pays d''origine'"/>
<xsl:variable name="i18n.bg4" select="'Informations sur le vendeur'"/>
<xsl:variable name="i18n.bt28" select="'Nom commercial différent'"/>
<xsl:variable name="i18n.bt34" select="'Adresse électronique'"/>
<xsl:variable name="i18n.bt34-id" select="'Schéma de l''adresse électronique'"/>
<xsl:variable name="i18n.bt30" select="'Numéro d''enregistrement'"/>
<xsl:variable name="i18n.bt31" select="'Identifiant TVA'"/>
<xsl:variable name="i18n.bt32" select="'Numéro fiscale'"/>
<xsl:variable name="i18n.bt32-schema" select="'Schéma du numéro fiscal'"/>
<xsl:variable name="i18n.bt33" select="'Autres informations légales'"/>
<xsl:variable name="i18n.bt6" select="'Code devise de la TVA'"/>
<xsl:variable name="i18n.bg11" select="'Représentant fiscal du vendeur'"/>
<xsl:variable name="i18n.bt62" select="'Nom'"/>
<xsl:variable name="i18n.bt64" select="'Rue / Numéro de maison'"/>
<xsl:variable name="i18n.bt65" select="'Boîte postale'"/>
<xsl:variable name="i18n.bt164" select="'Supplément d''adresse'"/>
<xsl:variable name="i18n.bt67" select="'Code postal'"/>
<xsl:variable name="i18n.bt66" select="'Lieu'"/>
<xsl:variable name="i18n.bt68" select="'Région'"/>
<xsl:variable name="i18n.bt69" select="'Code pays'"/>
<xsl:variable name="i18n.bt63" select="'Identifiant TVA'"/>
<xsl:variable name="i18n.bg7" select="'Informations sur l''acheteur'"/>
<xsl:variable name="i18n.bt45" select="'Nom commercial différent '"/>
<xsl:variable name="i18n.bt49" select="'Adresse électronique'"/>
<xsl:variable name="i18n.bt49-id" select="'Schéma de l''adresse électronique'"/>
<xsl:variable name="i18n.bt47" select="'Numéro d''enregistrement'"/>
<xsl:variable name="i18n.bt47-id" select="'Schéma du numéro d''enregistrement'"/>
<xsl:variable name="i18n.bt48" select="'Identifiant TVA'"/>
<xsl:variable name="i18n.bt7" select="'Date de facturation de la TVA'"/>
<xsl:variable name="i18n.bt8" select="'Code de date de règlement de la TVA'"/>
<xsl:variable name="i18n.bt19" select="'Informations sur l''attribution de compte'"/>
<xsl:variable name="i18n.bg13" select="'Informations de livraison'"/>
<xsl:variable name="i18n.bt71" select="'Identification du lieu de livraison'"/>
<xsl:variable name="i18n.bt71-id" select="'Schéma de l''Identifiant'"/>
<xsl:variable name="i18n.bt72" select="'Date de livraison'"/>
<xsl:variable name="i18n.bt70" select="'Nom du destinataire'"/>
<xsl:variable name="i18n.bt75" select="'Rue / Numéro de maison'"/>
<xsl:variable name="i18n.bt76" select="'Boîte postale'"/>
<xsl:variable name="i18n.bt165" select="'Supplément d''adresse'"/>
<xsl:variable name="i18n.bt78" select="'Code postal'"/>
<xsl:variable name="i18n.bt77" select="'Lieu'"/>
<xsl:variable name="i18n.bt79" select="'Région'"/>
<xsl:variable name="i18n.bt80" select="'Pays'"/>
<xsl:variable name="i18n.bt17" select="'Numéro d''attribution'"/>
<xsl:variable name="i18n.bt15" select="'Identifiant de l''accusé de réception'"/>
<xsl:variable name="i18n.bt16" select="'Identifiant du bordereau d''expédition'"/>
<xsl:variable name="i18n.btx202" select="'Identifiant du bon de livraison'"/>
<xsl:variable name="i18n.bt23" select="'Identifiant processus'"/>
<xsl:variable name="i18n.bt24" select="'Identifiant spécification'"/>
<xsl:variable name="i18n.bt18" select="'Identifiant objet'"/>
<xsl:variable name="i18n.bt18-id" select="'Schéma de l''Identifiant objet'"/>
<xsl:variable name="i18n.bg10" select="'bénéficiaire autre que le vendeur'"/>
<xsl:variable name="i18n.bt59" select="'Nom'"/>
<xsl:variable name="i18n.bt60" select="'Identifiant'"/>
<xsl:variable name="i18n.bt60-id" select="'Schéma de l''Identifiant'"/>
<xsl:variable name="i18n.bt61" select="'Numéro d''enregistrement'"/>
<xsl:variable name="i18n.bt61-id" select="'Schéma du numéro d''enregistrement'"/>
<xsl:variable name="i18n.bg24" select="'Documents justificatifs'"/>
<xsl:variable name="i18n.bt122" select="'Identifiant'"/>
<xsl:variable name="i18n.bt123" select="'Description'"/>
<xsl:variable name="i18n.bt124" select="'Référence (par exemple l''adresse Internet)'"/>
<xsl:variable name="i18n.bt125" select="'Document joint'"/>
<xsl:variable name="i18n.bt125-format" select="'Format du document joint'"/>
<xsl:variable name="i18n.bt125-name" select="'Nom du document joint '"/>
<xsl:variable name="i18n.historyDate" select="'Date/heure'"/>
<xsl:variable name="i18n.historySubject" select="'Objet'"/>
<xsl:variable name="i18n.historyText" select="'Texte'"/>
<xsl:variable name="i18n.historyDetails" select="'Détails'"/>
<xsl:variable name="i18n.payment" select="'Détails de paiement'"/>
<xsl:variable name="i18n.contract_information" select="'Informations sur le contrat'"/>
<xsl:variable name="i18n.preceding_invoice_reference" select="'Factures précédentes'"/>
<xsl:include href="xrechnung-html.univ.xsl"/>
</xsl:stylesheet>

View File

@@ -1144,17 +1144,29 @@ function downloadData (element_id) {
<xsl:apply-templates select="./xr:VAT_BREAKDOWN"/>
</div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig">
<xsl:apply-templates select="./xr:DOCUMENT_LEVEL_ALLOWANCES"/>
</div>
<xsl:choose>
<xsl:when test="./xr:DOCUMENT_LEVEL_ALLOWANCES">
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig">
<xsl:apply-templates select="./xr:DOCUMENT_LEVEL_ALLOWANCES"/>
</div>
</xsl:when>
</xsl:choose>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig">
<xsl:apply-templates select="./xr:DOCUMENT_LEVEL_CHARGES"/>
</div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig">
<xsl:apply-templates select="./xr:LOGISTICS_SERVICE_CHARGES"/>
</div>
<xsl:choose>
<xsl:when test="./xr:DOCUMENT_LEVEL_CHARGES">
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig">
<xsl:apply-templates select="./xr:DOCUMENT_LEVEL_CHARGES"/>
</div>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="./xr:LOGISTICS_SERVICE_CHARGES">
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig">
<xsl:apply-templates select="./xr:LOGISTICS_SERVICE_CHARGES"/>
</div>
</xsl:when>
</xsl:choose>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig first">
<div class="boxzeile">
@@ -2182,11 +2194,24 @@ function downloadData (element_id) {
</div>
<div class="boxzeile">
<div class="boxdaten legende"><xsl:value-of select="$i18n.bt15"/>:</div>
<div id="BT-15" title="BT-15" class="boxdaten wert"><xsl:value-of select="xr:Receiving_advice_reference"/></div>
<div id="BT-15" title="BT-15" class="boxdaten wert">
<xsl:value-of select="xr:Receiving_advice_reference"/>
<xsl:if test="xr:Receiving_advice_reference/@bt-x-201"><xsl:value-of select="concat($i18n.dateOf, format-date(xr:Receiving_advice_reference/@bt-x-201,'[D].[M].[Y]'))"/></xsl:if>
</div>
</div>
<div class="boxzeile">
<div class="boxdaten legende"><xsl:value-of select="$i18n.bt16"/>:</div>
<div id="BT-16" title="BT-16" class="boxdaten wert"><xsl:value-of select="xr:Despatch_advice_reference"/></div>
<div id="BT-16" title="BT-16" class="boxdaten wert">
<xsl:value-of select="xr:Despatch_advice_reference"/>
<xsl:if test="xr:Despatch_advice_reference/@bt-x-200"><xsl:value-of select="concat($i18n.dateOf, format-date(xr:Despatch_advice_reference/@bt-x-200,'[D].[M].[Y]'))"/></xsl:if>
</div>
</div>
<div class="boxzeile">
<div class="boxdaten legende"><xsl:value-of select="$i18n.btx202"/>:</div>
<div id="BT-X-202" title="BT-X-202" class="boxdaten wert">
<xsl:value-of select="xr:Delivery_note_reference"/>
<xsl:if test="xr:Delivery_note_reference/@bt-x-203"><xsl:value-of select="concat($i18n.dateOf, format-date(xr:Delivery_note_reference/@bt-x-203,'[D].[M].[Y]'))"/></xsl:if>
</div>
</div>
<div class="boxzeile">
<div class="boxdaten legende"><xsl:value-of select="$i18n.bt23"/>:</div>

View File

@@ -22,10 +22,9 @@ package org.mustangproject.ZUGFeRD;
import org.junit.FixMethodOrder;
import org.junit.runners.MethodSorters;
import org.mustangproject.ZUGFeRD.ZUGFeRDVisualizer.Language;
import org.mustangproject.util.ByteArraySearcher;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import java.io.File;
import java.io.IOException;
@@ -40,179 +39,34 @@ public class VisualizationTest extends ResourceCase {
final String TARGET_PDF_UBL = "./target/testout-Visualization-cii.pdf";
public void testCIIVisualizationBasic() {
// the writing part
String sourceFilename = "factur-x.xml";
File CIIinputFile = getResourceAsFile(sourceFilename);
String expected = null;
String result = null;
try {
ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer();
/* remove file endings so that tests can also pass after checking
out from git with arbitrary options (which may include CSRF changes)
*/
result = zvi.visualize(CIIinputFile.getAbsolutePath(), ZUGFeRDVisualizer.Language.FR);
Files.write(Paths.get("./target/testout-factur-x-vis.fr.html"), result.getBytes(StandardCharsets.UTF_8));
result = result
.replace("\r", "")
.replace("\n", "")
.replace("\t", "")
.replace(" ", "");
File expectedResult = getResourceAsFile("factur-x-vis.fr.html");
expected = new String(Files.readAllBytes(expectedResult.toPath()), StandardCharsets.UTF_8)
.replace("\r", "")
.replace("\n", "")
.replace("\t", "")
.replace(" ", "");
// remove linebreaks as well...
} catch (UnsupportedOperationException e) {
fail("UnsupportedOperationException should not happen: " + e.getMessage());
} catch (IllegalArgumentException e) {
fail("IllegalArgumentException should not happen: " + e.getMessage());
} catch (TransformerException e) {
fail("TransformerException should not happen: " + e.getMessage());
} catch (IOException e) {
fail("IOException should not happen: " + e.getMessage());
} catch (ParserConfigurationException e) {
fail("ParserConfigurationException should not happen: " + e.getMessage());
} catch (SAXException e) {
fail("SAXException should not happen: " + e.getMessage());
}
assertNotNull(result);
// Reading ZUGFeRD
assertEquals(expected, result);
this.runZUGFeRDVisualization("factur-x.xml", "factur-x-vis.fr.html", Language.FR);
}
public void testCIIVisualizationExtended() {
// the writing part
String sourceFilename = "factur-x-extended.xml";
File CIIinputFile = getResourceAsFile(sourceFilename);
String expected = null;
String result = null;
try {
ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer();
/* remove file endings so that tests can also pass after checking
out from git with arbitrary options (which may include CSRF changes)
*/
result = zvi.visualize(CIIinputFile.getAbsolutePath(), ZUGFeRDVisualizer.Language.DE);
Files.write(Paths.get("./target/testout-factur-x-vis-extended.de.html"), result.getBytes(StandardCharsets.UTF_8));
result = result
.replace("\r", "")
.replace("\n", "")
.replace("\t", "")
.replace(" ", "");
File expectedResult = getResourceAsFile("factur-x-vis-extended.de.html");
expected = new String(Files.readAllBytes(expectedResult.toPath()), StandardCharsets.UTF_8)
.replace("\r", "")
.replace("\n", "")
.replace("\t", "")
.replace(" ", "");
// remove linebreaks as well...
} catch (UnsupportedOperationException e) {
fail("UnsupportedOperationException should not happen: " + e.getMessage());
} catch (IllegalArgumentException e) {
fail("IllegalArgumentException should not happen: " + e.getMessage());
} catch (TransformerException e) {
fail("TransformerException should not happen: " + e.getMessage());
} catch (IOException e) {
fail("IOException should not happen: " + e.getMessage());
} catch (ParserConfigurationException e) {
fail("ParserConfigurationException should not happen: " + e.getMessage());
} catch (SAXException e) {
fail("SAXException should not happen: " + e.getMessage());
}
assertNotNull(result);
// Reading ZUGFeRD
assertEquals(expected, result);
this.runZUGFeRDVisualization("factur-x-extended.xml", "factur-x-vis-extended.de.html", Language.DE);
}
public void testUBLCreditNoteVisualizationBasic() {
// the writing part
File UBLinputFile = getResourceAsFile("ubl-creditnote.xml");
String expected = null;
String result = null;
try {
ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer();
/* remove file endings so that tests can also pass after checking
out from git with arbitrary options (which may include CSRF changes)
*/
result = zvi.visualize(UBLinputFile.getAbsolutePath(), ZUGFeRDVisualizer.Language.EN);
Files.write(Paths.get("./target/testout-factur-x-vis-ubl-creditnote.en.html"), result.getBytes(StandardCharsets.UTF_8));
result = result
.replace("\r", "")
.replace("\n", "")
.replace("\t", "")
.replace(" ", "");
File expectedResult = getResourceAsFile("factur-x-vis-ubl-creditnote.en.html");
expected = new String(Files.readAllBytes(expectedResult.toPath()), StandardCharsets.UTF_8)
.replace("\r", "")
.replace("\n", "")
.replace("\t", "")
.replace(" ", "");
// remove linebreaks as well...
} catch (UnsupportedOperationException e) {
fail("UnsupportedOperationException should not happen: " + e.getMessage());
} catch (IllegalArgumentException e) {
fail("IllegalArgumentException should not happen: " + e.getMessage());
} catch (TransformerException e) {
fail("TransformerException should not happen: " + e.getMessage());
} catch (IOException e) {
fail("IOException should not happen: " + e.getMessage());
} catch (ParserConfigurationException e) {
fail("ParserConfigurationException should not happen: " + e.getMessage());
} catch (SAXException e) {
fail("SAXException should not happen: " + e.getMessage());
}
assertNotNull(result);
// Reading ZUGFeRD
assertEquals(expected, result);
this.runZUGFeRDVisualization("ubl-creditnote.xml", "factur-x-vis-ubl-creditnote.en.html", Language.EN);
}
public void testUBLVisualizationBasic() {
this.runZUGFeRDVisualization("ubl/01.01a-INVOICE.ubl.xml", "factur-x-vis-ubl.en.html", Language.EN);
}
// the writing part
File UBLinputFile = getResourceAsFile("ubl/01.01a-INVOICE.ubl.xml");
private void runZUGFeRDVisualization(String inputFilename, String resultFileName, Language lang) {
File CIIinputFile = getResourceAsFile(inputFilename);
String expected = null;
String result = null;
try {
ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer();
/* remove file endings so that tests can also pass after checking
out from git with arbitrary options (which may include CSRF changes)
*/
result = zvi.visualize(UBLinputFile.getAbsolutePath(), ZUGFeRDVisualizer.Language.EN);
Files.write(Paths.get("./target/testout-factur-x-vis-ubl.en.html"), result.getBytes(StandardCharsets.UTF_8));
result = result
.replace("\r", "")
.replace("\n", "")
.replace("\t", "")
.replace(" ", "");
result = zvi.visualize(CIIinputFile.getAbsolutePath(), lang);
Files.write(Paths.get("./target/testout-" + resultFileName), result.getBytes(StandardCharsets.UTF_8));
File expectedResult = getResourceAsFile("factur-x-vis-ubl.en.html");
File expectedResult = getResourceAsFile(resultFileName);
expected = new String(Files.readAllBytes(expectedResult.toPath()), StandardCharsets.UTF_8)
.replace("\r", "")
.replace("\n", "")
.replace("\t", "")
.replace(" ", "");
// remove linebreaks as well...
;
} catch (UnsupportedOperationException e) {
fail("UnsupportedOperationException should not happen: " + e.getMessage());
@@ -222,16 +76,20 @@ public class VisualizationTest extends ResourceCase {
fail("TransformerException should not happen: " + e.getMessage());
} catch (IOException e) {
fail("IOException should not happen: " + e.getMessage());
} catch (ParserConfigurationException e) {
fail("ParserConfigurationException should not happen: " + e.getMessage());
} catch (SAXException e) {
fail("SAXException should not happen: " + e.getMessage());
}
assertNotNull(result);
// Reading ZUGFeRD
assertEquals(expected, result);
/* remove file endings so that tests can also pass after checking
out from git with arbitrary options (which may include CSRF changes)
*/
assertEquals(expected.replace("\r", "")
.replace("\n", "")
.replace("\t", "")
.replace(" ", ""), result.replace("\r", "")
.replace("\n", "")
.replace("\t", "")
.replace(" ", ""));
}
public void testPDFVisualizationCII() {

View File

@@ -542,7 +542,7 @@ public class ZF2PushTest extends TestCase {
.addAllowance(new Allowance(new BigDecimal(0.2)).setReason("discount").setTaxPercent(new BigDecimal(16)))
.addCashDiscount(new CashDiscount(new BigDecimal(2), 14))
.setDeliveryDate(sdf.parse("2020-11-02")).setNumber(number).setVATDueDateTypeCode(EventTimeCodeTypeConstants.PAYMENT_DATE)
.setInvoiceReferencedDocumentID("abc123")
.setInvoiceReferencedDocumentID("abc123").addInvoiceReferencedDocument(new ReferencedDocument("abcd1234"))
);
} catch (ParseException e) {
e.printStackTrace();
@@ -587,6 +587,8 @@ public class ZF2PushTest extends TestCase {
Invoice i = zii.extractInvoice();
assertEquals("abc123", i.getInvoiceReferencedDocumentID());
assertEquals(1, i.getInvoiceReferencedDocuments().size());
assertEquals("abcd1234", i.getInvoiceReferencedDocuments().get(0).getIssuerAssignedID());
assertEquals("4304171000002", i.getRecipient().getGlobalID());
assertEquals("2001015001325", i.getZFItems()[0].getProduct().getGlobalID());
assertEquals(orgID, i.getSender().getID());

View File

@@ -466,4 +466,12 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase {
assertFalse(invoice.getZFItems()[0].getNotes() == null);
assertEquals(1, invoice.getZFItems()[0].getNotes().length);
}
@Test
public void testImportXRechnungWithoutCalculationErrors() throws FileNotFoundException, XPathExpressionException, ParseException {
File inputFile = getResourceAsFile("cii/02.03a-INVOICE_uncefact.xml");
ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter(new FileInputStream(inputFile));
assertEquals("0", zii.importedInvoice.getDuePayable().toPlainString());
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,427 +1,430 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- English disclaimer below.-->
<!--Nutzungsrechte
ZUGFeRD Datenformat Version 2.3.0, 18.09.2024
Beispiel Version 18.09.2024
Zweck des Forums elektronisch Rechnung Deutschland, welches am 31. März 2010 unter der Arbeitsgemeinschaft für
wirtschaftliche Verwaltung e. V. gegründet wurde, ist u. a. die Schaffung und Spezifizierung eines offenen Datenformats
für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht diskriminierender, standardisierter
Technologien („ZUGFeRD Datenformat“).
Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung
frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine
Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht
diskriminierenden Bedingungen an.
Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung
abrufbar unter www.ferd-net.de.
Im Einzelnen schließt die Nutzungsgewährung ein:
=====================================
FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils
geltenden und akzeptierten Fassung (www.ferd-net.de) ein.
Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung,
Weiterbearbeitung und Verbindung mit anderen Produkten.
Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder
anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige
Anwendungen und Dienste.
Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente
und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um
notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch
die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden.
Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares,
unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit
anderen Produkten einzuräumen.
Die Lizenz wird kostenfrei zur Verfügung gestellt.
Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen
Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten,
Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete,
beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der
Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.-->
<!--Right of use
ZUGFeRD Data format version 2.3.0, September 18th, 2024
The purpose of the Forum elektronische Rechnung Deutschland (FeRD), which was founded on March 31, 2010 under the
umbrella of Arbeitsgemeinschaft für wirtschaftliche Verwaltung e. V., is, among other things, to create and specify an
open data format for structured electronic data exchange on the basis of open and non discriminatory, standardised
technologies ("ZUGFeRD data format").
The ZUGFeRD data format is used by both companies and public administration according to the FeRD
made freely accessible. For this purpose FeRD offers all companies and organisations of the public administration a
License to use the copyrighted ZUGFeRD data format in a fair, appropriate and non
discriminatory conditions.
The specification of the FeRD for the implementation of the ZUGFeRD data format is, in its currently valid version
available at www.ferd-net.de.
In detail, the grant of use includes
=====================================
FeRD grants a license for the use of the copyrighted ZUGFeRD data format in the respective
valid and accepted version (www.ferd-net.de).
The license includes an irrevocable right of use including the right of further development,
Further processing and connection with other products.
The license applies in particular to the development, design, production, sale, use or
other use of the ZUGFeRD data format for hardware and/or software products and other
applications and services.
This license does not include the essential patents of the members of FeRD. The essential patents are patents
and patent applications worldwide which contain one or more claims that are
necessary claims. Necessary claims are only those claims of the essential patents which are
the implementation of the ZUGFeRD data format would necessarily be violated.
The Licensee is entitled to provide its respective group companies with an unlimited, worldwide, non-transferable,
irrevocable right of use including the right of further development, further processing and connection with
other products.
The license is provided free of charge.
Except in the case of intentional fault or gross negligence, FeRD is not liable for loss of use, loss of
Profit, loss of data, loss of communication, loss of revenue, loss of contracts, loss of business or for costs
damages, losses or liabilities in connection with an interruption of business, nor for concrete,
incidental, indirect, punitive or consequential damages, even if the possibility of
costs, losses or damages could normally have been foreseen.-->
<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
<rsm:ExchangedDocumentContext>
<ram:TestIndicator>
<udt:Indicator>true</udt:Indicator>
</ram:TestIndicator>
<ram:GuidelineSpecifiedDocumentContextParameter>
<ram:ID>urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended</ram:ID>
</ram:GuidelineSpecifiedDocumentContextParameter>
</rsm:ExchangedDocumentContext>
<rsm:ExchangedDocument>
<ram:ID>KR87654321012</ram:ID>
<ram:Name>KOSTENRECHNUNG</ram:Name>
<ram:TypeCode>380</ram:TypeCode>
<ram:IssueDateTime>
<udt:DateTimeString format="102">20241115</udt:DateTimeString>
</ram:IssueDateTime>
<ram:IncludedNote>
<ram:ContentCode>ST3</ram:ContentCode>
<ram:Content>Es bestehen Rabatt- oder Bonusvereinbarungen.</ram:Content>
<ram:SubjectCode>AAK</ram:SubjectCode>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:ContentCode>EEV</ram:ContentCode>
<ram:Content>Der Verkäufer bleibt Eigentümer der Waren bis zur vollständigen Erfüllung der Kaufpreisforderung.</ram:Content>
<ram:SubjectCode>AAJ</ram:SubjectCode>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>MUSTERLIEFERANT GMBH
BAHNHOFSTRASSE 99
99199 MUSTERHAUSEN
Geschäftsführung:
Max Mustermann
USt-IdNr: DE123456789
Telefon: +49 932 431 0
www.musterlieferant.de
HRB Nr. 372876
Amtsgericht Musterstadt
GLN 4304171000002
</ram:Content>
<ram:SubjectCode>REG</ram:SubjectCode>
</ram:IncludedNote>
</rsm:ExchangedDocument>
<rsm:SupplyChainTradeTransaction>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>1</ram:LineID>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:GlobalID schemeID="0088">4123456000014</ram:GlobalID>
<ram:SellerAssignedID>WA997</ram:SellerAssignedID>
<ram:Name>Wirkarbeit HT</ram:Name>
<ram:ApplicableProductCharacteristic>
<ram:Description>Zählpunkt</ram:Description>
<ram:Value>DE0001346484600000000000000100038</ram:Value>
</ram:ApplicableProductCharacteristic>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:GrossPriceProductTradePrice>
<ram:ChargeAmount>0.0520</ram:ChargeAmount>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>0.0520</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="KWH">1000.0000</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>52.00</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>2</ram:LineID>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:GlobalID schemeID="0088">4123456000021</ram:GlobalID>
<ram:SellerAssignedID>ÖST250</ram:SellerAssignedID>
<ram:Name>Ökosteuer Lieferant</ram:Name>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:GrossPriceProductTradePrice>
<ram:ChargeAmount>0.0205</ram:ChargeAmount>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>0.0205</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="KWH">1000.0000</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>20.50</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>3</ram:LineID>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:GlobalID schemeID="0088">4260331811362</ram:GlobalID>
<ram:Name>Kommissionierer 1250032 D. Muster</ram:Name>
<ram:Description>Besteller: Hr. Mayer, Personalnr. 4488</ram:Description>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:GrossPriceProductTradePrice>
<ram:ChargeAmount>15.0000</ram:ChargeAmount>
<ram:AppliedTradeAllowanceCharge>
<ram:ChargeIndicator>
<udt:Indicator>false</udt:Indicator>
</ram:ChargeIndicator>
<ram:ActualAmount>4.50</ram:ActualAmount>
<ram:Reason>Artikelrabatt 1</ram:Reason>
</ram:AppliedTradeAllowanceCharge>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>10.5000</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="HUR">27.5000</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>288.75</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>4</ram:LineID>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:GlobalID schemeID="0088">2001015001325</ram:GlobalID>
<ram:SellerAssignedID>FB05</ram:SellerAssignedID>
<ram:Name>FALTENBEUTEL 16x6x28 CM</ram:Name>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:GrossPriceProductTradePrice>
<ram:ChargeAmount>0.0105</ram:ChargeAmount>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>0.0105</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="H87">3500.0000</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>36.75</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>5</ram:LineID>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:GlobalID schemeID="0088">4123456000038</ram:GlobalID>
<ram:SellerAssignedID>KOP05</ram:SellerAssignedID>
<ram:Name>Kopierpapier A4</ram:Name>
<ram:Description>Zählerstand von-bis: 543210 - 544420</ram:Description>
<ram:ApplicableProductCharacteristic>
<ram:Description>Zähler-Nr.</ram:Description>
<ram:Value>MG-X79318</ram:Value>
</ram:ApplicableProductCharacteristic>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:GrossPriceProductTradePrice>
<ram:ChargeAmount>0.0100</ram:ChargeAmount>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>0.0100</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="H87">1210.0000</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>12.10</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:ApplicableHeaderTradeAgreement>
<ram:SellerTradeParty>
<ram:ID>549910</ram:ID>
<ram:GlobalID schemeID="0088">4333741000005</ram:GlobalID>
<ram:Name>MUSTERLIEFERANT GMBH</ram:Name>
<ram:DefinedTradeContact>
<ram:TelephoneUniversalCommunication>
<ram:CompleteNumber>+49 932 431 500</ram:CompleteNumber>
</ram:TelephoneUniversalCommunication>
<ram:EmailURIUniversalCommunication>
<ram:URIID>max.mustermann@musterlieferant.de</ram:URIID>
</ram:EmailURIUniversalCommunication>
</ram:DefinedTradeContact>
<ram:PostalTradeAddress>
<ram:PostcodeCode>99199</ram:PostcodeCode>
<ram:LineOne>BAHNHOFSTRASSE 99</ram:LineOne>
<ram:CityName>MUSTERHAUSEN</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
<ram:SpecifiedTaxRegistration>
<ram:ID schemeID="FC">201/113/40209</ram:ID>
</ram:SpecifiedTaxRegistration>
</ram:SellerTradeParty>
<ram:BuyerTradeParty>
<ram:ID>339420</ram:ID>
<ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID>
<ram:Name>MUSTER-KUNDE GMBH</ram:Name>
<ram:PostalTradeAddress>
<ram:PostcodeCode>40235</ram:PostcodeCode>
<ram:LineOne>KUNDENWEG 88</ram:LineOne>
<ram:CityName>DUESSELDORF</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
</ram:BuyerTradeParty>
<ram:AdditionalReferencedDocument>
<ram:IssuerAssignedID>A777123</ram:IssuerAssignedID>
<ram:TypeCode>130</ram:TypeCode>
</ram:AdditionalReferencedDocument>
</ram:ApplicableHeaderTradeAgreement>
<ram:ApplicableHeaderTradeDelivery>
<ram:ShipToTradeParty>
<ram:GlobalID schemeID="0088">4304171088093</ram:GlobalID>
<ram:Name>MUSTER-MARKT</ram:Name>
<ram:DefinedTradeContact>
<ram:DepartmentName>7322</ram:DepartmentName>
</ram:DefinedTradeContact>
<ram:PostalTradeAddress>
<ram:PostcodeCode>31157</ram:PostcodeCode>
<ram:LineOne>HAUPTSTRASSE 44</ram:LineOne>
<ram:CityName>SARSTEDT</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
</ram:ShipToTradeParty>
<ram:ActualDeliverySupplyChainEvent>
<ram:OccurrenceDateTime>
<udt:DateTimeString format="102">20241030</udt:DateTimeString>
</ram:OccurrenceDateTime>
</ram:ActualDeliverySupplyChainEvent>
<ram:DeliveryNoteReferencedDocument>
<ram:IssuerAssignedID>L87654321012</ram:IssuerAssignedID>
</ram:DeliveryNoteReferencedDocument>
</ram:ApplicableHeaderTradeDelivery>
<ram:ApplicableHeaderTradeSettlement>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
<ram:InvoiceeTradeParty>
<ram:ID>339420</ram:ID>
<ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID>
<ram:Name>MUSTER-KUNDE GMBH</ram:Name>
<ram:PostalTradeAddress>
<ram:PostcodeCode>40235</ram:PostcodeCode>
<ram:LineOne>KUNDENWEG 88</ram:LineOne>
<ram:CityName>DUESSELDORF</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
</ram:InvoiceeTradeParty>
<ram:ApplicableTradeTax>
<ram:CalculatedAmount>76.67</ram:CalculatedAmount>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:BasisAmount>403.55</ram:BasisAmount>
<ram:LineTotalBasisAmount>410.10</ram:LineTotalBasisAmount>
<ram:AllowanceChargeBasisAmount>-6.55</ram:AllowanceChargeBasisAmount>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator>
<udt:Indicator>false</udt:Indicator>
</ram:ChargeIndicator>
<ram:BasisAmount>410.10</ram:BasisAmount>
<ram:ActualAmount>21.55</ram:ActualAmount>
<ram:Reason>Sonderrabatt</ram:Reason>
<ram:CategoryTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:CategoryTradeTax>
</ram:SpecifiedTradeAllowanceCharge>
<ram:SpecifiedLogisticsServiceCharge>
<ram:Description>Transportkosten: Frachbetrag</ram:Description>
<ram:AppliedAmount>15.00</ram:AppliedAmount>
<ram:AppliedTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:AppliedTradeTax>
</ram:SpecifiedLogisticsServiceCharge>
<ram:SpecifiedTradePaymentTerms>
<ram:Description>Skontovereinbarung: 2% bei Zahlung innerhalb 10 Tagen nach Rechnungsdatum</ram:Description>
<ram:ApplicableTradePaymentDiscountTerms>
<ram:BasisPeriodMeasure unitCode="DAY">10</ram:BasisPeriodMeasure>
<ram:CalculationPercent>2.00</ram:CalculationPercent>
</ram:ApplicableTradePaymentDiscountTerms>
</ram:SpecifiedTradePaymentTerms>
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:LineTotalAmount>410.10</ram:LineTotalAmount>
<ram:ChargeTotalAmount>15.00</ram:ChargeTotalAmount>
<ram:AllowanceTotalAmount>21.55</ram:AllowanceTotalAmount>
<ram:TaxBasisTotalAmount>403.55</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">76.67</ram:TaxTotalAmount>
<ram:GrandTotalAmount>480.22</ram:GrandTotalAmount>
<ram:TotalPrepaidAmount>0.00</ram:TotalPrepaidAmount>
<ram:DuePayableAmount>480.22</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
</ram:ApplicableHeaderTradeSettlement>
</rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>
<?xml version="1.0" encoding="UTF-8"?>
<!-- English disclaimer below.-->
<!--Nutzungsrechte
ZUGFeRD Datenformat Version 2.3.0, 18.09.2024
Beispiel Version 18.09.2024
Zweck des Forums elektronisch Rechnung Deutschland, welches am 31. März 2010 unter der Arbeitsgemeinschaft für
wirtschaftliche Verwaltung e. V. gegründet wurde, ist u. a. die Schaffung und Spezifizierung eines offenen Datenformats
für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht diskriminierender, standardisierter
Technologien („ZUGFeRD Datenformat“).
Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung
frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine
Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht
diskriminierenden Bedingungen an.
Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung
abrufbar unter www.ferd-net.de.
Im Einzelnen schließt die Nutzungsgewährung ein:
=====================================
FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils
geltenden und akzeptierten Fassung (www.ferd-net.de) ein.
Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung,
Weiterbearbeitung und Verbindung mit anderen Produkten.
Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder
anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige
Anwendungen und Dienste.
Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente
und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um
notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch
die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden.
Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares,
unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit
anderen Produkten einzuräumen.
Die Lizenz wird kostenfrei zur Verfügung gestellt.
Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen
Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten,
Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete,
beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der
Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können.-->
<!--Right of use
ZUGFeRD Data format version 2.3.0, September 18th, 2024
The purpose of the Forum elektronische Rechnung Deutschland (FeRD), which was founded on March 31, 2010 under the
umbrella of Arbeitsgemeinschaft für wirtschaftliche Verwaltung e. V., is, among other things, to create and specify an
open data format for structured electronic data exchange on the basis of open and non discriminatory, standardised
technologies ("ZUGFeRD data format").
The ZUGFeRD data format is used by both companies and public administration according to the FeRD
made freely accessible. For this purpose FeRD offers all companies and organisations of the public administration a
License to use the copyrighted ZUGFeRD data format in a fair, appropriate and non
discriminatory conditions.
The specification of the FeRD for the implementation of the ZUGFeRD data format is, in its currently valid version
available at www.ferd-net.de.
In detail, the grant of use includes
=====================================
FeRD grants a license for the use of the copyrighted ZUGFeRD data format in the respective
valid and accepted version (www.ferd-net.de).
The license includes an irrevocable right of use including the right of further development,
Further processing and connection with other products.
The license applies in particular to the development, design, production, sale, use or
other use of the ZUGFeRD data format for hardware and/or software products and other
applications and services.
This license does not include the essential patents of the members of FeRD. The essential patents are patents
and patent applications worldwide which contain one or more claims that are
necessary claims. Necessary claims are only those claims of the essential patents which are
the implementation of the ZUGFeRD data format would necessarily be violated.
The Licensee is entitled to provide its respective group companies with an unlimited, worldwide, non-transferable,
irrevocable right of use including the right of further development, further processing and connection with
other products.
The license is provided free of charge.
Except in the case of intentional fault or gross negligence, FeRD is not liable for loss of use, loss of
Profit, loss of data, loss of communication, loss of revenue, loss of contracts, loss of business or for costs
damages, losses or liabilities in connection with an interruption of business, nor for concrete,
incidental, indirect, punitive or consequential damages, even if the possibility of
costs, losses or damages could normally have been foreseen.-->
<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
<rsm:ExchangedDocumentContext>
<ram:TestIndicator>
<udt:Indicator>true</udt:Indicator>
</ram:TestIndicator>
<ram:GuidelineSpecifiedDocumentContextParameter>
<ram:ID>urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended</ram:ID>
</ram:GuidelineSpecifiedDocumentContextParameter>
</rsm:ExchangedDocumentContext>
<rsm:ExchangedDocument>
<ram:ID>KR87654321012</ram:ID>
<ram:Name>KOSTENRECHNUNG</ram:Name>
<ram:TypeCode>380</ram:TypeCode>
<ram:IssueDateTime>
<udt:DateTimeString format="102">20241115</udt:DateTimeString>
</ram:IssueDateTime>
<ram:IncludedNote>
<ram:ContentCode>ST3</ram:ContentCode>
<ram:Content>Es bestehen Rabatt- oder Bonusvereinbarungen.</ram:Content>
<ram:SubjectCode>AAK</ram:SubjectCode>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:ContentCode>EEV</ram:ContentCode>
<ram:Content>Der Verkäufer bleibt Eigentümer der Waren bis zur vollständigen Erfüllung der Kaufpreisforderung.</ram:Content>
<ram:SubjectCode>AAJ</ram:SubjectCode>
</ram:IncludedNote>
<ram:IncludedNote>
<ram:Content>MUSTERLIEFERANT GMBH
BAHNHOFSTRASSE 99
99199 MUSTERHAUSEN
Geschäftsführung:
Max Mustermann
USt-IdNr: DE123456789
Telefon: +49 932 431 0
www.musterlieferant.de
HRB Nr. 372876
Amtsgericht Musterstadt
GLN 4304171000002
</ram:Content>
<ram:SubjectCode>REG</ram:SubjectCode>
</ram:IncludedNote>
</rsm:ExchangedDocument>
<rsm:SupplyChainTradeTransaction>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>1</ram:LineID>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:GlobalID schemeID="0088">4123456000014</ram:GlobalID>
<ram:SellerAssignedID>WA997</ram:SellerAssignedID>
<ram:Name>Wirkarbeit HT</ram:Name>
<ram:ApplicableProductCharacteristic>
<ram:Description>Zählpunkt</ram:Description>
<ram:Value>DE0001346484600000000000000100038</ram:Value>
</ram:ApplicableProductCharacteristic>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:GrossPriceProductTradePrice>
<ram:ChargeAmount>0.0520</ram:ChargeAmount>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>0.0520</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="KWH">1000.0000</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>52.00</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>2</ram:LineID>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:GlobalID schemeID="0088">4123456000021</ram:GlobalID>
<ram:SellerAssignedID>ÖST250</ram:SellerAssignedID>
<ram:Name>Ökosteuer Lieferant</ram:Name>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:GrossPriceProductTradePrice>
<ram:ChargeAmount>0.0205</ram:ChargeAmount>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>0.0205</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="KWH">1000.0000</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>20.50</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>3</ram:LineID>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:GlobalID schemeID="0088">4260331811362</ram:GlobalID>
<ram:Name>Kommissionierer 1250032 D. Muster</ram:Name>
<ram:Description>Besteller: Hr. Mayer, Personalnr. 4488</ram:Description>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:GrossPriceProductTradePrice>
<ram:ChargeAmount>15.0000</ram:ChargeAmount>
<ram:AppliedTradeAllowanceCharge>
<ram:ChargeIndicator>
<udt:Indicator>false</udt:Indicator>
</ram:ChargeIndicator>
<ram:ActualAmount>4.50</ram:ActualAmount>
<ram:Reason>Artikelrabatt 1</ram:Reason>
</ram:AppliedTradeAllowanceCharge>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>10.5000</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="HUR">27.5000</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>288.75</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>4</ram:LineID>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:GlobalID schemeID="0088">2001015001325</ram:GlobalID>
<ram:SellerAssignedID>FB05</ram:SellerAssignedID>
<ram:Name>FALTENBEUTEL 16x6x28 CM</ram:Name>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:GrossPriceProductTradePrice>
<ram:ChargeAmount>0.0105</ram:ChargeAmount>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>0.0105</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="H87">3500.0000</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>36.75</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:IncludedSupplyChainTradeLineItem>
<ram:AssociatedDocumentLineDocument>
<ram:LineID>5</ram:LineID>
</ram:AssociatedDocumentLineDocument>
<ram:SpecifiedTradeProduct>
<ram:GlobalID schemeID="0088">4123456000038</ram:GlobalID>
<ram:SellerAssignedID>KOP05</ram:SellerAssignedID>
<ram:Name>Kopierpapier A4</ram:Name>
<ram:Description>Zählerstand von-bis: 543210 - 544420</ram:Description>
<ram:ApplicableProductCharacteristic>
<ram:Description>Zähler-Nr.</ram:Description>
<ram:Value>MG-X79318</ram:Value>
</ram:ApplicableProductCharacteristic>
</ram:SpecifiedTradeProduct>
<ram:SpecifiedLineTradeAgreement>
<ram:GrossPriceProductTradePrice>
<ram:ChargeAmount>0.0100</ram:ChargeAmount>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>0.0100</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
<ram:BilledQuantity unitCode="H87">1210.0000</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>
<ram:SpecifiedLineTradeSettlement>
<ram:ApplicableTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeSettlementLineMonetarySummation>
<ram:LineTotalAmount>12.10</ram:LineTotalAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
<ram:ApplicableHeaderTradeAgreement>
<ram:SellerTradeParty>
<ram:ID>549910</ram:ID>
<ram:GlobalID schemeID="0088">4333741000005</ram:GlobalID>
<ram:Name>MUSTERLIEFERANT GMBH</ram:Name>
<ram:DefinedTradeContact>
<ram:TelephoneUniversalCommunication>
<ram:CompleteNumber>+49 932 431 500</ram:CompleteNumber>
</ram:TelephoneUniversalCommunication>
<ram:EmailURIUniversalCommunication>
<ram:URIID>max.mustermann@musterlieferant.de</ram:URIID>
</ram:EmailURIUniversalCommunication>
</ram:DefinedTradeContact>
<ram:PostalTradeAddress>
<ram:PostcodeCode>99199</ram:PostcodeCode>
<ram:LineOne>BAHNHOFSTRASSE 99</ram:LineOne>
<ram:CityName>MUSTERHAUSEN</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
<ram:SpecifiedTaxRegistration>
<ram:ID schemeID="FC">201/113/40209</ram:ID>
</ram:SpecifiedTaxRegistration>
</ram:SellerTradeParty>
<ram:BuyerTradeParty>
<ram:ID>339420</ram:ID>
<ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID>
<ram:Name>MUSTER-KUNDE GMBH</ram:Name>
<ram:PostalTradeAddress>
<ram:PostcodeCode>40235</ram:PostcodeCode>
<ram:LineOne>KUNDENWEG 88</ram:LineOne>
<ram:CityName>DUESSELDORF</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
</ram:BuyerTradeParty>
<ram:AdditionalReferencedDocument>
<ram:IssuerAssignedID>A777123</ram:IssuerAssignedID>
<ram:TypeCode>130</ram:TypeCode>
</ram:AdditionalReferencedDocument>
</ram:ApplicableHeaderTradeAgreement>
<ram:ApplicableHeaderTradeDelivery>
<ram:ShipToTradeParty>
<ram:GlobalID schemeID="0088">4304171088093</ram:GlobalID>
<ram:Name>MUSTER-MARKT</ram:Name>
<ram:DefinedTradeContact>
<ram:DepartmentName>7322</ram:DepartmentName>
</ram:DefinedTradeContact>
<ram:PostalTradeAddress>
<ram:PostcodeCode>31157</ram:PostcodeCode>
<ram:LineOne>HAUPTSTRASSE 44</ram:LineOne>
<ram:CityName>SARSTEDT</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
</ram:ShipToTradeParty>
<ram:ActualDeliverySupplyChainEvent>
<ram:OccurrenceDateTime>
<udt:DateTimeString format="102">20241030</udt:DateTimeString>
</ram:OccurrenceDateTime>
</ram:ActualDeliverySupplyChainEvent>
<ram:DeliveryNoteReferencedDocument>
<ram:IssuerAssignedID>L87654321012</ram:IssuerAssignedID>
<ram:FormattedIssueDateTime>
<qdt:DateTimeString format="102">20241031</qdt:DateTimeString>
</ram:FormattedIssueDateTime>
</ram:DeliveryNoteReferencedDocument>
</ram:ApplicableHeaderTradeDelivery>
<ram:ApplicableHeaderTradeSettlement>
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
<ram:InvoiceeTradeParty>
<ram:ID>339420</ram:ID>
<ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID>
<ram:Name>MUSTER-KUNDE GMBH</ram:Name>
<ram:PostalTradeAddress>
<ram:PostcodeCode>40235</ram:PostcodeCode>
<ram:LineOne>KUNDENWEG 88</ram:LineOne>
<ram:CityName>DUESSELDORF</ram:CityName>
<ram:CountryID>DE</ram:CountryID>
</ram:PostalTradeAddress>
</ram:InvoiceeTradeParty>
<ram:ApplicableTradeTax>
<ram:CalculatedAmount>76.67</ram:CalculatedAmount>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:BasisAmount>403.55</ram:BasisAmount>
<ram:LineTotalBasisAmount>410.10</ram:LineTotalBasisAmount>
<ram:AllowanceChargeBasisAmount>-6.55</ram:AllowanceChargeBasisAmount>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator>
<udt:Indicator>false</udt:Indicator>
</ram:ChargeIndicator>
<ram:BasisAmount>410.10</ram:BasisAmount>
<ram:ActualAmount>21.55</ram:ActualAmount>
<ram:Reason>Sonderrabatt</ram:Reason>
<ram:CategoryTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:CategoryTradeTax>
</ram:SpecifiedTradeAllowanceCharge>
<ram:SpecifiedLogisticsServiceCharge>
<ram:Description>Transportkosten: Frachbetrag</ram:Description>
<ram:AppliedAmount>15.00</ram:AppliedAmount>
<ram:AppliedTradeTax>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:CategoryCode>S</ram:CategoryCode>
<ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
</ram:AppliedTradeTax>
</ram:SpecifiedLogisticsServiceCharge>
<ram:SpecifiedTradePaymentTerms>
<ram:Description>Skontovereinbarung: 2% bei Zahlung innerhalb 10 Tagen nach Rechnungsdatum</ram:Description>
<ram:ApplicableTradePaymentDiscountTerms>
<ram:BasisPeriodMeasure unitCode="DAY">10</ram:BasisPeriodMeasure>
<ram:CalculationPercent>2.00</ram:CalculationPercent>
</ram:ApplicableTradePaymentDiscountTerms>
</ram:SpecifiedTradePaymentTerms>
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:LineTotalAmount>410.10</ram:LineTotalAmount>
<ram:ChargeTotalAmount>15.00</ram:ChargeTotalAmount>
<ram:AllowanceTotalAmount>21.55</ram:AllowanceTotalAmount>
<ram:TaxBasisTotalAmount>403.55</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">76.67</ram:TaxTotalAmount>
<ram:GrandTotalAmount>480.22</ram:GrandTotalAmount>
<ram:TotalPrepaidAmount>0.00</ram:TotalPrepaidAmount>
<ram:DuePayableAmount>480.22</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
</ram:ApplicableHeaderTradeSettlement>
</rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>

View File

@@ -1085,7 +1085,6 @@
</div>
<div class="boxabstand"></div>
</div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig"></div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig">
<div class="boxzeile">
<div id="uebersichtVersandkosten" class="box">
@@ -2248,6 +2247,10 @@
<div class="boxdaten legende">Kennung der Versandanzeige:</div>
<div id="BT-16" title="BT-16" class="boxdaten wert"></div>
</div>
<div class="boxzeile">
<div class="boxdaten legende">Kennung des Lieferscheins:</div>
<div id="BT-X-202" title="BT-X-202" class="boxdaten wert">L87654321012 vom 31.10.2024</div>
</div>
<div class="boxzeile">
<div class="boxdaten legende">Prozesskennung:</div>
<div id="BT-23" title="BT-23" class="boxdaten wert"></div>

View File

@@ -1359,7 +1359,6 @@
</div>
<div class="boxabstand"></div>
</div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig"></div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig first">
<div class="boxzeile">
<div id="uebersichtZahlungsinformationen" class="box subBox">
@@ -1556,7 +1555,7 @@
<div class="boxzeile">
<div class="boxdaten legende ">Description:</div>
<div id="BT-154" title="BT-154" class="boxdaten wert">Processor: Intel Core 2 Duo SU9400 LV (1.4GHz). RAM:
3MB. Screen 1440x900</div>
3MB. Screen 1440x900</div>
</div>
<div class="boxzeile">
<div class="boxdaten legende ">Part number:</div>
@@ -2355,6 +2354,10 @@
<div class="boxdaten legende">Dispatch note ID:</div>
<div id="BT-16" title="BT-16" class="boxdaten wert"></div>
</div>
<div class="boxzeile">
<div class="boxdaten legende">Delivery note ID:</div>
<div id="BT-X-202" title="BT-X-202" class="boxdaten wert"></div>
</div>
<div class="boxzeile">
<div class="boxdaten legende">Process ID:</div>
<div id="BT-23" title="BT-23" class="boxdaten wert"></div>

View File

@@ -1219,9 +1219,6 @@
</div>
</div>
</div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig"></div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig"></div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig"></div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig first">
<div class="boxzeile">
<div id="uebersichtZahlungsinformationen" class="box subBox">
@@ -1755,6 +1752,10 @@
<div class="boxdaten legende">Dispatch note ID:</div>
<div id="BT-16" title="BT-16" class="boxdaten wert"></div>
</div>
<div class="boxzeile">
<div class="boxdaten legende">Delivery note ID:</div>
<div id="BT-X-202" title="BT-X-202" class="boxdaten wert"></div>
</div>
<div class="boxzeile">
<div class="boxdaten legende">Process ID:</div>
<div id="BT-23" title="BT-23" class="boxdaten wert"></div>

View File

@@ -1250,9 +1250,6 @@
</div>
</div>
</div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig"></div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig"></div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig"></div>
<div class="boxtabelle boxabstandtop boxtabelleZweispaltig first">
<div class="boxzeile">
<div id="uebersichtZahlungsinformationen" class="box subBox">
@@ -1927,6 +1924,10 @@
<div class="boxdaten legende">Identifiant du bordereau d'expédition:</div>
<div id="BT-16" title="BT-16" class="boxdaten wert"></div>
</div>
<div class="boxzeile">
<div class="boxdaten legende">Identifiant du bon de livraison:</div>
<div id="BT-X-202" title="BT-X-202" class="boxdaten wert"></div>
</div>
<div class="boxzeile">
<div class="boxdaten legende">Identifiant processus:</div>
<div id="BT-23" title="BT-23" class="boxdaten wert"></div>