first step to support tax category codes
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
1.
|
1.7.5
|
||||||
=====
|
=====
|
||||||
2019-
|
2019-10-
|
||||||
|
|
||||||
- support Sepa Direct Debit
|
- support Sepa Direct Debit
|
||||||
|
- closes #134 ZUGFeRD2PullProvider uses NetPrice for GrossPrice
|
||||||
|
|
||||||
1.7.4
|
1.7.4
|
||||||
=====
|
=====
|
||||||
|
|||||||
@@ -82,4 +82,9 @@ public interface IZUGFeRDExportableProduct {
|
|||||||
*/
|
*/
|
||||||
BigDecimal getVATPercent();
|
BigDecimal getVATPercent();
|
||||||
|
|
||||||
|
default String getTaxCategoryCode() {
|
||||||
|
return "S";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -319,7 +319,7 @@ public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider {
|
|||||||
+ " <ram:SpecifiedLineTradeSettlement>\n" //$NON-NLS-1$
|
+ " <ram:SpecifiedLineTradeSettlement>\n" //$NON-NLS-1$
|
||||||
+ " <ram:ApplicableTradeTax>\n" //$NON-NLS-1$
|
+ " <ram:ApplicableTradeTax>\n" //$NON-NLS-1$
|
||||||
+ " <ram:TypeCode>VAT</ram:TypeCode>\n" //$NON-NLS-1$
|
+ " <ram:TypeCode>VAT</ram:TypeCode>\n" //$NON-NLS-1$
|
||||||
+ " <ram:CategoryCode>S</ram:CategoryCode>\n" //$NON-NLS-1$
|
+ " <ram:CategoryCode>"+currentItem.getProduct().getTaxCategoryCode()+"</ram:CategoryCode>\n" //$NON-NLS-1$
|
||||||
+ " <ram:RateApplicablePercent>" //$NON-NLS-1$
|
+ " <ram:RateApplicablePercent>" //$NON-NLS-1$
|
||||||
+ vatFormat(currentItem.getProduct().getVATPercent()) + "</ram:RateApplicablePercent>\n" //$NON-NLS-1$
|
+ vatFormat(currentItem.getProduct().getVATPercent()) + "</ram:RateApplicablePercent>\n" //$NON-NLS-1$
|
||||||
+ " </ram:ApplicableTradeTax>\n" //$NON-NLS-1$
|
+ " </ram:ApplicableTradeTax>\n" //$NON-NLS-1$
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ public abstract class MustangReaderTestCase extends TestCase implements IZUGFeRD
|
|||||||
|
|
||||||
protected class Item implements IZUGFeRDExportableItem {
|
protected class Item implements IZUGFeRDExportableItem {
|
||||||
|
|
||||||
public Item(BigDecimal price, BigDecimal quantity, Product product) {
|
public Item(BigDecimal price, BigDecimal quantity, IZUGFeRDExportableProduct product) {
|
||||||
super();
|
super();
|
||||||
this.price = price;
|
this.price = price;
|
||||||
this.quantity = quantity;
|
this.quantity = quantity;
|
||||||
@@ -133,7 +133,7 @@ public abstract class MustangReaderTestCase extends TestCase implements IZUGFeRD
|
|||||||
}
|
}
|
||||||
|
|
||||||
private BigDecimal price, quantity;
|
private BigDecimal price, quantity;
|
||||||
private Product product;
|
private IZUGFeRDExportableProduct product;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BigDecimal getPrice() {
|
public BigDecimal getPrice() {
|
||||||
@@ -154,11 +154,11 @@ public abstract class MustangReaderTestCase extends TestCase implements IZUGFeRD
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Product getProduct() {
|
public IZUGFeRDExportableProduct getProduct() {
|
||||||
return product;
|
return product;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setProduct(Product product) {
|
public void setProduct(IZUGFeRDExportableProduct product) {
|
||||||
this.product = product;
|
this.product = product;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,19 +34,64 @@ import java.util.Date;
|
|||||||
import java.util.GregorianCalendar;
|
import java.util.GregorianCalendar;
|
||||||
|
|
||||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||||
public class ZF2EdgeTest extends MustangReaderTestCase {
|
public class ZF2EdgeTest extends MustangReaderTestCase implements IZUGFeRDExportableTransaction {
|
||||||
final String TARGET_PDF = "./target/testout-ZF2newEdge.pdf";
|
final String TARGET_PDF = "./target/testout-ZF2newEdge.pdf";
|
||||||
|
|
||||||
|
protected class EdgeProduct implements IZUGFeRDExportableProduct {
|
||||||
|
private String description, name, unit;
|
||||||
|
|
||||||
|
public EdgeProduct(String description, String name, String unit) {
|
||||||
|
super();
|
||||||
|
this.description = description;
|
||||||
|
this.name = name;
|
||||||
|
this.unit = unit;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUnit() {
|
||||||
|
return unit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUnit(String unit) {
|
||||||
|
this.unit = unit;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BigDecimal getVATPercent() {
|
||||||
|
return BigDecimal.ZERO;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTaxCategoryCode() {
|
||||||
|
return "K"; // simulate intra community supply
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected class DebitPayment implements IZUGFeRDTradeSettlementDebit {
|
protected class DebitPayment implements IZUGFeRDTradeSettlementDebit {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getIBAN() {
|
public String getIBAN() {
|
||||||
return "DE540815";
|
return "DE540815";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMandate() {
|
public String getMandate() {
|
||||||
return "DE99XX12345";
|
return "DE99XX12345";
|
||||||
@@ -54,7 +99,6 @@ public class ZF2EdgeTest extends MustangReaderTestCase {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IZUGFeRDTradeSettlementPayment[] getTradeSettlementPayment() {
|
public IZUGFeRDTradeSettlementPayment[] getTradeSettlementPayment() {
|
||||||
return null;
|
return null;
|
||||||
@@ -67,7 +111,6 @@ public class ZF2EdgeTest extends MustangReaderTestCase {
|
|||||||
return payments;
|
return payments;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Date getDeliveryDate() {
|
public Date getDeliveryDate() {
|
||||||
return new GregorianCalendar(2017, Calendar.MAY, 7).getTime();
|
return new GregorianCalendar(2017, Calendar.MAY, 7).getTime();
|
||||||
@@ -146,12 +189,12 @@ public class ZF2EdgeTest extends MustangReaderTestCase {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IZUGFeRDExportableItem[] getZFItems() {
|
public IZUGFeRDExportableItem[] getZFItems() {
|
||||||
Item[] allItems = new Item[3];
|
Item[] allItems = new Item[2];
|
||||||
Product designProduct = new Product("", "Künstlerische Gestaltung (Stunde): Einer Beispielrechnung", "HUR",
|
EdgeProduct designProduct = new EdgeProduct("", "Künstlerische Gestaltung (Stunde): Einer Beispielrechnung",
|
||||||
new BigDecimal("7.000000"));
|
"HUR");
|
||||||
Product balloonProduct = new Product("", "Bestellerweiterung für E&F Umbau", "C62",
|
EdgeProduct balloonProduct = new EdgeProduct("", "Bestellerweiterung für E&F Umbau", "C62");// test for issue
|
||||||
new BigDecimal("19.000000"));// test for issue 103
|
// 103
|
||||||
Product airProduct = new Product("", "Heiße Luft pro Liter", "LTR", new BigDecimal("19.000000"));
|
EdgeProduct airProduct = new EdgeProduct("", "Heiße Luft pro Liter", "LTR");
|
||||||
|
|
||||||
allItems[0] = new Item(new BigDecimal("160"), new BigDecimal("1"), designProduct);
|
allItems[0] = new Item(new BigDecimal("160"), new BigDecimal("1"), designProduct);
|
||||||
allItems[1] = new Item(new BigDecimal("0.79"), new BigDecimal("400"), balloonProduct);
|
allItems[1] = new Item(new BigDecimal("0.79"), new BigDecimal("400"), balloonProduct);
|
||||||
@@ -237,7 +280,7 @@ public class ZF2EdgeTest extends MustangReaderTestCase {
|
|||||||
assertFalse(zi.getUTF8().contains("<ram:DueDateDateTime>"));
|
assertFalse(zi.getUTF8().contains("<ram:DueDateDateTime>"));
|
||||||
|
|
||||||
// Reading ZUGFeRD
|
// Reading ZUGFeRD
|
||||||
assertEquals(zi.getAmount(), "571.04");
|
assertEquals("496.00", zi.getAmount());
|
||||||
assertEquals(zi.getHolder(), getOwnOrganisationName());
|
assertEquals(zi.getHolder(), getOwnOrganisationName());
|
||||||
assertEquals(zi.getForeignReference(), getNumber());
|
assertEquals(zi.getForeignReference(), getNumber());
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user