parsing invoice dates
This commit is contained in:
@@ -6,6 +6,8 @@ import org.w3c.dom.NodeList;
|
|||||||
|
|
||||||
import javax.xml.xpath.*;
|
import javax.xml.xpath.*;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
||||||
@@ -15,7 +17,7 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
|
|
||||||
public Invoice extractInvoice() {
|
public Invoice extractInvoice() {
|
||||||
|
|
||||||
String number = "AB123";
|
String number = "";
|
||||||
/**
|
/**
|
||||||
* dummywerte sind derzeit noch setDueDate setIssueDate setDeliveryDate setSender setRecipient setnumber
|
* dummywerte sind derzeit noch setDueDate setIssueDate setDeliveryDate setSender setRecipient setnumber
|
||||||
* bspw. due date //ExchangedDocument//IssueDateTime//DateTimeString : due date optional
|
* bspw. due date //ExchangedDocument//IssueDateTime//DateTimeString : due date optional
|
||||||
@@ -30,8 +32,100 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
xpr = xpath.compile(
|
xpr = xpath.compile(
|
||||||
"//BuyerTradeParty");
|
"//BuyerTradeParty");
|
||||||
NodeList BuyerNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
NodeList BuyerNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
|
xpr = xpath.compile(
|
||||||
|
"//*[local-name()=\"ExchangedDocument\"]");
|
||||||
|
NodeList ExchangedDocumentNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
|
|
||||||
zpp = new Invoice().setDueDate(new Date()).setIssueDate(new Date()).setDeliveryDate(new Date()).setSender(new TradeParty(SellerNodes)).setRecipient(new TradeParty(BuyerNodes)).setNumber(number);
|
Date issueDate = null;
|
||||||
|
Date dueDate = null;
|
||||||
|
Date deliveryDate = null;
|
||||||
|
for (int i = 0; i < ExchangedDocumentNodes.getLength(); i++) {
|
||||||
|
|
||||||
|
//nodes.item(i).getTextContent())) {
|
||||||
|
Node exchangedDocumentNode = ExchangedDocumentNodes.item(i);
|
||||||
|
NodeList exchangedDocumentChilds = exchangedDocumentNode.getChildNodes();
|
||||||
|
for (int documentChildIndex = 0; documentChildIndex < exchangedDocumentChilds.getLength(); documentChildIndex++) {
|
||||||
|
if (exchangedDocumentChilds.item(documentChildIndex).getNodeName().equals("ram:ID")) {
|
||||||
|
/* NodeList tradeLineChilds = itemChilds.item(documentChildIndex).getChildNodes();
|
||||||
|
for (int tradeLineChildIndex = 0; tradeLineChildIndex < tradeLineChilds.getLength(); tradeLineChildIndex++) {
|
||||||
|
if (tradeLineChilds.item(tradeLineChildIndex).getNodeName().equals("ram:NetPriceProductTradePrice")) {
|
||||||
|
NodeList netChilds = tradeLineChilds.item(tradeLineChildIndex).getChildNodes();
|
||||||
|
for (int netIndex = 0; netIndex < netChilds.getLength(); netIndex++) {
|
||||||
|
if (netChilds.item(netIndex).getNodeName().equals("ram:ChargeAmount")) {
|
||||||
|
price = netChilds.item(netIndex).getTextContent();//ram:ChargeAmount
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
number = exchangedDocumentChilds.item(documentChildIndex).getTextContent();
|
||||||
|
}
|
||||||
|
if (exchangedDocumentChilds.item(documentChildIndex).getNodeName().equals("ram:IssueDateTime")) {
|
||||||
|
NodeList issueDateTimeChilds = exchangedDocumentChilds.item(documentChildIndex).getChildNodes();
|
||||||
|
for (int issueDateChildIndex = 0; issueDateChildIndex < issueDateTimeChilds.getLength(); issueDateChildIndex++) {
|
||||||
|
if (issueDateTimeChilds.item(issueDateChildIndex).getNodeName().equals("udt:DateTimeString")) {
|
||||||
|
issueDate = new SimpleDateFormat("yyyyMMdd").parse(issueDateTimeChilds.item(issueDateChildIndex).getTextContent());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
xpr = xpath.compile(
|
||||||
|
"//*[local-name()=\"ApplicableHeaderTradeDelivery\"]");
|
||||||
|
NodeList headerTradeDeliveryNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
|
|
||||||
|
for (int i = 0; i < headerTradeDeliveryNodes.getLength(); i++) {
|
||||||
|
//nodes.item(i).getTextContent())) {
|
||||||
|
Node headerTradeDeliveryNode = headerTradeDeliveryNodes.item(i);
|
||||||
|
NodeList headerTradeDeliveryChilds = headerTradeDeliveryNode.getChildNodes();
|
||||||
|
for (int deliveryChildIndex = 0; deliveryChildIndex < headerTradeDeliveryChilds.getLength(); deliveryChildIndex++) {
|
||||||
|
if (headerTradeDeliveryChilds.item(deliveryChildIndex).getNodeName().equals("ram:ActualDeliverySupplyChainEvent")) {
|
||||||
|
NodeList actualDeliveryChilds = headerTradeDeliveryChilds.item(deliveryChildIndex).getChildNodes();
|
||||||
|
for (int actualDeliveryChildIndex = 0; actualDeliveryChildIndex < actualDeliveryChilds.getLength(); actualDeliveryChildIndex++) {
|
||||||
|
if (actualDeliveryChilds.item(actualDeliveryChildIndex).getNodeName().equals("ram:OccurrenceDateTime")) {
|
||||||
|
NodeList occurenceChilds = actualDeliveryChilds.item(actualDeliveryChildIndex).getChildNodes();
|
||||||
|
for (int occurenceChildIndex = 0; occurenceChildIndex < occurenceChilds.getLength(); occurenceChildIndex++) {
|
||||||
|
if (occurenceChilds.item(occurenceChildIndex).getNodeName().equals("udt:DateTimeString")) {
|
||||||
|
deliveryDate = new SimpleDateFormat("yyyyMMdd").parse(occurenceChilds.item(occurenceChildIndex).getTextContent());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
xpr = xpath.compile(
|
||||||
|
"//*[local-name()=\"ApplicableHeaderTradeSettlement\"]");
|
||||||
|
NodeList headerTradeSettlementNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
|
|
||||||
|
for (int i = 0; i < headerTradeSettlementNodes.getLength(); i++) {
|
||||||
|
//nodes.item(i).getTextContent())) {
|
||||||
|
Node headerTradeSettlementNode = headerTradeSettlementNodes.item(i);
|
||||||
|
NodeList headerTradeSettlementChilds = headerTradeSettlementNode.getChildNodes();
|
||||||
|
for (int settlementChildIndex = 0; settlementChildIndex < headerTradeSettlementChilds.getLength(); settlementChildIndex++) {
|
||||||
|
if (headerTradeSettlementChilds.item(settlementChildIndex).getNodeName().equals("ram:SpecifiedTradePaymentTerms")) {
|
||||||
|
NodeList paymentTermChilds = headerTradeSettlementChilds.item(settlementChildIndex).getChildNodes();
|
||||||
|
for (int paymentTermChildIndex = 0; paymentTermChildIndex < paymentTermChilds.getLength(); paymentTermChildIndex++) {
|
||||||
|
if (paymentTermChilds.item(paymentTermChildIndex).getNodeName().equals("ram:DueDateDateTime")) {
|
||||||
|
NodeList dueDateChilds = paymentTermChilds.item(paymentTermChildIndex).getChildNodes();
|
||||||
|
for (int dueDateChildIndex = 0; dueDateChildIndex < dueDateChilds.getLength(); dueDateChildIndex++) {
|
||||||
|
if (dueDateChilds.item(dueDateChildIndex).getNodeName().equals("udt:DateTimeString")) {
|
||||||
|
dueDate = new SimpleDateFormat("yyyyMMdd").parse(dueDateChilds.item(dueDateChildIndex).getTextContent());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
zpp = new Invoice().setDueDate(dueDate).setDeliveryDate(deliveryDate).setIssueDate(issueDate).setSender(new TradeParty(SellerNodes)).setRecipient(new TradeParty(BuyerNodes)).setNumber(number);
|
||||||
//.addItem(new Item(new Product("Testprodukt","","C62",new BigDecimal(0)),amount,new BigDecimal(1.0)))
|
//.addItem(new Item(new Product("Testprodukt","","C62",new BigDecimal(0)),amount,new BigDecimal(1.0)))
|
||||||
zpp.setOwnOrganisationName(extractString("//SellerTradeParty/Name"));
|
zpp.setOwnOrganisationName(extractString("//SellerTradeParty/Name"));
|
||||||
|
|
||||||
@@ -109,10 +203,10 @@ public class ZUGFeRDInvoiceImporter extends ZUGFeRDImporter {
|
|||||||
|
|
||||||
} catch (XPathExpressionException e) {
|
} catch (XPathExpressionException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
} catch (ParseException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
return zpp;
|
return zpp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class ZF2PushTest extends TestCase {
|
|||||||
// the writing part
|
// the writing part
|
||||||
|
|
||||||
String orgname = "Test company";
|
String orgname = "Test company";
|
||||||
String number = "123";
|
String number = "RE-20170509/505";
|
||||||
String amountStr = "1.00";
|
String amountStr = "1.00";
|
||||||
BigDecimal amount = new BigDecimal(amountStr);
|
BigDecimal amount = new BigDecimal(amountStr);
|
||||||
String occurenceFrom = "20201001";
|
String occurenceFrom = "20201001";
|
||||||
|
|||||||
@@ -27,6 +27,11 @@ import junit.framework.TestCase;
|
|||||||
import junit.framework.Test;
|
import junit.framework.Test;
|
||||||
import junit.framework.TestSuite;
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* Classname ZF2ZInvoiceImporterTest is alphabetical behind the tests which will create the file
|
* Classname ZF2ZInvoiceImporterTest is alphabetical behind the tests which will create the file
|
||||||
@@ -49,6 +54,15 @@ public class ZF2ZInvoiceImporterTest extends TestCase {
|
|||||||
assertEquals("Heiße Luft pro Liter", invoice.getZFItems()[2].getProduct().getName());
|
assertEquals("Heiße Luft pro Liter", invoice.getZFItems()[2].getProduct().getName());
|
||||||
assertEquals("LTR", invoice.getZFItems()[2].getProduct().getUnit());
|
assertEquals("LTR", invoice.getZFItems()[2].getProduct().getUnit());
|
||||||
assertEquals("7.00", invoice.getZFItems()[0].getProduct().getVATPercent().toString());
|
assertEquals("7.00", invoice.getZFItems()[0].getProduct().getVATPercent().toString());
|
||||||
|
assertEquals("RE-20170509/505", invoice.getNumber());
|
||||||
|
|
||||||
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
assertEquals("2017-05-09",sdf.format(invoice.getIssueDate()));
|
||||||
|
assertEquals("2017-05-07",sdf.format(invoice.getDeliveryDate()));
|
||||||
|
assertEquals("2017-05-30",sdf.format(invoice.getDueDate()));
|
||||||
|
|
||||||
|
|
||||||
|
// name street location zip country, contact name phone email, total amount
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user