From 9bf1097bac290791eb420f7f397311e43ec47ebe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jochen=20Sta=CC=88rk?= Date: Mon, 21 Sep 2020 21:45:03 +0200 Subject: [PATCH] allow relative =percentual item allowances/charges --- .../java/org/mustangproject/Allowance.java | 4 +- .../main/java/org/mustangproject/Charge.java | 24 ++- .../main/java/org/mustangproject/Contact.java | 6 + .../main/java/org/mustangproject/Invoice.java | 9 + .../ZUGFeRD/IZUGFeRDAllowanceCharge.java | 2 +- .../org/mustangproject/ZUGFeRD/LineCalc.java | 24 ++- .../ZUGFeRD/ZUGFeRD2PullProvider.java | 199 +++++++++--------- .../ZUGFeRD/IZUGFeRDAllowanceChargeImpl.java | 2 +- .../mustangproject/ZUGFeRD/ZF2PushTest.java | 28 ++- .../mustangproject/validator/LibraryTest.java | 19 ++ 10 files changed, 192 insertions(+), 125 deletions(-) diff --git a/library/src/main/java/org/mustangproject/Allowance.java b/library/src/main/java/org/mustangproject/Allowance.java index 14befb7d..3ad5b8d1 100644 --- a/library/src/main/java/org/mustangproject/Allowance.java +++ b/library/src/main/java/org/mustangproject/Allowance.java @@ -9,8 +9,8 @@ public class Allowance extends Charge implements IZUGFeRDAllowanceCharge { public Allowance() { } - public Allowance(BigDecimal totalAmount, BigDecimal taxPercent, String reason, String categoryCode) { - super(totalAmount, taxPercent, reason, categoryCode); + public Allowance(BigDecimal totalAmount) { + super(totalAmount); } diff --git a/library/src/main/java/org/mustangproject/Charge.java b/library/src/main/java/org/mustangproject/Charge.java index e6ca1ab5..ccc4606f 100644 --- a/library/src/main/java/org/mustangproject/Charge.java +++ b/library/src/main/java/org/mustangproject/Charge.java @@ -1,6 +1,7 @@ package org.mustangproject; import org.mustangproject.ZUGFeRD.IZUGFeRDAllowanceCharge; +import org.mustangproject.ZUGFeRD.IZUGFeRDExportableItem; import java.math.BigDecimal; @@ -16,11 +17,12 @@ public class Charge implements IZUGFeRDAllowanceCharge { } - public Charge(BigDecimal totalAmount, BigDecimal taxPercent, String reason, String categoryCode) { + /*** + * creates a item level or invoice level charge + * @param totalAmount (the absolute amount) + */ + public Charge(BigDecimal totalAmount) { this.totalAmount = totalAmount; - this.taxPercent = taxPercent; - this.reason = reason; - this.categoryCode = categoryCode; } @@ -52,11 +54,21 @@ public class Charge implements IZUGFeRDAllowanceCharge { @Override - public BigDecimal getTotalAmount() { - return totalAmount; + public BigDecimal getTotalAmount(IZUGFeRDExportableItem currentItem) { + if (totalAmount!=null) { + return totalAmount; + } else if (percent!=null) { + return currentItem.getPrice().multiply(getPercent().divide(new BigDecimal(100))); + } else { + throw new RuntimeException("Either totalAmount or percent must be set"); + } } + public BigDecimal getPercent() { + return percent; + } + @Override public BigDecimal getTaxPercent() { return taxPercent; diff --git a/library/src/main/java/org/mustangproject/Contact.java b/library/src/main/java/org/mustangproject/Contact.java index 55889a25..74f92669 100644 --- a/library/src/main/java/org/mustangproject/Contact.java +++ b/library/src/main/java/org/mustangproject/Contact.java @@ -6,6 +6,12 @@ public class Contact implements IZUGFeRDExportableContact { protected String name,phone,email,zip,street,location,country; + public Contact(String name, String phone, String email) { + this.name = name; + this.phone = phone; + this.email = email; + + } public Contact(String name, String phone, String email, String street, String zip, String location, String country) { this.name = name; this.phone = phone; diff --git a/library/src/main/java/org/mustangproject/Invoice.java b/library/src/main/java/org/mustangproject/Invoice.java index 5a3bada0..c0473b94 100644 --- a/library/src/main/java/org/mustangproject/Invoice.java +++ b/library/src/main/java/org/mustangproject/Invoice.java @@ -196,6 +196,11 @@ public class Invoice implements IExportableTransaction { return getSender().getTaxID(); } + + @Deprecated + /*** + * @deprecated use TradeParty::addTaxID instead + */ public Invoice setOwnTaxID(String ownTaxID) { sender.addTaxID(ownTaxID); return this; @@ -206,6 +211,10 @@ public class Invoice implements IExportableTransaction { return getSender().getVATID(); } + @Deprecated + /*** + * @deprecated use TradeParty::addVATID instead + */ public Invoice setOwnVATID(String ownVATID) { sender.addVATID(ownVATID); 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 6e8ec8f6..bcca7aec 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java @@ -24,7 +24,7 @@ import java.math.BigDecimal; */ public interface IZUGFeRDAllowanceCharge { - BigDecimal getTotalAmount(); + BigDecimal getTotalAmount(IZUGFeRDExportableItem currentItem); String getReason(); diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalc.java b/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalc.java index cd75c7ac..39511cb0 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalc.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/LineCalc.java @@ -8,19 +8,25 @@ public class LineCalc { private BigDecimal priceGross; private BigDecimal itemTotalNetAmount; private BigDecimal itemTotalVATAmount; - private BigDecimal allowance=new BigDecimal(0); + private BigDecimal allowance = new BigDecimal(0); + private BigDecimal charge = new BigDecimal(0); public LineCalc(IZUGFeRDExportableItem currentItem) { - if (currentItem.getItemAllowances()!=null && currentItem.getItemAllowances().length>0) { - for (IZUGFeRDAllowanceCharge allowance:currentItem.getItemAllowances()) { - addAllowance(allowance.getTotalAmount()); + if (currentItem.getItemAllowances() != null && currentItem.getItemAllowances().length > 0) { + for (IZUGFeRDAllowanceCharge allowance : currentItem.getItemAllowances()) { + addAllowance(allowance.getTotalAmount(currentItem)); + } + } + if (currentItem.getItemCharges() != null && currentItem.getItemCharges().length > 0) { + for (IZUGFeRDAllowanceCharge charge : currentItem.getItemCharges()) { + addCharge(charge.getTotalAmount(currentItem)); } } BigDecimal multiplicator = currentItem.getProduct().getVATPercent().divide(new BigDecimal(100)) .add(new BigDecimal(1)); priceGross = currentItem.getPrice(); // see https://github.com/ZUGFeRD/mustangproject/issues/159 - price = priceGross.subtract(allowance); + price = priceGross.subtract(allowance).add(charge); totalGross = currentItem.getQuantity().multiply(getPrice()).divide(currentItem.getBasisQuantity()) .multiply(multiplicator); itemTotalNetAmount = currentItem.getQuantity().multiply(getPrice()).divide(currentItem.getBasisQuantity()) @@ -49,9 +55,13 @@ public class LineCalc { public BigDecimal getPriceGross() { return priceGross; } - public void addAllowance(BigDecimal b) { - allowance=b; + public void addAllowance(BigDecimal b) { + allowance = allowance.add(b); + } + + public void addCharge(BigDecimal b) { + charge = charge.add(b); } diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java index 242b3f2a..dbcdbc86 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java @@ -1,21 +1,23 @@ -/** ********************************************************************** - * +/** + * ********************************************************************* + *

* Copyright 2018 Jochen Staerk - * + *

* Use is subject to license terms. - * + *

* Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * + *

* Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * + *

* See the License for the specific language governing permissions and * limitations under the License. - * - *********************************************************************** */ + *

+ * ********************************************************************** + */ package org.mustangproject.ZUGFeRD; import java.io.IOException; @@ -33,7 +35,6 @@ import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; -import org.mustangproject.Charge; import org.mustangproject.XMLTools; public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { @@ -160,7 +161,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { protected String getTradePartyAsXML(IZUGFeRDExportableTradeParty contact) { String xml = ""; - // According EN16931 either GlobalID or seller assigned ID might be present for BuyerTradeParty + // According EN16931 either GlobalID or seller assigned ID might be present for BuyerTradeParty // and ShipToTradeParty, but not both. Prefer seller assigned ID for now. if (contact.getID()!=null) { xml += " " + XMLTools.encodeXML(contact.getID()) + "\n"; @@ -201,19 +202,19 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { public void generateXML(IExportableTransaction trans) { this.trans = trans; - boolean hasDueDate=false; - String taxCategoryCode=""; + boolean hasDueDate = false; + String taxCategoryCode = ""; SimpleDateFormat germanDateFormat = new SimpleDateFormat("dd.MM.yyyy"); - String exemptionReason=""; + String exemptionReason = ""; - if (trans.getPaymentTermDescription()!=null) { - paymentTermsDescription=trans.getPaymentTermDescription(); + if (trans.getPaymentTermDescription() != null) { + paymentTermsDescription = trans.getPaymentTermDescription(); } - if (paymentTermsDescription==null) { - paymentTermsDescription= "Zahlbar ohne Abzug bis " + germanDateFormat.format(trans.getDueDate()); - + if (paymentTermsDescription == null) { + paymentTermsDescription = "Zahlbar ohne Abzug bis " + germanDateFormat.format(trans.getDueDate()); + } String senderReg = ""; @@ -232,15 +233,15 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { } String subjectNote = ""; - if (trans.getSubjectNote()!=null) { + if (trans.getSubjectNote() != null) { subjectNote = "\n" + " " - + XMLTools.encodeXML(trans.getSubjectNote())+ "\n" + + XMLTools.encodeXML(trans.getSubjectNote()) + "\n" + "\n"; } - String typecode="380"; - if (trans.getDocumentCode()!=null) { - typecode=trans.getDocumentCode(); + String typecode = "380"; + if (trans.getDocumentCode() != null) { + typecode = trans.getDocumentCode(); } String xml = "\n" @@ -265,9 +266,9 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { + " " + typecode + "\n" + " " + zugferdDateFormat.format(trans.getIssueDate()) + "\n" // date - // format - // was - // 20130605 + // format + // was + // 20130605 + subjectNote + rebateAgreement + senderReg @@ -277,36 +278,35 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { int lineID = 0; for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) { lineID++; - taxCategoryCode=currentItem.getProduct().getTaxCategoryCode(); - if (currentItem.getProduct().getTaxExemptionReason() != null) { - exemptionReason="" + XMLTools.encodeXML(currentItem.getProduct().getTaxExemptionReason()) + ""; + taxCategoryCode = currentItem.getProduct().getTaxCategoryCode(); + if (currentItem.getProduct().getTaxExemptionReason() != null) { + exemptionReason = "" + XMLTools.encodeXML(currentItem.getProduct().getTaxExemptionReason()) + ""; } - + LineCalc lc = new LineCalc(currentItem); xml = xml + " \n" + " \n" + " " + lineID + "\n" //$NON-NLS-2$ + " \n" + " \n"; - // + " 4012345001235\n" + // + " 4012345001235\n" if (currentItem.getProduct().getSellerAssignedID() != null) { - xml = xml + " " - + XMLTools.encodeXML(currentItem.getProduct().getSellerAssignedID()) + "\n"; + xml = xml + " " + + XMLTools.encodeXML(currentItem.getProduct().getSellerAssignedID()) + "\n"; } if (currentItem.getProduct().getBuyerAssignedID() != null) { - xml = xml + " " - + XMLTools.encodeXML(currentItem.getProduct().getBuyerAssignedID()) + "\n"; + xml = xml + " " + + XMLTools.encodeXML(currentItem.getProduct().getBuyerAssignedID()) + "\n"; } - - String allowanceStr=" " + quantityFormat(currentItem.getBasisQuantity()) +"\n"; - if (currentItem.getItemAllowances()!=null && currentItem.getItemAllowances().length>0) { - for (IZUGFeRDAllowanceCharge allowance:currentItem.getItemAllowances()) { - if (allowance.isCharge()) { - throw new RuntimeException("Item level charges are not yet implemented"); - } else { - allowanceStr= "false"+priceFormat(allowance.getTotalAmount())+""; - } + String allowanceChargeStr = ""; + if (currentItem.getItemAllowances() != null && currentItem.getItemAllowances().length > 0) { + for (IZUGFeRDAllowanceCharge allowance : currentItem.getItemAllowances()) { + allowanceChargeStr = "false" + priceFormat(allowance.getTotalAmount(currentItem)) + ""; + } + } + if (currentItem.getItemCharges() != null && currentItem.getItemCharges().length > 0) { + for (IZUGFeRDAllowanceCharge charge : currentItem.getItemCharges()) { + allowanceChargeStr += "true" + priceFormat(charge.getTotalAmount(currentItem)) + ""; } } @@ -319,18 +319,20 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { + " \n" + " " + priceFormat(lc.getPriceGross()) + "\n" //currencyID=\"EUR\" - + allowanceStr - // + " \n" - // + " false\n" - // + " 0.6667\n" - // + " Rabatt\n" - // + " \n" - + " \n" + + allowanceChargeStr + + "" + quantityFormat(currentItem.getBasisQuantity()) + "\n" + // + " \n" + // + " false\n" + // + " 0.6667\n" + // + " Rabatt\n" + // + " \n" + +" \n" + " \n" + " " + priceFormat(lc.getPrice()) + "\n" // currencyID=\"EUR\" + " " + quantityFormat(currentItem.getBasisQuantity()) +"\n" + + "\">" + quantityFormat(currentItem.getBasisQuantity()) + "\n" + " \n" + " \n" @@ -342,8 +344,8 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { + " \n" + " VAT\n" + exemptionReason - + " "+currentItem.getProduct().getTaxCategoryCode()+"\n" - + + " " + currentItem.getProduct().getTaxCategoryCode() + "\n" + + " " + vatFormat(currentItem.getProduct().getVATPercent()) + "\n" + " \n" @@ -351,11 +353,11 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { + " " + currencyFormat(lc.getItemTotalNetAmount()) + "\n" // currencyID=\"EUR\" + " \n"; - if (currentItem.getAdditionalReferencedDocumentID()!=null) { - xml=xml + " "+currentItem.getAdditionalReferencedDocumentID()+"130\n"; - - } - xml=xml + " \n" + if (currentItem.getAdditionalReferencedDocumentID() != null) { + xml = xml + " " + currentItem.getAdditionalReferencedDocumentID() + "130\n"; + + } + xml = xml + " \n" + " \n"; } @@ -366,18 +368,18 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { } xml = xml + " \n"; - if (trans.getOwnForeignOrganisationID()!=null) { + if (trans.getOwnForeignOrganisationID() != null) { xml = xml + " " + XMLTools.encodeXML(trans.getOwnForeignOrganisationID()) + "\n"; } - - if ((trans.getSender()!=null)&&(trans.getSender().getGlobalID()!=null)&&(trans.getSender().getGlobalIDScheme()!=null)) { + + if ((trans.getSender() != null) && (trans.getSender().getGlobalID() != null) && (trans.getSender().getGlobalIDScheme() != null)) { xml = xml + " " - + XMLTools.encodeXML(trans.getSender().getGlobalID()) + "\n"; + + XMLTools.encodeXML(trans.getSender().getGlobalID()) + "\n"; } xml = xml + " " + XMLTools.encodeXML(trans.getSender().getName()) + "\n"; //$NON-NLS-2$ - if ((trans.getOwnVATID()!=null)&&(trans.getOwnOrganisationName()!=null)) { - + if ((trans.getOwnVATID() != null) && (trans.getOwnOrganisationName() != null)) { + xml = xml + " \n" + " " + XMLTools.encodeXML(trans.getOwnVATID()) + "\n" + " " + XMLTools.encodeXML(trans.getOwnOrganisationName()) + "\n" @@ -416,24 +418,27 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { + " \n" + " \n" + " \n"; + // + " GE2020211\n" + // + " 4000001987658\n" + xml+=getTradePartyAsXML(trans.getRecipient()); xml += " \n"; - if (trans.getBuyerOrderReferencedDocumentID()!=null) { + if (trans.getBuyerOrderReferencedDocumentID() != null) { xml = xml + " \n" - + " " - + XMLTools.encodeXML(trans.getBuyerOrderReferencedDocumentID()) + "\n" - + " \n"; + + " " + + XMLTools.encodeXML(trans.getBuyerOrderReferencedDocumentID()) + "\n" + + " \n"; } - xml = xml + " \n" - + " \n" ; - if (this.trans.getDeliveryAddress()!=null) { - xml += ""+ - getTradePartyAsXML(this.trans.getDeliveryAddress())+ - ""; + xml = xml + " \n" + + " \n"; + if (this.trans.getDeliveryAddress() != null) { + xml += "" + + getTradePartyAsXML(this.trans.getDeliveryAddress()) + + ""; } - - xml+= " \n" + + xml += " \n" + " "; if (trans.getDeliveryDate() != null) { @@ -454,21 +459,21 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { + " " + XMLTools.encodeXML(trans.getNumber()) + "\n" //$NON-NLS-2$ + " " + trans.getCurrency() + "\n"; - if (trans.getTradeSettlementPayment()!=null) { + if (trans.getTradeSettlementPayment() != null) { for (IZUGFeRDTradeSettlementPayment payment : trans.getTradeSettlementPayment()) { - if(payment!=null) { - hasDueDate=true; - xml+=payment.getSettlementXML(); + if (payment != null) { + hasDueDate = true; + xml += payment.getSettlementXML(); } } } - if (trans.getTradeSettlement()!=null) { + if (trans.getTradeSettlement() != null) { for (IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) { - if(payment!=null) { + if (payment != null) { if (payment instanceof IZUGFeRDTradeSettlementPayment) { - hasDueDate=true; + hasDueDate = true; } - xml+=payment.getSettlementXML(); + xml += payment.getSettlementXML(); } } } @@ -483,7 +488,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { + " VAT\n" + exemptionReason + " " + currencyFormat(amount.getBasis()) + "\n" // currencyID=\"EUR\" - + " "+taxCategoryCode+"\n" + + " " + taxCategoryCode + "\n" + " " + vatFormat(currentTaxPercent) + "\n" + " \n"; //$NON-NLS-2$ @@ -502,7 +507,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { } } - if (hasDueDate && (trans.getDueDate()!=null)) { + if (hasDueDate && (trans.getDueDate() != null)) { xml = xml + " " // $NON-NLS-2$ + zugferdDateFormat.format(trans.getDueDate()) + "\n";// 20130704 @@ -515,24 +520,24 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { xml = xml + " \n" + " " + currencyFormat(getTotal()) + "\n" //$NON-NLS-2$ - // currencyID=\"EUR\" + // currencyID=\"EUR\" + " 0.00\n" + " 0.00\n" // - // currencyID=\"EUR\" + // currencyID=\"EUR\" // + " 5.80\n" // + " 14.73\n" + " " + currencyFormat(getTotal()) + "\n" //$NON-NLS-2$ - // // - // currencyID=\"EUR\" + // // + // currencyID=\"EUR\" + " " + currencyFormat(getTotalGross().subtract(getTotal())) + "\n" + " " + currencyFormat(getTotalGross()) + "\n" //$NON-NLS-2$ - // // - // currencyID=\"EUR\" + // // + // currencyID=\"EUR\" + " " + currencyFormat(getTotalPrepaid()) + "\n" + " " + currencyFormat(getTotalGross().subtract(getTotalPrepaid())) + "\n" //$NON-NLS-2$ - // // - // currencyID=\"EUR\" + // // + // currencyID=\"EUR\" + " \n" + " \n"; // + " \n" @@ -594,7 +599,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { paymentTermsXml += ""; paymentTermsXml += "" + zugferdDateFormat.format(baseDate) + ""; paymentTermsXml += ""; - + paymentTermsXml += "" + discountTerms.getBasePeriodMeasure() + ""; } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceChargeImpl.java b/library/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceChargeImpl.java index 041cb557..23203647 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceChargeImpl.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceChargeImpl.java @@ -27,7 +27,7 @@ public class IZUGFeRDAllowanceChargeImpl implements IZUGFeRDAllowanceCharge { boolean isCharge=true; @Override - public BigDecimal getTotalAmount() { + public BigDecimal getTotalAmount(IZUGFeRDExportableItem currentItem) { return totalAmount; } diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java index 7f959ff5..4450f9f8 100644 --- a/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java +++ b/library/src/test/java/org/mustangproject/ZUGFeRD/ZF2PushTest.java @@ -35,6 +35,7 @@ import junit.framework.TestCase; public class ZF2PushTest extends TestCase { final String TARGET_PDF = "./target/testout-ZF2Push.pdf"; final String TARGET_CORRECTIONPDF = "./target/testout-ZF2PushCorrection.pdf"; + final String TARGET_ITEMCHARGESALLOWANCESPDF = "./target/testout-ZF2PushItemChargesAllowances.pdf"; final String TARGET_CHARGESALLOWANCESPDF = "./target/testout-ZF2PushChargesAllowances.pdf"; public void testPushExport() { @@ -134,27 +135,32 @@ public class ZF2PushTest extends TestCase { ZUGFeRDExporterFromA1 ze = new ZUGFeRDExporterFromA1().setProducer("My Application") .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors() .load(SOURCE_PDF)) { - ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number) - .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance(new BigDecimal(0.1),new BigDecimal(0), "","K"))) - .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0))) - .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0))) + .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50))))); + + /* + ze.setTransaction(new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(orgname,"teststr", "55232","teststadt","DE")).setOwnTaxID("4711").setOwnVATID("DE0815").setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")).setNumber(number) + .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance(new BigDecimal("0.1")))) + .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addAllowance(new Allowance().setPercent(new BigDecimal(50)))) + .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(2.0)).addCharge(new Charge(new BigDecimal(1)))) + .addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(1.0)).addCharge(new Charge(new BigDecimal(1))).addAllowance(new Allowance(new BigDecimal("1")))) ); + */ String theXML = new String(ze.getProvider().getXML()); assertTrue(theXML.contains("