diff --git a/library/src/main/java/org/mustangproject/IncludedNote.java b/library/src/main/java/org/mustangproject/IncludedNote.java
index 5eeea22e..95536afb 100644
--- a/library/src/main/java/org/mustangproject/IncludedNote.java
+++ b/library/src/main/java/org/mustangproject/IncludedNote.java
@@ -7,6 +7,13 @@ public class IncludedNote {
private final String content;
private final SubjectCode subjectCode;
+ private static final String INCLUDE_START = "";
+ private static final String INCLUDE_END = "";
+ private static final String CONTENT_START = "";
+ private static final String CONTENT_END = "";
+ private static final String SUBJECT_CODE_START = "";
+ private static final String SUBJECT_CODE_END = "";
+
private IncludedNote(String content, SubjectCode subjectCode) {
this.content = content;
this.subjectCode = subjectCode;
@@ -37,6 +44,10 @@ public class IncludedNote {
return new IncludedNote(content, SubjectCode.AAK);
}
+ public static IncludedNote unspecifiedNote(String content) {
+ return new IncludedNote(content, null);
+ }
+
public String getContent() {
return content;
}
@@ -45,4 +56,13 @@ public class IncludedNote {
return subjectCode;
}
+ public String toCiiXml(){
+ String result = INCLUDE_START + CONTENT_START +
+ XMLTools.encodeXML(getContent() )+ CONTENT_END;
+ if (getSubjectCode() != null) {
+ result += SUBJECT_CODE_START + getSubjectCode() + SUBJECT_CODE_END;
+ }
+ return result + INCLUDE_END;
+ }
+
}
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
index 4c632db1..b48446e9 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
@@ -29,11 +29,15 @@ import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Base64;
import java.util.Date;
+import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.logging.Level;
import java.util.logging.Logger;
+import java.util.stream.Collectors;
import org.dom4j.Document;
import org.dom4j.DocumentException;
@@ -41,6 +45,7 @@ import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.mustangproject.FileAttachment;
+import org.mustangproject.IncludedNote;
import org.mustangproject.SubjectCode;
import org.mustangproject.XMLTools;
import org.mustangproject.ZUGFeRD.model.DocumentCodeTypeConstants;
@@ -742,37 +747,24 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
}
}
- private static String buildNotes(IExportableTransaction trans) {
- StringBuilder notes = new StringBuilder();
- if (trans.getNotes() != null) {
- for (final String currentNote : trans.getNotes()) {
- notes.append("")
- .append(XMLTools.encodeXML(currentNote))
- .append("");
+ private static String buildNotes(IExportableTransaction exportableTransaction) {
+ final List includedNotes = Optional.ofNullable(exportableTransaction.getNotesWithSubjectCode())
+ .orElse(new ArrayList<>());
+ if (exportableTransaction.getNotes() != null) {
+ for (final String currentNote : exportableTransaction.getNotes()) {
+ includedNotes.add(IncludedNote.unspecifiedNote(currentNote));
}
}
- if (trans.rebateAgreementExists()) {
- notes.append("")
- .append("Es bestehen Rabatt- und Bonusvereinbarungen.")
- .append("")
- .append(SubjectCode.AAK)
- .append("");
+ if (exportableTransaction.rebateAgreementExists()) {
+ includedNotes.add(IncludedNote.discountBonusNote("Es bestehen Rabatt- und Bonusvereinbarungen."));
}
- if (trans.getOwnOrganisationFullPlaintextInfo() != null) {
- notes.append("")
- .append(XMLTools.encodeXML(trans.getOwnOrganisationFullPlaintextInfo()))
- .append("")
- .append("")
- .append(SubjectCode.REG)
- .append("");
+ if (exportableTransaction.getOwnOrganisationFullPlaintextInfo() != null) {
+ includedNotes.add(IncludedNote.regulatoryNote(exportableTransaction.getOwnOrganisationFullPlaintextInfo()));
}
- if (trans.getSubjectNote() != null) {
- notes.append("")
- .append(XMLTools.encodeXML(trans.getSubjectNote()))
- .append("")
- .append("");
+ if (exportableTransaction.getSubjectNote() != null) {
+ includedNotes.add(IncludedNote.unspecifiedNote(exportableTransaction.getSubjectNote()));
}
- return notes.toString();
+ return includedNotes.stream().map(IncludedNote::toCiiXml).collect(Collectors.joining(""));
}
@Override