@@ -1,13 +1,10 @@
|
|||||||
package org.mustangproject;
|
package org.mustangproject;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.*;
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonSetter;
|
|
||||||
import org.mustangproject.ZUGFeRD.IDesignatedProductClassification;
|
import org.mustangproject.ZUGFeRD.IDesignatedProductClassification;
|
||||||
import org.mustangproject.ZUGFeRD.IZUGFeRDExportableProduct;
|
import org.mustangproject.ZUGFeRD.IZUGFeRDExportableProduct;
|
||||||
import org.mustangproject.util.NodeMap;
|
import org.mustangproject.util.NodeMap;
|
||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
import org.w3c.dom.NodeList;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -105,7 +102,10 @@ public class Product implements IZUGFeRDExportableProduct {
|
|||||||
classifications.add(new DesignatedProductClassification(classCode, className)));
|
classifications.add(new DesignatedProductClassification(classCode, className)));
|
||||||
});
|
});
|
||||||
|
|
||||||
nodeMap.getAsString("OriginTradeCounty").ifPresent(this::setCountryOfOrigin);
|
nodeMap.getAsNodeMap("OriginTradeCountry")
|
||||||
|
.flatMap(nodes -> nodes.getNode("ID"))
|
||||||
|
.map(Node::getTextContent)
|
||||||
|
.ifPresent(this::setCountryOfOrigin);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
|
|||||||
@@ -21,6 +21,13 @@
|
|||||||
*/
|
*/
|
||||||
package org.mustangproject.ZUGFeRD;
|
package org.mustangproject.ZUGFeRD;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import org.junit.FixMethodOrder;
|
||||||
|
import org.junit.runners.MethodSorters;
|
||||||
|
import org.mustangproject.*;
|
||||||
|
import org.mustangproject.ZUGFeRD.model.EventTimeCodeTypeConstants;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
@@ -29,28 +36,11 @@ import java.nio.file.Files;
|
|||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.TimeZone;
|
|
||||||
|
|
||||||
import javax.xml.xpath.XPathExpressionException;
|
import javax.xml.xpath.XPathExpressionException;
|
||||||
|
|
||||||
import org.junit.FixMethodOrder;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import org.junit.experimental.theories.FromDataPoints;
|
|
||||||
import org.junit.runners.MethodSorters;
|
|
||||||
import org.mustangproject.Allowance;
|
|
||||||
import org.mustangproject.BankDetails;
|
|
||||||
import org.mustangproject.CalculatedInvoice;
|
|
||||||
import org.mustangproject.CashDiscount;
|
|
||||||
import org.mustangproject.Charge;
|
|
||||||
import org.mustangproject.Contact;
|
|
||||||
import org.mustangproject.Invoice;
|
|
||||||
import org.mustangproject.Item;
|
|
||||||
import org.mustangproject.Product;
|
|
||||||
import org.mustangproject.SchemedID;
|
|
||||||
import org.mustangproject.TradeParty;
|
|
||||||
import org.mustangproject.ZUGFeRD.model.EventTimeCodeTypeConstants;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
|
|
||||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||||
public class DeSerializationTest extends ResourceCase {
|
public class DeSerializationTest extends ResourceCase {
|
||||||
@@ -71,6 +61,29 @@ public class DeSerializationTest extends ResourceCase {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testProduct() throws IOException, XPathExpressionException, ParseException {
|
||||||
|
File inputCII = getResourceAsFile("Extended_fremdwaehrung.xml");
|
||||||
|
var zii = new ZUGFeRDInvoiceImporter();
|
||||||
|
zii.doIgnoreCalculationErrors();
|
||||||
|
zii.fromXML(Files.readString(inputCII.toPath()));
|
||||||
|
var product = zii.extractInvoice()
|
||||||
|
.getZFItems()[0]
|
||||||
|
.getProduct();
|
||||||
|
|
||||||
|
assertThat(product.getCountryOfOrigin()).as("Product Country of origin")
|
||||||
|
.isEqualTo("DE");
|
||||||
|
assertThat(product.getSellerAssignedID()).as("Product Seller assigned ID")
|
||||||
|
.isEqualTo("CO-123/V2A");
|
||||||
|
assertThat(product.getBuyerAssignedID()).as("Product Buyer assigned ID")
|
||||||
|
.isEqualTo("Toolbox 0815");
|
||||||
|
assertThat(product.getName()).as("Name")
|
||||||
|
.isEqualTo("Stahlcoil");
|
||||||
|
|
||||||
|
assertThat(product.getAttributes()).as("Product attributes")
|
||||||
|
.containsKey("LeoID")
|
||||||
|
.containsValue("704310.0105636504");
|
||||||
|
}
|
||||||
|
|
||||||
public void testInvoiceLine() throws JsonProcessingException {
|
public void testInvoiceLine() throws JsonProcessingException {
|
||||||
File inputCII = getResourceAsFile("factur-x.xml");
|
File inputCII = getResourceAsFile("factur-x.xml");
|
||||||
boolean hasExceptions = false;
|
boolean hasExceptions = false;
|
||||||
|
|||||||
@@ -131,6 +131,10 @@ costs, losses or damages could normally have been foreseen.-->
|
|||||||
<ram:SellerAssignedID>CO-123/V2A</ram:SellerAssignedID>
|
<ram:SellerAssignedID>CO-123/V2A</ram:SellerAssignedID>
|
||||||
<ram:BuyerAssignedID>Toolbox 0815</ram:BuyerAssignedID>
|
<ram:BuyerAssignedID>Toolbox 0815</ram:BuyerAssignedID>
|
||||||
<ram:Name>Stahlcoil</ram:Name>
|
<ram:Name>Stahlcoil</ram:Name>
|
||||||
|
<ram:ApplicableProductCharacteristic>
|
||||||
|
<ram:Description>LeoID</ram:Description>
|
||||||
|
<ram:Value>704310.0105636504</ram:Value>
|
||||||
|
</ram:ApplicableProductCharacteristic>
|
||||||
<ram:OriginTradeCountry>
|
<ram:OriginTradeCountry>
|
||||||
<ram:ID>DE</ram:ID>
|
<ram:ID>DE</ram:ID>
|
||||||
</ram:OriginTradeCountry>
|
</ram:OriginTradeCountry>
|
||||||
|
|||||||
Reference in New Issue
Block a user