Add support for BuyerOrderReferencedDocument on line level
Signed-off-by: Jan N. Klug <github@klug.nrw>
This commit is contained in:
@@ -22,7 +22,8 @@ public class Item implements IZUGFeRDExportableItem {
|
||||
protected BigDecimal basisQuantity = BigDecimal.ONE;
|
||||
protected Date detailedDeliveryPeriodFrom = null, detailedDeliveryPeriodTo = null;
|
||||
protected String id;
|
||||
protected String referencedLineID = null;
|
||||
protected String buyerOrderReferencedDocumentLineID = null;
|
||||
protected String buyerOrderReferencedDocumentID = null;
|
||||
protected Product product;
|
||||
protected ArrayList<String> notes = null;
|
||||
protected ArrayList<ReferencedDocument> referencedDocuments = null;
|
||||
@@ -61,7 +62,8 @@ public class Item implements IZUGFeRDExportableItem {
|
||||
String vatPercent = null;
|
||||
String lineTotal = "0";
|
||||
String unitCode = "0";
|
||||
String referencedLineID = null;
|
||||
String buyerOrderReferencedDocumentLineID = null;
|
||||
String buyerOrderReferencedDocumentID = null;
|
||||
|
||||
ArrayList<ReferencedDocument> rdocs = null;
|
||||
ArrayList<ReferencedDocument> addRefs = null;
|
||||
@@ -150,7 +152,9 @@ public class Item implements IZUGFeRDExportableItem {
|
||||
for (int docIndex = 0; docIndex < docChilds.getLength(); docIndex++) {
|
||||
String localName = docChilds.item(docIndex).getLocalName();
|
||||
if ((localName != null) && (localName.equals("LineID"))) {
|
||||
referencedLineID = docChilds.item(docIndex).getTextContent();
|
||||
buyerOrderReferencedDocumentLineID = docChilds.item(docIndex).getTextContent();
|
||||
} else if ((localName != null) && (localName.equals("IssuerAssignedID"))) {
|
||||
buyerOrderReferencedDocumentID = docChilds.item(docIndex).getTextContent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -310,22 +314,34 @@ public class Item implements IZUGFeRDExportableItem {
|
||||
addAdditionalReference(rdoc);
|
||||
}
|
||||
}
|
||||
addReferencedLineID( referencedLineID );
|
||||
addBuyerOrderReferencedDocumentLineID( buyerOrderReferencedDocumentLineID );
|
||||
addBuyerOrderReferencedDocumentID( buyerOrderReferencedDocumentID );
|
||||
}
|
||||
|
||||
|
||||
public Item addReferencedLineID(String s) {
|
||||
referencedLineID = s;
|
||||
public Item addBuyerOrderReferencedDocumentLineID(String s) {
|
||||
buyerOrderReferencedDocumentLineID = s;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Deprecated(since = "2.14.0")
|
||||
public Item addReferencedLineID(String s) {
|
||||
return addBuyerOrderReferencedDocumentLineID(s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBuyerOrderReferencedDocumentID() {
|
||||
return buyerOrderReferencedDocumentID;
|
||||
}
|
||||
|
||||
public Item addBuyerOrderReferencedDocumentID(String s) {
|
||||
buyerOrderReferencedDocumentID = s;
|
||||
return this;
|
||||
}
|
||||
|
||||
/***
|
||||
* BT 132 (issue https://github.com/ZUGFeRD/mustangproject/issues/247)
|
||||
* @return the line ID of the order (BT132)
|
||||
*/
|
||||
@Override
|
||||
public String getBuyerOrderReferencedDocumentLineID() {
|
||||
return referencedLineID;
|
||||
return buyerOrderReferencedDocumentLineID;
|
||||
}
|
||||
|
||||
public BigDecimal getLineTotalAmount() {
|
||||
|
||||
@@ -53,6 +53,13 @@ public interface IZUGFeRDExportableItem extends IAbsoluteValueProvider{
|
||||
return null;
|
||||
}
|
||||
|
||||
/***
|
||||
* buyer order reference document id
|
||||
* @return the document id (defaults to {@code null})
|
||||
*/
|
||||
default String getBuyerOrderReferencedDocumentID() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/***
|
||||
* BT 132 (issue https://github.com/ZUGFeRD/mustangproject/issues/247)
|
||||
|
||||
@@ -448,10 +448,17 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
||||
"</ram:AdditionalReferencedDocument>";
|
||||
}
|
||||
}
|
||||
if (currentItem.getBuyerOrderReferencedDocumentLineID() != null) {
|
||||
xml += "<ram:BuyerOrderReferencedDocument> "
|
||||
+ "<ram:LineID>" + XMLTools.encodeXML(currentItem.getBuyerOrderReferencedDocumentLineID()) + "</ram:LineID>"
|
||||
+ "</ram:BuyerOrderReferencedDocument>";
|
||||
if ((currentItem.getBuyerOrderReferencedDocumentLineID() != null) || (currentItem.getBuyerOrderReferencedDocumentID() != null)) {
|
||||
xml += "<ram:BuyerOrderReferencedDocument> ";
|
||||
if (currentItem.getBuyerOrderReferencedDocumentID() != null) {
|
||||
xml += "<ram:IssuerAssignedID>" + XMLTools.encodeXML(currentItem.getBuyerOrderReferencedDocumentID())
|
||||
+ "</ram:IssuerAssignedID>";
|
||||
}
|
||||
if (currentItem.getBuyerOrderReferencedDocumentLineID() != null) {
|
||||
xml += "<ram:LineID>" + XMLTools.encodeXML(currentItem.getBuyerOrderReferencedDocumentLineID())
|
||||
+ "</ram:LineID>";
|
||||
}
|
||||
xml += "</ram:BuyerOrderReferencedDocument>";
|
||||
}
|
||||
|
||||
if (!allowanceChargeStr.isEmpty()) {
|
||||
|
||||
@@ -82,7 +82,7 @@ public class UBLTest extends ResourceCase {
|
||||
.setSender(new TradeParty("Test company", "teststr", "55232", "teststadt", "DE").addTaxID("DE4711").addVATID("DE0815").setContact(new Contact("Hans Test", "+49123456789", "test@example.org")).addBankDetails(new BankDetails("DE12500105170648489890", "COBADEFXXX")))
|
||||
.setRecipient(new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE"))
|
||||
.setReferenceNumber("991-01484-64")//leitweg-id
|
||||
.setNumber("123").addItem(new Item(new Product("Testprodukt", "", "C62", BigDecimal.ZERO), /*price*/ new BigDecimal("1.0"), /*qty*/ new BigDecimal("1.0")).addReferencedLineID("A12"));
|
||||
.setNumber("123").addItem(new Item(new Product("Testprodukt", "", "C62", BigDecimal.ZERO), /*price*/ new BigDecimal("1.0"), /*qty*/ new BigDecimal("1.0")).addBuyerOrderReferencedDocumentLineID("A12"));
|
||||
|
||||
|
||||
try {
|
||||
|
||||
@@ -454,7 +454,7 @@ public class ZF2PushTest extends TestCase {
|
||||
.setContractReferencedDocument(contractID)
|
||||
.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"))
|
||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(16)).addGlobalID(gtin).setSellerAssignedID("4711"), price, new BigDecimal(1.0)).addReferencedLineID("xxx").addNote("item level 1/1").addAllowance(new Allowance(new BigDecimal(0.02)).setReason("item discount").setTaxPercent(new BigDecimal(16))).setDetailedDeliveryPeriod(sdf.parse("2020-01-13"), sdf.parse("2020-01-15")))
|
||||
.addItem(new Item(new Product("Testprodukt", "", "C62", new BigDecimal(16)).addGlobalID(gtin).setSellerAssignedID("4711"), price, new BigDecimal(1.0)).addBuyerOrderReferencedDocumentID("orderId").addBuyerOrderReferencedDocumentLineID("xxx").addNote("item level 1/1").addAllowance(new Allowance(new BigDecimal(0.02)).setReason("item discount").setTaxPercent(new BigDecimal(16))).setDetailedDeliveryPeriod(sdf.parse("2020-01-13"), sdf.parse("2020-01-15")))
|
||||
.addCharge(new Charge(new BigDecimal(0.5)).setReason("quick delivery charge").setTaxPercent(new BigDecimal(16)))
|
||||
.addAllowance(new Allowance(new BigDecimal(0.2)).setReason("discount").setTaxPercent(new BigDecimal(16)))
|
||||
.addCashDiscount(new CashDiscount(new BigDecimal(2), 14))
|
||||
@@ -483,6 +483,7 @@ public class ZF2PushTest extends TestCase {
|
||||
assertTrue(zi.getUTF8().contains("0088"));
|
||||
assertTrue(zi.getUTF8().contains(orgID));
|
||||
assertTrue(zi.getUTF8().contains("ram:BuyerOrderReferencedDocument"));
|
||||
assertThat(zi.getUTF8()).valueByXPath("//*[local-name()='SpecifiedLineTradeAgreement']/*[local-name()='BuyerOrderReferencedDocument']/*[local-name()='IssuerAssignedID']").asString().isEqualTo("orderId");
|
||||
assertTrue(zi.getUTF8().contains(occurrenceFrom));
|
||||
assertTrue(zi.getUTF8().contains(occurrenceTo));
|
||||
assertTrue(zi.getUTF8().contains(contractID));
|
||||
|
||||
Reference in New Issue
Block a user