diff --git a/library/src/main/java/org/mustangproject/Charge.java b/library/src/main/java/org/mustangproject/Charge.java
index f9ca59ab..024567f0 100644
--- a/library/src/main/java/org/mustangproject/Charge.java
+++ b/library/src/main/java/org/mustangproject/Charge.java
@@ -9,7 +9,7 @@ import java.math.BigDecimal;
public class Charge implements IZUGFeRDAllowanceCharge {
- protected BigDecimal percent;
+ protected BigDecimal percent = null;
protected BigDecimal totalAmount;
protected BigDecimal taxPercent;
protected String reason;
@@ -67,6 +67,7 @@ public class Charge implements IZUGFeRDAllowanceCharge {
}
+ @Override
public BigDecimal getPercent() {
return percent;
}
@@ -82,6 +83,7 @@ public class Charge implements IZUGFeRDAllowanceCharge {
}
+
public Charge setCategoryCode(String categoryCode) {
this.categoryCode = categoryCode;
return this;
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java
index edbacedd..152c445c 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java
@@ -25,6 +25,7 @@ import java.math.BigDecimal;
public interface IZUGFeRDAllowanceCharge {
BigDecimal getTotalAmount(IAbsoluteValueProvider trans);
+ default BigDecimal getPercent() {return null;}
String getReason();
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
index 25dbb4b1..a060af4f 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
@@ -96,7 +96,8 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IAbsoluteValueProvide
return res;
}
-//move
+
+ //move
protected BigDecimal getTotalPrepaid() {
if (trans.getTotalPrepaidAmount() == null) {
return new BigDecimal(0);
@@ -207,6 +208,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IAbsoluteValueProvide
return hm;
}
+
@Override
public Profile getProfile() {
return profile;
@@ -273,6 +275,22 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IAbsoluteValueProvide
}
+
+ protected String getAllowanceChargeStr(IZUGFeRDAllowanceCharge allowance, IAbsoluteValueProvider item) {
+ String percentage = "";
+ String chargeIndicator = "false";
+ if (allowance.getPercent() != null) {
+ percentage = "" + allowance.getPercent() + "";
+ percentage += "" + item.getValue() + "";
+ }
+ if (allowance.isCharge()) {
+ chargeIndicator = "true";
+ }
+
+ String allowanceChargeStr = "" + chargeIndicator + "" + percentage + "" + priceFormat(allowance.getTotalAmount(item)) + "";
+ return allowanceChargeStr;
+ }
+
@Override
public void generateXML(IExportableTransaction trans) {
this.trans = trans;
@@ -376,12 +394,13 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IAbsoluteValueProvide
String allowanceChargeStr = "";
if (currentItem.getItemAllowances() != null && currentItem.getItemAllowances().length > 0) {
for (IZUGFeRDAllowanceCharge allowance : currentItem.getItemAllowances()) {
- allowanceChargeStr = "false" + priceFormat(allowance.getTotalAmount(currentItem)) + "";
+ allowanceChargeStr += getAllowanceChargeStr(allowance, currentItem);
}
}
if (currentItem.getItemCharges() != null && currentItem.getItemCharges().length > 0) {
for (IZUGFeRDAllowanceCharge charge : currentItem.getItemCharges()) {
- allowanceChargeStr += "true" + priceFormat(charge.getTotalAmount(currentItem)) + "";
+ allowanceChargeStr += getAllowanceChargeStr(charge, currentItem);
+
}
}