add chareg/allowance percent to XML, if set

This commit is contained in:
Jochen Stärk
2020-10-22 12:11:17 +02:00
parent 20a5d27899
commit 72f9093e94
3 changed files with 26 additions and 4 deletions

View File

@@ -9,7 +9,7 @@ import java.math.BigDecimal;
public class Charge implements IZUGFeRDAllowanceCharge { public class Charge implements IZUGFeRDAllowanceCharge {
protected BigDecimal percent; protected BigDecimal percent = null;
protected BigDecimal totalAmount; protected BigDecimal totalAmount;
protected BigDecimal taxPercent; protected BigDecimal taxPercent;
protected String reason; protected String reason;
@@ -67,6 +67,7 @@ public class Charge implements IZUGFeRDAllowanceCharge {
} }
@Override
public BigDecimal getPercent() { public BigDecimal getPercent() {
return percent; return percent;
} }
@@ -82,6 +83,7 @@ public class Charge implements IZUGFeRDAllowanceCharge {
} }
public Charge setCategoryCode(String categoryCode) { public Charge setCategoryCode(String categoryCode) {
this.categoryCode = categoryCode; this.categoryCode = categoryCode;
return this; return this;

View File

@@ -25,6 +25,7 @@ import java.math.BigDecimal;
public interface IZUGFeRDAllowanceCharge { public interface IZUGFeRDAllowanceCharge {
BigDecimal getTotalAmount(IAbsoluteValueProvider trans); BigDecimal getTotalAmount(IAbsoluteValueProvider trans);
default BigDecimal getPercent() {return null;}
String getReason(); String getReason();

View File

@@ -96,6 +96,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IAbsoluteValueProvide
return res; return res;
} }
//move //move
protected BigDecimal getTotalPrepaid() { protected BigDecimal getTotalPrepaid() {
if (trans.getTotalPrepaidAmount() == null) { if (trans.getTotalPrepaidAmount() == null) {
@@ -207,6 +208,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IAbsoluteValueProvide
return hm; return hm;
} }
@Override @Override
public Profile getProfile() { public Profile getProfile() {
return profile; 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 = "<ram:CalculationPercent>" + allowance.getPercent() + "</ram:CalculationPercent>";
percentage += "<ram:BasisAmount>" + item.getValue() + "</ram:BasisAmount>";
}
if (allowance.isCharge()) {
chargeIndicator = "true";
}
String allowanceChargeStr = "<ram:AppliedTradeAllowanceCharge><ram:ChargeIndicator><udt:Indicator>" + chargeIndicator + "</udt:Indicator></ram:ChargeIndicator>" + percentage + "<ram:ActualAmount>" + priceFormat(allowance.getTotalAmount(item)) + "</ram:ActualAmount></ram:AppliedTradeAllowanceCharge>";
return allowanceChargeStr;
}
@Override @Override
public void generateXML(IExportableTransaction trans) { public void generateXML(IExportableTransaction trans) {
this.trans = trans; this.trans = trans;
@@ -376,12 +394,13 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IAbsoluteValueProvide
String allowanceChargeStr = ""; String allowanceChargeStr = "";
if (currentItem.getItemAllowances() != null && currentItem.getItemAllowances().length > 0) { if (currentItem.getItemAllowances() != null && currentItem.getItemAllowances().length > 0) {
for (IZUGFeRDAllowanceCharge allowance : currentItem.getItemAllowances()) { for (IZUGFeRDAllowanceCharge allowance : currentItem.getItemAllowances()) {
allowanceChargeStr = "<ram:AppliedTradeAllowanceCharge><ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator><ram:ActualAmount>" + priceFormat(allowance.getTotalAmount(currentItem)) + "</ram:ActualAmount></ram:AppliedTradeAllowanceCharge>"; allowanceChargeStr += getAllowanceChargeStr(allowance, currentItem);
} }
} }
if (currentItem.getItemCharges() != null && currentItem.getItemCharges().length > 0) { if (currentItem.getItemCharges() != null && currentItem.getItemCharges().length > 0) {
for (IZUGFeRDAllowanceCharge charge : currentItem.getItemCharges()) { for (IZUGFeRDAllowanceCharge charge : currentItem.getItemCharges()) {
allowanceChargeStr += "<ram:AppliedTradeAllowanceCharge><ram:ChargeIndicator><udt:Indicator>true</udt:Indicator></ram:ChargeIndicator><ram:ActualAmount>" + priceFormat(charge.getTotalAmount(currentItem)) + "</ram:ActualAmount></ram:AppliedTradeAllowanceCharge>"; allowanceChargeStr += getAllowanceChargeStr(charge, currentItem);
} }
} }