diff --git a/History.md b/History.md
index e8f81cdd..a33526a1 100644
--- a/History.md
+++ b/History.md
@@ -1,6 +1,7 @@
#558
#686
#739
+#745
2.16.2
=======
diff --git a/library/src/main/java/org/mustangproject/LegalOrganisation.java b/library/src/main/java/org/mustangproject/LegalOrganisation.java
index 705420c2..d5b6d42f 100644
--- a/library/src/main/java/org/mustangproject/LegalOrganisation.java
+++ b/library/src/main/java/org/mustangproject/LegalOrganisation.java
@@ -23,6 +23,10 @@ public class LegalOrganisation implements IZUGFeRDLegalOrganisation {
this.schemedID = new SchemedID(scheme, ID);
}
+ public LegalOrganisation(String ID) {
+ this.schemedID = new SchemedID(null, ID);
+ }
+
public LegalOrganisation(SchemedID schemedID, String tradingBusinessName) {
this.schemedID = schemedID;
this.tradingBusinessName=tradingBusinessName;
diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
index 6958bb61..2b6ae8ec 100644
--- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
+++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java
@@ -149,7 +149,12 @@ public class ZUGFeRD2PullProvider implements IXMLProvider {
if (profile == Profiles.getByName("Minimum")) {
xml += "" + XMLTools.encodeXML(party.getLegalOrganisation().getSchemedID().getID()) + "";
} else {
- xml += "" + XMLTools.encodeXML(party.getLegalOrganisation().getSchemedID().getID()) + "";
+ String schemeAttribute="";
+ if ((party.getLegalOrganisation().getSchemedID().getScheme()!=null)&&(party.getLegalOrganisation().getSchemedID().getScheme().length()>0)) {
+ schemeAttribute="schemeID=\"" + XMLTools.encodeXML(party.getLegalOrganisation().getSchemedID().getScheme())+"\"";
+
+ }
+ xml += "" + XMLTools.encodeXML(party.getLegalOrganisation().getSchemedID().getID()) + "";
}
}
if (party.getLegalOrganisation().getTradingBusinessName() != null) {
diff --git a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java
index 5fc304ec..ace63df4 100644
--- a/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java
+++ b/library/src/test/java/org/mustangproject/ZUGFeRD/XRTest.java
@@ -52,12 +52,17 @@ public class XRTest extends TestCase {
TradeParty recipient = new TradeParty("Franz Müller", "teststr.12", "55232", "Entenhausen", "DE");
recipient.setEmail("quack@ducktown.org");
Invoice i = createInvoice(recipient);
-
+ String legalOrgID="aCustomSellerLegalOrgId";
+ String sellerID="aSellerTradePartyID";
+ i.getSender().setLegalOrganisation(new LegalOrganisation(legalOrgID));
+ i.getSender().setID(sellerID);
ZUGFeRD2PullProvider zf2p = new ZUGFeRD2PullProvider();
zf2p.setProfile(Profiles.getByName("XRechnung"));
zf2p.generateXML(i);
String theXML = new String(zf2p.getXML(), StandardCharsets.UTF_8);
assertTrue(theXML.contains(""+sellerID+""));// must be possible without scheme #
+ assertTrue(theXML.contains(""+legalOrgID+""));// must be possible without scheme #
assertThat(theXML).valueByXPath("count(//*[local-name()='IncludedSupplyChainTradeLineItem'])")
.asInt()
.isEqualTo(1); //2 errors are OK because there is a known bug