diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
index 8505010b..5a388b11 100644
--- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
+++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
@@ -181,235 +181,237 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
+ "\n";
}
- String xml= "\n" //$NON-NLS-1$
-
- + "\n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " urn:cen.eu:en16931:2017:compliant:factur-x.eu:1p0:extended\n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " "+trans.getNumber()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " RECHNUNG\n" //$NON-NLS-1$
- + " 380\n" //$NON-NLS-1$
- + " "+zugferdDateFormat.format(trans.getIssueDate())+"\n" //date format was 20130605 //$NON-NLS-1$ //$NON-NLS-2$
- + senderReg
-// + " \n"
-// + " \n"
-// + "Rechnung gemäß Bestellung Nr. 2013-471331 vom 01.03.2013.\n"
-// + "\n"
-// + " \n"
-// + " \n"
-// + " \n"
-// + " \n"
-// + "Es bestehen Rabatt- und Bonusvereinbarungen.\n"
-// + " \n"
-// + " AAK\n"
-// + " \n"
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
-// + " AB-312\n"
- + " \n" //$NON-NLS-1$
-// + " 4000001123452\n"
- + " "+trans.getOwnOrganisationName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " \n"
- + " "+trans.getOwnZIP()+"\n"
- + " "+trans.getOwnStreet()+"\n"
- + " "+trans.getOwnLocation()+"\n"
- + " "+trans.getOwnCountry()+"\n"
- + " \n"
- + " \n" //$NON-NLS-1$
- + " "+trans.getOwnTaxID()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " "+trans.getOwnVATID()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
-// + " GE2020211\n"
-// + " 4000001987658\n"
- + " "+trans.getRecipient().getName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
-// + " \n"
-// + " xxx\n"
-// + " \n"
- + " \n" //$NON-NLS-1$
- + " "+trans.getRecipient().getZIP()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " "+trans.getRecipient().getStreet()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " "+trans.getRecipient().getLocation()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " "+trans.getRecipient().getCountry()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " "+trans.getRecipient().getVATID()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
-// + " \n"
-// + " 20130301\n"
-// + " 2013-471331\n"
-// + " \n"
- + " \n" //$NON-NLS-1$
- + " \n"
- + " \n"
- + " "+zugferdDateFormat.format(trans.getDeliveryDate())+"\n"
- + " \n"
- /*
- + " \n"
- + " 20130603\n"
- + " 2013-51112\n"
- + " \n" */
- + " \n"
- + " \n" //$NON-NLS-1$
- + " "+trans.getNumber()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " EUR\n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " 42\n" //$NON-NLS-1$
- + " Überweisung\n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " "+trans.getOwnIBAN()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " "+trans.getOwnBIC()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " "+trans.getOwnBankName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " \n" //$NON-NLS-1$
- + " \n"; //$NON-NLS-1$
-
-
- HashMap VATPercentAmountMap=getVATPercentAmountMap();
- for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) {
- VATAmount amount = VATPercentAmountMap.get(currentTaxPercent);
- if (amount != null) {
- xml += " \n" //$NON-NLS-1$
- + " "+currencyFormat(amount.getCalculated())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " VAT\n" //$NON-NLS-1$
- + " "+currencyFormat(amount.getBasis())+"\n"
- + " S\n" //$NON-NLS-1$
- + " "+vatFormat(currentTaxPercent)+"\n" //$NON-NLS-1$
- + " \n"; //$NON-NLS-1$
+ String xml= "\n" //$NON-NLS-1$
+
+ + "\n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " "+testBooleanStr+"\n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " urn:ferd:CrossIndustryDocument:invoice:1p0:comfort\n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " "+trans.getNumber()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " RECHNUNG\n" //$NON-NLS-1$
+ + " 380\n" //$NON-NLS-1$
+ + " "+zugferdDateFormat.format(trans.getIssueDate())+"\n" //date format was 20130605 //$NON-NLS-1$ //$NON-NLS-2$
+ + senderReg
+// + " \n"
+// + " \n"
+// + "Rechnung gemäß Bestellung Nr. 2013-471331 vom 01.03.2013.\n"
+// + "\n"
+// + " \n"
+// + " \n"
+// + " \n"
+// + " \n"
+// + "Es bestehen Rabatt- und Bonusvereinbarungen.\n"
+// + " \n"
+// + " AAK\n"
+// + " \n"
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+// + " AB-312\n"
+ + " \n" //$NON-NLS-1$
+// + " 4000001123452\n"
+ + " "+trans.getOwnOrganisationName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n"
+ + " "+trans.getOwnZIP()+"\n"
+ + " "+trans.getOwnStreet()+"\n"
+ + " "+trans.getOwnLocation()+"\n"
+ + " "+trans.getOwnCountry()+"\n"
+ + " \n"
+ + " \n" //$NON-NLS-1$
+ + " "+trans.getOwnTaxID()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " "+trans.getOwnVATID()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+// + " GE2020211\n"
+// + " 4000001987658\n"
+ + " "+trans.getRecipient().getName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+// + " \n"
+// + " xxx\n"
+// + " \n"
+ + " \n" //$NON-NLS-1$
+ + " "+trans.getRecipient().getZIP()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " "+trans.getRecipient().getStreet()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " "+trans.getRecipient().getLocation()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " "+trans.getRecipient().getCountry()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " "+trans.getRecipient().getVATID()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+// + " \n"
+// + " 20130301\n"
+// + " 2013-471331\n"
+// + " \n"
+ + " \n" //$NON-NLS-1$
+ + " \n"
+ + " \n"
+ + " "+zugferdDateFormat.format(trans.getDeliveryDate())+"\n"
+ + " \n"
+ /*
+ + " \n"
+ + " 20130603\n"
+ + " 2013-51112\n"
+ + " \n" */
+ + " \n"
+ + " \n" //$NON-NLS-1$
+ + " "+trans.getNumber()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " EUR\n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " 42\n" //$NON-NLS-1$
+ + " Überweisung\n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " "+trans.getOwnIBAN()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " "+trans.getOwnBIC()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " "+trans.getOwnBankName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n" //$NON-NLS-1$
+ + " \n"; //$NON-NLS-1$
-
- }
- }
-/* xml+= "
- + " \n"
- + " false\n"
- + " 10\n"
- + " 1.00\n"
- + " Sondernachlass\n"
- + " \n"
- + " VAT\n"
- + " S\n"
- + " 19\n"
- + " \n"
- + " \n"
- + " \n"
- + " false\n"
- + " 137.30\n"
- + " 13.73\n"
- + " Sondernachlass\n"
- + " \n"
- + " VAT\n"
- + " S\n"
- + " 7\n"
- + " \n"
- + " \n"
- + " \n"
- + " Versandkosten\n"
- + " 5.80\n"
- + " \n"
- + " VAT\n"
- + " S\n"
- + " 7\n"
- + " \n"
- + " \n"*/
-
- xml=xml+ " \n" //$NON-NLS-1$
- + " Zahlbar ohne Abzug bis "+germanDateFormat.format(trans.getDueDate())+"\n"
- + " "+zugferdDateFormat.format(trans.getDueDate())+"\n"//20130704 //$NON-NLS-1$ //$NON-NLS-2$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " "+currencyFormat(getTotal())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " 0.00\n" //$NON-NLS-1$
- + " 0.00\n" //$NON-NLS-1$
-// + " 5.80\n"
-// + " 14.73\n"
- + " "+currencyFormat(getTotal())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " "+currencyFormat(getTotalGross().subtract(getTotal()))+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " "+currencyFormat(getTotalGross())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
-// + " 0.00\n"
- + " "+currencyFormat(getTotalGross())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " \n" //$NON-NLS-1$
- + " \n"; //$NON-NLS-1$
-// + " \n"
-// + " \n"
-// + " \n"
-// + " Wir erlauben uns Ihnen folgende Positionen aus der Lieferung Nr. 2013-51112 in Rechnung zu stellen:\n"
-// + " \n"
-// + " \n"
-// + " \n";
-
-
- int lineID=0;
- for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) {
- lineID++;
-
- LineCalc lc=new LineCalc(currentItem);
- xml=xml+ " \n"+ //$NON-NLS-1$
- " \n" //$NON-NLS-1$
- + " "+lineID+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " \n" //$NON-NLS-1$
-
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " "+priceFormat(currentItem.getPrice())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " 1.0000\n" //$NON-NLS-1$ //$NON-NLS-2$
-// + " \n"
-// + " false\n"
-// + " 0.6667\n"
-// + " Rabatt\n"
-// + " \n"
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " "+priceFormat(currentItem.getPrice())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " 1.0000\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
-
- + " \n" //$NON-NLS-1$
- + " "+quantityFormat(currentItem.getQuantity())+"\n" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " VAT\n" //$NON-NLS-1$
- + " S\n" //$NON-NLS-1$
- + " "+vatFormat(currentItem.getProduct().getVATPercent())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " "+currencyFormat(lc.getItemTotalNetAmount())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
- + " \n" //$NON-NLS-1$
-// + " 4012345001235\n"
-// + " KR3M\n"
-// + " 55T01\n"
- + " "+currentItem.getProduct().getName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " "+currentItem.getProduct().getDescription()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
- + " \n" //$NON-NLS-1$
- + " \n"; //$NON-NLS-1$
+
+ HashMap VATPercentAmountMap=getVATPercentAmountMap();
+ for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) {
+ VATAmount amount = VATPercentAmountMap.get(currentTaxPercent);
+ if (amount != null) {
+ xml += " \n" //$NON-NLS-1$
+ + " "+currencyFormat(amount.getCalculated())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " VAT\n" //$NON-NLS-1$
+ + " "+currencyFormat(amount.getBasis())+"\n"
+ + " S\n" //$NON-NLS-1$
+ + " "+vatFormat(currentTaxPercent)+"\n" //$NON-NLS-1$
+ + " \n"; //$NON-NLS-1$
}
+ }
+ /* xml+= "
+ + " \n"
+ + " false\n"
+ + " 10\n"
+ + " 1.00\n"
+ + " Sondernachlass\n"
+ + " \n"
+ + " VAT\n"
+ + " S\n"
+ + " 19\n"
+ + " \n"
+ + " \n"
+ + " \n"
+ + " false\n"
+ + " 137.30\n"
+ + " 13.73\n"
+ + " Sondernachlass\n"
+ + " \n"
+ + " VAT\n"
+ + " S\n"
+ + " 7\n"
+ + " \n"
+ + " \n"
+ + " \n"
+ + " Versandkosten\n"
+ + " 5.80\n"
+ + " \n"
+ + " VAT\n"
+ + " S\n"
+ + " 7\n"
+ + " \n"
+ + " \n"*/
+
+ xml=xml+ " \n" //$NON-NLS-1$
+ + " Zahlbar ohne Abzug bis "+germanDateFormat.format(trans.getDueDate())+"\n"
+ + " "+zugferdDateFormat.format(trans.getDueDate())+"\n"//20130704 //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " "+currencyFormat(getTotal())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " 0.00\n" //$NON-NLS-1$
+ + " 0.00\n" //$NON-NLS-1$
+// + " 5.80\n"
+// + " 14.73\n"
+ + " "+currencyFormat(getTotal())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " "+currencyFormat(getTotalGross().subtract(getTotal()))+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " "+currencyFormat(getTotalGross())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+// + " 0.00\n"
+ + " "+currencyFormat(getTotalGross())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n" //$NON-NLS-1$
+ + " \n"; //$NON-NLS-1$
+// + " \n"
+// + " \n"
+// + " \n"
+// + " Wir erlauben uns Ihnen folgende Positionen aus der Lieferung Nr. 2013-51112 in Rechnung zu stellen:\n"
+// + " \n"
+// + " \n"
+// + " \n";
- xml=xml + " \n" //$NON-NLS-1$
- + ""; //$NON-NLS-1$
+ int lineID=0;
+ for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) {
+ lineID++;
+
+ LineCalc lc=new LineCalc(currentItem);
+ xml=xml+ " \n"+ //$NON-NLS-1$
+ " \n" //$NON-NLS-1$
+ + " "+lineID+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n" //$NON-NLS-1$
+
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " "+priceFormat(currentItem.getPrice())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " 1.0000\n" //$NON-NLS-1$ //$NON-NLS-2$
+// + " \n"
+// + " false\n"
+// + " 0.6667\n"
+// + " Rabatt\n"
+// + " \n"
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " "+priceFormat(currentItem.getPrice())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " 1.0000\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+
+ + " \n" //$NON-NLS-1$
+ + " "+quantityFormat(currentItem.getQuantity())+"\n" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " VAT\n" //$NON-NLS-1$
+ + " S\n" //$NON-NLS-1$
+ + " "+vatFormat(currentItem.getProduct().getVATPercent())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " "+currencyFormat(lc.getItemTotalNetAmount())+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+ + " \n" //$NON-NLS-1$
+// + " 4012345001235\n"
+// + " KR3M\n"
+// + " 55T01\n"
+ + " "+currentItem.getProduct().getName()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " "+currentItem.getProduct().getDescription()+"\n" //$NON-NLS-1$ //$NON-NLS-2$
+ + " \n" //$NON-NLS-1$
+ + " \n"; //$NON-NLS-1$
+
+
+
+ }
+
+
+ xml=xml + " \n" //$NON-NLS-1$
+ + ""; //$NON-NLS-1$
+
byte[] zugferdRaw;
try {
zugferdRaw = xml.getBytes("UTF-8");
diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDMigrator.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDMigrator.java
index b2a3c71a..8d07879f 100644
--- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDMigrator.java
+++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDMigrator.java
@@ -4,21 +4,9 @@ public class ZUGFeRDMigrator {
public String migrateFromV1ToV2(String xml) {
/***
-
-
-
-->
-
-
-
-
-
-ram:SpecifiedTradeSettlementMonetarySummation->ram:SpecifiedTradeSettlementHeaderMonetarySummation
-ram:IncludedSupplyChainTradeLineItem->
-->
-->
-->
-ram:SpecifiedTradeProduct->
+ * http://www.unece.org/fileadmin/DAM/cefact/xml/XML-Naming-And-Design-Rules-V2_1.pdf
+ * http://www.ferd-net.de/upload/Dokumente/FACTUR-X_ZUGFeRD_2p0_Teil1_Profil_EN16931_1p03.pdf
+http://countwordsfree.com/xmlviewer
*/
// todo: attributes may also be in single quotes, this one hardcodedly expects
// double ones
@@ -40,13 +28,16 @@ ram:SpecifiedTradeProduct->
xml = xml.replace("ram:SpecifiedSupplyChainTradeDelivery", "ram:SpecifiedLineTradeDelivery");
xml = xml.replace("ram:SpecifiedSupplyChainTradeSettlement", "ram:SpecifiedLineTradeSettlement");
xml = xml.replace("ram:SpecifiedTradeSettlementMonetarySummation", "ram:SpecifiedTradeSettlementLineMonetarySummation");
- xml = xml.replace("ram:SpecifiedTradeSettlementLineMonetarySummation", "ram:SpecifiedTradeSettlementHeaderMonetarySummation");
- xml = xml.replace("ram:IssueDateTime","ram:FormattedIssueDateTime");
+ //xml = xml.replace("ram:SpecifiedTradeSettlementLineMonetarySummation", "ram:SpecifiedTradeSettlementHeaderMonetarySummation");
+ //ram:SpecifiedTradeSettlementLineMonetarySummation bleibt unterhalb von ram:SpecifiedLineTradeSettlement
+ //xml = xml.replace("ram:IssueDateTime","ram:FormattedIssueDateTime");
xml = xml.replace("ram:SpecifiedTradeAccountingAccount","ram:SalesSpecifiedTradeAccountingAccount");
xml = xml.replace("ram:SpecifiedSupplyChainTradeAgreement","ram:SpecifiedLineTradeAgreement");
- xml = xml.replace("ram:ID","ram:GlobalID");
+ //xml = xml.replace("ram:ID","ram:GlobalID");
+ //ram:ID unterhalb von ram:ContractReferencedDocument zu ram:IssuerAssignedID
+ //http://www.unece.org/fileadmin/DAM/cefact/xml/XML-Naming-And-Design-Rules-V2_1.pdf
/*
xml = xml.replace("rsm:SpecifiedExchangedDocumentContext", "rsm:CIExchangedDocumentContext");
xml = xml.replace("rsm:HeaderExchangedDocument", "rsm:CIIHExchangedDocument");