Mustangserver 1.7.0

Am 12.06.2025 wurde die neue Version 1.7.0 unseres e-Rechnungs-Servers, Mustangserver, veröffentlicht.
Sie führt zentrales “Exception tracking” ein, das heißt, dass der Support bei Fehlern direkt alarmiert wird. Bisher wurden diese Fehler nur protokolliert, was eine Nachauswertung erforderlich machte.

Weiterhin bringt dieses Release alle Erweiterungen und Verbesserungen von Mustang 2.17.0, aktualisiert den Validierer PHIVE, unterstützt mehr Validierungsprofile, und korrigiert einen kleinen Fehler mit bestimmten PDF-Dateien(issue 217).

2.17.0

Am heutigen 11.06.2025 haben wir Version 2.17.0 unseres open-source “Schweizer Armeemesser” Tools für e-Rechnungen, Mustangproject, veröffentlicht. Wie üblich liest, schreibt, validiert und konvertiert es europäische und deutsche e-Rechnungen beispielsweise im Factur-X- oder XRechnungs-Format.

Die neue Version unterscheidet jetzt korrekt zwischen Zuschlägen und Rabatten auf Produkt-, Positions- und Dokumentenebene, vormals war das nur auf Produkt und Dokumentebene möglich (unser Fehler #764). Dies kann einzelne Berechnungen korrigieren, bitte prüfen Sie gegebenenfalls Ihre Implementierung. Zusätzlich haben die Klassem CalculatedInvoice und TransactionCalculator jetzt “getter”, namenlich “getCalculation” beziehungsweise “getTaxDetails” erhalten.

Weiterhin wurden folgenden Korrekturen vorgenommen:

  • #820/801/815 invoiceImporter korrigiert: leere NodeList, leere Strings
  • #822 Nachrichtenumbruch im Validierungsergebnis-PDF
  • #843 Nach Sprachwechsel HTML-Vorlage neu initialisieren
  • #854 mehrere Positionszuschläge/Rabatte erlauben bei der Umwandlung in HTML
  • #786 Korrektur vn Rechnungen mit USt-Kategorie “O”

Wie üblich ist die Software als Java-Bibliothek über Maven Central und als Kommandozeilentool kostenlos für Windows, Linux und Mac auf ihrer Webseite verfügbar.

2.16.5

Am heutigen 22.05.2025 haben wir eine neue Version 2.16.5 unserer open source e-Rechnungssoftware Mustangproject veröffentlicht.

Neue Features

Diese Version unetstützt Factur-X 1.07.3/ZUGFeRD 2.3.3 (#833) und

Korrekturen

verbesserte das Parsen von UBL-Dateien (#816, #835). Weitere Korrekturen beinhalten

  • #819 correct generateXSLTFromSchematron profile
  • #458 Its not possible to add multiple PaymentTerms when using the extended profile
  • #788 Invoice taxes aren’t acessible
  • #790 Crash upon importing an invoice with empty name.
  • upgrade from PDFBOX 3.0.2 to 3.0.5
  • #817 added ZUGFeRD.PDF-csharp to list of PDF creators
  • #811 Fix typo in xpath when extracting buyer trade party address

Zwei Gründe, warum sich das nur auf die Micro-Versionsnummer ausgewirkt hat:

  • ZUGFeRD 2.3.3 erfordert weder beim schreiben noch beim lesen Änderungen, aber die Validierung wurde leicht korrigiert und basiert jetzt auf Version 15 der Codelisten.
  • Die Arbeit an der Korrektur von Absoluten Positionszuschlägen (#764) geht voran, funktioniert aber noch nicht gleichzeitig in beide Richtungen, das heißt Rechnungen werden entweder korrekt erzeugt oder korrekt gelesen. Diese Änderung sollte korrigiert und intensiv getestet werden und wird in einer späteren Version, möglicherweise einer 2.17.0, möglicherweise Ende Juni umgesetzt.

Mustang.net-nach-Ghostscript.net-portiert-Webinar

Hallo,

Wie dokumentiert (p35f) gibt es bereits einen C#-client für Mustangserver, den Sie verweden können um e-Rechnungen zu lesen, zu schreiben und zu validieren. Während wir an Mustangserver und natürlich der Java-Version von Mustangproject weiterarbeiten, haben wir unseren Mustang.net-Ansatz jetzt komplett in Ghostscript.net einfließen lassen.

Ein klärendes Webinar dazu findet (in englisch) statt am 15.05.2025, 15:00-16:00 CET. Weitere Details sowie Bewerbung um einen Teilnahmelink, füllen Sie bitte bis Mittwochabend, dem 14.05. aus.

Falls Sie Mustang.net-jetzt-Ghostscript.net einfach nur antesten wollen fügen Sie Ghostscript.net via nuget Ihrem Projekt hinzu und benutzen Sie beispielsweise folgenden Code:

 

using Ghostscript.NET.PDFA3Converter.ZUGFeRD;

Invoice i = (new Invoice()).setDueDate(DateTime.Now).setIssueDate(DateTime.Now).setDeliveryDate(DateTime.Now).setSender((new TradeParty("Test company", "Test Street 1", "55232", "Test City", "DE")).addTaxID("DE4711").addVATID("DE0815").setContact(new Contact("Hans Test", "+49123456789", "te...@example.org")).addBankDetails(new BankDetails("DE12500105170648489890", "COBADEFXXX"))).setRecipient(new TradeParty("Franz Mueller", "Test Street 12", "55232", "Entenhausen", "DE")).setReferenceNumber("991-01484-64").setNumber("123").addItem(new Item(new Product("Test product", "", "H87", 19m), 1.0m, 1.0m));

ZUGFeRD2PullProvider zf2p = new ZUGFeRD2PullProvider();
zf2p.generateXML(i);
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();

string outfilename = "c:\\your\\dir\\gs-factur-x.xml";
File.WriteAllBytes(outfilename, zf2p.getXML());

2.16.4

Die am 22.04.2025 veröffentlichte Mustangproject Version 2.16.4 bringt 16 kleine Korrekturen, zwei davon möglicherweise Sicherheitsrelevant, und eine von den 16 korrigiert leicht zu hohen Ressourcenverbrauch, i.e. nicht gelöschte Dateien.

Ein weiterer Punkt, (#764),
wird in 2.17.0, möglicherweise im Mai angegangen, vielleicht mit dem Release das auch ZUGFeRD 2.3.3 (i.e. Codelistenversion 15) unterstützen wird: Absolute, nicht prozentuale, positionsbasierte Zuschläge/Abschläge dürfen wohl nicht mit der Menge multipliziert werden, wie sie es derzeit in Mustang getan werden. Falls das wahr ist muss ich (Jochen) nicht nur die Berechnung sondern auch einige Tests korrigieren, und einige wenige Rechnungen werden unterschiedliche Endbeträge erzeugen.

Neue Funktionen in 2.16.4

  • #818 Möglichkeit der Angabe von Dateinamen-Ausnahmen beim rekursiven Validieren mit validateExpectValid
  • #741 read accountingReference lesen
  • #809 mehrere Zuschläge/Abschläge pro Position berücksichtigen
  • #812 Dateianhang bekommen eine Standard-Anhangsart (ohnehin nur für PDF-Dateianhänge verwendet)

Korrekturen

  • #774 XML Entities parsing deaktiviert (möglicherweise sicherheitsrelevant, teilweise rückgebaut wegen fehlschlagender Tests)
  • #778 XML External Entity Schutzfunktion hinzugefügt (möglicherweise sicherheitsrelevant, teilweise rückgebaut wegen fehlschlagender Tests)
  • #742/#753 “Adresszusatz 1” (LineTwo) zeigt “Postfach” in HTML
  • #614, #770 Exemption reason sollte nicht wiederholt werden
  • #728 setCorrection erzeugt doppelte XML-Ausgabe
  • #776 Mögliches Ressourcenleck in Dateiverarbeitenden Klassen
  • #782/771 NullPointerException vermeiden bei Product Description
  • #772 TradeParty Name sollte optional sein für ShipToTradeParty
  • #775 ungelöschte Temporärdateien
  • #802 fix: Großgeschriebenes D für ID in listID

Umstrukturierungen

  • #759 Klasse statt var Typ verwenden
  • #722 ValidationLogVisualizer erweitern, sodass er nicht zwingend das Dateisystem benutzt

Mustangserver 1.6.3

Am heutigen 07.03.2025 haben wir die neue Version unserer e-Rechnungs REST API, Mustangserver veröffentlicht.
Sie bringt die Vorteile von Mustangproject 2.16.3, beispielsweise die Möglichkeit Rabatte und Zuschläge auf positionsbasis über JSON mitzuteilen, und korrigiert eine mögliche Sicherheits- und eine Wartungslücke.

Bestehende Nutzer können 1.6.3 bereits auswählen, neue Nutzer können sich für einen kostenlose 30 Tage Zeitraum registrieren. Ab Morgen, Samstag, wird Version 1.6.3 auch die neue Mustangserver-Standardversion werden.

2.16.3

Am heutigen 03.03.2025 haben wir eine neue Version unseres open-source e-Rechnungs-Tools Mustangproject veröffentlicht. Die neue Version 2.16.3 verhindert eine potentielle Sicherheitslücke und erlaubt das Schreiben von Rechnungen ohne Umsatzsteuer-IDs (#745) mit der Rechnungsklasse und mehr.

Details:

  • #558 ZUGFeRDInvoiceImporter liest nicht BankDetails.accountName
  • #686 Position: BillingSpecifiedPeriod hinzugefügt
  • #739 Rechnungsperiode auch aus UBL parsen
  • #745 legalorganisation ID ohne Schema angeben können
  • #747 korrigierte Profilerkennung
  • #710 Validierungsfehler aufgrund leerer Elemente
  • #712 Klammerkorrektur für allowance reason.
  • #725 XML-bezogene Angriffsmöglichkeiten
  • #685 Sicherheitsproblem: XXE Schwäche in ZUGFeRDInvoiceImporter (PR #725)
  • #761 Positionsbezogene Zuschläge/Rabatte per JSON setzen können

Mustangserver 1.6.2

Am heutigen 27.02.2025 haben wir einen Hotfix für unser e-Rechungs-REST-API, Mustangserver, veröffentlicht, der ein Problem im “detach” Endpunkt löst, das dazu führen könnte, dass die eingebettete factur-x.xml einiger Factur-X/ZUGFeRD-Rechnungen nicht korrekt gelistet wurde.

Mustangserver 1.6.1

Am heutigen 06.02.2025 haben wir die neue Version 1.6.1 unserer Software-as-a-Service E-Procurement REST API, Mustangserver veröffentlicht, die kleinere Details korrigiert wie die in seltenen Fällen unvollständige Liste rechnungsbegründender Unterlagen.

2.16.2

Mustangproject 2.16.2 wurde am heutigen 05.02.2025 veröffentlicht und korrigiert kleinere Fehler unter anderem im Bereich PDF und Rechnunganhänge, im Detail:

  • #705 specifiedLogisticsCharge is not imported
  • #707 invoiceimporter may fail if certain values are not set
  • #708 embedded files cannot be determined
  • #709 ZUGFeRDInvoiceImporter ignored “first” embedded file in list of pdf attachments
  • #607 Enable flexible PaymentReference and a DocumentName.
  • #649 Reuse toPDF method to work without any dependencies to the file system
  • #650 Add net.sf.offo:fop-hyph
  • #665 Fix #632: Return ubl_creditnote as Standard for CreditNotes
  • #684 Optimize validation-report to pdf functionality
  • #703 Fill TaxExemptionReason during InvoiceImport.
  • #701 Ensure Base64 decoding can handle newlines when decoding a FileAttachment
  • #691 Fix current check failures.