19. Dezember 2024XML verarbeiten mittels "deserialize from Xml" Action
FSBs überprüfen - programmatisch und automatisch
- Startseite
- /iTWO Insights
- /FSBs überprüfen - programmatisch und automatisch
In diesem Artikel zeige ich, wie die Gültigkeit von Freistellungsbeschreibungen (FSBs) mithilfe der EIBE-Schnittstelle des Bundeszentralamts für Steuern (BZSt) überprüft werden kann.
Aufruf der EIBE-Schnittstelle
Die EIBE-Schnittstelle wird über eine URL aufgerufen, die die notwendigen Parameter enthält. Ein Beispiel für eine solche URL lautet:
eibe.bff-online.de/eibe/eibeRPC?user=Benutzername&key=Passwort&stnr=123/4567/8910&sinr=12345678&land=50
In dieser URL müssen die Platzhalter Benutzername
, Passwort
, stnr
(Steuernummer), sinr
(Steuer-Identifikationsnummer) und land
(Ländercode) durch die entsprechenden Werte ersetzt werden.
Fehlerhafte Datensätze
Ein fehlerhafter Datensatz kann beispielsweise so aussehen:
<params>
<param>
<value>
<struct>
<member>
<name>fehler_code</name>
<value>
<string>Ihre Benutzerkennung ist gesperrt. Bitte kontaktieren Sie das BZSt, um Ihr Konto wieder freizuschalten.</string>
</value>
</member>
</struct>
</value>
</param>
</params>
In diesem Fall enthält der Datensatz einen Fehlercode, der darauf hinweist, dass die Benutzerkennung gesperrt ist.
Erfolgreicher Login und Verarbeitung der Daten
Ein erfolgreicher Login erzeugt einen XML-String, der ein struct
-Element enthält. Mithilfe der "Deserialize from XML"-Aktion in iTWO 4.0 kann dieser XML-String in ein JavaScript-Objekt konvertiert werden. Das resultierende Objekt enthält den entsprechenden Schlüssel struct
.
Überprüfung der Gültigkeit der FSB
Die Gültigkeit der FSB kann anhand der folgenden Logik überprüft werden:
if ('struct' in Context.eibeXml) {
// Überprüfen, ob der Datensatz gefunden wurde
Context.fsbAvailable = Context.eibeXml.params.param[1].value.array.data.value[1].string === 'Datensatz gefunden.';
// Ablaufdatum des Datensatzes in ein lesbares Datum umwandeln
Context.fsbExpirationDate = new Date(Context.eibeXml.params.param[6].value.array.data.value[1].string).toLocaleDateString();
// Ablaufdatum in ein numerisches Format umwandeln (YYYYMMDD)
Context.fsbExpirationComputeDate = Number(new Date(Context.eibeXml.params.param[6].value.array.data.value[1].string).toISOString().substring(0, 10).replaceAll('-',''));
// Aktuelles Datum in ein numerisches Format umwandeln (YYYYMMDD)
Context.nowDate = Number(new Date().toISOString().substring(0, 10).replaceAll('-',''));
// Überprüfen, ob das Ablaufdatum in der Zukunft liegt
Context.fsbValid = Context.fsbExpirationComputeDate > Context.nowDate;
// Context.endWf = false, wenn der Datensatz gültig ist. Der Status wird per "Status Wechseln" Action aus "abgelaufen" gesetzt
Context.endWf = Context.fsbValid;
} else {
// Workflow ohne Statuswechsel beenden, wenn keine Struktur gefunden wurde
Context.endWf = true;
}
Erklärung der Logik
Prüfung auf
struct
:Zuerst wird überprüft, ob das
struct
-Element im XML-Objekt vorhanden ist.
Verfügbarkeit der FSB:
Die Verfügbarkeit der FSB wird anhand des Werts im XML-Objekt überprüft. Wenn der Wert
Datensatz gefunden.
lautet, ist die FSB verfügbar.
Ablaufdatum der FSB:
Das Ablaufdatum der FSB wird aus dem XML-Objekt extrahiert und in ein lesbares Datumsformat konvertiert.
Berechnung des Ablaufdatums:
Das Ablaufdatum wird in eine numerische Form umgewandelt, um es mit dem aktuellen Datum zu vergleichen.
Gültigkeitsprüfung:
Die Gültigkeit der FSB wird überprüft, indem das Ablaufdatum mit dem aktuellen Datum verglichen wird. Wenn das Ablaufdatum in der Zukunft liegt, ist die FSB gültig.
Workflow-Ende:
Der Workflow wird basierend auf der Gültigkeit der FSB beendet.
Zusammenfassung
Die EIBE-Schnittstelle des BZSt bietet eine effiziente Möglichkeit, die Gültigkeit von Freistellungsbeschreibungen zu überprüfen. Die XML Response kann in ITWO 4.0 per "XML From XML" zu einem JS Objekt konvertiert werden. Durch die Implementierung der oben beschriebenen Logik in iTWO 4.0 kann sichergestellt werden, dass nur gültige FSBs verwendet werden und abgelaufene FSBs entsprechend gekennzeichnet werden.