Merge branch 'langfr-feature/UltimateShipToTradeParty'
This commit is contained in:
@@ -43,7 +43,7 @@ public class Invoice implements IExportableTransaction {
|
|||||||
protected String documentName = null, documentCode = null, number = null, ownOrganisationFullPlaintextInfo = null, referenceNumber = null, shipToOrganisationID = null, shipToOrganisationName = null, shipToStreet = null, shipToZIP = null, shipToLocation = null, shipToCountry = null, buyerOrderReferencedDocumentID = null, buyerOrderReferencedDocumentIssueDateTime = null, ownForeignOrganisationID = null, ownOrganisationName = null, currency = null, paymentTermDescription = null;
|
protected String documentName = null, documentCode = null, number = null, ownOrganisationFullPlaintextInfo = null, referenceNumber = null, shipToOrganisationID = null, shipToOrganisationName = null, shipToStreet = null, shipToZIP = null, shipToLocation = null, shipToCountry = null, buyerOrderReferencedDocumentID = null, buyerOrderReferencedDocumentIssueDateTime = null, ownForeignOrganisationID = null, ownOrganisationName = null, currency = null, paymentTermDescription = null;
|
||||||
protected String deliveryTypeCode;
|
protected String deliveryTypeCode;
|
||||||
protected Date issueDate = null, dueDate = null, deliveryDate = null;
|
protected Date issueDate = null, dueDate = null, deliveryDate = null;
|
||||||
protected TradeParty sender = null, recipient = null, deliveryAddress = null, payee = null, invoicer = null, invoicee = null;
|
protected TradeParty sender = null, recipient = null, deliveryAddress = null, endCustomerDeliveryAddress = null, payee = null, invoicer = null, invoicee = null;
|
||||||
protected ArrayList<CashDiscount> cashDiscounts = null;
|
protected ArrayList<CashDiscount> cashDiscounts = null;
|
||||||
@JsonDeserialize(contentAs = Item.class)
|
@JsonDeserialize(contentAs = Item.class)
|
||||||
protected ArrayList<IZUGFeRDExportableItem> ZFItems = null;
|
protected ArrayList<IZUGFeRDExportableItem> ZFItems = null;
|
||||||
@@ -800,6 +800,16 @@ public class Invoice implements IExportableTransaction {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TradeParty getEndCustomerDeliveryAddress() {
|
||||||
|
return endCustomerDeliveryAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Invoice setEndCustomerDeliveryAddress(TradeParty endCustomerDeliveryAddress) {
|
||||||
|
this.endCustomerDeliveryAddress = endCustomerDeliveryAddress;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TradeParty getPayee() {
|
public TradeParty getPayee() {
|
||||||
return this.payee;
|
return this.payee;
|
||||||
|
|||||||
@@ -517,6 +517,15 @@ public interface IExportableTransaction {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***
|
||||||
|
* ultimate delivery address, i.e. ram:UltimateShipToTradeParty (only supported for zf2)
|
||||||
|
*
|
||||||
|
* @return the IZUGFeRDExportableTradeParty delivery address
|
||||||
|
*/
|
||||||
|
default IZUGFeRDExportableTradeParty getEndCustomerDeliveryAddress() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* payee / payment receiver, if different from seller, ram:Payee (only supported for zf2)
|
* payee / payment receiver, if different from seller, ram:Payee (only supported for zf2)
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -739,6 +739,11 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
getTradePartyAsXML(this.trans.getDeliveryAddress(), false, true) +
|
getTradePartyAsXML(this.trans.getDeliveryAddress(), false, true) +
|
||||||
"</ram:ShipToTradeParty>";
|
"</ram:ShipToTradeParty>";
|
||||||
}
|
}
|
||||||
|
if (this.trans.getEndCustomerDeliveryAddress() != null) {
|
||||||
|
xml += "<ram:UltimateShipToTradeParty>" +
|
||||||
|
getTradePartyAsXML(this.trans.getEndCustomerDeliveryAddress(), false, true) +
|
||||||
|
"</ram:UltimateShipToTradeParty>";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (trans.getDeliveryDate() != null) {
|
if (trans.getDeliveryDate() != null) {
|
||||||
|
|||||||
@@ -396,12 +396,19 @@ public class ZUGFeRDInvoiceImporter {
|
|||||||
XPath xpath = xpathFact.newXPath();
|
XPath xpath = xpathFact.newXPath();
|
||||||
XPathExpression xpr = xpath.compile("//*[local-name()=\"SellerTradeParty\"]|//*[local-name()=\"AccountingSupplierParty\"]/*");
|
XPathExpression xpr = xpath.compile("//*[local-name()=\"SellerTradeParty\"]|//*[local-name()=\"AccountingSupplierParty\"]/*");
|
||||||
NodeList SellerNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
NodeList SellerNodes = (NodeList) xpr.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
|
|
||||||
XPathExpression shipEx = xpath.compile("//*[local-name()=\"ShipToTradeParty\"]");
|
XPathExpression shipEx = xpath.compile("//*[local-name()=\"ShipToTradeParty\"]");
|
||||||
NodeList deliveryNodes = (NodeList) shipEx.evaluate(getDocument(), XPathConstants.NODESET);
|
NodeList deliveryNodes = (NodeList) shipEx.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
if (deliveryNodes.getLength() > 0) {
|
if (deliveryNodes.getLength() > 0) {
|
||||||
zpp.setDeliveryAddress(new TradeParty(deliveryNodes));
|
zpp.setDeliveryAddress(new TradeParty(deliveryNodes));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XPathExpression ultimateShipEx = xpath.compile("//*[local-name()=\"UltimateShipToTradeParty\"]");
|
||||||
|
NodeList ultimateDeliveryNodes = (NodeList) ultimateShipEx.evaluate(getDocument(), XPathConstants.NODESET);
|
||||||
|
if (ultimateDeliveryNodes.getLength() > 0) {
|
||||||
|
zpp.setEndCustomerDeliveryAddress(new TradeParty(ultimateDeliveryNodes));
|
||||||
|
}
|
||||||
|
|
||||||
List<IncludedNote> includedNotes = new ArrayList<>();
|
List<IncludedNote> includedNotes = new ArrayList<>();
|
||||||
|
|
||||||
//UBL...
|
//UBL...
|
||||||
|
|||||||
@@ -605,6 +605,7 @@ public class ZF2PushTest extends TestCase {
|
|||||||
.setDetailedDeliveryPeriod(new SimpleDateFormat("yyyyMMdd").parse(occurrenceFrom), new SimpleDateFormat("yyyyMMdd").parse(occurrenceTo))
|
.setDetailedDeliveryPeriod(new SimpleDateFormat("yyyyMMdd").parse(occurrenceFrom), new SimpleDateFormat("yyyyMMdd").parse(occurrenceTo))
|
||||||
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID(taxID).setEmail("sender@test.org").setID(orgID).addVATID("DE0815"))
|
.setSender(new TradeParty(orgname, "teststr", "55232", "teststadt", "DE").addTaxID(taxID).setEmail("sender@test.org").setID(orgID).addVATID("DE0815"))
|
||||||
.setDeliveryAddress(new TradeParty("just the other side of the street", "teststr.12a", "55232", "Entenhausen", "DE").addVATID("DE47110"))
|
.setDeliveryAddress(new TradeParty("just the other side of the street", "teststr.12a", "55232", "Entenhausen", "DE").addVATID("DE47110"))
|
||||||
|
.setEndCustomerDeliveryAddress(new TradeParty("Max Mustermann", "Glückswinkel 42", "98765", "Musterhausen", "DE"))
|
||||||
.setContractReferencedDocument(contractID)
|
.setContractReferencedDocument(contractID)
|
||||||
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addGlobalID(gln).setEmail("recipient@test.org").addVATID("DE4711")
|
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE").addGlobalID(gln).setEmail("recipient@test.org").addVATID("DE4711")
|
||||||
.setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE").setFax("++49555123456")).setAdditionalAddress("Hinterhaus 3"))
|
.setContact(new Contact("Franz Müller", "01779999999", "franz@mueller.de", "teststr. 12", "55232", "Entenhausen", "DE").setFax("++49555123456")).setAdditionalAddress("Hinterhaus 3"))
|
||||||
@@ -695,6 +696,7 @@ public class ZF2PushTest extends TestCase {
|
|||||||
|
|
||||||
assertNotNull(i.getInvoicer());
|
assertNotNull(i.getInvoicer());
|
||||||
assertNotNull(i.getInvoicee());
|
assertNotNull(i.getInvoicee());
|
||||||
|
assertNotNull(i.getEndCustomerDeliveryAddress());
|
||||||
} catch (XPathExpressionException e) {
|
} catch (XPathExpressionException e) {
|
||||||
fail("XPathExpressionException should not be raised");
|
fail("XPathExpressionException should not be raised");
|
||||||
} catch (ParseException e) {
|
} catch (ParseException e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user