@@ -102,7 +102,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.helger</groupId>
|
<groupId>com.helger</groupId>
|
||||||
<artifactId>en16931-cii2ubl</artifactId>
|
<artifactId>en16931-cii2ubl</artifactId>
|
||||||
<version>1.3.0</version>
|
<version>1.4.10</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime -->
|
<!-- https://mvnrepository.com/artifact/org.glassfish.jaxb/jaxb-runtime -->
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -122,6 +122,7 @@
|
|||||||
<groupId>org.xmlunit</groupId>
|
<groupId>org.xmlunit</groupId>
|
||||||
<artifactId>xmlunit-assertj</artifactId>
|
<artifactId>xmlunit-assertj</artifactId>
|
||||||
<version>2.9.1</version>
|
<version>2.9.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- API -->
|
<!-- API -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
package org.mustangproject.CII;
|
package org.mustangproject.CII;
|
||||||
import com.helger.commons.error.list.ErrorList;
|
|
||||||
import com.helger.en16931.cii2ubl.CIIToUBL22Converter;
|
|
||||||
import com.helger.ubl21.UBL21Writer;
|
|
||||||
import com.helger.ubl22.UBL22Writer;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import com.helger.commons.error.list.ErrorList;
|
||||||
|
import com.helger.en16931.cii2ubl.CIIToUBL23Converter;
|
||||||
|
import com.helger.ubl21.UBL21Writer;
|
||||||
|
import com.helger.ubl22.UBL22Writer;
|
||||||
|
import com.helger.ubl23.UBL23Writer;
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* converts a Cross Industry Invoice XML file to a UBL XML file
|
* converts a Cross Industry Invoice XML file to a UBL XML file
|
||||||
* thanks to Philip Helger for his library
|
* thanks to Philip Helger for his library
|
||||||
@@ -18,36 +20,45 @@ public class CIIToUBL {
|
|||||||
* @param output the UBL file to write to
|
* @param output the UBL file to write to
|
||||||
*/
|
*/
|
||||||
public void convert(File input, File output) {
|
public void convert(File input, File output) {
|
||||||
ErrorList occurred=new ErrorList();
|
final ErrorList occurred=new ErrorList();
|
||||||
CIIToUBL22Converter cc=new CIIToUBL22Converter();
|
final CIIToUBL23Converter cc=new CIIToUBL23Converter();
|
||||||
Serializable aUBL = cc.convertCIItoUBL(input, occurred);
|
final Serializable aUBL = cc.convertCIItoUBL(input, occurred);
|
||||||
if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_21.InvoiceType)
|
if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_21.InvoiceType)
|
||||||
{
|
{
|
||||||
UBL21Writer.invoice ()
|
UBL21Writer.invoice ()
|
||||||
.setFormattedOutput (true)
|
.setFormattedOutput (true)
|
||||||
.write ((oasis.names.specification.ubl.schema.xsd.invoice_21.InvoiceType) aUBL, output);
|
.write ((oasis.names.specification.ubl.schema.xsd.invoice_21.InvoiceType) aUBL, output);
|
||||||
}
|
}
|
||||||
else
|
else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_21.CreditNoteType)
|
||||||
if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_21.CreditNoteType)
|
|
||||||
{
|
{
|
||||||
UBL21Writer.creditNote ()
|
UBL21Writer.creditNote ()
|
||||||
.setFormattedOutput (true)
|
.setFormattedOutput (true)
|
||||||
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_21.CreditNoteType) aUBL, output);
|
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_21.CreditNoteType) aUBL, output);
|
||||||
}
|
}
|
||||||
else
|
else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_22.InvoiceType)
|
||||||
if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_22.InvoiceType)
|
|
||||||
{
|
{
|
||||||
UBL22Writer.invoice ()
|
UBL22Writer.invoice ()
|
||||||
.setFormattedOutput (true)
|
.setFormattedOutput (true)
|
||||||
.write ((oasis.names.specification.ubl.schema.xsd.invoice_22.InvoiceType) aUBL, output);
|
.write ((oasis.names.specification.ubl.schema.xsd.invoice_22.InvoiceType) aUBL, output);
|
||||||
}
|
}
|
||||||
else
|
else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_22.CreditNoteType)
|
||||||
if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_22.CreditNoteType)
|
|
||||||
{
|
{
|
||||||
UBL22Writer.creditNote ()
|
UBL22Writer.creditNote ()
|
||||||
.setFormattedOutput (true)
|
.setFormattedOutput (true)
|
||||||
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_22.CreditNoteType) aUBL, output);
|
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_22.CreditNoteType) aUBL, output);
|
||||||
}
|
}
|
||||||
|
else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.invoice_23.InvoiceType)
|
||||||
|
{
|
||||||
|
UBL23Writer.invoice ()
|
||||||
|
.setFormattedOutput (true)
|
||||||
|
.write ((oasis.names.specification.ubl.schema.xsd.invoice_23.InvoiceType) aUBL, output);
|
||||||
|
}
|
||||||
|
else if (aUBL instanceof oasis.names.specification.ubl.schema.xsd.creditnote_23.CreditNoteType)
|
||||||
|
{
|
||||||
|
UBL23Writer.creditNote ()
|
||||||
|
.setFormattedOutput (true)
|
||||||
|
.write ((oasis.names.specification.ubl.schema.xsd.creditnote_23.CreditNoteType) aUBL, output);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,22 +24,31 @@ package org.mustangproject.ZUGFeRD;
|
|||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
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;
|
import java.nio.file.Paths;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import org.junit.FixMethodOrder;
|
import org.assertj.core.api.Assertions;
|
||||||
import org.junit.runners.MethodSorters;
|
import org.junit.jupiter.api.Order;
|
||||||
import org.mustangproject.*;
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.mustangproject.BankDetails;
|
||||||
import org.mustangproject.CII.CIIToUBL;
|
import org.mustangproject.CII.CIIToUBL;
|
||||||
|
import org.mustangproject.Contact;
|
||||||
|
import org.mustangproject.Invoice;
|
||||||
|
import org.mustangproject.Item;
|
||||||
|
import org.mustangproject.Product;
|
||||||
|
import org.mustangproject.TradeParty;
|
||||||
|
|
||||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
|
||||||
public class UBLTest extends ResourceCase {
|
public class UBLTest extends ResourceCase {
|
||||||
final String TARGET_XML = "./target/testout-1Lieferschein.xml";
|
final String TARGET_XML = "./target/testout-1Lieferschein.xml";
|
||||||
|
|
||||||
|
public UBLTest() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Order(2)
|
||||||
public void testUBLBasic() {
|
public void testUBLBasic() {
|
||||||
|
|
||||||
// the writing part
|
// the writing part
|
||||||
@@ -52,21 +61,23 @@ public class UBLTest extends ResourceCase {
|
|||||||
try {
|
try {
|
||||||
final File tempFile = File.createTempFile("ZUGFeRD-UBL-", "-test");
|
final File tempFile = File.createTempFile("ZUGFeRD-UBL-", "-test");
|
||||||
c2u.convert(input, tempFile);
|
c2u.convert(input, tempFile);
|
||||||
expected = ResourceUtilities.readFile(StandardCharsets.UTF_8, expectedFile.getAbsolutePath()).replaceAll("\r\n", "\n");
|
expected = ResourceUtilities.readFile(StandardCharsets.UTF_8, expectedFile.getAbsolutePath());
|
||||||
result = ResourceUtilities.readFile(StandardCharsets.UTF_8, tempFile.getAbsolutePath()).replaceAll("\r\n", "\n");
|
result = ResourceUtilities.readFile(StandardCharsets.UTF_8, tempFile.getAbsolutePath());
|
||||||
} catch (final IOException e) {
|
} catch (final IOException e) {
|
||||||
fail("Exception should not happen: " + e.getMessage());
|
fail("Exception should not happen: " + e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
assertNotNull(result);
|
assertNotNull(result);
|
||||||
assertEquals(expected, result);
|
Assertions.assertThat(result).isXmlEqualTo(expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Order(1)
|
||||||
public void test1Lieferschein() {
|
public void test1Lieferschein() {
|
||||||
|
|
||||||
EinLieferscheinExporter oe = new EinLieferscheinExporter();
|
final EinLieferscheinExporter oe = new EinLieferscheinExporter();
|
||||||
Invoice i = new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
final Invoice i = new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date())
|
||||||
.setSender(new TradeParty("Test company", "teststr", "55232", "teststadt", "DE").addTaxID("DE4711").addVATID("DE0815").setContact(new Contact("Hans Test", "+49123456789", "test@example.org")).addBankDetails(new BankDetails("DE12500105170648489890", "COBADEFXXX")))
|
.setSender(new TradeParty("Test company", "teststr", "55232", "teststadt", "DE").addTaxID("DE4711").addVATID("DE0815").setContact(new Contact("Hans Test", "+49123456789", "test@example.org")).addBankDetails(new BankDetails("DE12500105170648489890", "COBADEFXXX")))
|
||||||
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE"))
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE"))
|
||||||
.setReferenceNumber("991-01484-64")//leitweg-id
|
.setReferenceNumber("991-01484-64")//leitweg-id
|
||||||
@@ -75,13 +86,13 @@ public class UBLTest extends ResourceCase {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
oe.setTransaction(i);
|
oe.setTransaction(i);
|
||||||
ByteArrayOutputStream baos=new ByteArrayOutputStream();
|
final ByteArrayOutputStream baos=new ByteArrayOutputStream();
|
||||||
oe.export(baos);
|
oe.export(baos);
|
||||||
|
|
||||||
String theXML = baos.toString("UTF-8");
|
final String theXML = baos.toString("UTF-8");
|
||||||
assertTrue(theXML.contains("<DespatchAdvice"));
|
assertTrue(theXML.contains("<DespatchAdvice"));
|
||||||
Files.write(Paths.get(TARGET_XML), theXML.getBytes(StandardCharsets.UTF_8));
|
Files.write(Paths.get(TARGET_XML), theXML.getBytes(StandardCharsets.UTF_8));
|
||||||
} catch (IOException e) {
|
} catch (final IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
<?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"
|
||||||
<cbc:CustomizationID>urn:cen.eu:en16931:2017:extended:urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
|
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
|
||||||
|
xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-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:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
|
||||||
<cbc:ID>RE-20201121/508</cbc:ID>
|
<cbc:ID>RE-20201121/508</cbc:ID>
|
||||||
<cbc:IssueDate>2020-11-21</cbc:IssueDate>
|
<cbc:IssueDate>2020-11-21</cbc:IssueDate>
|
||||||
@@ -13,21 +15,21 @@
|
|||||||
<cac:PartyName>
|
<cac:PartyName>
|
||||||
<cbc:Name>Bei Spiel GmbH</cbc:Name>
|
<cbc:Name>Bei Spiel GmbH</cbc:Name>
|
||||||
</cac:PartyName>
|
</cac:PartyName>
|
||||||
<cac:PostalAddress>
|
<cac:PostalAddress>
|
||||||
<cbc:StreetName>Ecke 12</cbc:StreetName>
|
<cbc:StreetName>Ecke 12</cbc:StreetName>
|
||||||
<cbc:CityName>Stadthausen</cbc:CityName>
|
<cbc:CityName>Stadthausen</cbc:CityName>
|
||||||
<cbc:PostalZone>12345</cbc:PostalZone>
|
<cbc:PostalZone>12345</cbc:PostalZone>
|
||||||
<cac:Country>
|
<cac:Country>
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
||||||
</cac:Country>
|
</cac:Country>
|
||||||
</cac:PostalAddress>
|
</cac:PostalAddress>
|
||||||
<cac:PartyTaxScheme>
|
<cac:PartyTaxScheme>
|
||||||
<cbc:CompanyID>DE136695976</cbc:CompanyID>
|
<cbc:CompanyID>DE136695976</cbc:CompanyID>
|
||||||
<cac:TaxScheme>
|
<cac:TaxScheme>
|
||||||
<cbc:ID>VAT</cbc:ID>
|
<cbc:ID>VAT</cbc:ID>
|
||||||
</cac:TaxScheme>
|
</cac:TaxScheme>
|
||||||
</cac:PartyTaxScheme>
|
</cac:PartyTaxScheme>
|
||||||
<cac:PartyLegalEntity>
|
<cac:PartyLegalEntity>
|
||||||
<cbc:RegistrationName>Bei Spiel GmbH</cbc:RegistrationName>
|
<cbc:RegistrationName>Bei Spiel GmbH</cbc:RegistrationName>
|
||||||
</cac:PartyLegalEntity>
|
</cac:PartyLegalEntity>
|
||||||
</cac:Party>
|
</cac:Party>
|
||||||
@@ -37,18 +39,18 @@
|
|||||||
<cac:PartyIdentification>
|
<cac:PartyIdentification>
|
||||||
<cbc:ID>2</cbc:ID>
|
<cbc:ID>2</cbc:ID>
|
||||||
</cac:PartyIdentification>
|
</cac:PartyIdentification>
|
||||||
<cac:PartyName>
|
<cac:PartyName>
|
||||||
<cbc:Name>Theodor Est</cbc:Name>
|
<cbc:Name>Theodor Est</cbc:Name>
|
||||||
</cac:PartyName>
|
</cac:PartyName>
|
||||||
<cac:PostalAddress>
|
<cac:PostalAddress>
|
||||||
<cbc:StreetName>Bahnstr. 42</cbc:StreetName>
|
<cbc:StreetName>Bahnstr. 42</cbc:StreetName>
|
||||||
<cbc:CityName>Spielkreis</cbc:CityName>
|
<cbc:CityName>Spielkreis</cbc:CityName>
|
||||||
<cbc:PostalZone>88802</cbc:PostalZone>
|
<cbc:PostalZone>88802</cbc:PostalZone>
|
||||||
<cac:Country>
|
<cac:Country>
|
||||||
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
<cbc:IdentificationCode>DE</cbc:IdentificationCode>
|
||||||
</cac:Country>
|
</cac:Country>
|
||||||
</cac:PostalAddress>
|
</cac:PostalAddress>
|
||||||
<cac:PartyLegalEntity>
|
<cac:PartyLegalEntity>
|
||||||
<cbc:RegistrationName>Theodor Est</cbc:RegistrationName>
|
<cbc:RegistrationName>Theodor Est</cbc:RegistrationName>
|
||||||
</cac:PartyLegalEntity>
|
</cac:PartyLegalEntity>
|
||||||
</cac:Party>
|
</cac:Party>
|
||||||
@@ -56,101 +58,111 @@
|
|||||||
<cac:Delivery>
|
<cac:Delivery>
|
||||||
<cbc:ActualDeliveryDate>2020-11-10</cbc:ActualDeliveryDate>
|
<cbc:ActualDeliveryDate>2020-11-10</cbc:ActualDeliveryDate>
|
||||||
</cac:Delivery>
|
</cac:Delivery>
|
||||||
|
<cac:PaymentMeans>
|
||||||
|
<cbc:PaymentMeansCode name="Bank transfer">42</cbc:PaymentMeansCode>
|
||||||
|
<cbc:PaymentID>RE-20201121/508</cbc:PaymentID>
|
||||||
|
<cac:PayeeFinancialAccount>
|
||||||
|
<cbc:ID>DE88200800000970375700</cbc:ID>
|
||||||
|
<cbc:Name>Max Mustermann</cbc:Name>
|
||||||
|
<cac:FinancialInstitutionBranch>
|
||||||
|
<cbc:ID>COBADEFFXXX</cbc:ID>
|
||||||
|
</cac:FinancialInstitutionBranch>
|
||||||
|
</cac:PayeeFinancialAccount>
|
||||||
|
</cac:PaymentMeans>
|
||||||
<cac:PaymentTerms>
|
<cac:PaymentTerms>
|
||||||
<cbc:Note>Zahlbar ohne Abzug bis 12.12.2020</cbc:Note>
|
<cbc:Note>Zahlbar ohne Abzug bis 12.12.2020</cbc:Note>
|
||||||
</cac:PaymentTerms>
|
</cac:PaymentTerms>
|
||||||
<cac:TaxTotal>
|
<cac:TaxTotal>
|
||||||
<cbc:TaxAmount currencyID="EUR">75.04</cbc:TaxAmount>
|
<cbc:TaxAmount currencyID="EUR">75.04</cbc:TaxAmount>
|
||||||
<cac:TaxSubtotal>
|
<cac:TaxSubtotal>
|
||||||
<cbc:TaxableAmount currencyID="EUR">160.00</cbc:TaxableAmount>
|
<cbc:TaxableAmount currencyID="EUR">160</cbc:TaxableAmount>
|
||||||
<cbc:TaxAmount currencyID="EUR">11.20</cbc:TaxAmount>
|
<cbc:TaxAmount currencyID="EUR">11.2</cbc:TaxAmount>
|
||||||
<cac:TaxCategory>
|
<cac:TaxCategory>
|
||||||
<cbc:ID>S</cbc:ID>
|
<cbc:ID>S</cbc:ID>
|
||||||
<cbc:Percent>7.00</cbc:Percent>
|
<cbc:Percent>7</cbc:Percent>
|
||||||
<cac:TaxScheme>
|
<cac:TaxScheme>
|
||||||
<cbc:ID>VAT</cbc:ID>
|
<cbc:ID>VAT</cbc:ID>
|
||||||
</cac:TaxScheme>
|
</cac:TaxScheme>
|
||||||
</cac:TaxCategory>
|
</cac:TaxCategory>
|
||||||
</cac:TaxSubtotal>
|
</cac:TaxSubtotal>
|
||||||
<cac:TaxSubtotal>
|
<cac:TaxSubtotal>
|
||||||
<cbc:TaxableAmount currencyID="EUR">336.00</cbc:TaxableAmount>
|
<cbc:TaxableAmount currencyID="EUR">336</cbc:TaxableAmount>
|
||||||
<cbc:TaxAmount currencyID="EUR">63.84</cbc:TaxAmount>
|
<cbc:TaxAmount currencyID="EUR">63.84</cbc:TaxAmount>
|
||||||
<cac:TaxCategory>
|
<cac:TaxCategory>
|
||||||
<cbc:ID>S</cbc:ID>
|
<cbc:ID>S</cbc:ID>
|
||||||
<cbc:Percent>19.00</cbc:Percent>
|
<cbc:Percent>19</cbc:Percent>
|
||||||
<cac:TaxScheme>
|
<cac:TaxScheme>
|
||||||
<cbc:ID>VAT</cbc:ID>
|
<cbc:ID>VAT</cbc:ID>
|
||||||
</cac:TaxScheme>
|
</cac:TaxScheme>
|
||||||
</cac:TaxCategory>
|
</cac:TaxCategory>
|
||||||
</cac:TaxSubtotal>
|
</cac:TaxSubtotal>
|
||||||
</cac:TaxTotal>
|
</cac:TaxTotal>
|
||||||
<cac:LegalMonetaryTotal>
|
<cac:LegalMonetaryTotal>
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">496.00</cbc:LineExtensionAmount>
|
<cbc:LineExtensionAmount currencyID="EUR">496</cbc:LineExtensionAmount>
|
||||||
<cbc:TaxExclusiveAmount currencyID="EUR">496.00</cbc:TaxExclusiveAmount>
|
<cbc:TaxExclusiveAmount currencyID="EUR">496</cbc:TaxExclusiveAmount>
|
||||||
<cbc:TaxInclusiveAmount currencyID="EUR">571.04</cbc:TaxInclusiveAmount>
|
<cbc:TaxInclusiveAmount currencyID="EUR">571.04</cbc:TaxInclusiveAmount>
|
||||||
<cbc:AllowanceTotalAmount currencyID="EUR">0.00</cbc:AllowanceTotalAmount>
|
<cbc:AllowanceTotalAmount currencyID="EUR">0</cbc:AllowanceTotalAmount>
|
||||||
<cbc:ChargeTotalAmount currencyID="EUR">0.00</cbc:ChargeTotalAmount>
|
<cbc:ChargeTotalAmount currencyID="EUR">0</cbc:ChargeTotalAmount>
|
||||||
<cbc:PrepaidAmount currencyID="EUR">0.00</cbc:PrepaidAmount>
|
<cbc:PrepaidAmount currencyID="EUR">0</cbc:PrepaidAmount>
|
||||||
<cbc:PayableAmount currencyID="EUR">571.04</cbc:PayableAmount>
|
<cbc:PayableAmount currencyID="EUR">571.04</cbc:PayableAmount>
|
||||||
</cac:LegalMonetaryTotal>
|
</cac:LegalMonetaryTotal>
|
||||||
<cac:InvoiceLine>
|
<cac:InvoiceLine>
|
||||||
<cbc:ID>1</cbc:ID>
|
<cbc:ID>1</cbc:ID>
|
||||||
<cbc:InvoicedQuantity unitCode="HUR">1.0000</cbc:InvoicedQuantity>
|
<cbc:InvoicedQuantity unitCode="HUR">1</cbc:InvoicedQuantity>
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">160.00</cbc:LineExtensionAmount>
|
<cbc:LineExtensionAmount currencyID="EUR">160</cbc:LineExtensionAmount>
|
||||||
<cac:Item>
|
<cac:Item>
|
||||||
<cbc:Description>Of a sample invoice</cbc:Description>
|
<cbc:Description>Of a sample invoice</cbc:Description>
|
||||||
<cbc:Name>Design (hours)</cbc:Name>
|
<cbc:Name>Design (hours)</cbc:Name>
|
||||||
<cac:ClassifiedTaxCategory>
|
<cac:ClassifiedTaxCategory>
|
||||||
<cbc:ID>S</cbc:ID>
|
<cbc:ID>S</cbc:ID>
|
||||||
<cbc:Percent>7.00</cbc:Percent>
|
<cbc:Percent>7</cbc:Percent>
|
||||||
<cac:TaxScheme>
|
<cac:TaxScheme>
|
||||||
<cbc:ID>VAT</cbc:ID>
|
<cbc:ID>VAT</cbc:ID>
|
||||||
</cac:TaxScheme>
|
</cac:TaxScheme>
|
||||||
</cac:ClassifiedTaxCategory>
|
</cac:ClassifiedTaxCategory>
|
||||||
</cac:Item>
|
</cac:Item>
|
||||||
<cac:Price>
|
<cac:Price>
|
||||||
<cbc:PriceAmount currencyID="EUR">160.0000</cbc:PriceAmount>
|
<cbc:PriceAmount currencyID="EUR">160</cbc:PriceAmount>
|
||||||
<cbc:BaseQuantity unitCode="HUR">1.0000</cbc:BaseQuantity>
|
<cbc:BaseQuantity unitCode="HUR">1</cbc:BaseQuantity>
|
||||||
</cac:Price>
|
</cac:Price>
|
||||||
</cac:InvoiceLine>
|
</cac:InvoiceLine>
|
||||||
<cac:InvoiceLine>
|
<cac:InvoiceLine>
|
||||||
<cbc:ID>2</cbc:ID>
|
<cbc:ID>2</cbc:ID>
|
||||||
<cbc:InvoicedQuantity unitCode="H87">400.0000</cbc:InvoicedQuantity>
|
<cbc:InvoicedQuantity unitCode="H87">400</cbc:InvoicedQuantity>
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">316.00</cbc:LineExtensionAmount>
|
<cbc:LineExtensionAmount currencyID="EUR">316</cbc:LineExtensionAmount>
|
||||||
<cac:Item>
|
<cac:Item>
|
||||||
<cbc:Description>various colors, ~2000ml</cbc:Description>
|
<cbc:Description>various colors, ~2000ml</cbc:Description>
|
||||||
<cbc:Name>Ballons</cbc:Name>
|
<cbc:Name>Ballons</cbc:Name>
|
||||||
<cac:ClassifiedTaxCategory>
|
<cac:ClassifiedTaxCategory>
|
||||||
<cbc:ID>S</cbc:ID>
|
<cbc:ID>S</cbc:ID>
|
||||||
<cbc:Percent>19.00</cbc:Percent>
|
<cbc:Percent>19</cbc:Percent>
|
||||||
<cac:TaxScheme>
|
<cac:TaxScheme>
|
||||||
<cbc:ID>VAT</cbc:ID>
|
<cbc:ID>VAT</cbc:ID>
|
||||||
</cac:TaxScheme>
|
</cac:TaxScheme>
|
||||||
</cac:ClassifiedTaxCategory>
|
</cac:ClassifiedTaxCategory>
|
||||||
</cac:Item>
|
</cac:Item>
|
||||||
<cac:Price>
|
<cac:Price>
|
||||||
<cbc:PriceAmount currencyID="EUR">0.7900</cbc:PriceAmount>
|
<cbc:PriceAmount currencyID="EUR">0.79</cbc:PriceAmount>
|
||||||
<cbc:BaseQuantity unitCode="H87">1.0000</cbc:BaseQuantity>
|
<cbc:BaseQuantity unitCode="H87">1</cbc:BaseQuantity>
|
||||||
</cac:Price>
|
</cac:Price>
|
||||||
</cac:InvoiceLine>
|
</cac:InvoiceLine>
|
||||||
<cac:InvoiceLine>
|
<cac:InvoiceLine>
|
||||||
<cbc:ID>3</cbc:ID>
|
<cbc:ID>3</cbc:ID>
|
||||||
<cbc:InvoicedQuantity unitCode="LTR">800.0000</cbc:InvoicedQuantity>
|
<cbc:InvoicedQuantity unitCode="LTR">800</cbc:InvoicedQuantity>
|
||||||
<cbc:LineExtensionAmount currencyID="EUR">20.00</cbc:LineExtensionAmount>
|
<cbc:LineExtensionAmount currencyID="EUR">20</cbc:LineExtensionAmount>
|
||||||
<cac:Item>
|
<cac:Item>
|
||||||
<cbc:Description></cbc:Description>
|
<cbc:Name>Hot air „heiße Luft“ (litres)</cbc:Name>
|
||||||
<cbc:Name>Hot air „heiße Luft“ (litres)</cbc:Name>
|
<cac:ClassifiedTaxCategory>
|
||||||
<cac:ClassifiedTaxCategory>
|
|
||||||
<cbc:ID>S</cbc:ID>
|
<cbc:ID>S</cbc:ID>
|
||||||
<cbc:Percent>19.00</cbc:Percent>
|
<cbc:Percent>19</cbc:Percent>
|
||||||
<cac:TaxScheme>
|
<cac:TaxScheme>
|
||||||
<cbc:ID>VAT</cbc:ID>
|
<cbc:ID>VAT</cbc:ID>
|
||||||
</cac:TaxScheme>
|
</cac:TaxScheme>
|
||||||
</cac:ClassifiedTaxCategory>
|
</cac:ClassifiedTaxCategory>
|
||||||
</cac:Item>
|
</cac:Item>
|
||||||
<cac:Price>
|
<cac:Price>
|
||||||
<cbc:PriceAmount currencyID="EUR">0.0250</cbc:PriceAmount>
|
<cbc:PriceAmount currencyID="EUR">0.025</cbc:PriceAmount>
|
||||||
<cbc:BaseQuantity unitCode="LTR">1.0000</cbc:BaseQuantity>
|
<cbc:BaseQuantity unitCode="LTR">1</cbc:BaseQuantity>
|
||||||
</cac:Price>
|
</cac:Price>
|
||||||
</cac:InvoiceLine>
|
</cac:InvoiceLine>
|
||||||
</Invoice>
|
</Invoice>
|
||||||
Reference in New Issue
Block a user