eInvoice Validator for Mustang – Handbuch
1 · Überblick
Der eInvoice Validator for Mustang ist ein WordPress-Plugin. Es stellt auf einer Seite Ihrer Website eine Ablagefläche bereit, auf der ein Besucher eine E-Rechnung ablegt. Die Rechnung wird von dem Validator des Mustangproject geprüft, den Sie selbst auf Ihrem Server abgelegt haben. Der Prüfbericht erscheint danach auf der Seite und lässt sich als Datei herunterladen.
Das Plugin richtet sich an Betreiber einer WordPress-Website, die eine Rechnungsprüfung auf dem eigenen Server anbieten wollen: für Kunden, für Lieferanten oder für die eigenen Kolleginnen und Kollegen.
Achtung: Das Plugin enthält keinen Validator und lädt auch keinen herunter. Es startet die Datei Mustang-CLI.jar, die an dem Pfad liegt, den Sie einstellen. Es ist ein unabhängiges Werkzeug von invoicePress und kein Produkt des Mustangproject.
Was das Plugin kann
- Es stellt mit einem Kurzbefehl eine Ablagefläche für E-Rechnungen auf eine Seite oder in einen Beitrag.
- Es nimmt ZUGFeRD- und Factur-X-PDF sowie CII- und UBL-XML entgegen, per Ziehen und Ablegen oder über die Dateiauswahl.
- Es liest bei einem PDF die eingebettete Rechnung schon im Browser aus und sendet nur dieses XML an Ihren Server.
- Es startet für jede Prüfung den Mustang-Validator auf Ihrem Server und zeigt dessen Bericht in einer verständlichen Ansicht mit Regeltexten und Fachbegriffen.
- Es heftet die hochgeladene Rechnung an den Bericht, damit die Fundstellen in der Belegansicht an ihrer Stelle stehen.
- Es bietet den unveränderten Bericht des Validators als
report.xmlzum Herunterladen an. - Es begrenzt die Zahl der Prüfungen je Besucher und Kalendertag sowie die Dateigröße.
- Es prüft auf der Einstellungsseite, ob der Validator startbereit ist, und überwacht mit einer Prüfsumme, ob die jar-Datei noch die ist, der Sie zugestimmt haben.
- Es gibt einer Rechnung, die im eInvoice Viewer geöffnet ist, den Knopf Mit Mustang prüfen.
- Es bringt Übersetzungen für Deutsch und Französisch mit; die Ausgangstexte sind englisch.
Was das Plugin nicht kann
- Es prüft nichts ohne den Mustang-Validator und ohne Java auf dem Server.
- Es prüft bei einem PDF nur die eingebettete Rechnung. Die PDF-Datei selbst erreicht den Server nicht und wird deshalb nicht untersucht.
- Es liest kein gewöhnliches oder gescanntes PDF; ein PDF ohne eingebettete Rechnung wird mit einer Meldung abgewiesen.
- Es speichert weder Rechnungen noch Berichte und führt keine Liste früherer Prüfungen.
- Es spricht den Validator nur auf einem Weg an: als Java-Prozess auf demselben Server. Einen entfernten Prüfdienst kann es nicht ansprechen.
Voraussetzungen
| Was | Anforderung |
|---|---|
| WordPress | ab Version 6.0 |
| PHP | ab Version 8.2 |
| Java | eine Java-Laufzeitumgebung ab Fassung 11, auf dem Server installiert und für den Benutzer des Webservers aufrufbar |
| Mustang-Validator | die Datei Mustang-CLI.jar, von Ihnen selbst von der Website des Mustangproject geladen und auf dem Server abgelegt |
| Server | PHP muss ein Java-Programm starten dürfen; der Benutzer des Webservers muss die jar-Datei lesen können |
| Browser des Besuchers | JavaScript eingeschaltet |
screenshots/vm-ablage.de.pngDie Ablagefläche auf einer WordPress-Seite mit der Aufforderung, eine E-Rechnung hineinzuziehen oder eine Datei zu wählen, darunter die Zeile mit den angenommenen Formaten2 · Installieren
ZIP-Datei hochladen
Bezug über wordpress.org
Der Bezug über das Plugin-Verzeichnis von wordpress.org ist vorgesehen, das Plugin ist dort aber noch nicht veröffentlicht. Sobald es dort steht, finden Sie es über die Suche unter „Plugins" und „Plugin hinzufügen".
Den Validator bereitstellen
Diese Schritte gehören zur Installation, denn ohne sie prüft das Plugin nichts.
Den Validator über einen Prüfdienst erreichen
Darf Ihr Webspace kein Java ausführen oder keine Programme starten, prüft das Plugin über einen Prüfdienst. Ein Prüfdienst ist eine von zwei Arten von Dienst, die dieselben Adressen anbieten:
- Validator Bridge: ein kleiner freier Dienst, der Mustang auf diesem oder einem anderen Rechner ausführt und über HTTP anbietet. Ihre Anleitung liegt bei ihr.
- eInvoice API: eine WordPress-Website mit dem Plugin eInvoice API, die die Prüfung an ihre eigene Bridge weiterreicht und dafür einen Schlüssel und ein Kontingent vergibt.
Pfad, java-Programm und die Unversehrtheit der jar betreffen dann nicht mehr dieses Plugin, sondern den Prüfdienst.
Aktualisieren
Sie ersetzen das Plugin durch die neue Fassung, indem Sie die neue ZIP-Datei hochladen. Solange das Plugin nicht auf wordpress.org steht, meldet WordPress eine neue Fassung nicht von sich aus. Ihre Einstellungen bleiben erhalten. Die jar-Datei des Validators aktualisiert das Plugin nicht; das tun Sie selbst (siehe Kapitel 6).
Entfernen
Sie deaktivieren und löschen das Plugin unter „Plugins". Die jar-Datei und Java bleiben auf dem Server, denn beide gehören nicht zum Plugin. Das Plugin legt in der Datenbank die Einstellungen spmv_jar_path, spmv_java_bin, spmv_timeout_seconds, spmv_role_limits ( die Tabelle je Rolle; bis zu ihrem ersten Speichern gilt der frühere Einzelwert spmv_daily_limit ), spmv_max_filesize_mb, spmv_trust_proxy und spmv_jar_sha256 an, dazu die Zähler der Tagesgrenze. Das Plugin räumt beim Löschen nicht auf: Die Einstellungen bleiben in der Datenbank stehen. Die Zähler verfallen nach einem Tag von selbst.
3 · Erste Schritte
screenshots/vm-systempruefung.de.pngDer Abschnitt „Systemprüfung" der Einstellungsseite mit grünen Haken in allen Zeilen und der Meldung, dass der Validator gestartet werden kannscreenshots/vm-shortcode.de.pngDer WordPress-Editor mit einer Seite, die nur den Kurzbefehl in eckigen Klammern enthältscreenshots/vm-bericht.de.pngDie Seite nach einer Prüfung: oben die Ablagefläche, darunter der Prüfbericht mit Befunden in verständlicher Sprache und dem Knopf zum Herunterladen4 · Arbeiten mit dem Validator
Eine Rechnung ablegen
Der Besucher zieht eine Datei auf die Ablagefläche oder klickt darauf und wählt eine Datei. Die Fläche lässt sich auch mit der Tastatur bedienen: Die Eingabetaste oder die Leertaste öffnet die Dateiauswahl. Angenommen werden Dateien mit der Endung .pdf oder .xml. Während der Validator läuft, nimmt die Fläche keine zweite Datei an.
Ein PDF prüfen lassen
Ein ZUGFeRD- oder Factur-X-PDF trägt die Rechnung als XML-Anhang in sich. Diesen Anhang liest das Plugin im Browser des Besuchers aus; währenddessen steht dort die Meldung, dass die Rechnung aus dem PDF gelesen wird. An den Server geht nur das XML. Die dafür nötigen Skripte werden erst geladen, wenn wirklich ein PDF abgelegt wird. Enthält das PDF keine Rechnung, sagt die Meldung das ausdrücklich.
Auf den Bericht warten
Für jede Prüfung startet Java neu. Die ersten Sekunden sind deshalb Anlauf und keine Prüfung. Für eine gewöhnliche Rechnung wurden mit Mustang-CLI 2.25.0 insgesamt rund zwei Sekunden gemessen. Solange die Prüfung läuft, steht unter der Ablagefläche ein Hinweis.
Den Bericht lesen
Der Bericht erscheint unter der Ablagefläche. Das Plugin zeigt ihn in einer verständlichen Ansicht: Die Befunde des Validators stehen dort mit Regeltexten und Fachbegriffen, und die hochgeladene Rechnung ist als Beleg angeheftet, sodass jede Fundstelle an ihrer Stelle im Beleg steht. Lässt sich diese Ansicht nicht aufbauen, zeigt das Plugin eine einfachere Berichtsansicht; der Bericht bleibt in jedem Fall lesbar. Die Darstellung ist von der Gestaltung Ihres Themes abgeschirmt.
Den Bericht herunterladen
Über dem Bericht steht der Knopf „report.xml herunterladen", daneben die Zeile „Prüfbericht". Der Knopf speichert den Bericht genau so, wie der Mustang-Validator ihn ausgegeben hat. Der Dateiname setzt sich aus dem Namen der Rechnung und dem Zusatz -report.xml zusammen, zum Beispiel rechnung-4711-report.xml.
screenshots/vm-download.de.pngDer Kopf des Berichts mit der Beschriftung „Validation report" und dem Knopf „Download report.xml"Die Tagesgrenze sehen
Unter der Ablagefläche steht „Verbleibende Uploads heute: …" mit der Zahl der Prüfungen, die dem Besucher an diesem Tag noch bleiben. Die Zahl sinkt nach jeder Prüfung, die einen Bericht geliefert hat. Eine abgelehnte Datei zählt nicht mit. Ist die Grenze erreicht, erhält der Besucher die Meldung „Das tägliche Upload-Limit ist erreicht. Bitte morgen erneut versuchen."
Den Validator überwachen
Der Abschnitt „Systemprüfung" der Einstellungsseite wird bei jedem Laden der Seite neu gerechnet und nie zwischengespeichert. Er hat drei Zeilen: „PHP darf fremde Prozesse starten ( proc_open )", „Eine Java-Laufzeitumgebung ist erreichbar" und „Mustang-CLI.jar liegt dort, wo die Einstellungen es sagen". Jede Zeile trägt einen grünen Haken oder ein rotes Kreuz, und bei einem Kreuz steht darunter der nächste Schritt. Der Knopf „Validator prüfen" fasst das Ergebnis in einer Zeile zusammen und nennt gegebenenfalls die offenen Prüfungen.
Die jar-Datei absichern
Die Mustang-CLI.jar ist ausführbarer fremder Code auf Ihrem Server. Der Abschnitt „Unversehrtheit der jar" zeigt deshalb zwei SHA-256-Prüfsummen: unter „Übernommen" die Datei, der Sie zugestimmt haben, und unter „Auf der Festplatte" die Datei, die jetzt am Pfad liegt. Mit „Die Datei auf der Festplatte annehmen" übernehmen Sie die vorhandene Datei. Weichen beide Werte später voneinander ab, bleibt die Prüfung gesperrt, bis Sie die Datei erneut annehmen oder die frühere zurücklegen. „Angenommene Prüfsumme vergessen" löscht die gemerkte Prüfsumme; danach wird jede jar-Datei gestartet, die am Pfad liegt.
screenshots/vm-jar-integritaet.de.pngDer Abschnitt „Unversehrtheit der jar" mit den beiden Prüfsummen „Übernommen" und „Auf der Festplatte" und den zwei Knöpfen darunter5 · Einstellungen
Die Einstellungsseite finden Sie unter „Einstellungen" und „E-Rechnungs-Validator Mustang". Sie brauchen dafür das Recht, Einstellungen zu verwalten. Die Tabellen nennen die deutschen Beschriftungen, wie sie auf einer deutschen Website erscheinen.
screenshots/vm-einstellungen.de.pngDie Einstellungsseite mit dem Abschnitt „Mustang-Validator": Pfad zur jar-Datei, Java-Programm, Zeitgrenze, Tagesgrenze, Dateigröße, Proxy-Kopfzeile und Design-KitAbschnitt „Mustang-Validator"
| Einstellung | Standard | Wirkung |
|---|---|---|
| Weg zum Validator | lokale Installation | „Lokale Installation: Java auf diesem Server“ startet Mustang-CLI.jar auf dem Webserver. „Prüfdienst ( Validator Bridge oder eInvoice API )“ schickt die Rechnung an den Prüfdienst unter der Adresse darunter. |
| Adresse des Prüfdienstes | leer | Nur mit dem Prüfdienst. Bei einer Bridge die Adresse, die sie beim Start nennt, zum Beispiel http://127.0.0.1:8090. Bei der eInvoice API einer Website deren REST-Adresse, zum Beispiel https://example.com/wp-json/einvoice-api/v1. |
| API-Schlüssel des Prüfdienstes | leer | Bei einer Bridge auf einem Server einer der Schlüssel aus api.keys ihrer Einstellungsdatei. Bei der eInvoice API Ihr API-Schlüssel dieser Website. Eine Bridge auf demselben Rechner braucht keinen. |
| Pfad zu Mustang-CLI.jar | leer | Der vollständige Pfad zur jar-Datei einschließlich des Dateinamens, zum Beispiel C:\mustangproject\Mustang-CLI-2.25.0.jar. Über dem Feld steht, ob am Pfad eine Datei gefunden wurde und wie groß sie ist. |
| java-Programm | leer | Bleibt das Feld leer, wird java aus dem Suchpfad des Webserver-Benutzers verwendet. Dieser Suchpfad ist oft ein anderer als der Ihrer eigenen Kommandozeile. Findet die Systemprüfung Java nicht, tragen Sie hier den vollständigen Pfad ein. |
| Zeitgrenze ( Sekunden ) | 60 | Die Zeit, die eine Prüfung höchstens dauern darf. Das Eingabefeld verlangt mindestens 5. |
| Tägliche Uploads je Rolle | jede Rolle 10 | Eine Tabelle mit einer Zeile für Gäste ( nicht angemeldet ) und je einer Zeile für jede Rolle der Website. Je Zeile gilt: leer heisst unbegrenzt, 0 heisst kein Zugang, eine Zahl heisst so viele Prüfungen je Kalendertag. Angemeldete Benutzer werden je Benutzer gezählt, Gäste je IP-Adresse. Wer mehrere Rollen hat, bekommt den grosszügigsten Wert. Administratoren sind nie begrenzt. Bis die Tabelle zum ersten Mal gespeichert ist, gilt für jede Rolle der bisherige einzelne Wert. |
| Maximale Dateigröße ( MB ) | 8 | Die größte angenommene Datei. Es gilt der kleinere Wert aus dieser Einstellung und der Upload-Grenze des Servers. |
| Proxy-Header vertrauen | aus | Verwendet die Kopfzeile X-Forwarded-For als Adresse des Besuchers. Schalten Sie das nur hinter einem vertrauenswürdigen Reverse-Proxy ein. |
| Design-Kit | Kit H | Das Aussehen von Ablagefläche und Bericht. Zur Wahl stehen die beiden mitgelieferten Kits A und H. Die Wahl gilt für alle eInvoice-Werkzeuge auf dieser Website, nicht nur für dieses Plugin. |
Abschnitt „Systemprüfung"
| Element | Standard | Wirkung |
|---|---|---|
| Tabelle der Prüfungen | – | Zeigt je Prüfung einen Haken oder ein Kreuz, bei einem Kreuz mit dem nächsten Schritt. Wird bei jedem Laden der Seite neu gerechnet. |
| Knopf „Validator prüfen" | – | Meldet „Bereit — der Validator lässt sich starten." oder „Nicht bereit:" mit der Liste der offenen Prüfungen. |
Abschnitt „Unversehrtheit der jar"
| Element | Standard | Wirkung |
|---|---|---|
| Übernommen | „noch nichts übernommen" | Die SHA-256-Prüfsumme der Datei, der Sie zugestimmt haben. Sie wird nicht getippt, sondern nur per Knopf übernommen. |
| Auf der Festplatte | – | Die Prüfsumme der Datei, die jetzt am eingestellten Pfad liegt. |
| Knopf „Die Datei auf der Festplatte annehmen" | – | Berechnet die Prüfsumme der vorhandenen Datei und merkt sie. Währenddessen steht „Die Prüfsumme wird gebildet …"; das dauert bei einer großen Datei spürbar. Laden Sie die Seite danach neu. |
| Knopf „Angenommene Prüfsumme vergessen" | – | Löscht die gemerkte Prüfsumme. Danach wird jede Datei am Pfad gestartet. |
Kurzbefehl
| Kurzbefehl | Attribute | Wirkung |
|---|---|---|
[spmv_mustang_validator] | keine | Setzt die Ablagefläche mit Meldungszeile und Berichtsbereich an diese Stelle. |
[spmv_mustang_validator]Der Kurzbefehl kennt keine Attribute. Alles Einstellbare steht auf der Einstellungsseite und gilt für jede Stelle, an der der Kurzbefehl steht.
6 · Besondere Fälle
Die Rechnung nennt eine neuere Fassung als die, die Mustang kennt. Nennt eine Rechnung in BT-24 XRechnung 4.0 oder die Norm EN 16931-1:2026, prüft Mustang sie mit den Regeln der älteren Fassung, die es kennt, und kann sie dabei gültig nennen. Über dem Bericht steht dann ein gelber Hinweis, dass Mustang diese Fassung noch nicht kennt und sein Ergebnis nur für die ältere Fassung gilt. Am Bericht selbst ändert der Hinweis nichts.
Sie wollen den Mustang-Validator auf eine neue Fassung bringen. Legen Sie die neue jar-Datei auf den Server. Hat sie einen anderen Dateinamen, tragen Sie den neuen Pfad ein und speichern Sie. Die Prüfsummen weichen nun voneinander ab und die Prüfung ist gesperrt. Klicken Sie auf „Die Datei auf der Festplatte annehmen", dann läuft sie wieder.
Sie wollen die Prüfung nur einem geschlossenen Kreis anbieten. Setzen Sie den Kurzbefehl auf eine Seite, die Sie mit den Mitteln von WordPress schützen, etwa mit einem Passwort oder als private Seite. Angemeldete Benutzer werden bei der Tagesgrenze je Benutzer gezählt.
Sie wollen intern ohne Tagesgrenze prüfen. Leeren Sie in „Tägliche Uploads je Rolle" die Zeilen der Rollen, die prüfen sollen. Tun Sie das nur auf einer Website, die nicht öffentlich erreichbar ist, denn jede Prüfung startet einen Java-Prozess auf Ihrem Server.
Ihre Website steht hinter einem Reverse-Proxy. Dann sieht WordPress als Adresse der Besucher die des Proxys. Schalten Sie „Proxy-Header vertrauen" ein, damit die Tagesgrenze je Besucher zählt. Lassen Sie den Schalter aus, wenn kein vertrauenswürdiger Proxy davorsteht, denn die Kopfzeile lässt sich sonst vom Besucher selbst setzen.
Der Kurzbefehl steht nicht im Seiteninhalt, sondern in einer Vorlage oder einem Widget. Das Plugin lädt seine Dateien, sobald der Kurzbefehl ausgegeben wird. Wenn Sie die Dateien schon vorher auf bestimmten Seiten laden wollen, gibt es dafür den Filter spmv_force_enqueue (siehe Kapitel 10).
Java wird nicht gefunden, obwohl es installiert ist. Der Webserver läuft unter einem eigenen Benutzer mit eigenem Suchpfad. Tragen Sie unter „java-Programm" den vollständigen Pfad zum Java-Programm ein.
7 · Zusammenspiel mit anderen Paketen
Das Plugin ist eigenständig. Es braucht kein anderes Paket von invoicePress, und die verständliche Berichtsansicht ist eingebaut.
| Paket | Was im Zusammenspiel gilt |
|---|---|
| Mustang-CLI des Mustangproject | Zwingend nötig. Das Plugin startet diese Datei; sie hat ihre eigene Lizenz und ihren eigenen Veröffentlichungsrhythmus. |
| eInvoice Validator for KoSIT | Beide Plugins dürfen auf derselben Website laufen. Jedes führt seine eigene Tagesgrenze; Prüfungen im einen verbrauchen nichts im anderen. |
| Andere eInvoice-Werkzeuge von invoicePress | Die Einstellung „Design-Kit" gilt gemeinsam für alle. Wer sie hier ändert, ändert sie für alle. |
| eInvoice Viewer ab 2.35.0 | Eine im Viewer geöffnete Rechnung bekommt den Knopf Mit Mustang prüfen. Der Bericht erscheint dann im Viewer, und die Prüfung zählt gegen dieselbe Tagesgrenze wie auf der Seite mit dem Kurzbefehl. Auf der Einstellungsseite des Viewers legt „Erweiterungen verfügbar ab Rolle“ fest, wer den Knopf sieht. |
8 · Wenn etwas nicht geht
Die Meldungen stehen hier im deutschen Wortlaut, so wie sie auf einer deutschen Website erscheinen.
| Anzeichen | Ursache | Abhilfe |
|---|---|---|
| Einstellungsseite: „Noch nicht konfiguriert." | Es ist kein Pfad zur jar-Datei eingetragen. | Den vollständigen Pfad zur Mustang-CLI.jar eintragen und speichern. |
| Einstellungsseite: „Unter diesem Pfad liegt keine Datei." | Am Pfad liegt keine Datei, oder der Webserver darf sie nicht lesen. | Schreibweise prüfen; unter Linux zählt Groß- und Kleinschreibung. Leserecht für den Benutzer des Webservers setzen. |
| Systemprüfung zeigt ein rotes Kreuz | Eine Voraussetzung fehlt, zum Beispiel wird Java nicht gefunden. | Den Hinweis unter der Zeile befolgen. Bei Java den vollständigen Pfad unter „java-Programm" eintragen. |
| „Die beiden weichen voneinander ab. Es wird nicht geprüft, bis Sie die Datei auf der Festplatte übernehmen — oder die wieder hinlegen, die Sie übernommen hatten." | Die jar-Datei am Pfad ist nicht mehr die angenommene. | Klären, warum sich die Datei geändert hat. Dann „Die Datei auf der Festplatte annehmen" klicken oder die frühere Datei zurücklegen. |
| Knopf meldet „Am eingestellten Pfad liegt keine lesbare Datei." | Beim Annehmen wurde am Pfad keine lesbare Datei gefunden. | Pfad und Leserecht prüfen. |
| Besucher: „Bitte wählen Sie eine PDF- oder XML-Datei." | Die Datei hat eine andere Endung als .pdf oder .xml. | Eine PDF- oder XML-Datei wählen. |
| Besucher: „Die Datei ist zu groß." | Die Datei übersteigt die eingestellte Größe oder die Upload-Grenze des Servers. | „Maximale Dateigröße ( MB )" erhöhen; wenn das nicht reicht, die Upload-Grenze des Servers. |
| Besucher: „Diese PDF enthält keine E-Rechnung. …" | Das PDF hat keine Rechnung als XML-Anhang, es ist zum Beispiel nur gedruckt oder gescannt. | Ein ZUGFeRD- oder Factur-X-PDF oder die XML-Datei verwenden. |
| Besucher: „Das tägliche Upload-Limit ist erreicht. Bitte morgen erneut versuchen." | Die Tagesgrenze ist erreicht. | Am nächsten Tag erneut prüfen oder in „Tägliche Uploads je Rolle" die Zahl der Rolle erhöhen. |
| „Dieses Werkzeug steht für Ihr Konto nicht zur Verfügung." | Für die Rolle des Besuchers steht in „Tägliche Uploads je Rolle" eine 0. | Als Betreiber für diese Rolle eine Zahl eintragen oder das Feld leeren. |
| Besucher: „Sicherheitsprüfung fehlgeschlagen. Bitte die Seite neu laden." | Das Sicherheitsmerkmal der Anfrage ist abgelaufen oder ungültig. | Die Seite neu laden und die Datei erneut ablegen. |
| Besucher: „Die Datei ist leer." oder „Die Datei konnte nicht gelesen werden." | Die Datei hat keinen Inhalt oder ließ sich auf dem Server nicht lesen. | Die Datei prüfen und erneut ablegen. |
| Besucher: „Bitte wählen Sie eine XML-Datei." | Beim Server kam etwas an, das kein XML ist. | Die Datei prüfen; eine XML-Datei muss wirklich XML enthalten. |
| Besucher: „Der Upload ist fehlgeschlagen. Bitte erneut versuchen." | Die Übertragung ist gescheitert oder der Server hat nicht verwertbar geantwortet. | Erneut versuchen. Bleibt es dabei, die Systemprüfung und das Fehlerprotokoll des Servers ansehen. |
| „Der Validator hat zu lange gebraucht und wurde gestoppt." | Die Prüfung hat die Zeitgrenze überschritten. | Bei einem langsamen Server „Zeitgrenze ( Sekunden )" erhöhen. |
| „Der Validator konnte nicht gestartet werden. Prüfen Sie das Java-Programm und den Pfad des Validators in den Einstellungen." | Java oder die jar-Datei ließ sich nicht starten. | Systemprüfung ansehen; „java-Programm" und „Pfad zu Mustang-CLI.jar" prüfen. |
| „Der Mustang-Validator ist nicht eingerichtet. …" | Es ist kein Pfad eingetragen. | Den Pfad auf der Einstellungsseite eintragen. |
Auf der Seite steht [spmv_mustang_validator] als Text | Das Plugin ist nicht aktiv. | Das Plugin unter „Plugins" aktivieren. |
screenshots/vm-meldung-pdf.de.pngDie Ablagefläche mit der roten Meldung, dass das abgelegte PDF keine E-Rechnung enthält9 · Datenschutz und Sicherheit
Was im Browser bleibt. Ein abgelegtes PDF verlässt den Browser des Besuchers nicht. Das Plugin zieht dort das eingebettete XML heraus, und nur dieses wird gesendet. Der Bericht zum Herunterladen wird im Browser aus der Antwort des Servers erzeugt.
Was an den Server geht. Das XML der Rechnung geht an Ihre eigene WordPress-Website, also an Ihren Server. Bei der lokalen Installation startet das Plugin dort den Mustang-Validator als Java-Programm; was die jar-Datei des Mustangproject ihrerseits tut, liegt außerhalb des Plugins. Beim Prüfdienst schickt das Plugin die Rechnung an die Adresse, die Sie eingetragen haben, und sonst nirgendwohin. Mit Ihrer eigenen Validator Bridge bleibt sie in Ihrem Netz. Mit der eInvoice API einer fremden Website geht sie an deren Betreiber, und es gelten seine Datenschutzerklärung und seine Nutzungsbedingungen.
Was gespeichert wird. Die Rechnung wird für die Prüfung in ein eigenes Arbeitsverzeichnis kopiert, das nach dem Lauf wieder gelöscht wird; der Upload-Ordner von WordPress wird nicht berührt. Rechnung und Bericht werden nicht aufbewahrt. Gespeichert werden die Einstellungen, die gemerkte Prüfsumme der jar-Datei und die Zähler der Tagesgrenze. Für anonyme Besucher wird dabei die IP-Adresse nur als Hashwert verwendet, für angemeldete Benutzer zählt das Benutzerkonto.
Wie das Plugin den Server schützt.
- Der Server nimmt nur XML an und liest kein PDF.
- Jede Prüfung verlangt ein frisches Sicherheitsmerkmal, das die Seite eigens abruft; das funktioniert auch bei zwischengespeicherten Seiten.
- Dateigröße und Tagesgrenze begrenzen, wie oft und womit der Java-Prozess gestartet wird.
- Die Prüfsumme sperrt die Prüfung, sobald die jar-Datei nicht mehr der angenommenen entspricht.
- Die Knöpfe der Einstellungsseite stehen nur angemeldeten Verwaltern offen.
- Der Bericht wird in einem abgeschirmten Bereich der Seite dargestellt.
10 · Für Entwickler
| Art | Name | Bedeutung |
|---|---|---|
| Konstante | SPMV_VERSION | Fassung des Plugins; zugleich Versionsmerkmal an allen Skripten und Stylesheets. |
| Konstante | SPMV_FILE, SPMV_DIR, SPMV_URL | Hauptdatei, Verzeichnis und Adresse des Plugins. |
| Konstante | SPMV_SHORTCODE | Name des Kurzbefehls: spmv_mustang_validator. |
| Filter | spmv_force_enqueue | Erhält true oder false und entscheidet, ob Skripte und Stylesheets schon beim Seitenaufbau geladen werden. Vorgabe: true, wenn der Inhalt einer Einzelseite den Kurzbefehl enthält. |
| REST-Route | POST /wp-json/einvoice/v1/validate-mustang | Nimmt eine XML-Datei im Feld file entgegen; verlangt ein gültiges Sicherheitsmerkmal im Kopffeld X-WP-Nonce, das ein Programm vorher mit einem POST an admin-ajax.php und action=einvoice_nonce abholt. Antwort mit html, view, cssUrl, xml, filename, remaining. Fehler mit message und Status 400, 413, 415, 422 oder 429. |
| AJAX-Aktion | spmv_nonce | Liefert ein frisches Sicherheitsmerkmal für spmv_validate; auch für anonyme Besucher. |
| AJAX-Aktion | spmv_validate | Prüft die Datei im Feld file; auch für anonyme Besucher; Status 403 bei ungültigem Merkmal. |
| AJAX-Aktion | spmv_jar_reload, spmv_jar_forget_pin, spmv_test_connection | Knöpfe der Einstellungsseite; nur mit dem Recht manage_options. |
| JavaScript | window.SPMV_renderReport( container, data ) | Stellt ein Prüfergebnis in einem Element dar; für die Wiederverwendung durch andere Skripte. |
| JavaScript | window.EInvoice.register( 'validator', … ) | Meldet dieselbe Funktion als renderReport in der gemeinsamen Registratur an. |
| Option | spmv_jar_path, spmv_java_bin, spmv_timeout_seconds, spmv_role_limits ( die Tabelle je Rolle; bis zu ihrem ersten Speichern gilt der frühere Einzelwert spmv_daily_limit ), spmv_max_filesize_mb, spmv_trust_proxy, spmv_jar_sha256 | Die Einstellungen in der Datenbank. |
| Klassen | SPMV_Plugin, SPMV_Settings | Ablauf und Einstellungsseite. SPMV_Plugin::adapter() liefert den eingerichteten Anschluss, SPMV_Plugin::ratelimit() die Tagesgrenze. |
Die Ausgabe des Kurzbefehls steht in einem <template> innerhalb von <div class="spmv-host"> und wird vom Skript in einen Shadow Root verschoben. Stylesheets des Themes erreichen sie deshalb nicht. Die Textdomäne heißt einvoice-validator-for-mustang, die Übersetzungen liegen im Ordner languages.
11 · Fassungen
Ein Änderungsverlauf liegt dem Plugin in dieser Fassung nicht bei. Aus dem Quelltext geht Folgendes hervor:
| Fassung | Was dazukam |
|---|---|
| 1.6.1 | Ein Hinweis über dem Bericht sagt, wenn die Rechnung eine Fassung nennt, die Mustang noch nicht kennt, etwa XRechnung 4.0. Bericht und Hinweise sprechen vom „Ergebnis“ einer Prüfung. |
| 1.6.0 | Die Tagesgrenze lässt sich je Rolle einstellen, mit einer eigenen Zeile für Gäste; 0 heißt kein Zugang. Eine im eInvoice Viewer ab 2.35.0 geöffnete Rechnung bekommt den Knopf „Mit Mustang prüfen“. Die Antworten erscheinen in der Sprache der Seite, auch für angemeldete Benutzer mit einer anderen Profilsprache. |
| 1.5.2 | Alle Meldungen des Plugins sind übersetzt. |
| 1.3.0 | Die Einstellung „Design-Kit", gemeinsam für alle eInvoice-Werkzeuge. |
| 1.1.5 | Die Formatnamen PDF und XML sind in der Zeile unter der Ablagefläche hervorgehoben. |
| 1.0.0 | Erste Fassung: Kurzbefehl, Ablagefläche, Prüfung, Bericht, Einstellungsseite mit Systemprüfung und Prüfsumme. |
12 · Bilderliste
Diese Liste zeigt, welche Bildschirmfotos dieses Handbuch erwartet und welche im Ordner screenshots/ des Pakets gefunden wurden. Ein Bild heißt immer Kennung.Sprache.png, zum Beispiel vm-ablage.de.png. Fehlt die deutsche Fassung, zeigt das Handbuch die englische. Auf den Bildern sind nur Beispieldaten zu sehen.
| Stand | Datei | Was zu sehen ist |
|---|---|---|
| – | vm-ablage.de.png | Die Ablagefläche auf einer WordPress-Seite mit der Aufforderung, eine E-Rechnung hineinzuziehen oder eine Datei zu wählen, darunter die Zeile mit den angenommenen Formaten |
| – | vm-systempruefung.de.png | Der Abschnitt „Systemprüfung" der Einstellungsseite mit grünen Haken in allen Zeilen und der Meldung, dass der Validator gestartet werden kann |
| – | vm-shortcode.de.png | Der WordPress-Editor mit einer Seite, die nur den Kurzbefehl in eckigen Klammern enthält |
| – | vm-bericht.de.png | Die Seite nach einer Prüfung: oben die Ablagefläche, darunter der Prüfbericht mit Befunden in verständlicher Sprache und dem Knopf zum Herunterladen |
| – | vm-download.de.png | Der Kopf des Berichts mit der Beschriftung „Validation report" und dem Knopf „Download report.xml" |
| – | vm-jar-integritaet.de.png | Der Abschnitt „Unversehrtheit der jar" mit den beiden Prüfsummen „Übernommen" und „Auf der Festplatte" und den zwei Knöpfen darunter |
| – | vm-einstellungen.de.png | Die Einstellungsseite mit dem Abschnitt „Mustang-Validator": Pfad zur jar-Datei, Java-Programm, Zeitgrenze, Tagesgrenze, Dateigröße, Proxy-Kopfzeile und Design-Kit |
| – | vm-meldung-pdf.de.png | Die Ablagefläche mit der roten Meldung, dass das abgelegte PDF keine E-Rechnung enthält |