read basisamount

This commit is contained in:
jstaerk
2025-05-15 10:23:13 +02:00
parent beb5241de6
commit b6e2c2ea2f
4 changed files with 54 additions and 17 deletions

View File

@@ -24,6 +24,10 @@ public class Charge implements IZUGFeRDAllowanceCharge {
* the absolute value if not percentage * the absolute value if not percentage
*/ */
protected BigDecimal totalAmount; protected BigDecimal totalAmount;
/**
* the value the percentage is applied upon
*/
protected BigDecimal basisAmount;
/** /**
* the tax rate the charge belongs to * the tax rate the charge belongs to
*/ */
@@ -104,6 +108,22 @@ public class Charge implements IZUGFeRDAllowanceCharge {
} }
@Override
public BigDecimal getBasisAmount() {
return basisAmount;
}
/***
* sets a potential basis for the potential percentage
* @param basis the basis amount
* @return fluid setter
*/
public Charge setBasisAmount(BigDecimal basis) {
this.basisAmount = basis;
return this;
}
@Override @Override
public String getReasonCode() { public String getReasonCode() {
return reasonCode; return reasonCode;

View File

@@ -97,7 +97,6 @@ public class Item implements IZUGFeRDExportableItem {
//icnm.getNode("AdditionalItemProperty").flatMap(n ->n.getAttributes()).ifPresent(product::setAttributes); //icnm.getNode("AdditionalItemProperty").flatMap(n ->n.getAttributes()).ifPresent(product::setAttributes);
icnm.getAsNodeMap("ClassifiedTaxCategory").flatMap(m -> m.getAsBigDecimal("Percent")) icnm.getAsNodeMap("ClassifiedTaxCategory").flatMap(m -> m.getAsBigDecimal("Percent"))
.ifPresent(product::setVATPercent); .ifPresent(product::setVATPercent);
}); });
@@ -136,8 +135,6 @@ public class Item implements IZUGFeRDExportableItem {
.ifPresent(this::addNote); .ifPresent(this::addNote);
itemMap.getAsNodeMap("SpecifiedLineTradeAgreement", "SpecifiedSupplyChainTradeAgreement").ifPresent(icnm -> { itemMap.getAsNodeMap("SpecifiedLineTradeAgreement", "SpecifiedSupplyChainTradeAgreement").ifPresent(icnm -> {
icnm.getAsNodeMap("BuyerOrderReferencedDocument") icnm.getAsNodeMap("BuyerOrderReferencedDocument")
.flatMap(bordNodes -> bordNodes.getAsString("LineID")) .flatMap(bordNodes -> bordNodes.getAsString("LineID"))
@@ -181,6 +178,7 @@ public class Item implements IZUGFeRDExportableItem {
String isChargeString = ci.getAsString("Indicator").get(); String isChargeString = ci.getAsString("Indicator").get();
String percentString = stac.getAsStringOrNull("CalculationPercent"); String percentString = stac.getAsStringOrNull("CalculationPercent");
String amountString = stac.getAsStringOrNull("ActualAmount"); String amountString = stac.getAsStringOrNull("ActualAmount");
String basisAmountString = stac.getAsStringOrNull("BasisAmount");
String reason = stac.getAsStringOrNull("Reason"); String reason = stac.getAsStringOrNull("Reason");
Charge izac = new Charge(); Charge izac = new Charge();
if (isChargeString.equalsIgnoreCase("false")) { if (isChargeString.equalsIgnoreCase("false")) {
@@ -191,6 +189,9 @@ public class Item implements IZUGFeRDExportableItem {
if (amountString != null) { if (amountString != null) {
izac.setTotalAmount(new BigDecimal(amountString)); izac.setTotalAmount(new BigDecimal(amountString));
} }
if (basisAmountString != null) {
izac.setBasisAmount(new BigDecimal(basisAmountString));
}
if (percentString != null) { if (percentString != null) {
izac.setPercent(new BigDecimal(percentString)); izac.setPercent(new BigDecimal(percentString));
} }
@@ -380,6 +381,7 @@ public class Item implements IZUGFeRDExportableItem {
} }
} }
} }
/*** /***
* jackson convenience method * jackson convenience method
*/ */

View File

@@ -38,6 +38,12 @@ public interface IZUGFeRDAllowanceCharge {
*/ */
default BigDecimal getPercent() {return null;} default BigDecimal getPercent() {return null;}
/***
* returns a basis the precentage is calculated from
* @return null or the basis
*/
default BigDecimal getBasisAmount() {return null;}
/*** /***
* get a description for the allowance/charge * get a description for the allowance/charge
* @return the description * @return the description

View File

@@ -962,6 +962,7 @@ public class ZUGFeRDInvoiceImporter {
NodeList chargeNodeChilds = chargeNodes.item(i).getChildNodes(); NodeList chargeNodeChilds = chargeNodes.item(i).getChildNodes();
boolean isCharge = true; boolean isCharge = true;
String chargeAmount = null; String chargeAmount = null;
String basisAmount = null;
String reason = null; String reason = null;
String reasonCode = null; String reasonCode = null;
String taxPercent = null; String taxPercent = null;
@@ -989,6 +990,8 @@ public class ZUGFeRDInvoiceImporter {
} else if (chargeChildName.equals("ActualAmount") || chargeChildName.equals("Amount")) { } else if (chargeChildName.equals("ActualAmount") || chargeChildName.equals("Amount")) {
chargeAmount = XMLTools.trimOrNull(chargeNodeChilds.item(chargeChildIndex)); 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")) { } else if (chargeChildName.equals("Reason") || chargeChildName.equals("AllowanceChargeReason")) {
reason = XMLTools.trimOrNull(chargeNodeChilds.item(chargeChildIndex)); reason = XMLTools.trimOrNull(chargeNodeChilds.item(chargeChildIndex));
} else if (chargeChildName.equals("ReasonCode") || chargeChildName.equals("AllowanceChargeReasonCode")) { } else if (chargeChildName.equals("ReasonCode") || chargeChildName.equals("AllowanceChargeReasonCode")) {
@@ -1016,6 +1019,9 @@ public class ZUGFeRDInvoiceImporter {
if (taxPercent != null) { if (taxPercent != null) {
c.setTaxPercent(new BigDecimal(taxPercent)); c.setTaxPercent(new BigDecimal(taxPercent));
} }
if (basisAmount != null) {
c.setBasisAmount(new BigDecimal(basisAmount));
}
zpp.addCharge(c); zpp.addCharge(c);
} else { } else {
Allowance a = new Allowance(new BigDecimal(chargeAmount)); Allowance a = new Allowance(new BigDecimal(chargeAmount));
@@ -1028,6 +1034,9 @@ public class ZUGFeRDInvoiceImporter {
if (taxPercent != null) { if (taxPercent != null) {
a.setTaxPercent(new BigDecimal(taxPercent)); a.setTaxPercent(new BigDecimal(taxPercent));
} }
if (basisAmount != null) {
a.setBasisAmount(new BigDecimal(basisAmount));
}
zpp.addAllowance(a); zpp.addAllowance(a);
} }