Merge pull request #1018 from pgjacobs/issue536
Fix for #536: Support for BT-18
This commit is contained in:
@@ -55,6 +55,7 @@ public class Invoice implements IExportableTransaction {
|
|||||||
protected Date detailedDeliveryDateStart = null;
|
protected Date detailedDeliveryDateStart = null;
|
||||||
protected Date detailedDeliveryPeriodEnd = null;
|
protected Date detailedDeliveryPeriodEnd = null;
|
||||||
protected IReferencedDocument tenderReference = null;
|
protected IReferencedDocument tenderReference = null;
|
||||||
|
protected IReferencedDocument objectIdentifierReference = null;
|
||||||
|
|
||||||
protected ArrayList<IZUGFeRDAllowanceCharge> Allowances = new ArrayList<>(),
|
protected ArrayList<IZUGFeRDAllowanceCharge> Allowances = new ArrayList<>(),
|
||||||
Charges = new ArrayList<>(), LogisticsServiceCharges = new ArrayList<>();
|
Charges = new ArrayList<>(), LogisticsServiceCharges = new ArrayList<>();
|
||||||
@@ -176,6 +177,28 @@ public class Invoice implements IExportableTransaction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** BT-18 */
|
||||||
|
@Override
|
||||||
|
public IReferencedDocument getObjectIdentifierReferencedDocument() {
|
||||||
|
return objectIdentifierReference;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** BT-18 */
|
||||||
|
public Invoice setObjectIdentifierReferencedDocument(ReferencedDocument dr) {
|
||||||
|
dr.setTypeCode("130");//50 is fixed for tender documents
|
||||||
|
objectIdentifierReference=dr;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Invoice setObjectIdentifierReferencedDocument(String id) {
|
||||||
|
ReferencedDocument dr=new ReferencedDocument(id);
|
||||||
|
setObjectIdentifierReferencedDocument(dr);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public Invoice setNumber(String number) {
|
public Invoice setNumber(String number) {
|
||||||
this.number = number;
|
this.number = number;
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
@@ -224,6 +224,15 @@ public interface IExportableTransaction {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BT-18 Invoiced Object Identifier
|
||||||
|
*
|
||||||
|
* @return mandatory ID, optional Date
|
||||||
|
*/
|
||||||
|
default IReferencedDocument getObjectIdentifierReferencedDocument() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* own name
|
* own name
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -658,17 +658,22 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
|||||||
+ "</ram:AdditionalReferencedDocument>";
|
+ "</ram:AdditionalReferencedDocument>";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (trans.getObjectIdentifierReferencedDocument() != null) {
|
||||||
|
xml += "<ram:AdditionalReferencedDocument>"
|
||||||
|
+ "<ram:IssuerAssignedID>" + XMLTools.encodeXML(trans.getObjectIdentifierReferencedDocument().getIssuerAssignedID()) + "</ram:IssuerAssignedID>"
|
||||||
|
+ "<ram:TypeCode>130</ram:TypeCode>";
|
||||||
|
if (trans.getObjectIdentifierReferencedDocument().getFormattedIssueDateTime()!=null) {
|
||||||
|
xml += "<ram:FormattedIssueDateTime>" + DATE.qdtFormat(trans.getObjectIdentifierReferencedDocument().getFormattedIssueDateTime()) + "</ram:FormattedIssueDateTime>";
|
||||||
|
}
|
||||||
|
xml += "</ram:AdditionalReferencedDocument>";
|
||||||
|
}
|
||||||
if (trans.getTenderReferencedDocument() != null){
|
if (trans.getTenderReferencedDocument() != null){
|
||||||
xml += "<ram:AdditionalReferencedDocument>"
|
xml += "<ram:AdditionalReferencedDocument>"
|
||||||
+ "<ram:IssuerAssignedID>" + XMLTools.encodeXML(trans.getTenderReferencedDocument().getIssuerAssignedID()) + "</ram:IssuerAssignedID>"
|
+ "<ram:IssuerAssignedID>" + XMLTools.encodeXML(trans.getTenderReferencedDocument().getIssuerAssignedID()) + "</ram:IssuerAssignedID>"
|
||||||
+ "<ram:TypeCode>" + 50 + "</ram:TypeCode>";
|
+ "<ram:TypeCode>50</ram:TypeCode>";
|
||||||
if (trans.getTenderReferencedDocument().getFormattedIssueDateTime()!=null) {
|
if (trans.getTenderReferencedDocument().getFormattedIssueDateTime()!=null) {
|
||||||
final SimpleDateFormat dateFormat102 = new SimpleDateFormat("yyyyMMdd");
|
xml += "<ram:FormattedIssueDateTime>" + DATE.qdtFormat(trans.getTenderReferencedDocument().getFormattedIssueDateTime()) + "</ram:FormattedIssueDateTime>";
|
||||||
xml += "<ram:FormattedIssueDateTime><qdt:DateTimeString format=\"102\">"+XMLTools.encodeXML(dateFormat102.format(trans.getTenderReferencedDocument().getFormattedIssueDateTime()))+"</qdt:DateTimeString></ram:FormattedIssueDateTime>";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
xml += "</ram:AdditionalReferencedDocument>";
|
xml += "</ram:AdditionalReferencedDocument>";
|
||||||
}
|
}
|
||||||
if (trans.getSpecifiedProcuringProjectID() != null) {
|
if (trans.getSpecifiedProcuringProjectID() != null) {
|
||||||
|
|||||||
@@ -176,6 +176,38 @@ public class ZF2EdgeTest extends MustangReaderTestCase {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IReferencedDocument getObjectIdentifierReferencedDocument() {
|
||||||
|
return new IReferencedDocument() {
|
||||||
|
@Override
|
||||||
|
public String getIssuerAssignedID() {
|
||||||
|
return "gPogKLtac0";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTypeCode() {
|
||||||
|
return "130";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getReferenceTypeCode() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Date getFormattedIssueDateTime() {
|
||||||
|
SimpleDateFormat sdf=new SimpleDateFormat("YYYY-mm-dd");
|
||||||
|
try {
|
||||||
|
return sdf.parse("2026-01-26");
|
||||||
|
} catch (ParseException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getOwnLocation() {
|
public String getOwnLocation() {
|
||||||
return "Stadthausen";
|
return "Stadthausen";
|
||||||
|
|||||||
Reference in New Issue
Block a user