USt-IdNr. Validierung
Mit der VatValidator Klasse können Umsatzsteuer-Identifikationsnummer validiert und formatiert werden. Neben der 'einfachen' Validierung über Regex-Patterns, steht auch eine Validierung über den Online Webservice der Europäischen Kommission MwSt-Informationsaustauschsystem (MIAS) und der Bundeszentralamt für Steuern zur Verfügung.
Die Online-Validierungen rufen einen 3rd-Party-Webservice auf. Im Prozess muss daher unbedingt sichergestellt werden, dass bei Nichterreichbarkeit der Services der Prozess den Endanwender nicht blockiert (beispielsweise über verschiedene Status in der Mappe).
context.enableModules();
const { VatValidator } = require("ou.sp.validation.VatValidator");
const isValid = VatValidator.isValidByPattern("de-306219982");
// isValid = true
Statische Funktionen
isValidByPattern : boolean
Über diese Funktion wird eine USt-IdNr. validiert. Die Validierung erfolgt dabei lokal über ein Standardsatz an Regulären Ausdrücken. Es werden keine HTTP-Request abgesetzt.
VatValidator.isValidByPattern(vat: string): boolean;
Beispiel:
// returns true
VatValidator.isValidByPattern("de-306219982");
VatValidator.isValidByPattern("DE-306219982");
// returns false
VatValidator.isValidByPattern("DEU-306219982");
Diese Funktion wird keine Exception werfen, wenn z. B. das Land nicht erkannt wird.
isValidByUsingEUService : boolean
Bei dieser Funktion wird die USt-IdNr. über den EU-Webservice (MIAS) validiert.
Dies ist eine asynchrone Funktion, welche einen 3rd-Party-Webservice verwendet. Im Prozess muss unbedingt sichergestellt werden, dass bei Nichterreichbarkeit des Services der Prozess den Endanwender nicht blockiert (beispielsweise über verschiedene Status in der Mappe).
VatValidator.isValidByUsingEUService(vat: string): boolean;
Beispiel:
// returns true
VatValidator.isValidByUsingEUService("de-306219982", true);
VatValidator.isValidByUsingEUService("DE-306219982", true);
// returns false
VatValidator.isValidByUsingEUService("DEU-306219982", true);
Diese Funktion wird keine Exception werfen, wenn z. B. der Service nicht erreichbar ist!
isValidByUsingBzStService : boolean
Bei dieser Funktion wird die USt-IdNr. über den Webservice des Bundeszentralamts für Steuern validiert.
Dies ist eine asynchrone Funktion, welche einen 3rd-Party-Webservice verwendet. Im Prozess muss unbedingt sichergestellt werden, dass bei Nichterreichbarkeit des Services der Prozess den Endanwender nicht blockiert (beispielsweise über verschiedene Status in der Mappe).
public static isValidByUsingEUService(ownerVat: string, companyVat: string): boolean;
VatValidator.isValidByUsingEUService(
ownerVat: string,
companyVat: string,
companyName: string,
companyCity: string,
companyZipCode?: string,
companyStreet?: string
): boolean;
Beispiel:
// returns true
VatValidator.isValidByUsingBzStService("DE306219982", "NL809075349B01");
VatValidator.isValidByUsingBzStService("DE306219982", "NL809075349B01", "WILDLANDS Adventure Zoo Emmen B.V", "Emmen", "Raadhuisplein 99");
Diese Funktion wird keine Exception werfen, wenn z. B. der Service nicht erreichbar ist!
validateByPattern : boolean
Über diese Funktion wird eine USt-IdNr. validiert. Die Validierung erfolgt dabei lokal über ein Standardsatz an Regulären Ausdrücken. Es werden keine HTTP-Request abgesetzt.
Der Unterschied zur isValidByPattern Funktion ist, dass diese Funktion eine Exception wirft.
VatValidator.validateByPattern(vat: string): boolean;
Beispiel einfache Validierung einer USt-IdNr. über Regex-Patterns.
try {
VatValidator.validateByPattern("DEU-306219982");
} catch (error) {
// error.message = "No country found for DEU-306219982"
}
validateByUsingEUService : boolean
Über diese Funktion wird eine USt-IdNr. über den EU-Webservice MIAS validiert.
Dies ist eine asynchrone Funktion, welche einen 3rd-Party-Webservice verwendet. Im Prozess muss unbedingt sichergestellt werden, dass bei Nichterreichbarkeit des Services der Prozess den Endanwender nicht blockiert (beispielsweise über verschiedene Status in der Mappe).
Der Unterschied zur isValidByUsingEUService Funktion ist, dass diese Funktion eine Exception wirft.
VatValidator.validateByUsingEUService(vat: string): boolean;
Beispiel:
try {
VatValidator.validateByUsingEUService("DEU-306219982");
} catch (error) {
// error.message = "No country found for DEU-306219982"
}
Beispiel Fehler einer USt-IdNr. über den Webservice (MIAS), wenn z. B. zu viele Requests geschickt wurden 😆.
try {
VatValidator.validateByUsingEUService("DEU-306219982", true);
} catch (error) {
// error.message = "Failed to check online vat, error: Service error: MS_MAX_CONCURRENT_REQ"
}
validateByUsingBzStService : boolean
Über diese Funktion wird eine USt-IdNr. über den Webservice des Bundeszentralamts für Steuern validiert.
Dies ist eine asynchrone Funktion, welche einen 3rd-Party-Webservice verwendet. Im Prozess muss unbedingt sichergestellt werden, dass bei Nichterreichbarkeit des Services der Prozess den Endanwender nicht blockiert (beispielsweise über verschiedene Stati in der Mappe).
Der Unterschied zur isValidByUsingBzStService Funktion ist, dass diese Funktion eine Exception wirft.
validateByUsingBzStService(ownerVat: string, companyVat: string): BzStServiceResponse;
validateByUsingBzStService(
ownerVat: string,
companyVat: string,
companyName: string,
companyCity: string,
companyZipCode?: string,
companyStreet?: string
): BzStServiceResponse;
Beispiel:
try {
VatValidator.validateByUsingBzStService("DE306219982", "NL809075349B01");
} catch (error) {
// error.message = "Eine Bearbeitung Ihrer Anfrage ist zurzeit nicht möglich. Bitte versuchen Sie es später noch einmal. (999)"
}
try {
VatValidator.validateByUsingBzStService("DE306219982", "NL809075349B01", "WILDLANDS Adventure Zoo Emmen B.V", "Emmen", "Raadhuisplein 99");
} catch (error) {
// error.message = "Eine Bearbeitung Ihrer Anfrage ist zurzeit nicht möglich. Bitte versuchen Sie es später noch einmal. (999)"
}
format : string
Formatiert eine USt-IdNr. in ein Standard Format.
Die USt-IdNr. wird dabei nicht validiert!
VatValidator.format(vat?: string): string | null;
const formatted = VatValidator.format("de-306219982");
// formatted = "DE306219982"