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 detailedDeliveryPeriodEnd = null;
|
||||
protected IReferencedDocument tenderReference = null;
|
||||
protected IReferencedDocument objectIdentifierReference = null;
|
||||
|
||||
protected ArrayList<IZUGFeRDAllowanceCharge> Allowances = 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) {
|
||||
this.number = number;
|
||||
return this;
|
||||
|
||||
@@ -224,6 +224,15 @@ public interface IExportableTransaction {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* BT-18 Invoiced Object Identifier
|
||||
*
|
||||
* @return mandatory ID, optional Date
|
||||
*/
|
||||
default IReferencedDocument getObjectIdentifierReferencedDocument() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* own name
|
||||
*
|
||||
|
||||
@@ -658,17 +658,22 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
|
||||
+ "</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){
|
||||
xml += "<ram:AdditionalReferencedDocument>"
|
||||
+ "<ram:IssuerAssignedID>" + XMLTools.encodeXML(trans.getTenderReferencedDocument().getIssuerAssignedID()) + "</ram:IssuerAssignedID>"
|
||||
+ "<ram:TypeCode>" + 50 + "</ram:TypeCode>";
|
||||
+ "<ram:TypeCode>50</ram:TypeCode>";
|
||||
if (trans.getTenderReferencedDocument().getFormattedIssueDateTime()!=null) {
|
||||
final SimpleDateFormat dateFormat102 = new SimpleDateFormat("yyyyMMdd");
|
||||
xml += "<ram:FormattedIssueDateTime><qdt:DateTimeString format=\"102\">"+XMLTools.encodeXML(dateFormat102.format(trans.getTenderReferencedDocument().getFormattedIssueDateTime()))+"</qdt:DateTimeString></ram:FormattedIssueDateTime>";
|
||||
xml += "<ram:FormattedIssueDateTime>" + DATE.qdtFormat(trans.getTenderReferencedDocument().getFormattedIssueDateTime()) + "</ram:FormattedIssueDateTime>";
|
||||
}
|
||||
|
||||
|
||||
xml += "</ram:AdditionalReferencedDocument>";
|
||||
}
|
||||
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
|
||||
public String getOwnLocation() {
|
||||
return "Stadthausen";
|
||||
|
||||
Reference in New Issue
Block a user