Merge branch 'ZUGFeRD:master' into master
This commit is contained in:
@@ -1,6 +1,10 @@
|
|||||||
- #678
|
- #678
|
||||||
- #679
|
- #679
|
||||||
- #681
|
- #681
|
||||||
|
- #689
|
||||||
|
- be able to set detailedDeliveryPeriodFrom, detailedDeliveryPeriodTo MS188
|
||||||
|
- updated verapdf from 1.26.1 to 1.26.2
|
||||||
|
- cashDiscount JSON now corrently ignores values for cii and xr methods
|
||||||
|
|
||||||
2.16.0
|
2.16.0
|
||||||
=======
|
=======
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.mustangproject;
|
package org.mustangproject;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import org.mustangproject.ZUGFeRD.IZUGFeRDCashDiscount;
|
import org.mustangproject.ZUGFeRD.IZUGFeRDCashDiscount;
|
||||||
@@ -63,6 +64,7 @@ public class CashDiscount implements IZUGFeRDCashDiscount {
|
|||||||
/***
|
/***
|
||||||
* @return this particular cash discount as cross industry invoice XML
|
* @return this particular cash discount as cross industry invoice XML
|
||||||
*/
|
*/
|
||||||
|
@JsonIgnore
|
||||||
public String getAsCII() {
|
public String getAsCII() {
|
||||||
return "<ram:SpecifiedTradePaymentTerms>"+
|
return "<ram:SpecifiedTradePaymentTerms>"+
|
||||||
"<ram:Description>Cash Discount</ram:Description>"+
|
"<ram:Description>Cash Discount</ram:Description>"+
|
||||||
@@ -78,6 +80,7 @@ public class CashDiscount implements IZUGFeRDCashDiscount {
|
|||||||
* XRechnung CIUS defined it's own proprietary format for a freetext field
|
* XRechnung CIUS defined it's own proprietary format for a freetext field
|
||||||
* @return this particular cash discount in proprietary xrechnung format
|
* @return this particular cash discount in proprietary xrechnung format
|
||||||
*/
|
*/
|
||||||
|
@JsonIgnore
|
||||||
public String getAsXRechnung() {
|
public String getAsXRechnung() {
|
||||||
return "#SKONTO#TAGE="+days+"#PROZENT="+XMLTools.nDigitFormat(percent,2)+"#\n";
|
return "#SKONTO#TAGE="+days+"#PROZENT="+XMLTools.nDigitFormat(percent,2)+"#\n";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -783,11 +783,20 @@ public class Invoice implements IExportableTransaction {
|
|||||||
return detailedDeliveryDateStart;
|
return detailedDeliveryDateStart;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Invoice setDetailedDeliveryPeriodFrom(Date dt) {
|
||||||
|
detailedDeliveryDateStart=dt;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Date getDetailedDeliveryPeriodTo() {
|
public Date getDetailedDeliveryPeriodTo() {
|
||||||
return detailedDeliveryPeriodEnd;
|
return detailedDeliveryPeriodEnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Invoice setDetailedDeliveryPeriodTo(Date dt) {
|
||||||
|
detailedDeliveryPeriodEnd=dt;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* adds a free text paragraph, which will become an includedNote element
|
* adds a free text paragraph, which will become an includedNote element
|
||||||
|
|||||||
@@ -288,8 +288,8 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
final String allowanceChargeStr = "<ram:AppliedTradeAllowanceCharge><ram:ChargeIndicator><udt:Indicator>" +
|
final String allowanceChargeStr = "<ram:AppliedTradeAllowanceCharge><ram:ChargeIndicator><udt:Indicator>" +
|
||||||
chargeIndicator + "</udt:Indicator></ram:ChargeIndicator>" + percentage +
|
chargeIndicator + "</udt:Indicator></ram:ChargeIndicator>" + percentage +
|
||||||
"<ram:ActualAmount>" + priceFormat(allowance.getTotalAmount(item)) + "</ram:ActualAmount>" +
|
"<ram:ActualAmount>" + priceFormat(allowance.getTotalAmount(item)) + "</ram:ActualAmount>" +
|
||||||
reason +
|
|
||||||
reasonCode +
|
reasonCode +
|
||||||
|
reason +
|
||||||
"</ram:AppliedTradeAllowanceCharge>";
|
"</ram:AppliedTradeAllowanceCharge>";
|
||||||
return allowanceChargeStr;
|
return allowanceChargeStr;
|
||||||
}
|
}
|
||||||
@@ -323,8 +323,8 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
final String itemTotalAllowanceChargeStr = "<ram:SpecifiedTradeAllowanceCharge><ram:ChargeIndicator><udt:Indicator>" +
|
final String itemTotalAllowanceChargeStr = "<ram:SpecifiedTradeAllowanceCharge><ram:ChargeIndicator><udt:Indicator>" +
|
||||||
chargeIndicator + "</udt:Indicator></ram:ChargeIndicator>" + percentage +
|
chargeIndicator + "</udt:Indicator></ram:ChargeIndicator>" + percentage +
|
||||||
"<ram:ActualAmount>" + currencyFormat(allowance.getTotalAmount(item)) + "</ram:ActualAmount>" +
|
"<ram:ActualAmount>" + currencyFormat(allowance.getTotalAmount(item)) + "</ram:ActualAmount>" +
|
||||||
reason +
|
|
||||||
reasonCode +
|
reasonCode +
|
||||||
|
reason +
|
||||||
"</ram:SpecifiedTradeAllowanceCharge>";
|
"</ram:SpecifiedTradeAllowanceCharge>";
|
||||||
return itemTotalAllowanceChargeStr;
|
return itemTotalAllowanceChargeStr;
|
||||||
}
|
}
|
||||||
@@ -744,12 +744,12 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
"<udt:Indicator>true</udt:Indicator>" +
|
"<udt:Indicator>true</udt:Indicator>" +
|
||||||
"</ram:ChargeIndicator>" +
|
"</ram:ChargeIndicator>" +
|
||||||
"<ram:ActualAmount>" + currencyFormat(charge.getTotalAmount(calc)) + "</ram:ActualAmount>";
|
"<ram:ActualAmount>" + currencyFormat(charge.getTotalAmount(calc)) + "</ram:ActualAmount>";
|
||||||
if (charge.getReason() != null) {
|
|
||||||
xml += "<ram:Reason>" + XMLTools.encodeXML(charge.getReason()) + "</ram:Reason>";
|
|
||||||
}
|
|
||||||
if (charge.getReasonCode() != null) {
|
if (charge.getReasonCode() != null) {
|
||||||
xml += "<ram:ReasonCode>" + charge.getReasonCode() + "</ram:ReasonCode>";
|
xml += "<ram:ReasonCode>" + charge.getReasonCode() + "</ram:ReasonCode>";
|
||||||
}
|
}
|
||||||
|
if (charge.getReason() != null) {
|
||||||
|
xml += "<ram:Reason>" + XMLTools.encodeXML(charge.getReason()) + "</ram:Reason>";
|
||||||
|
}
|
||||||
xml += "<ram:CategoryTradeTax>" +
|
xml += "<ram:CategoryTradeTax>" +
|
||||||
"<ram:TypeCode>VAT</ram:TypeCode>" +
|
"<ram:TypeCode>VAT</ram:TypeCode>" +
|
||||||
"<ram:CategoryCode>" + charge.getCategoryCode() + "</ram:CategoryCode>";
|
"<ram:CategoryCode>" + charge.getCategoryCode() + "</ram:CategoryCode>";
|
||||||
|
|||||||
@@ -102,6 +102,8 @@ public class DeSerializationTest extends ResourceCase {
|
|||||||
" \"currency\": \"EUR\",\n" +
|
" \"currency\": \"EUR\",\n" +
|
||||||
" \"issueDate\": \"2018-03-03T23:00:00.000+00:00\",\n" +
|
" \"issueDate\": \"2018-03-03T23:00:00.000+00:00\",\n" +
|
||||||
" \"deliveryDate\": \"2018-03-03T23:00:00.000+00:00\",\n" +
|
" \"deliveryDate\": \"2018-03-03T23:00:00.000+00:00\",\n" +
|
||||||
|
" \"detailedDeliveryPeriodFrom\": \"2017-03-03T13:00:00.000+00:00\",\n" +
|
||||||
|
" \"detailedDeliveryPeriodTo\": \"2017-03-04T13:00:00.000+00:00\",\n" +
|
||||||
" \"sender\": {\n" +
|
" \"sender\": {\n" +
|
||||||
" \"name\": \"Lieferant GmbH\",\n" +
|
" \"name\": \"Lieferant GmbH\",\n" +
|
||||||
" \"zip\": \"80333\",\n" +
|
" \"zip\": \"80333\",\n" +
|
||||||
@@ -162,7 +164,15 @@ public class DeSerializationTest extends ResourceCase {
|
|||||||
TransactionCalculator tc = new TransactionCalculator(fromJSON);
|
TransactionCalculator tc = new TransactionCalculator(fromJSON);
|
||||||
assertEquals(tc.getGrandTotal(), new BigDecimal("234.43"));
|
assertEquals(tc.getGrandTotal(), new BigDecimal("234.43"));
|
||||||
assertEquals(fromJSON.getNumber(), fromJSON.getNumber());
|
assertEquals(fromJSON.getNumber(), fromJSON.getNumber());
|
||||||
|
|
||||||
|
ZUGFeRD2PullProvider zf2p = new ZUGFeRD2PullProvider();
|
||||||
|
zf2p.setProfile(Profiles.getByName("XRechnung"));
|
||||||
|
zf2p.generateXML(fromJSON);
|
||||||
|
String theXML = new String(zf2p.getXML(), StandardCharsets.UTF_8);
|
||||||
|
|
||||||
assertEquals(fromJSON.getZFItems().length, fromJSON.getZFItems().length);
|
assertEquals(fromJSON.getZFItems().length, fromJSON.getZFItems().length);
|
||||||
|
assertTrue(theXML.contains("20170303"));
|
||||||
|
assertTrue(theXML.contains("20170304"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -259,9 +259,10 @@ public class ZF2PushTest extends TestCase {
|
|||||||
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE")
|
||||||
.setContact(new Contact("contact testname", "123456", "contact.testemail@example.org").setFax("0911623562")))
|
.setContact(new Contact("contact testname", "123456", "contact.testemail@example.org").setFax("0911623562")))
|
||||||
.setNumber(number)
|
.setNumber(number)
|
||||||
|
.addCharge(new Charge(new BigDecimal(1)).setReasonCode("ABK").setReason("AReason").setTaxPercent(new BigDecimal(19)))
|
||||||
.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(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(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)).setReasonCode("ABK")))
|
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(19)), amount, new BigDecimal(2.0)).addCharge(new Charge(new BigDecimal(1)).setReasonCode("ABK").setReason("AnotherReason")))
|
||||||
.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"))))
|
.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"))))
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -280,7 +281,7 @@ public class ZF2PushTest extends TestCase {
|
|||||||
assertTrue(zi.getUTF8().contains("ABK"));
|
assertTrue(zi.getUTF8().contains("ABK"));
|
||||||
|
|
||||||
// Reading ZUGFeRD
|
// Reading ZUGFeRD
|
||||||
assertEquals("18.33", zi.getAmount());
|
assertEquals("19.52", zi.getAmount());
|
||||||
assertEquals(orgname, zi.getHolder());
|
assertEquals(orgname, zi.getHolder());
|
||||||
assertEquals(number, zi.getForeignReference());
|
assertEquals(number, zi.getForeignReference());
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -73,7 +73,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.verapdf</groupId>
|
<groupId>org.verapdf</groupId>
|
||||||
<artifactId>validation-model-jakarta</artifactId>
|
<artifactId>validation-model-jakarta</artifactId>
|
||||||
<version>1.26.1</version>
|
<version>1.26.2</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- https://mvnrepository.com/artifact/com.helger/ph-schematron -->
|
<!-- https://mvnrepository.com/artifact/com.helger/ph-schematron -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|||||||
Reference in New Issue
Block a user