Merge remote-tracking branch 'mustang-master/master' into master_forked
This commit is contained in:
57
History.md
57
History.md
@@ -1,3 +1,60 @@
|
|||||||
|
- also parse BICs in InvoiceImporter not only IBANs
|
||||||
|
- #509 CLI currently does not write a logfile
|
||||||
|
|
||||||
|
2.14.1
|
||||||
|
=======
|
||||||
|
2024-10-06
|
||||||
|
|
||||||
|
- #481 also be able to convert XRechnung/UBL to PDF not only CII
|
||||||
|
- #494 Quantity/Price Decimal Places
|
||||||
|
- #391 Runden bei Negativwerten
|
||||||
|
- #491/501 non terminating decimal expansion
|
||||||
|
- upgraded en16931 cen schematron to 1.3.12
|
||||||
|
- #499/500 PDF layout corrections
|
||||||
|
|
||||||
|
2.14.0
|
||||||
|
=======
|
||||||
|
2024-09-22
|
||||||
|
|
||||||
|
- #461 UBL import contacts
|
||||||
|
- #463 add support for BT-33, i.e. Tradeparty description #463
|
||||||
|
- #456 Provide a way to set uriUniversalCommunicationId on the TradeParty using JSON deserialization
|
||||||
|
- #467 Fix test using wrong file
|
||||||
|
- #468 Fix validator dependencies
|
||||||
|
- #469 Enable EN16931 schema validation for XRechnung
|
||||||
|
- #471 Fix LegalOrganisation schemeId
|
||||||
|
- #473 Fix UnsupportedOperationException in buildNotes
|
||||||
|
- #476 Add DesignatedProductClassification for SpecifiedTradeProduct
|
||||||
|
- #482 Fix current validation errors
|
||||||
|
- #423 can no longer add attachments via cli
|
||||||
|
- #465 cli version should also be able to combine PDF/A-3 source
|
||||||
|
- #487 update to zugferd 2.3.0
|
||||||
|
- #472 Fix logging implementation missing in CLI
|
||||||
|
- #479 Re-Formatted and re-organized POMs - Part 2
|
||||||
|
|
||||||
|
|
||||||
|
2.13.0
|
||||||
|
=======
|
||||||
|
2024-08-28
|
||||||
|
|
||||||
|
- Item Attributes and Country of Origin missing on Product. #420
|
||||||
|
- Avoid NullPointerException if dueDate is not set. #441
|
||||||
|
- support reasoncodes #431
|
||||||
|
- Enhance Charges/Allowances with reasonCode. #432
|
||||||
|
- Fix build warnings from editing and building. #415
|
||||||
|
- ZUGFeRDVisualizer.toPDF(): generate PDF/A-3b. #400
|
||||||
|
- allow access to invoice attachments via ZUGFeRDInvoiceImporter zii.getFileAttachmentsPDF()
|
||||||
|
and XML (zii.getFileAttachmentsXML)
|
||||||
|
- No interface for required field CreditorReferenceID #436 and
|
||||||
|
- X-Rechnung direct-debit missing mandatory field BT-90 #370. (langfr)
|
||||||
|
- refactor(ZUGFeRDVisualizer): improve PDF visualization performance #438
|
||||||
|
- product creation without description now possible empty description
|
||||||
|
- filename of embedded file was not xrechnung.xml when using profile xrechnung #452
|
||||||
|
- allow legalorganisation to have a tradingbusinessname #447
|
||||||
|
- JSon deserialization does not work with BankDetails #455
|
||||||
|
- Fix ClassCastException in CLI (Main.java). #451
|
||||||
|
- changed additional references by line from String to List and implemented it on Item #454
|
||||||
|
|
||||||
2.12.0
|
2.12.0
|
||||||
=======
|
=======
|
||||||
2024-07-20
|
2024-07-20
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>org.mustangproject</groupId>
|
<groupId>org.mustangproject</groupId>
|
||||||
<artifactId>core</artifactId>
|
<artifactId>core</artifactId>
|
||||||
<version>2.12.0-SNAPSHOT</version>
|
<version>2.15.0-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.mustangproject</groupId>
|
<groupId>org.mustangproject</groupId>
|
||||||
@@ -13,7 +12,7 @@
|
|||||||
should also work for XRechnung/CII.
|
should also work for XRechnung/CII.
|
||||||
</name>
|
</name>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<version>2.12.0-SNAPSHOT</version>
|
<version>2.15.0-SNAPSHOT</version>
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<maven.compiler.compilerVersion>11</maven.compiler.compilerVersion>
|
<maven.compiler.compilerVersion>11</maven.compiler.compilerVersion>
|
||||||
@@ -24,7 +23,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.mustangproject</groupId>
|
<groupId>org.mustangproject</groupId>
|
||||||
<artifactId>validator</artifactId>
|
<artifactId>validator</artifactId>
|
||||||
<version>2.12.0-SNAPSHOT</version>
|
<version>2.15.0-SNAPSHOT</version>
|
||||||
<!-- prototypes of new mustangproject versions can be installed by referring to them and installed to the local repo from a jar file with
|
<!-- prototypes of new mustangproject versions can be installed by referring to them and installed to the local repo from a jar file with
|
||||||
mvn install:install-file -Dfile=mustang-1.5.4-SNAPSHOT.jar -DgroupId=org.mustangproject.ZUGFeRD -DartifactId=mustang -Dversion=1.5.4 -Dpackaging=jar -DgeneratePom=true
|
mvn install:install-file -Dfile=mustang-1.5.4-SNAPSHOT.jar -DgroupId=org.mustangproject.ZUGFeRD -DartifactId=mustang -Dversion=1.5.4 -Dpackaging=jar -DgeneratePom=true
|
||||||
-->
|
-->
|
||||||
@@ -36,6 +35,31 @@
|
|||||||
<version>1.8.0</version>
|
<version>1.8.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- logging -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-classic</artifactId>
|
||||||
|
<version>1.2.13</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-core</artifactId>
|
||||||
|
<version>1.2.13</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<!-- This library is needed so that logback stderr output is sent to, well, stderr, otherwise it lands in stdout -->
|
||||||
|
<groupId>org.codehaus.janino</groupId>
|
||||||
|
<artifactId>janino</artifactId>
|
||||||
|
<version>3.1.7</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-simple</artifactId>
|
||||||
|
<version>2.0.12</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- end of logging -->
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.junit.jupiter</groupId>
|
<groupId>org.junit.jupiter</groupId>
|
||||||
<artifactId>junit-jupiter-api</artifactId>
|
<artifactId>junit-jupiter-api</artifactId>
|
||||||
@@ -133,8 +157,7 @@
|
|||||||
<version>3.5.3</version>
|
<version>3.5.3</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<transformers>
|
<transformers>
|
||||||
<transformer
|
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
|
||||||
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
|
|
||||||
<mainClass>org.mustangproject.commandline.Main</mainClass>
|
<mainClass>org.mustangproject.commandline.Main</mainClass>
|
||||||
</transformer>
|
</transformer>
|
||||||
</transformers>
|
</transformers>
|
||||||
|
|||||||
@@ -722,9 +722,6 @@ public class Main {
|
|||||||
((ZUGFeRDExporterFromPDFA) ze).ignorePDFAErrors();
|
((ZUGFeRDExporterFromPDFA) ze).ignorePDFAErrors();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (FileAttachment attachment : attachments) {
|
|
||||||
((ZUGFeRDExporterFromA3) ze).attachFile(attachment.getFilename(), attachment.getData(), attachment.getMimetype(), attachment.getRelation());
|
|
||||||
}
|
|
||||||
|
|
||||||
ze.load(pdfName);
|
ze.load(pdfName);
|
||||||
ze.setProducer("Mustang-cli")
|
ze.setProducer("Mustang-cli")
|
||||||
@@ -735,6 +732,11 @@ public class Main {
|
|||||||
ze.disableFacturX();
|
ze.disableFacturX();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for (FileAttachment attachment : attachments) {
|
||||||
|
ze.attachFile(attachment.getFilename(), attachment.getData(), attachment.getMimetype(), attachment.getRelation());
|
||||||
|
}
|
||||||
|
|
||||||
ze.setXML(Files.readAllBytes(Paths.get(xmlName)));
|
ze.setXML(Files.readAllBytes(Paths.get(xmlName)));
|
||||||
|
|
||||||
ze.export(outName);
|
ze.export(outName);
|
||||||
|
|||||||
@@ -34,14 +34,11 @@ If you set up a Maven project, you can reference the mustang artifact like this:
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.mustangproject</groupId>
|
<groupId>org.mustangproject</groupId>
|
||||||
<artifactId>library</artifactId>
|
<artifactId>library</artifactId>
|
||||||
<version>2.12.0</version>
|
<version>2.14.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
Further docs on how to develop **with** mustang:
|
Further docs on how to develop **with** mustang:
|
||||||
|
|
||||||
- [ZugferdDev.en.pdf](https://github.com/ZUGFeRD/mustangproject/blob/master/doc/ZugferdDev.en.pdf?raw=true): The English mustang user documentation.
|
|
||||||
- [ZugferdDev.de.pdf](https://github.com/ZUGFeRD/mustangproject/blob/master/doc/ZugferdDev.de.pdf?raw=true): The German mustang user documentation.
|
|
||||||
- [Usage examples](https://www.mustangproject.org/use/): Read and write electronic invoices.
|
- [Usage examples](https://www.mustangproject.org/use/): Read and write electronic invoices.
|
||||||
- [Mustang classes](https://www.mustangproject.org/invoice-class/): Using the mustang classes.
|
- [Mustang classes](https://www.mustangproject.org/invoice-class/): Using the mustang classes.
|
||||||
|
|
||||||
|
|||||||
@@ -20,13 +20,13 @@ Additionally, the Mustang validator now also supports XRechnung 2, can now also
|
|||||||
|
|
||||||
|
|
||||||
### Use on command line
|
### Use on command line
|
||||||
`java -jar Mustang-CLI-2.0.0-alpha3.jar --action=combine` embeds a XML into a PDF (A-1) file and exports as PDF/A-3
|
`java -jar Mustang-CLI-2.14.0.jar --action=combine` embeds a XML into a PDF (A-1) file and exports as PDF/A-3
|
||||||
|
|
||||||
`java -jar mustang-cli.jar --action=extract` extracts XML from a ZUGFeRD file and
|
`java -jar Mustang-CLI-2.14.0.jar --action=extract` extracts XML from a ZUGFeRD file and
|
||||||
|
|
||||||
`java -jar mustang-cli.jar --action=validate` validates XML or PDF files.
|
`java -jar Mustang-CLI-2.14.0.jar --action=validate` validates XML or PDF files.
|
||||||
|
|
||||||
`java -jar mustang-cli.jar --help` still outputs the parameters which can be used
|
`java -jar Mustang-CLI-2.14.0.jar --help` still outputs the parameters which can be used
|
||||||
to for non-interactive (i.e., batch) processing.
|
to for non-interactive (i.e., batch) processing.
|
||||||
|
|
||||||
|
|
||||||
@@ -38,11 +38,12 @@ from `-f` (ZUV) to the usual `--source`.
|
|||||||
We're now on maven central, please remove the old github repository. Additionally, the following changed
|
We're now on maven central, please remove the old github repository. Additionally, the following changed
|
||||||
|
|
||||||
| What | old value | new value |
|
| What | old value | new value |
|
||||||
|---|---|---|
|
|---|---|--------------------|
|
||||||
| Group id | org.mustangproject.zugferd | org.mustangproject |
|
| Group id | org.mustangproject.zugferd | org.mustangproject |
|
||||||
| Artifact ID | mustang | library |
|
| Artifact ID | mustang | library |
|
||||||
| Version | 1.7.8 | 2.0.0-alpha3 |
|
| Version | 1.7.8 | 2.14.0 |
|
||||||
|
|
||||||
|
And please use the shaded classifier.
|
||||||
If you want you can also embed the validator in your software using validator
|
If you want you can also embed the validator in your software using validator
|
||||||
as artifact ID. "validator" includes the library functionality but is >20 MB
|
as artifact ID. "validator" includes the library functionality but is >20 MB
|
||||||
bigger due to its dependencies.
|
bigger due to its dependencies.
|
||||||
@@ -200,7 +201,7 @@ read/write ZUGFeRD-invoices like the (smaller) library module.
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.mustangproject</groupId>
|
<groupId>org.mustangproject</groupId>
|
||||||
<artifactId>validator</artifactId>
|
<artifactId>validator</artifactId>
|
||||||
<version>2.0.0</version>
|
<version>2.14.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
To check if the necessary tools are there, the build is in a stable state and works on your platform, e.g. download and extract https://github.com/ZUGFeRD/mustangproject/archive/master.zip and run ./mvnw clean package
|
To check if the necessary tools are there, the build is in a stable state and works on your platform, e.g. download and extract https://github.com/ZUGFeRD/mustangproject/archive/master.zip and run ./mvnw clean package
|
||||||
|
|
||||||
Mvnw is a maven wrapper which will download maven.Maven is the dependency management tool which will download all libraries, their dependencies, and build the whole thing.
|
|
||||||
Mvnw is a maven wrapper which will download maven.Maven is the dependency management tool which will download all libraries, their dependencies, and build the whole thing.
|
Mvnw is a maven wrapper which will download maven.Maven is the dependency management tool which will download all libraries, their dependencies, and build the whole thing.
|
||||||
|
|
||||||
You will need a Java JDK, e.g. https://www.azul.com/downloads/zulu-community/?architecture=x86-64-bit&package=jdk
|
You will need a Java JDK, e.g. https://www.azul.com/downloads/zulu-community/?architecture=x86-64-bit&package=jdk
|
||||||
@@ -60,7 +59,7 @@ to validate the XML part of the invoices.
|
|||||||
|
|
||||||
## New build
|
## New build
|
||||||
|
|
||||||
Target platform is java 1.8
|
Target platform is java 1.17
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
@@ -127,14 +126,10 @@ The whole settings.xml then looks e.g. like this
|
|||||||
<offline/>
|
<offline/>
|
||||||
<pluginGroups/>
|
<pluginGroups/>
|
||||||
<servers>
|
<servers>
|
||||||
<server>
|
|
||||||
<id>github</id>
|
|
||||||
<password>TOKEN</password>
|
|
||||||
</server>
|
|
||||||
<server>
|
<server>
|
||||||
<id>ossrh</id>
|
<id>ossrh</id>
|
||||||
<username>jstaerk</username>
|
<username>SONATYPE TOKEN USER</username>
|
||||||
<password>JIRA-PASSWORD</password>
|
<password>SONATYPE TOKEN PASSWORD</password>
|
||||||
</server>
|
</server>
|
||||||
|
|
||||||
</servers>
|
</servers>
|
||||||
@@ -162,7 +157,7 @@ Sign in in GitHub and click on the profile picture -> Settings. Now just generat
|
|||||||

|

|
||||||
The Token-ID is the password.
|
The Token-ID is the password.
|
||||||
|
|
||||||
In .m2 also need a toolchains.xml which defines a Sun JDK 1.8 target like the following:
|
In .m2 also need a toolchains.xml which defines a JDK 1.11 target like the following:
|
||||||
```xml
|
```xml
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<toolchains>
|
<toolchains>
|
||||||
@@ -189,11 +184,11 @@ maybe not yet even existing new release version:
|
|||||||
|
|
||||||
```
|
```
|
||||||
cd validator/target
|
cd validator/target
|
||||||
mvn install:install-file -Dfile=validator-2.5.5-SNAPSHOT-shaded.jar -DgroupId=org.mustangproject -DartifactId=validator -Dversion=2.5.5 -Dpackaging=jar -DgeneratePom=true
|
mvn install:install-file -Dfile=validator-2.12.0-SNAPSHOT-shaded.jar -Dclassifier=shaded -DgroupId=org.mustangproject -DartifactId=validator -Dversion=2.12.0 -Dpackaging=jar -DgeneratePom=true
|
||||||
```
|
```
|
||||||
In gradle you can use something like
|
In gradle you can use something like
|
||||||
```
|
```
|
||||||
implementation files('libs/validator-2.5.6-shaded.jar')
|
implementation files('libs/validator-2.12.0-shaded.jar')
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -234,3 +229,47 @@ extract, rename xsl file to xslt, move to new version dir and add a if where the
|
|||||||
* freshcode.club
|
* freshcode.club
|
||||||
* Submit on openpr.de/.com, https://www.einpresswire.com/
|
* Submit on openpr.de/.com, https://www.einpresswire.com/
|
||||||
|
|
||||||
|
## Tips&Inspriration
|
||||||
|
|
||||||
|
|
||||||
|
NodeList from a XPath https://github.com/ZUGFeRD/mustangproject/pull/476/files
|
||||||
|
```
|
||||||
|
xpr = xpath.compile("//*[local-name()=\"PrepaidAmount\"]");
|
||||||
|
NodeList prepaidNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
|
nodeMap.getNode("GlobalID").ifPresent(idNode -> {
|
||||||
|
if (idNode.hasAttributes()
|
||||||
|
&& idNode.getAttributes().getNamedItem("schemeID") != null) {
|
||||||
|
globalId = new SchemedID()
|
||||||
|
.setScheme(idNode.getAttributes().getNamedItem("schemeID").getNodeValue())
|
||||||
|
.setId(idNode.getTextContent());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
nodeMap.getAsNodeMap and nodeMap.getAsString
|
||||||
|
```
|
||||||
|
|
||||||
|
nodeMap.getAsString("SellerAssignedID").ifPresent(this::setSellerAssignedID);
|
||||||
|
nodeMap.getAsString("BuyerAssignedID").ifPresent(this::setBuyerAssignedID);
|
||||||
|
nodeMap.getAsString("Name").ifPresent(this::setName);
|
||||||
|
nodeMap.getAsString("Description").ifPresent(this::setDescription);
|
||||||
|
|
||||||
|
nodeMap.getAsNodeMap("ApplicableProductCharacteristic").ifPresent(apcNodes -> {
|
||||||
|
String key = apcNodes.getAsStringOrNull("Description");
|
||||||
|
String value = apcNodes.getAsStringOrNull("Value");
|
||||||
|
if (key != null && value != null) {
|
||||||
|
if (attributes == null) {
|
||||||
|
attributes = new HashMap<>();
|
||||||
|
}
|
||||||
|
attributes.put(key, value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
nodeMap.getAsNodeMap("DesignatedProductClassification").ifPresent(dpcNodes -> {
|
||||||
|
String className = dpcNodes.getAsStringOrNull("ClassName");
|
||||||
|
dpcNodes.getNode("ClassCode").map(ClassCode::fromNode).ifPresent(classCode ->
|
||||||
|
classifications.add(new DesignatedProductClassification(classCode, className)));
|
||||||
|
});
|
||||||
|
|
||||||
|
nodeMap.getAsString("OriginTradeCounty").ifPresent(this::setCountryOfOrigin);
|
||||||
|
```
|
||||||
|
|||||||
@@ -1,16 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<parent>
|
<parent>
|
||||||
<groupId>org.mustangproject</groupId>
|
<groupId>org.mustangproject</groupId>
|
||||||
<artifactId>core</artifactId>
|
<artifactId>core</artifactId>
|
||||||
<version>2.12.0-SNAPSHOT</version>
|
<version>2.15.0-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.mustangproject</groupId>
|
<groupId>org.mustangproject</groupId>
|
||||||
<artifactId>library</artifactId>
|
<artifactId>library</artifactId>
|
||||||
<version>2.12.0-SNAPSHOT</version>
|
<version>2.15.0-SNAPSHOT</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<name>Library to write, read and validate e-invoices (Factur-X, ZUGFeRD, Order-X, XRechnung/CII)</name>
|
<name>Library to write, read and validate e-invoices (Factur-X, ZUGFeRD, Order-X, XRechnung/CII)</name>
|
||||||
<description>FOSS Java library to read, write and validate european electronic invoices and orders in the UN/CEFACT
|
<description>FOSS Java library to read, write and validate european electronic invoices and orders in the UN/CEFACT
|
||||||
@@ -65,7 +64,8 @@
|
|||||||
<groupId>net.sf.saxon</groupId>
|
<groupId>net.sf.saxon</groupId>
|
||||||
<artifactId>Saxon-HE</artifactId>
|
<artifactId>Saxon-HE</artifactId>
|
||||||
<version>12.4</version>
|
<version>12.4</version>
|
||||||
</dependency><!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
|
</dependency>
|
||||||
|
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
<artifactId>jackson-databind</artifactId>
|
<artifactId>jackson-databind</artifactId>
|
||||||
@@ -83,18 +83,24 @@
|
|||||||
</exclusion>
|
</exclusion>
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- JAXB -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>jakarta.xml.bind</groupId>
|
<groupId>jakarta.xml.bind</groupId>
|
||||||
<artifactId>jakarta.xml.bind-api</artifactId>
|
<artifactId>jakarta.xml.bind-api</artifactId>
|
||||||
<version>4.0.2</version>
|
<version>4.0.2</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.glassfish.jaxb</groupId>
|
||||||
|
<artifactId>jaxb-runtime</artifactId>
|
||||||
|
<version>4.0.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.eclipse.angus</groupId>
|
<groupId>org.eclipse.angus</groupId>
|
||||||
<artifactId>angus-activation</artifactId>
|
<artifactId>angus-activation</artifactId>
|
||||||
<version>2.0.2</version>
|
<version>2.0.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- Apache PDFBox -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.pdfbox</groupId>
|
<groupId>org.apache.pdfbox</groupId>
|
||||||
<artifactId>preflight</artifactId>
|
<artifactId>preflight</artifactId>
|
||||||
@@ -105,11 +111,20 @@
|
|||||||
<artifactId>pdfbox</artifactId>
|
<artifactId>pdfbox</artifactId>
|
||||||
<version>3.0.2</version>
|
<version>3.0.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- DOM4j -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.dom4j</groupId>
|
<groupId>org.dom4j</groupId>
|
||||||
<artifactId>dom4j</artifactId>
|
<artifactId>dom4j</artifactId>
|
||||||
<version>2.1.4</version>
|
<version>2.1.4</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- CII to UBL conversion -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.helger</groupId>
|
||||||
|
<artifactId>en16931-cii2ubl</artifactId>
|
||||||
|
<version>2.2.4</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- test dependencies -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.junit.jupiter</groupId>
|
<groupId>org.junit.jupiter</groupId>
|
||||||
<artifactId>junit-jupiter-api</artifactId>
|
<artifactId>junit-jupiter-api</artifactId>
|
||||||
@@ -122,27 +137,12 @@
|
|||||||
<version>5.10.2</version>
|
<version>5.10.2</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- CII to UBL conversion -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.helger</groupId>
|
|
||||||
<artifactId>en16931-cii2ubl</artifactId>
|
|
||||||
<version>2.2.4</version>
|
|
||||||
</dependency>
|
|
||||||
<!-- https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.glassfish.jaxb</groupId>
|
|
||||||
<artifactId>jaxb-runtime</artifactId>
|
|
||||||
<version>4.0.5</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.xmlunit</groupId>
|
<groupId>org.xmlunit</groupId>
|
||||||
<artifactId>xmlunit-core</artifactId>
|
<artifactId>xmlunit-core</artifactId>
|
||||||
<version>2.10.0</version>
|
<version>2.10.0</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.xmlunit</groupId>
|
<groupId>org.xmlunit</groupId>
|
||||||
<artifactId>xmlunit-assertj</artifactId>
|
<artifactId>xmlunit-assertj</artifactId>
|
||||||
@@ -234,10 +234,8 @@
|
|||||||
<version>3.5.3</version>
|
<version>3.5.3</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<shadedArtifactAttached>true</shadedArtifactAttached>
|
<shadedArtifactAttached>true</shadedArtifactAttached>
|
||||||
<minimizeJar>false
|
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||||
</minimizeJar><!-- no longer java 11 compatible if set to true because it removes e.g. javax/xml/bind/annotation/XmlSchema-->
|
|
||||||
<filters>
|
<filters>
|
||||||
|
|
||||||
<filter>
|
<filter>
|
||||||
<artifact>*:*</artifact>
|
<artifact>*:*</artifact>
|
||||||
<excludes>
|
<excludes>
|
||||||
@@ -246,18 +244,6 @@
|
|||||||
<exclude>META-INF/*.RSA</exclude>
|
<exclude>META-INF/*.RSA</exclude>
|
||||||
</excludes>
|
</excludes>
|
||||||
</filter>
|
</filter>
|
||||||
<filter>
|
|
||||||
<artifact>log4j:log4j</artifact>
|
|
||||||
<includes>
|
|
||||||
<include>**</include>
|
|
||||||
</includes>
|
|
||||||
</filter>
|
|
||||||
<filter>
|
|
||||||
<artifact>commons-logging:commons-logging</artifact>
|
|
||||||
<includes>
|
|
||||||
<include>**</include>
|
|
||||||
</includes>
|
|
||||||
</filter>
|
|
||||||
</filters>
|
</filters>
|
||||||
</configuration>
|
</configuration>
|
||||||
<executions>
|
<executions>
|
||||||
@@ -266,15 +252,6 @@
|
|||||||
<goals>
|
<goals>
|
||||||
<goal>shade</goal>
|
<goal>shade</goal>
|
||||||
</goals>
|
</goals>
|
||||||
<configuration>
|
|
||||||
<artifactSet>
|
|
||||||
<excludes>
|
|
||||||
<!--exclude>classworlds:classworlds</exclude> <exclude>junit:junit</exclude>
|
|
||||||
<exclude>jmock:*</exclude> <exclude>*:xml-apis</exclude> <exclude>org.apache.maven:lib:tests</exclude>
|
|
||||||
<exclude>log4j:log4j:jar:</exclude -->
|
|
||||||
</excludes>
|
|
||||||
</artifactSet>
|
|
||||||
</configuration>
|
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package org.mustangproject;
|
package org.mustangproject;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import org.mustangproject.ZUGFeRD.IZUGFeRDTradeSettlementPayment;
|
import org.mustangproject.ZUGFeRD.IZUGFeRDTradeSettlementPayment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,6 +20,10 @@ public class BankDetails implements IZUGFeRDTradeSettlementPayment {
|
|||||||
* the "name" of the bank account (holder)
|
* the "name" of the bank account (holder)
|
||||||
*/
|
*/
|
||||||
protected String accountName=null;
|
protected String accountName=null;
|
||||||
|
/***
|
||||||
|
* bean constructor
|
||||||
|
*/
|
||||||
|
public BankDetails() { }
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* constructor for IBAN only :-)
|
* constructor for IBAN only :-)
|
||||||
@@ -80,12 +86,14 @@ public class BankDetails implements IZUGFeRDTradeSettlementPayment {
|
|||||||
* */
|
* */
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
|
@JsonIgnore
|
||||||
public String getOwnBIC() {
|
public String getOwnBIC() {
|
||||||
return getBIC();
|
return getBIC();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
|
@JsonIgnore
|
||||||
public String getOwnIBAN() {
|
public String getOwnIBAN() {
|
||||||
return getIBAN();
|
return getIBAN();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,10 @@ public class Charge implements IZUGFeRDAllowanceCharge {
|
|||||||
* a simple human readable description
|
* a simple human readable description
|
||||||
*/
|
*/
|
||||||
protected String reason;
|
protected String reason;
|
||||||
|
/**
|
||||||
|
* Code from list UNTDID 5189
|
||||||
|
*/
|
||||||
|
protected String reasonCode;
|
||||||
/**
|
/**
|
||||||
* the category ID why this charge has been applied
|
* the category ID why this charge has been applied
|
||||||
*/
|
*/
|
||||||
@@ -94,14 +98,38 @@ public class Charge implements IZUGFeRDAllowanceCharge {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getReasonCode() {
|
||||||
|
return reasonCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Reason code for the charge
|
||||||
|
* @param reasonCode from list UNTDID 5189
|
||||||
|
* @return fluid setter
|
||||||
|
*/
|
||||||
|
public Charge setReasonCode(String reasonCode) {
|
||||||
|
this.reasonCode = reasonCode;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BigDecimal getTotalAmount(IAbsoluteValueProvider currentItem) {
|
public BigDecimal getTotalAmount(IAbsoluteValueProvider currentItem) {
|
||||||
|
if (percent!=null) {
|
||||||
|
return currentItem.getValue().multiply(getPercent().divide(new BigDecimal(100)));
|
||||||
|
} else if(totalAmount != null) {
|
||||||
|
return totalAmount;
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException("percent must be set");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getTotalAmount() {
|
||||||
if (totalAmount!=null) {
|
if (totalAmount!=null) {
|
||||||
return totalAmount;
|
return totalAmount;
|
||||||
} else if (percent!=null) {
|
|
||||||
return currentItem.getValue().multiply(getPercent().divide(new BigDecimal(100)));
|
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException("Either totalAmount or percent must be set");
|
throw new RuntimeException("totalAmount must be set");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,7 +165,7 @@ public class Charge implements IZUGFeRDAllowanceCharge {
|
|||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* machine readable reason for this allowance/charge
|
* the category ID why this has been applied
|
||||||
* @param categoryCode usually S
|
* @param categoryCode usually S
|
||||||
* @return fluid setter
|
* @return fluid setter
|
||||||
*/
|
*/
|
||||||
|
|||||||
104
library/src/main/java/org/mustangproject/ClassCode.java
Normal file
104
library/src/main/java/org/mustangproject/ClassCode.java
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
/**
|
||||||
|
* *********************************************************************
|
||||||
|
* <p>
|
||||||
|
* Copyright (c) 2024 Jan N. Klug
|
||||||
|
* <p>
|
||||||
|
* Use is subject to license terms.
|
||||||
|
* <p>
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
* use this file except in compliance with the License. You may obtain a copy
|
||||||
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
||||||
|
* <p>
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* <p>
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
* <p>
|
||||||
|
* **********************************************************************
|
||||||
|
*/
|
||||||
|
package org.mustangproject;
|
||||||
|
|
||||||
|
import org.w3c.dom.NamedNodeMap;
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A schemed classification for products. The scheme can be anything defined in UNTDID 7143.
|
||||||
|
*/
|
||||||
|
public class ClassCode {
|
||||||
|
private final String listID;
|
||||||
|
private final String code;
|
||||||
|
private String listVersionID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A UNTDID 7143 schemed classification code
|
||||||
|
*
|
||||||
|
* @param listID the scheme from UNTDID 7143
|
||||||
|
* @param code the classification code
|
||||||
|
* @param listVersionID an (optional) version of the scheme
|
||||||
|
*/
|
||||||
|
public ClassCode(String listID, String code, String listVersionID) {
|
||||||
|
this.listID = listID;
|
||||||
|
this.code = code;
|
||||||
|
this.listVersionID = listVersionID;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A UNTDID 7143 schemed classification code
|
||||||
|
*
|
||||||
|
* @param listID the scheme from UNTDID 7143
|
||||||
|
* @param code the classification code
|
||||||
|
*/
|
||||||
|
public ClassCode(String listID, String code) {
|
||||||
|
this(listID, code, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Set the version for the scheme returned by {@link #getListID()}
|
||||||
|
* @param listVersionID the scheme version
|
||||||
|
*/
|
||||||
|
public void setListVersionID(String listVersionID) {
|
||||||
|
this.listVersionID = listVersionID;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the scheme (according to UNTDID 7143) that describes the value returned by {@link #getCode()},
|
||||||
|
* potentially versioned by {@link #getListVersionID()}
|
||||||
|
*
|
||||||
|
* @return the scheme
|
||||||
|
*/
|
||||||
|
public String getListID() {
|
||||||
|
return listID;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the code that (following the scheme returned by {@link #getListID()}) describes the product
|
||||||
|
*
|
||||||
|
* @return the classification code itself
|
||||||
|
*/
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the (optional) version for the scheme returned by {@link #getListID()}
|
||||||
|
*
|
||||||
|
* @return the version or {@code null} if not set
|
||||||
|
*/
|
||||||
|
public String getListVersionID() {
|
||||||
|
return listVersionID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ClassCode fromNode(Node node) {
|
||||||
|
NamedNodeMap attrs = node.getAttributes();
|
||||||
|
if (attrs != null && attrs.getNamedItem("listID") != null) {
|
||||||
|
ClassCode classCode = new ClassCode(attrs.getNamedItem("listID").getNodeValue(), node.getTextContent());
|
||||||
|
if (attrs.getNamedItem("listVersionID") != null) {
|
||||||
|
classCode.setListVersionID(attrs.getNamedItem("listVersionID").getNodeValue());
|
||||||
|
}
|
||||||
|
return classCode;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
/**
|
||||||
|
* *********************************************************************
|
||||||
|
* <p>
|
||||||
|
* Copyright (c) 2024 Jan N. Klug
|
||||||
|
* <p>
|
||||||
|
* Use is subject to license terms.
|
||||||
|
* <p>
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
* use this file except in compliance with the License. You may obtain a copy
|
||||||
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
||||||
|
* <p>
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* <p>
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
* <p>
|
||||||
|
* **********************************************************************
|
||||||
|
*/
|
||||||
|
package org.mustangproject;
|
||||||
|
|
||||||
|
import org.mustangproject.ZUGFeRD.IDesignatedProductClassification;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An implementation of {@link IDesignatedProductClassification} for describing a {@link org.mustangproject.Product}
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class DesignatedProductClassification implements IDesignatedProductClassification {
|
||||||
|
private final ClassCode classCode;
|
||||||
|
private String className;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A schemed product descriptor
|
||||||
|
*
|
||||||
|
* @param classCode an UNTDID 7143 schemed class code
|
||||||
|
* @param className a verbal description of the class code
|
||||||
|
*/
|
||||||
|
public DesignatedProductClassification(ClassCode classCode, String className) {
|
||||||
|
this.classCode = classCode;
|
||||||
|
this.className = className;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A schemed product descriptor
|
||||||
|
*
|
||||||
|
* @param classCode an UNTDID 7143 schemed class code
|
||||||
|
*/
|
||||||
|
public DesignatedProductClassification(ClassCode classCode) {
|
||||||
|
this(classCode, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ClassCode getClassCode() {
|
||||||
|
return classCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClassName() {
|
||||||
|
return className;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the human-readable name of the class code
|
||||||
|
*
|
||||||
|
* @param className the name of the class code (can be {@code null})
|
||||||
|
*/
|
||||||
|
public void setClassName(String className) {
|
||||||
|
this.className = className;
|
||||||
|
}
|
||||||
|
}
|
||||||
42
library/src/main/java/org/mustangproject/DirectDebit.java
Normal file
42
library/src/main/java/org/mustangproject/DirectDebit.java
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
package org.mustangproject;
|
||||||
|
|
||||||
|
import org.mustangproject.ZUGFeRD.IZUGFeRDTradeSettlementDebit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* provides e.g. the IBAN to transfer money to :-)
|
||||||
|
*/
|
||||||
|
public class DirectDebit implements IZUGFeRDTradeSettlementDebit {
|
||||||
|
/**
|
||||||
|
* Debited account identifier (BT-91)
|
||||||
|
*/
|
||||||
|
protected final String IBAN;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mandate reference identifier (BT-89)
|
||||||
|
*/
|
||||||
|
protected final String mandate;
|
||||||
|
|
||||||
|
/***
|
||||||
|
* constructor for normal use :-)
|
||||||
|
* @param IBAN the IBAN as string
|
||||||
|
* @param mandate the mandate as string
|
||||||
|
*/
|
||||||
|
public DirectDebit(String IBAN, String mandate) {
|
||||||
|
this.IBAN = IBAN;
|
||||||
|
this.mandate = mandate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* getter for the IBAN
|
||||||
|
* @return IBAN
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getIBAN() {
|
||||||
|
return this.IBAN;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getMandate() {
|
||||||
|
return this.mandate;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
package org.mustangproject;
|
package org.mustangproject;
|
||||||
|
|
||||||
public enum EStandard {
|
public enum EStandard {
|
||||||
facturx, orderx, despatchadvice, ubldespatchadvice, zugferd, cii, ubl
|
facturx, orderx, despatchadvice, ubldespatchadvice, zugferd, cii, ubl, ubl_creditnote
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ 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, invoiceReferencedDocumentID = null, buyerOrderReferencedDocumentIssueDateTime = null, ownForeignOrganisationID = null, ownOrganisationName = null, currency = null, paymentTermDescription = null;
|
||||||
protected Date issueDate = null, dueDate = null, deliveryDate = null;
|
protected Date issueDate = null, dueDate = null, deliveryDate = null;
|
||||||
protected TradeParty sender = null, recipient = null, deliveryAddress = null;
|
protected TradeParty sender = null, recipient = null, deliveryAddress = null, payee = null;
|
||||||
protected ArrayList<CashDiscount> cashDiscounts = null;
|
protected ArrayList<CashDiscount> cashDiscounts = null;
|
||||||
@JsonDeserialize(contentAs = Item.class)
|
@JsonDeserialize(contentAs = Item.class)
|
||||||
protected ArrayList<IZUGFeRDExportableItem> ZFItems = null;
|
protected ArrayList<IZUGFeRDExportableItem> ZFItems = null;
|
||||||
@@ -63,6 +63,7 @@ public class Invoice implements IExportableTransaction {
|
|||||||
protected String specifiedProcuringProjectName = null;
|
protected String specifiedProcuringProjectName = null;
|
||||||
protected String despatchAdviceReferencedDocumentID = null;
|
protected String despatchAdviceReferencedDocumentID = null;
|
||||||
protected String vatDueDateTypeCode = null;
|
protected String vatDueDateTypeCode = null;
|
||||||
|
protected String creditorReferenceID; // required when direct debit is used.
|
||||||
|
|
||||||
public Invoice() {
|
public Invoice() {
|
||||||
ZFItems = new ArrayList<>();
|
ZFItems = new ArrayList<>();
|
||||||
@@ -576,6 +577,22 @@ public class Invoice implements IExportableTransaction {
|
|||||||
this.deliveryAddress = deliveryAddress;
|
this.deliveryAddress = deliveryAddress;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TradeParty getPayee() {
|
||||||
|
return this.payee;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* if the payee is not the seller, it can be specified here
|
||||||
|
* @param payee the payment receiving organisation
|
||||||
|
* @return fluent setter
|
||||||
|
*/
|
||||||
|
public Invoice setPayee(TradeParty payee) {
|
||||||
|
this.payee = payee;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* Adds a cash discount (skonto)
|
* Adds a cash discount (skonto)
|
||||||
* @param c the CashDiscount percent/period combination
|
* @param c the CashDiscount percent/period combination
|
||||||
@@ -878,4 +895,13 @@ public class Invoice implements IExportableTransaction {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getCreditorReferenceID() {
|
||||||
|
return creditorReferenceID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Invoice setCreditorReferenceID(String creditorReferenceID) {
|
||||||
|
this.creditorReferenceID = creditorReferenceID;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|||||||
import org.mustangproject.ZUGFeRD.IReferencedDocument;
|
import org.mustangproject.ZUGFeRD.IReferencedDocument;
|
||||||
import org.mustangproject.ZUGFeRD.IZUGFeRDAllowanceCharge;
|
import org.mustangproject.ZUGFeRD.IZUGFeRDAllowanceCharge;
|
||||||
import org.mustangproject.ZUGFeRD.IZUGFeRDExportableItem;
|
import org.mustangproject.ZUGFeRD.IZUGFeRDExportableItem;
|
||||||
|
import org.mustangproject.util.NodeMap;
|
||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
import org.w3c.dom.NodeList;
|
import org.w3c.dom.NodeList;
|
||||||
|
|
||||||
@@ -18,16 +19,22 @@ import java.util.Date;
|
|||||||
|
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
public class Item implements IZUGFeRDExportableItem {
|
public class Item implements IZUGFeRDExportableItem {
|
||||||
protected BigDecimal price, quantity, tax, grossPrice, lineTotalAmount;
|
protected BigDecimal price = BigDecimal.ZERO;
|
||||||
|
protected BigDecimal quantity;
|
||||||
|
protected BigDecimal tax;
|
||||||
|
protected BigDecimal grossPrice;
|
||||||
|
protected BigDecimal lineTotalAmount;
|
||||||
protected BigDecimal basisQuantity = BigDecimal.ONE;
|
protected BigDecimal basisQuantity = BigDecimal.ONE;
|
||||||
protected Date detailedDeliveryPeriodFrom = null, detailedDeliveryPeriodTo = null;
|
protected Date detailedDeliveryPeriodFrom = null;
|
||||||
|
protected Date detailedDeliveryPeriodTo = null;
|
||||||
protected String id;
|
protected String id;
|
||||||
protected String referencedLineID = null;
|
protected String referencedLineID = null;
|
||||||
protected Product product;
|
protected Product product;
|
||||||
protected ArrayList<String> notes = null;
|
protected ArrayList<String> notes = null;
|
||||||
protected ArrayList<ReferencedDocument> referencedDocuments = null;
|
protected ArrayList<ReferencedDocument> referencedDocuments = null;
|
||||||
protected ArrayList<IZUGFeRDAllowanceCharge> Allowances = new ArrayList<>(),
|
protected ArrayList<ReferencedDocument> additionalReference = null;
|
||||||
Charges = new ArrayList<>();
|
protected ArrayList<IZUGFeRDAllowanceCharge> Allowances = new ArrayList<>();
|
||||||
|
protected ArrayList<IZUGFeRDAllowanceCharge> Charges = new ArrayList<>();
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* default constructor
|
* default constructor
|
||||||
@@ -41,7 +48,6 @@ public class Item implements IZUGFeRDExportableItem {
|
|||||||
this.product = product;
|
this.product = product;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* empty constructor
|
* empty constructor
|
||||||
* do not use, but might be used e.g. by jackson
|
* do not use, but might be used e.g. by jackson
|
||||||
@@ -50,233 +56,74 @@ public class Item implements IZUGFeRDExportableItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Item(NodeList itemChilds, boolean recalcPrice) {
|
public Item(NodeList itemChilds, boolean recalcPrice) {
|
||||||
String price = "0";
|
NodeMap itemMap = new NodeMap(itemChilds);
|
||||||
String basisQuantity = "1";
|
|
||||||
String name = "";
|
|
||||||
String sellerAssignedID = null;
|
|
||||||
String description = "";
|
|
||||||
SchemedID gid = null;
|
|
||||||
String quantity = "0";
|
|
||||||
String vatPercent = null;
|
|
||||||
String lineTotal = "0";
|
|
||||||
String unitCode = "0";
|
|
||||||
String referencedLineID = null;
|
|
||||||
|
|
||||||
ArrayList<ReferencedDocument> rdocs = null;
|
itemMap.getAsNodeMap("Item").ifPresent(icnm -> {
|
||||||
|
|
||||||
// nodes.item(i).getTextContent())) {
|
|
||||||
|
|
||||||
for (int itemChildIndex = 0; itemChildIndex < itemChilds.getLength(); itemChildIndex++) {
|
|
||||||
String lineTrade = itemChilds.item(itemChildIndex).getLocalName();
|
|
||||||
if ((lineTrade != null) && (lineTrade.equals("Item"))) {
|
|
||||||
// ubl
|
// ubl
|
||||||
//we need: name description unitcode
|
//we need: name description unitcode
|
||||||
//and we additionally have vat%
|
//and we additionally have vat%
|
||||||
NodeList UBLitemChilds = itemChilds.item(itemChildIndex).getChildNodes();
|
setProduct(new Product());
|
||||||
for (Node currentUBLItemChildNode : XMLTools.asList(UBLitemChilds)) {
|
icnm.getAsString("Name").ifPresent(product::setName);
|
||||||
|
icnm.getAsNodeMap("ClassifiedTaxCategory").flatMap(m -> m.getAsBigDecimal("Percent"))
|
||||||
|
.ifPresent(product::setVATPercent);
|
||||||
|
});
|
||||||
|
|
||||||
if ((currentUBLItemChildNode.getLocalName() != null) && (currentUBLItemChildNode.getLocalName().equals("Name"))) {
|
itemMap.getAsNodeMap("Price").ifPresent(icnm -> {
|
||||||
name = currentUBLItemChildNode.getTextContent();
|
|
||||||
}
|
|
||||||
if ((currentUBLItemChildNode.getLocalName() != null) && (currentUBLItemChildNode.getLocalName().equals("ClassifiedTaxCategory"))) {
|
|
||||||
for (Node currentUBLTaxChildNode : XMLTools.asList(currentUBLItemChildNode.getChildNodes())) {
|
|
||||||
if ((currentUBLTaxChildNode.getLocalName() != null) && (currentUBLTaxChildNode.getLocalName().equals("Percent"))) {
|
|
||||||
vatPercent = currentUBLTaxChildNode.getTextContent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((lineTrade != null) && (lineTrade.equals("Price"))) {
|
|
||||||
// ubl
|
// ubl
|
||||||
// PriceAmount with currencyID and BaseQuantity with unitCode
|
// PriceAmount with currencyID and BaseQuantity with unitCode
|
||||||
NodeList UBLpriceChilds = itemChilds.item(itemChildIndex).getChildNodes();
|
icnm.getAsBigDecimal("PriceAmount").ifPresent(this::setPrice);
|
||||||
for (Node currentUBLPriceChildNode : XMLTools.asList(UBLpriceChilds)) {
|
icnm.getAsBigDecimal("BaseQuantity").ifPresent(this::setBasisQuantity);
|
||||||
|
});
|
||||||
|
|
||||||
if ((currentUBLPriceChildNode.getLocalName() != null) && (currentUBLPriceChildNode.getLocalName().equals("PriceAmount"))) {
|
itemMap.getNode("InvoicedQuantity").ifPresent(icn -> {
|
||||||
price = currentUBLPriceChildNode.getTextContent();
|
|
||||||
}
|
|
||||||
if ((currentUBLPriceChildNode.getLocalName() != null) && (currentUBLPriceChildNode.getLocalName().equals("BaseQuantity"))) {
|
|
||||||
basisQuantity = currentUBLPriceChildNode.getTextContent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
if ((lineTrade != null) && (lineTrade.equals("InvoicedQuantity"))) {
|
|
||||||
// ubl
|
// ubl
|
||||||
quantity = itemChilds.item(itemChildIndex).getTextContent();
|
setQuantity(new BigDecimal(icn.getTextContent().trim()));
|
||||||
unitCode = itemChilds.item(itemChildIndex).getAttributes()
|
product.setUnit(icn.getAttributes().getNamedItem("unitCode").getNodeValue());
|
||||||
.getNamedItem("unitCode").getNodeValue();
|
});
|
||||||
}
|
|
||||||
if ((lineTrade != null) && (lineTrade.equals("SpecifiedLineTradeAgreement")
|
|
||||||
|| lineTrade.equals("SpecifiedSupplyChainTradeAgreement"))) {
|
|
||||||
NodeList tradeLineChilds = itemChilds.item(itemChildIndex).getChildNodes();
|
|
||||||
for (int tradeLineChildIndex = 0; tradeLineChildIndex < tradeLineChilds
|
|
||||||
.getLength(); tradeLineChildIndex++) {
|
|
||||||
|
|
||||||
if ((tradeLineChilds.item(tradeLineChildIndex).getLocalName() != null) && tradeLineChilds
|
itemMap.getAsNodeMap("SpecifiedLineTradeAgreement", "SpecifiedSupplyChainTradeAgreement").ifPresent(icnm -> {
|
||||||
.item(tradeLineChildIndex).getLocalName().equals("AdditionalReferencedDocument")) {
|
icnm.getAsNodeMap("BuyerOrderReferencedDocument")
|
||||||
String IssuerAssignedID = "";
|
.flatMap(bordNodes -> bordNodes.getAsString("LineID"))
|
||||||
String TypeCode = "";
|
.ifPresent(this::addReferencedLineID);
|
||||||
String ReferenceTypeCode = "";
|
|
||||||
|
|
||||||
NodeList refDocChilds = tradeLineChilds.item(tradeLineChildIndex).getChildNodes();
|
icnm.getAsNodeMap("NetPriceProductTradePrice").ifPresent(npptpNodes -> {
|
||||||
for (int refDocIndex = 0; refDocIndex < refDocChilds.getLength(); refDocIndex++) {
|
npptpNodes.getAsBigDecimal("ChargeAmount").ifPresent(this::setPrice);
|
||||||
String localName = refDocChilds.item(refDocIndex).getLocalName();
|
npptpNodes.getAsBigDecimal("BasisQuantity").ifPresent(this::setBasisQuantity);
|
||||||
if ((localName != null) && (localName.equals("IssuerAssignedID"))) {
|
});
|
||||||
IssuerAssignedID = refDocChilds.item(refDocIndex).getTextContent();
|
|
||||||
}
|
|
||||||
if ((localName != null) && (localName.equals("TypeCode"))) {
|
|
||||||
TypeCode = refDocChilds.item(refDocIndex).getTextContent();
|
|
||||||
}
|
|
||||||
if ((localName != null) && (localName.equals("ReferenceTypeCode"))) {
|
|
||||||
ReferenceTypeCode = refDocChilds.item(refDocIndex).getTextContent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ReferencedDocument rd = new ReferencedDocument(IssuerAssignedID, TypeCode,
|
icnm.getAllNodes("AdditionalReferencedDocument").map(ReferencedDocument::fromNode)
|
||||||
ReferenceTypeCode);
|
.forEach(this::addReferencedDocument);
|
||||||
if (rdocs == null) {
|
});
|
||||||
rdocs = new ArrayList<>();
|
|
||||||
}
|
|
||||||
rdocs.add(rd);
|
|
||||||
|
|
||||||
}
|
itemMap.getNode("SpecifiedTradeProduct").map(Product::new).ifPresent(this::setProduct);
|
||||||
|
|
||||||
if ((tradeLineChilds.item(tradeLineChildIndex).getLocalName() != null) && tradeLineChilds.item(tradeLineChildIndex).getLocalName().equals("BuyerOrderReferencedDocument")) {
|
|
||||||
NodeList docChilds = tradeLineChilds.item(tradeLineChildIndex).getChildNodes();
|
|
||||||
for (int docIndex = 0; docIndex < docChilds.getLength(); docIndex++) {
|
|
||||||
String localName = docChilds.item(docIndex).getLocalName();
|
|
||||||
if ((localName != null) && (localName.equals("LineID"))) {
|
|
||||||
referencedLineID = docChilds.item(docIndex).getTextContent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((tradeLineChilds.item(tradeLineChildIndex).getLocalName() != null) && tradeLineChilds
|
|
||||||
.item(tradeLineChildIndex).getLocalName().equals("NetPriceProductTradePrice")) {
|
|
||||||
NodeList netChilds = tradeLineChilds.item(tradeLineChildIndex).getChildNodes();
|
|
||||||
for (int netIndex = 0; netIndex < netChilds.getLength(); netIndex++) {
|
|
||||||
if ((netChilds.item(netIndex).getLocalName() != null)
|
|
||||||
&& (netChilds.item(netIndex).getLocalName().equals("ChargeAmount"))) {
|
|
||||||
price = netChilds.item(netIndex).getTextContent();// ChargeAmount
|
|
||||||
|
|
||||||
}
|
|
||||||
if ((netChilds.item(netIndex).getLocalName() != null)
|
|
||||||
&& ((netChilds.item(netIndex).getLocalName().equals("BasisQuantity")) || (netChilds.item(netIndex).getLocalName().equals("InvoicedQuantity")))) {
|
|
||||||
basisQuantity = netChilds.item(netIndex).getTextContent();// ChargeAmount
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((lineTrade != null) && (lineTrade.equals("SpecifiedLineTradeDelivery")
|
|
||||||
|| lineTrade.equals("SpecifiedSupplyChainTradeDelivery"))) {
|
|
||||||
NodeList tradeLineChilds = itemChilds.item(itemChildIndex).getChildNodes();
|
|
||||||
for (int tradeLineChildIndex = 0; tradeLineChildIndex < tradeLineChilds
|
|
||||||
.getLength(); tradeLineChildIndex++) {
|
|
||||||
String tradeName = tradeLineChilds.item(tradeLineChildIndex).getLocalName();
|
|
||||||
if ((tradeName != null)
|
|
||||||
&& (tradeName.equals("BilledQuantity") || tradeName.equals("RequestedQuantity")
|
|
||||||
|| tradeName.equals("DespatchedQuantity"))) {
|
|
||||||
// RequestedQuantity is for Order-X, BilledQuantity for FX and ZF
|
// RequestedQuantity is for Order-X, BilledQuantity for FX and ZF
|
||||||
quantity = tradeLineChilds.item(tradeLineChildIndex).getTextContent();
|
itemMap.getAsNodeMap("SpecifiedLineTradeDelivery", "SpecifiedSupplyChainTradeDelivery")
|
||||||
unitCode = tradeLineChilds.item(tradeLineChildIndex).getAttributes()
|
.flatMap(icnm -> icnm.getNode("BilledQuantity", "RequestedQuantity", "DespatchedQuantity"))
|
||||||
.getNamedItem("unitCode").getNodeValue();
|
.ifPresent(bq -> {
|
||||||
|
setQuantity(new BigDecimal(bq.getTextContent().trim()));
|
||||||
|
if (bq.hasAttributes()) {
|
||||||
|
Node unitAttr = bq.getAttributes().getNamedItem("unitCode");
|
||||||
|
if (unitAttr != null) {
|
||||||
|
product.setUnit(unitAttr.getNodeValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
if ((lineTrade != null) && (lineTrade.equals("SpecifiedTradeProduct"))) {
|
|
||||||
NodeList tradeProductChilds = itemChilds.item(itemChildIndex).getChildNodes();
|
itemMap.getAsNodeMap("SpecifiedLineTradeSettlement", "SpecifiedSupplyChainTradeSettlement").ifPresent(icnm -> {
|
||||||
for (int tradeProductChildIndex = 0; tradeProductChildIndex < tradeProductChilds
|
icnm.getAsNodeMap("ApplicableTradeTax")
|
||||||
.getLength(); tradeProductChildIndex++) {
|
.flatMap(cnm -> cnm.getAsBigDecimal("RateApplicablePercent", "ApplicablePercent"))
|
||||||
if ((tradeProductChilds.item(tradeProductChildIndex).getLocalName() != null)
|
.ifPresent(product::setVATPercent);
|
||||||
&& (tradeProductChilds.item(tradeProductChildIndex).getLocalName()
|
|
||||||
.equals("Name"))) {
|
if (recalcPrice && !BigDecimal.ZERO.equals(quantity)) {
|
||||||
name = tradeProductChilds.item(tradeProductChildIndex).getTextContent();
|
icnm.getAsNodeMap("SpecifiedTradeSettlementLineMonetarySummation")
|
||||||
}
|
.flatMap(cnm -> cnm.getAsBigDecimal("LineTotalAmount"))
|
||||||
if ((tradeProductChilds.item(tradeProductChildIndex).getLocalName() != null)
|
.ifPresent(lineTotal -> setPrice(lineTotal.divide(quantity, 4, RoundingMode.HALF_UP)));
|
||||||
&& (tradeProductChilds.item(tradeProductChildIndex).getLocalName()
|
|
||||||
.equals("SellerAssignedID"))) {
|
|
||||||
sellerAssignedID = tradeProductChilds.item(tradeProductChildIndex).getTextContent();
|
|
||||||
}
|
|
||||||
if ((tradeProductChilds.item(tradeProductChildIndex).getLocalName() != null)
|
|
||||||
&& (tradeProductChilds.item(tradeProductChildIndex).getLocalName()
|
|
||||||
.equals("GlobalID"))) {
|
|
||||||
if (tradeProductChilds.item(tradeProductChildIndex).getAttributes()
|
|
||||||
.getNamedItem("schemeID") != null) {
|
|
||||||
gid = new SchemedID()
|
|
||||||
.setScheme(tradeProductChilds.item(tradeProductChildIndex).getAttributes()
|
|
||||||
.getNamedItem("schemeID").getNodeValue())
|
|
||||||
.setId(tradeProductChilds.item(tradeProductChildIndex).getTextContent());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
icnm.getAllNodes("AdditionalReferencedDocument").map(ReferencedDocument::fromNode).forEach(this::addAdditionalReference);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((lineTrade != null) && (lineTrade.equals("SpecifiedLineTradeSettlement")
|
|
||||||
|| lineTrade.equals("SpecifiedSupplyChainTradeSettlement"))) {
|
|
||||||
NodeList tradeSettlementChilds = itemChilds.item(itemChildIndex).getChildNodes();
|
|
||||||
for (int tradeSettlementChildIndex = 0; tradeSettlementChildIndex < tradeSettlementChilds
|
|
||||||
.getLength(); tradeSettlementChildIndex++) {
|
|
||||||
|
|
||||||
String tradeSettlementName = tradeSettlementChilds.item(tradeSettlementChildIndex)
|
|
||||||
.getLocalName();
|
|
||||||
if (tradeSettlementName != null) {
|
|
||||||
if (tradeSettlementName.equals("ApplicableTradeTax")) {
|
|
||||||
NodeList taxChilds = tradeSettlementChilds.item(tradeSettlementChildIndex)
|
|
||||||
.getChildNodes();
|
|
||||||
for (int taxChildIndex = 0; taxChildIndex < taxChilds
|
|
||||||
.getLength(); taxChildIndex++) {
|
|
||||||
String taxChildName = taxChilds.item(taxChildIndex).getLocalName();
|
|
||||||
if ((taxChildName != null) && (taxChildName.equals("RateApplicablePercent")
|
|
||||||
|| taxChildName.equals("ApplicablePercent"))) {
|
|
||||||
vatPercent = taxChilds.item(taxChildIndex).getTextContent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tradeSettlementName.equals("SpecifiedTradeSettlementLineMonetarySummation")) {
|
|
||||||
NodeList totalChilds = tradeSettlementChilds.item(tradeSettlementChildIndex)
|
|
||||||
.getChildNodes();
|
|
||||||
for (int totalChildIndex = 0; totalChildIndex < totalChilds
|
|
||||||
.getLength(); totalChildIndex++) {
|
|
||||||
if ((totalChilds.item(totalChildIndex).getLocalName() != null) && (totalChilds
|
|
||||||
.item(totalChildIndex).getLocalName().equals("LineTotalAmount"))) {
|
|
||||||
lineTotal = totalChilds.item(totalChildIndex).getTextContent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
BigDecimal prc = new BigDecimal(price.trim());
|
|
||||||
BigDecimal qty = new BigDecimal(quantity.trim());
|
|
||||||
if ((recalcPrice) && (!qty.equals(BigDecimal.ZERO))) {
|
|
||||||
prc = new BigDecimal(lineTotal.trim()).divide(qty, 4, RoundingMode.HALF_UP);
|
|
||||||
}
|
|
||||||
Product p = new Product(name, description, unitCode,
|
|
||||||
vatPercent == null ? null : new BigDecimal(vatPercent.trim()));
|
|
||||||
if (gid != null) {
|
|
||||||
p.addGlobalID(gid);
|
|
||||||
}
|
|
||||||
if (sellerAssignedID != null) {
|
|
||||||
p.setSellerAssignedID(sellerAssignedID);
|
|
||||||
}
|
|
||||||
setProduct(p);
|
|
||||||
setPrice(prc);
|
|
||||||
setQuantity(qty);
|
|
||||||
setBasisQuantity(new BigDecimal(basisQuantity));
|
|
||||||
if (rdocs != null) {
|
|
||||||
for (ReferencedDocument rdoc : rdocs) {
|
|
||||||
addReferencedDocument(rdoc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
addReferencedLineID( referencedLineID );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public Item addReferencedLineID(String s) {
|
public Item addReferencedLineID(String s) {
|
||||||
referencedLineID = s;
|
referencedLineID = s;
|
||||||
@@ -465,6 +312,29 @@ public class Item implements IZUGFeRDExportableItem {
|
|||||||
return referencedDocuments.toArray(new IReferencedDocument[0]);
|
return referencedDocuments.toArray(new IReferencedDocument[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***
|
||||||
|
* adds item level references along with their typecodes and issuerassignedIDs (contract ID, cost centre, ...)
|
||||||
|
* @param doc the ReferencedDocument to add
|
||||||
|
* @return fluent setter
|
||||||
|
*/
|
||||||
|
public Item addAdditionalReference(ReferencedDocument doc) {
|
||||||
|
if (additionalReference == null) {
|
||||||
|
additionalReference = new ArrayList<>();
|
||||||
|
}
|
||||||
|
additionalReference.add(doc);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IReferencedDocument[] getAdditionalReferences() {
|
||||||
|
if (additionalReference == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return additionalReference.toArray(new IReferencedDocument[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* specify a item level delivery period
|
* specify a item level delivery period
|
||||||
* (apart from the document level delivery period, and the document level
|
* (apart from the document level delivery period, and the document level
|
||||||
@@ -485,6 +355,7 @@ public class Item implements IZUGFeRDExportableItem {
|
|||||||
* this will be included in a BillingSpecifiedPeriod element
|
* this will be included in a BillingSpecifiedPeriod element
|
||||||
* @return the beginning of the delivery period
|
* @return the beginning of the delivery period
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public Date getDetailedDeliveryPeriodFrom() {
|
public Date getDetailedDeliveryPeriodFrom() {
|
||||||
return detailedDeliveryPeriodFrom;
|
return detailedDeliveryPeriodFrom;
|
||||||
}
|
}
|
||||||
@@ -494,6 +365,7 @@ public class Item implements IZUGFeRDExportableItem {
|
|||||||
* this will be included in a BillingSpecifiedPeriod element
|
* this will be included in a BillingSpecifiedPeriod element
|
||||||
* @return the end of the delivery period
|
* @return the end of the delivery period
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public Date getDetailedDeliveryPeriodTo() {
|
public Date getDetailedDeliveryPeriodTo() {
|
||||||
return detailedDeliveryPeriodTo;
|
return detailedDeliveryPeriodTo;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package org.mustangproject;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import org.mustangproject.ZUGFeRD.*;
|
import org.mustangproject.ZUGFeRD.*;
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
import org.w3c.dom.NodeList;
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* A organisation, i.e. usually a company
|
* A organisation, i.e. usually a company
|
||||||
@@ -9,35 +11,68 @@ import org.mustangproject.ZUGFeRD.*;
|
|||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
public class LegalOrganisation implements IZUGFeRDLegalOrganisation {
|
public class LegalOrganisation implements IZUGFeRDLegalOrganisation {
|
||||||
|
|
||||||
protected String ID = null;
|
protected SchemedID schemedID = null;
|
||||||
protected String SchemeID = null;
|
protected String tradingBusinessName = null;
|
||||||
|
|
||||||
public LegalOrganisation() {
|
public LegalOrganisation() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public LegalOrganisation(String ID, String scheme) {
|
public LegalOrganisation(String ID, String scheme) {
|
||||||
this.ID=ID;
|
this.schemedID = new SchemedID(scheme, ID);
|
||||||
this.SchemeID=scheme;
|
}
|
||||||
|
|
||||||
|
public LegalOrganisation(SchemedID schemedID, String tradingBusinessName) {
|
||||||
|
this.schemedID = schemedID;
|
||||||
|
this.tradingBusinessName=tradingBusinessName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* XML parsing constructor
|
||||||
|
* @param nodes the nodelist returned e.g. from xpath
|
||||||
|
*/
|
||||||
|
public LegalOrganisation(NodeList nodes) {
|
||||||
|
if (nodes.getLength() > 0) {
|
||||||
|
/*
|
||||||
|
will parse sth like
|
||||||
|
<ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:ID schemeID="0002">4711</ram:ID>
|
||||||
|
<ram:TradingBusinessName>Test GmbH & Co.KG</ram:TradingBusinessName>
|
||||||
|
</ram:SpecifiedLegalOrganization>
|
||||||
|
*/
|
||||||
|
for (int nodeIndex = 0; nodeIndex < nodes.getLength(); nodeIndex++) {
|
||||||
|
Node currentItemNode = nodes.item(nodeIndex);
|
||||||
|
if (currentItemNode.getLocalName() != null) {
|
||||||
|
if (currentItemNode.getLocalName().equals("GlobalID")) {
|
||||||
|
if (currentItemNode.getAttributes().getNamedItem("schemeID") != null) {
|
||||||
|
SchemedID gid = new SchemedID().setScheme(currentItemNode.getAttributes().getNamedItem("schemeID").getNodeValue()).setId(currentItemNode.getTextContent());
|
||||||
|
this.setSchemedID(gid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (currentItemNode.getLocalName().equals("TradingBusinessName")) {
|
||||||
|
setTradingBusinessName(currentItemNode.getFirstChild().getNodeValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getID() {
|
public SchemedID getSchemedID() {
|
||||||
return ID;
|
return this.schemedID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getSchemeID() {
|
public String getTradingBusinessName() {
|
||||||
return SchemeID;
|
return this.tradingBusinessName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LegalOrganisation setID(String id) {
|
public LegalOrganisation setSchemedID(SchemedID schemedID) {
|
||||||
this.ID=id;
|
this.schemedID = schemedID;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LegalOrganisation setSchemeID(String scheme) {
|
public LegalOrganisation setTradingBusinessName(String tradingBusinessName) {
|
||||||
SchemeID=scheme;
|
this.tradingBusinessName = tradingBusinessName;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,34 @@
|
|||||||
package org.mustangproject;
|
package org.mustangproject;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
import org.mustangproject.ZUGFeRD.IDesignatedProductClassification;
|
||||||
import org.mustangproject.ZUGFeRD.IZUGFeRDExportableProduct;
|
import org.mustangproject.ZUGFeRD.IZUGFeRDExportableProduct;
|
||||||
|
import org.mustangproject.util.NodeMap;
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* describes a product, good or service used in an invoice item line
|
* describes a product, good or service used in an invoice item line
|
||||||
*/
|
*/
|
||||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||||
public class Product implements IZUGFeRDExportableProduct {
|
public class Product implements IZUGFeRDExportableProduct {
|
||||||
protected String unit, name, description, sellerAssignedID, buyerAssignedID;
|
protected String unit, name, sellerAssignedID, buyerAssignedID;
|
||||||
|
protected String description="";
|
||||||
|
protected String taxExemptionReason=null;
|
||||||
|
protected String taxCategoryCode=null;
|
||||||
protected BigDecimal VATPercent;
|
protected BigDecimal VATPercent;
|
||||||
protected boolean isReverseCharge = false;
|
protected boolean isReverseCharge = false;
|
||||||
protected boolean isIntraCommunitySupply = false;
|
protected boolean isIntraCommunitySupply = false;
|
||||||
protected SchemedID globalId = null;
|
protected SchemedID globalId = null;
|
||||||
protected String countryOfOrigin = null;
|
protected String countryOfOrigin = null;
|
||||||
protected HashMap<String, String> attributes = null;
|
protected HashMap<String, String> attributes = new HashMap<>();
|
||||||
|
protected List<IDesignatedProductClassification> classifications = new ArrayList<>();
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* default constructor
|
* default constructor
|
||||||
@@ -33,6 +44,42 @@ public class Product implements IZUGFeRDExportableProduct {
|
|||||||
this.VATPercent = VATPercent;
|
this.VATPercent = VATPercent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Product(Node node) {
|
||||||
|
NodeMap nodeMap = new NodeMap(node);
|
||||||
|
|
||||||
|
nodeMap.getNode("GlobalID").ifPresent(idNode -> {
|
||||||
|
if (idNode.hasAttributes()
|
||||||
|
&& idNode.getAttributes().getNamedItem("schemeID") != null) {
|
||||||
|
globalId = new SchemedID()
|
||||||
|
.setScheme(idNode.getAttributes().getNamedItem("schemeID").getNodeValue())
|
||||||
|
.setId(idNode.getTextContent());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
nodeMap.getAsString("SellerAssignedID").ifPresent(this::setSellerAssignedID);
|
||||||
|
nodeMap.getAsString("BuyerAssignedID").ifPresent(this::setBuyerAssignedID);
|
||||||
|
nodeMap.getAsString("Name").ifPresent(this::setName);
|
||||||
|
nodeMap.getAsString("Description").ifPresent(this::setDescription);
|
||||||
|
|
||||||
|
nodeMap.getAsNodeMap("ApplicableProductCharacteristic").ifPresent(apcNodes -> {
|
||||||
|
String key = apcNodes.getAsStringOrNull("Description");
|
||||||
|
String value = apcNodes.getAsStringOrNull("Value");
|
||||||
|
if (key != null && value != null) {
|
||||||
|
if (attributes == null) {
|
||||||
|
attributes = new HashMap<>();
|
||||||
|
}
|
||||||
|
attributes.put(key, value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
nodeMap.getAsNodeMap("DesignatedProductClassification").ifPresent(dpcNodes -> {
|
||||||
|
String className = dpcNodes.getAsStringOrNull("ClassName");
|
||||||
|
dpcNodes.getNode("ClassCode").map(ClassCode::fromNode).ifPresent(classCode ->
|
||||||
|
classifications.add(new DesignatedProductClassification(classCode, className)));
|
||||||
|
});
|
||||||
|
|
||||||
|
nodeMap.getAsString("OriginTradeCounty").ifPresent(this::setCountryOfOrigin);
|
||||||
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* empty constructor
|
* empty constructor
|
||||||
@@ -65,6 +112,47 @@ public class Product implements IZUGFeRDExportableProduct {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @return e.g. intra-commnunity supply or small business
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getTaxExemptionReason() {
|
||||||
|
return taxExemptionReason;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @param taxExemptionReasonText String e.g. Kleinunternehmer gemäß §19 UStG https://github.com/ZUGFeRD/mustangproject/issues/463
|
||||||
|
* @return fluent setter
|
||||||
|
*/
|
||||||
|
public Product setTaxExemptionReason(String taxExemptionReasonText) {
|
||||||
|
taxExemptionReason = taxExemptionReasonText;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @return e.g. S (normal tax), Z=zero rated, E (e.g. small business) or K (intrra community supply)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getTaxCategoryCode() {
|
||||||
|
if (taxCategoryCode == null) {
|
||||||
|
return IZUGFeRDExportableProduct.super.getTaxCategoryCode();
|
||||||
|
}
|
||||||
|
return taxCategoryCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @param code e.g. S (normal tax), Z=zero rated, E (e.g. small business) or K (intrra community supply) see also https://github.com/ZUGFeRD/mustangproject/issues/463
|
||||||
|
* @return fluent setter
|
||||||
|
*/
|
||||||
|
public Product setTaxCategoryCode(String code) {
|
||||||
|
taxCategoryCode = code;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getSellerAssignedID() {
|
public String getSellerAssignedID() {
|
||||||
@@ -124,6 +212,8 @@ public class Product implements IZUGFeRDExportableProduct {
|
|||||||
public Product setIntraCommunitySupply() {
|
public Product setIntraCommunitySupply() {
|
||||||
isIntraCommunitySupply = true;
|
isIntraCommunitySupply = true;
|
||||||
setVATPercent(BigDecimal.ZERO);
|
setVATPercent(BigDecimal.ZERO);
|
||||||
|
setTaxExemptionReason("Intra-community supply");
|
||||||
|
setTaxCategoryCode("K");
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,19 +291,57 @@ public class Product implements IZUGFeRDExportableProduct {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HashMap<String, String> getAttributes() {
|
public HashMap<String, String> getAttributes() {
|
||||||
|
if (attributes.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
return this.attributes;
|
return this.attributes;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Product setAttributes(HashMap<String, String> attributes) {
|
public Product setAttributes(Map<String, String> attributes) {
|
||||||
this.attributes = attributes;
|
this.attributes.clear();
|
||||||
|
if (attributes != null) {
|
||||||
|
this.attributes.putAll(attributes);
|
||||||
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Product addAttribute(String name, String value ) {
|
public Product addAttribute(String name, String value ) {
|
||||||
if ( this.attributes == null ) {
|
|
||||||
this.attributes = new HashMap<>();
|
|
||||||
}
|
|
||||||
this.attributes.put(name, value);
|
this.attributes.put(name, value);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IDesignatedProductClassification[] getClassifications() {
|
||||||
|
if (classifications.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return classifications.toArray(new IDesignatedProductClassification[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace the current set of {@link IDesignatedProductClassification}s with a new set
|
||||||
|
*
|
||||||
|
* @param classifications the new set of classifications
|
||||||
|
* @return the modified object
|
||||||
|
*/
|
||||||
|
public Product setClassifications(IDesignatedProductClassification[] classifications) {
|
||||||
|
this.classifications.clear();
|
||||||
|
if (classifications != null) {
|
||||||
|
this.classifications.addAll(Arrays.asList(classifications));
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a {@link IDesignatedProductClassification} classification
|
||||||
|
*
|
||||||
|
* @param classification the classification
|
||||||
|
* @return the modified object
|
||||||
|
*/
|
||||||
|
public Product addClassification(IDesignatedProductClassification classification) {
|
||||||
|
this.classifications.add(classification);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package org.mustangproject;
|
package org.mustangproject;
|
||||||
|
|
||||||
import org.mustangproject.ZUGFeRD.IReferencedDocument;
|
import org.mustangproject.ZUGFeRD.IReferencedDocument;
|
||||||
|
import org.mustangproject.util.NodeMap;
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
|
||||||
public class ReferencedDocument implements IReferencedDocument {
|
public class ReferencedDocument implements IReferencedDocument {
|
||||||
|
|
||||||
@@ -58,4 +60,14 @@ public class ReferencedDocument implements IReferencedDocument {
|
|||||||
public String getReferenceTypeCode() {
|
public String getReferenceTypeCode() {
|
||||||
return referenceTypeCode;
|
return referenceTypeCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ReferencedDocument fromNode(Node node) {
|
||||||
|
if (!node.hasChildNodes()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
NodeMap nodes = new NodeMap(node);
|
||||||
|
return new ReferencedDocument(nodes.getAsStringOrNull("IssuerAssignedID"),
|
||||||
|
nodes.getAsStringOrNull("TypeCode"),
|
||||||
|
nodes.getAsStringOrNull("ReferenceTypeCode"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,4 +31,9 @@ public class SchemedID {
|
|||||||
setId(id);
|
setId(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "SchemedID{scheme='" + scheme + "', id='" + id + "'}";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ import org.mustangproject.ZUGFeRD.IZUGFeRDExportableContact;
|
|||||||
import org.mustangproject.ZUGFeRD.IZUGFeRDExportableTradeParty;
|
import org.mustangproject.ZUGFeRD.IZUGFeRDExportableTradeParty;
|
||||||
import org.mustangproject.ZUGFeRD.IZUGFeRDLegalOrganisation;
|
import org.mustangproject.ZUGFeRD.IZUGFeRDLegalOrganisation;
|
||||||
import org.mustangproject.ZUGFeRD.IZUGFeRDTradeSettlement;
|
import org.mustangproject.ZUGFeRD.IZUGFeRDTradeSettlement;
|
||||||
import org.mustangproject.ZUGFeRD.IZUGFeRDTradeSettlementDebit;
|
|
||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
import org.w3c.dom.NodeList;
|
import org.w3c.dom.NodeList;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
|
||||||
/***
|
/***
|
||||||
@@ -24,10 +24,11 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
protected String name, zip, street, location, country;
|
protected String name, zip, street, location, country;
|
||||||
protected String taxID = null, vatID = null;
|
protected String taxID = null, vatID = null;
|
||||||
protected String ID = null;
|
protected String ID = null;
|
||||||
|
protected String description = null;
|
||||||
protected String additionalAddress = null;
|
protected String additionalAddress = null;
|
||||||
protected String additionalAddressExtension = null;
|
protected String additionalAddressExtension = null;
|
||||||
protected List<BankDetails> bankDetails = new ArrayList<>();
|
protected List<BankDetails> bankDetails = new ArrayList<>();
|
||||||
protected List<IZUGFeRDTradeSettlementDebit> debitDetails = new ArrayList<>();
|
protected List<DirectDebit> debitDetails = new ArrayList<>();
|
||||||
protected Contact contact = null;
|
protected Contact contact = null;
|
||||||
protected LegalOrganisation legalOrg = null;
|
protected LegalOrganisation legalOrg = null;
|
||||||
protected SchemedID globalId = null;
|
protected SchemedID globalId = null;
|
||||||
@@ -67,14 +68,14 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
Node currentItemNode = nodes.item(nodeIndex);
|
Node currentItemNode = nodes.item(nodeIndex);
|
||||||
|
|
||||||
if (currentItemNode.getLocalName() != null) {
|
if (currentItemNode.getLocalName() != null) {
|
||||||
String debcurrentChild = currentItemNode.getLocalName();
|
String currentUBLChild = currentItemNode.getLocalName();
|
||||||
if (debcurrentChild.equals("Party")) {
|
if (currentUBLChild.equals("Party")) {
|
||||||
|
|
||||||
NodeList party = currentItemNode.getChildNodes();
|
NodeList party = currentItemNode.getChildNodes();
|
||||||
for (int partyIndex = 0; partyIndex < party.getLength(); partyIndex++) {
|
for (int partyIndex = 0; partyIndex < party.getLength(); partyIndex++) {
|
||||||
if (party.item(partyIndex).getLocalName() != null) {
|
if (party.item(partyIndex).getLocalName() != null) {
|
||||||
String debCN = party.item(partyIndex).getLocalName();
|
String currentTopElementName = party.item(partyIndex).getLocalName();
|
||||||
if (debCN.equals("PartyName")) {
|
if (currentTopElementName.equals("PartyName")) {
|
||||||
|
|
||||||
NodeList partyName = party.item(partyIndex).getChildNodes();
|
NodeList partyName = party.item(partyIndex).getChildNodes();
|
||||||
for (int partyNameIndex = 0; partyNameIndex < partyName.getLength(); partyNameIndex++) {
|
for (int partyNameIndex = 0; partyNameIndex < partyName.getLength(); partyNameIndex++) {
|
||||||
@@ -87,7 +88,20 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (debCN.equals("PostalAddress")) {
|
|
||||||
|
// UBL only: formally it can have a name as well but BT27 party name *should* be stored in
|
||||||
|
// so overwrite if one exists
|
||||||
|
if (currentTopElementName.equals("PartyLegalEntity")) {
|
||||||
|
NodeList legal = party.item(partyIndex).getChildNodes();
|
||||||
|
for (int legalChildIndex = 0; legalChildIndex < legal.getLength(); legalChildIndex++) {
|
||||||
|
if (legal.item(legalChildIndex).getLocalName() != null) {
|
||||||
|
if (legal.item(legalChildIndex).getLocalName().equals("RegistrationName")) {
|
||||||
|
setName(legal.item(legalChildIndex).getTextContent());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (currentTopElementName.equals("PostalAddress")) {
|
||||||
|
|
||||||
NodeList postal = party.item(partyIndex).getChildNodes();
|
NodeList postal = party.item(partyIndex).getChildNodes();
|
||||||
for (int postalChildIndex = 0; postalChildIndex < postal.getLength(); postalChildIndex++) {
|
for (int postalChildIndex = 0; postalChildIndex < postal.getLength(); postalChildIndex++) {
|
||||||
@@ -145,7 +159,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debCN.equals("Contact")) {
|
if (currentTopElementName.equals("Contact")) {
|
||||||
NodeList contact = party.item(partyIndex).getChildNodes();
|
NodeList contact = party.item(partyIndex).getChildNodes();
|
||||||
setContact(new Contact(contact));
|
setContact(new Contact(contact));
|
||||||
|
|
||||||
@@ -156,19 +170,19 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debcurrentChild.equals("GlobalID")) {
|
if (currentUBLChild.equals("GlobalID")) {
|
||||||
if (nodes.item(nodeIndex).getAttributes().getNamedItem("schemeID") != null) {
|
if (nodes.item(nodeIndex).getAttributes().getNamedItem("schemeID") != null) {
|
||||||
SchemedID gid = new SchemedID().setScheme(nodes.item(nodeIndex).getAttributes().getNamedItem("schemeID").getNodeValue()).setId(nodes.item(nodeIndex).getTextContent());
|
SchemedID gid = new SchemedID().setScheme(nodes.item(nodeIndex).getAttributes().getNamedItem("schemeID").getNodeValue()).setId(nodes.item(nodeIndex).getTextContent());
|
||||||
addGlobalID(gid);
|
addGlobalID(gid);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (debcurrentChild.equals("DefinedTradeContact")) {
|
if (currentUBLChild.equals("DefinedTradeContact")) {
|
||||||
NodeList contact = nodes.item(nodeIndex).getChildNodes();
|
NodeList contact = nodes.item(nodeIndex).getChildNodes();
|
||||||
setContact(new Contact(contact));
|
setContact(new Contact(contact));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debcurrentChild.equals("PostalTradeAddress")) {
|
if (currentUBLChild.equals("PostalTradeAddress")) {
|
||||||
NodeList postal = nodes.item(nodeIndex).getChildNodes();
|
NodeList postal = nodes.item(nodeIndex).getChildNodes();
|
||||||
for (int postalChildIndex = 0; postalChildIndex < postal.getLength(); postalChildIndex++) {
|
for (int postalChildIndex = 0; postalChildIndex < postal.getLength(); postalChildIndex++) {
|
||||||
if (postal.item(postalChildIndex).getLocalName() != null) {
|
if (postal.item(postalChildIndex).getLocalName() != null) {
|
||||||
@@ -196,7 +210,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (debcurrentChild.equals("SpecifiedTaxRegistration")) {
|
if (currentUBLChild.equals("SpecifiedTaxRegistration")) {
|
||||||
NodeList taxChilds = nodes.item(nodeIndex).getChildNodes();
|
NodeList taxChilds = nodes.item(nodeIndex).getChildNodes();
|
||||||
for (int taxChildIndex = 0; taxChildIndex < taxChilds.getLength(); taxChildIndex++) {
|
for (int taxChildIndex = 0; taxChildIndex < taxChilds.getLength(); taxChildIndex++) {
|
||||||
if (taxChilds.item(taxChildIndex).getLocalName() != null) {
|
if (taxChilds.item(taxChildIndex).getLocalName() != null) {
|
||||||
@@ -204,12 +218,10 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
if (taxChilds.item(taxChildIndex).getAttributes().getNamedItem("schemeID") != null) {
|
if (taxChilds.item(taxChildIndex).getAttributes().getNamedItem("schemeID") != null) {
|
||||||
Node firstChild = taxChilds.item(taxChildIndex).getFirstChild();
|
Node firstChild = taxChilds.item(taxChildIndex).getFirstChild();
|
||||||
if (firstChild != null) {
|
if (firstChild != null) {
|
||||||
if (taxChilds.item(taxChildIndex).getAttributes()
|
if (taxChilds.item(taxChildIndex).getAttributes().getNamedItem("schemeID").getNodeValue().equals("VA")) {
|
||||||
.getNamedItem("schemeID").getNodeValue().equals("VA")) {
|
|
||||||
setVATID(firstChild.getNodeValue());
|
setVATID(firstChild.getNodeValue());
|
||||||
}
|
}
|
||||||
if (taxChilds.item(taxChildIndex).getAttributes()
|
if (taxChilds.item(taxChildIndex).getAttributes().getNamedItem("schemeID").getNodeValue().equals("FC")) {
|
||||||
.getNamedItem("schemeID").getNodeValue().equals("FC")) {
|
|
||||||
setTaxID(firstChild.getNodeValue());
|
setTaxID(firstChild.getNodeValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -289,8 +301,8 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
|
|
||||||
for (int nodeIndex = 0; nodeIndex < nodes.getLength(); nodeIndex++) {
|
for (int nodeIndex = 0; nodeIndex < nodes.getLength(); nodeIndex++) {
|
||||||
//nodes.item(i).getTextContent())) {
|
//nodes.item(i).getTextContent())) {
|
||||||
String debLN = nodes.item(nodeIndex).getLocalName();
|
String topElementName = nodes.item(nodeIndex).getLocalName();
|
||||||
if (debLN.equals("Party")) {
|
if (topElementName.equals("Party")) {
|
||||||
// take one step back and parse from top
|
// take one step back and parse from top
|
||||||
parseFromUBL(nodes);
|
parseFromUBL(nodes);
|
||||||
return;
|
return;
|
||||||
@@ -299,15 +311,26 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
NodeList itemChilds = currentItemNode.getChildNodes();
|
NodeList itemChilds = currentItemNode.getChildNodes();
|
||||||
for (int itemChildIndex = 0; itemChildIndex < itemChilds.getLength(); itemChildIndex++) {
|
for (int itemChildIndex = 0; itemChildIndex < itemChilds.getLength(); itemChildIndex++) {
|
||||||
if (itemChilds.item(itemChildIndex).getLocalName() != null) {
|
if (itemChilds.item(itemChildIndex).getLocalName() != null) {
|
||||||
|
if (itemChilds.item(itemChildIndex).getLocalName().equals("ID")) {
|
||||||
|
setID(itemChilds.item(itemChildIndex).getTextContent());
|
||||||
|
}
|
||||||
if (itemChilds.item(itemChildIndex).getLocalName().equals("Name")) {
|
if (itemChilds.item(itemChildIndex).getLocalName().equals("Name")) {
|
||||||
setName(itemChilds.item(itemChildIndex).getTextContent());
|
setName(itemChilds.item(itemChildIndex).getTextContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (itemChilds.item(itemChildIndex).getLocalName().equals("Description")) {
|
||||||
|
setDescription(itemChilds.item(itemChildIndex).getTextContent());
|
||||||
|
}
|
||||||
if (itemChilds.item(itemChildIndex).getLocalName().equals("GlobalID")) {
|
if (itemChilds.item(itemChildIndex).getLocalName().equals("GlobalID")) {
|
||||||
if (itemChilds.item(itemChildIndex).getAttributes().getNamedItem("schemeID") != null) {
|
if (itemChilds.item(itemChildIndex).getAttributes().getNamedItem("schemeID") != null) {
|
||||||
SchemedID gid = new SchemedID().setScheme(itemChilds.item(itemChildIndex).getAttributes().getNamedItem("schemeID").getNodeValue()).setId(itemChilds.item(itemChildIndex).getTextContent());
|
SchemedID gid = new SchemedID().setScheme(itemChilds.item(itemChildIndex).getAttributes().getNamedItem("schemeID").getNodeValue()).setId(itemChilds.item(itemChildIndex).getTextContent());
|
||||||
addGlobalID(gid);
|
addGlobalID(gid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (itemChilds.item(itemChildIndex).getLocalName().equals("SpecifiedLegalOrganization")) {
|
||||||
|
NodeList organization = itemChilds.item(itemChildIndex).getChildNodes();
|
||||||
|
setLegalOrganisation(new LegalOrganisation(organization));
|
||||||
|
}
|
||||||
if (itemChilds.item(itemChildIndex).getLocalName().equals("DefinedTradeContact")) {
|
if (itemChilds.item(itemChildIndex).getLocalName().equals("DefinedTradeContact")) {
|
||||||
NodeList contact = itemChilds.item(itemChildIndex).getChildNodes();
|
NodeList contact = itemChilds.item(itemChildIndex).getChildNodes();
|
||||||
setContact(new Contact(contact));
|
setContact(new Contact(contact));
|
||||||
@@ -359,12 +382,10 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
if (taxChilds.item(taxChildIndex).getAttributes().getNamedItem("schemeID") != null) {
|
if (taxChilds.item(taxChildIndex).getAttributes().getNamedItem("schemeID") != null) {
|
||||||
Node firstChild = taxChilds.item(taxChildIndex).getFirstChild();
|
Node firstChild = taxChilds.item(taxChildIndex).getFirstChild();
|
||||||
if (firstChild != null) {
|
if (firstChild != null) {
|
||||||
if (taxChilds.item(taxChildIndex).getAttributes()
|
if (taxChilds.item(taxChildIndex).getAttributes().getNamedItem("schemeID").getNodeValue().equals("VA")) {
|
||||||
.getNamedItem("schemeID").getNodeValue().equals("VA")) {
|
|
||||||
setVATID(firstChild.getNodeValue());
|
setVATID(firstChild.getNodeValue());
|
||||||
}
|
}
|
||||||
if (taxChilds.item(taxChildIndex).getAttributes()
|
if (taxChilds.item(taxChildIndex).getAttributes().getNamedItem("schemeID").getNodeValue().equals("FC")) {
|
||||||
.getNamedItem("schemeID").getNodeValue().equals("FC")) {
|
|
||||||
setTaxID(firstChild.getNodeValue());
|
setTaxID(firstChild.getNodeValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -404,6 +425,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@JsonIgnore
|
||||||
public String getUriUniversalCommunicationID() {
|
public String getUriUniversalCommunicationID() {
|
||||||
if (uriUniversalCommunicationId != null) {
|
if (uriUniversalCommunicationId != null) {
|
||||||
return uriUniversalCommunicationId.getID();
|
return uriUniversalCommunicationId.getID();
|
||||||
@@ -413,6 +435,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@JsonIgnore
|
||||||
public String getUriUniversalCommunicationIDScheme() {
|
public String getUriUniversalCommunicationIDScheme() {
|
||||||
if (uriUniversalCommunicationId != null) {
|
if (uriUniversalCommunicationId != null) {
|
||||||
return uriUniversalCommunicationId.getScheme();
|
return uriUniversalCommunicationId.getScheme();
|
||||||
@@ -483,7 +506,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
* @param debitDetail e.g. containing IBAN and mandate
|
* @param debitDetail e.g. containing IBAN and mandate
|
||||||
* @return fluent setter
|
* @return fluent setter
|
||||||
*/
|
*/
|
||||||
public TradeParty addDebitDetails(IZUGFeRDTradeSettlementDebit debitDetail) {
|
public TradeParty addDebitDetails(DirectDebit debitDetail) {
|
||||||
debitDetails.add(debitDetail);
|
debitDetails.add(debitDetail);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -558,6 +581,26 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @return String the description, e.g. if it's a vat exempt company
|
||||||
|
*/
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***
|
||||||
|
* required, usually done in the constructor: the complete name of the organisation
|
||||||
|
* @param description human readable description
|
||||||
|
* @return fluent setter
|
||||||
|
*/
|
||||||
|
public TradeParty setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public String getZIP() {
|
public String getZIP() {
|
||||||
return zip;
|
return zip;
|
||||||
}
|
}
|
||||||
@@ -631,9 +674,7 @@ public class TradeParty implements IZUGFeRDExportableTradeParty {
|
|||||||
if (bankDetails.isEmpty() && debitDetails.isEmpty()) {
|
if (bankDetails.isEmpty() && debitDetails.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
List<IZUGFeRDTradeSettlement> tradeSettlements = Stream.concat(bankDetails.stream(), debitDetails.stream())
|
List<IZUGFeRDTradeSettlement> tradeSettlements = Stream.concat(bankDetails.stream(), debitDetails.stream()).map(IZUGFeRDTradeSettlement.class::cast).collect(Collectors.toList());
|
||||||
.map(IZUGFeRDTradeSettlement.class::cast)
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
IZUGFeRDTradeSettlement[] result = new IZUGFeRDTradeSettlement[tradeSettlements.size()];
|
IZUGFeRDTradeSettlement[] result = new IZUGFeRDTradeSettlement[tradeSettlements.size()];
|
||||||
for (int i = 0; i < tradeSettlements.size(); i++) {
|
for (int i = 0; i < tradeSettlements.size(); i++) {
|
||||||
|
|||||||
@@ -4,15 +4,9 @@ import java.io.IOException;
|
|||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.util.AbstractList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.RandomAccess;
|
|
||||||
|
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.dom4j.io.XMLWriter;
|
import org.dom4j.io.XMLWriter;
|
||||||
import org.w3c.dom.Node;
|
|
||||||
import org.w3c.dom.NodeList;
|
|
||||||
|
|
||||||
public class XMLTools extends XMLWriter {
|
public class XMLTools extends XMLWriter {
|
||||||
@Override
|
@Override
|
||||||
@@ -23,36 +17,11 @@ public class XMLTools extends XMLWriter {
|
|||||||
@Override
|
@Override
|
||||||
public String escapeElementEntities(String s) {
|
public String escapeElementEntities(String s) {
|
||||||
return super.escapeElementEntities(s);
|
return super.escapeElementEntities(s);
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<Node> asList(NodeList n) {
|
|
||||||
return n.getLength() == 0 ?
|
|
||||||
Collections.<Node>emptyList() : new NodeListWrapper(n);
|
|
||||||
}
|
|
||||||
|
|
||||||
static final class NodeListWrapper extends AbstractList<Node>
|
|
||||||
implements RandomAccess {
|
|
||||||
private final NodeList list;
|
|
||||||
|
|
||||||
NodeListWrapper(NodeList l) {
|
|
||||||
list = l;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Node get(int index) {
|
|
||||||
return list.item(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int size() {
|
|
||||||
return list.getLength();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String nDigitFormat(BigDecimal value, int scale) {
|
public static String nDigitFormat(BigDecimal value, int scale) {
|
||||||
/*
|
/*
|
||||||
* I needed 123,45, locale independent.I tried
|
* I needed 123.45, locale independent.I tried
|
||||||
* NumberFormat.getCurrencyInstance().format( 12345.6789 ); but that is locale
|
* NumberFormat.getCurrencyInstance().format( 12345.6789 ); but that is locale
|
||||||
* specific.I also tried DecimalFormat df = new DecimalFormat( "0,00" );
|
* specific.I also tried DecimalFormat df = new DecimalFormat( "0,00" );
|
||||||
* df.setDecimalSeparatorAlwaysShown(true); df.setGroupingUsed(false);
|
* df.setDecimalSeparatorAlwaysShown(true); df.setGroupingUsed(false);
|
||||||
@@ -68,6 +37,26 @@ public class XMLTools extends XMLWriter {
|
|||||||
*/
|
*/
|
||||||
return value.setScale(scale, RoundingMode.HALF_UP).toPlainString();
|
return value.setScale(scale, RoundingMode.HALF_UP).toPlainString();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* formats a number so that at least minDecimals are displayed but at the maximum maxDecimals are there, i.e.
|
||||||
|
* cuts potential 0s off the end until minDecimals
|
||||||
|
* @param value
|
||||||
|
* @param maxDecimals number of maximal scale
|
||||||
|
* @param minDecimals number of minimal scale
|
||||||
|
* @return value as String with decimals in the specified range
|
||||||
|
*/
|
||||||
|
public static String nDigitFormatDecimalRange(BigDecimal value, int maxDecimals, int minDecimals) {
|
||||||
|
if ((maxDecimals<minDecimals)||(maxDecimals<0)||(minDecimals<0)) {
|
||||||
|
throw new IllegalArgumentException("Invalid scale range provided");
|
||||||
|
}
|
||||||
|
int curDecimals=maxDecimals;
|
||||||
|
while ( (curDecimals>minDecimals) && (value.setScale(curDecimals, RoundingMode.HALF_UP).compareTo(value.setScale(curDecimals-1, RoundingMode.HALF_UP))==0)) {
|
||||||
|
curDecimals--;
|
||||||
|
}
|
||||||
|
return value.setScale(curDecimals, RoundingMode.HALF_UP).toPlainString();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
/**
|
||||||
|
* *********************************************************************
|
||||||
|
* <p>
|
||||||
|
* Copyright (c) 2024 Jan N. Klug
|
||||||
|
* <p>
|
||||||
|
* Use is subject to license terms.
|
||||||
|
* <p>
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
* use this file except in compliance with the License. You may obtain a copy
|
||||||
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
||||||
|
* <p>
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* <p>
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
* <p>
|
||||||
|
* **********************************************************************
|
||||||
|
*/
|
||||||
|
package org.mustangproject.ZUGFeRD;
|
||||||
|
|
||||||
|
import org.mustangproject.ClassCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A product classification that allows to describe a product. Classification codes are schemed by the available systems in UNTDID 7143.
|
||||||
|
*/
|
||||||
|
public interface IDesignatedProductClassification {
|
||||||
|
/**
|
||||||
|
* Classification code
|
||||||
|
*
|
||||||
|
* @return the classification code
|
||||||
|
*/
|
||||||
|
ClassCode getClassCode();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* an optional, human-readable description of the classifcation code
|
||||||
|
*
|
||||||
|
* @return the name or {@code null} if not set
|
||||||
|
*/
|
||||||
|
default String getClassName() { return null; }
|
||||||
|
}
|
||||||
@@ -450,11 +450,19 @@ public interface IExportableTransaction {
|
|||||||
*
|
*
|
||||||
* @return the IZUGFeRDExportableTradeParty delivery address
|
* @return the IZUGFeRDExportableTradeParty delivery address
|
||||||
*/
|
*/
|
||||||
|
|
||||||
default IZUGFeRDExportableTradeParty getDeliveryAddress() {
|
default IZUGFeRDExportableTradeParty getDeliveryAddress() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* payee / payment receiver, if different from seller, ram:Payee (only supported for zf2)
|
||||||
|
*
|
||||||
|
* @return the IZUGFeRDExportableTradeParty payment receiver, if different from sellver
|
||||||
|
*/
|
||||||
|
default IZUGFeRDExportableTradeParty getPayee() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* specifies the document level delivery period, will be included in a
|
* specifies the document level delivery period, will be included in a
|
||||||
* BillingSpecifiedPeriod element
|
* BillingSpecifiedPeriod element
|
||||||
@@ -522,4 +530,7 @@ public interface IExportableTransaction {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default String getCreditorReferenceID() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,12 @@ public interface IZUGFeRDAllowanceCharge {
|
|||||||
*/
|
*/
|
||||||
String getReason();
|
String getReason();
|
||||||
|
|
||||||
|
/***
|
||||||
|
* get the code for the allowance/charge
|
||||||
|
* @return the code
|
||||||
|
*/
|
||||||
|
String getReasonCode();
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* get the applicable tax percentage for the allowance/charge
|
* get the applicable tax percentage for the allowance/charge
|
||||||
* @return the percentage
|
* @return the percentage
|
||||||
|
|||||||
@@ -92,12 +92,22 @@ public interface IZUGFeRDExportableItem extends IAbsoluteValueProvider{
|
|||||||
|
|
||||||
/***
|
/***
|
||||||
* the ID of an additionally referenced document for this item
|
* the ID of an additionally referenced document for this item
|
||||||
|
* @deprecated use {@link #getAdditionalReferences()} instead.
|
||||||
* @return the id as string
|
* @return the id as string
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
default String getAdditionalReferencedDocumentID() {
|
default String getAdditionalReferencedDocumentID() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* allows to specify multiple references (billing information)
|
||||||
|
* @return the referenced documents
|
||||||
|
*/
|
||||||
|
default IReferencedDocument[] getAdditionalReferences() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* allows to specify multiple(!) referenced documents along with e.g. their typecodes
|
* allows to specify multiple(!) referenced documents along with e.g. their typecodes
|
||||||
|
|||||||
@@ -165,4 +165,11 @@ public interface IZUGFeRDExportableProduct {
|
|||||||
default HashMap<String, String> getAttributes() {
|
default HashMap<String, String> getAttributes() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Detailed information about the product
|
||||||
|
*
|
||||||
|
* @return an array containing the product classifications or {@code null} if not set
|
||||||
|
*/
|
||||||
|
default IDesignatedProductClassification[] getClassifications() { return null; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,12 +112,17 @@ public interface IZUGFeRDExportableTradeParty {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* First and last name of the recipient
|
* e.g. first and last name of the owner
|
||||||
*
|
*
|
||||||
* @return First and last name of the recipient
|
* @return full name of the party
|
||||||
*/
|
*/
|
||||||
String getName();
|
String getName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return description, e.g. if it's a small company
|
||||||
|
*/
|
||||||
|
default String getDescription() { return null; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Postal code of the recipient
|
* Postal code of the recipient
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import java.io.IOException;
|
|||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
import jakarta.activation.DataSource;
|
import jakarta.activation.DataSource;
|
||||||
|
import org.mustangproject.FileAttachment;
|
||||||
|
|
||||||
public interface IZUGFeRDExporter extends Closeable, IExporter {
|
public interface IZUGFeRDExporter extends Closeable, IExporter {
|
||||||
/**
|
/**
|
||||||
@@ -64,6 +65,8 @@ public interface IZUGFeRDExporter extends Closeable, IExporter {
|
|||||||
public String getNamespaceForVersion(int ver);
|
public String getNamespaceForVersion(int ver);
|
||||||
public String getPrefixForVersion(int ver) ;
|
public String getPrefixForVersion(int ver) ;
|
||||||
public IZUGFeRDExporter disableAutoClose(boolean disableAutoClose);
|
public IZUGFeRDExporter disableAutoClose(boolean disableAutoClose);
|
||||||
|
public void attachFile(FileAttachment file);
|
||||||
|
public void attachFile(String filename, byte[] data, String mimetype, String relation);
|
||||||
public IXMLProvider getProvider();
|
public IXMLProvider getProvider();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,17 +18,19 @@
|
|||||||
*********************************************************************** */
|
*********************************************************************** */
|
||||||
package org.mustangproject.ZUGFeRD;
|
package org.mustangproject.ZUGFeRD;
|
||||||
|
|
||||||
public interface IZUGFeRDLegalOrganisation {
|
import org.mustangproject.SchemedID;
|
||||||
|
|
||||||
/***
|
public interface IZUGFeRDLegalOrganisation {
|
||||||
*
|
|
||||||
* @return the ID of the legal organisation
|
|
||||||
*/
|
|
||||||
public String getID();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @return the scheme attribute of the legal organization=the type of the identification, e.g. 0002=Siren
|
* @return the scheme attribute of the legal organization=the type of the identification, e.g. 0002=Siren, and its value
|
||||||
*/
|
*/
|
||||||
public String getSchemeID();
|
public SchemedID getSchemedID();
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @return the TradingBusinessName of the legal organisation
|
||||||
|
*/
|
||||||
|
public String getTradingBusinessName();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,12 +18,15 @@
|
|||||||
*********************************************************************** */
|
*********************************************************************** */
|
||||||
package org.mustangproject.ZUGFeRD;
|
package org.mustangproject.ZUGFeRD;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
|
||||||
public interface IZUGFeRDTradeSettlement {
|
public interface IZUGFeRDTradeSettlement {
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* gets the applicableHeaderTradeSettlement
|
* gets the applicableHeaderTradeSettlement
|
||||||
* @return zf2 xml
|
* @return zf2 xml
|
||||||
*/
|
*/
|
||||||
|
@JsonIgnore
|
||||||
String getSettlementXML();
|
String getSettlementXML();
|
||||||
|
|
||||||
|
|
||||||
@@ -31,6 +34,7 @@ public interface IZUGFeRDTradeSettlement {
|
|||||||
* gets the applicableHeaderTradePayment
|
* gets the applicableHeaderTradePayment
|
||||||
* @return zf2 xml
|
* @return zf2 xml
|
||||||
*/
|
*/
|
||||||
|
@JsonIgnore
|
||||||
default String getPaymentXML() {
|
default String getPaymentXML() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,15 +22,11 @@ import org.mustangproject.XMLTools;
|
|||||||
|
|
||||||
public interface IZUGFeRDTradeSettlementDebit extends IZUGFeRDTradeSettlement {
|
public interface IZUGFeRDTradeSettlementDebit extends IZUGFeRDTradeSettlement {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default String getSettlementXML() {
|
default String getSettlementXML() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
String xml = "<ram:SpecifiedTradeSettlementPaymentMeans>"
|
String xml = "<ram:SpecifiedTradeSettlementPaymentMeans>"
|
||||||
+ "<ram:TypeCode>59</ram:TypeCode>"
|
+ "<ram:TypeCode>59</ram:TypeCode>"
|
||||||
|
+ "<ram:Information>SEPA direct debit</ram:Information>"
|
||||||
+ "<ram:PayerPartyDebtorFinancialAccount>"
|
+ "<ram:PayerPartyDebtorFinancialAccount>"
|
||||||
+ "<ram:IBANID>" + XMLTools.encodeXML(getIBAN()) + "</ram:IBANID>"
|
+ "<ram:IBANID>" + XMLTools.encodeXML(getIBAN()) + "</ram:IBANID>"
|
||||||
+ "</ram:PayerPartyDebtorFinancialAccount>";
|
+ "</ram:PayerPartyDebtorFinancialAccount>";
|
||||||
@@ -50,7 +46,6 @@ public interface IZUGFeRDTradeSettlementDebit extends IZUGFeRDTradeSettlement {
|
|||||||
*/
|
*/
|
||||||
String getIBAN();
|
String getIBAN();
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* @return sepa direct debit mandate reference
|
* @return sepa direct debit mandate reference
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
*********************************************************************** */
|
*********************************************************************** */
|
||||||
package org.mustangproject.ZUGFeRD;
|
package org.mustangproject.ZUGFeRD;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import org.mustangproject.XMLTools;
|
import org.mustangproject.XMLTools;
|
||||||
|
|
||||||
public interface IZUGFeRDTradeSettlementPayment extends IZUGFeRDTradeSettlement {
|
public interface IZUGFeRDTradeSettlementPayment extends IZUGFeRDTradeSettlement {
|
||||||
@@ -27,6 +28,7 @@ public interface IZUGFeRDTradeSettlementPayment extends IZUGFeRDTradeSettlement
|
|||||||
*
|
*
|
||||||
* @return payment information text
|
* @return payment information text
|
||||||
*/
|
*/
|
||||||
|
@JsonIgnore
|
||||||
default String getOwnPaymentInfoText() {
|
default String getOwnPaymentInfoText() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -59,6 +61,7 @@ public interface IZUGFeRDTradeSettlementPayment extends IZUGFeRDTradeSettlement
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@JsonIgnore
|
||||||
default String getSettlementXML() {
|
default String getSettlementXML() {
|
||||||
String accountNameStr="";
|
String accountNameStr="";
|
||||||
if (getAccountName()!=null) {
|
if (getAccountName()!=null) {
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public class LineCalculator {
|
|||||||
BigDecimal multiplicator = vatPercent.divide(BigDecimal.valueOf(100));
|
BigDecimal multiplicator = vatPercent.divide(BigDecimal.valueOf(100));
|
||||||
priceGross = currentItem.getPrice(); // see https://github.com/ZUGFeRD/mustangproject/issues/159
|
priceGross = currentItem.getPrice(); // see https://github.com/ZUGFeRD/mustangproject/issues/159
|
||||||
price = priceGross.subtract(allowance).add(charge);
|
price = priceGross.subtract(allowance).add(charge);
|
||||||
itemTotalNetAmount = currentItem.getQuantity().multiply(getPrice()).divide(currentItem.getBasisQuantity())
|
itemTotalNetAmount = currentItem.getQuantity().multiply(getPrice()).divide(currentItem.getBasisQuantity(), 18, RoundingMode.HALF_UP)
|
||||||
.subtract(allowanceItemTotal).setScale(2, RoundingMode.HALF_UP);
|
.subtract(allowanceItemTotal).setScale(2, RoundingMode.HALF_UP);
|
||||||
itemTotalVATAmount = itemTotalNetAmount.multiply(multiplicator);
|
itemTotalVATAmount = itemTotalNetAmount.multiply(multiplicator);
|
||||||
|
|
||||||
|
|||||||
@@ -39,8 +39,8 @@ public class TransactionCalculator implements IAbsoluteValueProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* the invoice total with VAT, corrected by prepaid amount, allowances and
|
* the invoice total with VAT, allowances and
|
||||||
* charges
|
* charges, WITHOUT considering prepaid amount
|
||||||
*
|
*
|
||||||
* @return the invoice total including taxes
|
* @return the invoice total including taxes
|
||||||
*/
|
*/
|
||||||
@@ -172,6 +172,10 @@ public class TransactionCalculator implements IAbsoluteValueProvider {
|
|||||||
LineCalculator lc = new LineCalculator(currentItem);
|
LineCalculator lc = new LineCalculator(currentItem);
|
||||||
VATAmount itemVATAmount = new VATAmount(lc.getItemTotalNetAmount(), lc.getItemTotalVATAmount(),
|
VATAmount itemVATAmount = new VATAmount(lc.getItemTotalNetAmount(), lc.getItemTotalVATAmount(),
|
||||||
currentItem.getProduct().getTaxCategoryCode(), vatDueDateTypeCode);
|
currentItem.getProduct().getTaxCategoryCode(), vatDueDateTypeCode);
|
||||||
|
String reasonText=currentItem.getProduct().getTaxExemptionReason();
|
||||||
|
if (reasonText!=null) {
|
||||||
|
itemVATAmount.setVatExemptionReasonText(reasonText);
|
||||||
|
}
|
||||||
VATAmount current = hm.get(percent.stripTrailingZeros());
|
VATAmount current = hm.get(percent.stripTrailingZeros());
|
||||||
if (current == null) {
|
if (current == null) {
|
||||||
hm.put(percent.stripTrailingZeros(), itemVATAmount);
|
hm.put(percent.stripTrailingZeros(), itemVATAmount);
|
||||||
|
|||||||
@@ -32,6 +32,16 @@ import java.math.RoundingMode;
|
|||||||
*/
|
*/
|
||||||
public class VATAmount {
|
public class VATAmount {
|
||||||
|
|
||||||
|
|
||||||
|
protected BigDecimal basis, calculated, applicablePercent;
|
||||||
|
|
||||||
|
protected String categoryCode;
|
||||||
|
|
||||||
|
protected String vatExemptionReasonText;
|
||||||
|
|
||||||
|
protected String dueDateTypeCode;
|
||||||
|
|
||||||
|
|
||||||
public VATAmount(BigDecimal basis, BigDecimal calculated, String categoryCode) {
|
public VATAmount(BigDecimal basis, BigDecimal calculated, String categoryCode) {
|
||||||
super();
|
super();
|
||||||
this.basis = basis;
|
this.basis = basis;
|
||||||
@@ -48,35 +58,41 @@ public class VATAmount {
|
|||||||
this.dueDateTypeCode = dueDateTypeCode;
|
this.dueDateTypeCode = dueDateTypeCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
BigDecimal basis, calculated, applicablePercent;
|
|
||||||
|
|
||||||
String categoryCode;
|
|
||||||
|
|
||||||
String dueDateTypeCode;
|
|
||||||
|
|
||||||
public BigDecimal getApplicablePercent() {
|
public BigDecimal getApplicablePercent() {
|
||||||
return applicablePercent;
|
return applicablePercent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setApplicablePercent(BigDecimal applicablePercent) {
|
public VATAmount setApplicablePercent(BigDecimal applicablePercent) {
|
||||||
|
|
||||||
this.applicablePercent = applicablePercent;
|
this.applicablePercent = applicablePercent;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BigDecimal getBasis() {
|
public BigDecimal getBasis() {
|
||||||
return basis;
|
return basis;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBasis(BigDecimal basis) {
|
public VATAmount setBasis(BigDecimal basis) {
|
||||||
this.basis = basis.setScale(2, RoundingMode.HALF_UP);
|
this.basis = basis.setScale(2, RoundingMode.HALF_UP);
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BigDecimal getCalculated() {
|
public BigDecimal getCalculated() {
|
||||||
return calculated;
|
return calculated;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCalculated(BigDecimal calculated) {
|
public VATAmount setCalculated(BigDecimal calculated) {
|
||||||
this.calculated = calculated;
|
this.calculated = calculated;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVatExemptionReasonText() {
|
||||||
|
return vatExemptionReasonText;
|
||||||
|
}
|
||||||
|
|
||||||
|
public VATAmount setVatExemptionReasonText(String theText) {
|
||||||
|
this.vatExemptionReasonText = theText;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -92,34 +108,38 @@ public class VATAmount {
|
|||||||
/**
|
/**
|
||||||
* @param documentCode as String
|
* @param documentCode as String
|
||||||
* @deprecated Use {@link #setCategoryCode(String)} instead
|
* @deprecated Use {@link #setCategoryCode(String)} instead
|
||||||
|
* @return fluent setter
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void setDocumentCode(String documentCode) {
|
public VATAmount setDocumentCode(String documentCode) {
|
||||||
this.categoryCode = documentCode;
|
this.categoryCode = documentCode;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCategoryCode() {
|
public String getCategoryCode() {
|
||||||
return categoryCode;
|
return categoryCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCategoryCode(String categoryCode) {
|
public VATAmount setCategoryCode(String categoryCode) {
|
||||||
this.categoryCode = categoryCode;
|
this.categoryCode = categoryCode;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDueDateTypeCode() {
|
public String getDueDateTypeCode() {
|
||||||
return dueDateTypeCode;
|
return dueDateTypeCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDueDateTypeCode(String dueDateTypeCode) {
|
public VATAmount setDueDateTypeCode(String dueDateTypeCode) {
|
||||||
this.dueDateTypeCode = dueDateTypeCode;
|
this.dueDateTypeCode = dueDateTypeCode;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public VATAmount add(VATAmount v) {
|
public VATAmount add(VATAmount v) {
|
||||||
return new VATAmount(basis.add(v.getBasis()), calculated.add(v.getCalculated()), this.categoryCode, this.dueDateTypeCode);
|
return new VATAmount(basis.add(v.getBasis()), calculated.add(v.getCalculated()), this.categoryCode, this.dueDateTypeCode).setVatExemptionReasonText(v.getVatExemptionReasonText());
|
||||||
}
|
}
|
||||||
|
|
||||||
public VATAmount subtract(VATAmount v) {
|
public VATAmount subtract(VATAmount v) {
|
||||||
return new VATAmount(basis.subtract(v.getBasis()), calculated.subtract(v.getCalculated()), this.categoryCode, this.dueDateTypeCode);
|
return new VATAmount(basis.subtract(v.getBasis()), calculated.subtract(v.getCalculated()), this.categoryCode, this.dueDateTypeCode).setVatExemptionReasonText(v.getVatExemptionReasonText());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -387,9 +387,10 @@ public class ZUGFeRD1PullProvider extends ZUGFeRD2PullProvider {
|
|||||||
+ "<ram:LineTotalAmount currencyID=\"" + trans.getCurrency() + "\">" + currencyFormat(lc.getItemTotalNetAmount())
|
+ "<ram:LineTotalAmount currencyID=\"" + trans.getCurrency() + "\">" + currencyFormat(lc.getItemTotalNetAmount())
|
||||||
+ "</ram:LineTotalAmount>"
|
+ "</ram:LineTotalAmount>"
|
||||||
+ "</ram:SpecifiedTradeSettlementMonetarySummation>";
|
+ "</ram:SpecifiedTradeSettlementMonetarySummation>";
|
||||||
if (currentItem.getAdditionalReferencedDocumentID() != null) {
|
if (currentItem.getAdditionalReferences() != null) {
|
||||||
|
xml += "<ram:AdditionalReferencedDocument><ram:ID>" + currentItem.getAdditionalReferences()[0].getIssuerAssignedID() + "</ram:ID><ram:TypeCode>130</ram:TypeCode></ram:AdditionalReferencedDocument>";
|
||||||
|
} else if (currentItem.getAdditionalReferencedDocumentID() != null) {
|
||||||
xml += "<ram:AdditionalReferencedDocument><ram:ID>" + currentItem.getAdditionalReferencedDocumentID() + "</ram:ID><ram:TypeCode>130</ram:TypeCode></ram:AdditionalReferencedDocument>";
|
xml += "<ram:AdditionalReferencedDocument><ram:ID>" + currentItem.getAdditionalReferencedDocumentID() + "</ram:ID><ram:TypeCode>130</ram:TypeCode></ram:AdditionalReferencedDocument>";
|
||||||
|
|
||||||
}
|
}
|
||||||
xml += "</ram:SpecifiedSupplyChainTradeSettlement>"
|
xml += "</ram:SpecifiedSupplyChainTradeSettlement>"
|
||||||
+ "<ram:SpecifiedTradeProduct>";
|
+ "<ram:SpecifiedTradeProduct>";
|
||||||
|
|||||||
@@ -76,11 +76,13 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected String priceFormat(BigDecimal value) {
|
protected String priceFormat(BigDecimal value) {
|
||||||
return XMLTools.nDigitFormat(value, 4);
|
// 18 decimals are max for price and qty due to xml restrictions,
|
||||||
|
// see Chapter 3.2.3 of https://www.w3.org/TR/xmlschema-2/
|
||||||
|
return XMLTools.nDigitFormatDecimalRange(value, 18, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String quantityFormat(BigDecimal value) {
|
protected String quantityFormat(BigDecimal value) {
|
||||||
return XMLTools.nDigitFormat(value, 4);
|
return XMLTools.nDigitFormatDecimalRange(value, 18, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -138,21 +140,32 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
+ XMLTools.encodeXML(party.getGlobalID()) + "</ram:GlobalID>";
|
+ XMLTools.encodeXML(party.getGlobalID()) + "</ram:GlobalID>";
|
||||||
}
|
}
|
||||||
xml += "<ram:Name>" + XMLTools.encodeXML(party.getName()) + "</ram:Name>";
|
xml += "<ram:Name>" + XMLTools.encodeXML(party.getName()) + "</ram:Name>";
|
||||||
|
if (party.getDescription() != null) {
|
||||||
|
xml += "<ram:Description>" + XMLTools.encodeXML(party.getDescription()) + "</ram:Description>";
|
||||||
|
}
|
||||||
if (party.getLegalOrganisation() != null) {
|
if (party.getLegalOrganisation() != null) {
|
||||||
xml += "<ram:SpecifiedLegalOrganization> ";
|
xml += "<ram:SpecifiedLegalOrganization> ";
|
||||||
xml += " <ram:ID schemeID=\"" + XMLTools.encodeXML(party.getLegalOrganisation().getSchemeID()) + "\">" + XMLTools.encodeXML(party.getLegalOrganisation().getID()) + "</ram:ID>";
|
if (party.getLegalOrganisation().getSchemedID() != null) {
|
||||||
|
if (profile == Profiles.getByName("Minimum")) {
|
||||||
|
xml += "<ram:ID>" + XMLTools.encodeXML(party.getLegalOrganisation().getSchemedID().getID()) + "</ram:ID>";
|
||||||
|
} else {
|
||||||
|
xml += "<ram:ID schemeID=\"" + XMLTools.encodeXML(party.getLegalOrganisation().getSchemedID().getScheme()) + "\">" + XMLTools.encodeXML(party.getLegalOrganisation().getSchemedID().getID()) + "</ram:ID>";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (party.getLegalOrganisation().getTradingBusinessName() != null) {
|
||||||
|
xml += "<ram:TradingBusinessName>" + XMLTools.encodeXML(party.getLegalOrganisation().getTradingBusinessName()) + "</ram:TradingBusinessName>";
|
||||||
|
}
|
||||||
xml += "</ram:SpecifiedLegalOrganization>";
|
xml += "</ram:SpecifiedLegalOrganization>";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((party.getContact() != null) && (isSender || profile == Profiles.getByName("Extended") || profile == Profiles.getByName("XRechnung"))) {
|
if ((party.getContact() != null) && (isSender || profile == Profiles.getByName("EN16931") || profile == Profiles.getByName("Extended") || profile == Profiles.getByName("XRechnung"))) {
|
||||||
xml += "<ram:DefinedTradeContact>";
|
xml += "<ram:DefinedTradeContact>";
|
||||||
if (party.getContact().getName() != null) {
|
if (party.getContact().getName() != null) {
|
||||||
xml += "<ram:PersonName>" + XMLTools.encodeXML(party.getContact().getName())
|
xml += "<ram:PersonName>"
|
||||||
|
+ XMLTools.encodeXML(party.getContact().getName())
|
||||||
+ "</ram:PersonName>";
|
+ "</ram:PersonName>";
|
||||||
}
|
}
|
||||||
if (party.getContact().getPhone() != null) {
|
if (party.getContact().getPhone() != null) {
|
||||||
|
|
||||||
xml += "<ram:TelephoneUniversalCommunication><ram:CompleteNumber>"
|
xml += "<ram:TelephoneUniversalCommunication><ram:CompleteNumber>"
|
||||||
+ XMLTools.encodeXML(party.getContact().getPhone()) + "</ram:CompleteNumber>"
|
+ XMLTools.encodeXML(party.getContact().getPhone()) + "</ram:CompleteNumber>"
|
||||||
+ "</ram:TelephoneUniversalCommunication>";
|
+ "</ram:TelephoneUniversalCommunication>";
|
||||||
@@ -221,6 +234,30 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected String getTradePartyPayeeAsXML(IZUGFeRDExportableTradeParty party) {
|
||||||
|
String xml = "";
|
||||||
|
// According EN16931 either GlobalID or seller assigned ID might be present for a Payee
|
||||||
|
if (party.getID() != null) {
|
||||||
|
xml += "<ram:ID>" + XMLTools.encodeXML(party.getID()) + "</ram:ID>";
|
||||||
|
}
|
||||||
|
if ((party.getGlobalIDScheme() != null) && (party.getGlobalID() != null)) {
|
||||||
|
xml += "<ram:GlobalID schemeID=\"" + XMLTools.encodeXML(party.getGlobalIDScheme()) + "\">"
|
||||||
|
+ XMLTools.encodeXML(party.getGlobalID())
|
||||||
|
+ "</ram:GlobalID>";
|
||||||
|
}
|
||||||
|
xml += "<ram:Name>" + XMLTools.encodeXML(party.getName()) + "</ram:Name>";
|
||||||
|
|
||||||
|
if (party.getLegalOrganisation() != null) {
|
||||||
|
xml += "<ram:SpecifiedLegalOrganization> ";
|
||||||
|
if (party.getLegalOrganisation().getSchemedID() != null) {
|
||||||
|
xml += "<ram:ID schemeID=\"" + XMLTools.encodeXML(party.getLegalOrganisation().getSchemedID().getScheme()) + "\">" + XMLTools.encodeXML(party.getLegalOrganisation().getSchemedID().getID()) + "</ram:ID>";
|
||||||
|
}
|
||||||
|
xml += "</ram:SpecifiedLegalOrganization>";
|
||||||
|
}
|
||||||
|
|
||||||
|
return xml;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* returns the XML for a charge or allowance on item level
|
* returns the XML for a charge or allowance on item level
|
||||||
@@ -240,14 +277,19 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String reason = "";
|
String reason = "";
|
||||||
if ((allowance.getReason() != null) && (profile == Profiles.getByName("Extended"))) {
|
if ((allowance.getReason() != null) && (profile == Profiles.getByName("Extended") || profile == Profiles.getByName("XRechnung"))) {
|
||||||
// only in extended profile
|
|
||||||
reason = "<ram:Reason>" + XMLTools.encodeXML(allowance.getReason()) + "</ram:Reason>";
|
reason = "<ram:Reason>" + XMLTools.encodeXML(allowance.getReason()) + "</ram:Reason>";
|
||||||
}
|
}
|
||||||
|
String reasonCode = "";
|
||||||
|
if ((allowance.getReasonCode() != null) && (profile == Profiles.getByName("XRechnung"))) {
|
||||||
|
// only in XRechnung profile
|
||||||
|
reasonCode = "<ram:ReasonCode>" + allowance.getReasonCode() + "</ram:ReasonCode>";
|
||||||
|
}
|
||||||
final String allowanceChargeStr = "<ram:AppliedTradeAllowanceCharge><ram:ChargeIndicator><udt:Indicator>" +
|
final String allowanceChargeStr = "<ram:AppliedTradeAllowanceCharge><ram:ChargeIndicator><udt:Indicator>" +
|
||||||
chargeIndicator + "</udt:Indicator></ram:ChargeIndicator>" + percentage +
|
chargeIndicator + "</udt:Indicator></ram:ChargeIndicator>" + percentage +
|
||||||
"<ram:ActualAmount>" + priceFormat(allowance.getTotalAmount(item)) + "</ram:ActualAmount>" +
|
"<ram:ActualAmount>" + priceFormat(allowance.getTotalAmount(item)) + "</ram:ActualAmount>" +
|
||||||
reason +
|
reason +
|
||||||
|
reasonCode +
|
||||||
"</ram:AppliedTradeAllowanceCharge>";
|
"</ram:AppliedTradeAllowanceCharge>";
|
||||||
return allowanceChargeStr;
|
return allowanceChargeStr;
|
||||||
}
|
}
|
||||||
@@ -269,10 +311,20 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
chargeIndicator = "true";
|
chargeIndicator = "true";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String reason = "";
|
||||||
|
if ((allowance.getReason() != null) && (profile == Profiles.getByName("Extended") || profile == Profiles.getByName("XRechnung"))) {
|
||||||
|
reason = "<ram:Reason>" + XMLTools.encodeXML(allowance.getReason()) + "</ram:Reason>";
|
||||||
|
}
|
||||||
|
String reasonCode = "";
|
||||||
|
if ((allowance.getReasonCode() != null) && (profile == Profiles.getByName("XRechnung"))) {
|
||||||
|
// only in XRechnung profile
|
||||||
|
reasonCode = "<ram:ReasonCode>" + allowance.getReasonCode() + "</ram:ReasonCode>";
|
||||||
|
}
|
||||||
final String itemTotalAllowanceChargeStr = "<ram:SpecifiedTradeAllowanceCharge><ram:ChargeIndicator><udt:Indicator>" +
|
final String itemTotalAllowanceChargeStr = "<ram:SpecifiedTradeAllowanceCharge><ram:ChargeIndicator><udt:Indicator>" +
|
||||||
chargeIndicator + "</udt:Indicator></ram:ChargeIndicator>" + percentage +
|
chargeIndicator + "</udt:Indicator></ram:ChargeIndicator>" + percentage +
|
||||||
"<ram:ActualAmount>" + currencyFormat(allowance.getTotalAmount(item)) + "</ram:ActualAmount>" +
|
"<ram:ActualAmount>" + currencyFormat(allowance.getTotalAmount(item)) + "</ram:ActualAmount>" +
|
||||||
"<ram:Reason>" + XMLTools.encodeXML(allowance.getReason()) + "</ram:Reason>" +
|
reason +
|
||||||
|
reasonCode +
|
||||||
"</ram:SpecifiedTradeAllowanceCharge>";
|
"</ram:SpecifiedTradeAllowanceCharge>";
|
||||||
return itemTotalAllowanceChargeStr;
|
return itemTotalAllowanceChargeStr;
|
||||||
}
|
}
|
||||||
@@ -301,8 +353,9 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
paymentTermsDescription += discount.getAsXRechnung();
|
paymentTermsDescription += discount.getAsXRechnung();
|
||||||
}
|
}
|
||||||
} else if ((paymentTermsDescription == null) && (trans.getDocumentCode() != DocumentCodeTypeConstants.CORRECTEDINVOICE) && (trans.getDocumentCode() != DocumentCodeTypeConstants.CREDITNOTE)) {
|
} else if ((paymentTermsDescription == null) && (trans.getDocumentCode() != DocumentCodeTypeConstants.CORRECTEDINVOICE) && (trans.getDocumentCode() != DocumentCodeTypeConstants.CREDITNOTE)) {
|
||||||
|
if (trans.getDueDate() != null) {
|
||||||
paymentTermsDescription = "Please remit until " + germanDateFormat.format(trans.getDueDate());
|
paymentTermsDescription = "Please remit until " + germanDateFormat.format(trans.getDueDate());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -398,6 +451,20 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
XMLTools.encodeXML(currentItem.getProduct().getDescription()) +
|
XMLTools.encodeXML(currentItem.getProduct().getDescription()) +
|
||||||
"</ram:Description>";
|
"</ram:Description>";
|
||||||
}
|
}
|
||||||
|
if (currentItem.getProduct().getClassifications() != null && currentItem.getProduct().getClassifications().length > 0) {
|
||||||
|
for (IDesignatedProductClassification classification : currentItem.getProduct().getClassifications()) {
|
||||||
|
xml += "<ram:DesignatedProductClassification>"
|
||||||
|
+ "<ram:ClassCode listId=\"" + XMLTools.encodeXML(classification.getClassCode().getListID()) + "\"";
|
||||||
|
if (classification.getClassCode().getListVersionID() != null) {
|
||||||
|
xml += " listVersionID=\"" + XMLTools.encodeXML(classification.getClassCode().getListVersionID()) + "\"";
|
||||||
|
}
|
||||||
|
xml += ">" + classification.getClassCode().getCode() + "</ram:ClassCode>";
|
||||||
|
if (classification.getClassName() != null) {
|
||||||
|
xml += "<ram:ClassName>" + XMLTools.encodeXML(classification.getClassName()) + "</ram:ClassName>";
|
||||||
|
}
|
||||||
|
xml += "</ram:DesignatedProductClassification>";
|
||||||
|
}
|
||||||
|
}
|
||||||
if (currentItem.getProduct().getAttributes() != null) {
|
if (currentItem.getProduct().getAttributes() != null) {
|
||||||
for (Entry<String, String> entry : currentItem.getProduct().getAttributes().entrySet()) {
|
for (Entry<String, String> entry : currentItem.getProduct().getAttributes().entrySet()) {
|
||||||
xml += "<ram:ApplicableProductCharacteristic>" +
|
xml += "<ram:ApplicableProductCharacteristic>" +
|
||||||
@@ -480,9 +547,16 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
+ "<ram:LineTotalAmount>" + currencyFormat(lc.getItemTotalNetAmount())
|
+ "<ram:LineTotalAmount>" + currencyFormat(lc.getItemTotalNetAmount())
|
||||||
+ "</ram:LineTotalAmount>" // currencyID=\"EUR\"
|
+ "</ram:LineTotalAmount>" // currencyID=\"EUR\"
|
||||||
+ "</ram:SpecifiedTradeSettlementLineMonetarySummation>";
|
+ "</ram:SpecifiedTradeSettlementLineMonetarySummation>";
|
||||||
if (currentItem.getAdditionalReferencedDocumentID() != null) {
|
if (currentItem.getAdditionalReferences() != null) {
|
||||||
|
for (final IReferencedDocument currentReference : currentItem.getAdditionalReferences()) {
|
||||||
|
xml += "<ram:AdditionalReferencedDocument>" +
|
||||||
|
"<ram:IssuerAssignedID>" + XMLTools.encodeXML(currentReference.getIssuerAssignedID()) + "</ram:IssuerAssignedID>" +
|
||||||
|
"<ram:TypeCode>130</ram:TypeCode>" +
|
||||||
|
"<ram:ReferenceTypeCode>" + XMLTools.encodeXML(currentReference.getReferenceTypeCode()) + "</ram:ReferenceTypeCode>" +
|
||||||
|
"</ram:AdditionalReferencedDocument>";
|
||||||
|
}
|
||||||
|
} else if (currentItem.getAdditionalReferencedDocumentID() != null) {
|
||||||
xml += "<ram:AdditionalReferencedDocument><ram:IssuerAssignedID>" + currentItem.getAdditionalReferencedDocumentID() + "</ram:IssuerAssignedID><ram:TypeCode>130</ram:TypeCode></ram:AdditionalReferencedDocument>";
|
xml += "<ram:AdditionalReferencedDocument><ram:IssuerAssignedID>" + currentItem.getAdditionalReferencedDocumentID() + "</ram:IssuerAssignedID><ram:TypeCode>130</ram:TypeCode></ram:AdditionalReferencedDocument>";
|
||||||
|
|
||||||
}
|
}
|
||||||
xml += "</ram:SpecifiedLineTradeSettlement>"
|
xml += "</ram:SpecifiedLineTradeSettlement>"
|
||||||
+ "</ram:IncludedSupplyChainTradeLineItem>";
|
+ "</ram:IncludedSupplyChainTradeLineItem>";
|
||||||
@@ -580,10 +654,19 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
|
|
||||||
xml += "</ram:ApplicableHeaderTradeDelivery>";
|
xml += "</ram:ApplicableHeaderTradeDelivery>";
|
||||||
xml += "<ram:ApplicableHeaderTradeSettlement>";
|
xml += "<ram:ApplicableHeaderTradeSettlement>";
|
||||||
|
|
||||||
|
if ((trans.getCreditorReferenceID() != null) && (getProfile() != Profiles.getByName("Minimum"))) {
|
||||||
|
xml += "<ram:CreditorReferenceID>" + XMLTools.encodeXML(trans.getCreditorReferenceID()) + "</ram:CreditorReferenceID>";
|
||||||
|
}
|
||||||
if ((trans.getNumber() != null) && (getProfile() != Profiles.getByName("Minimum"))) {
|
if ((trans.getNumber() != null) && (getProfile() != Profiles.getByName("Minimum"))) {
|
||||||
xml += "<ram:PaymentReference>" + XMLTools.encodeXML(trans.getNumber()) + "</ram:PaymentReference>";
|
xml += "<ram:PaymentReference>" + XMLTools.encodeXML(trans.getNumber()) + "</ram:PaymentReference>";
|
||||||
}
|
}
|
||||||
xml += "<ram:InvoiceCurrencyCode>" + trans.getCurrency() + "</ram:InvoiceCurrencyCode>";
|
xml += "<ram:InvoiceCurrencyCode>" + trans.getCurrency() + "</ram:InvoiceCurrencyCode>";
|
||||||
|
if (this.trans.getPayee() != null) {
|
||||||
|
xml += "<ram:PayeeTradeParty>" +
|
||||||
|
getTradePartyPayeeAsXML(this.trans.getPayee()) +
|
||||||
|
"</ram:PayeeTradeParty>";
|
||||||
|
}
|
||||||
|
|
||||||
if (trans.getTradeSettlementPayment() != null) {
|
if (trans.getTradeSettlementPayment() != null) {
|
||||||
for (final IZUGFeRDTradeSettlementPayment payment : trans.getTradeSettlementPayment()) {
|
for (final IZUGFeRDTradeSettlementPayment payment : trans.getTradeSettlementPayment()) {
|
||||||
@@ -619,12 +702,17 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
final String amountDueDateTypeCode = amount.getDueDateTypeCode();
|
final String amountDueDateTypeCode = amount.getDueDateTypeCode();
|
||||||
final boolean displayExemptionReason = CATEGORY_CODES_WITH_EXEMPTION_REASON.contains(amountCategoryCode);
|
final boolean displayExemptionReason = CATEGORY_CODES_WITH_EXEMPTION_REASON.contains(amountCategoryCode);
|
||||||
if (getProfile() != Profiles.getByName("Minimum")) {
|
if (getProfile() != Profiles.getByName("Minimum")) {
|
||||||
|
String exemptionReasonTextXML = "";
|
||||||
|
if ((displayExemptionReason) && (amount.getVatExemptionReasonText() != null)) {
|
||||||
|
exemptionReasonTextXML = "<ram:ExemptionReason>" + XMLTools.encodeXML(amount.getVatExemptionReasonText()) + "</ram:ExemptionReason>";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
xml += "<ram:ApplicableTradeTax>"
|
xml += "<ram:ApplicableTradeTax>"
|
||||||
+ "<ram:CalculatedAmount>" + currencyFormat(amount.getCalculated())
|
+ "<ram:CalculatedAmount>" + currencyFormat(amount.getCalculated())
|
||||||
+ "</ram:CalculatedAmount>" //currencyID=\"EUR\"
|
+ "</ram:CalculatedAmount>" //currencyID=\"EUR\"
|
||||||
+ "<ram:TypeCode>VAT</ram:TypeCode>"
|
+ "<ram:TypeCode>VAT</ram:TypeCode>"
|
||||||
+ (displayExemptionReason ? exemptionReason : "")
|
+ exemptionReasonTextXML
|
||||||
+ "<ram:BasisAmount>" + currencyFormat(amount.getBasis()) + "</ram:BasisAmount>" // currencyID=\"EUR\"
|
+ "<ram:BasisAmount>" + currencyFormat(amount.getBasis()) + "</ram:BasisAmount>" // currencyID=\"EUR\"
|
||||||
+ "<ram:CategoryCode>" + amountCategoryCode + "</ram:CategoryCode>"
|
+ "<ram:CategoryCode>" + amountCategoryCode + "</ram:CategoryCode>"
|
||||||
+ (amountDueDateTypeCode != null ? "<ram:DueDateTypeCode>" + amountDueDateTypeCode + "</ram:DueDateTypeCode>" : "")
|
+ (amountDueDateTypeCode != null ? "<ram:DueDateTypeCode>" + amountDueDateTypeCode + "</ram:DueDateTypeCode>" : "")
|
||||||
@@ -645,7 +733,29 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((trans.getZFCharges() != null) && (trans.getZFCharges().length > 0)) {
|
if ((trans.getZFCharges() != null) && (trans.getZFCharges().length > 0)) {
|
||||||
|
if (profile == Profiles.getByName("XRechnung")) {
|
||||||
|
for (IZUGFeRDAllowanceCharge charge : trans.getZFCharges()) {
|
||||||
|
xml += "<ram:SpecifiedTradeAllowanceCharge>" +
|
||||||
|
"<ram:ChargeIndicator>" +
|
||||||
|
"<udt:Indicator>true</udt:Indicator>" +
|
||||||
|
"</ram:ChargeIndicator>" +
|
||||||
|
"<ram:ActualAmount>" + currencyFormat(charge.getTotalAmount(calc)) + "</ram:ActualAmount>";
|
||||||
|
if (charge.getReason() != null) {
|
||||||
|
xml += "<ram:Reason>" + XMLTools.encodeXML(charge.getReason()) + "</ram:Reason>";
|
||||||
|
}
|
||||||
|
if (charge.getReasonCode() != null) {
|
||||||
|
xml += "<ram:ReasonCode>" + charge.getReasonCode() + "</ram:ReasonCode>";
|
||||||
|
}
|
||||||
|
xml += "<ram:CategoryTradeTax>" +
|
||||||
|
"<ram:TypeCode>VAT</ram:TypeCode>" +
|
||||||
|
"<ram:CategoryCode>" + charge.getCategoryCode() + "</ram:CategoryCode>";
|
||||||
|
if (charge.getTaxPercent() != null) {
|
||||||
|
xml += "<ram:RateApplicablePercent>" + vatFormat(charge.getTaxPercent()) + "</ram:RateApplicablePercent>";
|
||||||
|
}
|
||||||
|
xml += "</ram:CategoryTradeTax>" +
|
||||||
|
"</ram:SpecifiedTradeAllowanceCharge>";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
for (final BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) {
|
for (final BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) {
|
||||||
if (calc.getChargesForPercent(currentTaxPercent).compareTo(BigDecimal.ZERO) != 0) {
|
if (calc.getChargesForPercent(currentTaxPercent).compareTo(BigDecimal.ZERO) != 0) {
|
||||||
xml += "<ram:SpecifiedTradeAllowanceCharge>" +
|
xml += "<ram:SpecifiedTradeAllowanceCharge>" +
|
||||||
@@ -663,8 +773,32 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((trans.getZFAllowances() != null) && (trans.getZFAllowances().length > 0)) {
|
if ((trans.getZFAllowances() != null) && (trans.getZFAllowances().length > 0)) {
|
||||||
|
if (profile == Profiles.getByName("XRechnung")) {
|
||||||
|
for (IZUGFeRDAllowanceCharge allowance : trans.getZFAllowances()) {
|
||||||
|
xml += "<ram:SpecifiedTradeAllowanceCharge>" +
|
||||||
|
"<ram:ChargeIndicator>" +
|
||||||
|
"<udt:Indicator>false</udt:Indicator>" +
|
||||||
|
"</ram:ChargeIndicator>" +
|
||||||
|
"<ram:ActualAmount>" + currencyFormat(allowance.getTotalAmount(calc)) + "</ram:ActualAmount>";
|
||||||
|
if (allowance.getReason() != null) {
|
||||||
|
xml += "<ram:Reason>" + XMLTools.encodeXML(allowance.getReason()) + "</ram:Reason>";
|
||||||
|
}
|
||||||
|
if (allowance.getReasonCode() != null) {
|
||||||
|
xml += "<ram:ReasonCode>" + allowance.getReasonCode() + "</ram:ReasonCode>";
|
||||||
|
}
|
||||||
|
xml += "<ram:CategoryTradeTax>" +
|
||||||
|
"<ram:TypeCode>VAT</ram:TypeCode>" +
|
||||||
|
"<ram:CategoryCode>" + allowance.getCategoryCode() + "</ram:CategoryCode>";
|
||||||
|
if (allowance.getTaxPercent() != null) {
|
||||||
|
xml += "<ram:RateApplicablePercent>" + vatFormat(allowance.getTaxPercent()) + "</ram:RateApplicablePercent>";
|
||||||
|
}
|
||||||
|
xml += "</ram:CategoryTradeTax>" +
|
||||||
|
"</ram:SpecifiedTradeAllowanceCharge>";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
for (final BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) {
|
for (final BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) {
|
||||||
if (calc.getAllowancesForPercent(currentTaxPercent).compareTo(BigDecimal.ZERO) != 0) {
|
if (calc.getAllowancesForPercent(currentTaxPercent).compareTo(BigDecimal.ZERO) != 0) {
|
||||||
xml += "<ram:SpecifiedTradeAllowanceCharge>" +
|
xml += "<ram:SpecifiedTradeAllowanceCharge>" +
|
||||||
@@ -682,6 +816,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ((trans.getPaymentTerms() == null) && (getProfile() != Profiles.getByName("Minimum")) && ((paymentTermsDescription != null) || (trans.getTradeSettlement() != null) || (hasDueDate))) {
|
if ((trans.getPaymentTerms() == null) && (getProfile() != Profiles.getByName("Minimum")) && ((paymentTermsDescription != null) || (trans.getTradeSettlement() != null) || (hasDueDate))) {
|
||||||
@@ -782,8 +917,9 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected String buildNotes(IExportableTransaction exportableTransaction) {
|
protected String buildNotes(IExportableTransaction exportableTransaction) {
|
||||||
final List<IncludedNote> includedNotes = Optional.ofNullable(exportableTransaction.getNotesWithSubjectCode())
|
final List<IncludedNote> includedNotes = new ArrayList<>();
|
||||||
.orElse(new ArrayList<>());
|
Optional.ofNullable(exportableTransaction.getNotesWithSubjectCode()).ifPresent(includedNotes::addAll);
|
||||||
|
|
||||||
if (exportableTransaction.getNotes() != null) {
|
if (exportableTransaction.getNotes() != null) {
|
||||||
for (final String currentNote : exportableTransaction.getNotes()) {
|
for (final String currentNote : exportableTransaction.getNotes()) {
|
||||||
includedNotes.add(IncludedNote.unspecifiedNote(currentNote));
|
includedNotes.add(IncludedNote.unspecifiedNote(currentNote));
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte
|
|||||||
this.ignorePDFAErrors = true;
|
this.ignorePDFAErrors = true;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected PDFAConformanceLevel conformanceLevel = PDFAConformanceLevel.UNICODE;
|
protected PDFAConformanceLevel conformanceLevel = PDFAConformanceLevel.UNICODE;
|
||||||
protected ArrayList<FileAttachment> fileAttachments = new ArrayList<>();
|
protected ArrayList<FileAttachment> fileAttachments = new ArrayList<>();
|
||||||
|
|
||||||
@@ -223,20 +224,19 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte
|
|||||||
* @return the filename of the file to be embedded
|
* @return the filename of the file to be embedded
|
||||||
*/
|
*/
|
||||||
public String getFilenameForVersion(int ver, Profile profile) {
|
public String getFilenameForVersion(int ver, Profile profile) {
|
||||||
|
if (profile.getName().equals("XRECHNUNG")) {
|
||||||
|
return "xrechnung.xml";
|
||||||
|
}
|
||||||
if (isFacturX) {
|
if (isFacturX) {
|
||||||
return "factur-x.xml";
|
return "factur-x.xml";
|
||||||
} else {
|
} else {
|
||||||
if (ver == 1) {
|
if (ver == 1) {
|
||||||
return "ZUGFeRD-invoice.xml";
|
return "ZUGFeRD-invoice.xml";
|
||||||
} else {
|
|
||||||
if (profile.getName().equals("XRECHNUNG")) {
|
|
||||||
return "xrechnung.xml";
|
|
||||||
} else {
|
} else {
|
||||||
return "zugferd-invoice.xml";
|
return "zugferd-invoice.xml";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -260,8 +260,7 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte
|
|||||||
*
|
*
|
||||||
* @param XRechnungVersion the XRechnung version
|
* @param XRechnungVersion the XRechnung version
|
||||||
*/
|
*/
|
||||||
public void setXRechnungSpecificVersion(String XRechnungVersion)
|
public void setXRechnungSpecificVersion(String XRechnungVersion) {
|
||||||
{
|
|
||||||
this.XRechnungVersion = XRechnungVersion;
|
this.XRechnungVersion = XRechnungVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -538,8 +537,7 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte
|
|||||||
|
|
||||||
// The XRechnung version may be settable from outside.
|
// The XRechnung version may be settable from outside.
|
||||||
if ((this.XRechnungVersion != null) && (this.profile != null) &&
|
if ((this.XRechnungVersion != null) && (this.profile != null) &&
|
||||||
this.profile.getName().equalsIgnoreCase(Profiles.getByName("XRECHNUNG").getName()))
|
this.profile.getName().equalsIgnoreCase(Profiles.getByName("XRECHNUNG").getName())) {
|
||||||
{
|
|
||||||
metaDataVersion = this.XRechnungVersion;
|
metaDataVersion = this.XRechnungVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -557,8 +555,7 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void removeCidSet(PDDocument doc)
|
private void removeCidSet(PDDocument doc)
|
||||||
throws IOException
|
throws IOException {
|
||||||
{
|
|
||||||
// https://github.com/ZUGFeRD/mustangproject/issues/249
|
// https://github.com/ZUGFeRD/mustangproject/issues/249
|
||||||
|
|
||||||
COSName cidSet = COSName.getPDFName("CIDSet");
|
COSName cidSet = COSName.getPDFName("CIDSet");
|
||||||
@@ -651,11 +648,9 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte
|
|||||||
// ZUGFeRD 2.1.1 Technical Supplement | Part A | 2.2.2. Data Relationship
|
// ZUGFeRD 2.1.1 Technical Supplement | Part A | 2.2.2. Data Relationship
|
||||||
// See documentation ZUGFeRD211_EN/Documentation/ZUGFeRD-2.1.1 - Specification_TA_Part-A.pdf
|
// See documentation ZUGFeRD211_EN/Documentation/ZUGFeRD-2.1.1 - Specification_TA_Part-A.pdf
|
||||||
// https://www.ferd-net.de/standards/zugferd-2.1.1/index.html
|
// https://www.ferd-net.de/standards/zugferd-2.1.1/index.html
|
||||||
if ((this.profile != null) && (ZFVersion >= 2))
|
if ((this.profile != null) && (ZFVersion >= 2)) {
|
||||||
{
|
|
||||||
if (this.profile.getName().equalsIgnoreCase(Profiles.getByName("MINIMUM").getName()) ||
|
if (this.profile.getName().equalsIgnoreCase(Profiles.getByName("MINIMUM").getName()) ||
|
||||||
this.profile.getName().equalsIgnoreCase(Profiles.getByName("BASICWL").getName()))
|
this.profile.getName().equalsIgnoreCase(Profiles.getByName("BASICWL").getName())) {
|
||||||
{
|
|
||||||
relationship = "Data";
|
relationship = "Data";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -674,12 +669,12 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte
|
|||||||
/**
|
/**
|
||||||
* Reads the XMPMetadata from the PDDocument, if it exists.
|
* Reads the XMPMetadata from the PDDocument, if it exists.
|
||||||
* Otherwise creates XMPMetadata.
|
* Otherwise creates XMPMetadata.
|
||||||
|
*
|
||||||
* @return the finished XMPMetadata object
|
* @return the finished XMPMetadata object
|
||||||
* @throws IOException when e.g. XmpParsingException
|
* @throws IOException when e.g. XmpParsingException
|
||||||
*/
|
*/
|
||||||
protected XMPMetadata getXmpMetadata()
|
protected XMPMetadata getXmpMetadata()
|
||||||
throws IOException
|
throws IOException {
|
||||||
{
|
|
||||||
PDMetadata meta = doc.getDocumentCatalog().getMetadata();
|
PDMetadata meta = doc.getDocumentCatalog().getMetadata();
|
||||||
if ((meta != null) && (meta.getLength() > 0)) {
|
if ((meta != null) && (meta.getLength() > 0)) {
|
||||||
try {
|
try {
|
||||||
@@ -701,6 +696,7 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte
|
|||||||
/**
|
/**
|
||||||
* Sets the producer if the overwrite flag is set or the producer is not already set.
|
* Sets the producer if the overwrite flag is set or the producer is not already set.
|
||||||
* Sets the PDFVersion to 1.4 if the field is empty.
|
* Sets the PDFVersion to 1.4 if the field is empty.
|
||||||
|
*
|
||||||
* @param xmp the metadata as XML
|
* @param xmp the metadata as XML
|
||||||
*/
|
*/
|
||||||
protected void writeAdobePDFSchema(XMPMetadata xmp) {
|
protected void writeAdobePDFSchema(XMPMetadata xmp) {
|
||||||
@@ -823,11 +819,11 @@ public class ZUGFeRDExporterFromA3 extends XRExporter implements IZUGFeRDExporte
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds an OutputIntent and the sRGB color profile if no OutputIntent exist
|
* Adds an OutputIntent and the sRGB color profile if no OutputIntent exist
|
||||||
|
*
|
||||||
* @throws IOException if the ICC file cannot be read or attached to doc
|
* @throws IOException if the ICC file cannot be read or attached to doc
|
||||||
*/
|
*/
|
||||||
protected void addSRGBOutputIntend()
|
protected void addSRGBOutputIntend()
|
||||||
throws IOException
|
throws IOException {
|
||||||
{
|
|
||||||
if (!doc.getDocumentCatalog().getOutputIntents().isEmpty()) {
|
if (!doc.getDocumentCatalog().getOutputIntents().isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import org.apache.xmpbox.XMPMetadata;
|
|||||||
import org.apache.xmpbox.schema.PDFAIdentificationSchema;
|
import org.apache.xmpbox.schema.PDFAIdentificationSchema;
|
||||||
import org.apache.xmpbox.xml.DomXmpParser;
|
import org.apache.xmpbox.xml.DomXmpParser;
|
||||||
import org.apache.xmpbox.xml.XmpParsingException;
|
import org.apache.xmpbox.xml.XmpParsingException;
|
||||||
|
import org.mustangproject.FileAttachment;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -72,7 +73,8 @@ public class ZUGFeRDExporterFromPDFA implements IZUGFeRDExporter {
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
protected IZUGFeRDExporter getExporter() {
|
|
||||||
|
public IZUGFeRDExporter getExporter() {
|
||||||
if (theExporter==null) {
|
if (theExporter==null) {
|
||||||
throw new RuntimeException("In ZUGFeRDExporterFromPDFA, source must always be loaded before other operations are performed.");
|
throw new RuntimeException("In ZUGFeRDExporterFromPDFA, source must always be loaded before other operations are performed.");
|
||||||
}
|
}
|
||||||
@@ -247,5 +249,14 @@ public class ZUGFeRDExporterFromPDFA implements IZUGFeRDExporter {
|
|||||||
public void export(OutputStream output) throws IOException {
|
public void export(OutputStream output) throws IOException {
|
||||||
getExporter().export(output);
|
getExporter().export(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void attachFile(FileAttachment file) {
|
||||||
|
theExporter.attachFile(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void attachFile(String filename, byte[] data, String mimetype, String relation) {
|
||||||
|
theExporter.attachFile(filename, data, mimetype, relation);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,12 +21,7 @@ import java.nio.file.Files;
|
|||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.nio.file.StandardOpenOption;
|
import java.nio.file.StandardOpenOption;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
@@ -45,10 +40,7 @@ import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
|
|||||||
import org.apache.pdfbox.pdmodel.common.PDNameTreeNode;
|
import org.apache.pdfbox.pdmodel.common.PDNameTreeNode;
|
||||||
import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
|
import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
|
||||||
import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
|
import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
|
||||||
import org.mustangproject.EStandard;
|
import org.mustangproject.*;
|
||||||
import org.mustangproject.Item;
|
|
||||||
import org.mustangproject.Product;
|
|
||||||
import org.mustangproject.XMLTools;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
@@ -67,6 +59,10 @@ public class ZUGFeRDImporter {
|
|||||||
* map filenames of additional XML files to their contents
|
* map filenames of additional XML files to their contents
|
||||||
*/
|
*/
|
||||||
private final HashMap<String, byte[]> additionalXMLs = new HashMap<>();
|
private final HashMap<String, byte[]> additionalXMLs = new HashMap<>();
|
||||||
|
/**
|
||||||
|
* map filenames of all embedded files in the respective PDF
|
||||||
|
*/
|
||||||
|
private final ArrayList<FileAttachment> PDFAttachments = new ArrayList<>();
|
||||||
/**
|
/**
|
||||||
* Raw XML form of the extracted data - may be directly obtained.
|
* Raw XML form of the extracted data - may be directly obtained.
|
||||||
*/
|
*/
|
||||||
@@ -106,6 +102,17 @@ public class ZUGFeRDImporter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***
|
||||||
|
* return the file names of all files embedded into the PDF
|
||||||
|
* for XML embedded files please use ZUGFeRDInvoiceImporter.getFileAttachmentsXML
|
||||||
|
* @return a ArrayList of FileAttachments, empty if none
|
||||||
|
*/
|
||||||
|
public List<FileAttachment> getFileAttachmentsPDF() {
|
||||||
|
return PDFAttachments;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extracts a ZUGFeRD invoice from a PDF document represented by an input stream. Errors are reported via exception handling.
|
* Extracts a ZUGFeRD invoice from a PDF document represented by an input stream. Errors are reported via exception handling.
|
||||||
*
|
*
|
||||||
@@ -174,10 +181,11 @@ public class ZUGFeRDImporter {
|
|||||||
/**
|
/**
|
||||||
* filenames for invoice data (ZUGFeRD v1 and v2, Factur-X)
|
* filenames for invoice data (ZUGFeRD v1 and v2, Factur-X)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
final PDEmbeddedFile embeddedFile = fileSpec.getEmbeddedFile();
|
||||||
if ((filename.equals("ZUGFeRD-invoice.xml") || (filename.equals("zugferd-invoice.xml")) || filename.equals("factur-x.xml")) || filename.equals("xrechnung.xml") || filename.equals("order-x.xml") || filename.equals("cida.xml")) {
|
if ((filename.equals("ZUGFeRD-invoice.xml") || (filename.equals("zugferd-invoice.xml")) || filename.equals("factur-x.xml")) || filename.equals("xrechnung.xml") || filename.equals("order-x.xml") || filename.equals("cida.xml")) {
|
||||||
containsMeta = true;
|
containsMeta = true;
|
||||||
|
|
||||||
final PDEmbeddedFile embeddedFile = fileSpec.getEmbeddedFile();
|
|
||||||
// String embeddedFilename = filePath + filename;
|
// String embeddedFilename = filePath + filename;
|
||||||
// File file = new File(filePath + filename);
|
// File file = new File(filePath + filename);
|
||||||
// System.out.println("Writing " + embeddedFilename);
|
// System.out.println("Writing " + embeddedFilename);
|
||||||
@@ -191,9 +199,9 @@ public class ZUGFeRDImporter {
|
|||||||
// fos.close();
|
// fos.close();
|
||||||
}
|
}
|
||||||
if (filename.startsWith("additional_data")) {
|
if (filename.startsWith("additional_data")) {
|
||||||
final PDEmbeddedFile embeddedFile = fileSpec.getEmbeddedFile();
|
|
||||||
additionalXMLs.put(filename, embeddedFile.toByteArray());
|
additionalXMLs.put(filename, embeddedFile.toByteArray());
|
||||||
}
|
}
|
||||||
|
PDFAttachments.add(new FileAttachment(filename, embeddedFile.getSubtype(), "Data", embeddedFile.toByteArray()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,6 +222,7 @@ public class ZUGFeRDImporter {
|
|||||||
|
|
||||||
|
|
||||||
public void setRawXML(byte[] rawXML) throws IOException {
|
public void setRawXML(byte[] rawXML) throws IOException {
|
||||||
|
this.containsMeta = true;
|
||||||
this.rawXML = rawXML;
|
this.rawXML = rawXML;
|
||||||
this.version = null;
|
this.version = null;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -7,8 +7,10 @@ import java.nio.charset.StandardCharsets;
|
|||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Base64;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
import javax.xml.xpath.XPath;
|
import javax.xml.xpath.XPath;
|
||||||
import javax.xml.xpath.XPathConstants;
|
import javax.xml.xpath.XPathConstants;
|
||||||
@@ -16,14 +18,7 @@ import javax.xml.xpath.XPathExpression;
|
|||||||
import javax.xml.xpath.XPathExpressionException;
|
import javax.xml.xpath.XPathExpressionException;
|
||||||
import javax.xml.xpath.XPathFactory;
|
import javax.xml.xpath.XPathFactory;
|
||||||
|
|
||||||
import org.mustangproject.Allowance;
|
import org.mustangproject.*;
|
||||||
import org.mustangproject.BankDetails;
|
|
||||||
import org.mustangproject.Charge;
|
|
||||||
import org.mustangproject.EStandard;
|
|
||||||
import org.mustangproject.Invoice;
|
|
||||||
import org.mustangproject.Item;
|
|
||||||
import org.mustangproject.TradeParty;
|
|
||||||
import org.mustangproject.XMLTools;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
@@ -33,6 +28,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
private static final Logger LOGGER = LoggerFactory.getLogger(ZUGFeRDInvoiceImporter.class.getCanonicalName()); // log
|
private static final Logger LOGGER = LoggerFactory.getLogger(ZUGFeRDInvoiceImporter.class.getCanonicalName()); // log
|
||||||
private boolean recalcPrice = false;
|
private boolean recalcPrice = false;
|
||||||
private boolean ignoreCalculationErrors = false;
|
private boolean ignoreCalculationErrors = false;
|
||||||
|
private ArrayList<FileAttachment> fileAttachments=new ArrayList<>();
|
||||||
|
|
||||||
public ZUGFeRDInvoiceImporter() {
|
public ZUGFeRDInvoiceImporter() {
|
||||||
super();
|
super();
|
||||||
@@ -66,6 +62,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
public Invoice extractInto(Invoice zpp) throws XPathExpressionException, ParseException {
|
public Invoice extractInto(Invoice zpp) throws XPathExpressionException, ParseException {
|
||||||
|
|
||||||
String number = "";
|
String number = "";
|
||||||
|
String typeCode = null;
|
||||||
/*
|
/*
|
||||||
* dummywerte sind derzeit noch setDueDate setIssueDate setDeliveryDate
|
* dummywerte sind derzeit noch setDueDate setIssueDate setDeliveryDate
|
||||||
* setSender setRecipient setnumber bspw. due date
|
* setSender setRecipient setnumber bspw. due date
|
||||||
@@ -78,6 +75,10 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
|
|
||||||
xpr = xpath.compile("//*[local-name()=\"BuyerTradeParty\"]|//*[local-name()=\"AccountingCustomerParty\"]/*");
|
xpr = xpath.compile("//*[local-name()=\"BuyerTradeParty\"]|//*[local-name()=\"AccountingCustomerParty\"]/*");
|
||||||
NodeList BuyerNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
NodeList BuyerNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
|
|
||||||
|
xpr = xpath.compile("//*[local-name()=\"PayeeTradeParty\"]|//*[local-name()=\"PayeeParty\"]/*");
|
||||||
|
NodeList payeeNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
|
|
||||||
xpr = xpath.compile("//*[local-name()=\"ExchangedDocument\"]|//*[local-name()=\"HeaderExchangedDocument\"]");
|
xpr = xpath.compile("//*[local-name()=\"ExchangedDocument\"]|//*[local-name()=\"HeaderExchangedDocument\"]");
|
||||||
NodeList ExchangedDocumentNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
NodeList ExchangedDocumentNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
|
|
||||||
@@ -88,29 +89,35 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
expectedGrandTotal = new BigDecimal(totalNodes.item(0).getTextContent());
|
expectedGrandTotal = new BigDecimal(totalNodes.item(0).getTextContent());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xpr = xpath.compile("//*[local-name()=\"PrepaidAmount\"]");
|
||||||
|
NodeList prepaidNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
|
if (prepaidNodes.getLength() > 0) {
|
||||||
|
zpp.setTotalPrepaidAmount(new BigDecimal(prepaidNodes.item(0).getTextContent()));
|
||||||
|
}
|
||||||
|
|
||||||
Date issueDate = null;
|
Date issueDate = null;
|
||||||
Date dueDate = null;
|
Date dueDate = null;
|
||||||
Date deliveryDate = null;
|
Date deliveryDate = null;
|
||||||
|
String despatchAdviceReferencedDocument = null;
|
||||||
for (int i = 0; i < ExchangedDocumentNodes.getLength(); i++) {
|
for (int i = 0; i < ExchangedDocumentNodes.getLength(); i++) {
|
||||||
|
|
||||||
// nodes.item(i).getTextContent())) {
|
// nodes.item(i).getTextContent())) {
|
||||||
Node exchangedDocumentNode = ExchangedDocumentNodes.item(i);
|
Node exchangedDocumentNode = ExchangedDocumentNodes.item(i);
|
||||||
NodeList exchangedDocumentChilds = exchangedDocumentNode.getChildNodes();
|
NodeList exchangedDocumentChilds = exchangedDocumentNode.getChildNodes();
|
||||||
for (int documentChildIndex = 0; documentChildIndex < exchangedDocumentChilds
|
for (int documentChildIndex = 0; documentChildIndex < exchangedDocumentChilds.getLength(); documentChildIndex++) {
|
||||||
.getLength(); documentChildIndex++) {
|
|
||||||
Node item = exchangedDocumentChilds.item(documentChildIndex);
|
Node item = exchangedDocumentChilds.item(documentChildIndex);
|
||||||
if ((item.getLocalName() != null) && (item.getLocalName().equals("ID"))) {
|
if ((item.getLocalName() != null) && (item.getLocalName().equals("ID"))) {
|
||||||
number = item.getTextContent();
|
number = item.getTextContent();
|
||||||
}
|
}
|
||||||
|
if ((item.getLocalName() != null) && (item.getLocalName().equals("TypeCode"))) {
|
||||||
|
typeCode = item.getTextContent();
|
||||||
|
}
|
||||||
if ((item.getLocalName() != null) && (item.getLocalName().equals("IssueDateTime"))) {
|
if ((item.getLocalName() != null) && (item.getLocalName().equals("IssueDateTime"))) {
|
||||||
NodeList issueDateTimeChilds = item.getChildNodes();
|
NodeList issueDateTimeChilds = item.getChildNodes();
|
||||||
for (int issueDateChildIndex = 0; issueDateChildIndex < issueDateTimeChilds
|
for (int issueDateChildIndex = 0; issueDateChildIndex < issueDateTimeChilds.getLength(); issueDateChildIndex++) {
|
||||||
.getLength(); issueDateChildIndex++) {
|
|
||||||
if ((issueDateTimeChilds.item(issueDateChildIndex).getLocalName() != null)
|
if ((issueDateTimeChilds.item(issueDateChildIndex).getLocalName() != null)
|
||||||
&& (issueDateTimeChilds.item(issueDateChildIndex).getLocalName()
|
&& (issueDateTimeChilds.item(issueDateChildIndex).getLocalName().equals("DateTimeString"))) {
|
||||||
.equals("DateTimeString"))) {
|
issueDate = new SimpleDateFormat("yyyyMMdd").parse(issueDateTimeChilds.item(issueDateChildIndex).getTextContent());
|
||||||
issueDate = new SimpleDateFormat("yyyyMMdd")
|
|
||||||
.parse(issueDateTimeChilds.item(issueDateChildIndex).getTextContent());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -120,17 +127,14 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
if (rootNode.equals("Invoice")) {
|
if (rootNode.equals("Invoice")) {
|
||||||
// UBL...
|
// UBL...
|
||||||
number = extractString("//*[local-name()=\"Invoice\"]/*[local-name()=\"ID\"]").trim();
|
number = extractString("//*[local-name()=\"Invoice\"]/*[local-name()=\"ID\"]").trim();
|
||||||
issueDate = new SimpleDateFormat("yyyy-MM-dd")
|
issueDate = new SimpleDateFormat("yyyy-MM-dd").parse(extractString("//*[local-name()=\"Invoice\"]/*[local-name()=\"IssueDate\"]").trim());
|
||||||
.parse(extractString("//*[local-name()=\"Invoice\"]/*[local-name()=\"IssueDate\"]").trim());
|
|
||||||
String dueDt = extractString("//*[local-name()=\"Invoice\"]/*[local-name()=\"DueDate\"]").trim();
|
String dueDt = extractString("//*[local-name()=\"Invoice\"]/*[local-name()=\"DueDate\"]").trim();
|
||||||
if (dueDt.length() > 0) {
|
if (dueDt.length() > 0) {
|
||||||
dueDate = new SimpleDateFormat("yyyy-MM-dd")
|
dueDate = new SimpleDateFormat("yyyy-MM-dd").parse(dueDt);
|
||||||
.parse(dueDt);
|
|
||||||
}
|
}
|
||||||
String deliveryDt = extractString("//*[local-name()=\"Delivery\"]/*[local-name()=\"ActualDeliveryDate\"]").trim();
|
String deliveryDt = extractString("//*[local-name()=\"Delivery\"]/*[local-name()=\"ActualDeliveryDate\"]").trim();
|
||||||
if (deliveryDt.length() > 0) {
|
if (deliveryDt.length() > 0) {
|
||||||
deliveryDate = new SimpleDateFormat("yyyy-MM-dd")
|
deliveryDate = new SimpleDateFormat("yyyy-MM-dd").parse(deliveryDt);
|
||||||
.parse(deliveryDt);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
xpr = xpath.compile("//*[local-name()=\"ApplicableHeaderTradeDelivery\"]");
|
xpr = xpath.compile("//*[local-name()=\"ApplicableHeaderTradeDelivery\"]");
|
||||||
@@ -140,31 +144,34 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
// nodes.item(i).getTextContent())) {
|
// nodes.item(i).getTextContent())) {
|
||||||
Node headerTradeDeliveryNode = headerTradeDeliveryNodes.item(i);
|
Node headerTradeDeliveryNode = headerTradeDeliveryNodes.item(i);
|
||||||
NodeList headerTradeDeliveryChilds = headerTradeDeliveryNode.getChildNodes();
|
NodeList headerTradeDeliveryChilds = headerTradeDeliveryNode.getChildNodes();
|
||||||
for (int deliveryChildIndex = 0; deliveryChildIndex < headerTradeDeliveryChilds
|
for (int deliveryChildIndex = 0; deliveryChildIndex < headerTradeDeliveryChilds.getLength(); deliveryChildIndex++) {
|
||||||
.getLength(); deliveryChildIndex++) {
|
if (headerTradeDeliveryChilds.item(deliveryChildIndex).getLocalName() != null) {
|
||||||
if ((headerTradeDeliveryChilds.item(deliveryChildIndex).getLocalName() != null)
|
if (headerTradeDeliveryChilds.item(deliveryChildIndex).getLocalName().equals("ActualDeliverySupplyChainEvent")) {
|
||||||
&& (headerTradeDeliveryChilds.item(deliveryChildIndex).getLocalName()
|
|
||||||
.equals("ActualDeliverySupplyChainEvent"))) {
|
|
||||||
NodeList actualDeliveryChilds = headerTradeDeliveryChilds.item(deliveryChildIndex).getChildNodes();
|
NodeList actualDeliveryChilds = headerTradeDeliveryChilds.item(deliveryChildIndex).getChildNodes();
|
||||||
for (int actualDeliveryChildIndex = 0; actualDeliveryChildIndex < actualDeliveryChilds
|
for (int actualDeliveryChildIndex = 0; actualDeliveryChildIndex < actualDeliveryChilds.getLength(); actualDeliveryChildIndex++) {
|
||||||
.getLength(); actualDeliveryChildIndex++) {
|
|
||||||
if ((actualDeliveryChilds.item(actualDeliveryChildIndex).getLocalName() != null)
|
if ((actualDeliveryChilds.item(actualDeliveryChildIndex).getLocalName() != null)
|
||||||
&& (actualDeliveryChilds.item(actualDeliveryChildIndex).getLocalName()
|
&& (actualDeliveryChilds.item(actualDeliveryChildIndex).getLocalName().equals("OccurrenceDateTime"))) {
|
||||||
.equals("OccurrenceDateTime"))) {
|
NodeList occurenceChilds = actualDeliveryChilds.item(actualDeliveryChildIndex).getChildNodes();
|
||||||
NodeList occurenceChilds = actualDeliveryChilds.item(actualDeliveryChildIndex)
|
for (int occurenceChildIndex = 0; occurenceChildIndex < occurenceChilds.getLength(); occurenceChildIndex++) {
|
||||||
.getChildNodes();
|
|
||||||
for (int occurenceChildIndex = 0; occurenceChildIndex < occurenceChilds
|
|
||||||
.getLength(); occurenceChildIndex++) {
|
|
||||||
if ((occurenceChilds.item(occurenceChildIndex).getLocalName() != null)
|
if ((occurenceChilds.item(occurenceChildIndex).getLocalName() != null)
|
||||||
&& (occurenceChilds.item(occurenceChildIndex).getLocalName()
|
&& (occurenceChilds.item(occurenceChildIndex).getLocalName().equals("DateTimeString"))) {
|
||||||
.equals("DateTimeString"))) {
|
deliveryDate = new SimpleDateFormat("yyyyMMdd").parse(occurenceChilds.item(occurenceChildIndex).getTextContent());
|
||||||
deliveryDate = new SimpleDateFormat("yyyyMMdd")
|
|
||||||
.parse(occurenceChilds.item(occurenceChildIndex).getTextContent());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (headerTradeDeliveryChilds.item(deliveryChildIndex).getLocalName().equals("DespatchAdviceReferencedDocument")) {
|
||||||
|
NodeList despatchAdviceChilds = headerTradeDeliveryChilds.item(deliveryChildIndex).getChildNodes();
|
||||||
|
for (int despatchAdviceChildIndex = 0; despatchAdviceChildIndex < despatchAdviceChilds.getLength(); despatchAdviceChildIndex++) {
|
||||||
|
if (despatchAdviceChilds.item(despatchAdviceChildIndex).getLocalName() != null
|
||||||
|
&& despatchAdviceChilds.item(despatchAdviceChildIndex).getLocalName().equals("IssuerAssignedID")) {
|
||||||
|
despatchAdviceReferencedDocument = despatchAdviceChilds.item(despatchAdviceChildIndex).getTextContent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,35 +183,29 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
// nodes.item(i).getTextContent())) {
|
// nodes.item(i).getTextContent())) {
|
||||||
Node headerTradeAgreementNode = headerTradeAgreementNodes.item(i);
|
Node headerTradeAgreementNode = headerTradeAgreementNodes.item(i);
|
||||||
NodeList headerTradeAgreementChilds = headerTradeAgreementNode.getChildNodes();
|
NodeList headerTradeAgreementChilds = headerTradeAgreementNode.getChildNodes();
|
||||||
for (int agreementChildIndex = 0; agreementChildIndex < headerTradeAgreementChilds
|
for (int agreementChildIndex = 0; agreementChildIndex < headerTradeAgreementChilds.getLength(); agreementChildIndex++) {
|
||||||
.getLength(); agreementChildIndex++) {
|
if (headerTradeAgreementChilds.item(agreementChildIndex).getLocalName() != null) {
|
||||||
if ((headerTradeAgreementChilds.item(agreementChildIndex).getLocalName() != null)
|
if (headerTradeAgreementChilds.item(agreementChildIndex).getLocalName().equals("BuyerOrderReferencedDocument")) {
|
||||||
&& (headerTradeAgreementChilds.item(agreementChildIndex).getLocalName()
|
|
||||||
.equals("BuyerOrderReferencedDocument"))) {
|
|
||||||
NodeList buyerOrderChilds = headerTradeAgreementChilds.item(agreementChildIndex).getChildNodes();
|
NodeList buyerOrderChilds = headerTradeAgreementChilds.item(agreementChildIndex).getChildNodes();
|
||||||
for (int buyerOrderChildIndex = 0; buyerOrderChildIndex < buyerOrderChilds
|
for (int buyerOrderChildIndex = 0; buyerOrderChildIndex < buyerOrderChilds.getLength(); buyerOrderChildIndex++) {
|
||||||
.getLength(); buyerOrderChildIndex++) {
|
|
||||||
if ((buyerOrderChilds.item(buyerOrderChildIndex).getLocalName() != null)
|
if ((buyerOrderChilds.item(buyerOrderChildIndex).getLocalName() != null)
|
||||||
&& (buyerOrderChilds.item(buyerOrderChildIndex).getLocalName()
|
&& (buyerOrderChilds.item(buyerOrderChildIndex).getLocalName().equals("IssuerAssignedID"))) {
|
||||||
.equals("IssuerAssignedID"))) {
|
|
||||||
buyerOrderIssuerAssignedID = buyerOrderChilds.item(buyerOrderChildIndex).getTextContent();
|
buyerOrderIssuerAssignedID = buyerOrderChilds.item(buyerOrderChildIndex).getTextContent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((headerTradeAgreementChilds.item(agreementChildIndex).getLocalName() != null)
|
|
||||||
&& (headerTradeAgreementChilds.item(agreementChildIndex).getLocalName()
|
if (headerTradeAgreementChilds.item(agreementChildIndex).getLocalName().equals("SellerOrderReferencedDocument")) {
|
||||||
.equals("SellerOrderReferencedDocument"))) {
|
|
||||||
NodeList sellerOrderChilds = headerTradeAgreementChilds.item(agreementChildIndex).getChildNodes();
|
NodeList sellerOrderChilds = headerTradeAgreementChilds.item(agreementChildIndex).getChildNodes();
|
||||||
for (int sellerOrderChildIndex = 0; sellerOrderChildIndex < sellerOrderChilds
|
for (int sellerOrderChildIndex = 0; sellerOrderChildIndex < sellerOrderChilds.getLength(); sellerOrderChildIndex++) {
|
||||||
.getLength(); sellerOrderChildIndex++) {
|
|
||||||
if ((sellerOrderChilds.item(sellerOrderChildIndex).getLocalName() != null)
|
if ((sellerOrderChilds.item(sellerOrderChildIndex).getLocalName() != null)
|
||||||
&& (sellerOrderChilds.item(sellerOrderChildIndex).getLocalName()
|
&& (sellerOrderChilds.item(sellerOrderChildIndex).getLocalName().equals("IssuerAssignedID"))) {
|
||||||
.equals("IssuerAssignedID"))) {
|
|
||||||
sellerOrderIssuerAssignedID = sellerOrderChilds.item(sellerOrderChildIndex).getTextContent();
|
sellerOrderIssuerAssignedID = sellerOrderChilds.item(sellerOrderChildIndex).getTextContent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,23 +218,16 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
// nodes.item(i).getTextContent())) {
|
// nodes.item(i).getTextContent())) {
|
||||||
Node headerTradeSettlementNode = headerTradeSettlementNodes.item(i);
|
Node headerTradeSettlementNode = headerTradeSettlementNodes.item(i);
|
||||||
NodeList headerTradeSettlementChilds = headerTradeSettlementNode.getChildNodes();
|
NodeList headerTradeSettlementChilds = headerTradeSettlementNode.getChildNodes();
|
||||||
for (int settlementChildIndex = 0; settlementChildIndex < headerTradeSettlementChilds
|
for (int settlementChildIndex = 0; settlementChildIndex < headerTradeSettlementChilds.getLength(); settlementChildIndex++) {
|
||||||
.getLength(); settlementChildIndex++) {
|
|
||||||
if ((headerTradeSettlementChilds.item(settlementChildIndex).getLocalName() != null)
|
if ((headerTradeSettlementChilds.item(settlementChildIndex).getLocalName() != null)
|
||||||
&& (headerTradeSettlementChilds.item(settlementChildIndex).getLocalName()
|
&& (headerTradeSettlementChilds.item(settlementChildIndex).getLocalName().equals("SpecifiedTradePaymentTerms"))) {
|
||||||
.equals("SpecifiedTradePaymentTerms"))) {
|
|
||||||
NodeList paymentTermChilds = headerTradeSettlementChilds.item(settlementChildIndex).getChildNodes();
|
NodeList paymentTermChilds = headerTradeSettlementChilds.item(settlementChildIndex).getChildNodes();
|
||||||
for (int paymentTermChildIndex = 0; paymentTermChildIndex < paymentTermChilds
|
for (int paymentTermChildIndex = 0; paymentTermChildIndex < paymentTermChilds.getLength(); paymentTermChildIndex++) {
|
||||||
.getLength(); paymentTermChildIndex++) {
|
if ((paymentTermChilds.item(paymentTermChildIndex).getLocalName() != null) && (paymentTermChilds.item(paymentTermChildIndex).getLocalName().equals("DueDateDateTime"))) {
|
||||||
if ((paymentTermChilds.item(paymentTermChildIndex).getLocalName() != null) && (paymentTermChilds
|
|
||||||
.item(paymentTermChildIndex).getLocalName().equals("DueDateDateTime"))) {
|
|
||||||
NodeList dueDateChilds = paymentTermChilds.item(paymentTermChildIndex).getChildNodes();
|
NodeList dueDateChilds = paymentTermChilds.item(paymentTermChildIndex).getChildNodes();
|
||||||
for (int dueDateChildIndex = 0; dueDateChildIndex < dueDateChilds
|
for (int dueDateChildIndex = 0; dueDateChildIndex < dueDateChilds.getLength(); dueDateChildIndex++) {
|
||||||
.getLength(); dueDateChildIndex++) {
|
if ((dueDateChilds.item(dueDateChildIndex).getLocalName() != null) && (dueDateChilds.item(dueDateChildIndex).getLocalName().equals("DateTimeString"))) {
|
||||||
if ((dueDateChilds.item(dueDateChildIndex).getLocalName() != null) && (dueDateChilds
|
dueDate = new SimpleDateFormat("yyyyMMdd").parse(dueDateChilds.item(dueDateChildIndex).getTextContent());
|
||||||
.item(dueDateChildIndex).getLocalName().equals("DateTimeString"))) {
|
|
||||||
dueDate = new SimpleDateFormat("yyyyMMdd")
|
|
||||||
.parse(dueDateChilds.item(dueDateChildIndex).getTextContent());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -241,34 +235,28 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((headerTradeSettlementChilds.item(settlementChildIndex).getLocalName() != null)
|
if ((headerTradeSettlementChilds.item(settlementChildIndex).getLocalName() != null)
|
||||||
&& (headerTradeSettlementChilds.item(settlementChildIndex).getLocalName()
|
&& (headerTradeSettlementChilds.item(settlementChildIndex).getLocalName().equals("SpecifiedTradeSettlementPaymentMeans"))) {
|
||||||
.equals("SpecifiedTradeSettlementPaymentMeans"))) {
|
|
||||||
NodeList paymentMeansChilds = headerTradeSettlementChilds.item(settlementChildIndex).getChildNodes();
|
NodeList paymentMeansChilds = headerTradeSettlementChilds.item(settlementChildIndex).getChildNodes();
|
||||||
for (int paymentMeansChildIndex = 0; paymentMeansChildIndex < paymentMeansChilds
|
|
||||||
.getLength(); paymentMeansChildIndex++) {
|
|
||||||
String IBAN = null, BIC = null;
|
String IBAN = null, BIC = null;
|
||||||
if ((paymentMeansChilds.item(paymentMeansChildIndex).getLocalName() != null) && (paymentMeansChilds
|
for (int paymentMeansChildIndex = 0; paymentMeansChildIndex < paymentMeansChilds.getLength(); paymentMeansChildIndex++) {
|
||||||
.item(paymentMeansChildIndex).getLocalName().equals("PayeePartyCreditorFinancialAccount"))) {
|
if ((paymentMeansChilds.item(paymentMeansChildIndex).getLocalName() != null) && (paymentMeansChilds.item(paymentMeansChildIndex).getLocalName().equals("PayeePartyCreditorFinancialAccount"))) {
|
||||||
NodeList accountChilds = paymentMeansChilds.item(paymentMeansChildIndex).getChildNodes();
|
NodeList accountChilds = paymentMeansChilds.item(paymentMeansChildIndex).getChildNodes();
|
||||||
for (int accountChildIndex = 0; accountChildIndex < accountChilds
|
for (int accountChildIndex = 0; accountChildIndex < accountChilds.getLength(); accountChildIndex++) {
|
||||||
.getLength(); accountChildIndex++) {
|
if ((accountChilds.item(accountChildIndex).getLocalName() != null) && (accountChilds.item(accountChildIndex).getLocalName().equals("IBANID"))) {//CII
|
||||||
if ((accountChilds.item(accountChildIndex).getLocalName() != null) && (accountChilds
|
|
||||||
.item(accountChildIndex).getLocalName().equals("IBANID"))) {//CII
|
|
||||||
IBAN = accountChilds.item(accountChildIndex).getTextContent();
|
IBAN = accountChilds.item(accountChildIndex).getTextContent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((paymentMeansChilds.item(paymentMeansChildIndex).getLocalName() != null) && (paymentMeansChilds
|
if ((paymentMeansChilds.item(paymentMeansChildIndex).getLocalName() != null) && (paymentMeansChilds.item(paymentMeansChildIndex).getLocalName().equals("PayeeSpecifiedCreditorFinancialInstitution"))) {
|
||||||
.item(paymentMeansChildIndex).getLocalName().equals("PayeePartyCreditorFinancialInstitution"))) {
|
|
||||||
NodeList accountChilds = paymentMeansChilds.item(paymentMeansChildIndex).getChildNodes();
|
NodeList accountChilds = paymentMeansChilds.item(paymentMeansChildIndex).getChildNodes();
|
||||||
for (int accountChildIndex = 0; accountChildIndex < accountChilds
|
for (int accountChildIndex = 0; accountChildIndex < accountChilds.getLength(); accountChildIndex++) {
|
||||||
.getLength(); accountChildIndex++) {
|
if ((accountChilds.item(accountChildIndex).getLocalName() != null) && (accountChilds.item(accountChildIndex).getLocalName().equals("BICID"))) {//CII
|
||||||
if ((accountChilds.item(accountChildIndex).getLocalName() != null) && (accountChilds
|
|
||||||
.item(accountChildIndex).getLocalName().equals("BICID"))) {//CII
|
|
||||||
BIC = accountChilds.item(accountChildIndex).getTextContent();
|
BIC = accountChilds.item(accountChildIndex).getTextContent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
if (IBAN != null) {
|
if (IBAN != null) {
|
||||||
BankDetails bd = new BankDetails(IBAN);
|
BankDetails bd = new BankDetails(IBAN);
|
||||||
if (BIC != null) {
|
if (BIC != null) {
|
||||||
@@ -279,7 +267,6 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
xpr = xpath.compile("//*[local-name()=\"PaymentMeans\"]"); //UBL only
|
xpr = xpath.compile("//*[local-name()=\"PaymentMeans\"]"); //UBL only
|
||||||
@@ -289,16 +276,12 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
// nodes.item(i).getTextContent())) {
|
// nodes.item(i).getTextContent())) {
|
||||||
Node paymentMeansNode = paymentMeansNodes.item(i);
|
Node paymentMeansNode = paymentMeansNodes.item(i);
|
||||||
NodeList paymentMeansChilds = paymentMeansNode.getChildNodes();
|
NodeList paymentMeansChilds = paymentMeansNode.getChildNodes();
|
||||||
for (int meansChildIndex = 0; meansChildIndex < paymentMeansChilds
|
for (int meansChildIndex = 0; meansChildIndex < paymentMeansChilds.getLength(); meansChildIndex++) {
|
||||||
.getLength(); meansChildIndex++) {
|
|
||||||
if ((paymentMeansChilds.item(meansChildIndex).getLocalName() != null)
|
if ((paymentMeansChilds.item(meansChildIndex).getLocalName() != null)
|
||||||
&& (paymentMeansChilds.item(meansChildIndex).getLocalName()
|
&& (paymentMeansChilds.item(meansChildIndex).getLocalName().equals("PayeeFinancialAccount"))) {
|
||||||
.equals("PayeeFinancialAccount"))) {
|
|
||||||
NodeList paymentTermChilds = paymentMeansChilds.item(meansChildIndex).getChildNodes();
|
NodeList paymentTermChilds = paymentMeansChilds.item(meansChildIndex).getChildNodes();
|
||||||
for (int paymentTermChildIndex = 0; paymentTermChildIndex < paymentTermChilds
|
for (int paymentTermChildIndex = 0; paymentTermChildIndex < paymentTermChilds.getLength(); paymentTermChildIndex++) {
|
||||||
.getLength(); paymentTermChildIndex++) {
|
if ((paymentTermChilds.item(paymentTermChildIndex).getLocalName() != null) && (paymentTermChilds.item(paymentTermChildIndex).getLocalName().equals("ID"))) {
|
||||||
if ((paymentTermChilds.item(paymentTermChildIndex).getLocalName() != null) && (paymentTermChilds
|
|
||||||
.item(paymentTermChildIndex).getLocalName().equals("ID"))) {
|
|
||||||
String IBAN = paymentTermChilds.item(paymentTermChildIndex).getTextContent();
|
String IBAN = paymentTermChilds.item(paymentTermChildIndex).getTextContent();
|
||||||
if (IBAN != null) {
|
if (IBAN != null) {
|
||||||
BankDetails bd = new BankDetails(IBAN);
|
BankDetails bd = new BankDetails(IBAN);
|
||||||
@@ -310,25 +293,31 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
zpp.setDueDate(dueDate).setDeliveryDate(deliveryDate).setIssueDate(issueDate)
|
zpp.setDueDate(dueDate).setDeliveryDate(deliveryDate).setIssueDate(issueDate).setSender(new TradeParty(SellerNodes)).setRecipient(new TradeParty(BuyerNodes)).setNumber(number).setDocumentCode(typeCode);
|
||||||
.setSender(new TradeParty(SellerNodes)).setRecipient(new TradeParty(BuyerNodes)).setNumber(number);
|
|
||||||
bankDetails.forEach(bankDetail -> zpp.getSender().addBankDetails(bankDetail));
|
bankDetails.forEach(bankDetail -> zpp.getSender().addBankDetails(bankDetail));
|
||||||
|
|
||||||
|
if (payeeNodes.getLength() > 0) {
|
||||||
|
zpp.setPayee(new TradeParty(payeeNodes));
|
||||||
|
}
|
||||||
|
|
||||||
if (buyerOrderIssuerAssignedID != null) {
|
if (buyerOrderIssuerAssignedID != null) {
|
||||||
zpp.setBuyerOrderReferencedDocumentID(buyerOrderIssuerAssignedID);
|
zpp.setBuyerOrderReferencedDocumentID(buyerOrderIssuerAssignedID);
|
||||||
}
|
}
|
||||||
if (sellerOrderIssuerAssignedID != null) {
|
if (sellerOrderIssuerAssignedID != null) {
|
||||||
zpp.setSellerOrderReferencedDocumentID(sellerOrderIssuerAssignedID);
|
zpp.setSellerOrderReferencedDocumentID(sellerOrderIssuerAssignedID);
|
||||||
}
|
}
|
||||||
|
if (despatchAdviceReferencedDocument != null) {
|
||||||
|
zpp.setDespatchAdviceReferencedDocumentID(despatchAdviceReferencedDocument);
|
||||||
|
}
|
||||||
|
|
||||||
//.addItem(new Item(new Product("Testprodukt","","C62",BigDecimal.ZERO),amount,new BigDecimal(1.0)))
|
|
||||||
zpp.setOwnOrganisationName(extractString("//*[local-name()=\"SellerTradeParty\"]/*[local-name()=\"Name\"]|//*[local-name()=\"AccountingSupplierParty\"]/*[local-name()=\"Party\"]/*[local-name()=\"PartyName\"]").trim());
|
zpp.setOwnOrganisationName(extractString("//*[local-name()=\"SellerTradeParty\"]/*[local-name()=\"Name\"]|//*[local-name()=\"AccountingSupplierParty\"]/*[local-name()=\"Party\"]/*[local-name()=\"PartyName\"]").trim());
|
||||||
|
|
||||||
xpr = xpath.compile("//*[local-name()=\"BuyerReference\"]");
|
xpr = xpath.compile("//*[local-name()=\"BuyerReference\"]");
|
||||||
String buyerReference = null;
|
String buyerReference = null;
|
||||||
totalNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
prepaidNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
if (totalNodes.getLength() > 0) {
|
if (prepaidNodes.getLength() > 0) {
|
||||||
buyerReference = totalNodes.item(0).getTextContent();
|
buyerReference = prepaidNodes.item(0).getTextContent();
|
||||||
}
|
}
|
||||||
if (buyerReference != null) {
|
if (buyerReference != null) {
|
||||||
zpp.setReferenceNumber(buyerReference);
|
zpp.setReferenceNumber(buyerReference);
|
||||||
@@ -346,6 +335,16 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// now handling base64 encoded attachments AttachmentBinaryObject=CII, EmbeddedDocumentBinaryObject=UBL
|
||||||
|
xpr = xpath.compile("//*[local-name()=\"AttachmentBinaryObject\"]|//*[local-name()=\"EmbeddedDocumentBinaryObject\"]");
|
||||||
|
NodeList attachmentNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
|
for (int i = 0; i < attachmentNodes.getLength(); i++) {
|
||||||
|
FileAttachment fa=new FileAttachment(attachmentNodes.item(i).getAttributes().getNamedItem("filename").getNodeValue(),attachmentNodes.item(i).getAttributes().getNamedItem("mimeCode").getNodeValue(),"Data", Base64.getDecoder().decode(attachmentNodes.item(i).getTextContent()));
|
||||||
|
fileAttachments.add(fa);
|
||||||
|
// filename = "Aufmass.png" mimeCode = "image/png"
|
||||||
|
//EmbeddedDocumentBinaryObject cbc:EmbeddedDocumentBinaryObject mimeCode="image/png" filename="Aufmass.png"
|
||||||
|
}
|
||||||
|
|
||||||
// item level charges+allowances are not yet handled but a lower item price will
|
// item level charges+allowances are not yet handled but a lower item price will
|
||||||
// be read,
|
// be read,
|
||||||
// so the invoice remains arithmetically correct
|
// so the invoice remains arithmetically correct
|
||||||
@@ -357,6 +356,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
boolean isCharge = true;
|
boolean isCharge = true;
|
||||||
String chargeAmount = null;
|
String chargeAmount = null;
|
||||||
String reason = null;
|
String reason = null;
|
||||||
|
String reasonCode = null;
|
||||||
String taxPercent = null;
|
String taxPercent = null;
|
||||||
for (int chargeChildIndex = 0; chargeChildIndex < chargeNodeChilds.getLength(); chargeChildIndex++) {
|
for (int chargeChildIndex = 0; chargeChildIndex < chargeNodeChilds.getLength(); chargeChildIndex++) {
|
||||||
String chargeChildName = chargeNodeChilds.item(chargeChildIndex).getLocalName();
|
String chargeChildName = chargeNodeChilds.item(chargeChildIndex).getLocalName();
|
||||||
@@ -364,25 +364,23 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
|
|
||||||
if (chargeChildName.equals("ChargeIndicator")) {
|
if (chargeChildName.equals("ChargeIndicator")) {
|
||||||
NodeList indicatorChilds = chargeNodeChilds.item(chargeChildIndex).getChildNodes();
|
NodeList indicatorChilds = chargeNodeChilds.item(chargeChildIndex).getChildNodes();
|
||||||
for (int indicatorChildIndex = 0; indicatorChildIndex < indicatorChilds
|
for (int indicatorChildIndex = 0; indicatorChildIndex < indicatorChilds.getLength(); indicatorChildIndex++) {
|
||||||
.getLength(); indicatorChildIndex++) {
|
|
||||||
if ((indicatorChilds.item(indicatorChildIndex).getLocalName() != null)
|
if ((indicatorChilds.item(indicatorChildIndex).getLocalName() != null)
|
||||||
&& (indicatorChilds.item(indicatorChildIndex).getLocalName()
|
&& (indicatorChilds.item(indicatorChildIndex).getLocalName().equals("Indicator"))) {
|
||||||
.equals("Indicator"))) {
|
isCharge = indicatorChilds.item(indicatorChildIndex).getTextContent().equalsIgnoreCase("true");
|
||||||
isCharge = indicatorChilds.item(indicatorChildIndex).getTextContent()
|
|
||||||
.equalsIgnoreCase("true");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (chargeChildName.equals("ActualAmount")) {
|
} else if (chargeChildName.equals("ActualAmount")) {
|
||||||
chargeAmount = chargeNodeChilds.item(chargeChildIndex).getTextContent();
|
chargeAmount = chargeNodeChilds.item(chargeChildIndex).getTextContent();
|
||||||
} else if (chargeChildName.equals("Reason")) {
|
} else if (chargeChildName.equals("Reason")) {
|
||||||
reason = chargeNodeChilds.item(chargeChildIndex).getTextContent();
|
reason = chargeNodeChilds.item(chargeChildIndex).getTextContent();
|
||||||
|
} else if (chargeChildName.equals("ReasonCode")) {
|
||||||
|
reasonCode = chargeNodeChilds.item(chargeChildIndex).getTextContent();
|
||||||
} else if (chargeChildName.equals("CategoryTradeTax")) {
|
} else if (chargeChildName.equals("CategoryTradeTax")) {
|
||||||
NodeList taxChilds = chargeNodeChilds.item(chargeChildIndex).getChildNodes();
|
NodeList taxChilds = chargeNodeChilds.item(chargeChildIndex).getChildNodes();
|
||||||
for (int taxChildIndex = 0; taxChildIndex < taxChilds.getLength(); taxChildIndex++) {
|
for (int taxChildIndex = 0; taxChildIndex < taxChilds.getLength(); taxChildIndex++) {
|
||||||
String taxItemName = taxChilds.item(taxChildIndex).getLocalName();
|
String taxItemName = taxChilds.item(taxChildIndex).getLocalName();
|
||||||
if ((taxItemName != null) && (taxItemName.equals("RateApplicablePercent")
|
if ((taxItemName != null) && (taxItemName.equals("RateApplicablePercent") || taxItemName.equals("ApplicablePercent"))) {
|
||||||
|| taxItemName.equals("ApplicablePercent"))) {
|
|
||||||
taxPercent = taxChilds.item(taxChildIndex).getTextContent();
|
taxPercent = taxChilds.item(taxChildIndex).getTextContent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -395,16 +393,21 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
if (reason != null) {
|
if (reason != null) {
|
||||||
c.setReason(reason);
|
c.setReason(reason);
|
||||||
}
|
}
|
||||||
|
if (reasonCode != null) {
|
||||||
|
c.setReasonCode(reasonCode);
|
||||||
|
}
|
||||||
if (taxPercent != null) {
|
if (taxPercent != null) {
|
||||||
c.setTaxPercent(new BigDecimal(taxPercent));
|
c.setTaxPercent(new BigDecimal(taxPercent));
|
||||||
}
|
}
|
||||||
|
|
||||||
zpp.addCharge(c);
|
zpp.addCharge(c);
|
||||||
} else {
|
} else {
|
||||||
Allowance a = new Allowance(new BigDecimal(chargeAmount));
|
Allowance a = new Allowance(new BigDecimal(chargeAmount));
|
||||||
if (reason != null) {
|
if (reason != null) {
|
||||||
a.setReason(reason);
|
a.setReason(reason);
|
||||||
}
|
}
|
||||||
|
if (reasonCode != null) {
|
||||||
|
a.setReasonCode(reasonCode);
|
||||||
|
}
|
||||||
if (taxPercent != null) {
|
if (taxPercent != null) {
|
||||||
a.setTaxPercent(new BigDecimal(taxPercent));
|
a.setTaxPercent(new BigDecimal(taxPercent));
|
||||||
}
|
}
|
||||||
@@ -414,7 +417,8 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TransactionCalculator tc = new TransactionCalculator(zpp);
|
TransactionCalculator tc = new TransactionCalculator(zpp);
|
||||||
String expectedStringTotalGross = tc.getGrandTotal().toPlainString();
|
String expectedStringTotalGross = tc.getGrandTotal()
|
||||||
|
.subtract(Objects.requireNonNullElse(zpp.getTotalPrepaidAmount(), BigDecimal.ZERO)).toPlainString();
|
||||||
EStandard whichType;
|
EStandard whichType;
|
||||||
try {
|
try {
|
||||||
whichType = getStandard();
|
whichType = getStandard();
|
||||||
@@ -434,6 +438,15 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @return the file attachments embedded in XML (using base64) decoded as byte array,
|
||||||
|
* for PDF embedded files in FX use getFileAttachmentsPDF()
|
||||||
|
*/
|
||||||
|
public List<FileAttachment> getFileAttachmentsXML() {
|
||||||
|
return fileAttachments;
|
||||||
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* This will parse a XML into a invoice object
|
* This will parse a XML into a invoice object
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ import org.apache.fop.configuration.ConfigurationException;
|
|||||||
import org.apache.fop.configuration.DefaultConfigurationBuilder;
|
import org.apache.fop.configuration.DefaultConfigurationBuilder;
|
||||||
import org.apache.xmlgraphics.util.MimeConstants;
|
import org.apache.xmlgraphics.util.MimeConstants;
|
||||||
import org.mustangproject.ClasspathResolverURIAdapter;
|
import org.mustangproject.ClasspathResolverURIAdapter;
|
||||||
|
import org.mustangproject.EStandard;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -96,6 +97,7 @@ public class ZUGFeRDVisualizer {
|
|||||||
private TransformerFactory mFactory = null;
|
private TransformerFactory mFactory = null;
|
||||||
private Templates mXsltXRTemplate = null;
|
private Templates mXsltXRTemplate = null;
|
||||||
private Templates mXsltUBLTemplate = null;
|
private Templates mXsltUBLTemplate = null;
|
||||||
|
private Templates mXsltCIOTemplate = null;
|
||||||
private Templates mXsltHTMLTemplate = null;
|
private Templates mXsltHTMLTemplate = null;
|
||||||
private Templates mXsltPDFTemplate = null;
|
private Templates mXsltPDFTemplate = null;
|
||||||
private Templates mXsltZF1HTMLTemplate = null;
|
private Templates mXsltZF1HTMLTemplate = null;
|
||||||
@@ -106,14 +108,46 @@ public class ZUGFeRDVisualizer {
|
|||||||
mFactory.setURIResolver(new ClasspathResourceURIResolver());
|
mFactory.setURIResolver(new ClasspathResourceURIResolver());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* returns which standard is used, CII or UBL
|
||||||
|
* @param fis inputstream (will be consumed)
|
||||||
|
* @return (facturx = cii)
|
||||||
|
*/
|
||||||
|
public EStandard findOutStandardFromRootNode(InputStream fis) {
|
||||||
|
|
||||||
|
String zf1Signature = "CrossIndustryDocument";
|
||||||
|
String zf2Signature = "CrossIndustryInvoice";
|
||||||
|
String ublSignature = "Invoice";
|
||||||
|
String ublCreditNoteSignature = "CreditNote";
|
||||||
|
String cioSignature = "SCRDMCCBDACIOMessageStructure";
|
||||||
|
|
||||||
|
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
||||||
|
dbf.setNamespaceAware(true);
|
||||||
|
try {
|
||||||
|
DocumentBuilder db = dbf.newDocumentBuilder();
|
||||||
|
Document doc = db.parse(new InputSource(fis));
|
||||||
|
Element root = doc.getDocumentElement();
|
||||||
|
if (root.getLocalName().equals(zf1Signature)) {
|
||||||
|
return EStandard.zugferd;
|
||||||
|
} else if (root.getLocalName().equals(zf2Signature)) {
|
||||||
|
return EStandard.facturx;
|
||||||
|
} else if (root.getLocalName().equals(ublSignature)) {
|
||||||
|
return EStandard.ubl;
|
||||||
|
} else if (root.getLocalName().equals(ublCreditNoteSignature)) {
|
||||||
|
return EStandard.ubl_creditnote;
|
||||||
|
} else if (root.getLocalName().equals(cioSignature)) {
|
||||||
|
return EStandard.orderx;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
LOGGER.error("Failed to recognize standard", e);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public String visualize(String xmlFilename, Language lang)
|
public String visualize(String xmlFilename, Language lang)
|
||||||
throws FileNotFoundException, TransformerException, IOException, SAXException, ParserConfigurationException {
|
throws FileNotFoundException, TransformerException, IOException, SAXException, ParserConfigurationException {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (mXsltXRTemplate == null) {
|
|
||||||
mXsltXRTemplate = mFactory.newTemplates(
|
|
||||||
new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/cii-xr.xsl")));
|
|
||||||
}
|
|
||||||
if (mXsltPDFTemplate == null) {
|
if (mXsltPDFTemplate == null) {
|
||||||
mXsltPDFTemplate = mFactory.newTemplates(
|
mXsltPDFTemplate = mFactory.newTemplates(
|
||||||
new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/xr-pdf.xsl")));
|
new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/xr-pdf.xsl")));
|
||||||
@@ -147,32 +181,31 @@ public class ZUGFeRDVisualizer {
|
|||||||
ByteArrayOutputStream iaos = new ByteArrayOutputStream();
|
ByteArrayOutputStream iaos = new ByteArrayOutputStream();
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
|
||||||
String zf1Signature = "CrossIndustryDocument";
|
|
||||||
String zf2Signature = "CrossIndustryInvoice";
|
|
||||||
String ublSignature = "Invoice";
|
|
||||||
String ublCreditNoteSignature = "CreditNote";
|
|
||||||
boolean doPostProcessing = false;
|
boolean doPostProcessing = false;
|
||||||
|
|
||||||
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
|
|
||||||
dbf.setNamespaceAware(true);
|
|
||||||
DocumentBuilder db = dbf.newDocumentBuilder();
|
|
||||||
Document doc = db.parse(new InputSource(fis));
|
|
||||||
Element root = doc.getDocumentElement();
|
|
||||||
fis = new FileInputStream(xmlFilename); // fis wont reset() so re-read from beginning
|
fis = new FileInputStream(xmlFilename); // fis wont reset() so re-read from beginning
|
||||||
if (root.getLocalName().equals(zf1Signature)) {
|
EStandard thestandard = findOutStandardFromRootNode(fis);
|
||||||
|
fis = new FileInputStream(xmlFilename); // fis wont reset() so re-read from beginning
|
||||||
|
|
||||||
|
if (thestandard == EStandard.zugferd) {
|
||||||
applyZF1XSLT(fis, baos);
|
applyZF1XSLT(fis, baos);
|
||||||
} else if (root.getLocalName().equals(zf2Signature)) {
|
} else if (thestandard == EStandard.facturx) {
|
||||||
//zf2 or fx
|
//zf2 or fx
|
||||||
applyZF2XSLT(fis, iaos);
|
applyZF2XSLT(fis, iaos);
|
||||||
doPostProcessing = true;
|
doPostProcessing = true;
|
||||||
} else if (root.getLocalName().equals(ublSignature)) {
|
} else if (thestandard == EStandard.ubl) {
|
||||||
//zf2 or fx
|
//zf2 or fx
|
||||||
applyUBL2XSLT(fis, iaos);
|
applyUBL2XSLT(fis, iaos);
|
||||||
doPostProcessing = true;
|
doPostProcessing = true;
|
||||||
} else if (root.getLocalName().equals(ublCreditNoteSignature)) {
|
} else if (thestandard == EStandard.ubl_creditnote) {
|
||||||
//zf2 or fx
|
//zf2 or fx
|
||||||
applyUBLCreditNote2XSLT(fis, iaos);
|
applyUBLCreditNote2XSLT(fis, iaos);
|
||||||
doPostProcessing = true;
|
doPostProcessing = true;
|
||||||
|
} else if (thestandard == EStandard.orderx) {
|
||||||
|
//zf2 or fx
|
||||||
|
applyCIO2XSLT(fis, iaos);
|
||||||
|
doPostProcessing = true;
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalArgumentException("File does not look like CII or UBL");
|
throw new IllegalArgumentException("File does not look like CII or UBL");
|
||||||
}
|
}
|
||||||
@@ -212,11 +245,11 @@ public class ZUGFeRDVisualizer {
|
|||||||
protected String toFOP(String xmlFilename)
|
protected String toFOP(String xmlFilename)
|
||||||
throws FileNotFoundException, TransformerException {
|
throws FileNotFoundException, TransformerException {
|
||||||
|
|
||||||
|
FileInputStream fis = new FileInputStream(xmlFilename);
|
||||||
|
EStandard theStandard = findOutStandardFromRootNode(fis);
|
||||||
|
fis = new FileInputStream(xmlFilename);//rewind :-(
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (mXsltXRTemplate == null) {
|
|
||||||
mXsltXRTemplate = mFactory.newTemplates(
|
|
||||||
new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/cii-xr.xsl")));
|
|
||||||
}
|
|
||||||
if (mXsltPDFTemplate == null) {
|
if (mXsltPDFTemplate == null) {
|
||||||
mXsltPDFTemplate = mFactory.newTemplates(
|
mXsltPDFTemplate = mFactory.newTemplates(
|
||||||
new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/xr-pdf.xsl")));
|
new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/xr-pdf.xsl")));
|
||||||
@@ -225,19 +258,18 @@ public class ZUGFeRDVisualizer {
|
|||||||
LOGGER.error("Failed to init XSLT templates", ex);
|
LOGGER.error("Failed to init XSLT templates", ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
FileInputStream fis = new FileInputStream(xmlFilename);
|
|
||||||
try {
|
|
||||||
// TODO why are we reading the whole file here and discarding the content?
|
|
||||||
new String(Files.readAllBytes(Paths.get(xmlFilename)), StandardCharsets.UTF_8);
|
|
||||||
} catch (IOException e2) {
|
|
||||||
LOGGER.error("Failed to read file", e2);
|
|
||||||
}
|
|
||||||
|
|
||||||
ByteArrayOutputStream iaos = new ByteArrayOutputStream();
|
ByteArrayOutputStream iaos = new ByteArrayOutputStream();
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
|
|
||||||
//zf2 or fx
|
//zf2 or fx
|
||||||
|
if (theStandard == EStandard.facturx) {
|
||||||
applyZF2XSLT(fis, iaos);
|
applyZF2XSLT(fis, iaos);
|
||||||
|
} else if (theStandard == EStandard.ubl) {
|
||||||
|
applyUBL2XSLT(fis, iaos);
|
||||||
|
} else if (theStandard == EStandard.ubl_creditnote) {
|
||||||
|
applyUBLCreditNote2XSLT(fis, iaos);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
PipedInputStream in = new PipedInputStream();
|
PipedInputStream in = new PipedInputStream();
|
||||||
PipedOutputStream out;
|
PipedOutputStream out;
|
||||||
@@ -272,33 +304,18 @@ public class ZUGFeRDVisualizer {
|
|||||||
public void toPDF(String xmlFilename, String pdfFilename) {
|
public void toPDF(String xmlFilename, String pdfFilename) {
|
||||||
|
|
||||||
// the writing part
|
// the writing part
|
||||||
File CIIinputFile = new File(xmlFilename);
|
File XMLinputFile = new File(xmlFilename);
|
||||||
|
|
||||||
String result = null;
|
String result = null;
|
||||||
|
|
||||||
ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer();
|
|
||||||
/* remove file endings so that tests can also pass after checking
|
/* remove file endings so that tests can also pass after checking
|
||||||
out from git with arbitrary options (which may include CSRF changes)
|
out from git with arbitrary options (which may include CSRF changes)
|
||||||
*/
|
*/
|
||||||
try {
|
try {
|
||||||
result = zvi.toFOP(CIIinputFile.getAbsolutePath());
|
result = this.toFOP(XMLinputFile.getAbsolutePath());
|
||||||
} catch (FileNotFoundException | TransformerException e) {
|
} catch (FileNotFoundException | TransformerException e) {
|
||||||
LOGGER.error("Failed to apply FOP", e);
|
LOGGER.error("Failed to apply FOP", e);
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
FopConfParser parser = null;
|
|
||||||
try {
|
|
||||||
//parsing configuration
|
|
||||||
parser = new FopConfParser(CLASS_LOADER.getResourceAsStream("fop-config.xconf"), new URI("file:///"));
|
|
||||||
|
|
||||||
} catch (SAXException e) {
|
|
||||||
throw new UncheckedIOException(new IOException(e));
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new UncheckedIOException(e);
|
|
||||||
} catch (URISyntaxException e) {
|
|
||||||
Logger.getLogger(ZUGFeRDVisualizer.class.getName()).log(Level.SEVERE, null, e);
|
|
||||||
}*/
|
|
||||||
// FopFactoryBuilder builder = parser.getFopFactoryBuilder();
|
|
||||||
DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();
|
DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();
|
||||||
|
|
||||||
Configuration cfg = null;
|
Configuration cfg = null;
|
||||||
@@ -321,7 +338,7 @@ public class ZUGFeRDVisualizer {
|
|||||||
|
|
||||||
FOUserAgent userAgent = fopFactory.newFOUserAgent();
|
FOUserAgent userAgent = fopFactory.newFOUserAgent();
|
||||||
|
|
||||||
userAgent.getRendererOptions().put("pdf-a-mode", "PDF/A-1b");
|
userAgent.getRendererOptions().put("pdf-a-mode", "PDF/A-3b");
|
||||||
|
|
||||||
// Step 2: Set up output stream.
|
// Step 2: Set up output stream.
|
||||||
// Note: Using BufferedOutputStream for performance reasons (helpful with FileOutputStreams).
|
// Note: Using BufferedOutputStream for performance reasons (helpful with FileOutputStreams).
|
||||||
@@ -345,8 +362,6 @@ public class ZUGFeRDVisualizer {
|
|||||||
// Step 6: Start XSLT transformation and FOP processing
|
// Step 6: Start XSLT transformation and FOP processing
|
||||||
transformer.transform(src, res);
|
transformer.transform(src, res);
|
||||||
|
|
||||||
//Files.write(Paths.get("C:\\Users\\jstaerk\\temp\\fop.pdf"), res.toString().getBytes(StandardCharsets.UTF_8));
|
|
||||||
|
|
||||||
} catch (FOPException | IOException | TransformerException e) {
|
} catch (FOPException | IOException | TransformerException e) {
|
||||||
LOGGER.error("Failed to create PDF", e);
|
LOGGER.error("Failed to create PDF", e);
|
||||||
}
|
}
|
||||||
@@ -354,11 +369,27 @@ public class ZUGFeRDVisualizer {
|
|||||||
|
|
||||||
protected void applyZF2XSLT(final InputStream xmlFile, final OutputStream HTMLOutstream)
|
protected void applyZF2XSLT(final InputStream xmlFile, final OutputStream HTMLOutstream)
|
||||||
throws TransformerException {
|
throws TransformerException {
|
||||||
|
if (mXsltXRTemplate == null) {
|
||||||
|
mXsltXRTemplate = mFactory.newTemplates(
|
||||||
|
new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/cii-xr.xsl")));
|
||||||
|
|
||||||
|
}
|
||||||
Transformer transformer = mXsltXRTemplate.newTransformer();
|
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)
|
||||||
|
throws TransformerException {
|
||||||
|
if (mXsltCIOTemplate == null) {
|
||||||
|
mXsltCIOTemplate = mFactory.newTemplates(
|
||||||
|
new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/cio-xr.xsl")));
|
||||||
|
}
|
||||||
|
Transformer transformer = mXsltCIOTemplate.newTransformer();
|
||||||
|
|
||||||
|
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 {
|
throws TransformerException {
|
||||||
if (mXsltUBLTemplate == null) {
|
if (mXsltUBLTemplate == null) {
|
||||||
|
|||||||
@@ -30,5 +30,5 @@ public class TaxCategoryCodeTypeConstants {
|
|||||||
public static final String UNTAXEDSERVICE = "O";
|
public static final String UNTAXEDSERVICE = "O";
|
||||||
public static final String INTRACOMMUNITY = "K";
|
public static final String INTRACOMMUNITY = "K";
|
||||||
|
|
||||||
public static Set<String> CATEGORY_CODES_WITH_EXEMPTION_REASON = Stream.of(INTRACOMMUNITY, REVERSECHARGE).collect(Collectors.toSet());
|
public static Set<String> CATEGORY_CODES_WITH_EXEMPTION_REASON = Stream.of(INTRACOMMUNITY, REVERSECHARGE, TAXEXEMPT).collect(Collectors.toSet());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package org.mustangproject.util;
|
||||||
|
|
||||||
|
public final class ByteArraySearcher {
|
||||||
|
|
||||||
|
private ByteArraySearcher() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int indexOf(byte[] haystack, byte[] needle) {
|
||||||
|
if (needle.length > haystack.length) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Any needle to search?
|
||||||
|
if (needle.length == 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i <= haystack.length - needle.length; i++) {
|
||||||
|
boolean found = true;
|
||||||
|
for (int j = 0; j < needle.length; j++) {
|
||||||
|
if (haystack[i + j] != needle[j]) {
|
||||||
|
found = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (found) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean contains(byte[] haystack, byte[] needle) {
|
||||||
|
return indexOf(haystack, needle) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean startsWith(byte[] haystack, byte[] needle) {
|
||||||
|
if (needle.length > haystack.length) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Any needle to search?
|
||||||
|
if (needle.length == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int j = 0; j < needle.length; j++) {
|
||||||
|
if (haystack[j] != needle[j]) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
144
library/src/main/java/org/mustangproject/util/NodeMap.java
Normal file
144
library/src/main/java/org/mustangproject/util/NodeMap.java
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
/**
|
||||||
|
* *********************************************************************
|
||||||
|
* <p>
|
||||||
|
* Copyright (c) 2024 Jan N. Klug
|
||||||
|
* <p>
|
||||||
|
* Use is subject to license terms.
|
||||||
|
* <p>
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
* use this file except in compliance with the License. You may obtain a copy
|
||||||
|
* of the License at http://www.apache.org/licenses/LICENSE-2.0.
|
||||||
|
* <p>
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* <p>
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
* <p>
|
||||||
|
* **********************************************************************
|
||||||
|
*/
|
||||||
|
package org.mustangproject.util;
|
||||||
|
|
||||||
|
import org.w3c.dom.Node;
|
||||||
|
import org.w3c.dom.NodeList;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The {@link NodeMap} contains a {@link Map} representation of DOM object
|
||||||
|
* It can be constructed either from the children of a single {@link Node} or a {@link NodeList}.
|
||||||
|
*/
|
||||||
|
public class NodeMap {
|
||||||
|
private final Map<String, List<Node>> map = new HashMap<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new {@link NodeMap}
|
||||||
|
* The {@link Node} that is passed to the constructor must not be null.
|
||||||
|
* The {@link NodeMap} will be empty when no child nodes are present.
|
||||||
|
*
|
||||||
|
* @param node the node that shall be represented by this {@link NodeMap}
|
||||||
|
* @throws IllegalArgumentException when argument is null
|
||||||
|
*/
|
||||||
|
public NodeMap(Node node) {
|
||||||
|
if (node == null) {
|
||||||
|
throw new IllegalArgumentException("node cannot be null");
|
||||||
|
}
|
||||||
|
if (node.hasChildNodes()) {
|
||||||
|
mapNodeList(node.getChildNodes());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public NodeMap(NodeList nodeList) {
|
||||||
|
if (nodeList == null) {
|
||||||
|
throw new IllegalArgumentException("nodeList cannot be null");
|
||||||
|
}
|
||||||
|
mapNodeList(nodeList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get matching node by {@code LocalName}
|
||||||
|
* In case more than one node matches, it is not guaranteed that the first match is selected
|
||||||
|
*
|
||||||
|
* @param localNames one or more {@code LocalName}s
|
||||||
|
* @return the matching node
|
||||||
|
*/
|
||||||
|
public Optional<Node> getNode(String... localNames) {
|
||||||
|
return getAllNodes(localNames).findAny();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a {@link NodeMap} of the child of a matching node by {@code LocalName}
|
||||||
|
* In case more than one node matches, it is not guaranteed that the first match is selected
|
||||||
|
*
|
||||||
|
* @param localNames one or more {@code LocalName}s
|
||||||
|
* @return the {@link NodeMap} representation of the matching node
|
||||||
|
*/
|
||||||
|
public Optional<NodeMap> getAsNodeMap(String... localNames) {
|
||||||
|
return getNode(localNames).filter(Node::hasChildNodes).map(NodeMap::new);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the text content of a matching node
|
||||||
|
* In case more than one node matches, it is not guaranteed that the first match is selected
|
||||||
|
*
|
||||||
|
* @param localNames one or more {@code LocalName}s
|
||||||
|
* @return the text content of the matching node
|
||||||
|
*/
|
||||||
|
public Optional<String> getAsString(String... localNames) {
|
||||||
|
return getNode(localNames).map(Node::getTextContent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the text content of a matching node
|
||||||
|
* In case more than one node matches, it is not guaranteed that the first match is selected
|
||||||
|
*
|
||||||
|
* @param localNames one or more {@code LocalName}s
|
||||||
|
* @return the text content of the matching node, converted to BigDecimal
|
||||||
|
*/
|
||||||
|
public Optional<BigDecimal> getAsBigDecimal(String... localNames) {
|
||||||
|
return getNode(localNames).map(Node::getTextContent).map(s->new BigDecimal(s.trim()));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the text content of a matching node
|
||||||
|
* In case more than one node matches, it is not guaranteed that the first match is selected
|
||||||
|
*
|
||||||
|
* @param localNames one or more {@code LocalName}s
|
||||||
|
* @return the text content of the matching node or {@code null} when no matching node could be found
|
||||||
|
*/
|
||||||
|
public String getAsStringOrNull(String... localNames) {
|
||||||
|
return getAsString(localNames).orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all matching nodes
|
||||||
|
*
|
||||||
|
* @param localNames one or more {@code LocalName}s
|
||||||
|
* @return a {@code Stream} that contains all matching nodes (can be empty if nothing matches)
|
||||||
|
*/
|
||||||
|
public Stream<Node> getAllNodes(String... localNames) {
|
||||||
|
List<String> localNamesList = Arrays.asList(localNames);
|
||||||
|
return map.entrySet().stream().filter(e -> localNamesList.contains(e.getKey())).flatMap(e -> e.getValue().stream());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void mapNodeList(NodeList nodeList) {
|
||||||
|
IntStream.range(0, nodeList.getLength()).mapToObj(nodeList::item)
|
||||||
|
.filter(node -> node != null && node.getLocalName() != null)
|
||||||
|
.forEach(node -> map.computeIfAbsent(node.getLocalName(), k -> new ArrayList<>()).add(node));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return map.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
2225
library/src/main/resources/stylesheets/cio-xr.xsl
Normal file
2225
library/src/main/resources/stylesheets/cio-xr.xsl
Normal file
File diff suppressed because it is too large
Load Diff
@@ -198,7 +198,7 @@
|
|||||||
<entry key="xr:Third_party_payment_type" id="BT-DEX-001">Art der Fremdforderung</entry>
|
<entry key="xr:Third_party_payment_type" id="BT-DEX-001">Art der Fremdforderung</entry>
|
||||||
<entry key="xr:Third_party_payment_amount" id="BT-DEX-002">Betrag der Fremdforderung</entry>
|
<entry key="xr:Third_party_payment_amount" id="BT-DEX-002">Betrag der Fremdforderung</entry>
|
||||||
<entry key="xr:Third_party_payment_description" id="BT-DEX-003">Beschreibung der Fremdforderung</entry>
|
<entry key="xr:Third_party_payment_description" id="BT-DEX-003">Beschreibung der Fremdforderung</entry>
|
||||||
<entry key="uebersicht">Übersicht</entry>
|
<entry key="uebersicht">Daten der E-Rechnung</entry>
|
||||||
<entry key="uebersichtKaeufer" id="BG-7">Informationen zum Käufer</entry>
|
<entry key="uebersichtKaeufer" id="BG-7">Informationen zum Käufer</entry>
|
||||||
<entry key="uebersichtVerkaeufer" id="BG-4">Informationen zum Verkäufer</entry>
|
<entry key="uebersichtVerkaeufer" id="BG-4">Informationen zum Verkäufer</entry>
|
||||||
<entry key="uebersichtRechnungsInfo" id="invoice-data">Rechnungsdaten</entry>
|
<entry key="uebersichtRechnungsInfo" id="invoice-data">Rechnungsdaten</entry>
|
||||||
@@ -214,7 +214,7 @@
|
|||||||
<entry key="uebersichtZahlungLastschrift" id="BG-19">Lastschrift</entry>
|
<entry key="uebersichtZahlungLastschrift" id="BG-19">Lastschrift</entry>
|
||||||
<entry key="uebersichtZahlungUeberweisung" id="BG-17">Überweisung</entry>
|
<entry key="uebersichtZahlungUeberweisung" id="BG-17">Überweisung</entry>
|
||||||
<entry key="uebersichtBemerkungen" id="BG-1">Bemerkungen zur Rechnung</entry>
|
<entry key="uebersichtBemerkungen" id="BG-1">Bemerkungen zur Rechnung</entry>
|
||||||
<entry key="details">Details</entry>
|
<entry key="details">Rechnungspositionen</entry>
|
||||||
<entry key="detailsPositionAbrechnungszeitraum" id="BG-26">Abrechnungszeitraum</entry>
|
<entry key="detailsPositionAbrechnungszeitraum" id="BG-26">Abrechnungszeitraum</entry>
|
||||||
<entry key="detailsPositionPreiseinzelheiten" id="BG-29">Preiseinzelheiten</entry>
|
<entry key="detailsPositionPreiseinzelheiten" id="BG-29">Preiseinzelheiten</entry>
|
||||||
<entry key="detailsPositionNachlaesse" id="BG-27">Nachlässe auf Ebene der Rechnungsposition</entry>
|
<entry key="detailsPositionNachlaesse" id="BG-27">Nachlässe auf Ebene der Rechnungsposition</entry>
|
||||||
|
|||||||
@@ -807,10 +807,11 @@
|
|||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
||||||
<xsl:template name="zusaetzeVertrag">
|
<xsl:template name="zusaetzeVertrag">
|
||||||
<xsl:call-template name="box">
|
<xsl:call-template name="spanned-box">
|
||||||
<xsl:with-param name="identifier" select="'zusaetzeVertrag'"/>
|
<xsl:with-param name="identifier" select="'zusaetzeVertrag'"/>
|
||||||
<xsl:with-param name="content">
|
<xsl:with-param name="content">
|
||||||
<xsl:call-template name="list">
|
<xsl:call-template name="list">
|
||||||
|
<xsl:with-param name="layout" select="'einspaltig'"/>
|
||||||
<xsl:with-param name="content">
|
<xsl:with-param name="content">
|
||||||
<xsl:apply-templates mode="list-entry" select="xr:Tender_or_lot_reference"/>
|
<xsl:apply-templates mode="list-entry" select="xr:Tender_or_lot_reference"/>
|
||||||
<xsl:apply-templates mode="list-entry" select="xr:Receiving_advice_reference"/>
|
<xsl:apply-templates mode="list-entry" select="xr:Receiving_advice_reference"/>
|
||||||
|
|||||||
@@ -52,6 +52,15 @@ public class BaseTest extends TestCase {
|
|||||||
assertEquals("12.00", XMLTools.nDigitFormat(new BigDecimal("12"),2));
|
assertEquals("12.00", XMLTools.nDigitFormat(new BigDecimal("12"),2));
|
||||||
assertEquals("12", XMLTools.nDigitFormat(new BigDecimal("12"),0));
|
assertEquals("12", XMLTools.nDigitFormat(new BigDecimal("12"),0));
|
||||||
assertEquals("20000123.342", XMLTools.nDigitFormat(new BigDecimal("20000123.3419"),3));
|
assertEquals("20000123.342", XMLTools.nDigitFormat(new BigDecimal("20000123.3419"),3));
|
||||||
|
|
||||||
|
assertEquals("0.00", XMLTools.nDigitFormatDecimalRange(BigDecimal.ZERO,2, 2));
|
||||||
|
assertEquals("-1.10", XMLTools.nDigitFormatDecimalRange(new BigDecimal("-1.100000"), 4,2));
|
||||||
|
assertEquals("-1.101", XMLTools.nDigitFormatDecimalRange(new BigDecimal("-1.101000"),10, 3));
|
||||||
|
assertEquals("-1.10", XMLTools.nDigitFormatDecimalRange(new BigDecimal("-1.103"), 2,2));
|
||||||
|
assertEquals("4", XMLTools.nDigitFormatDecimalRange(new BigDecimal("4"),2, 0));
|
||||||
|
assertEquals("3.14", XMLTools.nDigitFormatDecimalRange(new BigDecimal("3.141526"),2, 0));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.mustangproject.validator;
|
package org.mustangproject.ZUGFeRD;
|
||||||
|
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
@@ -7,6 +7,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
|||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.mustangproject.util.ByteArraySearcher;
|
||||||
|
|
||||||
public class ByteArraySearcherTest
|
public class ByteArraySearcherTest
|
||||||
{
|
{
|
||||||
@@ -98,106 +98,107 @@ public class CalculationTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* trade party (sender) */
|
/* trade party (sender) */
|
||||||
|
|
||||||
TradeParty sender = new TradeParty("Maier GmbH", "Musterweg 5", "11111", "Testung", "DE");
|
TradeParty sender = new TradeParty("Maier GmbH", "Musterweg 5", "11111", "Testung", "DE");
|
||||||
sender.addVATID("DE2222222222");
|
sender.addVATID("DE2222222222");
|
||||||
invoice.setSender(sender);
|
invoice.setSender(sender);
|
||||||
/* trade party (recipient) */
|
|
||||||
|
|
||||||
|
/* trade party (recipient) */
|
||||||
TradeParty recipient = new TradeParty("Teston GmbH" + " " + "Zentrale" + " " + "", "Testweg 5", "11111", "Testung", "DE");
|
TradeParty recipient = new TradeParty("Teston GmbH" + " " + "Zentrale" + " " + "", "Testweg 5", "11111", "Testung", "DE");
|
||||||
recipient.setID("111111");
|
recipient.setID("111111");
|
||||||
recipient.addVATID("DE111111111");
|
recipient.addVATID("DE111111111");
|
||||||
invoice.setRecipient(recipient);
|
invoice.setRecipient(recipient);
|
||||||
/* item */
|
|
||||||
|
|
||||||
|
/* item */
|
||||||
Product product;
|
Product product;
|
||||||
Item item;
|
Item item;
|
||||||
BigDecimal item_increase = BigDecimal.ZERO;
|
|
||||||
BigDecimal item_discount = BigDecimal.ZERO;
|
|
||||||
|
|
||||||
product = new Product("AAA", "", "H84", sales_tax_percent1).setSellerAssignedID("1AAA");
|
product = new Product("AAA", "", "H84", sales_tax_percent1).setSellerAssignedID("1AAA");
|
||||||
item = new Item(product, new BigDecimal("4.750"), new BigDecimal(5.00));
|
item = new Item(product, new BigDecimal("4.750"), new BigDecimal(5.00));
|
||||||
|
|
||||||
item_discount = new BigDecimal("10.00");
|
// set values for additional charge and discount used for next lines
|
||||||
|
BigDecimal item_increase = BigDecimal.ZERO;
|
||||||
|
BigDecimal item_discount = BigDecimal.valueOf(10.00);
|
||||||
|
|
||||||
|
/* lines */
|
||||||
if (item_increase.compareTo(BigDecimal.ZERO) > 0) {
|
if (item_increase.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
item.addCharge(new Charge().setPercent(item_increase).setTaxPercent(sales_tax_percent1).setCategoryCode("ZZZ").setReason("Zuschlag"));
|
item.addCharge(new Charge().setPercent(item_increase).setTaxPercent(sales_tax_percent1).setReasonCode("ZZZ").setReason("Zuschlag"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item_discount.compareTo(BigDecimal.ZERO) > 0) {
|
if (item_discount.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
item.addAllowance(new Allowance().setPercent(item_discount).setTaxPercent(sales_tax_percent1).setCategoryCode("95").setReason("Rabatt"));
|
item.addAllowance(new Allowance().setPercent(item_discount).setTaxPercent(sales_tax_percent1).setReasonCode("95").setReason("Rabatt"));
|
||||||
}
|
}
|
||||||
|
|
||||||
invoice.addItem(item);
|
invoice.addItem(item);
|
||||||
|
|
||||||
|
// reset values for additional charge and discount used for next lines
|
||||||
|
item_increase = BigDecimal.ZERO;
|
||||||
|
item_discount = BigDecimal.ZERO;
|
||||||
|
|
||||||
product = new Product("BBB", "", "H84", sales_tax_percent1).setSellerAssignedID("2BBB");
|
product = new Product("BBB", "", "H84", sales_tax_percent1).setSellerAssignedID("2BBB");
|
||||||
item = new Item(product, new BigDecimal("5.750"), new BigDecimal(4.00));
|
item = new Item(product, new BigDecimal("5.750"), new BigDecimal(4.00));
|
||||||
item_discount = BigDecimal.ZERO;
|
|
||||||
if (item_increase.compareTo(BigDecimal.ZERO) > 0) {
|
if (item_increase.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
item.addCharge(new Charge().setPercent(item_increase).setTaxPercent(sales_tax_percent1).setCategoryCode("ZZZ").setReason("Zuschlag"));
|
item.addCharge(new Charge().setPercent(item_increase).setTaxPercent(sales_tax_percent1).setReasonCode("ZZZ").setReason("Zuschlag"));
|
||||||
}
|
}
|
||||||
if (item_discount.compareTo(BigDecimal.ZERO) > 0) {
|
if (item_discount.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
item.addAllowance(new Allowance().setPercent(item_discount).setTaxPercent(sales_tax_percent1).setCategoryCode("95").setReason("Rabatt"));
|
item.addAllowance(new Allowance().setPercent(item_discount).setTaxPercent(sales_tax_percent1).setReasonCode("95").setReason("Rabatt"));
|
||||||
}
|
}
|
||||||
|
|
||||||
invoice.addItem(item);
|
invoice.addItem(item);
|
||||||
|
|
||||||
product = new Product("CCC", "", "H84", sales_tax_percent1).setSellerAssignedID("3CCC");
|
product = new Product("CCC", "", "H84", sales_tax_percent1).setSellerAssignedID("3CCC");
|
||||||
item = new Item(product, new BigDecimal("6.750"), new BigDecimal(3.00));
|
item = new Item(product, new BigDecimal("6.750"), new BigDecimal(3.00));
|
||||||
item_discount = new BigDecimal("10.00");
|
|
||||||
if (item_increase.compareTo(BigDecimal.ZERO) > 0) {
|
if (item_increase.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
item.addCharge(new Charge().setPercent(item_increase).setTaxPercent(sales_tax_percent1).setCategoryCode("ZZZ").setReason("Zuschlag"));
|
item.addCharge(new Charge().setPercent(item_increase).setTaxPercent(sales_tax_percent1).setReasonCode("ZZZ").setReason("Zuschlag"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item_discount.compareTo(BigDecimal.ZERO) > 0) {
|
if (item_discount.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
item.addAllowance(new Allowance().setPercent(item_discount).setTaxPercent(sales_tax_percent1).setCategoryCode("95").setReason("Rabatt"));
|
item.addAllowance(new Allowance().setPercent(item_discount).setTaxPercent(sales_tax_percent1).setReasonCode("95").setReason("Rabatt"));
|
||||||
}
|
}
|
||||||
|
|
||||||
invoice.addItem(item);
|
invoice.addItem(item);
|
||||||
|
|
||||||
|
|
||||||
product = new Product("DDD", "", "H84", sales_tax_percent1).setSellerAssignedID("4DDD");
|
product = new Product("DDD", "", "H84", sales_tax_percent1).setSellerAssignedID("4DDD");
|
||||||
item = new Item(product, new BigDecimal("7.750"), new BigDecimal(2.00));
|
item = new Item(product, new BigDecimal("7.750"), new BigDecimal(2.00));
|
||||||
|
|
||||||
item_discount = BigDecimal.ZERO;
|
|
||||||
|
|
||||||
|
|
||||||
if (item_increase.compareTo(BigDecimal.ZERO) > 0) {
|
if (item_increase.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
item.addCharge(new Charge().setPercent(item_increase).setTaxPercent(sales_tax_percent1).setCategoryCode("ZZZ").setReason("Zuschlag"));
|
item.addCharge(new Charge().setPercent(item_increase).setTaxPercent(sales_tax_percent1).setReasonCode("ZZZ").setReason("Zuschlag"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item_discount.compareTo(BigDecimal.ZERO) > 0) {
|
if (item_discount.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
item.addAllowance(new Allowance().setPercent(item_discount).setTaxPercent(sales_tax_percent1).setCategoryCode("95").setReason("Rabatt"));
|
item.addAllowance(new Allowance().setPercent(item_discount).setTaxPercent(sales_tax_percent1).setReasonCode("95").setReason("Rabatt"));
|
||||||
}
|
}
|
||||||
|
|
||||||
invoice.addItem(item);
|
invoice.addItem(item);
|
||||||
|
|
||||||
|
|
||||||
product = new Product("EEE", "", "H84", sales_tax_percent1).setSellerAssignedID("5EEE");
|
product = new Product("EEE", "", "H84", sales_tax_percent1).setSellerAssignedID("5EEE");
|
||||||
item = new Item(product, new BigDecimal("8.750"), new BigDecimal(1.00));
|
item = new Item(product, new BigDecimal("8.750"), new BigDecimal(1.00));
|
||||||
|
|
||||||
item_discount = BigDecimal.ZERO;
|
|
||||||
|
|
||||||
|
|
||||||
if (item_increase.compareTo(BigDecimal.ZERO) > 0) {
|
if (item_increase.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
item.addCharge(new Charge().setPercent(item_increase).setTaxPercent(sales_tax_percent1).setCategoryCode("ZZZ").setReason("Zuschlag"));
|
item.addCharge(new Charge().setPercent(item_increase).setTaxPercent(sales_tax_percent1).setReasonCode("ZZZ").setReason("Zuschlag"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item_discount.compareTo(BigDecimal.ZERO) > 0) {
|
if (item_discount.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
item.addAllowance(new Allowance().setPercent(item_discount).setTaxPercent(sales_tax_percent1).setCategoryCode("95").setReason("Rabatt"));
|
item.addAllowance(new Allowance().setPercent(item_discount).setTaxPercent(sales_tax_percent1).setReasonCode("95").setReason("Rabatt"));
|
||||||
|
|
||||||
}
|
}
|
||||||
invoice.addItem(item);
|
invoice.addItem(item);
|
||||||
|
|
||||||
if (total_increase_percent.compareTo(BigDecimal.ZERO) > 0) {
|
// reset values for additional charge and discount used on invoice level
|
||||||
invoice.addCharge(new Charge().setPercent(total_increase_percent).setTaxPercent(sales_tax_percent1).setCategoryCode("ZZZ").setReason("Zuschläge"));
|
item_increase = BigDecimal.valueOf(3.50);
|
||||||
}
|
item_discount = BigDecimal.valueOf(10.00);
|
||||||
|
|
||||||
|
if (total_increase_percent.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
invoice.addCharge(new Charge().setPercent(total_increase_percent).setTaxPercent(sales_tax_percent1).setReasonCode("ZZZ").setReason("Zuschläge"));
|
||||||
|
}
|
||||||
if (total_discount_percent.compareTo(BigDecimal.ZERO) > 0) {
|
if (total_discount_percent.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
invoice.addAllowance(new Allowance().setPercent(total_discount_percent).setTaxPercent(sales_tax_percent1).setCategoryCode("95").setReason("Rabatte"));
|
invoice.addAllowance(new Allowance().setPercent(total_discount_percent).setTaxPercent(sales_tax_percent1).setReasonCode("95").setReason("Rabatte"));
|
||||||
}
|
}
|
||||||
TransactionCalculator calculator = new TransactionCalculator(invoice);
|
TransactionCalculator calculator = new TransactionCalculator(invoice);
|
||||||
assertEquals(valueOf(99.54).stripTrailingZeros(), calculator.getGrandTotal().stripTrailingZeros());
|
assertEquals(valueOf(101.86).stripTrailingZeros(), calculator.getGrandTotal().stripTrailingZeros());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LineCalculator should not throw an exception when calculating a non-terminating decimal expansion
|
||||||
|
* */
|
||||||
|
@Test
|
||||||
|
public void testNonTerminatingDecimalExpansion() {
|
||||||
|
final Product product = new Product();
|
||||||
|
final IZUGFeRDExportableItem currentItem = new Item().setPrice(valueOf(386.52))
|
||||||
|
.setQuantity(BigDecimal.valueOf(31))
|
||||||
|
.setBasisQuantity(BigDecimal.valueOf(366))
|
||||||
|
.setProduct(product);
|
||||||
|
final LineCalculator calculator = new LineCalculator(currentItem);
|
||||||
|
assertEquals(BigDecimal.valueOf(32.74), calculator.getItemTotalNetAmount());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class DeSerializationTest extends TestCase {
|
|||||||
public void testJackson() throws JsonProcessingException {
|
public void testJackson() throws JsonProcessingException {
|
||||||
|
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
Invoice i = new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty("some org", "teststr", "55232", "teststadt", "DE").addTaxID("taxID")).setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE4711").setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE"))).setNumber("0185").addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal("1"), new BigDecimal(1.0)));
|
Invoice i = new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty("some org", "teststr", "55232", "teststadt", "DE").addTaxID("taxID").addBankDetails(new BankDetails("DE3600000123456", "ABCDEFG1001").setAccountName("Donald Duck")).setEmail("info@company.com")).setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE4711").setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE"))).setNumber("0185").addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal("1"), new BigDecimal(1.0)));
|
||||||
String jsonArray = mapper.writeValueAsString(i);
|
String jsonArray = mapper.writeValueAsString(i);
|
||||||
|
|
||||||
// [{"stringValue":"a","intValue":1,"booleanValue":true},
|
// [{"stringValue":"a","intValue":1,"booleanValue":true},
|
||||||
@@ -45,6 +45,8 @@ public class DeSerializationTest extends TestCase {
|
|||||||
Invoice fromJSON = mapper.readValue(jsonArray, Invoice.class);
|
Invoice fromJSON = mapper.readValue(jsonArray, Invoice.class);
|
||||||
assertEquals(fromJSON.getNumber(), i.getNumber());
|
assertEquals(fromJSON.getNumber(), i.getNumber());
|
||||||
assertEquals(fromJSON.getZFItems().length, i.getZFItems().length);
|
assertEquals(fromJSON.getZFItems().length, i.getZFItems().length);
|
||||||
|
assertEquals("info@company.com", fromJSON.getSender().getEmail());
|
||||||
|
assertEquals("info@company.com", fromJSON.getSender().getUriUniversalCommunicationID());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import java.math.BigDecimal;
|
|||||||
public class IZUGFeRDAllowanceChargeImpl implements IZUGFeRDAllowanceCharge {
|
public class IZUGFeRDAllowanceChargeImpl implements IZUGFeRDAllowanceCharge {
|
||||||
private BigDecimal totalAmount;
|
private BigDecimal totalAmount;
|
||||||
private String reason;
|
private String reason;
|
||||||
|
private String reasonCode;
|
||||||
private BigDecimal taxPercent;
|
private BigDecimal taxPercent;
|
||||||
boolean isCharge=true;
|
boolean isCharge=true;
|
||||||
|
|
||||||
@@ -36,6 +37,11 @@ public class IZUGFeRDAllowanceChargeImpl implements IZUGFeRDAllowanceCharge {
|
|||||||
return reason;
|
return reason;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getReasonCode() {
|
||||||
|
return reasonCode;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BigDecimal getTaxPercent() {
|
public BigDecimal getTaxPercent() {
|
||||||
return taxPercent;
|
return taxPercent;
|
||||||
@@ -61,6 +67,11 @@ public class IZUGFeRDAllowanceChargeImpl implements IZUGFeRDAllowanceCharge {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IZUGFeRDAllowanceChargeImpl setReasonCode(String reasonCode) {
|
||||||
|
this.reasonCode = reasonCode;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public IZUGFeRDAllowanceChargeImpl setTaxPercent(BigDecimal taxPercent) {
|
public IZUGFeRDAllowanceChargeImpl setTaxPercent(BigDecimal taxPercent) {
|
||||||
this.taxPercent = taxPercent;
|
this.taxPercent = taxPercent;
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -36,7 +36,8 @@ import java.util.Date;
|
|||||||
*/
|
*/
|
||||||
public class ProfilesMinimumBasicWLTest extends TestCase {
|
public class ProfilesMinimumBasicWLTest extends TestCase {
|
||||||
|
|
||||||
final String TARGET_PDF_FX_MINIMUM = "./target/testout-Minimum.pdf";
|
final String TARGET_PDF_FX_MINIMUM_INV = "./target/testout-Minimum-INV.pdf";
|
||||||
|
final String TARGET_PDF_FX_MINIMUM_CN = "./target/testout-Minimum-CN.pdf";
|
||||||
|
|
||||||
public void testMinimumCreditNote() {
|
public void testMinimumCreditNote() {
|
||||||
String ownNumber = "NUMFACTURE";
|
String ownNumber = "NUMFACTURE";
|
||||||
@@ -60,14 +61,14 @@ public class ProfilesMinimumBasicWLTest extends TestCase {
|
|||||||
Invoice i = new Invoice()
|
Invoice i = new Invoice()
|
||||||
.setIssueDate(new Date())
|
.setIssueDate(new Date())
|
||||||
.setSender(
|
.setSender(
|
||||||
new TradeParty().setName(ownOrgName).setCountry("FR")
|
new TradeParty().setName(ownOrgName).setCountry("FR").setVATID("FR555444333222111")
|
||||||
.addBankDetails(new BankDetails(ownIBAN, ownBIC)))
|
.addBankDetails(new BankDetails(ownIBAN, ownBIC)))
|
||||||
.setRecipient(recipient)
|
.setRecipient(recipient)
|
||||||
.setNumber(ownNumber)
|
.setNumber(ownNumber)
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal(123), new BigDecimal(1)))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal(123), new BigDecimal(1)))
|
||||||
.setCreditNote();
|
.setCreditNote();
|
||||||
ze.setTransaction(i);
|
ze.setTransaction(i);
|
||||||
ze.export(TARGET_PDF_FX_MINIMUM);
|
ze.export(TARGET_PDF_FX_MINIMUM_CN);
|
||||||
|
|
||||||
// check for pdf-a schema extension
|
// check for pdf-a schema extension
|
||||||
// assertFalse(pdfContent.indexOf("<zf:ConformanceLevel>EN 16931</zf:ConformanceLevel>") == -1);
|
// assertFalse(pdfContent.indexOf("<zf:ConformanceLevel>EN 16931</zf:ConformanceLevel>") == -1);
|
||||||
@@ -79,7 +80,7 @@ public class ProfilesMinimumBasicWLTest extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// now check the contents (like MustangReaderTest)
|
// now check the contents (like MustangReaderTest)
|
||||||
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF_FX_MINIMUM);
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF_FX_MINIMUM_CN);
|
||||||
|
|
||||||
// Reading ZUGFeRD
|
// Reading ZUGFeRD
|
||||||
assertEquals("146.37",zi.getAmount());
|
assertEquals("146.37",zi.getAmount());
|
||||||
@@ -115,13 +116,13 @@ public class ProfilesMinimumBasicWLTest extends TestCase {
|
|||||||
.setIssueDate(new Date())
|
.setIssueDate(new Date())
|
||||||
.setDueDate(new Date())
|
.setDueDate(new Date())
|
||||||
.setSender(
|
.setSender(
|
||||||
new TradeParty().setName(ownOrgName).setCountry("FR")
|
new TradeParty().setName(ownOrgName).setCountry("FR").setVATID("FR555444333222111")
|
||||||
.addBankDetails(new BankDetails(ownIBAN)))
|
.addBankDetails(new BankDetails(ownIBAN)))
|
||||||
.setRecipient(recipient)
|
.setRecipient(recipient)
|
||||||
.setNumber(ownNumber).setTotalPrepaidAmount(new BigDecimal("1"))
|
.setNumber(ownNumber).setTotalPrepaidAmount(new BigDecimal("1"))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal(123), new BigDecimal(1)));
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal(123), new BigDecimal(1)));
|
||||||
ze.setTransaction(i);
|
ze.setTransaction(i);
|
||||||
ze.export(TARGET_PDF_FX_MINIMUM);
|
ze.export(TARGET_PDF_FX_MINIMUM_INV);
|
||||||
|
|
||||||
// check for pdf-a schema extension
|
// check for pdf-a schema extension
|
||||||
// assertFalse(pdfContent.indexOf("<zf:ConformanceLevel>EN 16931</zf:ConformanceLevel>") == -1);
|
// assertFalse(pdfContent.indexOf("<zf:ConformanceLevel>EN 16931</zf:ConformanceLevel>") == -1);
|
||||||
@@ -133,7 +134,7 @@ public class ProfilesMinimumBasicWLTest extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// now check the contents (like MustangReaderTest)
|
// now check the contents (like MustangReaderTest)
|
||||||
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF_FX_MINIMUM);
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF_FX_MINIMUM_INV);
|
||||||
|
|
||||||
// Reading ZUGFeRD
|
// Reading ZUGFeRD
|
||||||
assertEquals("145.37",zi.getAmount());
|
assertEquals("145.37",zi.getAmount());
|
||||||
|
|||||||
@@ -123,35 +123,8 @@ public class UBLTest extends ResourceCase {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testEdgeInvoiceImportUBL2() {
|
||||||
/* public void testInvoiceImportOtherUBL() {
|
File UBLinputFile = getResourceAsFile("ubl/04.01a-INVOICE_ubl.xml");
|
||||||
|
|
||||||
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_1_Teilrechnung.ubl.xml");
|
|
||||||
// File UBLinputFile = getResourceAsFile("ubl/EN16931_2_Teilrechnung.ubl.xml");
|
|
||||||
/* File UBLinputFile = getResourceAsFile("ubl/EN16931_AbweichenderZahlungsempf.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Betriebskostenabrechnung.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Einfach.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Einfach_DueDate.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Einfach_negativePaymentDue.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Elektron.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_ElektronischeAdresse.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Gutschrift.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Haftpflichtversicherung_Versicherungssteuer.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Innergemeinschaftliche_Lieferungen.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Kraftfahrversicherung_Bruttopreise.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Miete.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_OEPNV.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Physiotherapeut.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Rabatte.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Rechnungskorrektur.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_RechnungsUebertragung.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Reisekostenabrechnung.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_Sachversicherung_berechneter_Steuersatz.ubl.xml");
|
|
||||||
File UBLinputFile = getResourceAsFile("ubl/EN16931_SEPA_Prenotification.ubl.xml");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
boolean hasExceptions = false;
|
boolean hasExceptions = false;
|
||||||
|
|
||||||
ZUGFeRDInvoiceImporter zii = null;
|
ZUGFeRDInvoiceImporter zii = null;
|
||||||
@@ -160,15 +133,12 @@ public class UBLTest extends ResourceCase {
|
|||||||
zii = new ZUGFeRDInvoiceImporter(new FileInputStream(UBLinputFile));
|
zii = new ZUGFeRDInvoiceImporter(new FileInputStream(UBLinputFile));
|
||||||
invoice = zii.extractInvoice();
|
invoice = zii.extractInvoice();
|
||||||
} catch (XPathExpressionException | ParseException | FileNotFoundException e) {
|
} catch (XPathExpressionException | ParseException | FileNotFoundException e) {
|
||||||
|
e.printStackTrace();
|
||||||
hasExceptions = true;
|
hasExceptions = true;
|
||||||
}
|
}
|
||||||
assertFalse(hasExceptions);
|
assertFalse(hasExceptions);
|
||||||
// Reading ZUGFeRD
|
|
||||||
assertEquals(new BigDecimal("288.79"), invoice.getZFItems()[0].getPrice());
|
|
||||||
assertEquals("04011000-12345-03", invoice.getReferenceNumber());
|
|
||||||
assertEquals("seller@email.de", invoice.getSender().getContact().getEMail());
|
|
||||||
assertEquals("12345", invoice.getRecipient().getZIP());
|
|
||||||
assertEquals("DE75512108001245126199", invoice.getSender().getBankDetails().get(0).getIBAN());
|
|
||||||
|
|
||||||
}*/
|
assertEquals(new BigDecimal("10000.0"), invoice.getTotalPrepaidAmount());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,8 +19,10 @@
|
|||||||
*********************************************************************** */
|
*********************************************************************** */
|
||||||
package org.mustangproject.ZUGFeRD;
|
package org.mustangproject.ZUGFeRD;
|
||||||
|
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.junit.FixMethodOrder;
|
import org.junit.FixMethodOrder;
|
||||||
import org.junit.runners.MethodSorters;
|
import org.junit.runners.MethodSorters;
|
||||||
|
import org.mustangproject.util.ByteArraySearcher;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
|
|
||||||
import javax.xml.parsers.ParserConfigurationException;
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
@@ -28,10 +30,14 @@ import javax.xml.transform.*;
|
|||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
|
||||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||||
public class VisualizationTest extends ResourceCase {
|
public class VisualizationTest extends ResourceCase {
|
||||||
|
|
||||||
|
final String TARGET_PDF_CII = "./target/testout-Visualization-cii.pdf";
|
||||||
|
final String TARGET_PDF_UBL = "./target/testout-Visualization-cii.pdf";
|
||||||
|
|
||||||
public void testCIIVisualizationBasic() {
|
public void testCIIVisualizationBasic() {
|
||||||
|
|
||||||
// the writing part
|
// the writing part
|
||||||
@@ -145,30 +151,80 @@ public class VisualizationTest extends ResourceCase {
|
|||||||
assertEquals(expected, result);
|
assertEquals(expected, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* public void testPDFVisualization() {
|
public void testPDFVisualizationCII() {
|
||||||
|
|
||||||
|
File CIIinputFile = getResourceAsFile("cii/01.01a-INVOICE.cii.xml");
|
||||||
|
|
||||||
// the writing part
|
// the writing part
|
||||||
CIIToUBL c2u = new CIIToUBL();
|
|
||||||
String sourceFilename = "factur-x.xml";
|
|
||||||
File CIIinputFile = getResourceAsFile(sourceFilename);
|
|
||||||
|
|
||||||
String expected = null;
|
String expected = null;
|
||||||
String result = null;
|
String result = null;
|
||||||
try {
|
try {
|
||||||
ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer();
|
ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer();
|
||||||
/* remove file endings so that tests can also pass after checking
|
zvi.toPDF(CIIinputFile.getAbsolutePath(), TARGET_PDF_CII);
|
||||||
out from git with arbitrary options (which may include CSRF changes)
|
|
||||||
*
|
|
||||||
zvi.toPDF(CIIinputFile.getAbsolutePath(), "c:\\users\\jstaerk\\temp\\fopy2.pdf");
|
|
||||||
} catch (UnsupportedOperationException e) {
|
} catch (UnsupportedOperationException e) {
|
||||||
fail("UnsupportedOperationException should not happen: "+e.getMessage());
|
fail("UnsupportedOperationException should not happen: "+e.getMessage());
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
fail("IllegalArgumentException should not happen: "+e.getMessage());
|
fail("IllegalArgumentException should not happen: "+e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
// assertNotNull(result);
|
try {
|
||||||
// Reading ZUGFeRD
|
assertTrue(ByteArraySearcher.startsWith(Files.readAllBytes(Paths.get(TARGET_PDF_CII)), new byte[]{'%', 'P', 'D', 'F'}));
|
||||||
// assertEquals(expected, result);
|
} catch (IOException e) {
|
||||||
}*/
|
fail("IOException should not occur");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testPDFVisualizationUBL() {
|
||||||
|
|
||||||
|
File UBLinputFile = getResourceAsFile("ubl/01.01a-INVOICE.ubl.xml");
|
||||||
|
|
||||||
|
// the writing part
|
||||||
|
String sourceFilename = "factur-x.xml";
|
||||||
|
|
||||||
|
String expected = null;
|
||||||
|
String result = null;
|
||||||
|
try {
|
||||||
|
ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer();
|
||||||
|
zvi.toPDF(UBLinputFile.getAbsolutePath(), TARGET_PDF_UBL);
|
||||||
|
} catch (UnsupportedOperationException e) {
|
||||||
|
fail("UnsupportedOperationException should not happen: "+e.getMessage());
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
fail("IllegalArgumentException should not happen: "+e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
assertTrue(ByteArraySearcher.startsWith(Files.readAllBytes(Paths.get(TARGET_PDF_CII)), new byte[]{'%', 'P', 'D', 'F'}));
|
||||||
|
} catch (IOException e) {
|
||||||
|
fail("IOException should not occur");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testPDFVisualizationUBLCreditNote() {
|
||||||
|
|
||||||
|
File UBLinputFile = getResourceAsFile("ubl/UBL-CreditNote-2.1-Example.ubl.xml");
|
||||||
|
|
||||||
|
// the writing part
|
||||||
|
String sourceFilename = "factur-x.xml";
|
||||||
|
|
||||||
|
String expected = null;
|
||||||
|
String result = null;
|
||||||
|
try {
|
||||||
|
ZUGFeRDVisualizer zvi = new ZUGFeRDVisualizer();
|
||||||
|
zvi.toPDF(UBLinputFile.getAbsolutePath(), TARGET_PDF_UBL);
|
||||||
|
} catch (UnsupportedOperationException e) {
|
||||||
|
fail("UnsupportedOperationException should not happen: "+e.getMessage());
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
fail("IllegalArgumentException should not happen: "+e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
assertTrue(ByteArraySearcher.startsWith(Files.readAllBytes(Paths.get(TARGET_PDF_CII)), new byte[]{'%', 'P', 'D', 'F'}));
|
||||||
|
} catch (IOException e) {
|
||||||
|
fail("IOException should not occur");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,12 +27,16 @@ import org.junit.FixMethodOrder;
|
|||||||
import org.junit.runners.MethodSorters;
|
import org.junit.runners.MethodSorters;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.xml.xpath.XPathExpressionException;
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static org.xmlunit.assertj.XmlAssert.assertThat;
|
import static org.xmlunit.assertj.XmlAssert.assertThat;
|
||||||
|
|
||||||
@@ -41,6 +45,7 @@ import static org.xmlunit.assertj.XmlAssert.assertThat;
|
|||||||
public class XRTest extends TestCase {
|
public class XRTest extends TestCase {
|
||||||
final String TARGET_XML = "./target/testout-XR.xml";
|
final String TARGET_XML = "./target/testout-XR.xml";
|
||||||
final String TARGET_EDGE_XML = "./target/testout-XR-Edge.xml";
|
final String TARGET_EDGE_XML = "./target/testout-XR-Edge.xml";
|
||||||
|
|
||||||
public void testXRExport() {
|
public void testXRExport() {
|
||||||
|
|
||||||
// the writing part
|
// the writing part
|
||||||
@@ -90,6 +95,7 @@ public class XRTest extends TestCase {
|
|||||||
.setReferenceNumber("991-01484-64")//leitweg-id
|
.setReferenceNumber("991-01484-64")//leitweg-id
|
||||||
// not using any VAT, this is also a test of zero-rated goods:
|
// not using any VAT, this is also a test of zero-rated goods:
|
||||||
.setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", BigDecimal.ZERO), amount, new BigDecimal(1.0)))
|
.setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", BigDecimal.ZERO), amount, new BigDecimal(1.0)))
|
||||||
|
.setPayee( new TradeParty().setName("VR Factoring GmbH").setID("DE813838785").setLegalOrganisation(new LegalOrganisation("391200LDDFJDMIPPMZ54", "0199")))
|
||||||
.embedFileInXML(fe1);
|
.embedFileInXML(fe1);
|
||||||
|
|
||||||
|
|
||||||
@@ -104,6 +110,9 @@ public class XRTest extends TestCase {
|
|||||||
.asInt()
|
.asInt()
|
||||||
.isEqualTo(1); //2 errors are OK because there is a known bug
|
.isEqualTo(1); //2 errors are OK because there is a known bug
|
||||||
|
|
||||||
|
assertThat(theXML).valueByXPath("count(//*[local-name()='PayeeTradeParty'])")
|
||||||
|
.asInt()
|
||||||
|
.isEqualTo(1);
|
||||||
|
|
||||||
assertThat(theXML).valueByXPath("//*[local-name()='DuePayableAmount']")
|
assertThat(theXML).valueByXPath("//*[local-name()='DuePayableAmount']")
|
||||||
.asDouble()
|
.asDouble()
|
||||||
@@ -116,6 +125,25 @@ public class XRTest extends TestCase {
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Invoice readInvoice = new Invoice();
|
||||||
|
ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter();
|
||||||
|
try {
|
||||||
|
|
||||||
|
zii.setRawXML(zf2p.getXML());
|
||||||
|
zii.extractInto(readInvoice);
|
||||||
|
} catch (ParseException | XPathExpressionException xp) {
|
||||||
|
fail("Exception not expected");
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
List<FileAttachment> attachedFiles=zii.getFileAttachmentsXML();
|
||||||
|
assertNotNull(attachedFiles);
|
||||||
|
assertEquals(attachedFiles.size(), 1);
|
||||||
|
|
||||||
|
assertTrue(Arrays.equals(attachedFiles.get(0).getData(), b));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testXRExportWithoutStreet() {
|
public void testXRExportWithoutStreet() {
|
||||||
|
|||||||
@@ -297,7 +297,8 @@ public class ZF2EdgeTest extends MustangReaderTestCase {
|
|||||||
InputStream SOURCE_PDF = this.getClass()
|
InputStream SOURCE_PDF = this.getClass()
|
||||||
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
||||||
|
|
||||||
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();ze.ignorePDFAErrors();
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
|
ze.ignorePDFAErrors();
|
||||||
ze.load(SOURCE_PDF);
|
ze.load(SOURCE_PDF);
|
||||||
ze.setProducer("My Application")
|
ze.setProducer("My Application")
|
||||||
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile(Profiles.getByName("Extended"));
|
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile(Profiles.getByName("Extended"));
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import org.junit.runners.MethodSorters;
|
|||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
import org.mustangproject.ZUGFeRD.model.DocumentCodeTypeConstants;
|
||||||
import org.mustangproject.ZUGFeRD.model.EventTimeCodeTypeConstants;
|
import org.mustangproject.ZUGFeRD.model.EventTimeCodeTypeConstants;
|
||||||
|
|
||||||
import javax.xml.xpath.XPathExpressionException;
|
import javax.xml.xpath.XPathExpressionException;
|
||||||
@@ -55,13 +56,15 @@ public class ZF2PushTest extends TestCase {
|
|||||||
final String TARGET_ATTACHMENTSPDF = "./target/testout-ZF2PushAttachments.pdf";
|
final String TARGET_ATTACHMENTSPDF = "./target/testout-ZF2PushAttachments.pdf";
|
||||||
final String TARGET_BANKPDF = "./target/testout-ZF2PushBank.pdf";
|
final String TARGET_BANKPDF = "./target/testout-ZF2PushBank.pdf";
|
||||||
final String TARGET_PUSHEDGE = "./target/testout-ZF2PushEdge.pdf";
|
final String TARGET_PUSHEDGE = "./target/testout-ZF2PushEdge.pdf";
|
||||||
|
final String TARGET_INTRACOMMUNITYSUPPLYMANUALPDF = "./target/testout-ZF2PushIntraCommunitySupplyManual.pdf";
|
||||||
final String TARGET_INTRACOMMUNITYSUPPLYPDF = "./target/testout-ZF2PushIntraCommunitySupply.pdf";
|
final String TARGET_INTRACOMMUNITYSUPPLYPDF = "./target/testout-ZF2PushIntraCommunitySupply.pdf";
|
||||||
final String TARGET_REVERSECHARGEPDF = "./target/testout-ZF2PushReverseCharge.pdf";
|
final String TARGET_REVERSECHARGEPDF = "./target/testout-ZF2PushReverseCharge.pdf";
|
||||||
|
|
||||||
public void testPushExport() {
|
public void testPushExport() {
|
||||||
|
/***
|
||||||
|
* This writes to a filename like an official sample, please consider when changing (probably better not?)
|
||||||
|
*/
|
||||||
// the writing part
|
// the writing part
|
||||||
|
|
||||||
String orgname = "Bei Spiel GmbH";
|
String orgname = "Bei Spiel GmbH";
|
||||||
String number = "RE-20201121/508";
|
String number = "RE-20201121/508";
|
||||||
String priceStr = "160.00";
|
String priceStr = "160.00";
|
||||||
@@ -75,8 +78,7 @@ public class ZF2PushTest extends TestCase {
|
|||||||
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
ze.ignorePDFAErrors();
|
ze.ignorePDFAErrors();
|
||||||
ze.load(SOURCE_PDF);
|
ze.load(SOURCE_PDF);
|
||||||
ze.setProducer("My Application")
|
ze.setProducer("My Application").setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2);
|
||||||
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2);
|
|
||||||
ze.setTransaction(new Invoice().setDueDate(sdf.parse("2020-12-12")).setIssueDate(sdf.parse("2020-11-21")).setDeliveryDate(sdf.parse("2020-11-10"))
|
ze.setTransaction(new Invoice().setDueDate(sdf.parse("2020-12-12")).setIssueDate(sdf.parse("2020-11-21")).setDeliveryDate(sdf.parse("2020-11-10"))
|
||||||
.setSender(new TradeParty(orgname, "Ecke 12", "12345", "Stadthausen", "DE").addBankDetails(new BankDetails("DE88200800000970375700", "COBADEFFXXX").setAccountName("Max Mustermann")).addVATID("DE136695976"))
|
.setSender(new TradeParty(orgname, "Ecke 12", "12345", "Stadthausen", "DE").addBankDetails(new BankDetails("DE88200800000970375700", "COBADEFFXXX").setAccountName("Max Mustermann")).addVATID("DE136695976"))
|
||||||
.setRecipient(new TradeParty("Theodor Est", "Bahnstr. 42", "88802", "Spielkreis", "DE")
|
.setRecipient(new TradeParty("Theodor Est", "Bahnstr. 42", "88802", "Spielkreis", "DE")
|
||||||
@@ -93,26 +95,29 @@ public class ZF2PushTest extends TestCase {
|
|||||||
fail("Exception should not be raised");
|
fail("Exception should not be raised");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// now check the contents (like MustangReaderTest)
|
// now check the contents (like MustangReaderTest)
|
||||||
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF);
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF);
|
||||||
assertTrue(zi.getUTF8().contains("DE88200800000970375700")); //the iban
|
assertTrue(zi.getUTF8().contains("DE88200800000970375700")); //the iban
|
||||||
assertTrue(zi.getUTF8().contains("Max Mustermann")); //account holder
|
assertTrue(zi.getUTF8().contains("Max Mustermann")); //account holder
|
||||||
|
assertTrue(zi.getUTF8().contains("DueDateDateTime")); //account holder
|
||||||
|
assertTrue(zi.getUTF8().contains("20201212")); //account holder
|
||||||
|
|
||||||
assertTrue(zi.getUTF8().contains("<rsm:CrossIndustryInvoice"));
|
assertTrue(zi.getUTF8().contains("<rsm:CrossIndustryInvoice"));
|
||||||
|
|
||||||
assertTrue(zi.getUTF8().contains("EUR")); //default invoice currency
|
assertEquals("EUR", zi.getInvoiceCurrencyCode());
|
||||||
assertTrue(zi.getUTF8().contains("AB321"));
|
assertTrue(zi.getUTF8().contains("AB321"));
|
||||||
|
|
||||||
// Reading ZUGFeRD
|
// Reading ZUGFeRD
|
||||||
assertEquals("571.04", zi.getAmount());
|
assertEquals("571.04", zi.getAmount());
|
||||||
assertEquals(zi.getHolder(), orgname);
|
assertEquals(orgname, zi.getHolder());
|
||||||
assertEquals(zi.getForeignReference(), number);
|
assertEquals(number, zi.getForeignReference());
|
||||||
try {
|
try {
|
||||||
assertEquals(zi.getVersion(), 2);
|
assertEquals(zi.getVersion(), 2);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testAttachmentsExport() {
|
public void testAttachmentsExport() {
|
||||||
@@ -120,11 +125,12 @@ public class ZF2PushTest extends TestCase {
|
|||||||
String orgname = "Test company";
|
String orgname = "Test company";
|
||||||
String number = "123";
|
String number = "123";
|
||||||
String priceStr = "1.00";
|
String priceStr = "1.00";
|
||||||
|
|
||||||
|
String senderDescription = "Kleinunternehmer";
|
||||||
String taxID = "9990815";
|
String taxID = "9990815";
|
||||||
BigDecimal price = new BigDecimal(priceStr);
|
BigDecimal price = new BigDecimal(priceStr);
|
||||||
try {
|
try {
|
||||||
InputStream SOURCE_PDF = this.getClass()
|
InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
||||||
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
|
||||||
|
|
||||||
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
ze.ignorePDFAErrors();
|
ze.ignorePDFAErrors();
|
||||||
@@ -134,8 +140,12 @@ public class ZF2PushTest extends TestCase {
|
|||||||
byte[] b = {12, 13};
|
byte[] b = {12, 13};
|
||||||
ze.attachFile("one.pdf", b, "application/pdf", "Alternative");
|
ze.attachFile("one.pdf", b, "application/pdf", "Alternative");
|
||||||
ze.attachFile("two.pdf", b, "application/pdf", "Alternative");
|
ze.attachFile("two.pdf", b, "application/pdf", "Alternative");
|
||||||
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID(taxID).addVATID("DE0815")).setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE4711").setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE"))).setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, new BigDecimal(1.0)))
|
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
||||||
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID(taxID).addVATID("DE0815").setDescription(senderDescription))
|
||||||
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE4711")
|
||||||
|
.setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE")))
|
||||||
|
.setNumber(number)
|
||||||
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)).setTaxExemptionReason("Kleinunternehmer gemäß §19 UStG").setTaxCategoryCode("E"), price, new BigDecimal(1.0)))
|
||||||
);
|
);
|
||||||
String theXML = new String(ze.getProvider().getXML());
|
String theXML = new String(ze.getProvider().getXML());
|
||||||
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
|
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
|
||||||
@@ -143,24 +153,32 @@ public class ZF2PushTest extends TestCase {
|
|||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
fail("IOException should not be raised");
|
fail("IOException should not be raised");
|
||||||
}
|
}
|
||||||
|
ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter(TARGET_ATTACHMENTSPDF);
|
||||||
|
Invoice i= null;
|
||||||
|
try {
|
||||||
|
i = zii.extractInvoice();
|
||||||
|
} catch (XPathExpressionException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
} catch (ParseException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
assertEquals(senderDescription,i.getSender().getDescription());
|
||||||
|
|
||||||
// now check the contents (like MustangReaderTest)
|
// now check the contents (like MustangReaderTest)
|
||||||
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_ATTACHMENTSPDF);
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_ATTACHMENTSPDF);
|
||||||
|
|
||||||
assertTrue(zi.getUTF8().contains("EUR"));
|
assertEquals("EUR", zi.getInvoiceCurrencyCode());
|
||||||
assertTrue(zi.getUTF8().contains(taxID));
|
assertTrue(zi.getUTF8().contains(taxID));
|
||||||
|
|
||||||
// Reading ZUGFeRD
|
// Reading ZUGFeRD
|
||||||
assertEquals("1.19", zi.getAmount());
|
assertEquals("1.00", zi.getAmount());
|
||||||
assertEquals(zi.getHolder(), orgname);
|
assertEquals(orgname, zi.getHolder());
|
||||||
assertEquals(zi.getForeignReference(), number);
|
assertEquals(number, zi.getForeignReference());
|
||||||
try {
|
try {
|
||||||
assertEquals(zi.getVersion(), 2);
|
assertEquals(zi.getVersion(), 2);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testBankTransferExport() {
|
public void testBankTransferExport() {
|
||||||
@@ -171,19 +189,21 @@ public class ZF2PushTest extends TestCase {
|
|||||||
String taxID = "9990815";
|
String taxID = "9990815";
|
||||||
BigDecimal price = new BigDecimal(priceStr);
|
BigDecimal price = new BigDecimal(priceStr);
|
||||||
try {
|
try {
|
||||||
InputStream SOURCE_PDF = this.getClass()
|
InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
||||||
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
|
||||||
|
|
||||||
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
||||||
ze.setProducer("My Application")
|
ze.setProducer("My Application").setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2);
|
||||||
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2);
|
|
||||||
|
|
||||||
String IBAN = "DE999888777";
|
String IBAN = "DE999888777";
|
||||||
String BIC = "COBADEFXXX";
|
String BIC = "COBADEFXXX";
|
||||||
BankDetails bd = new BankDetails(IBAN, BIC);
|
BankDetails bd = new BankDetails(IBAN, BIC);
|
||||||
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addBankDetails(bd).addTaxID(taxID).addVATID("DE0815")).setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE4711").setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE"))).setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, new BigDecimal(1.0)))
|
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
||||||
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addBankDetails(bd).addTaxID(taxID).addVATID("DE0815"))
|
||||||
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE4711")
|
||||||
|
.setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE")))
|
||||||
|
.setNumber(number)
|
||||||
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, new BigDecimal(1.0)))
|
||||||
);
|
);
|
||||||
String theXML = new String(ze.getProvider().getXML());
|
String theXML = new String(ze.getProvider().getXML());
|
||||||
Invoice read = new Invoice();
|
Invoice read = new Invoice();
|
||||||
@@ -191,7 +211,7 @@ public class ZF2PushTest extends TestCase {
|
|||||||
zii.extractInto(read);
|
zii.extractInto(read);
|
||||||
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
|
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
|
||||||
|
|
||||||
//assertEquals(IBAN,read.getSender().getBankDetails().get(0).getIBAN());
|
assertEquals(IBAN, read.getSender().getBankDetails().get(0).getIBAN());
|
||||||
ze.export(TARGET_BANKPDF);
|
ze.export(TARGET_BANKPDF);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
fail("IOException should not be raised");
|
fail("IOException should not be raised");
|
||||||
@@ -200,8 +220,6 @@ public class ZF2PushTest extends TestCase {
|
|||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
fail("ParseException should not be raised");
|
fail("ParseException should not be raised");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testItemChargesAllowancesExport() {
|
public void testItemChargesAllowancesExport() {
|
||||||
@@ -211,23 +229,23 @@ public class ZF2PushTest extends TestCase {
|
|||||||
String amountStr = "3.00";
|
String amountStr = "3.00";
|
||||||
BigDecimal amount = new BigDecimal(amountStr);
|
BigDecimal amount = new BigDecimal(amountStr);
|
||||||
try {
|
try {
|
||||||
InputStream SOURCE_PDF = this.getClass()
|
InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
||||||
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
|
||||||
|
|
||||||
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
||||||
ze.setProducer("My Application")
|
ze.setProducer("My Application").setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile("extended");
|
||||||
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile("extended");
|
|
||||||
// ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number)
|
// ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number)
|
||||||
// .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50)))));
|
// .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50)))));
|
||||||
|
|
||||||
|
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date())
|
||||||
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("4711").addVATID("DE0815")).setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").setContact(new Contact("contact testname", "123456", "contact.testemail@example.org").setFax("0911623562"))).setNumber(number)
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("4711").addVATID("DE0815"))
|
||||||
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")
|
||||||
|
.setContact(new Contact("contact testname", "123456", "contact.testemail@example.org").setFax("0911623562")))
|
||||||
|
.setNumber(number)
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance(new BigDecimal("0.1"))))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance(new BigDecimal("0.1"))))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50))))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50))))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(2.0)).addCharge(new Charge(new BigDecimal(1))))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(2.0)).addCharge(new Charge(new BigDecimal(1))))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addCharge(new Charge(new BigDecimal(1))).addAllowance(new Allowance(new BigDecimal("1"))))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addCharge(new Charge(new BigDecimal(1))).addAllowance(new Allowance(new BigDecimal("1"))))
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
String theXML = new String(ze.getProvider().getXML());
|
String theXML = new String(ze.getProvider().getXML());
|
||||||
@@ -240,44 +258,43 @@ public class ZF2PushTest extends TestCase {
|
|||||||
// now check the contents (like MustangReaderTest)
|
// now check the contents (like MustangReaderTest)
|
||||||
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_ITEMCHARGESALLOWANCESPDF);
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_ITEMCHARGESALLOWANCESPDF);
|
||||||
|
|
||||||
assertTrue(zi.getUTF8().contains("EUR"));
|
assertEquals("EUR", zi.getInvoiceCurrencyCode());
|
||||||
assertTrue(zi.getUTF8().contains("0911623562")); // fax number
|
assertTrue(zi.getUTF8().contains("0911623562")); // fax number
|
||||||
|
|
||||||
// Reading ZUGFeRD
|
// Reading ZUGFeRD
|
||||||
assertEquals("18.33", zi.getAmount());
|
assertEquals("18.33", zi.getAmount());
|
||||||
assertEquals(zi.getHolder(), orgname);
|
assertEquals(orgname, zi.getHolder());
|
||||||
assertEquals(zi.getForeignReference(), number);
|
assertEquals(number, zi.getForeignReference());
|
||||||
try {
|
try {
|
||||||
assertEquals(zi.getVersion(), 2);
|
assertEquals(zi.getVersion(), 2);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void testIntraCommunitySupplyExport() {
|
/***
|
||||||
|
* you can activate intra community suppliy on item level
|
||||||
|
*/
|
||||||
|
public void testIntraCommunitySupplyItemExport() {
|
||||||
|
|
||||||
String orgname = "Test company";
|
String orgname = "Test company";
|
||||||
String number = "123";
|
String number = "123";
|
||||||
String amountStr = "3.00";
|
String amountStr = "3.00";
|
||||||
BigDecimal amount = new BigDecimal(amountStr);
|
BigDecimal amount = new BigDecimal(amountStr);
|
||||||
try {
|
try {
|
||||||
InputStream SOURCE_PDF = this.getClass()
|
InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
||||||
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
|
||||||
|
|
||||||
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
||||||
ze.setProducer("My Application")
|
ze.setProducer("My Application").setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile("extended");
|
||||||
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile("extended");
|
|
||||||
// ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number)
|
// ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number)
|
||||||
// .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50)))));
|
// .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50)))));
|
||||||
|
|
||||||
|
|
||||||
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
||||||
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addVATID("DE0815").addTaxID ("4711"))
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addVATID("DE0815").addTaxID ("4711"))
|
||||||
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE0816").setContact(new Contact("contact testname", "123456", "contact.testemail@example.org").setFax("0911623562")))
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE0816")
|
||||||
|
.setContact(new Contact("contact testname", "123456", "contact.testemail@example.org").setFax("0911623562")))
|
||||||
.setDeliveryAddress(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE0816"))
|
.setDeliveryAddress(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE0816"))
|
||||||
.setNumber(number)
|
.setNumber(number)
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)).setIntraCommunitySupply(), amount, new BigDecimal(1.0)))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)).setIntraCommunitySupply(), amount, new BigDecimal(1.0)))
|
||||||
@@ -296,22 +313,82 @@ public class ZF2PushTest extends TestCase {
|
|||||||
// now check the contents (like MustangReaderTest)
|
// now check the contents (like MustangReaderTest)
|
||||||
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_INTRACOMMUNITYSUPPLYPDF);
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_INTRACOMMUNITYSUPPLYPDF);
|
||||||
|
|
||||||
assertTrue(zi.getUTF8().contains("EUR"));
|
assertEquals("EUR", zi.getInvoiceCurrencyCode());
|
||||||
assertTrue(zi.getUTF8().contains("0911623562")); // fax number
|
assertTrue(zi.getUTF8().contains("0911623562")); // fax number
|
||||||
|
|
||||||
// Reading ZUGFeRD
|
// Reading ZUGFeRD
|
||||||
assertEquals("15.00", zi.getAmount());
|
assertEquals("15.00", zi.getAmount());
|
||||||
assertEquals(zi.getHolder(), orgname);
|
assertEquals(orgname, zi.getHolder());
|
||||||
assertEquals(zi.getForeignReference(), number);
|
assertEquals(number, zi.getForeignReference());
|
||||||
try {
|
try {
|
||||||
assertEquals(zi.getVersion(), 2);
|
assertEquals(zi.getVersion(), 2);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* or manually, in which case the transaction needs a delivery address outside DE, and the items a 0 tax with reason K and reason code
|
||||||
|
*/
|
||||||
|
|
||||||
|
public void testIntraCommunitySupplyManualExport() {
|
||||||
|
|
||||||
|
String orgname = "Test company";
|
||||||
|
String number = "123";
|
||||||
|
String priceStr = "1.00";
|
||||||
|
|
||||||
|
String taxID = "9990815";
|
||||||
|
BigDecimal price = new BigDecimal(priceStr);
|
||||||
|
try {
|
||||||
|
InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
||||||
|
|
||||||
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
|
ze.ignorePDFAErrors();
|
||||||
|
ze.load(SOURCE_PDF);
|
||||||
|
ze.setProducer("My Application").setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2);
|
||||||
|
|
||||||
|
ze.setTransaction(new Invoice().setDeliveryAddress(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "FR")).setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
||||||
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID(taxID).addVATID("DE0815"))
|
||||||
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "FR").addVATID("DE4711")
|
||||||
|
|
||||||
|
.setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE")))
|
||||||
|
.setNumber(number)
|
||||||
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(0)).setTaxExemptionReason("Kein Ausweis der Umsatzsteuer bei innergemeinschaftlichen Lieferungen").setTaxCategoryCode("K"), price, new BigDecimal(1.0)))
|
||||||
|
);
|
||||||
|
String theXML = new String(ze.getProvider().getXML());
|
||||||
|
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
|
||||||
|
ze.export(TARGET_INTRACOMMUNITYSUPPLYMANUALPDF);
|
||||||
|
} catch (IOException e) {
|
||||||
|
fail("IOException should not be raised");
|
||||||
|
}
|
||||||
|
ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter(TARGET_INTRACOMMUNITYSUPPLYMANUALPDF);
|
||||||
|
Invoice i= null;
|
||||||
|
try {
|
||||||
|
i = zii.extractInvoice();
|
||||||
|
} catch (XPathExpressionException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
} catch (ParseException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// now check the contents (like MustangReaderTest)
|
||||||
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_INTRACOMMUNITYSUPPLYMANUALPDF);
|
||||||
|
|
||||||
|
assertEquals("EUR", zi.getInvoiceCurrencyCode());
|
||||||
|
assertTrue(zi.getUTF8().contains(taxID));
|
||||||
|
|
||||||
|
// Reading ZUGFeRD
|
||||||
|
assertEquals("1.00", zi.getAmount());
|
||||||
|
assertEquals(orgname, zi.getHolder());
|
||||||
|
assertEquals(number, zi.getForeignReference());
|
||||||
|
try {
|
||||||
|
assertEquals(zi.getVersion(), 2);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void testReverseChargeExport() {
|
public void testReverseChargeExport() {
|
||||||
|
|
||||||
String orgname = "Test company";
|
String orgname = "Test company";
|
||||||
@@ -319,19 +396,20 @@ public class ZF2PushTest extends TestCase {
|
|||||||
String amountStr = "3.00";
|
String amountStr = "3.00";
|
||||||
BigDecimal amount = new BigDecimal(amountStr);
|
BigDecimal amount = new BigDecimal(amountStr);
|
||||||
try {
|
try {
|
||||||
InputStream SOURCE_PDF = this.getClass()
|
InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
||||||
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
|
||||||
|
|
||||||
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
||||||
ze.setProducer("My Application")
|
ze.setProducer("My Application").setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile("extended");
|
||||||
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile("extended");
|
|
||||||
|
|
||||||
// ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number)
|
// ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number)
|
||||||
// .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50)))));
|
// .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50)))));
|
||||||
|
|
||||||
|
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
||||||
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addVATID("DE0815").addTaxID("4711")).setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE0816").setContact(new Contact("contact testname", "123456", "contact.testemail@example.org").setFax("0911623562"))).setNumber(number)
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addVATID("DE0815").addTaxID("4711"))
|
||||||
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE0816")
|
||||||
|
.setContact(new Contact("contact testname", "123456", "contact.testemail@example.org").setFax("0911623562")))
|
||||||
|
.setNumber(number)
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)).setReverseCharge(), amount, new BigDecimal(1.0)))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)).setReverseCharge(), amount, new BigDecimal(1.0)))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)).setReverseCharge(), amount, new BigDecimal(1.0)))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)).setReverseCharge(), amount, new BigDecimal(1.0)))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)).setReverseCharge(), amount, new BigDecimal(2.0)))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)).setReverseCharge(), amount, new BigDecimal(2.0)))
|
||||||
@@ -348,20 +426,18 @@ public class ZF2PushTest extends TestCase {
|
|||||||
// now check the contents (like MustangReaderTest)
|
// now check the contents (like MustangReaderTest)
|
||||||
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_REVERSECHARGEPDF);
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_REVERSECHARGEPDF);
|
||||||
|
|
||||||
assertTrue(zi.getUTF8().contains("EUR"));
|
assertEquals("EUR", zi.getInvoiceCurrencyCode());
|
||||||
assertTrue(zi.getUTF8().contains("0911623562")); // fax number
|
assertTrue(zi.getUTF8().contains("0911623562")); // fax number
|
||||||
|
|
||||||
// Reading ZUGFeRD
|
// Reading ZUGFeRD
|
||||||
assertEquals("15.00", zi.getAmount());
|
assertEquals("15.00", zi.getAmount());
|
||||||
assertEquals(zi.getHolder(), orgname);
|
assertEquals(orgname, zi.getHolder());
|
||||||
assertEquals(zi.getForeignReference(), number);
|
assertEquals(number, zi.getForeignReference());
|
||||||
try {
|
try {
|
||||||
assertEquals(zi.getVersion(), 2);
|
assertEquals(zi.getVersion(), 2);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testChargesAllowancesExport() {
|
public void testChargesAllowancesExport() {
|
||||||
@@ -371,22 +447,21 @@ public class ZF2PushTest extends TestCase {
|
|||||||
String amountStr = "3.00";
|
String amountStr = "3.00";
|
||||||
BigDecimal amount = new BigDecimal(amountStr);
|
BigDecimal amount = new BigDecimal(amountStr);
|
||||||
try {
|
try {
|
||||||
InputStream SOURCE_PDF = this.getClass()
|
InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
||||||
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
|
||||||
|
|
||||||
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
ze.ignorePDFAErrors()
|
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
||||||
.load(SOURCE_PDF);
|
ze.setProducer("My Application").setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile(Profiles.getByName("en16931"));
|
||||||
ze.setProducer("My Application")
|
|
||||||
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile(Profiles.getByName("en16931"));
|
|
||||||
|
|
||||||
ze.setTransaction(new Invoice().setCurrency("CHF").setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("4711").addVATID("DE0815")).setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number)
|
ze.setTransaction(new Invoice().setCurrency("CHF").setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
||||||
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("4711").addVATID("DE0815"))
|
||||||
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE"))
|
||||||
|
.setNumber(number)
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)))
|
||||||
.addCharge(new Charge(new BigDecimal(0.5)).setTaxPercent(new BigDecimal(19)))
|
.addCharge(new Charge(new BigDecimal(0.5)).setTaxPercent(new BigDecimal(19)))
|
||||||
.addAllowance(new Allowance(new BigDecimal(0.2)).setTaxPercent(new BigDecimal(19)))
|
.addAllowance(new Allowance(new BigDecimal(0.2)).setTaxPercent(new BigDecimal(19)))
|
||||||
|
|
||||||
);
|
);
|
||||||
String theXML = new String(ze.getProvider().getXML());
|
String theXML = new String(ze.getProvider().getXML());
|
||||||
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
|
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
|
||||||
@@ -398,19 +473,17 @@ public class ZF2PushTest extends TestCase {
|
|||||||
// now check the contents (like MustangReaderTest)
|
// now check the contents (like MustangReaderTest)
|
||||||
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_CHARGESALLOWANCESPDF);
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_CHARGESALLOWANCESPDF);
|
||||||
|
|
||||||
assertFalse(zi.getUTF8().contains("EUR"));
|
assertEquals("CHF", zi.getInvoiceCurrencyCode());
|
||||||
|
|
||||||
// Reading ZUGFeRD
|
// Reading ZUGFeRD
|
||||||
assertEquals("11.07", zi.getAmount());
|
assertEquals("11.07", zi.getAmount());
|
||||||
assertEquals(zi.getHolder(), orgname);
|
assertEquals(orgname, zi.getHolder());
|
||||||
assertEquals(zi.getForeignReference(), number);
|
assertEquals(number, zi.getForeignReference());
|
||||||
try {
|
try {
|
||||||
assertEquals(zi.getVersion(), 2);
|
assertEquals(zi.getVersion(), 2);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
@@ -421,34 +494,32 @@ public class ZF2PushTest extends TestCase {
|
|||||||
String occurrenceTo = "20201005";
|
String occurrenceTo = "20201005";
|
||||||
String contractID = "376zreurzu0983";
|
String contractID = "376zreurzu0983";
|
||||||
|
|
||||||
|
String orgID = "0009845";
|
||||||
String orgname = "Test company";
|
String orgname = "Test company";
|
||||||
String number = "123";
|
String number = "123";
|
||||||
String priceStr = "1.00";
|
String priceStr = "1.00";
|
||||||
String taxID = "9990815";
|
String taxID = "9990815";
|
||||||
BigDecimal price = new BigDecimal(priceStr);
|
BigDecimal price = new BigDecimal(priceStr);
|
||||||
try {
|
try {
|
||||||
InputStream SOURCE_PDF = this.getClass()
|
InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
||||||
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
|
||||||
|
|
||||||
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
ze.ignorePDFAErrors()
|
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
||||||
.load(SOURCE_PDF);
|
|
||||||
|
|
||||||
ze.setProducer("My Application")
|
ze.setProducer("My Application").setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile(Profiles.getByName("extended"));
|
||||||
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile(Profiles.getByName("extended"));
|
|
||||||
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
try {
|
try {
|
||||||
|
|
||||||
SchemedID gtin = new SchemedID("0160", "2001015001325");
|
SchemedID gtin = new SchemedID("0160", "2001015001325");
|
||||||
SchemedID gln = new SchemedID("0088", "4304171000002");
|
SchemedID gln = new SchemedID("0088", "4304171000002");
|
||||||
ze.setTransaction(new Invoice().setCurrency("CHF").addNote("document level 1/2").addNote("document level 2/2").setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
ze.setTransaction(new Invoice().setCurrency("CHF").addNote("document level 1/2").addNote("document level 2/2").setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
||||||
.setSellerOrderReferencedDocumentID("9384").setBuyerOrderReferencedDocumentID("28934")
|
.setSellerOrderReferencedDocumentID("9384").setBuyerOrderReferencedDocumentID("28934")
|
||||||
.setDetailedDeliveryPeriod(new SimpleDateFormat("yyyyMMdd").parse(occurrenceFrom), new SimpleDateFormat("yyyyMMdd").parse(occurrenceTo))
|
.setDetailedDeliveryPeriod(new SimpleDateFormat("yyyyMMdd").parse(occurrenceFrom), new SimpleDateFormat("yyyyMMdd").parse(occurrenceTo))
|
||||||
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID(taxID).setEmail("sender@test.org").setID("0009845").addVATID("DE0815"))
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID(taxID).setEmail("sender@test.org").setID(orgID).addVATID("DE0815"))
|
||||||
.setDeliveryAddress(new TradeParty("just the other side of the street", "teststr.12a", "55232", "Entenhausen", "DE").addVATID("DE47110"))
|
.setDeliveryAddress(new TradeParty("just the other side of the street", "teststr.12a", "55232", "Entenhausen", "DE").addVATID("DE47110"))
|
||||||
.setContractReferencedDocument(contractID)
|
.setContractReferencedDocument(contractID)
|
||||||
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addGlobalID(gln).setEmail("recipient@test.org").addVATID("DE4711").setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE").setFax("++49555123456")).setAdditionalAddress("Hinterhaus 3"))
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addGlobalID(gln).setEmail("recipient@test.org").addVATID("DE4711")
|
||||||
|
.setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE").setFax("++49555123456")).setAdditionalAddress("Hinterhaus 3"))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(16)).addGlobalID(gtin).setSellerAssignedID("4711"), price, new BigDecimal(1.0)).addReferencedLineID("xxx").addNote("item level 1/1").addAllowance(new Allowance(new BigDecimal(0.02)).setReason("item discount").setTaxPercent(new BigDecimal(16))).setDetailedDeliveryPeriod(sdf.parse("2020-01-13"), sdf.parse("2020-01-15")))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(16)).addGlobalID(gtin).setSellerAssignedID("4711"), price, new BigDecimal(1.0)).addReferencedLineID("xxx").addNote("item level 1/1").addAllowance(new Allowance(new BigDecimal(0.02)).setReason("item discount").setTaxPercent(new BigDecimal(16))).setDetailedDeliveryPeriod(sdf.parse("2020-01-13"), sdf.parse("2020-01-15")))
|
||||||
.addCharge(new Charge(new BigDecimal(0.5)).setReason("quick delivery charge").setTaxPercent(new BigDecimal(16)))
|
.addCharge(new Charge(new BigDecimal(0.5)).setReason("quick delivery charge").setTaxPercent(new BigDecimal(16)))
|
||||||
.addAllowance(new Allowance(new BigDecimal(0.2)).setReason("discount").setTaxPercent(new BigDecimal(16)))
|
.addAllowance(new Allowance(new BigDecimal(0.2)).setReason("discount").setTaxPercent(new BigDecimal(16)))
|
||||||
@@ -471,14 +542,12 @@ public class ZF2PushTest extends TestCase {
|
|||||||
|
|
||||||
assertFalse(zi.getUTF8().contains("<ram:IBANID>")); // maybe add a direct debit mandate to the class in the future then this would fail
|
assertFalse(zi.getUTF8().contains("<ram:IBANID>")); // maybe add a direct debit mandate to the class in the future then this would fail
|
||||||
assertTrue(zi.getUTF8().contains("Hinterhaus"));
|
assertTrue(zi.getUTF8().contains("Hinterhaus"));
|
||||||
assertThat(zi.getUTF8()).valueByXPath("//*[local-name()='BuyerTradeParty']/*[local-name()='GlobalID'][@schemeID=0088]").asString()
|
assertThat(zi.getUTF8()).valueByXPath("//*[local-name()='BuyerTradeParty']/*[local-name()='GlobalID'][@schemeID=0088]").asString().isEqualTo("4304171000002");
|
||||||
.isEqualTo("4304171000002");
|
assertThat(zi.getUTF8()).valueByXPath("//*[local-name()='SpecifiedTradeProduct']/*[local-name()='GlobalID'][@schemeID=0160]").asString().isEqualTo("2001015001325");
|
||||||
assertThat(zi.getUTF8()).valueByXPath("//*[local-name()='SpecifiedTradeProduct']/*[local-name()='GlobalID'][@schemeID=0160]").asString()
|
|
||||||
.isEqualTo("2001015001325");
|
|
||||||
assertTrue(zi.getUTF8().contains("2001015001325"));
|
assertTrue(zi.getUTF8().contains("2001015001325"));
|
||||||
assertTrue(zi.getUTF8().contains("4304171000002"));
|
assertTrue(zi.getUTF8().contains("4304171000002"));
|
||||||
assertTrue(zi.getUTF8().contains("0088"));
|
assertTrue(zi.getUTF8().contains("0088"));
|
||||||
assertTrue(zi.getUTF8().contains("0009845"));
|
assertTrue(zi.getUTF8().contains(orgID));
|
||||||
assertTrue(zi.getUTF8().contains("ram:BuyerOrderReferencedDocument"));
|
assertTrue(zi.getUTF8().contains("ram:BuyerOrderReferencedDocument"));
|
||||||
assertTrue(zi.getUTF8().contains(occurrenceFrom));
|
assertTrue(zi.getUTF8().contains(occurrenceFrom));
|
||||||
assertTrue(zi.getUTF8().contains(occurrenceTo));
|
assertTrue(zi.getUTF8().contains(occurrenceTo));
|
||||||
@@ -493,8 +562,7 @@ public class ZF2PushTest extends TestCase {
|
|||||||
assertTrue(zi.getUTF8().contains("document level 2/2"));
|
assertTrue(zi.getUTF8().contains("document level 2/2"));
|
||||||
assertTrue(zi.getUTF8().contains("++49555123456"));
|
assertTrue(zi.getUTF8().contains("++49555123456"));
|
||||||
assertTrue(zi.getUTF8().contains("Cash Discount")); // default description for cash discounts
|
assertTrue(zi.getUTF8().contains("Cash Discount")); // default description for cash discounts
|
||||||
assertThat(zi.getUTF8()).valueByXPath("//*[local-name()='ApplicableTradeTax']/*[local-name()='DueDateTypeCode']").asString()
|
assertThat(zi.getUTF8()).valueByXPath("//*[local-name()='ApplicableTradeTax']/*[local-name()='DueDateTypeCode']").asString().isEqualTo(EventTimeCodeTypeConstants.PAYMENT_DATE);
|
||||||
.isEqualTo(EventTimeCodeTypeConstants.PAYMENT_DATE);
|
|
||||||
|
|
||||||
ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter(TARGET_PUSHEDGE);
|
ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter(TARGET_PUSHEDGE);
|
||||||
try {
|
try {
|
||||||
@@ -502,7 +570,7 @@ public class ZF2PushTest extends TestCase {
|
|||||||
|
|
||||||
assertEquals("4304171000002", i.getRecipient().getGlobalID());
|
assertEquals("4304171000002", i.getRecipient().getGlobalID());
|
||||||
assertEquals("2001015001325", i.getZFItems()[0].getProduct().getGlobalID());
|
assertEquals("2001015001325", i.getZFItems()[0].getProduct().getGlobalID());
|
||||||
|
assertEquals(orgID, i.getSender().getID());
|
||||||
|
|
||||||
} catch (XPathExpressionException e) {
|
} catch (XPathExpressionException e) {
|
||||||
fail("XPathExpressionException should not be raised");
|
fail("XPathExpressionException should not be raised");
|
||||||
@@ -511,8 +579,6 @@ public class ZF2PushTest extends TestCase {
|
|||||||
/* a parseException would also be fired if the calculated grand total does not
|
/* a parseException would also be fired if the calculated grand total does not
|
||||||
match the read grand total */
|
match the read grand total */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testAllowancesExport() {
|
public void testAllowancesExport() {
|
||||||
@@ -521,20 +587,19 @@ public class ZF2PushTest extends TestCase {
|
|||||||
String number = "123";
|
String number = "123";
|
||||||
BigDecimal qty = new BigDecimal("20");
|
BigDecimal qty = new BigDecimal("20");
|
||||||
try {
|
try {
|
||||||
InputStream SOURCE_PDF = this.getClass()
|
InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
||||||
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
|
||||||
|
|
||||||
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
||||||
|
|
||||||
ze.setProducer("My Application")
|
ze.setProducer("My Application").setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile(Profiles.getByName("en16931"));
|
||||||
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile(Profiles.getByName("en16931"));
|
|
||||||
|
|
||||||
|
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
||||||
ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("4711").addVATID("DE0815")).setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number)
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("4711").addVATID("DE0815"))
|
||||||
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE"))
|
||||||
|
.setNumber(number)
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal(500.0), qty).addAllowance(new Allowance(new BigDecimal(300)).setTaxPercent(new BigDecimal(19))))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), new BigDecimal(500.0), qty).addAllowance(new Allowance(new BigDecimal(300)).setTaxPercent(new BigDecimal(19))))
|
||||||
.addAllowance(new Allowance(new BigDecimal(600)).setTaxPercent(new BigDecimal(19)))
|
.addAllowance(new Allowance(new BigDecimal(600)).setTaxPercent(new BigDecimal(19)))
|
||||||
|
|
||||||
);
|
);
|
||||||
String theXML = new String(ze.getProvider().getXML());
|
String theXML = new String(ze.getProvider().getXML());
|
||||||
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
|
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
|
||||||
@@ -546,19 +611,17 @@ public class ZF2PushTest extends TestCase {
|
|||||||
// now check the contents (like MustangReaderTest)
|
// now check the contents (like MustangReaderTest)
|
||||||
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_ALLOWANCESPDF);
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_ALLOWANCESPDF);
|
||||||
|
|
||||||
assertTrue(zi.getUTF8().contains("EUR"));
|
assertEquals("EUR", zi.getInvoiceCurrencyCode());
|
||||||
|
|
||||||
// Reading ZUGFeRD
|
// Reading ZUGFeRD
|
||||||
assertEquals("4046.00", zi.getAmount());
|
assertEquals("4046.00", zi.getAmount());
|
||||||
assertEquals(zi.getHolder(), orgname);
|
assertEquals(orgname, zi.getHolder());
|
||||||
assertEquals(zi.getForeignReference(), number);
|
assertEquals(number, zi.getForeignReference());
|
||||||
try {
|
try {
|
||||||
assertEquals(zi.getVersion(), 2);
|
assertEquals(zi.getVersion(), 2);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRelativeChargesAllowancesExport() {
|
public void testRelativeChargesAllowancesExport() {
|
||||||
@@ -568,22 +631,21 @@ public class ZF2PushTest extends TestCase {
|
|||||||
String priceStr = "3.00";
|
String priceStr = "3.00";
|
||||||
BigDecimal price = new BigDecimal(priceStr);
|
BigDecimal price = new BigDecimal(priceStr);
|
||||||
try {
|
try {
|
||||||
InputStream SOURCE_PDF = this.getClass()
|
InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
||||||
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
|
||||||
|
|
||||||
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
ze.ignorePDFAErrors()
|
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
||||||
.load(SOURCE_PDF);
|
|
||||||
|
|
||||||
ze.setProducer("My Application")
|
ze.setProducer("My Application").setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile(Profiles.getByName("extended"));
|
||||||
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setProfile(Profiles.getByName("extended"));
|
|
||||||
|
|
||||||
ze.setTransaction(new Invoice().setCurrency("CHF").setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("4711").addVATID("DE0815")).setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number)
|
ze.setTransaction(new Invoice().setCurrency("CHF").setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
||||||
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("4711").addVATID("DE0815"))
|
||||||
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE"))
|
||||||
|
.setNumber(number)
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, new BigDecimal(1.0)))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, new BigDecimal(1.0)))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, new BigDecimal(1.0)))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, new BigDecimal(1.0)))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, new BigDecimal(1.0)).addCharge(new Charge().setPercent(new BigDecimal(50)).setTaxPercent(new BigDecimal(19))))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, new BigDecimal(1.0)).addCharge(new Charge().setPercent(new BigDecimal(50)).setTaxPercent(new BigDecimal(19))))
|
||||||
.addAllowance(new Allowance().setPercent(new BigDecimal(50)).setTaxPercent(new BigDecimal(19)))
|
.addAllowance(new Allowance().setPercent(new BigDecimal(50)).setTaxPercent(new BigDecimal(19)))
|
||||||
|
|
||||||
);
|
);
|
||||||
String theXML = new String(ze.getProvider().getXML());
|
String theXML = new String(ze.getProvider().getXML());
|
||||||
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
|
assertTrue(theXML.contains("<rsm:CrossIndustryInvoice"));
|
||||||
@@ -595,19 +657,15 @@ public class ZF2PushTest extends TestCase {
|
|||||||
// now check the contents (like MustangReaderTest)
|
// now check the contents (like MustangReaderTest)
|
||||||
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_RELATIVECHARGESALLOWANCESPDF);
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_RELATIVECHARGESALLOWANCESPDF);
|
||||||
|
|
||||||
assertFalse(zi.getUTF8().contains("EUR"));
|
assertEquals("CHF", zi.getInvoiceCurrencyCode());
|
||||||
|
|
||||||
// Reading ZUGFeRD
|
|
||||||
assertEquals("6.25", zi.getAmount());
|
assertEquals("6.25", zi.getAmount());
|
||||||
assertEquals(zi.getHolder(), orgname);
|
assertEquals(orgname, zi.getHolder());
|
||||||
assertEquals(zi.getForeignReference(), number);
|
assertEquals(number, zi.getForeignReference());
|
||||||
try {
|
try {
|
||||||
assertEquals(zi.getVersion(), 2);
|
assertEquals(zi.getVersion(), 2);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -628,12 +686,13 @@ public class ZF2PushTest extends TestCase {
|
|||||||
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
||||||
|
|
||||||
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
ze.ignorePDFAErrors()
|
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
||||||
.load(SOURCE_PDF);
|
ze.setProducer("My Application").setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2);
|
||||||
ze.setProducer("My Application")
|
|
||||||
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2);
|
|
||||||
// no due date, since we are not expecting money
|
// no due date, since we are not expecting money
|
||||||
Invoice i = new Invoice().setIssueDate(new Date()).setDetailedDeliveryPeriod(new Date(), new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("4711").addVATID("DE0815")).setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE0815")).setNumber(number)
|
Invoice i = new Invoice().setIssueDate(new Date()).setDetailedDeliveryPeriod(new Date(), new Date()).setDeliveryDate(new Date())
|
||||||
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("4711").addVATID("DE0815"))
|
||||||
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE0815"))
|
||||||
|
.setNumber(number)
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, qty))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, qty))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, qty))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, qty))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, qty)).setCorrection("0815");
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, qty)).setCorrection("0815");
|
||||||
@@ -648,19 +707,17 @@ public class ZF2PushTest extends TestCase {
|
|||||||
// now check the contents (like MustangReaderTest)
|
// now check the contents (like MustangReaderTest)
|
||||||
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_CORRECTIONPDF);
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_CORRECTIONPDF);
|
||||||
|
|
||||||
assertTrue(zi.getUTF8().contains("EUR"));
|
assertEquals("EUR", zi.getInvoiceCurrencyCode());
|
||||||
//totest: typecode 384, BuyerOrderReferencedDocument
|
assertEquals(zi.getDocumentCode(), DocumentCodeTypeConstants.CORRECTEDINVOICE);
|
||||||
// Reading ZUGFeRD
|
//totest: BuyerOrderReferencedDocument
|
||||||
assertEquals("-3.57", zi.getAmount());
|
assertEquals("-3.57", zi.getAmount());
|
||||||
assertEquals(zi.getHolder(), orgname);
|
assertEquals(orgname, zi.getHolder());
|
||||||
assertEquals(zi.getForeignReference(), number);
|
assertEquals(number, zi.getForeignReference());
|
||||||
try {
|
try {
|
||||||
assertEquals(zi.getVersion(), 2);
|
assertEquals(zi.getVersion(), 2);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
@@ -673,20 +730,20 @@ public class ZF2PushTest extends TestCase {
|
|||||||
|
|
||||||
String orgname = "Test company";
|
String orgname = "Test company";
|
||||||
String number = "123";
|
String number = "123";
|
||||||
|
String despatchAdviceReferencedDocumentID = "DESADV-4711";
|
||||||
String priceStr = "1.00";
|
String priceStr = "1.00";
|
||||||
BigDecimal price = new BigDecimal(priceStr);
|
BigDecimal price = new BigDecimal(priceStr);
|
||||||
BigDecimal qty = new BigDecimal(1.0);
|
BigDecimal qty = new BigDecimal(1.0);
|
||||||
try {
|
try {
|
||||||
InputStream SOURCE_PDF = this.getClass()
|
InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
||||||
.getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
|
|
||||||
|
|
||||||
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1();
|
||||||
ze.ignorePDFAErrors()
|
ze.ignorePDFAErrors().load(SOURCE_PDF);
|
||||||
.load(SOURCE_PDF);
|
ze.setProducer("My Application").setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2);
|
||||||
ze.
|
Invoice i = new Invoice().setIssueDate(new Date()).setDueDate(new Date()).setDetailedDeliveryPeriod(new Date(), new Date()).setDeliveryDate(new Date())
|
||||||
setProducer("My Application")
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("4711").addVATID("DE0815").addBankDetails(new BankDetails("DE88200800000970375700", "COBADEFFXXX")))
|
||||||
.setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2);
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE0815"))
|
||||||
Invoice i = new Invoice().setIssueDate(new Date()).setDueDate(new Date()).setDetailedDeliveryPeriod(new Date(), new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("4711").addVATID("DE0815").addBankDetails(new BankDetails("DE88200800000970375700", "COBADEFFXXX"))).setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addVATID("DE0815")).setNumber(number)
|
.setNumber(number).setDespatchAdviceReferencedDocumentID(despatchAdviceReferencedDocumentID)
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, qty))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, qty))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, qty))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, qty))
|
||||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, qty)).setCreditNote();
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), price, qty)).setCreditNote();
|
||||||
@@ -701,20 +758,30 @@ public class ZF2PushTest extends TestCase {
|
|||||||
// now check the contents (like MustangReaderTest)
|
// now check the contents (like MustangReaderTest)
|
||||||
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_CREDITNOTEPDF);
|
ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_CREDITNOTEPDF);
|
||||||
|
|
||||||
assertTrue(zi.getUTF8().contains("EUR"));
|
assertEquals("EUR", zi.getInvoiceCurrencyCode());
|
||||||
//totest: typecode 384, BuyerOrderReferencedDocument
|
assertEquals(DocumentCodeTypeConstants.CREDITNOTE, zi.getDocumentCode());
|
||||||
// Reading ZUGFeRD
|
//totest: BuyerOrderReferencedDocument
|
||||||
assertEquals("3.57", zi.getAmount());
|
assertEquals("3.57", zi.getAmount());
|
||||||
assertEquals(zi.getHolder(), orgname);
|
assertEquals(orgname, zi.getHolder());
|
||||||
assertEquals(zi.getForeignReference(), number);
|
assertEquals(number, zi.getForeignReference());
|
||||||
try {
|
try {
|
||||||
assertEquals(zi.getVersion(), 2);
|
assertEquals(zi.getVersion(), 2);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter(TARGET_CREDITNOTEPDF);
|
||||||
|
try {
|
||||||
|
Invoice i = zii.extractInvoice();
|
||||||
|
|
||||||
|
assertEquals(despatchAdviceReferencedDocumentID, i.getDespatchAdviceReferencedDocumentID());
|
||||||
|
|
||||||
|
} catch (XPathExpressionException e) {
|
||||||
|
fail("XPathExpressionException should not be raised");
|
||||||
|
} catch (ParseException e) {
|
||||||
|
fail("ParseException should not be raised");
|
||||||
|
/* a parseException would also be fired if the calculated grand total does not
|
||||||
|
match the read grand total */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.mustangproject.ZUGFeRD;
|
package org.mustangproject.ZUGFeRD;
|
||||||
|
|
||||||
|
import org.mustangproject.FileAttachment;
|
||||||
import org.mustangproject.Invoice;
|
import org.mustangproject.Invoice;
|
||||||
|
|
||||||
import javax.xml.xpath.XPathExpressionException;
|
import javax.xml.xpath.XPathExpressionException;
|
||||||
@@ -31,6 +32,7 @@ import java.nio.file.Files;
|
|||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
@@ -137,6 +139,9 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase {
|
|||||||
assertEquals("DE", invoice.getSender().getCountry());
|
assertEquals("DE", invoice.getSender().getCountry());
|
||||||
assertEquals("Stadthausen", invoice.getSender().getLocation());
|
assertEquals("Stadthausen", invoice.getSender().getLocation());
|
||||||
|
|
||||||
|
assertTrue(invoice.getPayee() != null);
|
||||||
|
assertEquals("VR Factoring GmbH", invoice.getPayee().getName());
|
||||||
|
|
||||||
TransactionCalculator tc = new TransactionCalculator(invoice);
|
TransactionCalculator tc = new TransactionCalculator(invoice);
|
||||||
assertEquals(new BigDecimal("571.04"), tc.getGrandTotal());
|
assertEquals(new BigDecimal("571.04"), tc.getGrandTotal());
|
||||||
|
|
||||||
@@ -282,8 +287,73 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase {
|
|||||||
assertFalse(hasExceptions);
|
assertFalse(hasExceptions);
|
||||||
TransactionCalculator tc = new TransactionCalculator(invoice);
|
TransactionCalculator tc = new TransactionCalculator(invoice);
|
||||||
assertEquals(new BigDecimal("1.00"), tc.getGrandTotal());
|
assertEquals(new BigDecimal("1.00"), tc.getGrandTotal());
|
||||||
|
assertTrue(invoice.getTradeSettlement().length==1);
|
||||||
|
assertTrue(invoice.getTradeSettlement()[0] instanceof IZUGFeRDTradeSettlementPayment);
|
||||||
|
IZUGFeRDTradeSettlementPayment paym=(IZUGFeRDTradeSettlementPayment)invoice.getTradeSettlement()[0];
|
||||||
|
assertEquals("DE12500105170648489890", paym.getOwnIBAN());
|
||||||
|
assertEquals("COBADEFXXX", paym.getOwnBIC());
|
||||||
|
|
||||||
|
|
||||||
|
assertTrue(invoice.getPayee() != null);
|
||||||
|
assertEquals("VR Factoring GmbH", invoice.getPayee().getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* testing if other files embedded in pdf additionally to the invoice can be read correctly
|
||||||
|
* */
|
||||||
|
public void testDetach() {
|
||||||
|
boolean hasExceptions = false;
|
||||||
|
|
||||||
|
byte[] fileA=null;
|
||||||
|
byte[] fileB=null;
|
||||||
|
|
||||||
|
ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter("./target/testout-ZF2PushAttachments.pdf");
|
||||||
|
for (FileAttachment fa:zii.getFileAttachmentsPDF()) {
|
||||||
|
if (fa.getFilename().equals("one.pdf")) {
|
||||||
|
fileA=fa.getData();
|
||||||
|
} else if (fa.getFilename().equals("two.pdf")) {
|
||||||
|
fileB=fa.getData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
byte[] b = {12, 13}; // the sample data that was used to write the files
|
||||||
|
|
||||||
|
assertTrue(Arrays.equals(fileA, b));
|
||||||
|
assertEquals(fileA.length, 2);
|
||||||
|
assertTrue(Arrays.equals(fileB, b));
|
||||||
|
assertEquals(fileB.length, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
public void testEEISI_300_cii_Import() {
|
||||||
|
boolean hasExceptions = false;
|
||||||
|
File input = getResourceAsFile("not_validating_full_invoice_based_onTest_EeISI_300_CENfullmodel2.ubl.xml");
|
||||||
|
|
||||||
|
|
||||||
|
ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter();
|
||||||
|
try {
|
||||||
|
zii.fromXML(new String(Files.readAllBytes(input.toPath()), StandardCharsets.UTF_8));
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
hasExceptions = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Invoice invoice = null;
|
||||||
|
try {
|
||||||
|
invoice = zii.extractInvoice();
|
||||||
|
assertEquals("Seller contact point",invoice.getSender().getName());
|
||||||
|
/*
|
||||||
|
<cbc:Name>Seller contact point</cbc:Name>
|
||||||
|
<cbc:Telephone>+41 345 654455</cbc:Telephone>
|
||||||
|
<cbc:ElectronicMail>seller@contact.de);*
|
||||||
|
} catch (XPathExpressionException | ParseException e) {
|
||||||
|
hasExceptions = true;
|
||||||
|
}
|
||||||
|
assertFalse(hasExceptions);
|
||||||
|
TransactionCalculator tc = new TransactionCalculator(invoice);
|
||||||
|
assertEquals(new BigDecimal("205.00"), tc.getGrandTotal());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,815 @@
|
|||||||
|
|
||||||
|
<!--Sample file Order-x.xml - COMFORT Profile, created by Cyrille Sautereau, Admarel-->
|
||||||
|
<rsm:SCRDMCCBDACIOMessageStructure
|
||||||
|
xmlns:rsm="urn:un:unece:uncefact:data:SCRDMCCBDACIOMessageStructure:100"
|
||||||
|
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:128"
|
||||||
|
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:128"
|
||||||
|
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:128"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<rsm:ExchangedDocumentContext>
|
||||||
|
<ram:TestIndicator>
|
||||||
|
<udt:Indicator>false</udt:Indicator>
|
||||||
|
</ram:TestIndicator>
|
||||||
|
<ram:BusinessProcessSpecifiedDocumentContextParameter>
|
||||||
|
<ram:ID>A1</ram:ID>
|
||||||
|
</ram:BusinessProcessSpecifiedDocumentContextParameter>
|
||||||
|
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||||
|
<ram:ID>urn:order-x.eu:1p0:comfort</ram:ID>
|
||||||
|
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||||
|
</rsm:ExchangedDocumentContext>
|
||||||
|
<rsm:ExchangedDocument>
|
||||||
|
<ram:ID>PO123456789</ram:ID>
|
||||||
|
<ram:Name>Doc Name</ram:Name>
|
||||||
|
<ram:TypeCode>220</ram:TypeCode>
|
||||||
|
<ram:IssueDateTime>
|
||||||
|
<udt:DateTimeString format="203">202003311232</udt:DateTimeString>
|
||||||
|
</ram:IssueDateTime>
|
||||||
|
<ram:CopyIndicator>
|
||||||
|
<udt:Indicator>false</udt:Indicator>
|
||||||
|
</ram:CopyIndicator>
|
||||||
|
<ram:PurposeCode>9</ram:PurposeCode>
|
||||||
|
<ram:RequestedResponseTypeCode>AC</ram:RequestedResponseTypeCode>
|
||||||
|
<ram:IncludedNote>
|
||||||
|
<ram:Content>Content of Note</ram:Content>
|
||||||
|
<ram:SubjectCode>AAI</ram:SubjectCode>
|
||||||
|
</ram:IncludedNote>
|
||||||
|
<ram:EffectiveSpecifiedPeriod>
|
||||||
|
<ram:StartDateTime>
|
||||||
|
<udt:DateTimeString format="102">20200331</udt:DateTimeString>
|
||||||
|
</ram:StartDateTime>
|
||||||
|
<ram:EndDateTime>
|
||||||
|
<udt:DateTimeString format="102">20200630</udt:DateTimeString>
|
||||||
|
</ram:EndDateTime>
|
||||||
|
</ram:EffectiveSpecifiedPeriod>
|
||||||
|
</rsm:ExchangedDocument>
|
||||||
|
<rsm:SupplyChainTradeTransaction>
|
||||||
|
<ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:LineID>1</ram:LineID>
|
||||||
|
<ram:IncludedNote>
|
||||||
|
<ram:Content>WEEE Tax of 0,50 euros per item included</ram:Content>
|
||||||
|
<ram:SubjectCode>TXD</ram:SubjectCode>
|
||||||
|
</ram:IncludedNote>
|
||||||
|
</ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:SpecifiedTradeProduct>
|
||||||
|
<ram:GlobalID schemeID="0160">1234567890123</ram:GlobalID>
|
||||||
|
<ram:SellerAssignedID>987654321</ram:SellerAssignedID>
|
||||||
|
<ram:BuyerAssignedID>654987321</ram:BuyerAssignedID>
|
||||||
|
<ram:Name>Product Name</ram:Name>
|
||||||
|
<ram:Description>Product Description</ram:Description>
|
||||||
|
<ram:BatchID>Product Batch ID (lot ID)</ram:BatchID>
|
||||||
|
<ram:BrandName>Product Brand Name</ram:BrandName>
|
||||||
|
<ram:ApplicableProductCharacteristic>
|
||||||
|
<ram:TypeCode>Characteristic_Code</ram:TypeCode>
|
||||||
|
<ram:Description>Characteristic Description</ram:Description>
|
||||||
|
<ram:Value>5 meters</ram:Value>
|
||||||
|
</ram:ApplicableProductCharacteristic>
|
||||||
|
<ram:DesignatedProductClassification>
|
||||||
|
<ram:ClassCode listID="TST">Class_code</ram:ClassCode>
|
||||||
|
<ram:ClassName>Name Class Codification</ram:ClassName>
|
||||||
|
</ram:DesignatedProductClassification>
|
||||||
|
<ram:IndividualTradeProductInstance>
|
||||||
|
<ram:BatchID>Product Instances Batch ID</ram:BatchID>
|
||||||
|
<ram:SerialID>Product Instances Supplier Serial ID</ram:SerialID>
|
||||||
|
</ram:IndividualTradeProductInstance>
|
||||||
|
<ram:ApplicableSupplyChainPackaging>
|
||||||
|
<ram:TypeCode>7B</ram:TypeCode>
|
||||||
|
<ram:LinearSpatialDimension>
|
||||||
|
<ram:WidthMeasure unitCode="MTR">5</ram:WidthMeasure>
|
||||||
|
<ram:LengthMeasure unitCode="MTR">3</ram:LengthMeasure>
|
||||||
|
<ram:HeightMeasure unitCode="MTR">1</ram:HeightMeasure>
|
||||||
|
</ram:LinearSpatialDimension>
|
||||||
|
</ram:ApplicableSupplyChainPackaging>
|
||||||
|
<ram:OriginTradeCountry>
|
||||||
|
<ram:ID>FR</ram:ID>
|
||||||
|
</ram:OriginTradeCountry>
|
||||||
|
<ram:AdditionalReferenceReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>ADD_REF_PROD_ID</ram:IssuerAssignedID>
|
||||||
|
<ram:URIID>ADD_REF_PROD_URIID</ram:URIID>
|
||||||
|
<ram:TypeCode>6</ram:TypeCode>
|
||||||
|
<ram:Name>ADD_REF_PROD_Desc</ram:Name>
|
||||||
|
</ram:AdditionalReferenceReferencedDocument>
|
||||||
|
</ram:SpecifiedTradeProduct>
|
||||||
|
<ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:LineID>1</ram:LineID>
|
||||||
|
</ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:QuotationReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>QUOT_125487</ram:IssuerAssignedID>
|
||||||
|
<ram:LineID>3</ram:LineID>
|
||||||
|
</ram:QuotationReferencedDocument>
|
||||||
|
<ram:AdditionalReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>ADD_REF_DOC_ID</ram:IssuerAssignedID>
|
||||||
|
<ram:URIID>ADD_REF_DOC_URIID</ram:URIID>
|
||||||
|
<ram:LineID>5</ram:LineID>
|
||||||
|
<ram:TypeCode>916</ram:TypeCode>
|
||||||
|
<ram:Name>ADD_REF_DOC_Desc</ram:Name>
|
||||||
|
</ram:AdditionalReferencedDocument>
|
||||||
|
<ram:AdditionalReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>OBJECT_125487</ram:IssuerAssignedID>
|
||||||
|
<ram:TypeCode>130</ram:TypeCode>
|
||||||
|
<ram:ReferenceTypeCode>AWV</ram:ReferenceTypeCode>
|
||||||
|
</ram:AdditionalReferencedDocument>
|
||||||
|
<ram:GrossPriceProductTradePrice>
|
||||||
|
<ram:ChargeAmount>10.50</ram:ChargeAmount>
|
||||||
|
<ram:BasisQuantity unitCode="C62">1.00</ram:BasisQuantity>
|
||||||
|
<ram:AppliedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>false</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:ActualAmount>1.00</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>95</ram:ReasonCode>
|
||||||
|
<ram:Reason>DISCOUNT</ram:Reason>
|
||||||
|
</ram:AppliedTradeAllowanceCharge>
|
||||||
|
<ram:AppliedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>true</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:ActualAmount>0.50</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>AEW</ram:ReasonCode>
|
||||||
|
<ram:Reason>WEEE</ram:Reason>
|
||||||
|
</ram:AppliedTradeAllowanceCharge>
|
||||||
|
</ram:GrossPriceProductTradePrice>
|
||||||
|
<ram:NetPriceProductTradePrice>
|
||||||
|
<ram:ChargeAmount>10.00</ram:ChargeAmount>
|
||||||
|
<ram:BasisQuantity unitCode="C62">1.00</ram:BasisQuantity>
|
||||||
|
</ram:NetPriceProductTradePrice>
|
||||||
|
<ram:CatalogueReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>CATALOG_REF_ID</ram:IssuerAssignedID>
|
||||||
|
<ram:LineID>2</ram:LineID>
|
||||||
|
</ram:CatalogueReferencedDocument>
|
||||||
|
<ram:BlanketOrderReferencedDocument>
|
||||||
|
<ram:LineID>2</ram:LineID>
|
||||||
|
</ram:BlanketOrderReferencedDocument>
|
||||||
|
</ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:PartialDeliveryAllowedIndicator>
|
||||||
|
<udt:Indicator>true</udt:Indicator>
|
||||||
|
</ram:PartialDeliveryAllowedIndicator>
|
||||||
|
<ram:RequestedQuantity unitCode="C62">6</ram:RequestedQuantity>
|
||||||
|
<ram:PackageQuantity unitCode="C62">3</ram:PackageQuantity>
|
||||||
|
<ram:PerPackageUnitQuantity unitCode="C62">2</ram:PerPackageUnitQuantity>
|
||||||
|
<ram:RequestedDeliverySupplyChainEvent>
|
||||||
|
<ram:OccurrenceSpecifiedPeriod>
|
||||||
|
<ram:StartDateTime>
|
||||||
|
<udt:DateTimeString format="203">202004150900</udt:DateTimeString>
|
||||||
|
</ram:StartDateTime>
|
||||||
|
<ram:EndDateTime>
|
||||||
|
<udt:DateTimeString format="203">202004301800</udt:DateTimeString>
|
||||||
|
</ram:EndDateTime>
|
||||||
|
</ram:OccurrenceSpecifiedPeriod>
|
||||||
|
</ram:RequestedDeliverySupplyChainEvent>
|
||||||
|
</ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:SpecifiedLineTradeSettlement>
|
||||||
|
<ram:ApplicableTradeTax>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:CategoryCode>S</ram:CategoryCode>
|
||||||
|
<ram:RateApplicablePercent>20.00</ram:RateApplicablePercent>
|
||||||
|
</ram:ApplicableTradeTax>
|
||||||
|
<ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>false</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:CalculationPercent>10.00</ram:CalculationPercent>
|
||||||
|
<ram:BasisAmount>60.00</ram:BasisAmount>
|
||||||
|
<ram:ActualAmount>6.00</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>64</ram:ReasonCode>
|
||||||
|
<ram:Reason>SPECIAL AGREEMENT</ram:Reason>
|
||||||
|
</ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>true</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:CalculationPercent>10.00</ram:CalculationPercent>
|
||||||
|
<ram:BasisAmount>60.00</ram:BasisAmount>
|
||||||
|
<ram:ActualAmount>6.00</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>FC</ram:ReasonCode>
|
||||||
|
<ram:Reason>FREIGHT SERVICES</ram:Reason>
|
||||||
|
</ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
<ram:LineTotalAmount>60.00</ram:LineTotalAmount>
|
||||||
|
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
<ram:ReceivableSpecifiedTradeAccountingAccount>
|
||||||
|
<ram:ID>BUYER_ACCOUNTING_REF</ram:ID>
|
||||||
|
</ram:ReceivableSpecifiedTradeAccountingAccount>
|
||||||
|
</ram:SpecifiedLineTradeSettlement>
|
||||||
|
</ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:LineID>2</ram:LineID>
|
||||||
|
<ram:IncludedNote>
|
||||||
|
<ram:Content>WEEE Tax of 0,50 euros per item included</ram:Content>
|
||||||
|
<ram:SubjectCode>TXD</ram:SubjectCode>
|
||||||
|
</ram:IncludedNote>
|
||||||
|
</ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:SpecifiedTradeProduct>
|
||||||
|
<ram:GlobalID schemeID="0160">548796523</ram:GlobalID>
|
||||||
|
<ram:SellerAssignedID>598632147</ram:SellerAssignedID>
|
||||||
|
<ram:BuyerAssignedID>698569856</ram:BuyerAssignedID>
|
||||||
|
<ram:Name>Product Name</ram:Name>
|
||||||
|
<ram:Description>Product Description</ram:Description>
|
||||||
|
<ram:BatchID>Product Batch ID (lot ID)</ram:BatchID>
|
||||||
|
<ram:BrandName>Product Brand Name</ram:BrandName>
|
||||||
|
<ram:ApplicableProductCharacteristic>
|
||||||
|
<ram:TypeCode>Characteristic_Code</ram:TypeCode>
|
||||||
|
<ram:Description>Characteristic Description</ram:Description>
|
||||||
|
<ram:Value>3 meters</ram:Value>
|
||||||
|
</ram:ApplicableProductCharacteristic>
|
||||||
|
<ram:DesignatedProductClassification>
|
||||||
|
<ram:ClassCode listID="TST">Class_code</ram:ClassCode>
|
||||||
|
<ram:ClassName>Name Class Codification</ram:ClassName>
|
||||||
|
</ram:DesignatedProductClassification>
|
||||||
|
<ram:IndividualTradeProductInstance>
|
||||||
|
<ram:BatchID>Product Instances Batch ID</ram:BatchID>
|
||||||
|
<ram:SerialID>Product Instances Supplier Serial ID</ram:SerialID>
|
||||||
|
</ram:IndividualTradeProductInstance>
|
||||||
|
<ram:ApplicableSupplyChainPackaging>
|
||||||
|
<ram:TypeCode>7B</ram:TypeCode>
|
||||||
|
<ram:LinearSpatialDimension>
|
||||||
|
<ram:WidthMeasure unitCode="MTR">2</ram:WidthMeasure>
|
||||||
|
<ram:LengthMeasure unitCode="MTR">1</ram:LengthMeasure>
|
||||||
|
<ram:HeightMeasure unitCode="MTR">3</ram:HeightMeasure>
|
||||||
|
</ram:LinearSpatialDimension>
|
||||||
|
</ram:ApplicableSupplyChainPackaging>
|
||||||
|
<ram:OriginTradeCountry>
|
||||||
|
<ram:ID>FR</ram:ID>
|
||||||
|
</ram:OriginTradeCountry>
|
||||||
|
<ram:AdditionalReferenceReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>ADD_REF_PROD_ID</ram:IssuerAssignedID>
|
||||||
|
<ram:URIID>ADD_REF_PROD_URIID</ram:URIID>
|
||||||
|
<ram:TypeCode>6</ram:TypeCode>
|
||||||
|
<ram:Name>ADD_REF_PROD_Desc</ram:Name>
|
||||||
|
</ram:AdditionalReferenceReferencedDocument>
|
||||||
|
</ram:SpecifiedTradeProduct>
|
||||||
|
<ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:LineID>3</ram:LineID>
|
||||||
|
</ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:QuotationReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>QUOT_125487</ram:IssuerAssignedID>
|
||||||
|
<ram:LineID>2</ram:LineID>
|
||||||
|
</ram:QuotationReferencedDocument>
|
||||||
|
<ram:AdditionalReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>ADD_REF_DOC_ID</ram:IssuerAssignedID>
|
||||||
|
<ram:URIID>ADD_REF_DOC_URIID</ram:URIID>
|
||||||
|
<ram:LineID>5</ram:LineID>
|
||||||
|
<ram:TypeCode>916</ram:TypeCode>
|
||||||
|
<ram:Name>ADD_REF_DOC_Desc</ram:Name>
|
||||||
|
</ram:AdditionalReferencedDocument>
|
||||||
|
<ram:AdditionalReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>OBJECT_125487</ram:IssuerAssignedID>
|
||||||
|
<ram:TypeCode>130</ram:TypeCode>
|
||||||
|
<ram:ReferenceTypeCode>AWV</ram:ReferenceTypeCode>
|
||||||
|
</ram:AdditionalReferencedDocument>
|
||||||
|
<ram:GrossPriceProductTradePrice>
|
||||||
|
<ram:ChargeAmount>19.50</ram:ChargeAmount>
|
||||||
|
<ram:BasisQuantity unitCode="C62">2</ram:BasisQuantity>
|
||||||
|
<ram:AppliedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>true</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:ActualAmount>0.50</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>AEW</ram:ReasonCode>
|
||||||
|
<ram:Reason>WEEE TAX</ram:Reason>
|
||||||
|
</ram:AppliedTradeAllowanceCharge>
|
||||||
|
</ram:GrossPriceProductTradePrice>
|
||||||
|
<ram:NetPriceProductTradePrice>
|
||||||
|
<ram:ChargeAmount>20.00</ram:ChargeAmount>
|
||||||
|
<ram:BasisQuantity unitCode="C62">2</ram:BasisQuantity>
|
||||||
|
</ram:NetPriceProductTradePrice>
|
||||||
|
<ram:CatalogueReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>CATALOG_REF_ID</ram:IssuerAssignedID>
|
||||||
|
<ram:LineID>2</ram:LineID>
|
||||||
|
</ram:CatalogueReferencedDocument>
|
||||||
|
<ram:BlanketOrderReferencedDocument>
|
||||||
|
<ram:LineID>3</ram:LineID>
|
||||||
|
</ram:BlanketOrderReferencedDocument>
|
||||||
|
</ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:PartialDeliveryAllowedIndicator>
|
||||||
|
<udt:Indicator>true</udt:Indicator>
|
||||||
|
</ram:PartialDeliveryAllowedIndicator>
|
||||||
|
<ram:RequestedQuantity unitCode="C62">10.00</ram:RequestedQuantity>
|
||||||
|
<ram:PackageQuantity unitCode="C62">5</ram:PackageQuantity>
|
||||||
|
<ram:PerPackageUnitQuantity unitCode="C62">2</ram:PerPackageUnitQuantity>
|
||||||
|
<ram:RequestedDeliverySupplyChainEvent>
|
||||||
|
<ram:OccurrenceDateTime>
|
||||||
|
<udt:DateTimeString format="102">20200415</udt:DateTimeString>
|
||||||
|
</ram:OccurrenceDateTime>
|
||||||
|
</ram:RequestedDeliverySupplyChainEvent>
|
||||||
|
</ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:SpecifiedLineTradeSettlement>
|
||||||
|
<ram:ApplicableTradeTax>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:CategoryCode>S</ram:CategoryCode>
|
||||||
|
<ram:RateApplicablePercent>20.00</ram:RateApplicablePercent>
|
||||||
|
</ram:ApplicableTradeTax>
|
||||||
|
<ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>false</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:CalculationPercent>1.00</ram:CalculationPercent>
|
||||||
|
<ram:BasisAmount>100.00</ram:BasisAmount>
|
||||||
|
<ram:ActualAmount>1.00</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>64</ram:ReasonCode>
|
||||||
|
<ram:Reason>SPECIAL AGREEMENT</ram:Reason>
|
||||||
|
</ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>true</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:CalculationPercent>1.00</ram:CalculationPercent>
|
||||||
|
<ram:BasisAmount>100.00</ram:BasisAmount>
|
||||||
|
<ram:ActualAmount>1.00</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>FC</ram:ReasonCode>
|
||||||
|
<ram:Reason>FREIGHT SERVICES</ram:Reason>
|
||||||
|
</ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
<ram:LineTotalAmount>100.00</ram:LineTotalAmount>
|
||||||
|
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
<ram:ReceivableSpecifiedTradeAccountingAccount>
|
||||||
|
<ram:ID>BUYER_ACCOUNTING_REF</ram:ID>
|
||||||
|
</ram:ReceivableSpecifiedTradeAccountingAccount>
|
||||||
|
</ram:SpecifiedLineTradeSettlement>
|
||||||
|
</ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:LineID>3</ram:LineID>
|
||||||
|
<ram:IncludedNote>
|
||||||
|
<ram:Content>Content of Note</ram:Content>
|
||||||
|
<ram:SubjectCode>AAI</ram:SubjectCode>
|
||||||
|
</ram:IncludedNote>
|
||||||
|
</ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:SpecifiedTradeProduct>
|
||||||
|
<ram:GlobalID schemeID="0160">854721548</ram:GlobalID>
|
||||||
|
<ram:SellerAssignedID>698325417</ram:SellerAssignedID>
|
||||||
|
<ram:BuyerAssignedID>598674321</ram:BuyerAssignedID>
|
||||||
|
<ram:Name>Product Name</ram:Name>
|
||||||
|
<ram:Description>Product Description</ram:Description>
|
||||||
|
<ram:BatchID>Product Batch ID (lot ID)</ram:BatchID>
|
||||||
|
<ram:BrandName>Product Brand Name</ram:BrandName>
|
||||||
|
<ram:ApplicableProductCharacteristic>
|
||||||
|
<ram:TypeCode>Characteristic_Code</ram:TypeCode>
|
||||||
|
<ram:Description>Characteristic Description</ram:Description>
|
||||||
|
<ram:Value>3 meters</ram:Value>
|
||||||
|
</ram:ApplicableProductCharacteristic>
|
||||||
|
<ram:DesignatedProductClassification>
|
||||||
|
<ram:ClassCode listID="TST">Class_code</ram:ClassCode>
|
||||||
|
<ram:ClassName>Name Class Codification</ram:ClassName>
|
||||||
|
</ram:DesignatedProductClassification>
|
||||||
|
<ram:IndividualTradeProductInstance>
|
||||||
|
<ram:BatchID>Product Instances Batch ID</ram:BatchID>
|
||||||
|
<ram:SerialID>Product Instances Supplier Serial ID</ram:SerialID>
|
||||||
|
</ram:IndividualTradeProductInstance>
|
||||||
|
<ram:ApplicableSupplyChainPackaging>
|
||||||
|
<ram:TypeCode>7B</ram:TypeCode>
|
||||||
|
<ram:LinearSpatialDimension>
|
||||||
|
<ram:WidthMeasure unitCode="MTR">2</ram:WidthMeasure>
|
||||||
|
<ram:LengthMeasure unitCode="MTR">1</ram:LengthMeasure>
|
||||||
|
<ram:HeightMeasure unitCode="MTR">3</ram:HeightMeasure>
|
||||||
|
</ram:LinearSpatialDimension>
|
||||||
|
</ram:ApplicableSupplyChainPackaging>
|
||||||
|
<ram:OriginTradeCountry>
|
||||||
|
<ram:ID>FR</ram:ID>
|
||||||
|
</ram:OriginTradeCountry>
|
||||||
|
<ram:AdditionalReferenceReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>ADD_REF_PROD_ID</ram:IssuerAssignedID>
|
||||||
|
<ram:URIID>ADD_REF_PROD_URIID</ram:URIID>
|
||||||
|
<ram:TypeCode>6</ram:TypeCode>
|
||||||
|
<ram:Name>ADD_REF_PROD_Desc</ram:Name>
|
||||||
|
</ram:AdditionalReferenceReferencedDocument>
|
||||||
|
</ram:SpecifiedTradeProduct>
|
||||||
|
<ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:LineID>4</ram:LineID>
|
||||||
|
</ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:QuotationReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>QUOT_125487</ram:IssuerAssignedID>
|
||||||
|
<ram:LineID>1</ram:LineID>
|
||||||
|
</ram:QuotationReferencedDocument>
|
||||||
|
<ram:AdditionalReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>ADD_REF_DOC_ID</ram:IssuerAssignedID>
|
||||||
|
<ram:URIID>ADD_REF_DOC_URIID</ram:URIID>
|
||||||
|
<ram:LineID>5</ram:LineID>
|
||||||
|
<ram:TypeCode>916</ram:TypeCode>
|
||||||
|
<ram:Name>ADD_REF_DOC_Desc</ram:Name>
|
||||||
|
</ram:AdditionalReferencedDocument>
|
||||||
|
<ram:AdditionalReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>OBJECT_125487</ram:IssuerAssignedID>
|
||||||
|
<ram:TypeCode>130</ram:TypeCode>
|
||||||
|
<ram:ReferenceTypeCode>AWV</ram:ReferenceTypeCode>
|
||||||
|
</ram:AdditionalReferencedDocument>
|
||||||
|
<ram:GrossPriceProductTradePrice>
|
||||||
|
<ram:ChargeAmount>30</ram:ChargeAmount>
|
||||||
|
<ram:BasisQuantity unitCode="C62">1</ram:BasisQuantity>
|
||||||
|
<ram:AppliedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>false</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:ActualAmount>5</ram:ActualAmount>
|
||||||
|
</ram:AppliedTradeAllowanceCharge>
|
||||||
|
</ram:GrossPriceProductTradePrice>
|
||||||
|
<ram:NetPriceProductTradePrice>
|
||||||
|
<ram:ChargeAmount>25</ram:ChargeAmount>
|
||||||
|
<ram:BasisQuantity unitCode="C62">1</ram:BasisQuantity>
|
||||||
|
</ram:NetPriceProductTradePrice>
|
||||||
|
<ram:CatalogueReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>CATALOG_REF_ID</ram:IssuerAssignedID>
|
||||||
|
<ram:LineID>5</ram:LineID>
|
||||||
|
</ram:CatalogueReferencedDocument>
|
||||||
|
<ram:BlanketOrderReferencedDocument>
|
||||||
|
<ram:LineID>4</ram:LineID>
|
||||||
|
</ram:BlanketOrderReferencedDocument>
|
||||||
|
</ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:PartialDeliveryAllowedIndicator>
|
||||||
|
<udt:Indicator>true</udt:Indicator>
|
||||||
|
</ram:PartialDeliveryAllowedIndicator>
|
||||||
|
<ram:RequestedQuantity unitCode="C62">6</ram:RequestedQuantity>
|
||||||
|
<ram:PackageQuantity unitCode="C62">3</ram:PackageQuantity>
|
||||||
|
<ram:PerPackageUnitQuantity unitCode="C62">2</ram:PerPackageUnitQuantity>
|
||||||
|
<ram:RequestedDeliverySupplyChainEvent>
|
||||||
|
<ram:OccurrenceSpecifiedPeriod>
|
||||||
|
<ram:StartDateTime>
|
||||||
|
<udt:DateTimeString format="102">20200415</udt:DateTimeString>
|
||||||
|
</ram:StartDateTime>
|
||||||
|
<ram:EndDateTime>
|
||||||
|
<udt:DateTimeString format="102">20200430</udt:DateTimeString>
|
||||||
|
</ram:EndDateTime>
|
||||||
|
</ram:OccurrenceSpecifiedPeriod>
|
||||||
|
</ram:RequestedDeliverySupplyChainEvent>
|
||||||
|
</ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:SpecifiedLineTradeSettlement>
|
||||||
|
<ram:ApplicableTradeTax>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:CategoryCode>S</ram:CategoryCode>
|
||||||
|
<ram:RateApplicablePercent>20.00</ram:RateApplicablePercent>
|
||||||
|
</ram:ApplicableTradeTax>
|
||||||
|
<ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>false</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:CalculationPercent>10.00</ram:CalculationPercent>
|
||||||
|
<ram:BasisAmount>150.00</ram:BasisAmount>
|
||||||
|
<ram:ActualAmount>15.00</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>64</ram:ReasonCode>
|
||||||
|
<ram:Reason>SPECIAL AGREEMENT</ram:Reason>
|
||||||
|
</ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>true</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:CalculationPercent>10.00</ram:CalculationPercent>
|
||||||
|
<ram:BasisAmount>150.00</ram:BasisAmount>
|
||||||
|
<ram:ActualAmount>15.00</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>FC</ram:ReasonCode>
|
||||||
|
<ram:Reason>FREIGHT SERVICES</ram:Reason>
|
||||||
|
</ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
<ram:LineTotalAmount>150.00</ram:LineTotalAmount>
|
||||||
|
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
<ram:ReceivableSpecifiedTradeAccountingAccount>
|
||||||
|
<ram:ID>BUYER_ACCOUNTING_REF</ram:ID>
|
||||||
|
</ram:ReceivableSpecifiedTradeAccountingAccount>
|
||||||
|
</ram:SpecifiedLineTradeSettlement>
|
||||||
|
</ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:ApplicableHeaderTradeAgreement>
|
||||||
|
<ram:BuyerReference>BUYER_REF_BU123</ram:BuyerReference>
|
||||||
|
<ram:SellerTradeParty>
|
||||||
|
<ram:ID>SUPPLIER_ID_321654</ram:ID>
|
||||||
|
<ram:GlobalID schemeID="0088">123654879</ram:GlobalID>
|
||||||
|
<ram:Name>SELLER_NAME</ram:Name>
|
||||||
|
<ram:Description>SELLER_ADD_LEGAL_INFORMATION</ram:Description>
|
||||||
|
<ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:ID schemeID="0002">123456789</ram:ID>
|
||||||
|
<ram:TradingBusinessName>SELLER_TRADING_NAME</ram:TradingBusinessName>
|
||||||
|
</ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:DefinedTradeContact>
|
||||||
|
<ram:PersonName>SELLER_CONTACT_NAME</ram:PersonName>
|
||||||
|
<ram:DepartmentName>SELLER_CONTACT_DEP</ram:DepartmentName>
|
||||||
|
<ram:TypeCode>SR</ram:TypeCode>
|
||||||
|
<ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:CompleteNumber>+33 6 25 64 98 75</ram:CompleteNumber>
|
||||||
|
</ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:EmailURIUniversalCommunication>
|
||||||
|
<ram:URIID>contact@seller.com</ram:URIID>
|
||||||
|
</ram:EmailURIUniversalCommunication>
|
||||||
|
</ram:DefinedTradeContact>
|
||||||
|
<ram:PostalTradeAddress>
|
||||||
|
<ram:PostcodeCode>75001</ram:PostcodeCode>
|
||||||
|
<ram:LineOne>SELLER_ADDR_1</ram:LineOne>
|
||||||
|
<ram:LineTwo>SELLER_ADDR_2</ram:LineTwo>
|
||||||
|
<ram:LineThree>SELLER_ADDR_3</ram:LineThree>
|
||||||
|
<ram:CityName>SELLER_CITY</ram:CityName>
|
||||||
|
<ram:CountryID>FR</ram:CountryID>
|
||||||
|
</ram:PostalTradeAddress>
|
||||||
|
<ram:URIUniversalCommunication>
|
||||||
|
<ram:URIID schemeID="EM">sales@seller.com</ram:URIID>
|
||||||
|
</ram:URIUniversalCommunication>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="VA">FR 32 123 456 789</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="FC">SELLER_TAX_ID</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
</ram:SellerTradeParty>
|
||||||
|
<ram:BuyerTradeParty>
|
||||||
|
<ram:ID>BY_ID_9587456</ram:ID>
|
||||||
|
<ram:GlobalID schemeID="0088">98765432179</ram:GlobalID>
|
||||||
|
<ram:Name>BUYER_NAME</ram:Name>
|
||||||
|
<ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:ID schemeID="0002">987654321</ram:ID>
|
||||||
|
<ram:TradingBusinessName>BUYER_TRADING_NAME</ram:TradingBusinessName>
|
||||||
|
</ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:DefinedTradeContact>
|
||||||
|
<ram:PersonName>BUYER_CONTACT_NAME</ram:PersonName>
|
||||||
|
<ram:DepartmentName>BUYER_CONTACT_DEP</ram:DepartmentName>
|
||||||
|
<ram:TypeCode>LB</ram:TypeCode>
|
||||||
|
<ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:CompleteNumber>+33 6 65 98 75 32</ram:CompleteNumber>
|
||||||
|
</ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:EmailURIUniversalCommunication>
|
||||||
|
<ram:URIID>contact@buyer.com</ram:URIID>
|
||||||
|
</ram:EmailURIUniversalCommunication>
|
||||||
|
</ram:DefinedTradeContact>
|
||||||
|
<ram:PostalTradeAddress>
|
||||||
|
<ram:PostcodeCode>69001</ram:PostcodeCode>
|
||||||
|
<ram:LineOne>BUYER_ADDR_1</ram:LineOne>
|
||||||
|
<ram:LineTwo>BUYER_ADDR_2</ram:LineTwo>
|
||||||
|
<ram:LineThree>BUYER_ADDR_3</ram:LineThree>
|
||||||
|
<ram:CityName>BUYER_CITY</ram:CityName>
|
||||||
|
<ram:CountryID>FR</ram:CountryID>
|
||||||
|
</ram:PostalTradeAddress>
|
||||||
|
<ram:URIUniversalCommunication>
|
||||||
|
<ram:URIID schemeID="EM">operation@buyer.com</ram:URIID>
|
||||||
|
</ram:URIUniversalCommunication>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="VA">FR 05 987 654 321</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="FC">BUYER_TAX_ID</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
</ram:BuyerTradeParty>
|
||||||
|
<ram:BuyerRequisitionerTradeParty>
|
||||||
|
<ram:ID>BUYER_REQ_ID_25987</ram:ID>
|
||||||
|
<ram:GlobalID schemeID="0088">654987321</ram:GlobalID>
|
||||||
|
<ram:Name>BUYER_REQ_NAME</ram:Name>
|
||||||
|
<ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:ID schemeID="0002">654987321</ram:ID>
|
||||||
|
<ram:TradingBusinessName>BUYER_REQ_TRADING_NAME</ram:TradingBusinessName>
|
||||||
|
</ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:DefinedTradeContact>
|
||||||
|
<ram:PersonName>BUYER_REQ_CONTACT_NAME</ram:PersonName>
|
||||||
|
<ram:DepartmentName>BUYER_REQ_CONTACT_DEP</ram:DepartmentName>
|
||||||
|
<ram:TypeCode>PD</ram:TypeCode>
|
||||||
|
<ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:CompleteNumber>+33 6 54 98 65 32</ram:CompleteNumber>
|
||||||
|
</ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:EmailURIUniversalCommunication>
|
||||||
|
<ram:URIID>requisitioner@buyer.com</ram:URIID>
|
||||||
|
</ram:EmailURIUniversalCommunication>
|
||||||
|
</ram:DefinedTradeContact>
|
||||||
|
<ram:PostalTradeAddress>
|
||||||
|
<ram:PostcodeCode>69001</ram:PostcodeCode>
|
||||||
|
<ram:LineOne>BUYER_REQ_ADDR_1</ram:LineOne>
|
||||||
|
<ram:LineTwo>BUYER_REQ_ADDR_2</ram:LineTwo>
|
||||||
|
<ram:LineThree>BUYER_REQ_ADDR_3</ram:LineThree>
|
||||||
|
<ram:CityName>BUYER_REQ_CITY</ram:CityName>
|
||||||
|
<ram:CountryID>FR</ram:CountryID>
|
||||||
|
</ram:PostalTradeAddress>
|
||||||
|
<ram:URIUniversalCommunication>
|
||||||
|
<ram:URIID schemeID="EM">purchase@buyer.com</ram:URIID>
|
||||||
|
</ram:URIUniversalCommunication>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="VA">FR 92 654 987 321</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
</ram:BuyerRequisitionerTradeParty>
|
||||||
|
<ram:ApplicableTradeDeliveryTerms>
|
||||||
|
<ram:DeliveryTypeCode>FCA</ram:DeliveryTypeCode>
|
||||||
|
<ram:Description>Free Carrier</ram:Description>
|
||||||
|
<ram:FunctionCode>7</ram:FunctionCode>
|
||||||
|
<ram:RelevantTradeLocation>
|
||||||
|
<ram:ID>DEL_TERMS_LOC_ID</ram:ID>
|
||||||
|
<ram:Name>DEL_TERMS_LOC_Name</ram:Name>
|
||||||
|
</ram:RelevantTradeLocation>
|
||||||
|
</ram:ApplicableTradeDeliveryTerms>
|
||||||
|
<ram:SellerOrderReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>SALES_REF_ID_459875</ram:IssuerAssignedID>
|
||||||
|
</ram:SellerOrderReferencedDocument>
|
||||||
|
<ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>PO123456789</ram:IssuerAssignedID>
|
||||||
|
</ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:QuotationReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>QUOT_125487</ram:IssuerAssignedID>
|
||||||
|
</ram:QuotationReferencedDocument>
|
||||||
|
<ram:ContractReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>CONTRACT_2020-25987</ram:IssuerAssignedID>
|
||||||
|
</ram:ContractReferencedDocument>
|
||||||
|
<ram:RequisitionReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>REQ_875498</ram:IssuerAssignedID>
|
||||||
|
</ram:RequisitionReferencedDocument>
|
||||||
|
<ram:AdditionalReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>ADD_REF_DOC_ID</ram:IssuerAssignedID>
|
||||||
|
<ram:URIID>ADD_REF_DOC_URIID</ram:URIID>
|
||||||
|
<ram:TypeCode>916</ram:TypeCode>
|
||||||
|
<ram:Name>ADD_REF_DOC_Desc</ram:Name>
|
||||||
|
</ram:AdditionalReferencedDocument>
|
||||||
|
<ram:AdditionalReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>TENDER_ID</ram:IssuerAssignedID>
|
||||||
|
<ram:TypeCode>50</ram:TypeCode>
|
||||||
|
</ram:AdditionalReferencedDocument>
|
||||||
|
<ram:AdditionalReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>OBJECT_ID</ram:IssuerAssignedID>
|
||||||
|
<ram:TypeCode>130</ram:TypeCode>
|
||||||
|
<ram:ReferenceTypeCode>AWV</ram:ReferenceTypeCode>
|
||||||
|
</ram:AdditionalReferencedDocument>
|
||||||
|
<ram:CatalogueReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>CATALOG_ID</ram:IssuerAssignedID>
|
||||||
|
</ram:CatalogueReferencedDocument>
|
||||||
|
<ram:BlanketOrderReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>BLANKET_ORDER_ID</ram:IssuerAssignedID>
|
||||||
|
</ram:BlanketOrderReferencedDocument>
|
||||||
|
<ram:PreviousOrderChangeReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>PREV_ORDER_C_ID</ram:IssuerAssignedID>
|
||||||
|
</ram:PreviousOrderChangeReferencedDocument>
|
||||||
|
<ram:PreviousOrderResponseReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>PREV_ORDER_R_ID</ram:IssuerAssignedID>
|
||||||
|
</ram:PreviousOrderResponseReferencedDocument>
|
||||||
|
<ram:SpecifiedProcuringProject>
|
||||||
|
<ram:ID>PROJECT_ID</ram:ID>
|
||||||
|
<ram:Name>Project Reference</ram:Name>
|
||||||
|
</ram:SpecifiedProcuringProject>
|
||||||
|
</ram:ApplicableHeaderTradeAgreement>
|
||||||
|
<ram:ApplicableHeaderTradeDelivery>
|
||||||
|
<ram:ShipToTradeParty>
|
||||||
|
<ram:ID>SHIP_TO_ID</ram:ID>
|
||||||
|
<ram:GlobalID schemeID="0088">5897546912</ram:GlobalID>
|
||||||
|
<ram:Name>SHIP_TO_NAME</ram:Name>
|
||||||
|
<ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:ID schemeID="0002">951632874</ram:ID>
|
||||||
|
<ram:TradingBusinessName>SHIP_TO_TRADING_NAME</ram:TradingBusinessName>
|
||||||
|
</ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:DefinedTradeContact>
|
||||||
|
<ram:PersonName>SHIP_TO_CONTACT_NAME</ram:PersonName>
|
||||||
|
<ram:DepartmentName>SHIP_TO_CONTACT_DEP</ram:DepartmentName>
|
||||||
|
<ram:TypeCode>SD</ram:TypeCode>
|
||||||
|
<ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:CompleteNumber>+33 6 85 96 32 41</ram:CompleteNumber>
|
||||||
|
</ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:EmailURIUniversalCommunication>
|
||||||
|
<ram:URIID>shipto@customer.com</ram:URIID>
|
||||||
|
</ram:EmailURIUniversalCommunication>
|
||||||
|
</ram:DefinedTradeContact>
|
||||||
|
<ram:PostalTradeAddress>
|
||||||
|
<ram:PostcodeCode>69003</ram:PostcodeCode>
|
||||||
|
<ram:LineOne>SHIP_TO_ADDR_1</ram:LineOne>
|
||||||
|
<ram:LineTwo>SHIP_TO_ADDR_2</ram:LineTwo>
|
||||||
|
<ram:LineThree>SHIP_TO_ADDR_3</ram:LineThree>
|
||||||
|
<ram:CityName>SHIP_TO_CITY</ram:CityName>
|
||||||
|
<ram:CountryID>FR</ram:CountryID>
|
||||||
|
</ram:PostalTradeAddress>
|
||||||
|
<ram:URIUniversalCommunication>
|
||||||
|
<ram:URIID schemeID="EM">delivery@buyer.com</ram:URIID>
|
||||||
|
</ram:URIUniversalCommunication>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="VA">FR 66 951 632 874</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
</ram:ShipToTradeParty>
|
||||||
|
<ram:ShipFromTradeParty>
|
||||||
|
<ram:ID>SHIP_FROM_ID</ram:ID>
|
||||||
|
<ram:GlobalID schemeID="0088">875496123</ram:GlobalID>
|
||||||
|
<ram:Name>SHIP_FROM_NAME</ram:Name>
|
||||||
|
<ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:ID schemeID="0002">548963127</ram:ID>
|
||||||
|
<ram:TradingBusinessName>SHIP_FROM_TRADING_NAME</ram:TradingBusinessName>
|
||||||
|
</ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:DefinedTradeContact>
|
||||||
|
<ram:PersonName>SHIP_FROM_CONTACT_NAME</ram:PersonName>
|
||||||
|
<ram:DepartmentName>SHIP_FROM_CONTACT_DEP</ram:DepartmentName>
|
||||||
|
<ram:TypeCode>SD</ram:TypeCode>
|
||||||
|
<ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:CompleteNumber>+33 6 85 96 32 41</ram:CompleteNumber>
|
||||||
|
</ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:EmailURIUniversalCommunication>
|
||||||
|
<ram:URIID>shipfrom@seller.com</ram:URIID>
|
||||||
|
</ram:EmailURIUniversalCommunication>
|
||||||
|
</ram:DefinedTradeContact>
|
||||||
|
<ram:PostalTradeAddress>
|
||||||
|
<ram:PostcodeCode>75003</ram:PostcodeCode>
|
||||||
|
<ram:LineOne>SHIP_FROM_ADDR_1</ram:LineOne>
|
||||||
|
<ram:LineTwo>SHIP_FROM_ADDR_2</ram:LineTwo>
|
||||||
|
<ram:LineThree>SHIP_FROM_ADDR_3</ram:LineThree>
|
||||||
|
<ram:CityName>SHIP_FROM_CITY</ram:CityName>
|
||||||
|
<ram:CountryID>FR</ram:CountryID>
|
||||||
|
</ram:PostalTradeAddress>
|
||||||
|
<ram:URIUniversalCommunication>
|
||||||
|
<ram:URIID>warehouse@seller.com</ram:URIID>
|
||||||
|
</ram:URIUniversalCommunication>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="VA">FR 16 548 963 127</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
</ram:ShipFromTradeParty>
|
||||||
|
<ram:RequestedDeliverySupplyChainEvent>
|
||||||
|
<ram:OccurrenceDateTime>
|
||||||
|
<udt:DateTimeString format="102">20200415</udt:DateTimeString>
|
||||||
|
</ram:OccurrenceDateTime>
|
||||||
|
<ram:OccurrenceSpecifiedPeriod>
|
||||||
|
<ram:StartDateTime>
|
||||||
|
<udt:DateTimeString format="203">202004150900</udt:DateTimeString>
|
||||||
|
</ram:StartDateTime>
|
||||||
|
<ram:EndDateTime>
|
||||||
|
<udt:DateTimeString format="203">202004301800</udt:DateTimeString>
|
||||||
|
</ram:EndDateTime>
|
||||||
|
</ram:OccurrenceSpecifiedPeriod>
|
||||||
|
</ram:RequestedDeliverySupplyChainEvent>
|
||||||
|
</ram:ApplicableHeaderTradeDelivery>
|
||||||
|
<ram:ApplicableHeaderTradeSettlement>
|
||||||
|
<ram:OrderCurrencyCode>EUR</ram:OrderCurrencyCode>
|
||||||
|
<ram:InvoiceeTradeParty>
|
||||||
|
<ram:ID>INVOICEE_ID_9587456</ram:ID>
|
||||||
|
<ram:GlobalID schemeID="0088">98765432179</ram:GlobalID>
|
||||||
|
<ram:Name>INVOICEE_NAME</ram:Name>
|
||||||
|
<ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:ID schemeID="0002">987654321</ram:ID>
|
||||||
|
<ram:TradingBusinessName>INVOICEE_TRADING_NAME</ram:TradingBusinessName>
|
||||||
|
</ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:DefinedTradeContact>
|
||||||
|
<ram:PersonName>INVOICEE_CONTACT_NAME</ram:PersonName>
|
||||||
|
<ram:DepartmentName>INVOICEE_CONTACT_DEP</ram:DepartmentName>
|
||||||
|
<ram:TypeCode>LB</ram:TypeCode>
|
||||||
|
<ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:CompleteNumber>+33 6 65 98 75 32</ram:CompleteNumber>
|
||||||
|
</ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:EmailURIUniversalCommunication>
|
||||||
|
<ram:URIID>invoicee@buyer.com</ram:URIID>
|
||||||
|
</ram:EmailURIUniversalCommunication>
|
||||||
|
</ram:DefinedTradeContact>
|
||||||
|
<ram:PostalTradeAddress>
|
||||||
|
<ram:PostcodeCode>69001</ram:PostcodeCode>
|
||||||
|
<ram:LineOne>INVOICEE_ADDR_1</ram:LineOne>
|
||||||
|
<ram:LineTwo>INVOICEE_ADDR_2</ram:LineTwo>
|
||||||
|
<ram:LineThree>INVOICEE_ADDR_3</ram:LineThree>
|
||||||
|
<ram:CityName>INVOICEE_CITY</ram:CityName>
|
||||||
|
<ram:CountryID>FR</ram:CountryID>
|
||||||
|
</ram:PostalTradeAddress>
|
||||||
|
<ram:URIUniversalCommunication>
|
||||||
|
<ram:URIID schemeID="EM">invoicee@buyer.com</ram:URIID>
|
||||||
|
</ram:URIUniversalCommunication>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="VA">FR 05 987 654 321</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="FC">INVOICEE_TAX_ID</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
</ram:InvoiceeTradeParty>
|
||||||
|
<ram:SpecifiedTradeSettlementPaymentMeans>
|
||||||
|
<ram:TypeCode>30</ram:TypeCode>
|
||||||
|
<ram:Information>Credit Transfer</ram:Information>
|
||||||
|
</ram:SpecifiedTradeSettlementPaymentMeans>
|
||||||
|
<ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>false</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:CalculationPercent>10.00</ram:CalculationPercent>
|
||||||
|
<ram:BasisAmount>310</ram:BasisAmount>
|
||||||
|
<ram:ActualAmount>31.00</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>64</ram:ReasonCode>
|
||||||
|
<ram:Reason>SPECIAL AGREEMENT</ram:Reason>
|
||||||
|
<ram:CategoryTradeTax>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:CategoryCode>S</ram:CategoryCode>
|
||||||
|
<ram:RateApplicablePercent>20.00</ram:RateApplicablePercent>
|
||||||
|
</ram:CategoryTradeTax>
|
||||||
|
</ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>true</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:CalculationPercent>10.00</ram:CalculationPercent>
|
||||||
|
<ram:BasisAmount>210.00</ram:BasisAmount>
|
||||||
|
<ram:ActualAmount>21.00</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>FC</ram:ReasonCode>
|
||||||
|
<ram:Reason>FREIGHT SERVICES</ram:Reason>
|
||||||
|
<ram:CategoryTradeTax>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:CategoryCode>S</ram:CategoryCode>
|
||||||
|
<ram:RateApplicablePercent>20.00</ram:RateApplicablePercent>
|
||||||
|
</ram:CategoryTradeTax>
|
||||||
|
</ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:SpecifiedTradePaymentTerms>
|
||||||
|
<ram:Description>PAYMENT_TERMS_DESC</ram:Description>
|
||||||
|
</ram:SpecifiedTradePaymentTerms>
|
||||||
|
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||||
|
<ram:LineTotalAmount>310.00</ram:LineTotalAmount>
|
||||||
|
<ram:ChargeTotalAmount>21.00</ram:ChargeTotalAmount>
|
||||||
|
<ram:AllowanceTotalAmount>31.00</ram:AllowanceTotalAmount>
|
||||||
|
<ram:TaxBasisTotalAmount>300.00</ram:TaxBasisTotalAmount>
|
||||||
|
<ram:TaxTotalAmount currencyID="EUR">60.00</ram:TaxTotalAmount>
|
||||||
|
<ram:GrandTotalAmount>360.00</ram:GrandTotalAmount>
|
||||||
|
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||||
|
<ram:ReceivableSpecifiedTradeAccountingAccount>
|
||||||
|
<ram:ID>BUYER_ACCOUNT_REF</ram:ID>
|
||||||
|
</ram:ReceivableSpecifiedTradeAccountingAccount>
|
||||||
|
</ram:ApplicableHeaderTradeSettlement>
|
||||||
|
</rsm:SupplyChainTradeTransaction>
|
||||||
|
</rsm:SCRDMCCBDACIOMessageStructure>
|
||||||
171
library/src/test/resources/cii/01.01a-INVOICE.cii.xml
Normal file
171
library/src/test/resources/cii/01.01a-INVOICE.cii.xml
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
|
||||||
|
xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
|
||||||
|
xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
|
||||||
|
xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
|
||||||
|
<rsm:ExchangedDocumentContext>
|
||||||
|
<ram:BusinessProcessSpecifiedDocumentContextParameter>
|
||||||
|
<ram:ID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</ram:ID>
|
||||||
|
</ram:BusinessProcessSpecifiedDocumentContextParameter>
|
||||||
|
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||||
|
<ram:ID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</ram:ID>
|
||||||
|
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||||
|
</rsm:ExchangedDocumentContext>
|
||||||
|
<rsm:ExchangedDocument>
|
||||||
|
<ram:ID>123456XX</ram:ID>
|
||||||
|
<ram:TypeCode>380</ram:TypeCode>
|
||||||
|
<ram:IssueDateTime>
|
||||||
|
<udt:DateTimeString format="102">20160404</udt:DateTimeString>
|
||||||
|
</ram:IssueDateTime>
|
||||||
|
<ram:IncludedNote>
|
||||||
|
<ram:Content>Es gelten unsere Allgem. Geschäftsbedingungen, die Sie unter […] finden.</ram:Content>
|
||||||
|
<ram:SubjectCode>ADU</ram:SubjectCode>
|
||||||
|
</ram:IncludedNote>
|
||||||
|
</rsm:ExchangedDocument>
|
||||||
|
<rsm:SupplyChainTradeTransaction>
|
||||||
|
<ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:LineID>Zeitschrift [...]</ram:LineID>
|
||||||
|
<ram:IncludedNote>
|
||||||
|
<ram:Content>Die letzte Lieferung im Rahmen des abgerechneten Abonnements erfolgt in 12/2016 Lieferung erfolgt / erfolgte direkt vom Verlag</ram:Content>
|
||||||
|
</ram:IncludedNote>
|
||||||
|
</ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:SpecifiedTradeProduct>
|
||||||
|
<ram:SellerAssignedID>246</ram:SellerAssignedID>
|
||||||
|
<ram:Name>Zeitschrift [...]</ram:Name>
|
||||||
|
<ram:Description>Zeitschrift Inland</ram:Description>
|
||||||
|
<ram:DesignatedProductClassification>
|
||||||
|
<ram:ClassCode listID="IB">0721-880X</ram:ClassCode>
|
||||||
|
</ram:DesignatedProductClassification>
|
||||||
|
</ram:SpecifiedTradeProduct>
|
||||||
|
<ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:LineID>6171175.1</ram:LineID>
|
||||||
|
</ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:NetPriceProductTradePrice>
|
||||||
|
<ram:ChargeAmount>288.79</ram:ChargeAmount>
|
||||||
|
</ram:NetPriceProductTradePrice>
|
||||||
|
</ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:BilledQuantity unitCode="XPP">1</ram:BilledQuantity>
|
||||||
|
</ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:SpecifiedLineTradeSettlement>
|
||||||
|
<ram:ApplicableTradeTax>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:CategoryCode>S</ram:CategoryCode>
|
||||||
|
<ram:RateApplicablePercent>7</ram:RateApplicablePercent>
|
||||||
|
</ram:ApplicableTradeTax>
|
||||||
|
<ram:BillingSpecifiedPeriod>
|
||||||
|
<ram:StartDateTime>
|
||||||
|
<udt:DateTimeString format="102">20160101</udt:DateTimeString>
|
||||||
|
</ram:StartDateTime>
|
||||||
|
<ram:EndDateTime>
|
||||||
|
<udt:DateTimeString format="102">20161231</udt:DateTimeString>
|
||||||
|
</ram:EndDateTime>
|
||||||
|
</ram:BillingSpecifiedPeriod>
|
||||||
|
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
<ram:LineTotalAmount>288.79</ram:LineTotalAmount>
|
||||||
|
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
</ram:SpecifiedLineTradeSettlement>
|
||||||
|
</ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:LineID>Porto + Versandkosten</ram:LineID>
|
||||||
|
</ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:SpecifiedTradeProduct>
|
||||||
|
<ram:Name>Porto + Versandkosten</ram:Name>
|
||||||
|
</ram:SpecifiedTradeProduct>
|
||||||
|
<ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:NetPriceProductTradePrice>
|
||||||
|
<ram:ChargeAmount>26.07</ram:ChargeAmount>
|
||||||
|
</ram:NetPriceProductTradePrice>
|
||||||
|
</ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:BilledQuantity unitCode="XPP">1</ram:BilledQuantity>
|
||||||
|
</ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:SpecifiedLineTradeSettlement>
|
||||||
|
<ram:ApplicableTradeTax>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:CategoryCode>S</ram:CategoryCode>
|
||||||
|
<ram:RateApplicablePercent>7</ram:RateApplicablePercent>
|
||||||
|
</ram:ApplicableTradeTax>
|
||||||
|
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
<ram:LineTotalAmount>26.07</ram:LineTotalAmount>
|
||||||
|
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
</ram:SpecifiedLineTradeSettlement>
|
||||||
|
</ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:ApplicableHeaderTradeAgreement>
|
||||||
|
<ram:BuyerReference>04011000-12345-03</ram:BuyerReference>
|
||||||
|
<ram:SellerTradeParty>
|
||||||
|
<ram:Name>[Seller name]</ram:Name>
|
||||||
|
<ram:Description>123/456/7890, HRA-Eintrag in […]</ram:Description>
|
||||||
|
<ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:ID>[HRA-Eintrag]</ram:ID>
|
||||||
|
<ram:TradingBusinessName>[Seller trading name]</ram:TradingBusinessName>
|
||||||
|
</ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:DefinedTradeContact>
|
||||||
|
<ram:PersonName>nicht vorhanden</ram:PersonName>
|
||||||
|
<ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:CompleteNumber>+49 1234-5678</ram:CompleteNumber>
|
||||||
|
</ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:EmailURIUniversalCommunication>
|
||||||
|
<ram:URIID>seller@email.de</ram:URIID>
|
||||||
|
</ram:EmailURIUniversalCommunication>
|
||||||
|
</ram:DefinedTradeContact>
|
||||||
|
<ram:PostalTradeAddress>
|
||||||
|
<ram:PostcodeCode>12345</ram:PostcodeCode>
|
||||||
|
<ram:LineOne>[Seller address line 1]</ram:LineOne>
|
||||||
|
<ram:CityName>[Seller city]</ram:CityName>
|
||||||
|
<ram:CountryID>DE</ram:CountryID>
|
||||||
|
</ram:PostalTradeAddress>
|
||||||
|
<ram:URIUniversalCommunication>
|
||||||
|
<ram:URIID schemeID="EM">seller@email.de</ram:URIID>
|
||||||
|
</ram:URIUniversalCommunication>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="VA">DE 123456789</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
</ram:SellerTradeParty>
|
||||||
|
<ram:BuyerTradeParty>
|
||||||
|
<ram:ID>[Buyer identifier]</ram:ID>
|
||||||
|
<ram:Name>[Buyer name]</ram:Name>
|
||||||
|
<ram:PostalTradeAddress>
|
||||||
|
<ram:PostcodeCode>12345</ram:PostcodeCode>
|
||||||
|
<ram:LineOne>[Buyer address line 1]</ram:LineOne>
|
||||||
|
<ram:CityName>[Buyer city]</ram:CityName>
|
||||||
|
<ram:CountryID>DE</ram:CountryID>
|
||||||
|
</ram:PostalTradeAddress>
|
||||||
|
<ram:URIUniversalCommunication>
|
||||||
|
<ram:URIID schemeID="EM">buyer@info.de</ram:URIID>
|
||||||
|
</ram:URIUniversalCommunication>
|
||||||
|
</ram:BuyerTradeParty>
|
||||||
|
</ram:ApplicableHeaderTradeAgreement>
|
||||||
|
<ram:ApplicableHeaderTradeDelivery/>
|
||||||
|
<ram:ApplicableHeaderTradeSettlement>
|
||||||
|
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
|
||||||
|
<ram:SpecifiedTradeSettlementPaymentMeans>
|
||||||
|
<ram:TypeCode>58</ram:TypeCode>
|
||||||
|
<ram:PayeePartyCreditorFinancialAccount>
|
||||||
|
<!-- dies ist eine nicht existerende aber valide IBAN als test dummy -->
|
||||||
|
<ram:IBANID>DE75512108001245126199</ram:IBANID>
|
||||||
|
</ram:PayeePartyCreditorFinancialAccount>
|
||||||
|
</ram:SpecifiedTradeSettlementPaymentMeans>
|
||||||
|
<ram:ApplicableTradeTax>
|
||||||
|
<ram:CalculatedAmount>22.04</ram:CalculatedAmount>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:BasisAmount>314.86</ram:BasisAmount>
|
||||||
|
<ram:CategoryCode>S</ram:CategoryCode>
|
||||||
|
<ram:RateApplicablePercent>7</ram:RateApplicablePercent>
|
||||||
|
</ram:ApplicableTradeTax>
|
||||||
|
<ram:SpecifiedTradePaymentTerms>
|
||||||
|
<ram:Description>Zahlbar sofort ohne Abzug.</ram:Description>
|
||||||
|
</ram:SpecifiedTradePaymentTerms>
|
||||||
|
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||||
|
<ram:LineTotalAmount>314.86</ram:LineTotalAmount>
|
||||||
|
<ram:TaxBasisTotalAmount>314.86</ram:TaxBasisTotalAmount>
|
||||||
|
<ram:TaxTotalAmount currencyID="EUR">22.04</ram:TaxTotalAmount>
|
||||||
|
<ram:GrandTotalAmount>336.9</ram:GrandTotalAmount>
|
||||||
|
<ram:DuePayableAmount>336.9</ram:DuePayableAmount>
|
||||||
|
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||||
|
</ram:ApplicableHeaderTradeSettlement>
|
||||||
|
</rsm:SupplyChainTradeTransaction>
|
||||||
|
</rsm:CrossIndustryInvoice>
|
||||||
@@ -0,0 +1,411 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<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:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100">
|
||||||
|
<rsm:ExchangedDocumentContext>
|
||||||
|
<ram:BusinessProcessSpecifiedDocumentContextParameter>
|
||||||
|
<ram:ID>BT-23 Business Process Type</ram:ID>
|
||||||
|
</ram:BusinessProcessSpecifiedDocumentContextParameter>
|
||||||
|
<ram:GuidelineSpecifiedDocumentContextParameter>
|
||||||
|
<ram:ID>urn:cen.eu:en16931:2017</ram:ID>
|
||||||
|
</ram:GuidelineSpecifiedDocumentContextParameter>
|
||||||
|
</rsm:ExchangedDocumentContext>
|
||||||
|
<rsm:ExchangedDocument>
|
||||||
|
<ram:ID>Test_EeISI_100</ram:ID>
|
||||||
|
<ram:TypeCode>380</ram:TypeCode>
|
||||||
|
<ram:IssueDateTime>
|
||||||
|
<udt:DateTimeString format="102">20181112</udt:DateTimeString>
|
||||||
|
</ram:IssueDateTime>
|
||||||
|
<ram:IncludedNote>
|
||||||
|
<ram:Content>invoice note text</ram:Content>
|
||||||
|
<ram:SubjectCode>#AAA#</ram:SubjectCode>
|
||||||
|
</ram:IncludedNote>
|
||||||
|
<ram:IncludedNote>
|
||||||
|
<ram:Content>invoice note text 2</ram:Content>
|
||||||
|
<ram:SubjectCode>#AAA#</ram:SubjectCode>
|
||||||
|
</ram:IncludedNote>
|
||||||
|
</rsm:ExchangedDocument>
|
||||||
|
<rsm:SupplyChainTradeTransaction>
|
||||||
|
<ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:LineID>1a</ram:LineID>
|
||||||
|
<ram:IncludedNote>
|
||||||
|
<ram:Content>Invoice line note</ram:Content>
|
||||||
|
</ram:IncludedNote>
|
||||||
|
</ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:SpecifiedTradeProduct>
|
||||||
|
<ram:GlobalID>Item standar identifier</ram:GlobalID>
|
||||||
|
<ram:SellerAssignedID>Item seller's identifier</ram:SellerAssignedID>
|
||||||
|
<ram:BuyerAssignedID>Item buyer's identifier</ram:BuyerAssignedID>
|
||||||
|
<ram:Name>Item name</ram:Name>
|
||||||
|
<ram:Description>Item description</ram:Description>
|
||||||
|
<ram:ApplicableProductCharacteristic>
|
||||||
|
<ram:Description>Color</ram:Description>
|
||||||
|
<ram:Value>Red</ram:Value>
|
||||||
|
</ram:ApplicableProductCharacteristic>
|
||||||
|
<ram:ApplicableProductCharacteristic>
|
||||||
|
<ram:Description>Size</ram:Description>
|
||||||
|
<ram:Value>L</ram:Value>
|
||||||
|
</ram:ApplicableProductCharacteristic>
|
||||||
|
<ram:DesignatedProductClassification>
|
||||||
|
<ram:ClassCode listID="ZZZ" listVersionID="version0">Item classification identifier0</ram:ClassCode>
|
||||||
|
</ram:DesignatedProductClassification>
|
||||||
|
<ram:OriginTradeCountry>
|
||||||
|
<ram:ID>IT</ram:ID>
|
||||||
|
</ram:OriginTradeCountry>
|
||||||
|
</ram:SpecifiedTradeProduct>
|
||||||
|
<ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:LineID>12345</ram:LineID>
|
||||||
|
</ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:GrossPriceProductTradePrice>
|
||||||
|
<ram:ChargeAmount>11.00</ram:ChargeAmount>
|
||||||
|
<ram:BasisQuantity unitCode="EA">1.00</ram:BasisQuantity>
|
||||||
|
<ram:AppliedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>false</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:ActualAmount>1.00</ram:ActualAmount>
|
||||||
|
</ram:AppliedTradeAllowanceCharge>
|
||||||
|
</ram:GrossPriceProductTradePrice>
|
||||||
|
<ram:NetPriceProductTradePrice>
|
||||||
|
<ram:ChargeAmount>10.00</ram:ChargeAmount>
|
||||||
|
<ram:BasisQuantity unitCode="EA">1.00</ram:BasisQuantity>
|
||||||
|
</ram:NetPriceProductTradePrice>
|
||||||
|
</ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:BilledQuantity unitCode="EA">10.00</ram:BilledQuantity>
|
||||||
|
</ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:SpecifiedLineTradeSettlement>
|
||||||
|
<ram:ApplicableTradeTax>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:CategoryCode>S</ram:CategoryCode>
|
||||||
|
<ram:RateApplicablePercent>5.00</ram:RateApplicablePercent>
|
||||||
|
</ram:ApplicableTradeTax>
|
||||||
|
<ram:BillingSpecifiedPeriod>
|
||||||
|
<ram:StartDateTime>
|
||||||
|
<udt:DateTimeString format="102">20181112</udt:DateTimeString>
|
||||||
|
</ram:StartDateTime>
|
||||||
|
<ram:EndDateTime>
|
||||||
|
<udt:DateTimeString format="102">20181130</udt:DateTimeString>
|
||||||
|
</ram:EndDateTime>
|
||||||
|
</ram:BillingSpecifiedPeriod>
|
||||||
|
<ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>false</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:CalculationPercent>1.00</ram:CalculationPercent>
|
||||||
|
<ram:BasisAmount>1000.00</ram:BasisAmount>
|
||||||
|
<ram:ActualAmount>10.00</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>55</ram:ReasonCode>
|
||||||
|
<ram:Reason>Invoice line allowance reason</ram:Reason>
|
||||||
|
</ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>true</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:CalculationPercent>1.00</ram:CalculationPercent>
|
||||||
|
<ram:BasisAmount>1000.00</ram:BasisAmount>
|
||||||
|
<ram:ActualAmount>10.00</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>AAA</ram:ReasonCode>
|
||||||
|
<ram:Reason>Invoice line charge reason</ram:Reason>
|
||||||
|
</ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
<ram:LineTotalAmount>1000.00</ram:LineTotalAmount>
|
||||||
|
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
<ram:AdditionalReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>Line object identifier</ram:IssuerAssignedID>
|
||||||
|
<ram:TypeCode>130</ram:TypeCode>
|
||||||
|
<ram:ReferenceTypeCode />
|
||||||
|
</ram:AdditionalReferencedDocument>
|
||||||
|
<ram:ReceivableSpecifiedTradeAccountingAccount>
|
||||||
|
<ram:ID>6789</ram:ID>
|
||||||
|
</ram:ReceivableSpecifiedTradeAccountingAccount>
|
||||||
|
</ram:SpecifiedLineTradeSettlement>
|
||||||
|
</ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:LineID>1b</ram:LineID>
|
||||||
|
</ram:AssociatedDocumentLineDocument>
|
||||||
|
<ram:SpecifiedTradeProduct>
|
||||||
|
<ram:Name>Item name 2</ram:Name>
|
||||||
|
</ram:SpecifiedTradeProduct>
|
||||||
|
<ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:NetPriceProductTradePrice>
|
||||||
|
<ram:ChargeAmount>10.00</ram:ChargeAmount>
|
||||||
|
</ram:NetPriceProductTradePrice>
|
||||||
|
</ram:SpecifiedLineTradeAgreement>
|
||||||
|
<ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:BilledQuantity unitCode="EA">10.00</ram:BilledQuantity>
|
||||||
|
</ram:SpecifiedLineTradeDelivery>
|
||||||
|
<ram:SpecifiedLineTradeSettlement>
|
||||||
|
<ram:ApplicableTradeTax>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:CategoryCode>E</ram:CategoryCode>
|
||||||
|
<ram:RateApplicablePercent>0.00</ram:RateApplicablePercent>
|
||||||
|
</ram:ApplicableTradeTax>
|
||||||
|
<ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
<ram:LineTotalAmount>1000.00</ram:LineTotalAmount>
|
||||||
|
</ram:SpecifiedTradeSettlementLineMonetarySummation>
|
||||||
|
</ram:SpecifiedLineTradeSettlement>
|
||||||
|
</ram:IncludedSupplyChainTradeLineItem>
|
||||||
|
<ram:ApplicableHeaderTradeAgreement>
|
||||||
|
<ram:BuyerReference>123</ram:BuyerReference>
|
||||||
|
<ram:SellerTradeParty>
|
||||||
|
<ram:GlobalID schemeID="0100">Seller identifier 1</ram:GlobalID>
|
||||||
|
<ram:GlobalID schemeID="0110">Seller identifier 2</ram:GlobalID>
|
||||||
|
<ram:Name>Seller name</ram:Name>
|
||||||
|
<ram:Description>Seller additional legal information</ram:Description>
|
||||||
|
<ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:ID schemeID="0310">Seller legal identifier</ram:ID>
|
||||||
|
<ram:TradingBusinessName>Seller trading name</ram:TradingBusinessName>
|
||||||
|
</ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:DefinedTradeContact>
|
||||||
|
<ram:PersonName>Seller contact point</ram:PersonName>
|
||||||
|
<ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:CompleteNumber>+41 345 654455</ram:CompleteNumber>
|
||||||
|
</ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:EmailURIUniversalCommunication>
|
||||||
|
<ram:URIID>seller@contact.de</ram:URIID>
|
||||||
|
</ram:EmailURIUniversalCommunication>
|
||||||
|
</ram:DefinedTradeContact>
|
||||||
|
<ram:PostalTradeAddress>
|
||||||
|
<ram:PostcodeCode>12345</ram:PostcodeCode>
|
||||||
|
<ram:LineOne>Seller address line 1</ram:LineOne>
|
||||||
|
<ram:LineTwo>Seller address line 2</ram:LineTwo>
|
||||||
|
<ram:LineThree>Seller address line 3</ram:LineThree>
|
||||||
|
<ram:CityName>Seller city</ram:CityName>
|
||||||
|
<ram:CountryID>DE</ram:CountryID>
|
||||||
|
<ram:CountrySubDivisionName>Seller country subdivision</ram:CountrySubDivisionName>
|
||||||
|
</ram:PostalTradeAddress>
|
||||||
|
<ram:URIUniversalCommunication>
|
||||||
|
<ram:URIID schemeID="SMTP">Seller electronic address</ram:URIID>
|
||||||
|
</ram:URIUniversalCommunication>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="VA">DE12345677</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="FC">DE49294093</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
</ram:SellerTradeParty>
|
||||||
|
<ram:BuyerTradeParty>
|
||||||
|
<ram:GlobalID schemeID="0190">Buyer identifier</ram:GlobalID>
|
||||||
|
<ram:Name>Buyer name</ram:Name>
|
||||||
|
<ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:ID schemeID="0089">Buyer legal registration identifier</ram:ID>
|
||||||
|
<ram:TradingBusinessName>Buyer trading name</ram:TradingBusinessName>
|
||||||
|
</ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:DefinedTradeContact>
|
||||||
|
<ram:PersonName>Buyer contact point</ram:PersonName>
|
||||||
|
<ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:CompleteNumber>+353 2948584</ram:CompleteNumber>
|
||||||
|
</ram:TelephoneUniversalCommunication>
|
||||||
|
<ram:EmailURIUniversalCommunication>
|
||||||
|
<ram:URIID>buyer@contact.ie</ram:URIID>
|
||||||
|
</ram:EmailURIUniversalCommunication>
|
||||||
|
</ram:DefinedTradeContact>
|
||||||
|
<ram:PostalTradeAddress>
|
||||||
|
<ram:PostcodeCode>34562</ram:PostcodeCode>
|
||||||
|
<ram:LineOne>Buyer address line 1</ram:LineOne>
|
||||||
|
<ram:LineTwo>Buyer address line 2</ram:LineTwo>
|
||||||
|
<ram:LineThree>Buyer address line 3</ram:LineThree>
|
||||||
|
<ram:CityName>Buyer city</ram:CityName>
|
||||||
|
<ram:CountryID>IE</ram:CountryID>
|
||||||
|
<ram:CountrySubDivisionName>Buyer country subdivision</ram:CountrySubDivisionName>
|
||||||
|
</ram:PostalTradeAddress>
|
||||||
|
<ram:URIUniversalCommunication>
|
||||||
|
<ram:URIID schemeID="DE:SMTP">Buyer electronic address</ram:URIID>
|
||||||
|
</ram:URIUniversalCommunication>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="VA">IE394838894</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
</ram:BuyerTradeParty>
|
||||||
|
<ram:SellerTaxRepresentativeTradeParty>
|
||||||
|
<ram:Name>Tax representative name</ram:Name>
|
||||||
|
<ram:PostalTradeAddress>
|
||||||
|
<ram:PostcodeCode>23455</ram:PostcodeCode>
|
||||||
|
<ram:LineOne>Tax representative address line 1</ram:LineOne>
|
||||||
|
<ram:LineTwo>Tax representative address line 2</ram:LineTwo>
|
||||||
|
<ram:LineThree>Tax representative address line 3</ram:LineThree>
|
||||||
|
<ram:CityName>Tax representative city</ram:CityName>
|
||||||
|
<ram:CountryID>DE</ram:CountryID>
|
||||||
|
<ram:CountrySubDivisionName>Tax representative country subdivision</ram:CountrySubDivisionName>
|
||||||
|
</ram:PostalTradeAddress>
|
||||||
|
<ram:SpecifiedTaxRegistration>
|
||||||
|
<ram:ID schemeID="VA">DE3949053</ram:ID>
|
||||||
|
</ram:SpecifiedTaxRegistration>
|
||||||
|
</ram:SellerTaxRepresentativeTradeParty>
|
||||||
|
<ram:SellerOrderReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>def</ram:IssuerAssignedID>
|
||||||
|
</ram:SellerOrderReferencedDocument>
|
||||||
|
<ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>abc</ram:IssuerAssignedID>
|
||||||
|
</ram:BuyerOrderReferencedDocument>
|
||||||
|
<ram:ContractReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>789</ram:IssuerAssignedID>
|
||||||
|
</ram:ContractReferencedDocument>
|
||||||
|
<ram:AdditionalReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>Supporting document ref</ram:IssuerAssignedID>
|
||||||
|
<ram:URIID>External document location</ram:URIID>
|
||||||
|
<ram:TypeCode>916</ram:TypeCode>
|
||||||
|
<ram:Name>Supporting document descr</ram:Name>
|
||||||
|
<ram:AttachmentBinaryObject mimeCode="application/pdf" filename="filename0">ZGVmYXVsdA==</ram:AttachmentBinaryObject>
|
||||||
|
</ram:AdditionalReferencedDocument>
|
||||||
|
<ram:AdditionalReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>rst</ram:IssuerAssignedID>
|
||||||
|
<ram:TypeCode>130</ram:TypeCode>
|
||||||
|
<ram:ReferenceTypeCode>0090</ram:ReferenceTypeCode>
|
||||||
|
</ram:AdditionalReferencedDocument>
|
||||||
|
<ram:SpecifiedProcuringProject>
|
||||||
|
<ram:ID>456</ram:ID>
|
||||||
|
<ram:Name>Project reference</ram:Name>
|
||||||
|
</ram:SpecifiedProcuringProject>
|
||||||
|
</ram:ApplicableHeaderTradeAgreement>
|
||||||
|
<ram:ApplicableHeaderTradeDelivery>
|
||||||
|
<ram:ShipToTradeParty>
|
||||||
|
<ram:GlobalID schemeID="0045">deliver location identifier</ram:GlobalID>
|
||||||
|
<ram:Name>Deliver to party name</ram:Name>
|
||||||
|
<ram:PostalTradeAddress>
|
||||||
|
<ram:PostcodeCode>98765</ram:PostcodeCode>
|
||||||
|
<ram:LineOne>Deliver to address line 1</ram:LineOne>
|
||||||
|
<ram:LineTwo>Deliver to address line 2</ram:LineTwo>
|
||||||
|
<ram:LineThree>Deliver to address line 3</ram:LineThree>
|
||||||
|
<ram:CityName>Deliver to city</ram:CityName>
|
||||||
|
<ram:CountryID>IE</ram:CountryID>
|
||||||
|
<ram:CountrySubDivisionName>Deliver to country subdivision</ram:CountrySubDivisionName>
|
||||||
|
</ram:PostalTradeAddress>
|
||||||
|
</ram:ShipToTradeParty>
|
||||||
|
<ram:ActualDeliverySupplyChainEvent>
|
||||||
|
<ram:OccurrenceDateTime>
|
||||||
|
<udt:DateTimeString format="102">20181204</udt:DateTimeString>
|
||||||
|
</ram:OccurrenceDateTime>
|
||||||
|
</ram:ActualDeliverySupplyChainEvent>
|
||||||
|
<ram:DespatchAdviceReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>lmn</ram:IssuerAssignedID>
|
||||||
|
</ram:DespatchAdviceReferencedDocument>
|
||||||
|
<ram:ReceivingAdviceReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>ghi</ram:IssuerAssignedID>
|
||||||
|
</ram:ReceivingAdviceReferencedDocument>
|
||||||
|
</ram:ApplicableHeaderTradeDelivery>
|
||||||
|
<ram:ApplicableHeaderTradeSettlement>
|
||||||
|
<ram:CreditorReferenceID>Bank assigned creditor identifier</ram:CreditorReferenceID>
|
||||||
|
<ram:PaymentReference>Remittance information</ram:PaymentReference>
|
||||||
|
<ram:TaxCurrencyCode>NOK</ram:TaxCurrencyCode>
|
||||||
|
<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
|
||||||
|
<ram:PayeeTradeParty>
|
||||||
|
<ram:GlobalID schemeID="0098">Payee identifier</ram:GlobalID>
|
||||||
|
<ram:Name>Payee name</ram:Name>
|
||||||
|
<ram:SpecifiedLegalOrganization>
|
||||||
|
<ram:ID schemeID="0099">Payee legal registration identifier</ram:ID>
|
||||||
|
</ram:SpecifiedLegalOrganization>
|
||||||
|
</ram:PayeeTradeParty>
|
||||||
|
<ram:SpecifiedTradeSettlementPaymentMeans>
|
||||||
|
<ram:TypeCode>4</ram:TypeCode>
|
||||||
|
<ram:Information>SEPA</ram:Information>
|
||||||
|
<ram:ApplicableTradeSettlementFinancialCard>
|
||||||
|
<ram:ID>1234</ram:ID>
|
||||||
|
<ram:CardholderName>Payment card holder name</ram:CardholderName>
|
||||||
|
</ram:ApplicableTradeSettlementFinancialCard>
|
||||||
|
<ram:PayerPartyDebtorFinancialAccount>
|
||||||
|
<ram:IBANID>Debited account identifier</ram:IBANID>
|
||||||
|
</ram:PayerPartyDebtorFinancialAccount>
|
||||||
|
<ram:PayeePartyCreditorFinancialAccount>
|
||||||
|
<ram:IBANID>IT1212341234123412</ram:IBANID>
|
||||||
|
<ram:AccountName>Payment account name</ram:AccountName>
|
||||||
|
</ram:PayeePartyCreditorFinancialAccount>
|
||||||
|
<ram:PayerSpecifiedDebtorFinancialInstitution>
|
||||||
|
<ram:BICID>BSCTCH22</ram:BICID>
|
||||||
|
</ram:PayerSpecifiedDebtorFinancialInstitution>
|
||||||
|
<ram:PayeePartyCreditorFinancialAccount>
|
||||||
|
<ram:IBANID>IT1212341234123413</ram:IBANID>
|
||||||
|
<ram:AccountName>Payment account name 2</ram:AccountName>
|
||||||
|
</ram:PayeePartyCreditorFinancialAccount>
|
||||||
|
<ram:PayerSpecifiedDebtorFinancialInstitution>
|
||||||
|
<ram:BICID>BSCTCH22</ram:BICID>
|
||||||
|
</ram:PayerSpecifiedDebtorFinancialInstitution>
|
||||||
|
</ram:SpecifiedTradeSettlementPaymentMeans>
|
||||||
|
<ram:ApplicableTradeTax>
|
||||||
|
<ram:CalculatedAmount>50.00</ram:CalculatedAmount>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:BasisAmount>1000.00</ram:BasisAmount>
|
||||||
|
<ram:CategoryCode>S</ram:CategoryCode>
|
||||||
|
<ram:DueDateTypeCode>29</ram:DueDateTypeCode>
|
||||||
|
<ram:RateApplicablePercent>5.00</ram:RateApplicablePercent>
|
||||||
|
</ram:ApplicableTradeTax>
|
||||||
|
<ram:ApplicableTradeTax>
|
||||||
|
<ram:CalculatedAmount>0.00</ram:CalculatedAmount>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:ExemptionReason>Exemtion reason text</ram:ExemptionReason>
|
||||||
|
<ram:BasisAmount>1000.00</ram:BasisAmount>
|
||||||
|
<ram:CategoryCode>E</ram:CategoryCode>
|
||||||
|
<ram:ExemptionReasonCode>Exemption reason code</ram:ExemptionReasonCode>
|
||||||
|
<ram:DueDateTypeCode>29</ram:DueDateTypeCode>
|
||||||
|
<ram:RateApplicablePercent>0.00</ram:RateApplicablePercent>
|
||||||
|
</ram:ApplicableTradeTax>
|
||||||
|
<ram:BillingSpecifiedPeriod>
|
||||||
|
<ram:StartDateTime>
|
||||||
|
<udt:DateTimeString format="102">20181112</udt:DateTimeString>
|
||||||
|
</ram:StartDateTime>
|
||||||
|
<ram:EndDateTime>
|
||||||
|
<udt:DateTimeString format="102">20181130</udt:DateTimeString>
|
||||||
|
</ram:EndDateTime>
|
||||||
|
</ram:BillingSpecifiedPeriod>
|
||||||
|
<ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>false</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:CalculationPercent>1.00</ram:CalculationPercent>
|
||||||
|
<ram:BasisAmount>1000.00</ram:BasisAmount>
|
||||||
|
<ram:ActualAmount>10.00</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>55</ram:ReasonCode>
|
||||||
|
<ram:Reason>Doc allowance reason text</ram:Reason>
|
||||||
|
<ram:CategoryTradeTax>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:CategoryCode>S</ram:CategoryCode>
|
||||||
|
<ram:RateApplicablePercent>5.00</ram:RateApplicablePercent>
|
||||||
|
</ram:CategoryTradeTax>
|
||||||
|
</ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:ChargeIndicator>
|
||||||
|
<udt:Indicator>true</udt:Indicator>
|
||||||
|
</ram:ChargeIndicator>
|
||||||
|
<ram:CalculationPercent>1.00</ram:CalculationPercent>
|
||||||
|
<ram:BasisAmount>1000.00</ram:BasisAmount>
|
||||||
|
<ram:ActualAmount>10.00</ram:ActualAmount>
|
||||||
|
<ram:ReasonCode>AAA</ram:ReasonCode>
|
||||||
|
<ram:Reason>Doc charge reason text</ram:Reason>
|
||||||
|
<ram:CategoryTradeTax>
|
||||||
|
<ram:TypeCode>VAT</ram:TypeCode>
|
||||||
|
<ram:CategoryCode>S</ram:CategoryCode>
|
||||||
|
<ram:RateApplicablePercent>5.00</ram:RateApplicablePercent>
|
||||||
|
</ram:CategoryTradeTax>
|
||||||
|
</ram:SpecifiedTradeAllowanceCharge>
|
||||||
|
<ram:SpecifiedTradePaymentTerms>
|
||||||
|
<ram:Description>total amount</ram:Description>
|
||||||
|
<ram:DueDateDateTime>
|
||||||
|
<udt:DateTimeString format="102">20181130</udt:DateTimeString>
|
||||||
|
</ram:DueDateDateTime>
|
||||||
|
<ram:DirectDebitMandateID>Mandate reference identifier</ram:DirectDebitMandateID>
|
||||||
|
</ram:SpecifiedTradePaymentTerms>
|
||||||
|
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||||
|
<ram:LineTotalAmount>2000.00</ram:LineTotalAmount>
|
||||||
|
<ram:ChargeTotalAmount>10.00</ram:ChargeTotalAmount>
|
||||||
|
<ram:AllowanceTotalAmount>10.00</ram:AllowanceTotalAmount>
|
||||||
|
<ram:TaxBasisTotalAmount>2000.00</ram:TaxBasisTotalAmount>
|
||||||
|
<ram:TaxTotalAmount currencyID="EUR">50.00</ram:TaxTotalAmount>
|
||||||
|
<ram:TaxTotalAmount currencyID="NOK">46.00</ram:TaxTotalAmount>
|
||||||
|
<ram:RoundingAmount>0.00</ram:RoundingAmount>
|
||||||
|
<ram:GrandTotalAmount>2050.00</ram:GrandTotalAmount>
|
||||||
|
<ram:TotalPrepaidAmount>0.00</ram:TotalPrepaidAmount>
|
||||||
|
<ram:DuePayableAmount>2050.00</ram:DuePayableAmount>
|
||||||
|
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
|
||||||
|
<ram:InvoiceReferencedDocument>
|
||||||
|
<ram:IssuerAssignedID>abc123</ram:IssuerAssignedID>
|
||||||
|
<ram:FormattedIssueDateTime>
|
||||||
|
<qdt:DateTimeString format="102">20181004</qdt:DateTimeString>
|
||||||
|
</ram:FormattedIssueDateTime>
|
||||||
|
</ram:InvoiceReferencedDocument>
|
||||||
|
<ram:ReceivableSpecifiedTradeAccountingAccount>
|
||||||
|
<ram:ID>uvz</ram:ID>
|
||||||
|
</ram:ReceivableSpecifiedTradeAccountingAccount>
|
||||||
|
</ram:ApplicableHeaderTradeSettlement>
|
||||||
|
</rsm:SupplyChainTradeTransaction>
|
||||||
|
</rsm:CrossIndustryInvoice>
|
||||||
@@ -0,0 +1,404 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDataTypes-2" xmlns:udt="urn:oasis:names:specification:ubl:schema:xsd:UnqualifiedDataTypes-2">
|
||||||
|
<cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>
|
||||||
|
<cbc:ProfileID>BT-23 Business Process Type</cbc:ProfileID>
|
||||||
|
<cbc:ID>Test_EeISI_100</cbc:ID>
|
||||||
|
<cbc:IssueDate>2018-11-12</cbc:IssueDate>
|
||||||
|
<cbc:DueDate>2018-11-30</cbc:DueDate>
|
||||||
|
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
||||||
|
<cbc:Note>##AAA##invoice note text</cbc:Note>
|
||||||
|
<cbc:Note>##AAA##invoice note text 2</cbc:Note>
|
||||||
|
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
||||||
|
<cbc:TaxCurrencyCode>NOK</cbc:TaxCurrencyCode>
|
||||||
|
<cbc:AccountingCost>uvz</cbc:AccountingCost>
|
||||||
|
<cbc:BuyerReference>123</cbc:BuyerReference>
|
||||||
|
<cac:InvoicePeriod>
|
||||||
|
<cbc:StartDate>2018-11-12</cbc:StartDate>
|
||||||
|
<cbc:EndDate>2018-11-30</cbc:EndDate>
|
||||||
|
<cbc:DescriptionCode>35</cbc:DescriptionCode>
|
||||||
|
</cac:InvoicePeriod>
|
||||||
|
<cac:OrderReference>
|
||||||
|
<cbc:ID>abc</cbc:ID>
|
||||||
|
<cbc:SalesOrderID>def</cbc:SalesOrderID>
|
||||||
|
</cac:OrderReference>
|
||||||
|
<cac:BillingReference>
|
||||||
|
<cac:InvoiceDocumentReference>
|
||||||
|
<cbc:ID>abc123</cbc:ID>
|
||||||
|
<cbc:IssueDate>2018-10-04</cbc:IssueDate>
|
||||||
|
</cac:InvoiceDocumentReference>
|
||||||
|
</cac:BillingReference>
|
||||||
|
<cac:DespatchDocumentReference>
|
||||||
|
<cbc:ID>lmn</cbc:ID>
|
||||||
|
</cac:DespatchDocumentReference>
|
||||||
|
<cac:ReceiptDocumentReference>
|
||||||
|
<cbc:ID>ghi</cbc:ID>
|
||||||
|
</cac:ReceiptDocumentReference>
|
||||||
|
<cac:OriginatorDocumentReference>
|
||||||
|
<cbc:ID>opq</cbc:ID>
|
||||||
|
</cac:OriginatorDocumentReference>
|
||||||
|
<cac:ContractDocumentReference>
|
||||||
|
<cbc:ID>789</cbc:ID>
|
||||||
|
</cac:ContractDocumentReference>
|
||||||
|
<cac:AdditionalDocumentReference>
|
||||||
|
<cbc:ID schemeID="0090">rst</cbc:ID>
|
||||||
|
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
|
||||||
|
</cac:AdditionalDocumentReference>
|
||||||
|
<cac:AdditionalDocumentReference>
|
||||||
|
<cbc:ID>Supporting document ref</cbc:ID>
|
||||||
|
<cbc:DocumentDescription>Supporting document descr</cbc:DocumentDescription>
|
||||||
|
<cac:Attachment>
|
||||||
|
<cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf" filename="filename0">ZGVmYXVsdA==</cbc:EmbeddedDocumentBinaryObject>
|
||||||
|
<cac:ExternalReference>
|
||||||
|
<cbc:URI>External document location</cbc:URI>
|
||||||
|
</cac:ExternalReference>
|
||||||
|
</cac:Attachment>
|
||||||
|
</cac:AdditionalDocumentReference>
|
||||||
|
<cac:ProjectReference>
|
||||||
|
<cbc:ID>456</cbc:ID>
|
||||||
|
</cac:ProjectReference>
|
||||||
|
<cac:AccountingSupplierParty>
|
||||||
|
<cac:Party>
|
||||||
|
<cbc:EndpointID schemeID="SMTP">Seller electronic address</cbc:EndpointID>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="0100">Seller identifier 1</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="0110">Seller identifier 2</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="SEPA">Bank assigned creditor identifier</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Seller trading name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PostalAddress>
|
||||||
|
<cbc:StreetName>Seller address line 1</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Seller address line 2</cbc:AdditionalStreetName>
|
||||||
|
<cbc:CityName>Seller city</cbc:CityName>
|
||||||
|
<cbc:PostalZone>12345</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentity>Seller country subdivision</cbc:CountrySubentity>
|
||||||
|
<cac:AddressLine>
|
||||||
|
<cbc:Line>Seller address line 3</cbc:Line>
|
||||||
|
</cac:AddressLine>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:PostalAddress>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID>DE12345677</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID>DE49294093</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>NOVAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:RegistrationName>Seller name</cbc:RegistrationName>
|
||||||
|
<cbc:CompanyID schemeID="0310">Seller legal identifier</cbc:CompanyID>
|
||||||
|
<cbc:CompanyLegalForm>Seller additional legal information</cbc:CompanyLegalForm>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
<cac:Contact>
|
||||||
|
<cbc:Name>Seller contact point</cbc:Name>
|
||||||
|
<cbc:Telephone>+41 345 654455</cbc:Telephone>
|
||||||
|
<cbc:ElectronicMail>seller@contact.de</cbc:ElectronicMail>
|
||||||
|
</cac:Contact>
|
||||||
|
</cac:Party>
|
||||||
|
</cac:AccountingSupplierParty>
|
||||||
|
<cac:AccountingCustomerParty>
|
||||||
|
<cac:Party>
|
||||||
|
<cbc:EndpointID schemeID="DE:SMTP">Buyer electronic address</cbc:EndpointID>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID>0190:Buyer identifier</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Buyer trading name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PostalAddress>
|
||||||
|
<cbc:StreetName>Buyer address line 1</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Buyer address line 2</cbc:AdditionalStreetName>
|
||||||
|
<cbc:CityName>Buyer city</cbc:CityName>
|
||||||
|
<cbc:PostalZone>34562</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentity>Buyer country subdivision</cbc:CountrySubentity>
|
||||||
|
<cac:AddressLine>
|
||||||
|
<cbc:Line>Buyer address line 3</cbc:Line>
|
||||||
|
</cac:AddressLine>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>IE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:PostalAddress>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID>IE394838894</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:RegistrationName>Buyer name</cbc:RegistrationName>
|
||||||
|
<cbc:CompanyID>Buyer legal registration identifier</cbc:CompanyID>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
<cac:Contact>
|
||||||
|
<cbc:Name>Buyer contact point</cbc:Name>
|
||||||
|
<cbc:Telephone>+353 2948584</cbc:Telephone>
|
||||||
|
<cbc:ElectronicMail>buyer@contact.ie</cbc:ElectronicMail>
|
||||||
|
</cac:Contact>
|
||||||
|
</cac:Party>
|
||||||
|
</cac:AccountingCustomerParty>
|
||||||
|
<cac:PayeeParty>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="0098">Payee identifier</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Payee name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:CompanyID schemeID="0099">Payee legal registration identifier</cbc:CompanyID>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
</cac:PayeeParty>
|
||||||
|
<cac:TaxRepresentativeParty>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Tax representative name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PostalAddress>
|
||||||
|
<cbc:StreetName>Tax representative address line 1</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Tax representative address line 2</cbc:AdditionalStreetName>
|
||||||
|
<cbc:CityName>Tax representative city</cbc:CityName>
|
||||||
|
<cbc:PostalZone>23455</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentity>Tax representative country subdivision</cbc:CountrySubentity>
|
||||||
|
<cac:AddressLine>
|
||||||
|
<cbc:Line>Tax representative address line 3</cbc:Line>
|
||||||
|
</cac:AddressLine>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:PostalAddress>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID>DE3949053</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
</cac:TaxRepresentativeParty>
|
||||||
|
<cac:Delivery>
|
||||||
|
<cbc:ActualDeliveryDate>2018-12-04</cbc:ActualDeliveryDate>
|
||||||
|
<cac:DeliveryLocation>
|
||||||
|
<cbc:ID schemeID="0045">deliver location identifier</cbc:ID>
|
||||||
|
<cac:Address>
|
||||||
|
<cbc:StreetName>Deliver to address line 1</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Deliver to address line 2</cbc:AdditionalStreetName>
|
||||||
|
<cbc:CityName>Deliver to city</cbc:CityName>
|
||||||
|
<cbc:PostalZone>98765</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentity>Deliver to country subdivision</cbc:CountrySubentity>
|
||||||
|
<cac:AddressLine>
|
||||||
|
<cbc:Line>Deliver to address line 3</cbc:Line>
|
||||||
|
</cac:AddressLine>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>IE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:Address>
|
||||||
|
</cac:DeliveryLocation>
|
||||||
|
<cac:DeliveryParty>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Deliver to party name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
</cac:DeliveryParty>
|
||||||
|
</cac:Delivery>
|
||||||
|
<cac:PaymentMeans>
|
||||||
|
<cbc:PaymentMeansCode name="SEPA">4</cbc:PaymentMeansCode>
|
||||||
|
<cbc:PaymentID>Remittance information</cbc:PaymentID>
|
||||||
|
<cac:CardAccount>
|
||||||
|
<cbc:PrimaryAccountNumberID>1234</cbc:PrimaryAccountNumberID>
|
||||||
|
<cbc:NetworkID>mandatory network id</cbc:NetworkID>
|
||||||
|
<cbc:HolderName>Payment card holder name</cbc:HolderName>
|
||||||
|
</cac:CardAccount>
|
||||||
|
<cac:PayeeFinancialAccount>
|
||||||
|
<cbc:ID>IT1212341234123412</cbc:ID>
|
||||||
|
<cbc:Name>Payment account name</cbc:Name>
|
||||||
|
<cac:FinancialInstitutionBranch>
|
||||||
|
<cbc:ID>BSCTCH22</cbc:ID>
|
||||||
|
</cac:FinancialInstitutionBranch>
|
||||||
|
</cac:PayeeFinancialAccount>
|
||||||
|
<cac:PayeeFinancialAccount>
|
||||||
|
<cbc:ID>IT1212341234123413</cbc:ID>
|
||||||
|
<cbc:Name>Payment account name 2</cbc:Name>
|
||||||
|
<cac:FinancialInstitutionBranch>
|
||||||
|
<cbc:ID>BSCTCH22</cbc:ID>
|
||||||
|
</cac:FinancialInstitutionBranch>
|
||||||
|
</cac:PayeeFinancialAccount>
|
||||||
|
<cac:PaymentMandate>
|
||||||
|
<cbc:ID>Mandate reference identifier</cbc:ID>
|
||||||
|
<cac:PayerFinancialAccount>
|
||||||
|
<cbc:ID>Debited account identifier</cbc:ID>
|
||||||
|
</cac:PayerFinancialAccount>
|
||||||
|
</cac:PaymentMandate>
|
||||||
|
</cac:PaymentMeans>
|
||||||
|
<cac:PaymentTerms>
|
||||||
|
<cbc:Note>total amount</cbc:Note>
|
||||||
|
</cac:PaymentTerms>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||||
|
<cbc:AllowanceChargeReasonCode>55</cbc:AllowanceChargeReasonCode>
|
||||||
|
<cbc:AllowanceChargeReason>Doc allowance reason text</cbc:AllowanceChargeReason>
|
||||||
|
<cbc:MultiplierFactorNumeric>1.0000</cbc:MultiplierFactorNumeric>
|
||||||
|
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">1000.00</cbc:BaseAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>5.00</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
|
||||||
|
<cbc:AllowanceChargeReasonCode>AAA</cbc:AllowanceChargeReasonCode>
|
||||||
|
<cbc:AllowanceChargeReason>Doc charge reason text</cbc:AllowanceChargeReason>
|
||||||
|
<cbc:MultiplierFactorNumeric>1.0000</cbc:MultiplierFactorNumeric>
|
||||||
|
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">1000.00</cbc:BaseAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>5.00</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
<cac:TaxTotal>
|
||||||
|
<cbc:TaxAmount currencyID="NOK">46.00</cbc:TaxAmount>
|
||||||
|
</cac:TaxTotal>
|
||||||
|
<cac:TaxTotal>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">50.00</cbc:TaxAmount>
|
||||||
|
<cac:TaxSubtotal>
|
||||||
|
<cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">50.00</cbc:TaxAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>5.00</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:TaxSubtotal>
|
||||||
|
<cac:TaxSubtotal>
|
||||||
|
<cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID>E</cbc:ID>
|
||||||
|
<cbc:Percent>0.00</cbc:Percent>
|
||||||
|
<cbc:TaxExemptionReasonCode>Exemption reason code</cbc:TaxExemptionReasonCode>
|
||||||
|
<cbc:TaxExemptionReason>Exemtion reason text</cbc:TaxExemptionReason>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:TaxSubtotal>
|
||||||
|
</cac:TaxTotal>
|
||||||
|
<cac:LegalMonetaryTotal>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">2000.00</cbc:LineExtensionAmount>
|
||||||
|
<cbc:TaxExclusiveAmount currencyID="EUR">2000.00</cbc:TaxExclusiveAmount>
|
||||||
|
<cbc:TaxInclusiveAmount currencyID="EUR">2050.00</cbc:TaxInclusiveAmount>
|
||||||
|
<cbc:AllowanceTotalAmount currencyID="EUR">10.00</cbc:AllowanceTotalAmount>
|
||||||
|
<cbc:ChargeTotalAmount currencyID="EUR">10.00</cbc:ChargeTotalAmount>
|
||||||
|
<cbc:PayableAmount currencyID="EUR">2050.00</cbc:PayableAmount>
|
||||||
|
</cac:LegalMonetaryTotal>
|
||||||
|
<cac:InvoiceLine>
|
||||||
|
<cbc:ID>1a</cbc:ID>
|
||||||
|
<cbc:Note>Invoice line note</cbc:Note>
|
||||||
|
<cbc:InvoicedQuantity unitCode="EA">10.00000000</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
|
||||||
|
<cbc:AccountingCost>6789</cbc:AccountingCost>
|
||||||
|
<cac:InvoicePeriod>
|
||||||
|
<cbc:StartDate>2018-11-12</cbc:StartDate>
|
||||||
|
<cbc:EndDate>2018-11-30</cbc:EndDate>
|
||||||
|
</cac:InvoicePeriod>
|
||||||
|
<cac:OrderLineReference>
|
||||||
|
<cbc:LineID>12345</cbc:LineID>
|
||||||
|
</cac:OrderLineReference>
|
||||||
|
<cac:DocumentReference>
|
||||||
|
<cbc:ID schemeID="ZZZ">Line object identifier</cbc:ID>
|
||||||
|
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
|
||||||
|
</cac:DocumentReference>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||||
|
<cbc:AllowanceChargeReasonCode>55</cbc:AllowanceChargeReasonCode>
|
||||||
|
<cbc:AllowanceChargeReason>Invoice line allowance reason</cbc:AllowanceChargeReason>
|
||||||
|
<cbc:MultiplierFactorNumeric>1</cbc:MultiplierFactorNumeric>
|
||||||
|
<cbc:Amount currencyID="EUR">10</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">1000</cbc:BaseAmount>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
|
||||||
|
<cbc:AllowanceChargeReasonCode>AAA</cbc:AllowanceChargeReasonCode>
|
||||||
|
<cbc:AllowanceChargeReason>Invoice line charge reason</cbc:AllowanceChargeReason>
|
||||||
|
<cbc:MultiplierFactorNumeric>1</cbc:MultiplierFactorNumeric>
|
||||||
|
<cbc:Amount currencyID="EUR">10</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">1000</cbc:BaseAmount>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Description>Item description</cbc:Description>
|
||||||
|
<cbc:Name>Item name</cbc:Name>
|
||||||
|
<cac:BuyersItemIdentification>
|
||||||
|
<cbc:ID>Item buyer's identifier</cbc:ID>
|
||||||
|
</cac:BuyersItemIdentification>
|
||||||
|
<cac:SellersItemIdentification>
|
||||||
|
<cbc:ID>Item seller's identifier</cbc:ID>
|
||||||
|
</cac:SellersItemIdentification>
|
||||||
|
<cac:StandardItemIdentification>
|
||||||
|
<cbc:ID>Item standar identifier</cbc:ID>
|
||||||
|
</cac:StandardItemIdentification>
|
||||||
|
<cac:OriginCountry>
|
||||||
|
<cbc:IdentificationCode>IT</cbc:IdentificationCode>
|
||||||
|
</cac:OriginCountry>
|
||||||
|
<cac:CommodityClassification>
|
||||||
|
<cbc:ItemClassificationCode listID="ZZZ" listVersionID="version0">Item classification identifier0</cbc:ItemClassificationCode>
|
||||||
|
</cac:CommodityClassification>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>5.00</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
<cac:AdditionalItemProperty>
|
||||||
|
<cbc:Name>Color</cbc:Name>
|
||||||
|
<cbc:Value>Red</cbc:Value>
|
||||||
|
</cac:AdditionalItemProperty>
|
||||||
|
<cac:AdditionalItemProperty>
|
||||||
|
<cbc:Name>Size</cbc:Name>
|
||||||
|
<cbc:Value>L</cbc:Value>
|
||||||
|
</cac:AdditionalItemProperty>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">10.00</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="EA">1.00</cbc:BaseQuantity>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||||
|
<cbc:Amount currencyID="EUR">1</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">11</cbc:BaseAmount>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:InvoiceLine>
|
||||||
|
<cac:InvoiceLine>
|
||||||
|
<cbc:ID>1b</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="EA">10.00000000</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Item name 2</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>E</cbc:ID>
|
||||||
|
<cbc:Percent>0.00</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">10.00</cbc:PriceAmount>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:InvoiceLine>
|
||||||
|
</Invoice>
|
||||||
@@ -0,0 +1,349 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDataTypes-2" xmlns:udt="urn:oasis:names:specification:ubl:schema:xsd:UnqualifiedDataTypes-2">
|
||||||
|
<cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>
|
||||||
|
<cbc:ProfileID>BT-23 Business Process Type</cbc:ProfileID>
|
||||||
|
<cbc:ID>Test_EeISI_100</cbc:ID>
|
||||||
|
<cbc:IssueDate>2018-11-12</cbc:IssueDate>
|
||||||
|
<cbc:DueDate>2018-11-30</cbc:DueDate>
|
||||||
|
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
||||||
|
<cbc:Note>##AAA##invoice note text</cbc:Note>
|
||||||
|
<cbc:Note>##AAA##invoice note text 2</cbc:Note>
|
||||||
|
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
||||||
|
<cbc:TaxCurrencyCode>NOK</cbc:TaxCurrencyCode>
|
||||||
|
<cbc:AccountingCost>uvz</cbc:AccountingCost>
|
||||||
|
<cbc:BuyerReference>123</cbc:BuyerReference>
|
||||||
|
<cac:InvoicePeriod>
|
||||||
|
<cbc:StartDate>2018-11-12</cbc:StartDate>
|
||||||
|
<cbc:EndDate>2018-11-30</cbc:EndDate>
|
||||||
|
<cbc:DescriptionCode>35</cbc:DescriptionCode>
|
||||||
|
</cac:InvoicePeriod>
|
||||||
|
<cac:OrderReference>
|
||||||
|
<cbc:ID>abc</cbc:ID>
|
||||||
|
<cbc:SalesOrderID>def</cbc:SalesOrderID>
|
||||||
|
</cac:OrderReference>
|
||||||
|
<cac:BillingReference>
|
||||||
|
<cac:InvoiceDocumentReference>
|
||||||
|
<cbc:ID>abc123</cbc:ID>
|
||||||
|
<cbc:IssueDate>2018-10-04</cbc:IssueDate>
|
||||||
|
</cac:InvoiceDocumentReference>
|
||||||
|
</cac:BillingReference>
|
||||||
|
<cac:DespatchDocumentReference>
|
||||||
|
<cbc:ID>lmn</cbc:ID>
|
||||||
|
</cac:DespatchDocumentReference>
|
||||||
|
<cac:ReceiptDocumentReference>
|
||||||
|
<cbc:ID>ghi</cbc:ID>
|
||||||
|
</cac:ReceiptDocumentReference>
|
||||||
|
<cac:OriginatorDocumentReference>
|
||||||
|
<cbc:ID>opq</cbc:ID>
|
||||||
|
</cac:OriginatorDocumentReference>
|
||||||
|
<cac:ContractDocumentReference>
|
||||||
|
<cbc:ID>789</cbc:ID>
|
||||||
|
</cac:ContractDocumentReference>
|
||||||
|
<cac:AdditionalDocumentReference>
|
||||||
|
<cbc:ID schemeID="0090">rst</cbc:ID>
|
||||||
|
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
|
||||||
|
</cac:AdditionalDocumentReference>
|
||||||
|
<cac:AdditionalDocumentReference>
|
||||||
|
<cbc:ID>Supporting document ref</cbc:ID>
|
||||||
|
<cbc:DocumentDescription>Supporting document descr</cbc:DocumentDescription>
|
||||||
|
<cac:Attachment>
|
||||||
|
<cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf" filename="filename0">ZGVmYXVsdA==</cbc:EmbeddedDocumentBinaryObject>
|
||||||
|
<cac:ExternalReference>
|
||||||
|
<cbc:URI>External document location</cbc:URI>
|
||||||
|
</cac:ExternalReference>
|
||||||
|
</cac:Attachment>
|
||||||
|
</cac:AdditionalDocumentReference>
|
||||||
|
<cac:ProjectReference>
|
||||||
|
<cbc:ID>456</cbc:ID>
|
||||||
|
</cac:ProjectReference>
|
||||||
|
<cac:AccountingSupplierParty>
|
||||||
|
<cac:Party>
|
||||||
|
<cbc:EndpointID schemeID="SMTP">Seller electronic address</cbc:EndpointID>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="0100">Seller identifier 1</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="0110">Seller identifier 2</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="SEPA">Bank assigned creditor identifier</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Seller trading name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PostalAddress>
|
||||||
|
<cbc:StreetName>Seller address line 1</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Seller address line 2</cbc:AdditionalStreetName>
|
||||||
|
<cbc:CityName>Seller city</cbc:CityName>
|
||||||
|
<cbc:PostalZone>12345</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentity>Seller country subdivision</cbc:CountrySubentity>
|
||||||
|
<cac:AddressLine>
|
||||||
|
<cbc:Line>Seller address line 3</cbc:Line>
|
||||||
|
</cac:AddressLine>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:PostalAddress>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID>DE12345677</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID>DE49294093</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>NOVAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:RegistrationName>Seller name</cbc:RegistrationName>
|
||||||
|
<cbc:CompanyID schemeID="0310">Seller legal identifier</cbc:CompanyID>
|
||||||
|
<cbc:CompanyLegalForm>Seller additional legal information</cbc:CompanyLegalForm>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
<cac:Contact>
|
||||||
|
<cbc:Name>Seller contact point</cbc:Name>
|
||||||
|
<cbc:Telephone>+41 345 654455</cbc:Telephone>
|
||||||
|
<cbc:ElectronicMail>seller@contact.de</cbc:ElectronicMail>
|
||||||
|
</cac:Contact>
|
||||||
|
</cac:Party>
|
||||||
|
</cac:AccountingSupplierParty>
|
||||||
|
<cac:AccountingCustomerParty>
|
||||||
|
<cac:Party>
|
||||||
|
<cbc:EndpointID schemeID="DE:SMTP">Buyer electronic address</cbc:EndpointID>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID>0190:Buyer identifier</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Buyer trading name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PostalAddress>
|
||||||
|
<cbc:StreetName>Buyer address line 1</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Buyer address line 2</cbc:AdditionalStreetName>
|
||||||
|
<cbc:CityName>Buyer city</cbc:CityName>
|
||||||
|
<cbc:PostalZone>34562</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentity>Buyer country subdivision</cbc:CountrySubentity>
|
||||||
|
<cac:AddressLine>
|
||||||
|
<cbc:Line>Buyer address line 3</cbc:Line>
|
||||||
|
</cac:AddressLine>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>IE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:PostalAddress>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID>IE394838894</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:RegistrationName>Buyer name</cbc:RegistrationName>
|
||||||
|
<cbc:CompanyID>Buyer legal registration identifier</cbc:CompanyID>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
<cac:Contact>
|
||||||
|
<cbc:Name>Buyer contact point</cbc:Name>
|
||||||
|
<cbc:Telephone>+353 2948584</cbc:Telephone>
|
||||||
|
<cbc:ElectronicMail>buyer@contact.ie</cbc:ElectronicMail>
|
||||||
|
</cac:Contact>
|
||||||
|
</cac:Party>
|
||||||
|
</cac:AccountingCustomerParty>
|
||||||
|
<cac:PayeeParty>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="0098">Payee identifier</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Payee name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:CompanyID schemeID="0099">Payee legal registration identifier</cbc:CompanyID>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
</cac:PayeeParty>
|
||||||
|
<cac:TaxRepresentativeParty>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Tax representative name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PostalAddress>
|
||||||
|
<cbc:StreetName>Tax representative address line 1</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Tax representative address line 2</cbc:AdditionalStreetName>
|
||||||
|
<cbc:CityName>Tax representative city</cbc:CityName>
|
||||||
|
<cbc:PostalZone>23455</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentity>Tax representative country subdivision</cbc:CountrySubentity>
|
||||||
|
<cac:AddressLine>
|
||||||
|
<cbc:Line>Tax representative address line 3</cbc:Line>
|
||||||
|
</cac:AddressLine>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:PostalAddress>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID>DE3949053</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
</cac:TaxRepresentativeParty>
|
||||||
|
<cac:Delivery>
|
||||||
|
<cbc:ActualDeliveryDate>2018-12-04</cbc:ActualDeliveryDate>
|
||||||
|
<cac:DeliveryLocation>
|
||||||
|
<cbc:ID schemeID="0045">deliver location identifier</cbc:ID>
|
||||||
|
<cac:Address>
|
||||||
|
<cbc:StreetName>Deliver to address line 1</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Deliver to address line 2</cbc:AdditionalStreetName>
|
||||||
|
<cbc:CityName>Deliver to city</cbc:CityName>
|
||||||
|
<cbc:PostalZone>98765</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentity>Deliver to country subdivision</cbc:CountrySubentity>
|
||||||
|
<cac:AddressLine>
|
||||||
|
<cbc:Line>Deliver to address line 3</cbc:Line>
|
||||||
|
</cac:AddressLine>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>IE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:Address>
|
||||||
|
</cac:DeliveryLocation>
|
||||||
|
<cac:DeliveryParty>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Deliver to party name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
</cac:DeliveryParty>
|
||||||
|
</cac:Delivery>
|
||||||
|
<cac:PaymentMeans>
|
||||||
|
<cbc:PaymentMeansCode name="SEPA">4</cbc:PaymentMeansCode>
|
||||||
|
<cbc:PaymentID>Remittance information</cbc:PaymentID>
|
||||||
|
<cac:CardAccount>
|
||||||
|
<cbc:PrimaryAccountNumberID>1234</cbc:PrimaryAccountNumberID>
|
||||||
|
<cbc:NetworkID>mandatory network id</cbc:NetworkID>
|
||||||
|
<cbc:HolderName>Payment card holder name</cbc:HolderName>
|
||||||
|
</cac:CardAccount>
|
||||||
|
<cac:PayeeFinancialAccount>
|
||||||
|
<cbc:ID>IT1212341234123412</cbc:ID>
|
||||||
|
<cbc:Name>Payment account name</cbc:Name>
|
||||||
|
<cac:FinancialInstitutionBranch>
|
||||||
|
<cbc:ID>BSCTCH22</cbc:ID>
|
||||||
|
</cac:FinancialInstitutionBranch>
|
||||||
|
</cac:PayeeFinancialAccount>
|
||||||
|
<cac:PayeeFinancialAccount>
|
||||||
|
<cbc:ID>IT1212341234123413</cbc:ID>
|
||||||
|
<cbc:Name>Payment account name 2</cbc:Name>
|
||||||
|
<cac:FinancialInstitutionBranch>
|
||||||
|
<cbc:ID>BSCTCH22</cbc:ID>
|
||||||
|
</cac:FinancialInstitutionBranch>
|
||||||
|
</cac:PayeeFinancialAccount>
|
||||||
|
<cac:PaymentMandate>
|
||||||
|
<cbc:ID>Mandate reference identifier</cbc:ID>
|
||||||
|
<cac:PayerFinancialAccount>
|
||||||
|
<cbc:ID>Debited account identifier</cbc:ID>
|
||||||
|
</cac:PayerFinancialAccount>
|
||||||
|
</cac:PaymentMandate>
|
||||||
|
</cac:PaymentMeans>
|
||||||
|
<cac:PaymentTerms>
|
||||||
|
<cbc:Note>total amount</cbc:Note>
|
||||||
|
</cac:PaymentTerms>
|
||||||
|
<cac:TaxTotal>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">50.00</cbc:TaxAmount>
|
||||||
|
<cac:TaxSubtotal>
|
||||||
|
<cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">50.00</cbc:TaxAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>5.00</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:TaxSubtotal>
|
||||||
|
<cac:TaxSubtotal>
|
||||||
|
<cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID>E</cbc:ID>
|
||||||
|
<cbc:Percent>0.00</cbc:Percent>
|
||||||
|
<cbc:TaxExemptionReasonCode>Exemption reason code</cbc:TaxExemptionReasonCode>
|
||||||
|
<cbc:TaxExemptionReason>Exemtion reason text</cbc:TaxExemptionReason>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:TaxSubtotal>
|
||||||
|
</cac:TaxTotal>
|
||||||
|
<cac:LegalMonetaryTotal>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">200.00</cbc:LineExtensionAmount>
|
||||||
|
<cbc:TaxExclusiveAmount currencyID="EUR">200.00</cbc:TaxExclusiveAmount>
|
||||||
|
<cbc:TaxInclusiveAmount currencyID="EUR">205.00</cbc:TaxInclusiveAmount>
|
||||||
|
<cbc:PayableAmount currencyID="EUR">205.00</cbc:PayableAmount>
|
||||||
|
</cac:LegalMonetaryTotal>
|
||||||
|
<cac:InvoiceLine>
|
||||||
|
<cbc:ID>1a</cbc:ID>
|
||||||
|
<cbc:Note>Invoice line note</cbc:Note>
|
||||||
|
<cbc:InvoicedQuantity unitCode="EA">10.00000000</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
|
||||||
|
<cbc:AccountingCost>6789</cbc:AccountingCost>
|
||||||
|
<cac:InvoicePeriod>
|
||||||
|
<cbc:StartDate>2018-11-12</cbc:StartDate>
|
||||||
|
<cbc:EndDate>2018-11-30</cbc:EndDate>
|
||||||
|
</cac:InvoicePeriod>
|
||||||
|
<cac:OrderLineReference>
|
||||||
|
<cbc:LineID>12345</cbc:LineID>
|
||||||
|
</cac:OrderLineReference>
|
||||||
|
<cac:DocumentReference>
|
||||||
|
<cbc:ID schemeID="ZZZ">Line object identifier</cbc:ID>
|
||||||
|
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
|
||||||
|
</cac:DocumentReference>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Description>Item description</cbc:Description>
|
||||||
|
<cbc:Name>Item name</cbc:Name>
|
||||||
|
<cac:BuyersItemIdentification>
|
||||||
|
<cbc:ID>Item buyer's identifier</cbc:ID>
|
||||||
|
</cac:BuyersItemIdentification>
|
||||||
|
<cac:SellersItemIdentification>
|
||||||
|
<cbc:ID>Item seller's identifier</cbc:ID>
|
||||||
|
</cac:SellersItemIdentification>
|
||||||
|
<cac:StandardItemIdentification>
|
||||||
|
<cbc:ID>Item standar identifier</cbc:ID>
|
||||||
|
</cac:StandardItemIdentification>
|
||||||
|
<cac:OriginCountry>
|
||||||
|
<cbc:IdentificationCode>IT</cbc:IdentificationCode>
|
||||||
|
</cac:OriginCountry>
|
||||||
|
<cac:CommodityClassification>
|
||||||
|
<cbc:ItemClassificationCode listID="ZZZ" listVersionID="version0">Item classification identifier0</cbc:ItemClassificationCode>
|
||||||
|
</cac:CommodityClassification>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>5.00</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
<cac:AdditionalItemProperty>
|
||||||
|
<cbc:Name>Color</cbc:Name>
|
||||||
|
<cbc:Value>Red</cbc:Value>
|
||||||
|
</cac:AdditionalItemProperty>
|
||||||
|
<cac:AdditionalItemProperty>
|
||||||
|
<cbc:Name>Size</cbc:Name>
|
||||||
|
<cbc:Value>L</cbc:Value>
|
||||||
|
</cac:AdditionalItemProperty>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">10.00</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="EA">1.00</cbc:BaseQuantity>
|
||||||
|
|
||||||
|
</cac:Price>
|
||||||
|
</cac:InvoiceLine>
|
||||||
|
<cac:InvoiceLine>
|
||||||
|
<cbc:ID>1b</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="EA">10.00000000</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">100.00</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Item name 2</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>E</cbc:ID>
|
||||||
|
<cbc:Percent>0.00</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">10.00</cbc:PriceAmount>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:InvoiceLine>
|
||||||
|
</Invoice>
|
||||||
@@ -66,6 +66,11 @@
|
|||||||
</cac:PartyLegalEntity>
|
</cac:PartyLegalEntity>
|
||||||
</cac:Party>
|
</cac:Party>
|
||||||
</cac:AccountingCustomerParty>
|
</cac:AccountingCustomerParty>
|
||||||
|
<cac:PayeeParty>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>VR Factoring GmbH</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
</cac:PayeeParty>
|
||||||
<cac:Delivery>
|
<cac:Delivery>
|
||||||
<cbc:ActualDeliveryDate>2017-05-07</cbc:ActualDeliveryDate>
|
<cbc:ActualDeliveryDate>2017-05-07</cbc:ActualDeliveryDate>
|
||||||
</cac:Delivery>
|
</cac:Delivery>
|
||||||
|
|||||||
388
library/src/test/resources/ubl/04.01a-INVOICE_ubl.xml
Normal file
388
library/src/test/resources/ubl/04.01a-INVOICE_ubl.xml
Normal file
@@ -0,0 +1,388 @@
|
|||||||
|
<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
|
||||||
|
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||||
|
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||||
|
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_2.2#conformant#urn:xoev-de:kosit:extension:xrechnung_2.2</cbc:CustomizationID>
|
||||||
|
<cbc:ID>12345</cbc:ID>
|
||||||
|
<cbc:IssueDate>2019-05-15</cbc:IssueDate>
|
||||||
|
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
||||||
|
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
||||||
|
<cbc:BuyerReference>12345678-12345-83</cbc:BuyerReference>
|
||||||
|
<cac:InvoicePeriod>
|
||||||
|
<cbc:StartDate>2019-02-01</cbc:StartDate>
|
||||||
|
<cbc:EndDate>2019-05-07</cbc:EndDate>
|
||||||
|
</cac:InvoicePeriod>
|
||||||
|
<cac:OrderReference>
|
||||||
|
<cbc:ID>123</cbc:ID>
|
||||||
|
</cac:OrderReference>
|
||||||
|
<cac:AccountingSupplierParty>
|
||||||
|
<cac:Party>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>M. Meier Handwerk GbR</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PostalAddress>
|
||||||
|
<cbc:StreetName>Hauptstraße 2</cbc:StreetName>
|
||||||
|
<cbc:CityName>Musterstadt</cbc:CityName>
|
||||||
|
<cbc:PostalZone>12345</cbc:PostalZone>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:PostalAddress>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID>DE/12/345/67890</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:RegistrationName>M. Meier Handwerk GbR</cbc:RegistrationName>
|
||||||
|
<cbc:CompanyID>1122334455</cbc:CompanyID>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
<cac:Contact>
|
||||||
|
<cbc:Name>M. Meier Handwerk GbR</cbc:Name>
|
||||||
|
<cbc:Telephone>010/12345</cbc:Telephone>
|
||||||
|
<cbc:ElectronicMail>info@m-meier.de</cbc:ElectronicMail>
|
||||||
|
</cac:Contact>
|
||||||
|
</cac:Party>
|
||||||
|
</cac:AccountingSupplierParty>
|
||||||
|
<cac:AccountingCustomerParty>
|
||||||
|
<cac:Party>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID>345LA5324</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PostalAddress>
|
||||||
|
<cbc:StreetName>Dorfplatz 3</cbc:StreetName>
|
||||||
|
<cbc:CityName>Musterort</cbc:CityName>
|
||||||
|
<cbc:PostalZone>54321</cbc:PostalZone>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:PostalAddress>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:RegistrationName>Beispielkunde</cbc:RegistrationName>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
</cac:Party>
|
||||||
|
</cac:AccountingCustomerParty>
|
||||||
|
<cac:PaymentMeans>
|
||||||
|
<cbc:PaymentMeansCode>31</cbc:PaymentMeansCode>
|
||||||
|
<cac:PayeeFinancialAccount>
|
||||||
|
<cbc:ID>DE091111222233334444</cbc:ID>
|
||||||
|
</cac:PayeeFinancialAccount>
|
||||||
|
</cac:PaymentMeans>
|
||||||
|
<cac:PaymentTerms>
|
||||||
|
<cbc:Note>Zahlbar innerhalb 14 Tagen nach Erhalt der Rechnung.</cbc:Note>
|
||||||
|
</cac:PaymentTerms>
|
||||||
|
<cac:TaxTotal>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">2382</cbc:TaxAmount>
|
||||||
|
<cac:TaxSubtotal>
|
||||||
|
<cbc:TaxableAmount currencyID="EUR">12536.84</cbc:TaxableAmount>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">2382</cbc:TaxAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:TaxSubtotal>
|
||||||
|
</cac:TaxTotal>
|
||||||
|
<cac:LegalMonetaryTotal>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">12536.84</cbc:LineExtensionAmount>
|
||||||
|
<cbc:TaxExclusiveAmount currencyID="EUR">12536.84</cbc:TaxExclusiveAmount>
|
||||||
|
<cbc:TaxInclusiveAmount currencyID="EUR">14918.84</cbc:TaxInclusiveAmount>
|
||||||
|
<cbc:PrepaidAmount currencyID="EUR">10000.0</cbc:PrepaidAmount>
|
||||||
|
<cbc:PayableAmount currencyID="EUR">4918.84</cbc:PayableAmount>
|
||||||
|
</cac:LegalMonetaryTotal>
|
||||||
|
<cac:InvoiceLine>
|
||||||
|
<cbc:ID>1</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="XPP">1</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">818.04</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Sanitär und Zubehör</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">818.04</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="MTR">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
<cac:SubInvoiceLine>
|
||||||
|
<cbc:ID>1 1</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="XPP">1</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">335.79</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Demontage Sanitär</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">335.79</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="MTR">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
<cac:SubInvoiceLine>
|
||||||
|
<cbc:ID>1 1 1</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="MTR">149</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR"
|
||||||
|
>193.70</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Demontage TW-Rohrleitung DN 12-25</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">1.30</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="MTR">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:SubInvoiceLine>
|
||||||
|
<cac:SubInvoiceLine>
|
||||||
|
<cbc:ID>1 1 2</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="MTR">32.50</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR"
|
||||||
|
>48.75</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Demontage SML DN 100</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">1.50</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="MTR">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:SubInvoiceLine>
|
||||||
|
<cac:SubInvoiceLine>
|
||||||
|
<cbc:ID>1 1 3</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="MTR">71.80</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR"
|
||||||
|
>93.34</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Demontage AW-Rohrleitungen Kunststoff PP bis DN100</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">1.30</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="MTR">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:SubInvoiceLine>
|
||||||
|
</cac:SubInvoiceLine>
|
||||||
|
<cac:SubInvoiceLine>
|
||||||
|
<cbc:ID>1 2</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="XPP">1</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">482.25</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Abwasserleitungen und Zubehör</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">482.25</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="MTR">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
<cac:SubInvoiceLine>
|
||||||
|
<cbc:ID>1 2 1</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="MTR">9.5</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR"
|
||||||
|
>99.75</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Abwasserleitung HT-PP DN 100</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">10.50</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="MTR">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:SubInvoiceLine>
|
||||||
|
<cac:SubInvoiceLine>
|
||||||
|
<cbc:ID>1 2 2</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="MTR">45.0</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR"
|
||||||
|
>382.50</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Abwasserleitung HT-PP DN 50</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">8.50</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="MTR">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:SubInvoiceLine>
|
||||||
|
</cac:SubInvoiceLine>
|
||||||
|
</cac:InvoiceLine>
|
||||||
|
<cac:InvoiceLine>
|
||||||
|
<cbc:ID>2</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="XPP">1</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">11718.8</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Heizung und Zubehör</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">11718.8</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="MTR">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
<cac:SubInvoiceLine>
|
||||||
|
<cbc:ID>2 1</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="XPP">1</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">1324</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Demontage Heizung</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">1324</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="MTR">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
<cac:SubInvoiceLine>
|
||||||
|
<cbc:ID>2 1 1</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="C62">20</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">700</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Entleeren der Heizungsanlage, teilnetz</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">35</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:SubInvoiceLine>
|
||||||
|
<cac:SubInvoiceLine>
|
||||||
|
<cbc:ID>2 1 2</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="C62">52</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">624</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Demontage Flachheizkörpers</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">12</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:SubInvoiceLine>
|
||||||
|
</cac:SubInvoiceLine>
|
||||||
|
<cac:SubInvoiceLine>
|
||||||
|
<cbc:ID>2 2</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="XPP">1</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR"
|
||||||
|
>10394.8</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Heizflächen und Zubehör</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">10394.8</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="MTR">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
<cac:SubInvoiceLine>
|
||||||
|
<cbc:ID>2 2 1</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="C62">52</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR"
|
||||||
|
>10202.4</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Flachheizkörper Stahl profiliert Seitent. H 300mm L -500mm Typ22</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">196.20</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:SubInvoiceLine>
|
||||||
|
<cac:SubInvoiceLine>
|
||||||
|
<cbc:ID>2 2 2</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="C62">104</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR"
|
||||||
|
>192.4</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Einzelrosette aus Kunststoff, weiß</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>19</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">1.85</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="MTR">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:SubInvoiceLine>
|
||||||
|
</cac:SubInvoiceLine>
|
||||||
|
</cac:InvoiceLine>
|
||||||
|
</ubl:Invoice>
|
||||||
@@ -1,260 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>471102</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-06-05</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>Rechnung gemäß Bestellung Nr. 2018-471331 vom 01.03.2018.</cbc:Note>
|
|
||||||
<cbc:Note>#AAK#Es bestehen Rabatt- und Bonusvereinbarungen.</cbc:Note>
|
|
||||||
<cbc:Note>#REG#Lieferant GmbH
|
|
||||||
Lieferantenstraße 20
|
|
||||||
80333 München
|
|
||||||
Deutschland
|
|
||||||
Geschäftsführer: Hans Muster
|
|
||||||
Handelsregisternummer: H A 123
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:OrderReference>
|
|
||||||
<cbc:ID>2018-471331</cbc:ID>
|
|
||||||
</cac:OrderReference>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4000001123452</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Lieferant GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Lieferantenstraße 20</cbc:StreetName>
|
|
||||||
<cbc:CityName>München</cbc:CityName>
|
|
||||||
<cbc:PostalZone>80333</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>201/113/40209</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>FC</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE123456789</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Lieferant GmbH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>GE2020211</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Kunden AG Mitte</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Kundenstraße 15</cbc:StreetName>
|
|
||||||
<cbc:CityName>Frankfurt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>69876</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Kunden AG Mitte</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-06-03</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>Zahlbar innerhalb 30 Tagen netto bis 04.07.2018, 3% Skonto innerhalb 10 Tagen bis 15.06.2018</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:AllowanceCharge>
|
|
||||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
|
||||||
<cbc:AllowanceChargeReason>Sondernachlass</cbc:AllowanceChargeReason>
|
|
||||||
<cbc:Amount currencyID="EUR">1</cbc:Amount>
|
|
||||||
<cbc:BaseAmount currencyID="EUR">10</cbc:BaseAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:AllowanceCharge>
|
|
||||||
<cac:AllowanceCharge>
|
|
||||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
|
||||||
<cbc:AllowanceChargeReason>Sondernachlass</cbc:AllowanceChargeReason>
|
|
||||||
<cbc:Amount currencyID="EUR">8.07</cbc:Amount>
|
|
||||||
<cbc:BaseAmount currencyID="EUR">115.3</cbc:BaseAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:AllowanceCharge>
|
|
||||||
<cac:AllowanceCharge>
|
|
||||||
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
|
|
||||||
<cbc:AllowanceChargeReason>Versandkosten</cbc:AllowanceChargeReason>
|
|
||||||
<cbc:Amount currencyID="EUR">5.8</cbc:Amount>
|
|
||||||
<cbc:BaseAmount currencyID="EUR">115.3</cbc:BaseAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:AllowanceCharge>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">20.16</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">113.03</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">7.91</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">64.46</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">12.25</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">180.76</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">177.49</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">197.65</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">9.07</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">5.8</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">50</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">147.65</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:Note>Wir erlauben uns Ihnen folgende Positionen aus der Lieferung Nr. 2018-51112 in Rechnung zu stellen:</cbc:Note>
|
|
||||||
<cbc:InvoicedQuantity unitCode="MTK">3</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">10</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Description>300cm x 100 cm</cbc:Description>
|
|
||||||
<cbc:Name>Kunstrasen grün 3m breit</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>KR3M</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4012345001235</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">3.3333</cbc:PriceAmount>
|
|
||||||
<cac:AllowanceCharge>
|
|
||||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
|
||||||
<cbc:Amount currencyID="EUR">0.6667</cbc:Amount>
|
|
||||||
</cac:AllowanceCharge>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:Note>Bestellt wurden 5 kg Schweinesteak. Mit dieser Rechnung werden nur die bereits gelieferten Steaks berechnet. Die noch offenen 4 kg Schweinesteak werden separat geliefert und berechnet.</cbc:Note>
|
|
||||||
<cbc:InvoicedQuantity unitCode="KGM">1</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">5.5</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Description>Schweinesteak aus Deutschland</cbc:Description>
|
|
||||||
<cbc:Name>Schweinesteak</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>SFK5</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4000050986428</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.5</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>3</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">20</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">109.8</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Mineralwasser Medium
|
|
||||||
12 x 1,0l PET
|
|
||||||
</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>GTRWA5</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4000001234561</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.49</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>4</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">20</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">55.46</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Pfand</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>PFA5</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4000001234578</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">2.77</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>471113</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-06-13</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>
|
|
||||||
Rechnung gemäß Bestellung Nr. 2018-471331 vom 01.03.2018.
|
|
||||||
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>#AAK#
|
|
||||||
Es bestehen Rabatt- und Bonusvereinbarungen.
|
|
||||||
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>#REG#Lieferant GmbH
|
|
||||||
Lieferantenstraße 20
|
|
||||||
80333 München
|
|
||||||
Deutschland
|
|
||||||
Geschäftsführer: Hans Muster
|
|
||||||
Handelsregisternummer: H A 123
|
|
||||||
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:OrderReference>
|
|
||||||
<cbc:ID>2018-471331</cbc:ID>
|
|
||||||
</cac:OrderReference>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4000001123452</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Lieferant GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Lieferantenstraße 20</cbc:StreetName>
|
|
||||||
<cbc:CityName>München</cbc:CityName>
|
|
||||||
<cbc:PostalZone>80333</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>201/113/40209</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>FC</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE123456789</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Lieferant GmbH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>GE2020211</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Kunden AG Mitte</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Kundenstraße 15</cbc:StreetName>
|
|
||||||
<cbc:CityName>Frankfurt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>69876</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Kunden AG Mitte</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-06-03</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>Zahlbar innerhalb 30 Tagen netto bis 04.07.2018, 3% Skonto innerhalb 10 Tagen bis 15.06.2018</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">1.54</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">22</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">1.54</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">22</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">22</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">23.54</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">23.54</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:Note>Bestellt wurden 5 kg Schweinesteak. Mit dieser Rechnung werden die nachgelieferten 4 kg Steaks berechnet.</cbc:Note>
|
|
||||||
<cbc:InvoicedQuantity unitCode="KGM">4</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">22</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Description>Schweinesteak aus Deutschland</cbc:Description>
|
|
||||||
<cbc:Name>Schweinesteak</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>SFK5</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4000050986428</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.5</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>471102</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-03-05</cbc:IssueDate>
|
|
||||||
<cbc:DueDate>2018-04-04</cbc:DueDate>
|
|
||||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>Rechnung gemäß Betriebskostenrechnung vom 21.11.2011.</cbc:Note>
|
|
||||||
<cbc:Note>#REG#Grundbesitz GmbH & Co.
|
|
||||||
Musterstraße 42
|
|
||||||
75645 Frankfurt
|
|
||||||
Deutschland
|
|
||||||
Geschäftsführer: Hans Muster
|
|
||||||
Handelsregisternummer: H A 123
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:InvoicePeriod>
|
|
||||||
<cbc:StartDate>2010-01-01</cbc:StartDate>
|
|
||||||
<cbc:EndDate>2010-12-31</cbc:EndDate>
|
|
||||||
</cac:InvoicePeriod>
|
|
||||||
<cac:AdditionalDocumentReference>
|
|
||||||
<cbc:ID>Abrechnung 2010</cbc:ID>
|
|
||||||
<cbc:DocumentDescription>Betriebskostenabrechnung</cbc:DocumentDescription>
|
|
||||||
<cac:Attachment>
|
|
||||||
<cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf" filename="Betriebskostenabrechnung.pdf"></cbc:EmbeddedDocumentBinaryObject>
|
|
||||||
</cac:Attachment>
|
|
||||||
</cac:AdditionalDocumentReference>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Grundbesitz GmbH & Co.</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Musterstraße 42</cbc:StreetName>
|
|
||||||
<cbc:CityName>Frankfurt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>75645</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>201/113/40209</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>FC</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE136695976</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Grundbesitz GmbH & Co.</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Beispielmieter GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Verwaltung Straße 40</cbc:StreetName>
|
|
||||||
<cbc:CityName>Musterstadt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12345</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Beispielmieter GmbH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cac:DeliveryLocation>
|
|
||||||
<cac:Address>
|
|
||||||
<cbc:StreetName>Verwaltung Straße 40</cbc:StreetName>
|
|
||||||
<cbc:AdditionalStreetName>Einheit: 5.OG rechts</cbc:AdditionalStreetName>
|
|
||||||
<cbc:CityName>Musterstadt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12345</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:Address>
|
|
||||||
</cac:DeliveryLocation>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">2923.55</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">15387.08</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">2923.55</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">15387.08</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">15387.08</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">18310.63</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">17808</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">502.63</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">15387.08</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Abrechnungskreis 1</cbc:Name>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4012345001235</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">15387.08</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,159 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>471102</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-03-05</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>Rechnung gemäß Bestellung vom 01.03.2018.</cbc:Note>
|
|
||||||
<cbc:Note>#REG#Lieferant GmbH
|
|
||||||
Lieferantenstraße 20
|
|
||||||
80333 München
|
|
||||||
Deutschland
|
|
||||||
Geschäftsführer: Hans Muster
|
|
||||||
Handelsregisternummer: H A 123
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4000001123452</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Lieferant GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Lieferantenstraße 20</cbc:StreetName>
|
|
||||||
<cbc:CityName>München</cbc:CityName>
|
|
||||||
<cbc:PostalZone>80333</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>201/113/40209</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>FC</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE123456789</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Lieferant GmbH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>GE2020211</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Kunden AG Mitte</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Kundenstraße 15</cbc:StreetName>
|
|
||||||
<cbc:CityName>Frankfurt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>69876</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Kunden AG Mitte</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-03-05</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>Zahlbar innerhalb 30 Tagen netto bis 04.04.2018, 3% Skonto innerhalb 10 Tagen bis 15.03.2018</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">56.87</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">275</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">19.25</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">198</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">37.62</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">473</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">473</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">529.87</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">0</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">529.87</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">20</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">198</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Trennblätter A4</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>TB100A4</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4012345001235</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">9.9</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">50</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">275</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Joghurt Banane</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>ARNR2</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4000050986428</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.5</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,157 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>471102</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-03-05</cbc:IssueDate>
|
|
||||||
<cbc:DueDate>2019-03-05</cbc:DueDate>
|
|
||||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>Rechnung gemäß Bestellung vom 01.03.2018.</cbc:Note>
|
|
||||||
<cbc:Note>#REG#Lieferant GmbH
|
|
||||||
Lieferantenstraße 20
|
|
||||||
80333 München
|
|
||||||
Deutschland
|
|
||||||
Geschäftsführer: Hans Muster
|
|
||||||
Handelsregisternummer: H A 123
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4000001123452</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Lieferant GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Lieferantenstraße 20</cbc:StreetName>
|
|
||||||
<cbc:CityName>München</cbc:CityName>
|
|
||||||
<cbc:PostalZone>80333</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>201/113/40209</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>FC</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE123456789</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Lieferant GmbH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>GE2020211</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Kunden AG Mitte</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Kundenstraße 15</cbc:StreetName>
|
|
||||||
<cbc:CityName>Frankfurt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>69876</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Kunden AG Mitte</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-03-05</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">56.87</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">275</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">19.25</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">198</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">37.62</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">473</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">473</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">529.87</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">0</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">529.87</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">20</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">198</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Trennblätter A4</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>TB100A4</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4012345001235</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">9.9</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">50</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">275</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Joghurt Banane</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>ARNR2</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4000050986428</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.5</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,156 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>471102</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-03-05</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>Rechnung gemäß Bestellung vom 01.03.2018.</cbc:Note>
|
|
||||||
<cbc:Note>#REG#Lieferant GmbH
|
|
||||||
Lieferantenstraße 20
|
|
||||||
80333 München
|
|
||||||
Deutschland
|
|
||||||
Geschäftsführer: Hans Muster
|
|
||||||
Handelsregisternummer: H A 123
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4000001123452</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Lieferant GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Lieferantenstraße 20</cbc:StreetName>
|
|
||||||
<cbc:CityName>München</cbc:CityName>
|
|
||||||
<cbc:PostalZone>80333</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>201/113/40209</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>FC</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE123456789</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Lieferant GmbH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>GE2020211</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Kunden AG Mitte</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Kundenstraße 15</cbc:StreetName>
|
|
||||||
<cbc:CityName>Frankfurt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>69876</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Kunden AG Mitte</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-03-05</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">56.87</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">275</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">19.25</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">198</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">37.62</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">473</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">473</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">529.87</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">1059.74</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">-529.87</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">20</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">198</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Trennblätter A4</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>TB100A4</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4012345001235</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">9.9</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">50</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">275</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Joghurt Banane</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>ARNR2</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4000050986428</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.5</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,152 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>181301674</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-04-25</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>204</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>Rapport-Nr.: 42389 vom 08.03.2018
|
|
||||||
|
|
||||||
Im 2. OG BT1 Besprechungsraum eine Beamerhalterung an die Decke montiert. Dafür eine Deckenplatte ausgesägt. Beamerhalterung zur Montage auseinander gebaut. Ein Stromkabel für den Beamer, ein HDMI Kabel und ein VGA Kabel durch die Halterung gezogen. Beamerhalterung wieder zusammengebaut und Beamer montiert. Beamer verkabelt und ausgerichtet. Decke geschlossen.</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cbc:AccountingCost>420</cbc:AccountingCost>
|
|
||||||
<cbc:BuyerReference>Liselotte Müller-Lüdenscheidt</cbc:BuyerReference>
|
|
||||||
<cac:OrderReference>
|
|
||||||
<cbc:ID></cbc:ID>
|
|
||||||
<cbc:SalesOrderID>per Mail vom 19.02.2018</cbc:SalesOrderID>
|
|
||||||
</cac:OrderReference>
|
|
||||||
<cac:AdditionalDocumentReference>
|
|
||||||
<cbc:ID>13130162</cbc:ID>
|
|
||||||
</cac:AdditionalDocumentReference>
|
|
||||||
<cac:AdditionalDocumentReference>
|
|
||||||
<cbc:ID>42389</cbc:ID>
|
|
||||||
</cac:AdditionalDocumentReference>
|
|
||||||
<cac:ProjectReference>
|
|
||||||
<cbc:ID>13130162</cbc:ID>
|
|
||||||
</cac:ProjectReference>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>549910</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>ELEKTRON Industrieservice GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Erfurter Strasse 13</cbc:StreetName>
|
|
||||||
<cbc:CityName>Demoort</cbc:CityName>
|
|
||||||
<cbc:PostalZone>74465</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE136695976</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>ELEKTRON Industrieservice GmbH</cbc:RegistrationName>
|
|
||||||
<cbc:CompanyLegalForm>Geschäftsführer Egon Schrempp
|
|
||||||
Amtsgericht Stuttgart HRB 1234</cbc:CompanyLegalForm>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>16259</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>ConsultingService GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Musterstr. 18</cbc:StreetName>
|
|
||||||
<cbc:CityName>Karlsruhe</cbc:CityName>
|
|
||||||
<cbc:PostalZone>76138</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>ConsultingService GmbH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-03-06</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentMeans>
|
|
||||||
<cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
|
|
||||||
<cbc:PaymentID>Rechnung 181301674</cbc:PaymentID>
|
|
||||||
<cac:PayeeFinancialAccount>
|
|
||||||
<cbc:ID>DE91100000000123456789</cbc:ID>
|
|
||||||
</cac:PayeeFinancialAccount>
|
|
||||||
</cac:PaymentMeans>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>Zahlbar sofort rein netto</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">47.9</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">252.1</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">47.9</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">252.1</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">252.1</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">300</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">0</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">300</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>01</cbc:ID>
|
|
||||||
<cbc:Note>01 Beamermontage
|
|
||||||
Für die doppelte Verlegung, falls erforderlich.</cbc:Note>
|
|
||||||
<cbc:InvoicedQuantity unitCode="HUR">3</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">129.6</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>TGA Obermonteur/Monteur</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">43.2</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>02</cbc:ID>
|
|
||||||
<cbc:Note>02 Außerhalb Angebot</cbc:Note>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">1</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">122.5</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Beamer-Deckenhalterung</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">122.5</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,243 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>9314110911/00/M/00/N</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-10-01</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>387</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>#REG#MUSTER-Autovermietung GMBH
|
|
||||||
Musterstr. 99
|
|
||||||
99199 MUSTERHAUSEN
|
|
||||||
Geschäftsführung:
|
|
||||||
Maxima Musterfrau
|
|
||||||
USt-IdNr: DE136695976
|
|
||||||
Telefon: +49 711-50885524
|
|
||||||
www.musterlieferant.de
|
|
||||||
HRB Nr. 372876
|
|
||||||
Amtsgericht Musterstadt
|
|
||||||
GLN 4304171000002
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Bei Rückfragen:
|
|
||||||
Telefon: +49 711-50885524
|
|
||||||
E-Mail : info@muster-autovermietung.de
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Übergabe am 29.09.2018/ 10:35
|
|
||||||
Ort: Frankfurt a. M.
|
|
||||||
km: 17791
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Rückgabe am 01.10.2018/ 10:19
|
|
||||||
Ort: Frankfurt a. M.
|
|
||||||
km: 18664
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Übernahme: Frankfurt
|
|
||||||
Datum: 01.10.2018
|
|
||||||
Zeit: 10:19
|
|
||||||
km/out: 177791
|
|
||||||
km/in: 18664
|
|
||||||
km gefahren: 873
|
|
||||||
Kennzeichen: M-MM 0000
|
|
||||||
CO2: 150
|
|
||||||
Bruttolistenpreis: 68300
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:OrderReference>
|
|
||||||
<cbc:ID>B123456789</cbc:ID>
|
|
||||||
</cac:OrderReference>
|
|
||||||
<cac:DespatchDocumentReference>
|
|
||||||
<cbc:ID>L87654321012345</cbc:ID>
|
|
||||||
</cac:DespatchDocumentReference>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cbc:EndpointID schemeID="0088">1234567890128</cbc:EndpointID>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4333741000005</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>MUSTER-Autovermietung</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Musterstr. 99</cbc:StreetName>
|
|
||||||
<cbc:CityName>MUSTERHAUSEN</cbc:CityName>
|
|
||||||
<cbc:PostalZone>99199</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE136695976</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>MUSTER-Autovermietung</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cbc:EndpointID schemeID="9958">04 0 11 000 - 12345 12345 - 35</cbc:EndpointID>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>9314110911</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>MUSTER-KUNDE GMBH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>KUNDENWEG 88</cbc:StreetName>
|
|
||||||
<cbc:CityName>DUESSELDORF</cbc:CityName>
|
|
||||||
<cbc:PostalZone>40235</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>MUSTER-KUNDE GMBH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-09-29</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>
|
|
||||||
Die Leistung wurde erbracht im Zeitraum zwischen Übergabe und Rückgabe. Der Rechnungsbetrag wird über Ihre MasterCard-Kreditkarte abgebucht. Dies ist keine Aufforderung zur Zahlung. Rechnung für Ihre Unterlagen.
|
|
||||||
</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">54.44</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">286.52</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">54.44</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">286.52</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">286.52</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">340.96</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">0</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">340.96</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="DAY">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">173.1</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Miettage</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
<cac:AdditionalItemProperty>
|
|
||||||
<cbc:Name>Fahrzeug-Kennzeichen</cbc:Name>
|
|
||||||
<cbc:Value>M-MM 0000</cbc:Value>
|
|
||||||
</cac:AdditionalItemProperty>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">86.55</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:Note>Inklusiv-Kilometer waren: 873</cbc:Note>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">10.08</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Navigationssystem - Garantie</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.04</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>3</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">46.2</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Vollkasko</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">23.1</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>4</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">31.1</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>minimale Selbstbeteiligung</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">15.55</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>5</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">15.96</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Personen-Unfallversicherung</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">7.98</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>6</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">10.08</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Choice Upgrade</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.04</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,165 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>471102</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-03-05</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>389</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>Rechnung gemäß Bestellung vom 01.03.2018.</cbc:Note>
|
|
||||||
<cbc:Note>#REG#Lieferant GmbH
|
|
||||||
Lieferantenstraße 20
|
|
||||||
80333 München
|
|
||||||
Deutschland
|
|
||||||
Geschäftsführer: Hans Muster
|
|
||||||
Handelsregisternummer: H A 123
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4000001123452</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Lieferant GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Lieferantenstraße 20</cbc:StreetName>
|
|
||||||
<cbc:CityName>München</cbc:CityName>
|
|
||||||
<cbc:PostalZone>80333</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>201/113/40209</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>FC</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE123456789</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Lieferant GmbH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>GE2020211</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Kunden AG Mitte</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Kundenstraße 15</cbc:StreetName>
|
|
||||||
<cbc:CityName>Frankfurt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>69876</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE136695976</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Kunden AG Mitte</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-03-05</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>Der Betrag wird ihrem Kundenkonto gutgeschrieben und mit der nächsten Rechnung verrechnet.</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">56.87</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">275</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">19.25</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">198</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">37.62</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">473</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">473</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">529.87</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">0</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">529.87</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">20</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">198</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Trennblätter A4</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>TB100A4</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4012345001235</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">9.9</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">50</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">275</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Joghurt Banane</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>ARNR2</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4000050986428</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.5</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,149 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>01.234.567.8-2018-1</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-12-06</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>575</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>Allgemeine Haftpflichtversicherung VSNR: 01.234.567.8
|
|
||||||
(Bei Schriftwechsel und Zahlung bitte angeben.)
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>#REG#MVM Musterhafter
|
|
||||||
Versicherungsverein Musterstadt a.G.
|
|
||||||
Versicherungsbüro
|
|
||||||
Muster
|
|
||||||
Musterstr. 12
|
|
||||||
12345 Musterstadt
|
|
||||||
Tel.: 0123/45678
|
|
||||||
Fax.: 01231/99 45678
|
|
||||||
Mo.-Fr. 08.30 - 12.30 Uhr
|
|
||||||
Mo.-Fr. 14.00 - 17.00 Uhr
|
|
||||||
Mo-Fr 8.00-20.00 Uhr, Sa 8.00-14.00 Uhr
|
|
||||||
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>549910</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>MVM Musterhafter
|
|
||||||
Versicherungsverein Musterstadt a.G.
|
|
||||||
</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Musterstr. 12</cbc:StreetName>
|
|
||||||
<cbc:CityName>Musterstadt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12345</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE234567891</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>MVM Musterhafter
|
|
||||||
Versicherungsverein Musterstadt a.G.
|
|
||||||
</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Herrn
|
|
||||||
Max Mustermann
|
|
||||||
</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Musterstr. 11</cbc:StreetName>
|
|
||||||
<cbc:CityName>Bad Musterhausen</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12346</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Herrn
|
|
||||||
Max Mustermann
|
|
||||||
</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-12-06</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>Einen zu zahlenden Beitrag überweisen Sie bitte auf folgende Bankverbindung: IBAN DE75123456780000001234, BIC WELADED1MST, Sparkasse Musterstadt Ost.
|
|
||||||
Einfacher für Sie ist es, wenn Sie uns ein SEPA-Lastschriftmandat erteilen. Wir würden dann zu der Fälligkeit 06.12.2018 den Beitrag von dem uns bekannten Konto abbuchen. In diesem Fall würden Sie, sofern sich keine Beitragsänderung ergibt, zukünftig keine Zwischenrechnung erhalten.
|
|
||||||
|
|
||||||
Beitragsgutschriften aus Ihrem Vertrag erstatten wir per Scheck.
|
|
||||||
|
|
||||||
</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">50</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>E</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cbc:TaxExemptionReason>Umsatzsteuerbefreit nach §4 Nr. 10a UStG</cbc:TaxExemptionReason>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">50</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">50</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">50</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">0</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">50</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">50</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Privathaftpflicht</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>E</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">50</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">0</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Lebensgefährte/in zur Privathaftpflicht</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>E</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">0</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,211 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>47110818</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-10-31</cbc:IssueDate>
|
|
||||||
<cbc:DueDate>2018-11-30</cbc:DueDate>
|
|
||||||
<cbc:InvoiceTypeCode>389</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>#REG#Mitglieder der Geschäftsleitung:
|
|
||||||
Geschäftsführerin: Johanna Musterfrau
|
|
||||||
Prokuristin: Isabell Herrlich
|
|
||||||
HRB Berlin 13086</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:InvoicePeriod>
|
|
||||||
<cbc:StartDate>2018-10-01</cbc:StartDate>
|
|
||||||
<cbc:EndDate>2018-10-31</cbc:EndDate>
|
|
||||||
</cac:InvoicePeriod>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>12345676</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Global Supplies Ltd. </cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>153 Victoria Street</cbc:StreetName>
|
|
||||||
<cbc:CityName>London</cbc:CityName>
|
|
||||||
<cbc:PostalZone>SW1B 3BN</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>GB</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>GB123456789</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Global Supplies Ltd. </cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>75969813</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Metallbau Leipzig GmbH & Co. KG</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Pappelallee 15</cbc:StreetName>
|
|
||||||
<cbc:AdditionalStreetName>Hof 3</cbc:AdditionalStreetName>
|
|
||||||
<cbc:CityName>Leipzig</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12345</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE123456789</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Metallbau Leipzig GmbH & Co. KG</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:PayeeParty>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0060">432156789</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Global Supplies Financial Services</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
</cac:PayeeParty>
|
|
||||||
<cac:TaxRepresentativeParty>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Global Supplies Financial Services</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Friedrichstraße 165</cbc:StreetName>
|
|
||||||
<cbc:CityName>Berlin</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12345</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE987654321</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
</cac:TaxRepresentativeParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cac:DeliveryLocation>
|
|
||||||
<cbc:ID>75969815</cbc:ID>
|
|
||||||
<cac:Address>
|
|
||||||
<cbc:StreetName>Eichenpromenade 37</cbc:StreetName>
|
|
||||||
<cbc:AdditionalStreetName>Tor 1</cbc:AdditionalStreetName>
|
|
||||||
<cbc:CityName>Metallstadt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12347</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:Address>
|
|
||||||
</cac:DeliveryLocation>
|
|
||||||
<cac:DeliveryParty>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Metallbau Leipzig GmbH & Co. KG</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
</cac:DeliveryParty>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentMeans>
|
|
||||||
<cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
|
|
||||||
<cac:PayeeFinancialAccount>
|
|
||||||
<cbc:ID>DE12 1234 4321 9876 00</cbc:ID>
|
|
||||||
<cbc:Name>Global Supplies Financial Services</cbc:Name>
|
|
||||||
</cac:PayeeFinancialAccount>
|
|
||||||
</cac:PaymentMeans>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">2000</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>K</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cbc:TaxExemptionReason>Mehrwertsteuerbefreiung für die innergemeinschaftliche Lieferung von Waren und Dienstleistungen in der EU</cbc:TaxExemptionReason>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">2000</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">2000</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">2000</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">2000</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">10</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">1000</cbc:LineExtensionAmount>
|
|
||||||
<cac:InvoicePeriod>
|
|
||||||
<cbc:StartDate>2018-10-01</cbc:StartDate>
|
|
||||||
<cbc:EndDate>2018-10-31</cbc:EndDate>
|
|
||||||
</cac:InvoicePeriod>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Stahlcoil</cbc:Name>
|
|
||||||
<cac:BuyersItemIdentification>
|
|
||||||
<cbc:ID>Toolbox 0815</cbc:ID>
|
|
||||||
</cac:BuyersItemIdentification>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>CO-123/V2A</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:OriginCountry>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:OriginCountry>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>K</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">100</cbc:PriceAmount>
|
|
||||||
<cbc:BaseQuantity unitCode="H87">1</cbc:BaseQuantity>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">10</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">1000</cbc:LineExtensionAmount>
|
|
||||||
<cac:InvoicePeriod>
|
|
||||||
<cbc:StartDate>2018-10-01</cbc:StartDate>
|
|
||||||
<cbc:EndDate>2018-10-31</cbc:EndDate>
|
|
||||||
</cac:InvoicePeriod>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Stoßfänger</cbc:Name>
|
|
||||||
<cac:BuyersItemIdentification>
|
|
||||||
<cbc:ID>BR-4529-ZF</cbc:ID>
|
|
||||||
</cac:BuyersItemIdentification>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>IM-712/A2A</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:OriginCountry>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:OriginCountry>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>K</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">100</cbc:PriceAmount>
|
|
||||||
<cbc:BaseQuantity unitCode="H87">1</cbc:BaseQuantity>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,149 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>00.123.456.7-2018-1</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-03-11</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>575</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>Beitragsrechnung zur Kraftfahrtversicherung Nr. 00.123.456.7</cbc:Note>
|
|
||||||
<cbc:Note>#REG#MVM Musterhafter
|
|
||||||
Versicherungsverein Musterstadt a.G.
|
|
||||||
Versicherungsbüro
|
|
||||||
Muster
|
|
||||||
Musterstr. 12
|
|
||||||
12345 Musterstadt
|
|
||||||
Tel.: 0123/45678
|
|
||||||
Fax.: 01231/99 45678
|
|
||||||
Mo.-Fr. 08.30 - 12.30 Uhr
|
|
||||||
Mo.-Fr. 14.00 - 17.00 Uhr
|
|
||||||
Mo-Fr 8.00-20.00 Uhr, Sa 8.00-14.00 Uhr
|
|
||||||
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>549910</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>MVM Musterhafter
|
|
||||||
Versicherungsverein Musterstadt a.G.
|
|
||||||
</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Musterstr. 12</cbc:StreetName>
|
|
||||||
<cbc:CityName>Musterstadt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12345</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE234567891</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>MVM Musterhafter
|
|
||||||
Versicherungsverein Musterstadt a.G.
|
|
||||||
</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Herrn
|
|
||||||
Max Mustermann
|
|
||||||
</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Musterstr. 11</cbc:StreetName>
|
|
||||||
<cbc:CityName>Bad Musterhausen</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12346</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Herrn
|
|
||||||
Max Mustermann
|
|
||||||
</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-06-30</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>Einen zu zahlenden Beitrag überweisen Sie bitte auf folgende Bankverbindung:
|
|
||||||
DE75123456780000001234, BIC WELADED1MST, Sparkasse Musterstadt Ost. Einfacher für Sie ist es, wenn Sie uns ein SEPA-Lastschriftmandat erteilen. Wir würden dann zu den Fälligkeiten 01.07.2018, 01.10.2018 den jeweiligen Beitrag von dem uns bekannten Konto abbuchen. In diesem Fall würden Sie, sofern sich keine Beitragsänderung ergibt, zukünftig keine Zwischenrechnung erhalten.
|
|
||||||
Beitragsgutschriften aus Ihrem Vertrag erstatten wir per Scheck.
|
|
||||||
Rabattservice: Wenn Sie im laufenden Kalenderjahr nur einen Kfz-Haftpflichtschaden oder nur einen Vollkaskoschaden melden, gilt für Sie der Rabattretter.
|
|
||||||
|
|
||||||
</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">220</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>E</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cbc:TaxExemptionReason>Umsatzsteuerbefreit nach $4 Nr. 10a UStG</cbc:TaxExemptionReason>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">220</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">220</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">220</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">-220</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">440</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">80</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Description>Enthält 19% Versicherungssteuer = 12,7726 €</cbc:Description>
|
|
||||||
<cbc:Name>Kfz-Haftpflicht SF25 (30 %) Typkl. 18 Regio R9</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>E</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">67.2244</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">140</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Description>Enthält 19% Versicherungssteuer = 22,3529 €</cbc:Description>
|
|
||||||
<cbc:Name>Vollkasko SF25 (30 %) Typkl. 21 Regio R4</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>E</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">117.6471</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,241 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>9314110911/00/M/00/N</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-10-01</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>387</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>#REG#MUSTER-Autovermietung GMBH
|
|
||||||
Musterstr. 99
|
|
||||||
99199 MUSTERHAUSEN
|
|
||||||
Geschäftsführung:
|
|
||||||
Maxima Musterfrau
|
|
||||||
USt-IdNr: DE136695976
|
|
||||||
Telefon: +49 711-50885524
|
|
||||||
www.musterlieferant.de
|
|
||||||
HRB Nr. 372876
|
|
||||||
Amtsgericht Musterstadt
|
|
||||||
GLN 4304171000002
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Bei Rückfragen:
|
|
||||||
Telefon: +49 711-50885524
|
|
||||||
E-Mail : info@muster-autovermietung.de
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Übergabe am 29.09.2018/ 10:35
|
|
||||||
Ort: Frankfurt a. M.
|
|
||||||
km: 17791
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Rückgabe am 01.10.2018/ 10:19
|
|
||||||
Ort: Frankfurt a. M.
|
|
||||||
km: 18664
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Übernahme: Frankfurt
|
|
||||||
Datum: 01.10.2018
|
|
||||||
Zeit: 10:19
|
|
||||||
km/out: 177791
|
|
||||||
km/in: 18664
|
|
||||||
km gefahren: 873
|
|
||||||
Kennzeichen: M-MM 0000
|
|
||||||
CO2: 150
|
|
||||||
Bruttolistenpreis: 68300
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:OrderReference>
|
|
||||||
<cbc:ID>B123456789</cbc:ID>
|
|
||||||
</cac:OrderReference>
|
|
||||||
<cac:DespatchDocumentReference>
|
|
||||||
<cbc:ID>L87654321012345</cbc:ID>
|
|
||||||
</cac:DespatchDocumentReference>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4333741000005</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>MUSTER-Autovermietung</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Musterstr. 99</cbc:StreetName>
|
|
||||||
<cbc:CityName>MUSTERHAUSEN</cbc:CityName>
|
|
||||||
<cbc:PostalZone>99199</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE136695976</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>MUSTER-Autovermietung</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>9314110911</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>MUSTER-KUNDE GMBH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>KUNDENWEG 88</cbc:StreetName>
|
|
||||||
<cbc:CityName>DUESSELDORF</cbc:CityName>
|
|
||||||
<cbc:PostalZone>40235</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>MUSTER-KUNDE GMBH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-09-29</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>
|
|
||||||
Die Leistung wurde erbracht im Zeitraum zwischen Übergabe und Rückgabe. Der Rechnungsbetrag wird über Ihre MasterCard-Kreditkarte abgebucht. Dies ist keine Aufforderung zur Zahlung. Rechnung für Ihre Unterlagen.
|
|
||||||
</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">54.44</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">286.52</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">54.44</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">286.52</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">286.52</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">340.96</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">0</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">340.96</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="DAY">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">173.1</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Miettage</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
<cac:AdditionalItemProperty>
|
|
||||||
<cbc:Name>Fahrzeug-Kennzeichen</cbc:Name>
|
|
||||||
<cbc:Value>M-MM 0000</cbc:Value>
|
|
||||||
</cac:AdditionalItemProperty>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">86.55</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:Note>Inklusiv-Kilometer waren: 873</cbc:Note>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">10.08</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Navigationssystem - Garantie</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.04</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>3</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">46.2</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Vollkasko</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">23.1</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>4</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">31.1</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>minimale Selbstbeteiligung</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">15.55</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>5</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">15.96</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Personen-Unfallversicherung</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">7.98</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>6</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">10.08</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Choice Upgrade</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.04</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,120 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>E2018092011804</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-09-20</cbc:IssueDate>
|
|
||||||
<cbc:DueDate>2018-10-03</cbc:DueDate>
|
|
||||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>#ADU#Bei Schriftwechsel bitte Ihre Kundennummer 35040727 und Belegnummer 2018092011804 angeben</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cbc:BuyerReference>05 158 004 - 11023 - 45</cbc:BuyerReference>
|
|
||||||
<cac:OrderReference>
|
|
||||||
<cbc:ID>2018092011804</cbc:ID>
|
|
||||||
</cac:OrderReference>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>549910</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Verkehrsbetriebe GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Musterstraße 3</cbc:StreetName>
|
|
||||||
<cbc:CityName>Berlin</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12345</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE123456789</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Verkehrsbetriebe GmbH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
<cac:Contact>
|
|
||||||
<cbc:Name>Torti Mayer</cbc:Name>
|
|
||||||
<cbc:Telephone>+493012345678</cbc:Telephone>
|
|
||||||
<cbc:ElectronicMail>tm@verkehrsbetriebe.de</cbc:ElectronicMail>
|
|
||||||
</cac:Contact>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>Liselotte Müllermann</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Liselotte Müllermann</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Beispielstraße 24</cbc:StreetName>
|
|
||||||
<cbc:CityName>Berlin</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12345</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Liselotte Müllermann</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-09-20</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentMeans>
|
|
||||||
<cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
|
|
||||||
<cac:PayeeFinancialAccount>
|
|
||||||
<cbc:ID>DE12 1234 5678 9012 3456 78</cbc:ID>
|
|
||||||
<cbc:Name>Verkehrsbetriebe GmbH</cbc:Name>
|
|
||||||
</cac:PayeeFinancialAccount>
|
|
||||||
</cac:PaymentMeans>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>Zahlungsbedingungen: Der Rechnungsbetrag wurde bereits beglichen.</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">0.59</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">8.41</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">0.59</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">8.41</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">8.41</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">9</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">9</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>0</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">1</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">8.41</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Description>Gültig ab 20.09.2018 15:39 Uhr bis 20.09.2018 17:39 Uhr Abschnitt: 1/4</cbc:Description>
|
|
||||||
<cbc:Name>4-Fahrten-Karte Berlin AB</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">8.41</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>R18-31</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-10-03</cbc:IssueDate>
|
|
||||||
<cbc:DueDate>2018-11-21</cbc:DueDate>
|
|
||||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Physiotherapeutin</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Musterstraße 12</cbc:StreetName>
|
|
||||||
<cbc:CityName>Beispielstadt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12345</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE136695976</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Physiotherapeutin</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
<cac:Contact>
|
|
||||||
<cbc:Name>Tanja Tinder</cbc:Name>
|
|
||||||
<cbc:Telephone>015119630027</cbc:Telephone>
|
|
||||||
<cbc:ElectronicMail>tanja.tinder@beispiel-provider.de</cbc:ElectronicMail>
|
|
||||||
</cac:Contact>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Liselotte Müller</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Rechnungsstraße 12</cbc:StreetName>
|
|
||||||
<cbc:CityName>Beispielstadt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12345</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Liselotte Müller</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:PaymentMeans>
|
|
||||||
<cbc:PaymentMeansCode>30</cbc:PaymentMeansCode>
|
|
||||||
<cac:PayeeFinancialAccount>
|
|
||||||
<cbc:ID>DE02120300000000202051</cbc:ID>
|
|
||||||
<cbc:Name>Tanja Tinder</cbc:Name>
|
|
||||||
</cac:PayeeFinancialAccount>
|
|
||||||
</cac:PaymentMeans>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>Den Rechnungsbetrag überweisen Sie bitte bis zum 21.11.2018 auf das unten angegebene Konto.</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">380</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>E</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cbc:TaxExemptionReason>Steuerfreie Leistungen nach §4 Nr. 14 UStG</cbc:TaxExemptionReason>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">380</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">380</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">380</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">380</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>0</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">10</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">260</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Description>Behandlungen aufgrund der Verordnung von Frau Dr. Heilerin vom 05.09.2018 an folgenden Terminen: 11.09.2018; 14.09.2018; 19.09.2018; 24.09.2018; 27.09.2018; 11.10.2018; 15.10.2018; 17.10.2018; 22.10.2018; 30.10.2018</cbc:Description>
|
|
||||||
<cbc:Name>Physiotherapie</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>E</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">26</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">10</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">120</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Description>An folgenden Terminen: 11.09.2018; 14.09.2018; 19.09.2018; 24.09.2018; 27.09.2018; 11.10.2018; 15.10.2018; 17.10.2018; 22.10.2018; 30.10.2018</cbc:Description>
|
|
||||||
<cbc:Name>Hausbesuch</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>E</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">12</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,265 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>471102</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-06-05</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>
|
|
||||||
Rechnung gemäß Bestellung Nr. 2018-471331 vom 01.03.2018.
|
|
||||||
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>#AAK#
|
|
||||||
Es bestehen Rabatt- und Bonusvereinbarungen.
|
|
||||||
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>#REG#Lieferant GmbH
|
|
||||||
Lieferantenstraße 20
|
|
||||||
80333 München
|
|
||||||
Deutschland
|
|
||||||
Geschäftsführer: Hans Muster
|
|
||||||
Handelsregisternummer: H A 123
|
|
||||||
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:OrderReference>
|
|
||||||
<cbc:ID>2013-471331</cbc:ID>
|
|
||||||
</cac:OrderReference>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4000001123452</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Lieferant GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Lieferantenstraße 20</cbc:StreetName>
|
|
||||||
<cbc:CityName>München</cbc:CityName>
|
|
||||||
<cbc:PostalZone>80333</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>201/113/40209</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>FC</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE123456789</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Lieferant GmbH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>GE2020211</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Kunden AG Mitte</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Kundenstraße 15</cbc:StreetName>
|
|
||||||
<cbc:CityName>Frankfurt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>69876</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Kunden AG Mitte</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-06-03</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>Zahlbar innerhalb 30 Tagen netto bis 04.07.2018, 3% Skonto innerhalb 10 Tagen bis 15.06.2018</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:AllowanceCharge>
|
|
||||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
|
||||||
<cbc:AllowanceChargeReason>Sondernachlass</cbc:AllowanceChargeReason>
|
|
||||||
<cbc:Amount currencyID="EUR">1</cbc:Amount>
|
|
||||||
<cbc:BaseAmount currencyID="EUR">10</cbc:BaseAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:AllowanceCharge>
|
|
||||||
<cac:AllowanceCharge>
|
|
||||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
|
||||||
<cbc:AllowanceChargeReason>Sondernachlass</cbc:AllowanceChargeReason>
|
|
||||||
<cbc:Amount currencyID="EUR">13.73</cbc:Amount>
|
|
||||||
<cbc:BaseAmount currencyID="EUR">137.3</cbc:BaseAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:AllowanceCharge>
|
|
||||||
<cac:AllowanceCharge>
|
|
||||||
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
|
|
||||||
<cbc:AllowanceChargeReason>Versandkosten</cbc:AllowanceChargeReason>
|
|
||||||
<cbc:Amount currencyID="EUR">5.8</cbc:Amount>
|
|
||||||
<cbc:BaseAmount currencyID="EUR">137.3</cbc:BaseAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:AllowanceCharge>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">21.3</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">129.37</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">9.06</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">64.4</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">12.24</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">202.7</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">193.77</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">215.07</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">14.73</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">5.8</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">50</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">165.07</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:Note>Wir erlauben uns Ihnen folgende Positionen aus der Lieferung Nr. 2018-51112 in Rechnung zu stellen:</cbc:Note>
|
|
||||||
<cbc:InvoicedQuantity unitCode="MTK">3</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">10</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Description>300cm x 100 cm</cbc:Description>
|
|
||||||
<cbc:Name>Kunstrasen grün 3m breit</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>KR3M</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4012345001235</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">3.3333</cbc:PriceAmount>
|
|
||||||
<cac:AllowanceCharge>
|
|
||||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
|
||||||
<cbc:Amount currencyID="EUR">0.6667</cbc:Amount>
|
|
||||||
</cac:AllowanceCharge>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="KGM">5</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">27.5</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Description>aus Deutschland</cbc:Description>
|
|
||||||
<cbc:Name>Schweinesteak</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>SFK5</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4000050986428</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.5</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>3</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">20</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">109.8</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Mineralwasser Medium 12 x 1,0l PET
|
|
||||||
</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>GTRWA5</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4000001234561</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.49</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>4</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">20</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">55.4</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Pfand</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>PFA5</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4000001234578</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">2.77</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,243 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>9314110911/00/M/00/N</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-10-01</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>#REG#MUSTER-Autovermietung GMBH
|
|
||||||
Musterstr. 99
|
|
||||||
99199 MUSTERHAUSEN
|
|
||||||
Geschäftsführung:
|
|
||||||
Maxima Musterfrau
|
|
||||||
USt-IdNr: DE136695976
|
|
||||||
Telefon: +49 711-50885524
|
|
||||||
www.musterlieferant.de
|
|
||||||
HRB Nr. 372876
|
|
||||||
Amtsgericht Musterstadt
|
|
||||||
GLN 4304171000002
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Bei Rückfragen:
|
|
||||||
Telefon: +49 711-50885524
|
|
||||||
E-Mail : info@muster-autovermietung.de
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Übergabe am 29.09.2018/ 10:35
|
|
||||||
Ort: Frankfurt a. M.
|
|
||||||
km: 17791
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Rückgabe am 01.10.2018/ 10:19
|
|
||||||
Ort: Frankfurt a. M.
|
|
||||||
km: 18664
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Übernahme: Frankfurt
|
|
||||||
Datum: 01.10.2018
|
|
||||||
Zeit: 10:19
|
|
||||||
km/out: 177791
|
|
||||||
km/in: 18664
|
|
||||||
km gefahren: 873
|
|
||||||
Kennzeichen: M-MM 0000
|
|
||||||
CO2: 150
|
|
||||||
Bruttolistenpreis: 68300
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:OrderReference>
|
|
||||||
<cbc:ID>B123456789</cbc:ID>
|
|
||||||
</cac:OrderReference>
|
|
||||||
<cac:DespatchDocumentReference>
|
|
||||||
<cbc:ID>L87654321012345</cbc:ID>
|
|
||||||
</cac:DespatchDocumentReference>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cbc:EndpointID schemeID="0088">1234567890128</cbc:EndpointID>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4333741000005</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>MUSTER-Autovermietung</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Musterstr. 99</cbc:StreetName>
|
|
||||||
<cbc:CityName>MUSTERHAUSEN</cbc:CityName>
|
|
||||||
<cbc:PostalZone>99199</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE136695976</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>MUSTER-Autovermietung</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cbc:EndpointID schemeID="9958">04 0 11 000 - 12345 12345 - 35</cbc:EndpointID>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>9314110911</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>MUSTER-KUNDE GMBH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>KUNDENWEG 88</cbc:StreetName>
|
|
||||||
<cbc:CityName>DUESSELDORF</cbc:CityName>
|
|
||||||
<cbc:PostalZone>40235</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>MUSTER-KUNDE GMBH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-09-29</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>
|
|
||||||
Die Leistung wurde erbracht im Zeitraum zwischen Übergabe und Rückgabe. Der Rechnungsbetrag wird über Ihre MasterCard-Kreditkarte abgebucht. Dies ist keine Aufforderung zur Zahlung. Rechnung für Ihre Unterlagen.
|
|
||||||
</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">54.44</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">286.52</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">54.44</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">286.52</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">286.52</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">340.96</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">0</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">340.96</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="DAY">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">173.1</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Miettage</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
<cac:AdditionalItemProperty>
|
|
||||||
<cbc:Name>Fahrzeug-Kennzeichen</cbc:Name>
|
|
||||||
<cbc:Value>M-MM 0000</cbc:Value>
|
|
||||||
</cac:AdditionalItemProperty>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">86.55</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:Note>Inklusiv-Kilometer waren: 873</cbc:Note>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">10.08</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Navigationssystem - Garantie</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.04</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>3</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">46.2</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Vollkasko</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">23.1</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>4</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">31.1</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>minimale Selbstbeteiligung</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">15.55</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>5</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">15.96</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Personen-Unfallversicherung</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">7.98</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>6</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">10.08</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Choice Upgrade</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.04</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,236 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>RK21012345</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-09-16</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>384</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>#AAK#Es bestehen Rabatt- oder Bonusvereinbarungen.</cbc:Note>
|
|
||||||
<cbc:Note>#REG#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
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Bei Rückfragen:
|
|
||||||
Telefon: +49 932 431 500
|
|
||||||
E-Mail : max.muster@musterlieferant.de
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Ursprungsbeleg-Nr : R87654321012345
|
|
||||||
Reklamationsnummer : REKLA-2018-235
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>Warenempfänger
|
|
||||||
GLN 430417088093
|
|
||||||
MUSTER-MARKT
|
|
||||||
|
|
||||||
HAUPTSTRASSE 44
|
|
||||||
31157 SARSTEDT
|
|
||||||
|
|
||||||
Abteilung : 8211
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:OrderReference>
|
|
||||||
<cbc:ID>B123456789</cbc:ID>
|
|
||||||
</cac:OrderReference>
|
|
||||||
<cac:DespatchDocumentReference>
|
|
||||||
<cbc:ID>L87654321012345</cbc:ID>
|
|
||||||
</cac:DespatchDocumentReference>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4333741000005</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>MUSTERLIEFERANT GMBH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>BAHNHOFSTRASSE 99</cbc:StreetName>
|
|
||||||
<cbc:CityName>MUSTERHAUSEN</cbc:CityName>
|
|
||||||
<cbc:PostalZone>99199</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE123456789</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>MUSTERLIEFERANT GMBH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>009420</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>MUSTER-KUNDE GMBH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>KUNDENWEG 88</cbc:StreetName>
|
|
||||||
<cbc:CityName>DUESSELDORF</cbc:CityName>
|
|
||||||
<cbc:PostalZone>40235</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>MUSTER-KUNDE GMBH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-08-05</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:AllowanceCharge>
|
|
||||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
|
||||||
<cbc:AllowanceChargeReason>Rechnungsrabatt 1 -2,00% Basisbetrag: -5,00, MwSt. % 19,0</cbc:AllowanceChargeReason>
|
|
||||||
<cbc:Amount currencyID="EUR">-0.1</cbc:Amount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:AllowanceCharge>
|
|
||||||
<cac:AllowanceCharge>
|
|
||||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
|
||||||
<cbc:AllowanceChargeReason>Rechnungsrabatt 1 -2,00% Basisbetrag: -2,90, MwSt. % 7,0</cbc:AllowanceChargeReason>
|
|
||||||
<cbc:Amount currencyID="EUR">-0.06</cbc:Amount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:AllowanceCharge>
|
|
||||||
<cac:AllowanceCharge>
|
|
||||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
|
||||||
<cbc:AllowanceChargeReason>Rechnungsrabatt 2 Basisbetrag: -5,00, MwSt. % 19,0</cbc:AllowanceChargeReason>
|
|
||||||
<cbc:Amount currencyID="EUR">-0.05</cbc:Amount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:AllowanceCharge>
|
|
||||||
<cac:AllowanceCharge>
|
|
||||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
|
||||||
<cbc:AllowanceChargeReason>Rechnungsrabatt 2 Basisbetrag: -2,90, MwSt. % 7,0</cbc:AllowanceChargeReason>
|
|
||||||
<cbc:Amount currencyID="EUR">-0.02</cbc:Amount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:AllowanceCharge>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">-1.12</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">-4.85</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">-0.92</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">-2.82</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">-0.2</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">-7.9</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">-7.67</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">-8.79</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">-0.23</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">0</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">-8.79</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">-5</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">-5</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Description>Verpackung: Flasche
|
|
||||||
VKE/Geb: 1
|
|
||||||
</cbc:Description>
|
|
||||||
<cbc:Name>Zitronensäure 100ml</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>ZS997</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4123456000014</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">1</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">-2</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">-2.9</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Description>Verpackung: Karton
|
|
||||||
VKE/Geb: 1
|
|
||||||
|
|
||||||
</cbc:Description>
|
|
||||||
<cbc:Name>Gelierzucker Extra 250g</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>GZ250</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4123456000021</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">1.45</cbc:PriceAmount>
|
|
||||||
<cac:AllowanceCharge>
|
|
||||||
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
|
||||||
<cbc:Amount currencyID="EUR">0.05</cbc:Amount>
|
|
||||||
</cac:AllowanceCharge>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,209 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>280081</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-07-13</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>#REG#Listelotte Müllermann, Kumpelstr. 54, 12345 Berlin
|
|
||||||
Handelsregisternummer: H A 713
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>#AAI#Flug wurde vom Auftraggeber gebucht.
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>#AAI#Reise: Musterreisekostenabrechnung
|
|
||||||
Zweck: Workshop in Nürnberg
|
|
||||||
Land: Deutschland
|
|
||||||
Strecke: Berlin - Berlin
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:InvoicePeriod>
|
|
||||||
<cbc:StartDate>2018-07-09</cbc:StartDate>
|
|
||||||
<cbc:EndDate>2018-07-11</cbc:EndDate>
|
|
||||||
</cac:InvoicePeriod>
|
|
||||||
<cac:AdditionalDocumentReference>
|
|
||||||
<cbc:ID>42389</cbc:ID>
|
|
||||||
</cac:AdditionalDocumentReference>
|
|
||||||
<cac:AdditionalDocumentReference>
|
|
||||||
<cbc:ID>42390</cbc:ID>
|
|
||||||
</cac:AdditionalDocumentReference>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4000001123452</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Lieferant GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Lieferantenstraße 20</cbc:StreetName>
|
|
||||||
<cbc:CityName>München</cbc:CityName>
|
|
||||||
<cbc:PostalZone>80333</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>201/113/40209</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>FC</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE123456789</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Lieferant GmbH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>GE2020211</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Kunden AG Mitte</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Kundenstraße 15</cbc:StreetName>
|
|
||||||
<cbc:CityName>Frankfurt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>69876</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Kunden AG Mitte</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cac:DeliveryLocation>
|
|
||||||
<cac:Address>
|
|
||||||
<cbc:StreetName>Am Bahnhof 42</cbc:StreetName>
|
|
||||||
<cbc:CityName>Nürnberg</cbc:CityName>
|
|
||||||
<cbc:PostalZone>75319</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:Address>
|
|
||||||
</cac:DeliveryLocation>
|
|
||||||
<cac:DeliveryParty>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Musterfirma Nürnberg</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
</cac:DeliveryParty>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>Zahlbar innerhalb 30 Tagen netto bis 12.08.2018, 3% Skonto innerhalb 10 Tagen bis 15.03.2018</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">16.39</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">202.33</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">14.16</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">11.76</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">2.23</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">214.09</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">214.09</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">230.48</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">0</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">230.48</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">158.88</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Übernachtung. 2 Nächte Hotel</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">158.88</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">11.76</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Verpflegung Frühstück</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">11.76</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>3</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">23.36</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Fahrtkosten, Taxi Berlin</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">23.36</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>4</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">20.09</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Fahrtkosten, Taxi Nürnberg</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">20.09</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,174 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>471102</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-03-05</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>Rechnung gemäß Bestellung Nr. 2018-471331 vom 01.03.2018.</cbc:Note>
|
|
||||||
<cbc:Note>#AAK#Es bestehen Rabatt- und Bonusvereinbarungen.</cbc:Note>
|
|
||||||
<cbc:Note>#REG#Lieferant GmbH
|
|
||||||
Lieferantenstraße 20
|
|
||||||
80333 München
|
|
||||||
Deutschland
|
|
||||||
Geschäftsführer: Hans Muster
|
|
||||||
Handelsregisternummer: H A 123
|
|
||||||
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">4000001123452</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="SEPA">DE98ZZZ09999999999</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Lieferant GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Lieferantenstraße 20</cbc:StreetName>
|
|
||||||
<cbc:CityName>München</cbc:CityName>
|
|
||||||
<cbc:PostalZone>80333</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>201/113/40209</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>FC</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE123456789</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Lieferant GmbH</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>GE2020211</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Kunden AG Mitte</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Kundenstraße 15</cbc:StreetName>
|
|
||||||
<cbc:CityName>Frankfurt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>69876</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Kunden AG Mitte</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-03-05</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentMeans>
|
|
||||||
<cbc:PaymentMeansCode>59</cbc:PaymentMeansCode>
|
|
||||||
<cac:PaymentMandate>
|
|
||||||
<cbc:ID>REF A-123</cbc:ID>
|
|
||||||
<cac:PayerFinancialAccount>
|
|
||||||
<cbc:ID>DE21860000000086001055</cbc:ID>
|
|
||||||
</cac:PayerFinancialAccount>
|
|
||||||
</cac:PaymentMandate>
|
|
||||||
</cac:PaymentMeans>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>Der Betrag in Höhe von EUR 529,87 wird am 20.03.2018 von Ihrem Konto per SEPA-Lastschrift eingezogen.
|
|
||||||
</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">56.87</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">275</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">19.25</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">198</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">37.62</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">473</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">473</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">529.87</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">0</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">529.87</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">20</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">198</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Trennblätter A4</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>TB100A4</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4012345001235</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>19</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">9.9</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>2</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="H87">50</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">275</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Name>Joghurt Banane</cbc:Name>
|
|
||||||
<cac:SellersItemIdentification>
|
|
||||||
<cbc:ID>ARNR2</cbc:ID>
|
|
||||||
</cac:SellersItemIdentification>
|
|
||||||
<cac:StandardItemIdentification>
|
|
||||||
<cbc:ID schemeID="0160">4000050986428</cbc:ID>
|
|
||||||
</cac:StandardItemIdentification>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
|
||||||
<cbc:Percent>7</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">5.5</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -1,138 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
|
||||||
<cbc:ID>00.123.456.7-2018-1</cbc:ID>
|
|
||||||
<cbc:IssueDate>2018-04-18</cbc:IssueDate>
|
|
||||||
<cbc:InvoiceTypeCode>575</cbc:InvoiceTypeCode>
|
|
||||||
<cbc:Note>Sachversicherungsvertrag Nr: 00.123.456.7
|
|
||||||
(Bei Schriftwechsel und Zahlung bitte angeben.)
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:Note>#REG#MVM Musterhafter
|
|
||||||
Versicherungsverein Musterstadt a.G.
|
|
||||||
Versicherungsbüro
|
|
||||||
Muster
|
|
||||||
Musterstr. 12
|
|
||||||
12345 Musterstadt
|
|
||||||
Tel.: 0123/45678
|
|
||||||
Fax.: 01231/99 45678
|
|
||||||
Mo.-Fr. 08.30 - 12.30 Uhr
|
|
||||||
Mo.-Fr. 14.00 - 17.00 Uhr
|
|
||||||
Mo-Fr 8.00-20.00 Uhr, Sa 8.00-14.00 Uhr
|
|
||||||
|
|
||||||
</cbc:Note>
|
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
|
||||||
<cac:AccountingSupplierParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID schemeID="0088">1234567890128</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>MVM Musterhafter
|
|
||||||
Versicherungsverein Musterstadt a.G.
|
|
||||||
</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Musterstr. 12</cbc:StreetName>
|
|
||||||
<cbc:CityName>Musterstadt</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12345</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyTaxScheme>
|
|
||||||
<cbc:CompanyID>DE234567891</cbc:CompanyID>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:PartyTaxScheme>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>MVM Musterhafter
|
|
||||||
Versicherungsverein Musterstadt a.G.
|
|
||||||
</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingSupplierParty>
|
|
||||||
<cac:AccountingCustomerParty>
|
|
||||||
<cac:Party>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Herrn
|
|
||||||
Max Mustermann
|
|
||||||
</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
|
||||||
<cbc:StreetName>Musterstr. 11</cbc:StreetName>
|
|
||||||
<cbc:CityName>Bad Musterhausen</cbc:CityName>
|
|
||||||
<cbc:PostalZone>12346</cbc:PostalZone>
|
|
||||||
<cac:Country>
|
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
|
||||||
</cac:Country>
|
|
||||||
</cac:PostalAddress>
|
|
||||||
<cac:PartyLegalEntity>
|
|
||||||
<cbc:RegistrationName>Herrn
|
|
||||||
Max Mustermann
|
|
||||||
</cbc:RegistrationName>
|
|
||||||
</cac:PartyLegalEntity>
|
|
||||||
</cac:Party>
|
|
||||||
</cac:AccountingCustomerParty>
|
|
||||||
<cac:Delivery>
|
|
||||||
<cbc:ActualDeliveryDate>2018-05-21</cbc:ActualDeliveryDate>
|
|
||||||
</cac:Delivery>
|
|
||||||
<cac:PaymentTerms>
|
|
||||||
<cbc:Note>Einen zu zahlenden Beitrag überweisen Sie bitte auf folgende Bankverbindung: IBAN DE75123456780000001234, BIC WELADED1MST, Sparkasse Musterstadt Ost.
|
|
||||||
Einfacher für Sie ist es, wenn Sie uns ein SEPA-Lastschriftmandat erteilen. Wir würden dann zu der Fälligkeit 21.05.2018 den Beitrag von dem uns bekannten Konto abbuchen. In diesem Fall würden Sie, sofern sich keine Beitragsänderung ergibt, zukünftig keine Zwischenrechnung erhalten.
|
|
||||||
Beitragsgutschriften aus Ihrem Vertrag erstatten wir per Scheck.
|
|
||||||
|
|
||||||
</cbc:Note>
|
|
||||||
</cac:PaymentTerms>
|
|
||||||
<cac:TaxTotal>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
|
||||||
<cac:TaxSubtotal>
|
|
||||||
<cbc:TaxableAmount currencyID="EUR">1163.4</cbc:TaxableAmount>
|
|
||||||
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
|
||||||
<cac:TaxCategory>
|
|
||||||
<cbc:ID>E</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cbc:TaxExemptionReason>Umsatzsteuerbefreit nach §4 Nr. 10a UStG</cbc:TaxExemptionReason>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:TaxCategory>
|
|
||||||
</cac:TaxSubtotal>
|
|
||||||
</cac:TaxTotal>
|
|
||||||
<cac:LegalMonetaryTotal>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">1163.4</cbc:LineExtensionAmount>
|
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">1163.4</cbc:TaxExclusiveAmount>
|
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">1163.4</cbc:TaxInclusiveAmount>
|
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
|
||||||
<cbc:PrepaidAmount currencyID="EUR">0</cbc:PrepaidAmount>
|
|
||||||
<cbc:PayableAmount currencyID="EUR">1163.4</cbc:PayableAmount>
|
|
||||||
</cac:LegalMonetaryTotal>
|
|
||||||
<cac:InvoiceLine>
|
|
||||||
<cbc:ID>1</cbc:ID>
|
|
||||||
<cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
|
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">1163.4</cbc:LineExtensionAmount>
|
|
||||||
<cac:Item>
|
|
||||||
<cbc:Description>- Feuerversicherung - Teil A § 2 62.000 MK1914
|
|
||||||
- Leitungswasserversicherung - Teil A § 3 62.000 MK1914
|
|
||||||
- Sturm- und Hagelversicherung - Teil A § 4 Ziff. 2 62.000 MK1914
|
|
||||||
- WohngebäudePlus und zusätzliche Einschlüsse gemäß Antrag
|
|
||||||
- Weitere Elementargefahren - Teil A § 4 Ziff. 3 62.000 MK1914
|
|
||||||
|
|
||||||
Enthält 16,34 % Versicherungssteuer = 163,40 €
|
|
||||||
</cbc:Description>
|
|
||||||
<cbc:Name>Verbundene Wohngebäudeversicherung</cbc:Name>
|
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>E</cbc:ID>
|
|
||||||
<cbc:Percent>0</cbc:Percent>
|
|
||||||
<cac:TaxScheme>
|
|
||||||
<cbc:ID>VAT</cbc:ID>
|
|
||||||
</cac:TaxScheme>
|
|
||||||
</cac:ClassifiedTaxCategory>
|
|
||||||
</cac:Item>
|
|
||||||
<cac:Price>
|
|
||||||
<cbc:PriceAmount currencyID="EUR">1000</cbc:PriceAmount>
|
|
||||||
</cac:Price>
|
|
||||||
</cac:InvoiceLine>
|
|
||||||
</Invoice>
|
|
||||||
@@ -0,0 +1,427 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
based on https://github.com/Tradeshift/tradeshift-ubl-xsd/blob/master/src/test/resources/org/oasis-open/ubl/examples/UBL-CreditNote-2.1-Example.xml
|
||||||
|
but with a UTF8 BOM at the beginning
|
||||||
|
-->
|
||||||
|
<CreditNote xmlns="urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2"
|
||||||
|
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
|
||||||
|
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||||
|
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
|
||||||
|
<cbc:ID>TOSL108</cbc:ID>
|
||||||
|
<cbc:IssueDate>2009-12-15</cbc:IssueDate>
|
||||||
|
<cbc:Note languageID="en">Ordered in our booth at the convention.</cbc:Note>
|
||||||
|
<cbc:DocumentCurrencyCode listID="ISO 4217 Alpha" listAgencyID="6"
|
||||||
|
>EUR</cbc:DocumentCurrencyCode>
|
||||||
|
<cbc:AccountingCost>Project cost code 123</cbc:AccountingCost>
|
||||||
|
<cac:InvoicePeriod>
|
||||||
|
<cbc:StartDate>2009-11-01</cbc:StartDate>
|
||||||
|
<cbc:EndDate>2009-11-30</cbc:EndDate>
|
||||||
|
</cac:InvoicePeriod>
|
||||||
|
<cac:OrderReference>
|
||||||
|
<cbc:ID>123</cbc:ID>
|
||||||
|
</cac:OrderReference>
|
||||||
|
<cac:ContractDocumentReference>
|
||||||
|
<cbc:ID>Contract321</cbc:ID>
|
||||||
|
<cbc:DocumentType>Framework agreement</cbc:DocumentType>
|
||||||
|
</cac:ContractDocumentReference>
|
||||||
|
<cac:AdditionalDocumentReference>
|
||||||
|
<cbc:ID>Doc1</cbc:ID>
|
||||||
|
<cbc:DocumentType>Timesheet</cbc:DocumentType>
|
||||||
|
<cac:Attachment>
|
||||||
|
<cac:ExternalReference>
|
||||||
|
<cbc:URI>http://www.suppliersite.eu/sheet001.html</cbc:URI>
|
||||||
|
</cac:ExternalReference>
|
||||||
|
</cac:Attachment>
|
||||||
|
</cac:AdditionalDocumentReference>
|
||||||
|
<cac:AccountingSupplierParty>
|
||||||
|
<cac:Party>
|
||||||
|
<cbc:EndpointID schemeID="GLN" schemeAgencyID="9">1234567890123</cbc:EndpointID>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="ZZZ">Supp123</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Salescompany ltd.</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PostalAddress>
|
||||||
|
<cbc:ID schemeID="GLN" schemeAgencyID="9">1231412341324</cbc:ID>
|
||||||
|
<cbc:Postbox>5467</cbc:Postbox>
|
||||||
|
<cbc:StreetName>Main street</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Suite 123</cbc:AdditionalStreetName>
|
||||||
|
<cbc:BuildingNumber>1</cbc:BuildingNumber>
|
||||||
|
<cbc:Department>Revenue department</cbc:Department>
|
||||||
|
<cbc:CityName>Big city</cbc:CityName>
|
||||||
|
<cbc:PostalZone>54321</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentityCode>RegionA</cbc:CountrySubentityCode>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode listID="ISO3166-1" listAgencyID="6"
|
||||||
|
>DK</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:PostalAddress>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID schemeID="DKVAT" schemeAgencyID="ZZZ">DK12345</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:RegistrationName>The Sellercompany Incorporated</cbc:RegistrationName>
|
||||||
|
<cbc:CompanyID schemeID="CVR" schemeAgencyID="ZZZ">5402697509</cbc:CompanyID>
|
||||||
|
<cac:RegistrationAddress>
|
||||||
|
<cbc:CityName>Big city</cbc:CityName>
|
||||||
|
<cbc:CountrySubentity>RegionA</cbc:CountrySubentity>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>DK</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:RegistrationAddress>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
<cac:Contact>
|
||||||
|
<cbc:Telephone>4621230</cbc:Telephone>
|
||||||
|
<cbc:Telefax>4621231</cbc:Telefax>
|
||||||
|
<cbc:ElectronicMail>antonio@salescompany.dk</cbc:ElectronicMail>
|
||||||
|
</cac:Contact>
|
||||||
|
<cac:Person>
|
||||||
|
<cbc:FirstName>Antonio</cbc:FirstName>
|
||||||
|
<cbc:FamilyName>M</cbc:FamilyName>
|
||||||
|
<cbc:MiddleName>Salemacher</cbc:MiddleName>
|
||||||
|
<cbc:JobTitle>Sales manager</cbc:JobTitle>
|
||||||
|
</cac:Person>
|
||||||
|
</cac:Party>
|
||||||
|
</cac:AccountingSupplierParty>
|
||||||
|
<cac:AccountingCustomerParty>
|
||||||
|
<cac:Party>
|
||||||
|
<cbc:EndpointID schemeID="GLN" schemeAgencyID="9">1234567987654</cbc:EndpointID>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="ZZZ">345KS5324</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Buyercompany ltd</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PostalAddress>
|
||||||
|
<cbc:ID schemeID="GLN" schemeAgencyID="9">1238764941386</cbc:ID>
|
||||||
|
<cbc:Postbox>123</cbc:Postbox>
|
||||||
|
<cbc:StreetName>Anystreet</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Back door</cbc:AdditionalStreetName>
|
||||||
|
<cbc:BuildingNumber>8</cbc:BuildingNumber>
|
||||||
|
<cbc:Department>Accounting department</cbc:Department>
|
||||||
|
<cbc:CityName>Anytown</cbc:CityName>
|
||||||
|
<cbc:PostalZone>101</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentity>RegionB</cbc:CountrySubentity>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode listID="ISO3166-1" listAgencyID="6"
|
||||||
|
>BE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:PostalAddress>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID schemeID="BEVAT" schemeAgencyID="ZZZ">BE54321</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:RegistrationName>The buyercompany inc.</cbc:RegistrationName>
|
||||||
|
<cbc:CompanyID schemeAgencyID="ZZZ" schemeID="ZZZ">5645342123</cbc:CompanyID>
|
||||||
|
<cac:RegistrationAddress>
|
||||||
|
<cbc:CityName>Mainplace</cbc:CityName>
|
||||||
|
<cbc:CountrySubentity>RegionB</cbc:CountrySubentity>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>BE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:RegistrationAddress>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
<cac:Contact>
|
||||||
|
<cbc:Telephone>5121230</cbc:Telephone>
|
||||||
|
<cbc:Telefax>5121231</cbc:Telefax>
|
||||||
|
<cbc:ElectronicMail>john@buyercompany.eu</cbc:ElectronicMail>
|
||||||
|
</cac:Contact>
|
||||||
|
<cac:Person>
|
||||||
|
<cbc:FirstName>John</cbc:FirstName>
|
||||||
|
<cbc:FamilyName>X</cbc:FamilyName>
|
||||||
|
<cbc:MiddleName>Doe</cbc:MiddleName>
|
||||||
|
<cbc:JobTitle>Purchasing manager</cbc:JobTitle>
|
||||||
|
</cac:Person>
|
||||||
|
</cac:Party>
|
||||||
|
</cac:AccountingCustomerParty>
|
||||||
|
<cac:PayeeParty>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="GLN" schemeAgencyID="9">098740918237</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Ebeneser Scrooge Inc.</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:CompanyID schemeID="UK:CH" schemeAgencyID="ZZZ">6411982340</cbc:CompanyID>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
</cac:PayeeParty>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
|
||||||
|
<cbc:AllowanceChargeReason>Packing cost</cbc:AllowanceChargeReason>
|
||||||
|
<cbc:Amount currencyID="EUR">100</cbc:Amount>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||||
|
<cbc:AllowanceChargeReason>Promotion discount</cbc:AllowanceChargeReason>
|
||||||
|
<cbc:Amount currencyID="EUR">100</cbc:Amount>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
<cac:TaxTotal>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">292.20</cbc:TaxAmount>
|
||||||
|
<cac:TaxSubtotal>
|
||||||
|
<cbc:TaxableAmount currencyID="EUR">1460.5</cbc:TaxableAmount>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">292.1</cbc:TaxAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">S</cbc:ID>
|
||||||
|
<cbc:Percent>20</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:TaxSubtotal>
|
||||||
|
<cac:TaxSubtotal>
|
||||||
|
<cbc:TaxableAmount currencyID="EUR">1</cbc:TaxableAmount>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">0.1</cbc:TaxAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">AA</cbc:ID>
|
||||||
|
<cbc:Percent>10</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:TaxSubtotal>
|
||||||
|
<cac:TaxSubtotal>
|
||||||
|
<cbc:TaxableAmount currencyID="EUR">-25</cbc:TaxableAmount>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">E</cbc:ID>
|
||||||
|
<cbc:Percent>0</cbc:Percent>
|
||||||
|
<cbc:TaxExemptionReasonCode listID="CWA 15577" listAgencyID="ZZZ"
|
||||||
|
>AAM</cbc:TaxExemptionReasonCode>
|
||||||
|
<cbc:TaxExemptionReason>Exempt New Means of Transport</cbc:TaxExemptionReason>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:TaxSubtotal>
|
||||||
|
</cac:TaxTotal>
|
||||||
|
<cac:LegalMonetaryTotal>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">1436.5</cbc:LineExtensionAmount>
|
||||||
|
<cbc:TaxExclusiveAmount currencyID="EUR">1436.5</cbc:TaxExclusiveAmount>
|
||||||
|
<cbc:TaxInclusiveAmount currencyID="EUR">1729</cbc:TaxInclusiveAmount>
|
||||||
|
<cbc:AllowanceTotalAmount currencyID="EUR">100</cbc:AllowanceTotalAmount>
|
||||||
|
<cbc:ChargeTotalAmount currencyID="EUR">100</cbc:ChargeTotalAmount>
|
||||||
|
<cbc:PrepaidAmount currencyID="EUR">1000</cbc:PrepaidAmount>
|
||||||
|
<cbc:PayableRoundingAmount currencyID="EUR">0.30</cbc:PayableRoundingAmount>
|
||||||
|
<cbc:PayableAmount currencyID="EUR">729</cbc:PayableAmount>
|
||||||
|
</cac:LegalMonetaryTotal>
|
||||||
|
<cac:CreditNoteLine>
|
||||||
|
<cbc:ID>1</cbc:ID>
|
||||||
|
<cbc:Note>Scratch on box</cbc:Note>
|
||||||
|
<cbc:CreditedQuantity unitCode="C62">1</cbc:CreditedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">1273</cbc:LineExtensionAmount>
|
||||||
|
<cbc:AccountingCost>BookingCode001</cbc:AccountingCost>
|
||||||
|
<cac:TaxTotal>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">254.6</cbc:TaxAmount>
|
||||||
|
</cac:TaxTotal>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Description languageID="EN">Processor: Intel Core 2 Duo SU9400 LV (1.4GHz). RAM:
|
||||||
|
3MB. Screen 1440x900</cbc:Description>
|
||||||
|
<cbc:Name>Labtop computer</cbc:Name>
|
||||||
|
<cac:SellersItemIdentification>
|
||||||
|
<cbc:ID>JB007</cbc:ID>
|
||||||
|
</cac:SellersItemIdentification>
|
||||||
|
<cac:StandardItemIdentification>
|
||||||
|
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890124</cbc:ID>
|
||||||
|
</cac:StandardItemIdentification>
|
||||||
|
<cac:CommodityClassification>
|
||||||
|
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC"
|
||||||
|
>12344321</cbc:ItemClassificationCode>
|
||||||
|
</cac:CommodityClassification>
|
||||||
|
<cac:CommodityClassification>
|
||||||
|
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV"
|
||||||
|
>65434568</cbc:ItemClassificationCode>
|
||||||
|
</cac:CommodityClassification>
|
||||||
|
<ClassifiedTaxCategory
|
||||||
|
xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||||
|
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">S</cbc:ID>
|
||||||
|
<cbc:Percent>20</cbc:Percent>
|
||||||
|
<TaxScheme>
|
||||||
|
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||||
|
</TaxScheme>
|
||||||
|
</ClassifiedTaxCategory>
|
||||||
|
<cac:AdditionalItemProperty>
|
||||||
|
<cbc:Name>Color</cbc:Name>
|
||||||
|
<cbc:Value>black</cbc:Value>
|
||||||
|
</cac:AdditionalItemProperty>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">1273</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||||
|
<cbc:AllowanceChargeReason>Contract</cbc:AllowanceChargeReason>
|
||||||
|
<cbc:MultiplierFactorNumeric>0.15</cbc:MultiplierFactorNumeric>
|
||||||
|
<cbc:Amount currencyID="EUR">225</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">1500</cbc:BaseAmount>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:CreditNoteLine>
|
||||||
|
<cac:CreditNoteLine>
|
||||||
|
<cbc:ID>2</cbc:ID>
|
||||||
|
<cbc:Note>Cover is slightly damaged.</cbc:Note>
|
||||||
|
<cbc:CreditedQuantity unitCode="C62">-1</cbc:CreditedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">-3.96</cbc:LineExtensionAmount>
|
||||||
|
<cac:TaxTotal>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">-0.396</cbc:TaxAmount>
|
||||||
|
</cac:TaxTotal>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Returned "Advanced computing" book</cbc:Name>
|
||||||
|
<cac:SellersItemIdentification>
|
||||||
|
<cbc:ID>JB008</cbc:ID>
|
||||||
|
</cac:SellersItemIdentification>
|
||||||
|
<cac:StandardItemIdentification>
|
||||||
|
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890125</cbc:ID>
|
||||||
|
</cac:StandardItemIdentification>
|
||||||
|
<cac:CommodityClassification>
|
||||||
|
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC"
|
||||||
|
>32344324</cbc:ItemClassificationCode>
|
||||||
|
</cac:CommodityClassification>
|
||||||
|
<cac:CommodityClassification>
|
||||||
|
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV"
|
||||||
|
>65434567</cbc:ItemClassificationCode>
|
||||||
|
</cac:CommodityClassification>
|
||||||
|
<ClassifiedTaxCategory
|
||||||
|
xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||||
|
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">AA</cbc:ID>
|
||||||
|
<cbc:Percent>10</cbc:Percent>
|
||||||
|
<TaxScheme>
|
||||||
|
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||||
|
</TaxScheme>
|
||||||
|
</ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">3.96</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:CreditNoteLine>
|
||||||
|
<cac:CreditNoteLine>
|
||||||
|
<cbc:ID>3</cbc:ID>
|
||||||
|
<cbc:CreditedQuantity unitCode="C62">2</cbc:CreditedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">4.96</cbc:LineExtensionAmount>
|
||||||
|
<cac:TaxTotal>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">0.496</cbc:TaxAmount>
|
||||||
|
</cac:TaxTotal>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>"Computing for dummies" book</cbc:Name>
|
||||||
|
<cac:SellersItemIdentification>
|
||||||
|
<cbc:ID>JB009</cbc:ID>
|
||||||
|
</cac:SellersItemIdentification>
|
||||||
|
<cac:StandardItemIdentification>
|
||||||
|
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890126</cbc:ID>
|
||||||
|
</cac:StandardItemIdentification>
|
||||||
|
<cac:CommodityClassification>
|
||||||
|
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC"
|
||||||
|
>32344324</cbc:ItemClassificationCode>
|
||||||
|
</cac:CommodityClassification>
|
||||||
|
<cac:CommodityClassification>
|
||||||
|
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV"
|
||||||
|
>65434566</cbc:ItemClassificationCode>
|
||||||
|
</cac:CommodityClassification>
|
||||||
|
<ClassifiedTaxCategory
|
||||||
|
xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||||
|
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">AA</cbc:ID>
|
||||||
|
<cbc:Percent>10</cbc:Percent>
|
||||||
|
<TaxScheme>
|
||||||
|
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||||
|
</TaxScheme>
|
||||||
|
</ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">2.48</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||||
|
<cbc:AllowanceChargeReason>Contract</cbc:AllowanceChargeReason>
|
||||||
|
<cbc:MultiplierFactorNumeric>0.1</cbc:MultiplierFactorNumeric>
|
||||||
|
<cbc:Amount currencyID="EUR">0.275</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">2.75</cbc:BaseAmount>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:CreditNoteLine>
|
||||||
|
<cac:CreditNoteLine>
|
||||||
|
<cbc:ID>4</cbc:ID>
|
||||||
|
<cbc:CreditedQuantity unitCode="C62">-1</cbc:CreditedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">-25</cbc:LineExtensionAmount>
|
||||||
|
<cac:TaxTotal>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
|
||||||
|
</cac:TaxTotal>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Returned IBM 5150 desktop</cbc:Name>
|
||||||
|
<cac:SellersItemIdentification>
|
||||||
|
<cbc:ID>JB010</cbc:ID>
|
||||||
|
</cac:SellersItemIdentification>
|
||||||
|
<cac:StandardItemIdentification>
|
||||||
|
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890127</cbc:ID>
|
||||||
|
</cac:StandardItemIdentification>
|
||||||
|
<cac:CommodityClassification>
|
||||||
|
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC"
|
||||||
|
>12344322</cbc:ItemClassificationCode>
|
||||||
|
</cac:CommodityClassification>
|
||||||
|
<cac:CommodityClassification>
|
||||||
|
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV"
|
||||||
|
>65434565</cbc:ItemClassificationCode>
|
||||||
|
</cac:CommodityClassification>
|
||||||
|
<ClassifiedTaxCategory
|
||||||
|
xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||||
|
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">E</cbc:ID>
|
||||||
|
<cbc:Percent>0</cbc:Percent>
|
||||||
|
<TaxScheme>
|
||||||
|
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||||
|
</TaxScheme>
|
||||||
|
</ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">25</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:CreditNoteLine>
|
||||||
|
<cac:CreditNoteLine>
|
||||||
|
<cbc:ID>5</cbc:ID>
|
||||||
|
<cbc:CreditedQuantity unitCode="C62">250</cbc:CreditedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">187.5</cbc:LineExtensionAmount>
|
||||||
|
<cbc:AccountingCost>BookingCode002</cbc:AccountingCost>
|
||||||
|
<cac:TaxTotal>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">37.5</cbc:TaxAmount>
|
||||||
|
</cac:TaxTotal>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Network cable</cbc:Name>
|
||||||
|
<cac:SellersItemIdentification>
|
||||||
|
<cbc:ID>JB011</cbc:ID>
|
||||||
|
</cac:SellersItemIdentification>
|
||||||
|
<cac:StandardItemIdentification>
|
||||||
|
<cbc:ID schemeID="GTIN" schemeAgencyID="9">1234567890128</cbc:ID>
|
||||||
|
</cac:StandardItemIdentification>
|
||||||
|
<cac:CommodityClassification>
|
||||||
|
<cbc:ItemClassificationCode listAgencyID="113" listID="UNSPSC"
|
||||||
|
>12344325</cbc:ItemClassificationCode>
|
||||||
|
</cac:CommodityClassification>
|
||||||
|
<cac:CommodityClassification>
|
||||||
|
<cbc:ItemClassificationCode listAgencyID="2" listID="CPV"
|
||||||
|
>65434564</cbc:ItemClassificationCode>
|
||||||
|
</cac:CommodityClassification>
|
||||||
|
<ClassifiedTaxCategory
|
||||||
|
xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
|
||||||
|
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">S</cbc:ID>
|
||||||
|
<cbc:Percent>20</cbc:Percent>
|
||||||
|
<TaxScheme>
|
||||||
|
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
|
||||||
|
</TaxScheme>
|
||||||
|
</ClassifiedTaxCategory>
|
||||||
|
<cac:AdditionalItemProperty>
|
||||||
|
<cbc:Name>Type</cbc:Name>
|
||||||
|
<cbc:Value>Cat5</cbc:Value>
|
||||||
|
</cac:AdditionalItemProperty>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">0.75</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:CreditNoteLine>
|
||||||
|
</CreditNote>
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,11 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0</cbc:CustomizationID>
|
||||||
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
||||||
<cbc:ID>471102</cbc:ID>
|
<cbc:ID>471102</cbc:ID>
|
||||||
<cbc:IssueDate>2018-03-05</cbc:IssueDate>
|
<cbc:IssueDate>2024-11-15</cbc:IssueDate>
|
||||||
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
||||||
<cbc:Note>Rechnung gemäß Bestellung vom 01.03.2018.</cbc:Note>
|
<cbc:Note>Rechnung gemäß Bestellung vom 01.11.2024.</cbc:Note>
|
||||||
<cbc:Note>#REG#Lieferant GmbH
|
<cbc:Note>#REG#Lieferant GmbH
|
||||||
Lieferantenstraße 20
|
Lieferantenstraße 20
|
||||||
80333 München
|
80333 München
|
||||||
@@ -14,14 +14,13 @@ Geschäftsführer: Hans Muster
|
|||||||
Handelsregisternummer: H A 123
|
Handelsregisternummer: H A 123
|
||||||
</cbc:Note>
|
</cbc:Note>
|
||||||
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
||||||
|
<cbc:BuyerReference>04011000-12345-34</cbc:BuyerReference>
|
||||||
<cac:AccountingSupplierParty>
|
<cac:AccountingSupplierParty>
|
||||||
<cac:Party>
|
<cac:Party>
|
||||||
|
<cbc:EndpointID schemeID="EM">info@Mustermann.de</cbc:EndpointID>
|
||||||
<cac:PartyIdentification>
|
<cac:PartyIdentification>
|
||||||
<cbc:ID schemeID="0088">4000001123452</cbc:ID>
|
<cbc:ID schemeID="0088">4000001123452</cbc:ID>
|
||||||
</cac:PartyIdentification>
|
</cac:PartyIdentification>
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Lieferant GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
<cac:PostalAddress>
|
||||||
<cbc:StreetName>Lieferantenstraße 20</cbc:StreetName>
|
<cbc:StreetName>Lieferantenstraße 20</cbc:StreetName>
|
||||||
<cbc:CityName>München</cbc:CityName>
|
<cbc:CityName>München</cbc:CityName>
|
||||||
@@ -45,16 +44,19 @@ Handelsregisternummer: H A 123
|
|||||||
<cac:PartyLegalEntity>
|
<cac:PartyLegalEntity>
|
||||||
<cbc:RegistrationName>Lieferant GmbH</cbc:RegistrationName>
|
<cbc:RegistrationName>Lieferant GmbH</cbc:RegistrationName>
|
||||||
</cac:PartyLegalEntity>
|
</cac:PartyLegalEntity>
|
||||||
|
<cac:Contact>
|
||||||
|
<cbc:Name>Max Mustermann</cbc:Name>
|
||||||
|
<cbc:Telephone>+49891234567</cbc:Telephone>
|
||||||
|
<cbc:ElectronicMail>Max@Mustermann.de</cbc:ElectronicMail>
|
||||||
|
</cac:Contact>
|
||||||
</cac:Party>
|
</cac:Party>
|
||||||
</cac:AccountingSupplierParty>
|
</cac:AccountingSupplierParty>
|
||||||
<cac:AccountingCustomerParty>
|
<cac:AccountingCustomerParty>
|
||||||
<cac:Party>
|
<cac:Party>
|
||||||
|
<cbc:EndpointID schemeID="EM">info@kunde.de</cbc:EndpointID>
|
||||||
<cac:PartyIdentification>
|
<cac:PartyIdentification>
|
||||||
<cbc:ID>GE2020211</cbc:ID>
|
<cbc:ID>GE2020211</cbc:ID>
|
||||||
</cac:PartyIdentification>
|
</cac:PartyIdentification>
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Kunden AG Mitte</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
<cac:PostalAddress>
|
<cac:PostalAddress>
|
||||||
<cbc:StreetName>Kundenstraße 15</cbc:StreetName>
|
<cbc:StreetName>Kundenstraße 15</cbc:StreetName>
|
||||||
<cbc:CityName>Frankfurt</cbc:CityName>
|
<cbc:CityName>Frankfurt</cbc:CityName>
|
||||||
@@ -68,25 +70,21 @@ Handelsregisternummer: H A 123
|
|||||||
</cac:PartyLegalEntity>
|
</cac:PartyLegalEntity>
|
||||||
</cac:Party>
|
</cac:Party>
|
||||||
</cac:AccountingCustomerParty>
|
</cac:AccountingCustomerParty>
|
||||||
<cac:PayeeParty>
|
|
||||||
<cac:PartyIdentification>
|
|
||||||
<cbc:ID>4711</cbc:ID>
|
|
||||||
</cac:PartyIdentification>
|
|
||||||
<cac:PartyName>
|
|
||||||
<cbc:Name>Factoring GmbH</cbc:Name>
|
|
||||||
</cac:PartyName>
|
|
||||||
</cac:PayeeParty>
|
|
||||||
<cac:Delivery>
|
<cac:Delivery>
|
||||||
<cbc:ActualDeliveryDate>2018-03-05</cbc:ActualDeliveryDate>
|
<cbc:ActualDeliveryDate>2024-11-14</cbc:ActualDeliveryDate>
|
||||||
</cac:Delivery>
|
</cac:Delivery>
|
||||||
<cac:PaymentMeans>
|
<cac:PaymentMeans>
|
||||||
<cbc:PaymentMeansCode>58</cbc:PaymentMeansCode>
|
<cbc:PaymentMeansCode name="Zahlung per SEPA Überweisung.">58</cbc:PaymentMeansCode>
|
||||||
<cac:PayeeFinancialAccount>
|
<cac:PayeeFinancialAccount>
|
||||||
<cbc:ID>DE12123456781234567890</cbc:ID>
|
<cbc:ID>DE02120300000000202051</cbc:ID>
|
||||||
|
<cbc:Name>Kunden AG</cbc:Name>
|
||||||
|
<cac:FinancialInstitutionBranch>
|
||||||
|
<cbc:ID>BYLADEM1001</cbc:ID>
|
||||||
|
</cac:FinancialInstitutionBranch>
|
||||||
</cac:PayeeFinancialAccount>
|
</cac:PayeeFinancialAccount>
|
||||||
</cac:PaymentMeans>
|
</cac:PaymentMeans>
|
||||||
<cac:PaymentTerms>
|
<cac:PaymentTerms>
|
||||||
<cbc:Note>Zahlbar innerhalb 30 Tagen netto bis 04.04.2018, 3% Skonto innerhalb 10 Tagen bis 15.03.2018</cbc:Note>
|
<cbc:Note>Zahlbar innerhalb 30 Tagen netto bis 15.12.2024, 3% Skonto innerhalb 10 Tagen bis 25.11.2024</cbc:Note>
|
||||||
</cac:PaymentTerms>
|
</cac:PaymentTerms>
|
||||||
<cac:TaxTotal>
|
<cac:TaxTotal>
|
||||||
<cbc:TaxAmount currencyID="EUR">56.87</cbc:TaxAmount>
|
<cbc:TaxAmount currencyID="EUR">56.87</cbc:TaxAmount>
|
||||||
@@ -144,6 +142,11 @@ Handelsregisternummer: H A 123
|
|||||||
</cac:Item>
|
</cac:Item>
|
||||||
<cac:Price>
|
<cac:Price>
|
||||||
<cbc:PriceAmount currencyID="EUR">9.9</cbc:PriceAmount>
|
<cbc:PriceAmount currencyID="EUR">9.9</cbc:PriceAmount>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||||
|
<cbc:Amount currencyID="EUR">0</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">9.9</cbc:BaseAmount>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
</cac:Price>
|
</cac:Price>
|
||||||
</cac:InvoiceLine>
|
</cac:InvoiceLine>
|
||||||
<cac:InvoiceLine>
|
<cac:InvoiceLine>
|
||||||
@@ -168,6 +171,11 @@ Handelsregisternummer: H A 123
|
|||||||
</cac:Item>
|
</cac:Item>
|
||||||
<cac:Price>
|
<cac:Price>
|
||||||
<cbc:PriceAmount currencyID="EUR">5.5</cbc:PriceAmount>
|
<cbc:PriceAmount currencyID="EUR">5.5</cbc:PriceAmount>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||||
|
<cbc:Amount currencyID="EUR">0</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">5.5</cbc:BaseAmount>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
</cac:Price>
|
</cac:Price>
|
||||||
</cac:InvoiceLine>
|
</cac:InvoiceLine>
|
||||||
</Invoice>
|
</Invoice>
|
||||||
177
library/src/test/resources/ubl/XRECHNUNG_Elektron.ubl.xml
Normal file
177
library/src/test/resources/ubl/XRECHNUNG_Elektron.ubl.xml
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,404 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDataTypes-2" xmlns:udt="urn:oasis:names:specification:ubl:schema:xsd:UnqualifiedDataTypes-2">
|
||||||
|
<cbc:CustomizationID>urn:cen.eu:en16931:2017</cbc:CustomizationID>
|
||||||
|
<cbc:ProfileID>BT-23 Business Process Type</cbc:ProfileID>
|
||||||
|
<cbc:ID>Test_EeISI_100</cbc:ID>
|
||||||
|
<cbc:IssueDate>2018-11-12</cbc:IssueDate>
|
||||||
|
<cbc:DueDate>2018-11-30</cbc:DueDate>
|
||||||
|
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
|
||||||
|
<cbc:Note>##AAA##invoice note text</cbc:Note>
|
||||||
|
<cbc:Note>##AAA##invoice note text 2</cbc:Note>
|
||||||
|
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
|
||||||
|
<cbc:TaxCurrencyCode>NOK</cbc:TaxCurrencyCode>
|
||||||
|
<cbc:AccountingCost>uvz</cbc:AccountingCost>
|
||||||
|
<cbc:BuyerReference>123</cbc:BuyerReference>
|
||||||
|
<cac:InvoicePeriod>
|
||||||
|
<cbc:StartDate>2018-11-12</cbc:StartDate>
|
||||||
|
<cbc:EndDate>2018-11-30</cbc:EndDate>
|
||||||
|
<cbc:DescriptionCode>35</cbc:DescriptionCode>
|
||||||
|
</cac:InvoicePeriod>
|
||||||
|
<cac:OrderReference>
|
||||||
|
<cbc:ID>abc</cbc:ID>
|
||||||
|
<cbc:SalesOrderID>def</cbc:SalesOrderID>
|
||||||
|
</cac:OrderReference>
|
||||||
|
<cac:BillingReference>
|
||||||
|
<cac:InvoiceDocumentReference>
|
||||||
|
<cbc:ID>abc123</cbc:ID>
|
||||||
|
<cbc:IssueDate>2018-10-04</cbc:IssueDate>
|
||||||
|
</cac:InvoiceDocumentReference>
|
||||||
|
</cac:BillingReference>
|
||||||
|
<cac:DespatchDocumentReference>
|
||||||
|
<cbc:ID>lmn</cbc:ID>
|
||||||
|
</cac:DespatchDocumentReference>
|
||||||
|
<cac:ReceiptDocumentReference>
|
||||||
|
<cbc:ID>ghi</cbc:ID>
|
||||||
|
</cac:ReceiptDocumentReference>
|
||||||
|
<cac:OriginatorDocumentReference>
|
||||||
|
<cbc:ID>opq</cbc:ID>
|
||||||
|
</cac:OriginatorDocumentReference>
|
||||||
|
<cac:ContractDocumentReference>
|
||||||
|
<cbc:ID>789</cbc:ID>
|
||||||
|
</cac:ContractDocumentReference>
|
||||||
|
<cac:AdditionalDocumentReference>
|
||||||
|
<cbc:ID schemeID="0090">rst</cbc:ID>
|
||||||
|
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
|
||||||
|
</cac:AdditionalDocumentReference>
|
||||||
|
<cac:AdditionalDocumentReference>
|
||||||
|
<cbc:ID>Supporting document ref</cbc:ID>
|
||||||
|
<cbc:DocumentDescription>Supporting document descr</cbc:DocumentDescription>
|
||||||
|
<cac:Attachment>
|
||||||
|
<cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf" filename="filename0">ZGVmYXVsdA==</cbc:EmbeddedDocumentBinaryObject>
|
||||||
|
<cac:ExternalReference>
|
||||||
|
<cbc:URI>External document location</cbc:URI>
|
||||||
|
</cac:ExternalReference>
|
||||||
|
</cac:Attachment>
|
||||||
|
</cac:AdditionalDocumentReference>
|
||||||
|
<cac:ProjectReference>
|
||||||
|
<cbc:ID>456</cbc:ID>
|
||||||
|
</cac:ProjectReference>
|
||||||
|
<cac:AccountingSupplierParty>
|
||||||
|
<cac:Party>
|
||||||
|
<cbc:EndpointID schemeID="SMTP">Seller electronic address</cbc:EndpointID>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="0100">Seller identifier 1</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="0110">Seller identifier 2</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="SEPA">Bank assigned creditor identifier</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Seller trading name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PostalAddress>
|
||||||
|
<cbc:StreetName>Seller address line 1</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Seller address line 2</cbc:AdditionalStreetName>
|
||||||
|
<cbc:CityName>Seller city</cbc:CityName>
|
||||||
|
<cbc:PostalZone>12345</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentity>Seller country subdivision</cbc:CountrySubentity>
|
||||||
|
<cac:AddressLine>
|
||||||
|
<cbc:Line>Seller address line 3</cbc:Line>
|
||||||
|
</cac:AddressLine>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:PostalAddress>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID>DE12345677</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID>DE49294093</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>NOVAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:RegistrationName>Seller name</cbc:RegistrationName>
|
||||||
|
<cbc:CompanyID schemeID="0310">Seller legal identifier</cbc:CompanyID>
|
||||||
|
<cbc:CompanyLegalForm>Seller additional legal information</cbc:CompanyLegalForm>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
<cac:Contact>
|
||||||
|
<cbc:Name>Seller contact point</cbc:Name>
|
||||||
|
<cbc:Telephone>+41 345 654455</cbc:Telephone>
|
||||||
|
<cbc:ElectronicMail>seller@contact.de</cbc:ElectronicMail>
|
||||||
|
</cac:Contact>
|
||||||
|
</cac:Party>
|
||||||
|
</cac:AccountingSupplierParty>
|
||||||
|
<cac:AccountingCustomerParty>
|
||||||
|
<cac:Party>
|
||||||
|
<cbc:EndpointID schemeID="DE:SMTP">Buyer electronic address</cbc:EndpointID>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID>0190:Buyer identifier</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Buyer trading name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PostalAddress>
|
||||||
|
<cbc:StreetName>Buyer address line 1</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Buyer address line 2</cbc:AdditionalStreetName>
|
||||||
|
<cbc:CityName>Buyer city</cbc:CityName>
|
||||||
|
<cbc:PostalZone>34562</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentity>Buyer country subdivision</cbc:CountrySubentity>
|
||||||
|
<cac:AddressLine>
|
||||||
|
<cbc:Line>Buyer address line 3</cbc:Line>
|
||||||
|
</cac:AddressLine>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>IE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:PostalAddress>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID>IE394838894</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:RegistrationName>Buyer name</cbc:RegistrationName>
|
||||||
|
<cbc:CompanyID>Buyer legal registration identifier</cbc:CompanyID>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
<cac:Contact>
|
||||||
|
<cbc:Name>Buyer contact point</cbc:Name>
|
||||||
|
<cbc:Telephone>+353 2948584</cbc:Telephone>
|
||||||
|
<cbc:ElectronicMail>buyer@contact.ie</cbc:ElectronicMail>
|
||||||
|
</cac:Contact>
|
||||||
|
</cac:Party>
|
||||||
|
</cac:AccountingCustomerParty>
|
||||||
|
<cac:PayeeParty>
|
||||||
|
<cac:PartyIdentification>
|
||||||
|
<cbc:ID schemeID="0098">Payee identifier</cbc:ID>
|
||||||
|
</cac:PartyIdentification>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Payee name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PartyLegalEntity>
|
||||||
|
<cbc:CompanyID schemeID="0099">Payee legal registration identifier</cbc:CompanyID>
|
||||||
|
</cac:PartyLegalEntity>
|
||||||
|
</cac:PayeeParty>
|
||||||
|
<cac:TaxRepresentativeParty>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Tax representative name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
<cac:PostalAddress>
|
||||||
|
<cbc:StreetName>Tax representative address line 1</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Tax representative address line 2</cbc:AdditionalStreetName>
|
||||||
|
<cbc:CityName>Tax representative city</cbc:CityName>
|
||||||
|
<cbc:PostalZone>23455</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentity>Tax representative country subdivision</cbc:CountrySubentity>
|
||||||
|
<cac:AddressLine>
|
||||||
|
<cbc:Line>Tax representative address line 3</cbc:Line>
|
||||||
|
</cac:AddressLine>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:PostalAddress>
|
||||||
|
<cac:PartyTaxScheme>
|
||||||
|
<cbc:CompanyID>DE3949053</cbc:CompanyID>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:PartyTaxScheme>
|
||||||
|
</cac:TaxRepresentativeParty>
|
||||||
|
<cac:Delivery>
|
||||||
|
<cbc:ActualDeliveryDate>2018-12-04</cbc:ActualDeliveryDate>
|
||||||
|
<cac:DeliveryLocation>
|
||||||
|
<cbc:ID schemeID="0045">deliver location identifier</cbc:ID>
|
||||||
|
<cac:Address>
|
||||||
|
<cbc:StreetName>Deliver to address line 1</cbc:StreetName>
|
||||||
|
<cbc:AdditionalStreetName>Deliver to address line 2</cbc:AdditionalStreetName>
|
||||||
|
<cbc:CityName>Deliver to city</cbc:CityName>
|
||||||
|
<cbc:PostalZone>98765</cbc:PostalZone>
|
||||||
|
<cbc:CountrySubentity>Deliver to country subdivision</cbc:CountrySubentity>
|
||||||
|
<cac:AddressLine>
|
||||||
|
<cbc:Line>Deliver to address line 3</cbc:Line>
|
||||||
|
</cac:AddressLine>
|
||||||
|
<cac:Country>
|
||||||
|
<cbc:IdentificationCode>IE</cbc:IdentificationCode>
|
||||||
|
</cac:Country>
|
||||||
|
</cac:Address>
|
||||||
|
</cac:DeliveryLocation>
|
||||||
|
<cac:DeliveryParty>
|
||||||
|
<cac:PartyName>
|
||||||
|
<cbc:Name>Deliver to party name</cbc:Name>
|
||||||
|
</cac:PartyName>
|
||||||
|
</cac:DeliveryParty>
|
||||||
|
</cac:Delivery>
|
||||||
|
<cac:PaymentMeans>
|
||||||
|
<cbc:PaymentMeansCode name="SEPA">4</cbc:PaymentMeansCode>
|
||||||
|
<cbc:PaymentID>Remittance information</cbc:PaymentID>
|
||||||
|
<cac:CardAccount>
|
||||||
|
<cbc:PrimaryAccountNumberID>1234</cbc:PrimaryAccountNumberID>
|
||||||
|
<cbc:NetworkID>mandatory network id</cbc:NetworkID>
|
||||||
|
<cbc:HolderName>Payment card holder name</cbc:HolderName>
|
||||||
|
</cac:CardAccount>
|
||||||
|
<cac:PayeeFinancialAccount>
|
||||||
|
<cbc:ID>IT1212341234123412</cbc:ID>
|
||||||
|
<cbc:Name>Payment account name</cbc:Name>
|
||||||
|
<cac:FinancialInstitutionBranch>
|
||||||
|
<cbc:ID>BSCTCH22</cbc:ID>
|
||||||
|
</cac:FinancialInstitutionBranch>
|
||||||
|
</cac:PayeeFinancialAccount>
|
||||||
|
<cac:PayeeFinancialAccount>
|
||||||
|
<cbc:ID>IT1212341234123413</cbc:ID>
|
||||||
|
<cbc:Name>Payment account name 2</cbc:Name>
|
||||||
|
<cac:FinancialInstitutionBranch>
|
||||||
|
<cbc:ID>BSCTCH22</cbc:ID>
|
||||||
|
</cac:FinancialInstitutionBranch>
|
||||||
|
</cac:PayeeFinancialAccount>
|
||||||
|
<cac:PaymentMandate>
|
||||||
|
<cbc:ID>Mandate reference identifier</cbc:ID>
|
||||||
|
<cac:PayerFinancialAccount>
|
||||||
|
<cbc:ID>Debited account identifier</cbc:ID>
|
||||||
|
</cac:PayerFinancialAccount>
|
||||||
|
</cac:PaymentMandate>
|
||||||
|
</cac:PaymentMeans>
|
||||||
|
<cac:PaymentTerms>
|
||||||
|
<cbc:Note>total amount</cbc:Note>
|
||||||
|
</cac:PaymentTerms>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||||
|
<cbc:AllowanceChargeReasonCode>55</cbc:AllowanceChargeReasonCode>
|
||||||
|
<cbc:AllowanceChargeReason>Doc allowance reason text</cbc:AllowanceChargeReason>
|
||||||
|
<cbc:MultiplierFactorNumeric>1.0000</cbc:MultiplierFactorNumeric>
|
||||||
|
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">1000.00</cbc:BaseAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>5.00</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
|
||||||
|
<cbc:AllowanceChargeReasonCode>AAA</cbc:AllowanceChargeReasonCode>
|
||||||
|
<cbc:AllowanceChargeReason>Doc charge reason text</cbc:AllowanceChargeReason>
|
||||||
|
<cbc:MultiplierFactorNumeric>1.0000</cbc:MultiplierFactorNumeric>
|
||||||
|
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">1000.00</cbc:BaseAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>5.00</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
<cac:TaxTotal>
|
||||||
|
<cbc:TaxAmount currencyID="NOK">46.00</cbc:TaxAmount>
|
||||||
|
</cac:TaxTotal>
|
||||||
|
<cac:TaxTotal>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">50.00</cbc:TaxAmount>
|
||||||
|
<cac:TaxSubtotal>
|
||||||
|
<cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">50.00</cbc:TaxAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>5.00</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:TaxSubtotal>
|
||||||
|
<cac:TaxSubtotal>
|
||||||
|
<cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
|
||||||
|
<cbc:TaxAmount currencyID="EUR">0.00</cbc:TaxAmount>
|
||||||
|
<cac:TaxCategory>
|
||||||
|
<cbc:ID>E</cbc:ID>
|
||||||
|
<cbc:Percent>0.00</cbc:Percent>
|
||||||
|
<cbc:TaxExemptionReasonCode>Exemption reason code</cbc:TaxExemptionReasonCode>
|
||||||
|
<cbc:TaxExemptionReason>Exemtion reason text</cbc:TaxExemptionReason>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:TaxCategory>
|
||||||
|
</cac:TaxSubtotal>
|
||||||
|
</cac:TaxTotal>
|
||||||
|
<cac:LegalMonetaryTotal>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">2000.00</cbc:LineExtensionAmount>
|
||||||
|
<cbc:TaxExclusiveAmount currencyID="EUR">2000.00</cbc:TaxExclusiveAmount>
|
||||||
|
<cbc:TaxInclusiveAmount currencyID="EUR">2050.00</cbc:TaxInclusiveAmount>
|
||||||
|
<cbc:AllowanceTotalAmount currencyID="EUR">10.00</cbc:AllowanceTotalAmount>
|
||||||
|
<cbc:ChargeTotalAmount currencyID="EUR">10.00</cbc:ChargeTotalAmount>
|
||||||
|
<cbc:PayableAmount currencyID="EUR">2050.00</cbc:PayableAmount>
|
||||||
|
</cac:LegalMonetaryTotal>
|
||||||
|
<cac:InvoiceLine>
|
||||||
|
<cbc:ID>1a</cbc:ID>
|
||||||
|
<cbc:Note>Invoice line note</cbc:Note>
|
||||||
|
<cbc:InvoicedQuantity unitCode="EA">10.00000000</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
|
||||||
|
<cbc:AccountingCost>6789</cbc:AccountingCost>
|
||||||
|
<cac:InvoicePeriod>
|
||||||
|
<cbc:StartDate>2018-11-12</cbc:StartDate>
|
||||||
|
<cbc:EndDate>2018-11-30</cbc:EndDate>
|
||||||
|
</cac:InvoicePeriod>
|
||||||
|
<cac:OrderLineReference>
|
||||||
|
<cbc:LineID>12345</cbc:LineID>
|
||||||
|
</cac:OrderLineReference>
|
||||||
|
<cac:DocumentReference>
|
||||||
|
<cbc:ID schemeID="ZZZ">Line object identifier</cbc:ID>
|
||||||
|
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
|
||||||
|
</cac:DocumentReference>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||||
|
<cbc:AllowanceChargeReasonCode>55</cbc:AllowanceChargeReasonCode>
|
||||||
|
<cbc:AllowanceChargeReason>Invoice line allowance reason</cbc:AllowanceChargeReason>
|
||||||
|
<cbc:MultiplierFactorNumeric>1</cbc:MultiplierFactorNumeric>
|
||||||
|
<cbc:Amount currencyID="EUR">10</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">1000</cbc:BaseAmount>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
|
||||||
|
<cbc:AllowanceChargeReasonCode>AAA</cbc:AllowanceChargeReasonCode>
|
||||||
|
<cbc:AllowanceChargeReason>Invoice line charge reason</cbc:AllowanceChargeReason>
|
||||||
|
<cbc:MultiplierFactorNumeric>1</cbc:MultiplierFactorNumeric>
|
||||||
|
<cbc:Amount currencyID="EUR">10</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">1000</cbc:BaseAmount>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Description>Item description</cbc:Description>
|
||||||
|
<cbc:Name>Item name</cbc:Name>
|
||||||
|
<cac:BuyersItemIdentification>
|
||||||
|
<cbc:ID>Item buyer's identifier</cbc:ID>
|
||||||
|
</cac:BuyersItemIdentification>
|
||||||
|
<cac:SellersItemIdentification>
|
||||||
|
<cbc:ID>Item seller's identifier</cbc:ID>
|
||||||
|
</cac:SellersItemIdentification>
|
||||||
|
<cac:StandardItemIdentification>
|
||||||
|
<cbc:ID>Item standar identifier</cbc:ID>
|
||||||
|
</cac:StandardItemIdentification>
|
||||||
|
<cac:OriginCountry>
|
||||||
|
<cbc:IdentificationCode>IT</cbc:IdentificationCode>
|
||||||
|
</cac:OriginCountry>
|
||||||
|
<cac:CommodityClassification>
|
||||||
|
<cbc:ItemClassificationCode listID="ZZZ" listVersionID="version0">Item classification identifier0</cbc:ItemClassificationCode>
|
||||||
|
</cac:CommodityClassification>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>S</cbc:ID>
|
||||||
|
<cbc:Percent>5.00</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
<cac:AdditionalItemProperty>
|
||||||
|
<cbc:Name>Color</cbc:Name>
|
||||||
|
<cbc:Value>Red</cbc:Value>
|
||||||
|
</cac:AdditionalItemProperty>
|
||||||
|
<cac:AdditionalItemProperty>
|
||||||
|
<cbc:Name>Size</cbc:Name>
|
||||||
|
<cbc:Value>L</cbc:Value>
|
||||||
|
</cac:AdditionalItemProperty>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">10.00</cbc:PriceAmount>
|
||||||
|
<cbc:BaseQuantity unitCode="EA">1.00</cbc:BaseQuantity>
|
||||||
|
<cac:AllowanceCharge>
|
||||||
|
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
|
||||||
|
<cbc:Amount currencyID="EUR">1</cbc:Amount>
|
||||||
|
<cbc:BaseAmount currencyID="EUR">11</cbc:BaseAmount>
|
||||||
|
</cac:AllowanceCharge>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:InvoiceLine>
|
||||||
|
<cac:InvoiceLine>
|
||||||
|
<cbc:ID>1b</cbc:ID>
|
||||||
|
<cbc:InvoicedQuantity unitCode="EA">10.00000000</cbc:InvoicedQuantity>
|
||||||
|
<cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
|
||||||
|
<cac:Item>
|
||||||
|
<cbc:Name>Item name 2</cbc:Name>
|
||||||
|
<cac:ClassifiedTaxCategory>
|
||||||
|
<cbc:ID>E</cbc:ID>
|
||||||
|
<cbc:Percent>0.00</cbc:Percent>
|
||||||
|
<cac:TaxScheme>
|
||||||
|
<cbc:ID>VAT</cbc:ID>
|
||||||
|
</cac:TaxScheme>
|
||||||
|
</cac:ClassifiedTaxCategory>
|
||||||
|
</cac:Item>
|
||||||
|
<cac:Price>
|
||||||
|
<cbc:PriceAmount currencyID="EUR">10.00</cbc:PriceAmount>
|
||||||
|
</cac:Price>
|
||||||
|
</cac:InvoiceLine>
|
||||||
|
</Invoice>
|
||||||
4
pom.xml
4
pom.xml
@@ -3,7 +3,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.mustangproject</groupId>
|
<groupId>org.mustangproject</groupId>
|
||||||
<artifactId>core</artifactId>
|
<artifactId>core</artifactId>
|
||||||
<version>2.12.0-SNAPSHOT</version>
|
<version>2.15.0-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>Mustang</name>
|
<name>Mustang</name>
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
<module>Mustang-CLI</module>
|
<module>Mustang-CLI</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<description>The Mustang project is a java library to read and write ZUGFeRD meta data inside your invoice PDFs
|
<description>Mustangproject is a java library and commandline tool to read, validate, write and convert EN16931 e-invoices, e.g. Factur-X and XRechnung (read and writing CII and reading also UBL).
|
||||||
</description>
|
</description>
|
||||||
<url>http://www.mustangproject.org/</url>
|
<url>http://www.mustangproject.org/</url>
|
||||||
<scm>
|
<scm>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.mustangproject</groupId>
|
<groupId>org.mustangproject</groupId>
|
||||||
<artifactId>core</artifactId>
|
<artifactId>core</artifactId>
|
||||||
<version>2.12.0-SNAPSHOT</version>
|
<version>2.15.0-SNAPSHOT</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.mustangproject</groupId>
|
<groupId>org.mustangproject</groupId>
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
<name>Library to validate e-invoices (ZUGFeRD, Factur-X and Xrechnung)</name>
|
<name>Library to validate e-invoices (ZUGFeRD, Factur-X and Xrechnung)</name>
|
||||||
|
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<version>2.12.0-SNAPSHOT</version>
|
<version>2.15.0-SNAPSHOT</version>
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
<!-- for jargs -->
|
<!-- for jargs -->
|
||||||
@@ -38,7 +38,23 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>${project.groupId}</groupId>
|
<groupId>${project.groupId}</groupId>
|
||||||
<artifactId>library</artifactId>
|
<artifactId>library</artifactId>
|
||||||
<version>2.12.0-SNAPSHOT</version>
|
<version>2.15.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.dom4j</groupId>
|
||||||
|
<artifactId>dom4j</artifactId>
|
||||||
|
<version>2.1.4</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-io</groupId>
|
||||||
|
<artifactId>commons-io</artifactId>
|
||||||
|
<version>2.16.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.pdfbox</groupId>
|
||||||
|
<artifactId>pdfbox</artifactId>
|
||||||
|
<version>3.0.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>jakarta.xml.bind</groupId>
|
<groupId>jakarta.xml.bind</groupId>
|
||||||
@@ -209,10 +225,10 @@
|
|||||||
</goals>
|
</goals>
|
||||||
|
|
||||||
<configuration>
|
<configuration>
|
||||||
<outputDirectory>${basedir}/src/main/resources/xslt/ZF_221/</outputDirectory>
|
<outputDirectory>${basedir}/src/main/resources/xslt/ZF_230/</outputDirectory>
|
||||||
<resources>
|
<resources>
|
||||||
<resource>
|
<resource>
|
||||||
<directory>${basedir}/src/main/resources/schematron/ZF_221/</directory>
|
<directory>${basedir}/src/main/resources/schematron/ZF_230/</directory>
|
||||||
<includes>
|
<includes>
|
||||||
<include>**/*.xml</include>
|
<include>**/*.xml</include>
|
||||||
</includes>
|
</includes>
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
package org.mustangproject.validator;
|
|
||||||
|
|
||||||
public final class ByteArraySearcher {
|
|
||||||
|
|
||||||
private ByteArraySearcher() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int indexOf(byte[] haystack, byte[] needle) {
|
|
||||||
if (needle.length > haystack.length) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Any needle to search?
|
|
||||||
if (needle.length == 0) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i <= haystack.length - needle.length; i++) {
|
|
||||||
boolean found = true;
|
|
||||||
for (int j = 0; j < needle.length; j++) {
|
|
||||||
if (haystack[i + j] != needle[j]) {
|
|
||||||
found = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (found) {
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean contains(byte[] haystack, byte[] needle) {
|
|
||||||
return indexOf (haystack, needle) >= 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean startsWith(byte[] haystack, byte[] needle) {
|
|
||||||
if (needle.length > haystack.length) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Any needle to search?
|
|
||||||
if (needle.length == 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int j = 0; j < needle.length; j++) {
|
|
||||||
if (haystack[j] != needle[j]) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -21,6 +21,7 @@ import javax.xml.xpath.XPathExpression;
|
|||||||
import javax.xml.xpath.XPathExpressionException;
|
import javax.xml.xpath.XPathExpressionException;
|
||||||
import javax.xml.xpath.XPathFactory;
|
import javax.xml.xpath.XPathFactory;
|
||||||
|
|
||||||
|
import org.mustangproject.util.ByteArraySearcher;
|
||||||
import org.mustangproject.ZUGFeRD.ZUGFeRDImporter;
|
import org.mustangproject.ZUGFeRD.ZUGFeRDImporter;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ public class XMLValidator extends Validator {
|
|||||||
boolean isEN16931 = false;
|
boolean isEN16931 = false;
|
||||||
boolean isExtended = false;
|
boolean isExtended = false;
|
||||||
boolean isXRechnung = false;
|
boolean isXRechnung = false;
|
||||||
String currentZFVersionDir = "ZF_221";
|
String currentZFVersionDir = "ZF_230";
|
||||||
int mainSchematronSectionErrorTypeCode=4;
|
int mainSchematronSectionErrorTypeCode=4;
|
||||||
String xsltFilename = null;
|
String xsltFilename = null;
|
||||||
// urn:ferd:CrossIndustryDocument:invoice:1p0:extended,
|
// urn:ferd:CrossIndustryDocument:invoice:1p0:extended,
|
||||||
@@ -254,7 +254,7 @@ public class XMLValidator extends Validator {
|
|||||||
the validation against the XRechnung Schematron will happen below but a
|
the validation against the XRechnung Schematron will happen below but a
|
||||||
XRechnung is a EN16931 subset so the validation vis a vis FACTUR-X_EN16931.xslt=schematron also has to pass
|
XRechnung is a EN16931 subset so the validation vis a vis FACTUR-X_EN16931.xslt=schematron also has to pass
|
||||||
* */
|
* */
|
||||||
//validateSchema(zfXML.getBytes(StandardCharsets.UTF_8), "ZF_211/EN16931/FACTUR-X_EN16931.xsd", 18, EPart.fx);
|
validateSchema(zfXML.getBytes(StandardCharsets.UTF_8), currentZFVersionDir + "/EN16931/FACTUR-X_EN16931.xsd", 18, EPart.fx);
|
||||||
|
|
||||||
XrechnungSeverity = ESeverity.error;
|
XrechnungSeverity = ESeverity.error;
|
||||||
} else if (isExtended) {
|
} else if (isExtended) {
|
||||||
@@ -276,7 +276,7 @@ public class XMLValidator extends Validator {
|
|||||||
// UBL
|
// UBL
|
||||||
LOGGER.debug("UBL");
|
LOGGER.debug("UBL");
|
||||||
validateSchema(zfXML.getBytes(StandardCharsets.UTF_8), "UBL_21/maindoc/UBL-Invoice-2.1.xsd", 18, EPart.fx);
|
validateSchema(zfXML.getBytes(StandardCharsets.UTF_8), "UBL_21/maindoc/UBL-Invoice-2.1.xsd", 18, EPart.fx);
|
||||||
xsltFilename = "/xslt/UBL_21/EN16931-UBL-validation.xslt";
|
xsltFilename = "/xslt/en16931schematron/EN16931-UBL-validation.xslt";
|
||||||
|
|
||||||
mainSchematronSectionErrorTypeCode=24;
|
mainSchematronSectionErrorTypeCode=24;
|
||||||
|
|
||||||
@@ -364,7 +364,7 @@ public class XMLValidator extends Validator {
|
|||||||
if (context.getGeneration().equals("2")
|
if (context.getGeneration().equals("2")
|
||||||
&& (isBasic || isEN16931 || isXRechnung)) {
|
&& (isBasic || isEN16931 || isXRechnung)) {
|
||||||
//additionally validate against CEN
|
//additionally validate against CEN
|
||||||
validateSchematron(zfXML, "/xslt/cii16931schematron/EN16931-CII-validation.xslt", 24, ESeverity.error);
|
validateSchematron(zfXML, "/xslt/en16931schematron/EN16931-CII-validation.xslt", 24, ESeverity.error);
|
||||||
if (!disableNotices || XrechnungSeverity != ESeverity.notice) {
|
if (!disableNotices || XrechnungSeverity != ESeverity.notice) {
|
||||||
validateXR(zfXML, XrechnungSeverity);
|
validateXR(zfXML, XrechnungSeverity);
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user