diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index b4d370c4..1dba311c 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -820,8 +820,14 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { xml += "" + "" + "true" + - "" + - "" + currencyFormat(charge.getTotalAmount(calc)) + ""; + ""; + if (charge.getPercent() != null && (profile == Profiles.getByName("EN16931") || (profile == Profiles.getByName("EXTENDED")))) { + xml += "" + vatFormat(charge.getPercent()) + ""; + } + if (charge.getBasisAmount() != null && (profile == Profiles.getByName("EN16931") || (profile == Profiles.getByName("EXTENDED")))) { + xml += "" + currencyFormat(charge.getBasisAmount()) + ""; + } + xml += "" + currencyFormat(charge.getTotalAmount(calc)) + ""; if (charge.getReasonCode() != null) { xml += "" + charge.getReasonCode() + ""; } @@ -864,14 +870,20 @@ public class ZUGFeRD2PullProvider implements IXMLProvider { xml += "" + "" + "false" + - "" + - "" + currencyFormat(allowance.getTotalAmount(calc)) + ""; - if (allowance.getReason() != null) { - xml += "" + XMLTools.encodeXML(allowance.getReason()) + ""; + ""; + if (allowance.getPercent() != null) { + xml += "" + vatFormat(allowance.getPercent()) + ""; } + if (allowance.getBasisAmount() != null) { + xml += "" + currencyFormat(allowance.getBasisAmount()) + ""; + } + xml += "" + currencyFormat(allowance.getTotalAmount(calc)) + ""; if (allowance.getReasonCode() != null) { xml += "" + allowance.getReasonCode() + ""; } + if (allowance.getReason() != null) { + xml += "" + XMLTools.encodeXML(allowance.getReason()) + ""; + } xml += "" + "VAT" + "" + allowance.getCategoryCode() + ""; diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index 0d354bb8..3408b9a0 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -764,8 +764,9 @@ public class ZF2PushTest extends TestCase { .setNumber(number) .addItem(new Item(new Product("Testprodukt", "", "H87", new BigDecimal(19)), price, new BigDecimal(1.0))) .addItem(new Item(new Product("Testprodukt", "", "H87", new BigDecimal(19)), price, new BigDecimal(1.0))) - .addItem(new Item(new Product("Testprodukt", "", "H87", new BigDecimal(19)), price, new BigDecimal(1.0))).addCharge(new Charge().setPercent(new BigDecimal(50)).setTaxPercent(new BigDecimal(19)).setReasonCode("ABK")) - .addAllowance(new Allowance().setPercent(new BigDecimal(50)).setTaxPercent(new BigDecimal(19)).setReason("Mengenrabatt")) + .addItem(new Item(new Product("Testprodukt", "", "H87", new BigDecimal(19)), price, new BigDecimal(1.0))) + .addCharge(new Charge().setPercent(new BigDecimal(50)).setBasisAmount(price).setTaxPercent(new BigDecimal(19)).setReasonCode("ABK").setReason("Verschiedenes")) + .addAllowance(new Allowance().setPercent(new BigDecimal(50)).setTaxPercent(new BigDecimal(19)).setReasonCode("95").setReason("Mengenrabatt")) ); String theXML = new String(ze.getProvider().getXML(), StandardCharsets.UTF_8); assertTrue(theXML.contains("