diff --git a/History.md b/History.md index a829860d..4a695a1a 100644 --- a/History.md +++ b/History.md @@ -8,7 +8,14 @@ allow to add includedNotes with type - 631 multiple invoice referenced documents - 629 - 630 #296 #565 -- +- 657 +- 658 +- 648 +- 651 +- 652 +- -620 +- 653 +- 654 2.15.2 ======= diff --git a/Mustang-CLI/src/main/resources/logback.xml b/Mustang-CLI/src/main/resources/logback.xml index d8c56d7e..9efdfd4c 100644 --- a/Mustang-CLI/src/main/resources/logback.xml +++ b/Mustang-CLI/src/main/resources/logback.xml @@ -1,38 +1,36 @@ - - - - System.err - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - log/ZUV-%d{yyyy-MM}.log - - - 60 - - - - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - - - - - + + + System.err + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + log/ZUV-%d{yyyy-MM}.log + + 60 + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + + + diff --git a/library/src/main/java/org/mustangproject/Contact.java b/library/src/main/java/org/mustangproject/Contact.java index cead6f86..39ef8aa2 100644 --- a/library/src/main/java/org/mustangproject/Contact.java +++ b/library/src/main/java/org/mustangproject/Contact.java @@ -114,7 +114,9 @@ public class Contact implements IZUGFeRDExportableContact { if (currentItemNode.getLocalName() != null) { if (currentItemNode.getLocalName().equals("PersonName")/*CII*/||currentItemNode.getLocalName().equals("Name")/*UBL*/) { - setName(currentItemNode.getFirstChild().getNodeValue()); + if (currentItemNode.getFirstChild()!=null) { + setName(currentItemNode.getFirstChild().getNodeValue()); + } } if (currentItemNode.getLocalName().equals("TelephoneUniversalCommunication")) { /*CII*/ NodeList tel = currentItemNode.getChildNodes(); diff --git a/library/src/main/java/org/mustangproject/Item.java b/library/src/main/java/org/mustangproject/Item.java index 4641a0e3..8fefa87f 100644 --- a/library/src/main/java/org/mustangproject/Item.java +++ b/library/src/main/java/org/mustangproject/Item.java @@ -172,6 +172,32 @@ public class Item implements IZUGFeRDExportableItem { icnm.getAsNodeMap("ApplicableTradeTax") .flatMap(cnm -> cnm.getAsBigDecimal("RateApplicablePercent", "ApplicablePercent")) .ifPresent(product::setVATPercent); + icnm.getAsNodeMap("SpecifiedTradeAllowanceCharge").ifPresent(stac -> { + stac.getAsNodeMap("ChargeIndicator").ifPresent(ci -> { + String isChargeString=ci.getAsString("Indicator").get(); + String percentString=stac.getAsStringOrNull("CalculationPercent"); + String amountString=stac.getAsStringOrNull("ActualAmount"); + String reason=stac.getAsStringOrNull("Reason"); + Charge izac= new Charge(); + if (isChargeString.equalsIgnoreCase("false")) { + izac = new Allowance(); + } else { + izac = new Charge(); + } + if (amountString!=null) { + izac.setTotalAmount(new BigDecimal(amountString)); + } + izac.setPercent(new BigDecimal(percentString)); + izac.setReason(reason); + + if (isChargeString.equalsIgnoreCase("false")) { + addAllowance(izac); + } else { + addCharge(izac); + } + }); + + }); if (recalcPrice && !BigDecimal.ZERO.equals(quantity)) { icnm.getAsNodeMap("SpecifiedTradeSettlementLineMonetarySummation") diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalculator.java b/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalculator.java index e319ec73..d17ccfec 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalculator.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalculator.java @@ -55,7 +55,7 @@ public class LineCalculator { BigDecimal basisQuantity = currentItem.getBasisQuantity().compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ONE.setScale(4) : currentItem.getBasisQuantity(); - itemTotalNetAmount = quantity.multiply(getPrice()).divide(basisQuantity, 18, RoundingMode.HALF_UP) + itemTotalNetAmount = quantity.multiply(price).divide(basisQuantity, 18, RoundingMode.HALF_UP) .subtract(allowanceItemTotal).setScale(2, RoundingMode.HALF_UP); itemTotalVATAmount = itemTotalNetAmount.multiply(multiplicator); } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index caff7b6c..2903d81d 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -737,7 +737,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { } if ((trans.getZFCharges() != null) && (trans.getZFCharges().length > 0)) { - if (profile == Profiles.getByName("XRechnung")) { + if ((profile == Profiles.getByName("XRechnung")) || (profile == Profiles.getByName("EN16931")) || (profile == Profiles.getByName("EXTENDED"))) { for (IZUGFeRDAllowanceCharge charge : trans.getZFCharges()) { xml += "" + "" + diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java index 0417990d..de66b35d 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDInvoiceImporter.java @@ -897,7 +897,7 @@ public class ZUGFeRDInvoiceImporter { // be read, // so the invoice remains arithmetically correct // -> parse document level charges+allowances - xpr = xpath.compile("//*[local-name()=\"SpecifiedTradeAllowanceCharge\"]|//*[local-name()=\"AllowanceCharge\"]");//CII and UBL + xpr = xpath.compile("//*[local-name()=\"ApplicableHeaderTradeSettlement\"]/*[local-name()=\"SpecifiedTradeAllowanceCharge\"]|/*[local-name()=\"AllowanceCharge\"]");//CII and UBL NodeList chargeNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET); for (int i = 0; i < chargeNodes.getLength(); i++) { NodeList chargeNodeChilds = chargeNodes.item(i).getChildNodes(); diff --git a/library/src/main/resources/logback.xml b/library/src/main/resources/logback.xml index 011cab8b..7c5e39d4 100644 --- a/library/src/main/resources/logback.xml +++ b/library/src/main/resources/logback.xml @@ -1,33 +1,37 @@ - - - - System.err - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - log/ZUV-%d{yyyy-MM}.log - - - 60 - - - - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - + + + System.err + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + log/ZUV-%d{yyyy-MM}.log + + 60 + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/library/src/main/resources/stylesheets/result-pdf.xsl b/library/src/main/resources/stylesheets/result-pdf.xsl index 9ffe8e1e..0dfa7c95 100644 --- a/library/src/main/resources/stylesheets/result-pdf.xsl +++ b/library/src/main/resources/stylesheets/result-pdf.xsl @@ -9,11 +9,11 @@ - Es wird empfohlen, das Dokument anzunehmen und weiterzuverarbeiten. + Es wird empfohlen, das Dokument anzunehmen und es weiterzuverarbeiten. Es wird empfohlen, das Dokument zurückzuweisen. @@ -71,47 +71,59 @@ + select="'Angaben zum geprüften Dokument'"/> + select="'black'"/> - - - - - - - - Referenz: - - - - - - - - - - Zeitpunkt der Prüfung: - - - - - - - - - - Erkannter Dokumenttyp: - - - + + + + + + + Referenz: + + + + + + + + + + Zeitpunkt der Prüfung: + + + + + + + + + + Erkannter Dokumenttyp: + + + + + + + + + + + + + @@ -125,35 +137,44 @@ - + + font-weight="bold" + border-style="solid"> - Type + Type - Code + Code - Schwere + Schwere - Text + Text - + - - + + - + - Es gibt weder Hinweise noch Fehler. + Es gibt keine Hinweise, Warnungen oder Fehler. @@ -164,62 +185,113 @@ - - - - - - - - - - - - - - - - - - - red - Fehler - - - Hinweis - - + + + + + red + + + orange + + + black + + + + + + + Fehler + + + Warnung + + + Hinweis + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - red - - + + - - - - - red - - + + + + + + + + + + + + + + + + + + + + + + + select="'black'"/> @@ -234,10 +306,22 @@ - - - - + + + + + + + + + + + + + + + + + diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java index 75aa5324..49c5ce78 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2ZInvoiceImporterTest.java @@ -40,7 +40,6 @@ import java.nio.file.Paths; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Arrays; -import java.util.Date; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @@ -103,6 +102,7 @@ public class ZF2ZInvoiceImporterTest extends ResourceCase { } + public void testInvoiceImportUBL() { diff --git a/validator/src/main/resources/logback.xml b/validator/src/main/resources/logback.xml index aed3e946..f48d8621 100644 --- a/validator/src/main/resources/logback.xml +++ b/validator/src/main/resources/logback.xml @@ -1,30 +1,25 @@ - - - - System.err - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - log/ZUV-%d{yyyy-MM}.log - - - 60 - - - - %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - + + + System.err + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + log/ZUV-%d{yyyy-MM}.log + + 60 + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + +