";
- if ((getProfile() != Profiles.getByName("Minimum")) && (getProfile() != Profiles.getByName("BASICWL"))) {
+ if ((getProfile() != Profiles.getByName("Minimum"))) {
xml += "" + currencyFormat(calc.getTotal()) + "";
xml += chargesTotalLine
+ allowanceTotalLine;
@@ -910,12 +924,12 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
if (trans.getInvoiceReferencedDocuments() != null) {
for (ReferencedDocument doc : trans.getInvoiceReferencedDocuments()) {
xml += ""
- + ""
- + XMLTools.encodeXML(doc.getIssuerAssignedID()) + "";
+ + ""
+ + XMLTools.encodeXML(doc.getIssuerAssignedID()) + "";
if (doc.getFormattedIssueDateTime() != null) {
xml += ""
- + DATE.qdtFormat(doc.getFormattedIssueDateTime())
- + "";
+ + DATE.qdtFormat(doc.getFormattedIssueDateTime())
+ + "";
}
xml += "";
}
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java
index 53f4562b..daa26916 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java
@@ -383,29 +383,7 @@ public class ZUGFeRDInvoiceImporter {
});
});
String street, name, additionalStreet, city, postal, countrySubentity, line, country = null;
-/*
- String idx = extractString("//*[local-name()=\"DeliveryLocation\"]/*[local-name() = \"ID\"]");
- street = extractString("//*[local-name()=\"DeliveryLocation\"]/*[local-name()=\"Address\"]/*[local-name()=\"StreetName\"]");
- additionalStreet = extractString("//*[local-name()=\"DeliveryLocation\"]/*[local-name() = \"Address\"]/*[local-name() = \"AdditionalStreetName\"]");
- city = extractString("//*[local-name()=\"DeliveryLocation\"]/*[local-name() = \"Address\"]/*[local-name() = \"CityName\"]");
- postal = extractString("//*[local-name()=\"DeliveryLocation\"]/*[local-name() = \"Address\"]/*[local-name() = \"PostalZone\"]");
- countrySubentity = extractString("//*[local-name()=\"DeliveryLocation\"]/*[local-name() = \"Address\"]/*[local-name() = \"CountrySubentity\"]");
- line = extractString("//*[local-name()=\"DeliveryLocation\"]/*[local-name() = \"Address\"]//*[local-name() = \"AddressLine\"]/*[local-name() = \"Line\"]");
- country = extractString("//*[local-name()=\"DeliveryLocation\"]/*[local-name() = \"Address\"]//*[local-name() = \"Country\"]/*[local-name() = \"IdentificationCode\"]");
- name = extractString("//*[local-name()=\"DeliveryLocation\"]/*[local-name() = \"DeliveryParty\"]//*[local-name() = \"PartyName\"]/*[local-name() = \"Name\"]");
-*/
zpp.setDeliveryAddress(delivery);
- /*
- zpp.setDeliveryAddress(new TradeParty()
- .setStreet(street)
- .setAdditionalAddress(additionalStreet)
- .setLocation(city)
- .setZIP(postal)
- .setAdditionalAddressExtension(line)
- .setCountry(country)
- .setName(name)
- );
-*/
}
@@ -420,14 +398,6 @@ public class ZUGFeRDInvoiceImporter {
XPathExpression shipPayee = xpath.compile("//*[local-name()=\"PayeeParty\"]/*");
NodeList ublPayeeNodes = (NodeList) shipPayee.evaluate(getDocument(), XPathConstants.NODESET);
-// if(ublPayeeNodes != null) {
-// TradeParty payee = new TradeParty();
-// NodeMap nodeMap = new NodeMap(ublPayeeNodes).getAsNodeMap("PayeeParty").get();
-// nodeMap.getNode("ID").ifPresent(s -> {
-// SchemedID sID = new SchemedID().setScheme(s.getAttributes().getNamedItem("schemeID").getTextContent()).setId(s.getTextContent());
-// payee.addGlobalID(sID);
-// });
-// }
//NodeList UBLpayeeNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
if (ublPayeeNodes.getLength() > 0) {
zpp.setPayee(new TradeParty(ublPayeeNodes));
@@ -598,6 +568,15 @@ public class ZUGFeRDInvoiceImporter {
}
}
+ String creditorReferenceID = extractString("//*[local-name()=\"ApplicableHeaderTradeSettlement\"]/*[local-name()=\"CreditorReferenceID\"]").trim();//BT-90
+ if ((creditorReferenceID == null)||(creditorReferenceID.length()==0)) {
+ //maybe it's there in UBL?
+ creditorReferenceID = extractString("//*[local-name()=\"AccountingSupplierParty\"]/*[local-name()=\"Party\"]/*[local-name()=\"PartyIdentification\"]/*[local-name()=\"ID\"]").trim();
+ }
+ if ((creditorReferenceID != null)&&(creditorReferenceID.length()>0)) {
+ zpp.setCreditorReferenceID(creditorReferenceID);
+ }
+
xpr = xpath.compile("//*[local-name()=\"ApplicableHeaderTradeDelivery\"]|//*[local-name()=\"Delivery\"]");
NodeList headerTradeDeliveryNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
@@ -836,9 +815,6 @@ public class ZUGFeRDInvoiceImporter {
}
}
}
-// if ((paymentMeansChilds.item(paymentTermChildIndex).getLocalName() != null) && (paymentTermChilds.item(paymentTermChildIndex).getLocalName().equals("DirectDebitMandateID"))) {
-// directDebitMandateID = paymentTermChilds.item(paymentTermChildIndex).getTextContent();
-// }
if ((paymentMeansChilds.item(meansChildIndex).getLocalName() != null)
&& (paymentMeansChilds.item(meansChildIndex).getLocalName().equals("PaymentMandate"))) {
NodeList paymentMandateChilds = paymentMeansChilds.item(meansChildIndex).getChildNodes();
@@ -974,6 +950,7 @@ public class ZUGFeRDInvoiceImporter {
NodeList chargeNodeChilds = chargeNodes.item(i).getChildNodes();
boolean isCharge = true;
String chargeAmount = null;
+ String basisAmount = null;
String reason = null;
String reasonCode = null;
String taxPercent = null;
@@ -1001,6 +978,8 @@ public class ZUGFeRDInvoiceImporter {
} else if (chargeChildName.equals("ActualAmount") || chargeChildName.equals("Amount")) {
chargeAmount = XMLTools.trimOrNull(chargeNodeChilds.item(chargeChildIndex));
+ } else if (chargeChildName.equals("BasisAmount")) {
+ basisAmount = XMLTools.trimOrNull(chargeNodeChilds.item(chargeChildIndex));
} else if (chargeChildName.equals("Reason") || chargeChildName.equals("AllowanceChargeReason")) {
reason = XMLTools.trimOrNull(chargeNodeChilds.item(chargeChildIndex));
} else if (chargeChildName.equals("ReasonCode") || chargeChildName.equals("AllowanceChargeReasonCode")) {
@@ -1028,6 +1007,9 @@ public class ZUGFeRDInvoiceImporter {
if (taxPercent != null) {
c.setTaxPercent(new BigDecimal(taxPercent));
}
+ if (basisAmount != null) {
+ c.setBasisAmount(new BigDecimal(basisAmount));
+ }
zpp.addCharge(c);
} else {
Allowance a = new Allowance(new BigDecimal(chargeAmount));
@@ -1040,6 +1022,9 @@ public class ZUGFeRDInvoiceImporter {
if (taxPercent != null) {
a.setTaxPercent(new BigDecimal(taxPercent));
}
+ if (basisAmount != null) {
+ a.setBasisAmount(new BigDecimal(basisAmount));
+ }
zpp.addAllowance(a);
}
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/model/TaxCategoryCodeTypeConstants.java b/library/src/main/java/org/mustangproject/ZUGFeRD/model/TaxCategoryCodeTypeConstants.java
index c9ecc2a0..afd5ee28 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/model/TaxCategoryCodeTypeConstants.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/model/TaxCategoryCodeTypeConstants.java
@@ -1,21 +1,23 @@
-/** **********************************************************************
- *
+/**
+ * *********************************************************************
+ *
* Copyright 2018 Jochen Staerk
- *
+ *
* Use is subject to license terms.
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0.
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *
+ *
* See the License for the specific language governing permissions and
* limitations under the License.
- *
- *********************************************************************** */
+ *
+ * **********************************************************************
+ */
package org.mustangproject.ZUGFeRD.model;
import java.util.Set;
@@ -31,5 +33,5 @@ public class TaxCategoryCodeTypeConstants {
public static final String INTRACOMMUNITY = "K";
public static final String FREEEXPORT = "G";
- public static Set CATEGORY_CODES_WITH_EXEMPTION_REASON = Stream.of(INTRACOMMUNITY, REVERSECHARGE, TAXEXEMPT, FREEEXPORT).collect(Collectors.toSet());
+ public static Set CATEGORY_CODES_WITH_EXEMPTION_REASON = Stream.of(INTRACOMMUNITY, REVERSECHARGE, TAXEXEMPT, FREEEXPORT, UNTAXEDSERVICE).collect(Collectors.toSet());
}
diff --git a/library/src/main/resources/stylesheets/l10n/de.xml b/library/src/main/resources/stylesheets/l10n/de.xml
index fa975bb6..1f893468 100644
--- a/library/src/main/resources/stylesheets/l10n/de.xml
+++ b/library/src/main/resources/stylesheets/l10n/de.xml
@@ -136,7 +136,7 @@
Vergabenummer
Kennung der Empfangsbestätigung
Kennung der Versandanzeige
- Prozesskennung
+ Prozesskennung
Spezifikationskennung
Objektkennung
Schema der Objektkennung
diff --git a/library/src/main/resources/stylesheets/ubl-creditnote-xr.xsl b/library/src/main/resources/stylesheets/ubl-creditnote-xr.xsl
index da2b18c8..e7498922 100644
--- a/library/src/main/resources/stylesheets/ubl-creditnote-xr.xsl
+++ b/library/src/main/resources/stylesheets/ubl-creditnote-xr.xsl
@@ -99,11 +99,11 @@
-
+
-
+
diff --git a/library/src/main/resources/stylesheets/ubl-invoice-xr.xsl b/library/src/main/resources/stylesheets/ubl-invoice-xr.xsl
index 7bdec35d..0ba37f26 100644
--- a/library/src/main/resources/stylesheets/ubl-invoice-xr.xsl
+++ b/library/src/main/resources/stylesheets/ubl-invoice-xr.xsl
@@ -98,11 +98,11 @@
-
+
-
+
diff --git a/library/src/main/resources/stylesheets/xr-content.xsl b/library/src/main/resources/stylesheets/xr-content.xsl
index cbc50ec2..69f91322 100644
--- a/library/src/main/resources/stylesheets/xr-content.xsl
+++ b/library/src/main/resources/stylesheets/xr-content.xsl
@@ -818,7 +818,6 @@
-
diff --git a/library/src/main/resources/stylesheets/xrechnung-html.univ.xsl b/library/src/main/resources/stylesheets/xrechnung-html.univ.xsl
index 92689837..618feb87 100644
--- a/library/src/main/resources/stylesheets/xrechnung-html.univ.xsl
+++ b/library/src/main/resources/stylesheets/xrechnung-html.univ.xsl
@@ -1797,7 +1797,7 @@ function downloadData (element_id) {
:
diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/CalculationTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/CalculationTest.java
index 9f3f3ea2..7fc94f5f 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/CalculationTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/CalculationTest.java
@@ -54,9 +54,9 @@ public class CalculationTest extends ResourceCase {
final LineCalculator calculator = new LineCalculator(currentItem);
- assertEquals(valueOf(133.857).stripTrailingZeros(), calculator.getPrice().stripTrailingZeros());
- assertEquals(valueOf(1606.28).stripTrailingZeros(), calculator.getItemTotalNetAmount().stripTrailingZeros());
- assertEquals(valueOf(257.0048).stripTrailingZeros(), calculator.getItemTotalVATAmount().stripTrailingZeros());
+ assertEquals(valueOf(148.73).stripTrailingZeros(), calculator.getPrice().stripTrailingZeros());
+ assertEquals(valueOf(1769.89).stripTrailingZeros(), calculator.getItemTotalNetAmount().stripTrailingZeros());
+ assertEquals(valueOf(283.1824).stripTrailingZeros(), calculator.getItemTotalVATAmount().stripTrailingZeros());
}
@Test
@@ -74,17 +74,20 @@ public class CalculationTest extends ResourceCase {
final LineCalculator calculator = new LineCalculator(currentItem);
- assertEquals(valueOf(163.603).stripTrailingZeros(), calculator.getPrice().stripTrailingZeros());
- assertEquals(valueOf(1963.24).stripTrailingZeros(), calculator.getItemTotalNetAmount().stripTrailingZeros());
- assertEquals(valueOf(314.1184).stripTrailingZeros(), calculator.getItemTotalVATAmount().stripTrailingZeros());
+ assertEquals(valueOf(148.73).stripTrailingZeros(), calculator.getPrice().stripTrailingZeros());
+ assertEquals(valueOf(1799.63).stripTrailingZeros(), calculator.getItemTotalNetAmount().stripTrailingZeros());
+ assertEquals(valueOf(287.9408).stripTrailingZeros(), calculator.getItemTotalVATAmount().stripTrailingZeros());
}
@Test
public void testLineCalculatorForeignCurrencyExample() {
-
-/*
+/*** xml of official fx sample with allowances and charges
+ * 10x100 with 10% and 50€ item discount =850€
+ * +8,75 charges on document level=858,75, +19%VAT=1021,91
+ * prepaid 500->due payable=521,91
+ */
File inputCII = getResourceAsFile("Extended_fremdwaehrung.xml");
-inputCII=new File("C:\\Users\\jstaerk\\workspace\\XMLExamples\\zfdiverses\\20250407\\fremdwaehrung.xml");
+
ZUGFeRDInvoiceImporter zii=new ZUGFeRDInvoiceImporter();
Invoice invoice=null;
zii.doIgnoreCalculationErrors();
@@ -104,9 +107,9 @@ inputCII=new File("C:\\Users\\jstaerk\\workspace\\XMLExamples\\zfdiverses\\20250
final TransactionCalculator calculator = new TransactionCalculator(invoice);
- assertEquals(valueOf(521.91).stripTrailingZeros(), calculator.getGrandTotal().stripTrailingZeros());
+ assertEquals(valueOf(521.91).stripTrailingZeros(), calculator.getDuePayable().stripTrailingZeros());
+
- */
}
@@ -221,9 +224,94 @@ inputCII=new File("C:\\Users\\jstaerk\\workspace\\XMLExamples\\zfdiverses\\20250
invoice.addAllowance(new Allowance().setPercent(total_discount_percent).setTaxPercent(sales_tax_percent1).setReasonCode("95").setReason("Rabatte"));
}
TransactionCalculator calculator = new TransactionCalculator(invoice);
- assertEquals(valueOf(101.86).stripTrailingZeros(), calculator.getGrandTotal().stripTrailingZeros());
+ assertEquals(valueOf(307.18).stripTrailingZeros(), calculator.getGrandTotal().stripTrailingZeros());
}
+ public void testSimpleItemPercentAllowance() {
+ /***
+ * a product with net 1.10 and qty 5 and relative item allowance of 10% should return 5 as line and grand total
+ */
+ SimpleDateFormat sqlDate = new SimpleDateFormat("yyyy-MM-dd");
+
+ Invoice invoice = new Invoice();
+ invoice.setDocumentName("Rechnung");
+ invoice.setNumber("777777");
+ try {
+ invoice.setIssueDate(sqlDate.parse("2020-12-31"));
+ invoice.setDetailedDeliveryPeriod(sqlDate.parse("2020-12-01 - 2020-12-31".split(" - ")[0]), sqlDate.parse("2020-12-01 - 2020-12-31".split(" - ")[1]));
+ invoice.setDeliveryDate(sqlDate.parse("2020-12-31"));
+ invoice.setDueDate(sqlDate.parse("2021-01-15"));
+ } catch (Exception e) {
+ LOGGER.error("Failed to set dates", e);
+
+ }
+ TradeParty sender = new TradeParty("Maier GmbH", "Musterweg 5", "11111", "Testung", "DE");
+ sender.addVATID("DE2222222222");
+ invoice.setSender(sender);
+
+ /* trade party (recipient) */
+ TradeParty recipient = new TradeParty("Teston GmbH" + " " + "Zentrale" + " " + "", "Testweg 5", "11111", "Testung", "DE");
+ recipient.setID("111111");
+ recipient.addVATID("DE111111111");
+ invoice.setRecipient(recipient);
+
+ /* item */
+ Product product;
+ Item item;
+
+ product = new Product("AAA", "", "H84", BigDecimal.ZERO);
+ item = new Item(product, new BigDecimal("1.10"), new BigDecimal(5.00));
+
+ item.addAllowance(new Allowance().setPercent(new BigDecimal(10)).setTaxPercent(BigDecimal.ZERO));
+ invoice.addItem(item);
+
+ TransactionCalculator calculator = new TransactionCalculator(invoice);
+ assertEquals(new BigDecimal(5), calculator.getGrandTotal().stripTrailingZeros());
+ }
+
+ public void testSimpleItemTotalAllowance() {
+ /***
+ * a product with net 1 and qty 5 and absolute _item_ allowance of 1 should return 4 as line total, and grand total
+ */
+ SimpleDateFormat sqlDate = new SimpleDateFormat("yyyy-MM-dd");
+
+ Invoice invoice = new Invoice();
+ invoice.setDocumentName("Rechnung");
+ invoice.setNumber("777777");
+ try {
+ invoice.setIssueDate(sqlDate.parse("2020-12-31"));
+ invoice.setDetailedDeliveryPeriod(sqlDate.parse("2020-12-01 - 2020-12-31".split(" - ")[0]), sqlDate.parse("2020-12-01 - 2020-12-31".split(" - ")[1]));
+ invoice.setDeliveryDate(sqlDate.parse("2020-12-31"));
+ invoice.setDueDate(sqlDate.parse("2021-01-15"));
+ } catch (Exception e) {
+ LOGGER.error("Failed to set dates", e);
+
+ }
+ TradeParty sender = new TradeParty("Maier GmbH", "Musterweg 5", "11111", "Testung", "DE");
+ sender.addVATID("DE2222222222");
+ invoice.setSender(sender);
+
+ /* trade party (recipient) */
+ TradeParty recipient = new TradeParty("Teston GmbH" + " " + "Zentrale" + " " + "", "Testweg 5", "11111", "Testung", "DE");
+ recipient.setID("111111");
+ recipient.addVATID("DE111111111");
+ invoice.setRecipient(recipient);
+
+ /* item */
+ Product product;
+ Item item;
+
+ product = new Product("AAA", "", "H84", BigDecimal.ZERO);
+ item = new Item(product, new BigDecimal("1.00"), new BigDecimal(5.00));
+
+ item.addAllowance(new Allowance(new BigDecimal(1)).setTaxPercent(BigDecimal.ZERO));
+ invoice.addItem(item);
+
+ TransactionCalculator calculator = new TransactionCalculator(invoice);
+ assertEquals(new BigDecimal(4), calculator.getGrandTotal().stripTrailingZeros());
+ }
+
+
/**
* LineCalculator should not throw an exception when calculating a non-terminating decimal expansion
* */
diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java
index bb41fb5a..fd0e7b97 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/DeSerializationTest.java
@@ -395,7 +395,7 @@ public class DeSerializationTest extends ResourceCase {
try {
Invoice newInvoiceFromJSON = mapper.readValue(json, Invoice.class);
TransactionCalculator tc=new TransactionCalculator(newInvoiceFromJSON);
- assertEquals(new BigDecimal("19.52"),tc.getGrandTotal());
+ assertEquals(new BigDecimal("18.92"),tc.getGrandTotal());
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/VisualizationTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/VisualizationTest.java
index 2b63a5da..db772ff1 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/VisualizationTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/VisualizationTest.java
@@ -32,6 +32,8 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
+import java.util.Date;
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class VisualizationTest extends ResourceCase {
@@ -80,7 +82,7 @@ public class VisualizationTest extends ResourceCase {
} catch (ParserConfigurationException e) {
fail("ParserConfigurationException should not happen: " + e.getMessage());
}
-
+
assertNotNull(result);
/* remove file endings so that tests can also pass after checking
out from git with arbitrary options (which may include CSRF changes)
@@ -94,6 +96,7 @@ public class VisualizationTest extends ResourceCase {
.replace(" ", ""));
}
+
public void testPDFVisualizationCII() {
File CIIinputFile = getResourceAsFile("cii/01.01a-INVOICE.cii.xml");
diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java
index df97bd6a..e7a2a951 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java
@@ -34,6 +34,7 @@ import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
+import org.mustangproject.ZUGFeRD.model.TaxCategoryCodeTypeConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import java.io.BufferedWriter;
@@ -61,8 +62,8 @@ public class XRTest extends TestCase {
TradeParty recipient = new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE");
recipient.setEmail("quack@ducktown.org");
Invoice i = createInvoice(recipient);
- String legalOrgID="aCustomSellerLegalOrgId";
- String sellerID="aSellerTradePartyID";
+ String legalOrgID = "aCustomSellerLegalOrgId";
+ String sellerID = "aSellerTradePartyID";
i.getSender().setLegalOrganisation(new LegalOrganisation(legalOrgID));
i.getSender().setID(sellerID);
ZUGFeRD2PullProvider zf2p = new ZUGFeRD2PullProvider();
@@ -70,8 +71,8 @@ public class XRTest extends TestCase {
zf2p.generateXML(i);
String theXML = new String(zf2p.getXML(), StandardCharsets.UTF_8);
assertTrue(theXML.contains("
"+sellerID+""));// must be possible without scheme #
- assertTrue(theXML.contains(""+legalOrgID+""));// must be possible without scheme #
+ assertTrue(theXML.contains("" + sellerID + ""));// must be possible without scheme #
+ assertTrue(theXML.contains("" + legalOrgID + ""));// must be possible without scheme #
assertThat(theXML).valueByXPath("count(//*[local-name()='IncludedSupplyChainTradeLineItem'])")
.asInt()
.isEqualTo(1); //2 errors are OK because there is a known bug
@@ -90,6 +91,7 @@ public class XRTest extends TestCase {
}
+
public void testXREdgeExport() {
// the writing part
@@ -109,7 +111,7 @@ public class XRTest extends TestCase {
.setReferenceNumber("991-01484-64")//leitweg-id
// not using any VAT, this is also a test of zero-rated goods:
.setNumber(number).addItem(new Item(new Product("Testprodukt", "", "C62", BigDecimal.ZERO).setTaxExemptionReason("Kleinunternehmer"), amount, new BigDecimal(1.0)))
- .setPayee( new TradeParty().setName("VR Factoring GmbH").setID("DE813838785").setLegalOrganisation(new LegalOrganisation("391200LDDFJDMIPPMZ54", "0199")))
+ .setPayee(new TradeParty().setName("VR Factoring GmbH").setID("DE813838785").setLegalOrganisation(new LegalOrganisation("391200LDDFJDMIPPMZ54", "0199")))
.embedFileInXML(fe1);
@@ -149,9 +151,9 @@ public class XRTest extends TestCase {
fail("ParseException not expected");
} catch (IOException e) {
fail("IOException not expected");
- }
- FileAttachment[] attachedFiles=readInvoice.getAdditionalReferencedDocuments();
- assertNotNull(attachedFiles);
+ }
+ FileAttachment[] attachedFiles = readInvoice.getAdditionalReferencedDocuments();
+ assertNotNull(attachedFiles);
assertEquals(attachedFiles.length, 1);
assertTrue(Arrays.equals(attachedFiles[0].getData(), b));
@@ -289,6 +291,36 @@ public class XRTest extends TestCase {
}
+ public void testApplicablePercentInUntaxedService() {
+
+ // the writing part
+ TradeParty recipient = new TradeParty("Franz Müller", null, "55232", "Entenhausen", "DE");
+ String orgname = "Test company";
+ String number = "123";
+ String amountStr = "1.00";
+ BigDecimal amount = new BigDecimal(amountStr);
+ var i = new Invoice().setDueDate(new java.util.Date()).setIssueDate(new java.util.Date()).setDeliveryDate(new java.util.Date())
+ .setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID("DE4711").addVATID("DE0815").setEmail("info@example.org").setContact(new org.mustangproject.Contact("Hans Test", "+49123456789", "test@example.org")).addBankDetails(new org.mustangproject.BankDetails("DE12500105170648489890", "COBADEFXXX")))
+ .setRecipient(recipient)
+ .setReferenceNumber("991-01484-64")//leitweg-id
+ // not using any VAT, this is also a test of zero-rated goods:
+ .setNumber(number).addItem(new org.mustangproject.Item(new org.mustangproject.Product("Testprodukt", "", "C62", java.math.BigDecimal.ZERO).setTaxCategoryCode(TaxCategoryCodeTypeConstants.UNTAXEDSERVICE).setTaxExemptionReason("Expemtion reason"), amount, new java.math.BigDecimal(1.0)));
+
+ ZUGFeRD2PullProvider zf2p = new ZUGFeRD2PullProvider();
+ zf2p.setProfile(Profiles.getByName("XRechnung"));
+ zf2p.generateXML(i);
+ String theXML = new String(zf2p.getXML(), StandardCharsets.UTF_8);
+ // Untaxed services don't have the field RateApplicablePercent, since it would be always 0. An error is thrown on validation, if 0 is set.
+ assertThat(theXML).valueByXPath("count(//*[local-name()='RateApplicablePercent'])")
+ .asInt()
+ .isEqualTo(0);
+
+ //Exemption reason needs to be set if TaxCategoryCode == "O", reason should be at the product and in the ApplicableTradeTax
+ assertThat(theXML).valueByXPath("count(//*[local-name()='ExemptionReason'])")
+ .asInt()
+ .isEqualTo(2);
+ }
+
private org.mustangproject.Invoice createInvoice(TradeParty recipient) {
String orgname = "Test company";
String number = "123";
diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java
index 10f28a3a..9c60b75b 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java
@@ -141,7 +141,7 @@ public class ZF2PushTest extends TestCase {
String senderDescription = "Kleinunternehmer";
String taxID = "9990815";
- String theNote="oh lala";
+ String theNote = "oh lala";
BigDecimal price = new BigDecimal(priceStr);
try {
InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf");
@@ -177,7 +177,7 @@ public class ZF2PushTest extends TestCase {
throw new RuntimeException(e);
}
- assertEquals(i.getZFItems()[0].getNotesWithSubjectCode().get(0).getContent(),theNote);
+ assertEquals(i.getZFItems()[0].getNotesWithSubjectCode().get(0).getContent(), theNote);
assertEquals(senderDescription, i.getSender().getDescription());
// now check the contents (like MustangReaderTest)
@@ -255,16 +255,16 @@ public class ZF2PushTest extends TestCase {
// 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)))));
- Invoice i=new Invoice().setDueDate(new Date()).setIssueDate(new Date())
+ Invoice i = 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)
.addCharge(new Charge(new BigDecimal(1)).setReasonCode("ABK").setReason("AReason").setTaxPercent(new BigDecimal(19)))
- .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(new BigDecimal("0.1")).setReasonCode("95")))
+ .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50)).setReason("In love with salesperson")))
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(2.0)).addCharge(new Charge(new BigDecimal(1)).setReasonCode("ABK").setReason("AnotherReason")))
- .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)).setReasonCode("ABK").setReason("Yet another reason")).addAllowance(new Allowance(new BigDecimal("1")).setReason("Something completely strange")));
ze.setTransaction(i);
@@ -275,21 +275,20 @@ public class ZF2PushTest extends TestCase {
fail("IOException should not be raised");
}
- // now check the contents (like MustangReaderTest)
- ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_ITEMCHARGESALLOWANCESPDF);
-
- assertEquals("EUR", zi.getInvoiceCurrencyCode());
- assertTrue(zi.getUTF8().contains("0911623562")); // fax number
- assertTrue(zi.getUTF8().contains("ABK"));
-
- // Reading ZUGFeRD
- assertEquals("19.52", zi.getAmount());
- assertEquals(orgname, zi.getHolder());
- assertEquals(number, zi.getForeignReference());
try {
+ // now check the contents (like MustangReaderTest)
+ ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_ITEMCHARGESALLOWANCESPDF);
+ assertEquals("EUR", zi.getInvoiceCurrencyCode());
+ assertTrue(zi.getUTF8().contains("0911623562")); // fax number
+ assertTrue(zi.getUTF8().contains("ABK"));
+
+ // Reading ZUGFeRD
+ assertEquals("18.92", zi.getAmount());
+ assertEquals(orgname, zi.getHolder());
+ assertEquals(number, zi.getForeignReference());
assertEquals(zi.getVersion(), 2);
} catch (Exception e) {
- e.printStackTrace();
+ fail("Exception should not be raised");
}
}
@@ -595,7 +594,7 @@ public class ZF2PushTest extends TestCase {
assertEquals(1, i.getInvoiceReferencedDocuments().size());
assertEquals("abcd1234", i.getInvoiceReferencedDocuments().get(0).getIssuerAssignedID());
assertEquals("4304171000002", i.getRecipient().getGlobalID());
- SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
assertEquals(occurrenceFrom, sdf.format(i.getDetailedDeliveryPeriodFrom()));
assertEquals(occurrenceTo, sdf.format(i.getDetailedDeliveryPeriodTo()));
assertEquals("2001015001325", i.getZFItems()[0].getProduct().getGlobalID());
@@ -629,7 +628,7 @@ public class ZF2PushTest extends TestCase {
.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)).addAllowance(new Allowance(BigDecimal.ONE)), 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)))
);
String theXML = new String(ze.getProvider().getXML());
@@ -645,7 +644,7 @@ public class ZF2PushTest extends TestCase {
assertEquals("EUR", zi.getInvoiceCurrencyCode());
// Reading ZUGFeRD
- assertEquals("4046.00", zi.getAmount());
+ assertEquals("10805.20", zi.getAmount());
assertEquals(orgname, zi.getHolder());
assertEquals(number, zi.getForeignReference());
try {
@@ -675,8 +674,8 @@ public class ZF2PushTest extends TestCase {
.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)).addCharge(new Charge().setPercent(new BigDecimal(50)).setTaxPercent(new BigDecimal(19))))
- .addAllowance(new Allowance().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)).setReasonCode("ABK")))
+ .addAllowance(new Allowance().setPercent(new BigDecimal(50)).setTaxPercent(new BigDecimal(19)).setReason("Mengenrabatt"))
);
String theXML = new String(ze.getProvider().getXML());
assertTrue(theXML.contains("
+
+
+
+ urn:cen.eu:en16931:2017
+
+
+
+ 123456
+ 380
+
+ 20250426
+
+
+ Jahresbeitrag
+
+
+
+
+
+ 1
+
+
+ Product: Plus
+
+
+
+ 239.00
+
+
+
+ 1.00
+
+
+
+ VAT
+ S
+ 19.00
+
+
+ 239.00
+
+
+
+
+
+ 1
+
+
+ Getting Started-Rabatt
+
+
+
+ 120.00
+
+
+
+ -1.00
+
+
+
+ VAT
+ S
+ 19.00
+
+
+ -120.00
+
+
+
+
+ 7777777
+
+ ---
+
+ ---
+ Geschäftsführer
+
+ ---
+
+
+ q@q.com
+
+
+
+ 12345
+ Str. 11
+ ---
+ DE
+
+
+ a@a.com
+
+
+ DE111111111
+
+
+
+ a & b GmbH
+
+ 123456
+ --
+ Str. 17
+ --
+ DE
+
+
+
+
+
+ DE11111111111111111111
+ EUR
+
+ 59
+
+ DE22222222222222222222
+
+
+
+ 22.61
+ VAT
+ 119.00
+ S
+ 19.00
+
+
+
+ 20250426
+
+
+ 20250525
+
+
+
+ Zahlbar sofort
+
+ 20250426
+
+
+
+ 119.00
+ 0.00
+ 0.00
+ 119.00
+ 22.61
+ 141.61
+ 0.00
+ 141.61
+
+
+
+
diff --git a/library/src/test/resources/factur-x-vis-extended.de.html b/library/src/test/resources/factur-x-vis-extended.de.html
index 4ef990b5..4b049257 100644
--- a/library/src/test/resources/factur-x-vis-extended.de.html
+++ b/library/src/test/resources/factur-x-vis-extended.de.html
@@ -1,10 +1,9 @@
-
-
-
- XRechnung
-
+
+
+
+ XRechnung
+
-
-
-
-
-
-
-
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
-
-
-
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ }
+
+ .clear:after
+ {
+ content: ".";
+ clear: both;
+ display: block;
+ visibility: hidden;
+ height: 0;
+ }
+
+ html,
+ body
+ {
+ height: 100%;
+ min-width: 320px;
+ margin: 0;
+ padding: 0;
+ color: #000;
+ font-size: 14px;
+ }
+
+ body
+ {
+ overflow-y: scroll;
+ background-color: rgba(4, 101, 161, 0.08);
+ }
+
+ h4
+ {
+ color: inherit;
+ font-size: inherit;
+ margin-bottom: 0.5rem;
+ }
+
+
+ /* Grundaufbau *************************************************/
+
+ .menue
+ {
+ position: relative;
+ z-index: 2000;
+ background-color: #000;
+ margin-bottom: 30px;
+ }
+
+ .innen
+ {
+ max-width: 1080px;
+ margin: 0 auto;
+ padding: 0 2%;
+ }
+
+
+
+ /* Formatierungen *************************************************/
+
+ .color2
+ {
+ color: rgba(0, 0, 0, 0.6);
+ }
+
+ .schwarz
+ {
+ color: #555 !important;
+ }
+
+ .normal
+ {
+ font-weight: normal;
+ }
+
+ .bold
+ {
+ font-weight: bold;
+ }
+
+ .abstandUnten
+ {
+ margin-bottom: 5px;
+ }
+
+ .abstandUntenKlein
+ {
+ margin-bottom: 10px;
+ }
+
+ .noPaddingTop
+ {
+ padding-top: 0 !important;
+ }
+
+ .ausrichtungRechts
+ {
+ text-align: right;
+ }
+
+
+
+
+ /* Menü ********************************************************/
+
+ button
+ {
+ position: relative;
+ font-family: serif;
+ padding-top: 15px;
+ padding-left: 0;
+ padding-right: 0;
+ margin-right: 2%;
+ }
+
+ .btnAktiv
+ {
+ font-size: 22px;
+ color: #ffb619;
+ height: 50px;
+ outline: none;
+ border: none;
+ background: none;
+ }
+
+ .btnAktiv:after
+ {
+ content: "";
+ display: block;
+ position: absolute;
+ top: 50px;
+ left: 50%;
+ z-index: 10;
+ font-size: 0;
+ line-height: 0;
+ height: 0;
+ padding: 0;
+ margin: 0;
+ transform: translateX(-50%);
+ border: 15px solid #000;
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: transparent;
+ }
+
+ .btnInaktiv,
+ .tab
+ {
+ font-size: 22px;
+ color: #fff;
+ height: 50px;
+ z-index: 0;
+ outline: none;
+ border: none;
+ background: none;
+ transition: color 0.3s ease;
+ }
+
+ .btnInaktiv:hover,
+ .tab:hover
+ {
+ color: #ffb619;
+ cursor: pointer;
+ }
+
+ .divHide
+ {
+ display: none;
+ }
+
+ /* Content *********************************************************************/
+
+ .inhalt
+ {
+ font-family: sans-serif;
+ margin-bottom: 30px;
+ }
+
+ .haftungausschluss
+ {
+ color: #000;
+ text-align: center;
+ padding: 7px;
+ margin-bottom: 30px;
+ width: 100%;
+ border: 1px solid #ffb619;
+ background-color: #fff;
+ }
+
+ .box
+ {
+ position: relative;
+ display: table-cell;
+ padding: 0;
+ border: 1px solid rgba(4, 101, 161, 0.2);
+ background-color: #fff;
+ }
+
+ .subBox
+ {
+ border-top: none;
+ width: 50%;
+ }
+
+ .subBox:last-child
+ {
+ border-left: none;
+ }
+
+ .first > .boxzeile > .subBox
+ {
+ border-top: 1px solid rgba(4, 101, 161, 0.2) !important;
+ }
+
+ .boxtitel
+ {
+ display: inline-block;
+ background-color: #0465A1;
+ padding: 7px 10px;
+ color: #fff;
+ font-weight: bold;
+ }
+
+ .boxBorderTop
+ {
+ border-top: none;
+ }
+
+ .boxBorderLeft
+ {
+ border-left: none;
+ }
+
+ .boxtitelSub
+ {
+ color: #000;
+ background-color: rgba(4, 101, 161, 0.1);
+ border-right: 1px solid rgba(4, 101, 161, 0.2);
+ border-bottom: 1px solid rgba(4, 101, 161, 0.2);
+ }
+
+ .boxinhalt
+ {
+ padding: 15px 20px;
+ }
+
+ .boxtabelle
+ {
+ display: table;
+ width: 100%;
+ }
+
+ .borderSpacing
+ {
+ border-spacing: 0 5px;
+ }
+
+ .boxabstandtop
+ {
+ margin-top: 30px;
+ }
+
+ .boxzeile
+ {
+ display: table-row;
+ }
+
+ .boxzeile .box:last-child
+ {
+ margin-bottom: 0;
+ }
+
+ .boxdaten
+ {
+ display: table-cell;
+ padding: 5px 0;
+ vertical-align: middle;
+ height: 38px;
+ /*
+ -ms-word-break: break-all;
+ word-break: break-all;
+ word-break: break-word;
+ -webkit-hyphens: auto;
+ -moz-hyphens: auto;
+ hyphens: auto;
+ */
+ }
+
+ .boxdaten.wert
+ {
+ padding: 5px 10px;
+ }
+
+ .boxcell
+ {
+ display: table-cell;
+ }
+
+ .boxdatenBlock
+ {
+ display: block;
+ padding: 3px 0;
+ /*
+ -ms-word-break: break-all;
+ word-break: break-all;
+ word-break: break-word;
+ -webkit-hyphens: auto;
+ -moz-hyphens: auto;
+ hyphens: auto;
+ */
+ }
+
+ .noBreak
+ {
+ -ms-word-break: keep-all;
+ word-break: keep-all;
+ word-break: keep-all;
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ hyphens: none;
+ }
+
+ .boxabstand
+ {
+ display: table-cell;
+ width: 30px;
+ }
+
+ .legende
+ {
+ color: rgba(0, 0, 0, 0.6);
+ width: 170px;
+ font-size: 13px;
+ line-height: 16px;
+ padding-right: 5px;
+ }
+
+ .wert
+ {
+ background-color: rgba(4, 101, 161, 0.03);
+ }
+
+ .boxtabelleEinspaltig
+ {
+ width: 49%;
+ }
+
+ .boxtabelleZweispaltig,
+ .boxtabelleDreispaltig
+ {
+ width: 100%;
+ }
+
+ .box5050
+ {
+ width: 50%;
+ }
+
+ .boxEinspaltig
+ {
+ width: 100%;
+ }
+
+ .boxZweispaltig
+ {
+ width: 48.5%;
+ }
+
+ .boxSpalte1 {
+ width: 50%;
+ }
+
+ .boxSpalte2 {
+ width: 50%;
+ padding-left: 20px;
+ }
+
+ .paddingLeft {
+ padding-left: 0.1em;
+ }
+
+ .noPadding {
+ padding-top: 0 !important;
+ padding-bottom: 0 !important;
+ }
+
+ .rechnungsZeile
+ {
+ display: table-row;
+ }
+
+ .rechnungsZeile .boxdaten
+ {
+ height: auto;
+ }
+
+ .rechnungSp1
+ {
+ width: 65%;
+ font-size: 16px;
+ }
+
+ .rechnungSp2
+ {
+ width: 10%;
+ }
+
+ .rechnungSp3
+ {
+ width: 25%;
+ font-size: 16px;
+ text-align: right;
+ }
+
+ .detailSp1,
+ .detailSp2
+ {
+ width: 50%;
+ }
+
+ .detailSp2
+ {
+ text-align: right;
+ }
+
+ .line1Bottom
+ {
+ border-bottom: 1px solid #000;
+ }
+
+ .line1BottomLight
+ {
+ padding-bottom: 5px;
+ border-bottom: 1px solid #f0f0f0;
+ margin-bottom: 5px;
+ }
+
+ .line2Bottom
+ {
+ border-bottom: 2px solid #000;
+ }
+
+ .paddingTop
+ {
+ padding-top: 10px;
+ }
+
+ .paddingBottom
+ {
+ padding-bottom: 10px;
+ }
+
+ .grund
+ {
+ font-size: 16px;
+ display: block;
+ width: 100%;
+ padding: 0 20px 15px 20px;
+ }
+
+ .grundDetail
+ {
+ display: block;
+ width: 100%;
+ padding: 0 20px 15px 20px;
+ }
+
+ /* Übersichtformatierungen */
+ #uebersichtLastschrift.box,
+ #uebersichtUeberweisung.box
+ {
+ border-top: none;
+ }
+
+ #uebersichtUeberweisung.box
+ {
+ border-left: none;
+ }
+
+
+ /* Formatierungen Detailseite */
+
+ .detailsSpalte1,
+ .detailsSpalte2
+ {
+ width: 30%;
+ float: left;
+ font-size: 90%;
+ line-height: 115%;
+ margin-right: 5%;
+ }
+
+ .detailsSpalte3
+ {
+ width: 30%;
+ float: left;
+ font-size: 90%;
+ line-height: 115%;
+ }
+
+ .detailsSpalte1 .legende,
+ .detailsSpalte2 .legende,
+ .detailsSpalte3 .legende
+ {
+ width: 145px;
+ }
+
+ .titelPosition
+ {
+ font-size: 17px;
+ font-weight: bold;
+ }
+
+
+ /* Laufzettelformatierungen */
+ #laufzettelHistorie .boxtabelle:not(:nth-child(2))
+ {
+ border-top: 1px solid rgba(4, 101, 161, 0.2);
+ padding-top: 10px;
+ margin-top: 10px;
+ }
+
+
+
+
+
+ /* 1023px und kleiner ************************************************/
+
+ @media screen and (max-width : 1023px) {
+
+ .box
+ {
+ display: block;
+ width: 100%;
+ margin-bottom: 20px;
+ }
+
+ .boxabstandtop
+ {
+ margin-top: 15px;
+ }
+
+ .subBox:first-child
+ {
+ margin-bottom: 0 !important;
+ }
+
+ .subBox:last-child
+ {
+ border-left: 1px solid rgba(4, 101, 161, 0.2);
+ }
+
+ .first > .boxzeile > .subBox
+ {
+ border-top: none !important;
+ }
+
+ .first > .boxzeile > .subBox:first-child
+ {
+ border-top: 1px solid rgba(4, 101, 161, 0.2) !important;
+ }
+
+ .first > .boxzeile
+ {
+ margin-bottom: 0;
+ }
+
+ #uebersichtUeberweisung.box
+ {
+ border-left: 1px solid rgba(4, 101, 161, 0.2);
+ }
+
+ #uebersichtLastschrift.box
+ {
+ margin-bottom: 0;
+ }
+
+ .boxzeile
+ {
+ display: block;
+ margin-bottom: 5px;
+ }
+
+ .boxzeile:after
+ {
+ visibility: hidden;
+ display: block;
+ font-size: 0;
+ content: " ";
+ clear: both;
+ height: 0;
+ }
+
+ #details > .boxtabelle > .boxzeile
+ {
+ margin-bottom: 0px;
+ }
+
+ .boxcell
+ {
+ display: block;
+ }
+
+ .boxcell:last-child
+ {
+ margin-top: 20px;
+ }
+
+ .boxZweispaltig
+ {
+ width: 100%;
+ }
+
+ .legende
+ {
+ display: block;
+ float: left;
+ width: 170px;
+ padding: 5px 0;
+ height: auto;
+ }
+
+ .wert
+ {
+ display: block;
+ float: left;
+ width: calc(100% - 170px);
+ padding: 11px 10px !important;
+ line-height: 1.3;
+ min-height: 38px;
+ height: auto;
+ }
+
+ .boxdaten .legende
+ {
+ height: auto;
+ }
+
+ .rechnungsZeile .boxdaten
+ {
+ padding: 5px 0;
+ }
+
+ .boxabstand
+ {
+ display: none;
+ }
+
+ .boxtabelleEinspaltig {
+ width: 100%;
+ }
+
+ .boxSpalte1 {
+ display: block;
+ width: auto;
+ }
+
+ .boxSpalte2 {
+ display: block;
+ width: auto;
+ padding-left: 0px;
+ margin-top: 1.2rem;
+ }
+
+ .detailsSpalte1,
+ .detailsSpalte2,
+ .detailsSpalte3
+ {
+ width: 100%;
+ float: none;
+ padding-right: 0px;
+ }
+
+ .detailsSpalte2,
+ .detailsSpalte3
+ {
+ margin-top: 15px;
+ }
+
+ .detailsSpalte2,
+ .detailsSpalte3
+ {
+ margin-top: 10px;
+ }
+
+ .tableNumberAlignRight
+ {
+ display: block;
+ width: 130px;
+ text-align: right;
+ }
+ }
+
+
+
+ /* 800px und kleiner ************************************************/
+
+ @media screen and (max-width : 800px) {
+
+ button
+ {
+ padding-top: 10px;
+ }
+
+ .btnAktiv,
+ .btnInaktiv,
+ .tab
+ {
+ font-size: 20px;
+ height: 40px;
+ }
+
+ .btnAktiv:after
+ {
+ top: 40px;
+ }
+
+ .rechnungSp1
+ {
+ width: 55%;
+ font-size: 15px;
+ }
+
+ .rechnungSp2
+ {
+ width: 10%;
+ }
+
+ .rechnungSp3
+ {
+ width: 35%;
+ text-align: right;
+ font-size: 15px;
+ }
+
+ .grund
+ {
+ font-size: 15px;
+ }
+ }
+
+ /* 450px und kleiner ************************************************/
+
+ @media screen and (max-width : 450px)
+ {
+
+ html,
+ body
+ {
+ font-size: 12px;
+ }
+
+ .menue
+ {
+ margin-bottom: 20px;
+ }
+
+ button
+ {
+ padding-top: 5px;
+ }
+
+ .btnAktiv,
+ .btnInaktiv,
+ .tab
+ {
+ font-size: 17px;
+ height: 35px;
+ }
+
+ .btnAktiv:after
+ {
+ top: 35px;
+ }
+
+ .legende
+ {
+ font-size: 12px;
+ width: 100%;
+ }
+
+ .wert
+ {
+ font-size: 12px;
+ line-height: 1.3;
+ width: 100%;
+ margin-bottom: 10px
+ }
+
+ .boxzeile
+ {
+ margin-bottom: 0px
+ }
+
+ .boxdaten
+ {
+ height: auto;
+ }
+
+ .haftungausschluss
+ {
+ margin-bottom: 20px;
+ }
+
+ .boxinhalt
+ {
+ margin-top: 0px;
+ }
+
+ .boxabstandtop
+ {
+ margin-top: 20px;
+ }
+
+ .boxtitel
+ {
+ padding: 7px 8px;
+ }
+
+ .box
+ {
+ margin-bottom: 10px;
+ padding: 0;
+ }
+
+ .boxabstandtop
+ {
+ margin-top: 10px;
+ }
+
+ .boxdaten,
+ .boxdatenBlock
+ {
+ padding: 2px 0;
+ }
+
+ .rechnungSp1
+ {
+ width: 50%;
+ font-size: inherit;
+ }
+
+ .rechnungSp2
+ {
+ width: 15%;
+ }
+
+ .rechnungSp3
+ {
+ width: 35%;
+ font-size: inherit;
+ text-align: right;
+ }
+
+ .grund
+ {
+ font-size: inherit;
+ }
+
+ .titelPosition
+ {
+ font-size: 15px;
+ }
+
+ .abstandUnten
+ {
+ margin-bottom: 5px;
+ }
+
+ .detailsSpalte1,
+ .detailsSpalte2,
+ .detailsSpalte3
+ {
+ font-size: inherit;
+ line-height: inherit;
+ }
+ }
+
+ /* 380px und kleiner ************************************************/
+
+ @media screen and (max-width : 380px) {
+
+ html,
+ body
+ {
+ font-size: 11px;
+ line-height: 100%;
+ }
+
+ .btnAktiv,
+ .btnInaktiv,
+ .tab
+ {
+ font-size: 15px;
+ }
+
+ .boxdaten
+ .boxdatenBlock
+ {
+ padding: 2px 0;
+ }
+
+ .boxinhalt
+ {
+ margin-top: 0px;
+ }
+
+ .boxtitel
+ {
+ padding: 5px 7px;
+ }
+ }
+
+
+
+
+
+
+
+
+
+
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
+
+
+
Informationen zum Käufer
-
-
-
Name:
-
MUSTER-KUNDE GMBH
-
-
-
Straße / Haus-Nr.:
-
KUNDENWEG 88
-
-
-
-
-
-
-
-
Land:
-
DE (Deutschland)
-
-
-
Kennung / Kunden-Nr.:
-
4304171000002
-
-
-
Schema der Kennung:
-
0088 (EAN
- Location Code)
-
-
-
-
-
+
+
+
Name:
+
MUSTER-KUNDE GMBH
+
+
+
Straße / Haus-Nr.:
+
KUNDENWEG 88
+
+
+
+
+
+
+
+
Land:
+
DE (Deutschland)
+
+
+
Kennung / Kunden-Nr.:
+
4304171000002
+
+
+
Schema der Kennung:
+
0088 (EAN Location Code)
+
+
+
+
-
-
-
+
+
+
Informationen zum Verkäufer
-
-
-
Firmenname:
-
MUSTERLIEFERANT GMBH
-
-
-
Straße / Haus-Nr.:
-
BAHNHOFSTRASSE 99
-
-
-
-
-
-
-
-
Ländercode:
-
DE (Deutschland)
-
-
-
Kennung:
-
4333741000005
-
-
-
Schema der Kennung:
-
0088 (EAN
- Location Code)
-
-
-
-
-
Telefon:
-
+49 932 431 500
-
-
-
E-Mail-Adresse:
-
max.mustermann@musterlieferant.de
-
-
+
+
+
Firmenname:
+
MUSTERLIEFERANT GMBH
+
+
+
Straße / Haus-Nr.:
+
BAHNHOFSTRASSE 99
+
+
+
+
+
+
+
+
Ländercode:
+
DE (Deutschland)
+
+
+
Kennung:
+
4333741000005
+
+
+
Schema der Kennung:
+
0088 (EAN Location Code)
+
+
+
+
Telefon:
+
+49 932 431 500
+
+
+
E-Mail-Adresse:
+
max.mustermann@musterlieferant.de
+
-
-
-
-
+
+
+
Rechnungsdaten
-
-
-
-
Rechnungsnummer:
-
KR87654321012
-
-
-
Rechnungsdatum:
-
15.11.2024
-
-
-
Rechnungsart:
-
380 (Commercial invoice)
-
-
-
-
Abrechnungszeitraum:
-
-
-
-
-
-
Vorausgegangene Rechnungen:
-
+
+
+
+
Rechnungsnummer:
+
KR87654321012
+
+
+
Rechnungsdatum:
+
15.11.2024
+
+
+
Rechnungsart:
+
380 (Commercial invoice)
+
+
+
+
Abrechnungszeitraum:
+
+
+
+
+
+
Vorausgegangene Rechnungen:
+
-
-
-
-
+
+
+
Gesamtbeträge der Rechnung
-
-
Summe aller Positionen
-
netto
-
410,10
-
-
-
Summe Nachlässe
-
netto
-
21,55
-
-
-
Summe Zuschläge
-
netto
-
- 15,00
-
-
-
-
Gesamtsumme
-
netto
-
403,55
-
-
-
Summe Umsatzsteuer
-
-
-
-
-
Summe Umsatzsteuer in
- Abrechnungswährung
-
-
-
- 76,67
-
-
-
-
Gesamtsumme
-
brutto
-
480,22
-
-
-
Gezahlter Betrag
-
brutto
-
0,00
-
-
-
Rundungsbetrag
-
brutto
-
-
-
-
Fälliger Betrag
-
brutto
-
480,22
-
-
-
-
-
-
-
-
-
-
Aufschlüsselung der Umsatzsteuer auf Ebene der
- Rechnung
+
+
Summe aller Positionen
+
netto
+
410,10
+
+
+
Summe Nachlässe
+
netto
+
21,55
+
+
+
Summe Zuschläge
+
netto
+
15,00
+
+
+
Gesamtsumme
+
netto
+
403,55
+
+
+
Summe Umsatzsteuer
+
+
+
+
+
Summe Umsatzsteuer in Abrechnungswährung
+
+
76,67
+
+
+
Gesamtsumme
+
brutto
+
480,22
+
+
+
Gezahlter Betrag
+
brutto
+
0,00
+
+
+
Rundungsbetrag
+
brutto
+
+
+
+
Fälliger Betrag
+
brutto
+
480,22
+
+
+
+
+
+
+
+
Aufschlüsselung der Umsatzsteuer auf Ebene der Rechnung
-
-
Umsatzsteuerkategorie: S (Standard rate)
-
-
-
-
-
-
Gesamtsumme
-
netto
-
403,55
-
-
-
Umsatzsteuersatz
-
-
19.00%
-
-
-
Umsatzsteuerbetrag
-
-
76,67
-
+
+
Umsatzsteuerkategorie: S (Standard rate)
+
+
+
+
+
Gesamtsumme
+
netto
+
403,55
+
+
+
Umsatzsteuersatz
+
+
19.00%
+
+
+
Umsatzsteuerbetrag
+
+
76,67
+
-
Befreiungsgrund:
-
Kennung für den Befreiungsgrund:
-
+
Befreiungsgrund:
+
Kennung für den Befreiungsgrund:
-
-
-
-
+
+
+
Nachlass auf Ebene der Rechnung
-
-
Umsatzsteuerkategorie des Nachlasses: S (Standard rate)
-
-
-
-
-
Grundbetrag
-
netto
-
410,10
-
-
-
-
Nachlass
-
netto
-
21,55
-
-
-
Umsatzsteuersatz des Nachlasses
-
-
19.00
-
+
+
Umsatzsteuerkategorie des Nachlasses: S (Standard rate)
+
+
+
+
+
Grundbetrag
+
netto
+
410,10
+
+
+
+
Nachlass
+
netto
+
21,55
+
+
+
Umsatzsteuersatz des Nachlasses
+
+
19.00
+
-
Grund für den Nachlass: Sonderrabatt
-
-
Document level allowance reason code:
+
Grund für den Nachlass: Sonderrabatt
+
Document level allowance reason code:
-
-
-
-
-
+
+
+
Versandkosten
-
-
Umsatzsteuerkategorie der Versandkosten: S (Standard rate)
-
-
-
-
-
Betrag
-
netto
-
15,00
-
-
-
Umsatzsteuersatz der Versandkosten
-
-
19.00
-
+
+
Umsatzsteuerkategorie der Versandkosten: S (Standard rate)
+
+
+
+
+
Betrag
+
netto
+
15,00
+
+
+
Umsatzsteuersatz der Versandkosten
+
+
19.00
+
-
Versandkostenbeschreibung: Transportkosten: Frachbetrag
-
+
Versandkostenbeschreibung: Transportkosten: Frachbetrag
-
-
-
-
-
+
-
+
+
+
Lastschrift
-
-
Mandatsreferenznr.:
-
-
-
-
+
+
Mandatsreferenznr.:
+
+
+
+
-
-
+
+
-
+
+
+
+
+
+
+
Bemerkung zur Rechnung
+
+
+
Betreff:
+
AAK (Price conditions)
+
+
+
Bemerkung:
+
Es bestehen Rabatt- oder Bonusvereinbarungen.
+
+
+
+
+
Bemerkung zur Rechnung
+
+
+
Betreff:
+
AAJ (Additional conditions of sale/purchase)
+
+
+
Bemerkung:
+
Der Verkäufer bleibt Eigentümer der Waren bis zur vollständigen Erfüllung der Kaufpreisforderung.
+
+
+
+
+
Bemerkung zur Rechnung
+
+
+
Betreff:
+
REG (Regulatory information)
+
+
+
Bemerkung:
+
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
+
+
+
+
+
+
-
-
-
-
Bemerkung zur Rechnung
-
-
-
Betreff:
-
AAK (Price conditions)
-
-
-
Bemerkung:
-
Es bestehen Rabatt- oder
- Bonusvereinbarungen.
-
-
-
-
-
-
Bemerkung zur Rechnung
-
-
-
Betreff:
-
AAJ (Additional conditions of
- sale/purchase)
-
-
-
-
Bemerkung:
-
Der Verkäufer bleibt Eigentümer der
- Waren bis zur vollständigen Erfüllung der Kaufpreisforderung.
-
-
-
-
-
-
Bemerkung zur Rechnung
-
-
-
Betreff:
-
REG (Regulatory information)
-
-
-
Bemerkung:
-
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
-
-
-
-
-
-
-
-
-
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
-
-
-
+
+
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
+
+
+
Position1
-
-
-
-
Schema der Objektkennung:
-
-
-
-
Nummer der Auftragsposition:
-
-
-
-
Kontierungshinweis /Kostenstelle:
-
-
-
Abrechnungszeitraum:
-
-
+
+
+
+
Schema der Objektkennung:
+
+
+
+
Nummer der Auftragsposition:
+
+
+
+
Kontierungshinweis /Kostenstelle:
+
+
+
Abrechnungszeitraum:
+
+
-
-
+
+
Preiseinzelheiten
-
-
-
Einheit
-
KWH (kilowatt hour)
-
-
-
Preis pro Einheit (netto)
-
0,05
-
-
-
Gesamtpreis (netto)
-
52,00
-
+
+
+
Einheit
+
KWH (kilowatt hour)
+
+
+
Preis pro Einheit (netto)
+
0,05
+
+
+
Gesamtpreis (netto)
+
52,00
+
-
-
-
Listenpreis (netto):
-
0,05
-
-
-
Anzahl der Einheit:
-
-
-
-
Code der Maßeinheit:
-
-
-
-
Umsatzsteuer:
-
S (Standard rate)
-
-
-
Umsatzsteuersatz in %:
-
19%
-
+
+
Rabatt (netto):
+
0,00
+
+
+
Listenpreis (netto):
+
0,05
+
+
+
Anzahl der Einheit:
+
+
+
+
Code der Maßeinheit:
+
+
+
+
Umsatzsteuer:
+
S (Standard rate)
+
+
+
Umsatzsteuersatz in %:
+
19%
+
-
-
-
-
-
-
-
Nachlässe auf Ebene der
- Rechnungsposition
-
-
-
-
Zuschläge auf Ebene der
- Rechnungsposition
-
-
-
-
-
+
+
+
+
Nachlässe auf Ebene der Rechnungsposition
+
+
+
Zuschläge auf Ebene der Rechnungsposition
+
+
+
+
+
+
Artikelinformationen
-
-
-
-
-
Bezeichnung:
-
Wirkarbeit HT
-
-
-
-
-
Artikelnummer:
-
WA997
-
-
-
Kunden-Material-Nr.:
-
-
-
Eigenschaften des Artikels:
-
-
Zählpunkt
-
- DE0001346484600000000000000100038
-
-
+
+
+
+
+
Bezeichnung:
+
Wirkarbeit HT
-
-
-
-
-
-
Artikelkennung (EAN):
-
4123456000014
-
-
-
Schema der Artikelkennung:
-
- 0088 (EAN Location Code)
-
-
-
-
Code der Artikelklassifizierung:
-
-
-
-
Kennung zur Bildung des Schemas:
-
-
-
-
Version zur Bildung des Schemas:
-
-
-
-
Code des Herkunftslandes:
-
-
+
-
-
+
+
Artikelnummer:
+
WA997
+
+
+
Kunden-Material-Nr.:
+
+
+
Eigenschaften des Artikels:
+
+
Zählpunkt
+
DE0001346484600000000000000100038
+
+
+
+
+
+
+
+
Artikelkennung (EAN):
+
4123456000014
+
+
+
Schema der Artikelkennung:
+
0088 (EAN Location Code)
+
+
+
Code der Artikelklassifizierung:
+
+
+
+
Kennung zur Bildung des Schemas:
+
+
+
+
Version zur Bildung des Schemas:
+
+
+
+
Code des Herkunftslandes:
+
+
+
+
+
-
-
-
-
+
+
+
Position2
-
-
-
-
Schema der Objektkennung:
-
-
-
-
Nummer der Auftragsposition:
-
-
-
-
Kontierungshinweis /Kostenstelle:
-
-
-
Abrechnungszeitraum:
-
-
+
+
+
+
Schema der Objektkennung:
+
+
+
+
Nummer der Auftragsposition:
+
+
+
+
Kontierungshinweis /Kostenstelle:
+
+
+
Abrechnungszeitraum:
+
+
-
-
+
+
Preiseinzelheiten
-
-
-
Einheit
-
KWH (kilowatt hour)
-
-
-
Preis pro Einheit (netto)
-
0,02
-
-
-
Gesamtpreis (netto)
-
20,50
-
+
+
+
Einheit
+
KWH (kilowatt hour)
+
+
+
Preis pro Einheit (netto)
+
0,02
+
+
+
Gesamtpreis (netto)
+
20,50
+
-
-
-
Listenpreis (netto):
-
0,02
-
-
-
Anzahl der Einheit:
-
-
-
-
Code der Maßeinheit:
-
-
-
-
Umsatzsteuer:
-
S (Standard rate)
-
-
-
Umsatzsteuersatz in %:
-
19%
-
+
+
Rabatt (netto):
+
0,00
+
+
+
Listenpreis (netto):
+
0,02
+
+
+
Anzahl der Einheit:
+
+
+
+
Code der Maßeinheit:
+
+
+
+
Umsatzsteuer:
+
S (Standard rate)
+
+
+
Umsatzsteuersatz in %:
+
19%
+
-
-
-
-
-
-
-
Nachlässe auf Ebene der
- Rechnungsposition
-
-
-
-
Zuschläge auf Ebene der
- Rechnungsposition
-
-
-
-
-
+
+
+
+
Nachlässe auf Ebene der Rechnungsposition
+
+
+
Zuschläge auf Ebene der Rechnungsposition
+
+
+
+
+
+
Artikelinformationen
-
-
-
-
-
Bezeichnung:
-
Ökosteuer
- Lieferant
-
-
-
-
-
Artikelnummer:
-
ÖST250
-
-
-
Kunden-Material-Nr.:
-
-
-
Eigenschaften des Artikels:
-
-
-
-
-
-
Artikelkennung (EAN):
-
4123456000021
-
-
-
Schema der Artikelkennung:
-
- 0088 (EAN Location Code)
-
-
-
-
Code der Artikelklassifizierung:
-
-
-
-
Kennung zur Bildung des Schemas:
-
-
-
-
Version zur Bildung des Schemas:
-
-
-
-
Code des Herkunftslandes:
-
-
+
+
+
+
+
Bezeichnung:
+
Ökosteuer Lieferant
-
-
+
+
+
Artikelnummer:
+
ÖST250
+
+
+
Kunden-Material-Nr.:
+
+
+
Eigenschaften des Artikels:
+
+
+
+
+
+
+
Artikelkennung (EAN):
+
4123456000021
+
+
+
Schema der Artikelkennung:
+
0088 (EAN Location Code)
+
+
+
Code der Artikelklassifizierung:
+
+
+
+
Kennung zur Bildung des Schemas:
+
+
+
+
Version zur Bildung des Schemas:
+
+
+
+
Code des Herkunftslandes:
+
+
+
+
+
-
-
-
-
+
+
+
Position3
-
-
-
-
Schema der Objektkennung:
-
-
-
-
Nummer der Auftragsposition:
-
-
-
-
Kontierungshinweis /Kostenstelle:
-
-
-
Abrechnungszeitraum:
-
-
+
+
+
+
Schema der Objektkennung:
+
+
+
+
Nummer der Auftragsposition:
+
+
+
+
Kontierungshinweis /Kostenstelle:
+
+
+
Abrechnungszeitraum:
+
+
-
-
+
+
Preiseinzelheiten
-
-
-
-
Preis pro Einheit (netto)
-
10,50
-
-
-
Gesamtpreis (netto)
-
288,75
-
+
+
+
+
Preis pro Einheit (netto)
+
10,50
+
+
+
Gesamtpreis (netto)
+
288,75
+
-
-
Rabatt (netto):
-
4,50
-
-
-
Listenpreis (netto):
-
15,00
-
-
-
Anzahl der Einheit:
-
-
-
-
Code der Maßeinheit:
-
-
-
-
Umsatzsteuer:
-
S (Standard rate)
-
-
-
Umsatzsteuersatz in %:
-
19%
-
+
+
Rabatt (netto):
+
4,50
+
+
+
Listenpreis (netto):
+
15,00
+
+
+
Anzahl der Einheit:
+
+
+
+
Code der Maßeinheit:
+
+
+
+
Umsatzsteuer:
+
S (Standard rate)
+
+
+
Umsatzsteuersatz in %:
+
19%
+
-
-
-
-
-
-
-
Nachlässe auf Ebene der
- Rechnungsposition
-
-
-
-
Zuschläge auf Ebene der
- Rechnungsposition
-
-
-
-
-
+
+
+
+
Nachlässe auf Ebene der Rechnungsposition
+
+
+
Zuschläge auf Ebene der Rechnungsposition
+
+
+
+
+
+
Artikelinformationen
-
-
-
-
-
Bezeichnung:
-
Kommissionierer
- 1250032 D. Muster
-
-
-
-
Beschreibung:
-
Besteller: Hr. Mayer,
- Personalnr. 4488
-
-
-
-
-
Kunden-Material-Nr.:
-
-
-
Eigenschaften des Artikels:
-
-
-
-
-
-
Artikelkennung (EAN):
-
4260331811362
-
-
-
Schema der Artikelkennung:
-
- 0088 (EAN Location Code)
-
-
-
-
Code der Artikelklassifizierung:
-
-
-
-
Kennung zur Bildung des Schemas:
-
-
-
-
Version zur Bildung des Schemas:
-
-
-
-
Code des Herkunftslandes:
-
-
+
+
+
+
+
Bezeichnung:
+
Kommissionierer 1250032 D. Muster
-
-
+
+
Beschreibung:
+
Besteller: Hr. Mayer, Personalnr. 4488
+
+
+
+
Kunden-Material-Nr.:
+
+
+
Eigenschaften des Artikels:
+
+
+
+
+
+
+
Artikelkennung (EAN):
+
4260331811362
+
+
+
Schema der Artikelkennung:
+
0088 (EAN Location Code)
+
+
+
Code der Artikelklassifizierung:
+
+
+
+
Kennung zur Bildung des Schemas:
+
+
+
+
Version zur Bildung des Schemas:
+
+
+
+
Code des Herkunftslandes:
+
+
+
+
+
-
-
-
-
+
+
+
Position4
-
-
-
-
Schema der Objektkennung:
-
-
-
-
Nummer der Auftragsposition:
-
-
-
-
Kontierungshinweis /Kostenstelle:
-
-
-
Abrechnungszeitraum:
-
-
+
+
+
+
Schema der Objektkennung:
+
+
+
+
Nummer der Auftragsposition:
+
+
+
+
Kontierungshinweis /Kostenstelle:
+
+
+
Abrechnungszeitraum:
+
+
-
-
+
+
Preiseinzelheiten
-
-
-
Einheit
-
H87 (piece)
-
-
-
Preis pro Einheit (netto)
-
0,01
-
-
-
Gesamtpreis (netto)
-
36,75
-
+
+
+
Einheit
+
H87 (piece)
+
+
+
Preis pro Einheit (netto)
+
0,01
+
+
+
Gesamtpreis (netto)
+
36,75
+
-
-
-
Listenpreis (netto):
-
0,01
-
-
-
Anzahl der Einheit:
-
-
-
-
Code der Maßeinheit:
-
-
-
-
Umsatzsteuer:
-
S (Standard rate)
-
-
-
Umsatzsteuersatz in %:
-
19%
-
+
+
Rabatt (netto):
+
0,00
+
+
+
Listenpreis (netto):
+
0,01
+
+
+
Anzahl der Einheit:
+
+
+
+
Code der Maßeinheit:
+
+
+
+
Umsatzsteuer:
+
S (Standard rate)
+
+
+
Umsatzsteuersatz in %:
+
19%
+
-
-
-
-
-
-
-
Nachlässe auf Ebene der
- Rechnungsposition
-
-
-
-
Zuschläge auf Ebene der
- Rechnungsposition
-
-
-
-
-
+
+
+
+
Nachlässe auf Ebene der Rechnungsposition
+
+
+
Zuschläge auf Ebene der Rechnungsposition
+
+
+
+
+
+
Artikelinformationen
-
-
-
-
-
Bezeichnung:
-
FALTENBEUTEL
- 16x6x28 CM
-
-
-
-
-
Artikelnummer:
-
FB05
-
-
-
Kunden-Material-Nr.:
-
-
-
Eigenschaften des Artikels:
-
-
-
-
-
-
Artikelkennung (EAN):
-
2001015001325
-
-
-
Schema der Artikelkennung:
-
- 0088 (EAN Location Code)
-
-
-
-
Code der Artikelklassifizierung:
-
-
-
-
Kennung zur Bildung des Schemas:
-
-
-
-
Version zur Bildung des Schemas:
-
-
-
-
Code des Herkunftslandes:
-
-
+
+
+
+
+
Bezeichnung:
+
FALTENBEUTEL 16x6x28 CM
-
-
+
+
+
Artikelnummer:
+
FB05
+
+
+
Kunden-Material-Nr.:
+
+
+
Eigenschaften des Artikels:
+
+
+
+
+
+
+
Artikelkennung (EAN):
+
2001015001325
+
+
+
Schema der Artikelkennung:
+
0088 (EAN Location Code)
+
+
+
Code der Artikelklassifizierung:
+
+
+
+
Kennung zur Bildung des Schemas:
+
+
+
+
Version zur Bildung des Schemas:
+
+
+
+
Code des Herkunftslandes:
+
+
+
+
+
-
-
-
-
+
+
+
Position5
-
-
-
-
Schema der Objektkennung:
-
-
-
-
Nummer der Auftragsposition:
-
-
-
-
Kontierungshinweis /Kostenstelle:
-
-
-
Abrechnungszeitraum:
-
-
+
+
+
+
Schema der Objektkennung:
+
+
+
+
Nummer der Auftragsposition:
+
+
+
+
Kontierungshinweis /Kostenstelle:
+
+
+
Abrechnungszeitraum:
+
+
-
-
+
+
Preiseinzelheiten
-
-
-
Einheit
-
H87 (piece)
-
-
-
Preis pro Einheit (netto)
-
0,01
-
-
-
Gesamtpreis (netto)
-
12,10
-
+
+
+
Einheit
+
H87 (piece)
+
+
+
Preis pro Einheit (netto)
+
0,01
+
+
+
Gesamtpreis (netto)
+
12,10
+
-
-
-
Listenpreis (netto):
-
0,01
-
-
-
Anzahl der Einheit:
-
-
-
-
Code der Maßeinheit:
-
-
-
-
Umsatzsteuer:
-
S (Standard rate)
-
-
-
Umsatzsteuersatz in %:
-
19%
-
+
+
Rabatt (netto):
+
0,00
+
+
+
Listenpreis (netto):
+
0,01
+
+
+
Anzahl der Einheit:
+
+
+
+
Code der Maßeinheit:
+
+
+
+
Umsatzsteuer:
+
S (Standard rate)
+
+
+
Umsatzsteuersatz in %:
+
19%
+
-
-
-
-
-
-
-
Nachlässe auf Ebene der
- Rechnungsposition
-
-
-
-
Zuschläge auf Ebene der
- Rechnungsposition
-
-
-
-
-
+
+
+
+
Nachlässe auf Ebene der Rechnungsposition
+
+
+
Zuschläge auf Ebene der Rechnungsposition
+
+
+
+
+
+
Artikelinformationen
-
-
-
-
-
Bezeichnung:
-
Kopierpapier A4
-
-
-
-
Beschreibung:
-
Zählerstand von-bis:
- 543210 - 544420
-
-
-
-
Artikelnummer:
-
KOP05
-
-
-
Kunden-Material-Nr.:
-
-
-
Eigenschaften des Artikels:
-
-
Zähler-Nr.
-
MG-X79318
-
+
+
+
+
+
Bezeichnung:
+
Kopierpapier A4
-
-
-
-
-
-
Artikelkennung (EAN):
-
4123456000038
-
-
-
Schema der Artikelkennung:
-
- 0088 (EAN Location Code)
-
-
-
-
Code der Artikelklassifizierung:
-
-
-
-
Kennung zur Bildung des Schemas:
-
-
-
-
Version zur Bildung des Schemas:
-
-
-
-
Code des Herkunftslandes:
-
-
+
+
Beschreibung:
+
Zählerstand von-bis: 543210 - 544420
-
-
+
+
Artikelnummer:
+
KOP05
+
+
+
Kunden-Material-Nr.:
+
+
+
Eigenschaften des Artikels:
+
+
Zähler-Nr.
+
MG-X79318
+
+
+
+
+
+
+
+
Artikelkennung (EAN):
+
4123456000038
+
+
+
Schema der Artikelkennung:
+
0088 (EAN Location Code)
+
+
+
Code der Artikelklassifizierung:
+
+
+
+
Kennung zur Bildung des Schemas:
+
+
+
+
Version zur Bildung des Schemas:
+
+
+
+
Code des Herkunftslandes:
+
+
+
+
+
-
-
+
+
+
-
-
-
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
-
-
-
+
+
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
+
+
+
Informationen zum Verkäufer
-
-
Abweichender Handelsname:
-
-
-
-
-
Elektronische Adresse:
-
-
-
-
Schema der elektronischen Adresse:
-
-
-
-
Register-/Registriernummer:
-
-
-
-
-
Steuernummer:
-
201/113/40209
-
-
-
Schema der Steuernummer:
-
-
-
-
Weitere rechtliche Informationen:
-
-
-
-
Code der Umsatzsteuerwährung:
-
-
+
+
Abweichender Handelsname:
+
+
+
+
+
Elektronische Adresse:
+
+
+
+
Schema der elektronischen Adresse:
+
+
+
+
Register-/Registriernummer:
+
+
+
+
+
Steuernummer:
+
201/113/40209
+
+
+
Schema der Steuernummer:
+
+
+
+
Weitere rechtliche Informationen:
+
+
+
+
Code der Umsatzsteuerwährung:
+
+
-
-
-
-
-
+
+
+
Informationen zum Käufer
-
-
Abweichender Handelsname:
-
-
-
-
-
Elektronische Adresse:
-
-
-
-
Schema der elektronischen Adresse:
-
-
-
-
Register-/Registriernummer:
-
-
-
-
Schema der Register-/Registriernummer:
-
-
-
-
-
Abrechnungsdatum der Umsatzsteuer:
-
-
-
-
Code des Umsatzsteuer-Abrechnungsdatums:
-
-
-
-
Kontierungsinformation / Kostenstelle:
-
-
+
+
Abweichender Handelsname:
+
+
+
+
+
Elektronische Adresse:
+
+
+
+
Schema der elektronischen Adresse:
+
+
+
+
Register-/Registriernummer:
+
+
+
+
Schema der Register-/Registriernummer:
+
+
+
+
+
Abrechnungsdatum der Umsatzsteuer:
+
+
+
+
Code des Umsatzsteuer-Abrechnungsdatums:
+
+
+
+
Kontierungsinformation / Kostenstelle:
+
+
-
-
-
+
+
+
Lieferinformationen
-
-
Kennung des Lieferorts:
-
4304171088093
-
-
-
Schema der Kennung:
-
0088
-
-
-
Lieferdatum:
-
30.10.2024
-
-
-
Name des Empfängers:
-
MUSTER-MARKT
-
-
-
Straße / Haus-Nr.:
-
HAUPTSTRASSE 44
-
-
-
-
-
-
-
-
Land:
-
DE (Deutschland)
-
+
+
Kennung des Lieferorts:
+
4304171088093
+
+
+
Schema der Kennung:
+
0088
+
+
+
Lieferdatum:
+
30.10.2024
+
+
+
Name des Empfängers:
+
MUSTER-MARKT
+
+
+
Straße / Haus-Nr.:
+
HAUPTSTRASSE 44
+
+
+
+
+
+
+
+
Land:
+
DE (Deutschland)
+
-
-
-
-
+
+
+
Vertragsdaten
-
-
-
Kennung der Empfangsbestätigung:
-
-
-
-
Kennung der Versandanzeige:
-
-
-
-
Kennung des Lieferscheins:
-
L87654321012 vom 31.10.2024
-
-
-
-
Spezifikationskennung:
-
- urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended
-
-
-
-
Objektkennung:
-
A777123
-
-
-
Schema der Objektkennung:
-
-
+
+
+
Kennung der Empfangsbestätigung:
+
+
+
+
Kennung der Versandanzeige:
+
+
+
+
Kennung des Lieferscheins:
+
L87654321012 vom 31.10.2024
+
+
+
+
Spezifikationskennung:
+
urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended
+
+
+
Objektkennung:
+
A777123
+
+
+
Schema der Objektkennung:
+
+
-
-
-
+
+
+
+
-
-
-
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
-
-
-
+
+
Wir übernehmen keine Haftung für die Richtigkeit der Daten.
+
+
+
Rechnungsbegründende Unterlagen
-
-
+
+
+
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/library/src/test/resources/factur-x-vis-ubl-creditnote.en.html b/library/src/test/resources/factur-x-vis-ubl-creditnote.en.html
index 4c63e9c9..1f15ad29 100644
--- a/library/src/test/resources/factur-x-vis-ubl-creditnote.en.html
+++ b/library/src/test/resources/factur-x-vis-ubl-creditnote.en.html
@@ -1665,7 +1665,7 @@
Net list price:
@@ -1977,7 +1977,7 @@
Net list price:
@@ -2133,7 +2133,7 @@
Net list price:
@@ -2629,4 +2629,4 @@ function downloadData (element_id) {
});
//
-
+