From 1c8d5c7d60a7fc30f5eee8ad4e0bd5c2447950ee Mon Sep 17 00:00:00 2001 From: Jan Rosendahl Date: Thu, 21 Nov 2024 16:46:57 +0100 Subject: [PATCH 1/3] #571: init for IBAN and mandate --- library/src/main/java/org/mustangproject/DirectDebit.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/org/mustangproject/DirectDebit.java b/library/src/main/java/org/mustangproject/DirectDebit.java index e4ac9a85..cc408eb7 100644 --- a/library/src/main/java/org/mustangproject/DirectDebit.java +++ b/library/src/main/java/org/mustangproject/DirectDebit.java @@ -20,7 +20,8 @@ public class DirectDebit implements IZUGFeRDTradeSettlementDebit { * bean constructor */ public DirectDebit() { - + this.IBAN = ""; + this.mandate = ""; } /*** From 742a135b6a953a80b7f77e0c5248b23abf98cc71 Mon Sep 17 00:00:00 2001 From: Jan Rosendahl Date: Thu, 21 Nov 2024 16:47:37 +0100 Subject: [PATCH 2/3] feature: Category Code for tax category --- .../java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java index a5d16dae..f72316e4 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java @@ -743,6 +743,15 @@ public class ZUGFeRDImporter extends ZUGFeRDInvoiceImporter { node = getNodeByName(node.getChildNodes(), "CalculatedAmount"); lineItem.setTax(XMLTools.tryBigDecimal(node)); } + + node = getNodeByName(nn.getChildNodes(), "ApplicableTradeTax"); + if (node != null) { + node = getNodeByName(node.getChildNodes(), "CategoryCode"); + if(node != null){ + lineItem.getProduct().setTaxCategoryCode(XMLTools.getNodeValue(node)); + } + } + node = getNodeByName(nn.getChildNodes(), "BillingSpecifiedPeriod"); if (node != null) { final Node start = getNodeByName(node.getChildNodes(), "StartDateTime"); From 419af1d8d1b33a97a6c19feb40eabe27c4d1c832 Mon Sep 17 00:00:00 2001 From: Jan Rosendahl Date: Thu, 21 Nov 2024 17:20:57 +0100 Subject: [PATCH 3/3] div/zero --- .../java/org/mustangproject/ZUGFeRD/LineCalculator.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalculator.java b/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalculator.java index f3e8aa2d..2f997991 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalculator.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalculator.java @@ -44,10 +44,14 @@ public class LineCalculator { BigDecimal multiplicator = vatPercent.divide(BigDecimal.valueOf(100)); priceGross = currentItem.getPrice(); // see https://github.com/ZUGFeRD/mustangproject/issues/159 price = priceGross.subtract(allowance).add(charge); - itemTotalNetAmount = currentItem.getQuantity().multiply(getPrice()).divide(currentItem.getBasisQuantity(), 18, RoundingMode.HALF_UP) + // Division/Zero occurred here. + // Used the setScale only because that's also done in getBasisQuantity + BigDecimal basisQuantity = currentItem.getBasisQuantity().compareTo(BigDecimal.ZERO) == 0 + ? BigDecimal.ONE.setScale(4) + : currentItem.getBasisQuantity(); + itemTotalNetAmount = currentItem.getQuantity().multiply(getPrice()).divide(basisQuantity, 18, RoundingMode.HALF_UP) .subtract(allowanceItemTotal).setScale(2, RoundingMode.HALF_UP); itemTotalVATAmount = itemTotalNetAmount.multiply(multiplicator); - } public BigDecimal getPrice() {