Platforms to show: All Mac Windows Linux Cross-Platform

/Main/VAT ID Check/VAT ID Check


Required plugins for this example:

You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Main/VAT ID Check/VAT ID Check

This example is the version from Wed, 8th Oct 2019.

Project "VAT ID Check.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Löschen"
Const kFileQuit = "Beenden"
Const kFileQuitShortcut = ""
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&Ablage"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Bearbeiten"
MenuItem EditUndo = "&Rückgängig"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "&Ausschneiden"
MenuItem EditCopy = "&Kopieren"
MenuItem EditPaste = "&Einfügen"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "&Alles auswählen"
End MenuBar
Class VATWindow Inherits Window
Control VAT1 Inherits TextField
ControlInstance VAT1 Inherits TextField
End Control
Control Label1 Inherits Label
ControlInstance Label1 Inherits Label
End Control
Control VAT2 Inherits TextField
ControlInstance VAT2 Inherits TextField
End Control
Control Label2 Inherits Label
ControlInstance Label2 Inherits Label
End Control
Control Company Inherits TextField
ControlInstance Company Inherits TextField
End Control
Control Label3 Inherits Label
ControlInstance Label3 Inherits Label
End Control
Control City Inherits TextField
ControlInstance City Inherits TextField
End Control
Control Label4 Inherits Label
ControlInstance Label4 Inherits Label
End Control
Control Zip Inherits TextField
ControlInstance Zip Inherits TextField
End Control
Control Label5 Inherits Label
ControlInstance Label5 Inherits Label
End Control
Control Street Inherits TextField
ControlInstance Street Inherits TextField
End Control
Control Label6 Inherits Label
ControlInstance Label6 Inherits Label
End Control
Control QueryButton Inherits PushButton
ControlInstance QueryButton Inherits PushButton
EventHandler Sub Action() List.DeleteAllRows dim v1 as string = ConvertEncoding(vat1.Text, encodings.UTF8) dim v2 as string = ConvertEncoding(vat2.Text, encodings.UTF8) dim co as string = ConvertEncoding(Company.Text, encodings.UTF8) dim ci as string = ConvertEncoding(city.Text, encodings.UTF8) dim zi as string = ConvertEncoding(Zip.Text, encodings.UTF8) dim st as string = ConvertEncoding(Street.Text, encodings.UTF8) v1 = EncodeURLComponent(v1) v2 = EncodeURLComponent(v2) co = EncodeURLComponent(co) ci = EncodeURLComponent(ci) zi = EncodeURLComponent(zi) st = EncodeURLComponent(st) Dim sock As New HTTPSecureSocket sock.ConnectionType = sock.TLSv12 // synchronously queries web service dim url as string = "https://evatr.bff-online.de/evatrRPC?UstId_1="+v1+"&UstId_2="+v2+"&Firmenname="+co+"&Ort="+ci+"&PLZ="+zi+"&Strasse="+st+"&Druck=" dim data as string = sock.get(url, 90) #if DebugBuild then // write to text file for debugging try Dim f As FolderItem = SpecialFolder.Desktop.child("vat.txt") Dim t As TextOutputStream = TextOutputStream.Create(f) t.Write data catch io as IOException Break end try #endif // now parse XML dim doc as new XmlDocument(Data) dim params as XmlNode = doc.FirstChild dim param as XmlNode = params.FirstChild while param <> nil dim pvalue as XmlNode = param.FirstChild if pvalue<>Nil then dim parray as XmlNode = pvalue.FirstChild if parray<>Nil then dim pdata as XmlNode = parray.FirstChild if pdata<>nil then // XML is mostly a key/value list. dim pvalue1 as XmlNode = pdata.Child(0) dim pvalue2 as XmlNode = pdata.Child(1) if pvalue1 = nil then Return if pvalue2 = nil then Return dim string1 as xmlnode = pvalue1.FirstChild dim string2 as xmlnode = pvalue2.FirstChild dim text1 as xmlnode = string1.FirstChild dim text2 as xmlnode = string2.FirstChild dim s1, s2 as string if text1<>Nil then s1 = text1.Value if text2<>Nil then s2 = text2.Value Select case s1 case "Erg_Name", "Erg_Ort", "Erg_PLZ", "Erg_Str" select case s2 case "A" s2 = "OK" case "B" s2 = "Falsch!" // wrong case "C" s2 = "nicht abgefragt" // not queried case "D" s2 = "nicht verfügbar" // not available end Select end Select List.AddRow s1, s2 if s1 = "ErrorCode" then result.text = ErrorDescription(val(s2)) end if end if end if end if param = param.NextSibling wend Exception x as XmlException // ignore xml parse errors End EventHandler
End Control
Control List Inherits Listbox
ControlInstance List Inherits Listbox
End Control
Control Result Inherits Label
ControlInstance Result Inherits Label
End Control
Function FileClose() As Boolean close Return True End Function
Function ErrorDescription(n as integer) As string select case n case 200 return "Die angefragte USt-IdNr. ist gültig." case 201 return "Die angefragte USt-IdNr. ist ungültig." case 202 return "Die angefragte USt-IdNr. ist ungültig. Sie ist nicht in der Unternehmerdatei des betreffenden EU-Mitgliedstaates registriert. Hinweis: Ihr Geschäftspartner kann seine gültige USt-IdNr. bei der für ihn zuständigen Finanzbehörde in Erfahrung bringen. Möglicherweise muss er einen Antrag stellen, damit seine USt-IdNr. in die Datenbank aufgenommen wird." case 203 return "Die angefragte USt-IdNr. ist ungültig. Sie ist erst ab dem ... gültig (siehe Feld 'Gueltig_ab')." case 204 return "Die angefragte USt-IdNr. ist ungültig. Sie war im Zeitraum von ... bis ... gültig (siehe Feld 'Gueltig_ab' und 'Gueltig_bis')." case 205 return "Ihre Anfrage kann derzeit durch den angefragten EU-Mitgliedstaat oder aus anderen Gründen nicht beantwortet werden. Bitte versuchen Sie es später noch einmal. Bei wiederholten Problemen wenden Sie sich bitte an das Bundeszentralamt für Steuern - Dienstsitz Saarlouis." case 206 return "Ihre deutsche USt-IdNr. ist ungültig. Eine Bestätigungsanfrage ist daher nicht möglich. Den Grund hierfür können Sie beim Bundeszentralamt für Steuern - Dienstsitz Saarlouis - erfragen." case 207 return "Ihnen wurde die deutsche USt-IdNr. ausschliesslich zu Zwecken der Besteuerung des innergemeinschaftlichen Erwerbs erteilt. Sie sind somit nicht berechtigt, Bestätigungsanfragen zu stellen." case 208 return "Für die von Ihnen angefragte USt-IdNr. läuft gerade eine Anfrage von einem anderen Nutzer. Eine Bearbeitung ist daher nicht möglich. Bitte versuchen Sie es später noch einmal." case 209 return "Die angefragte USt-IdNr. ist ungültig. Sie entspricht nicht dem Aufbau der für diesen EU-Mitgliedstaat gilt. ( Aufbau der USt-IdNr. aller EU-Länder)" case 210 return "Die angefragte USt-IdNr. ist ungültig. Sie entspricht nicht den Prüfziffernregeln die für diesen EU-Mitgliedstaat gelten." case 211 return "Die angefragte USt-IdNr. ist ungültig. Sie enthält unzulässige Zeichen." case 212 return "Die angefragte USt-IdNr. ist ungültig. Sie enthält ein unzulässiges Länderkennzeichen." case 213 return "Die Abfrage einer deutschen USt-IdNr. ist nicht möglich." case 214 return "Ihre deutsche USt-IdNr. ist fehlerhaft. Sie beginnt mit 'DE' gefolgt von 9 Ziffern." case 215 return "Ihre Anfrage enthält nicht alle notwendigen Angaben für eine einfache Bestätigungsanfrage (Ihre deutsche USt-IdNr. und die ausl. USt-IdNr.). Ihre Anfrage kann deshalb nicht bearbeitet werden." case 216 return "Ihre Anfrage enthält nicht alle notwendigen Angaben für eine qualifizierte Bestätigungsanfrage (Ihre deutsche USt-IdNr., die ausl. USt-IdNr., Firmenname einschl. Rechtsform und Ort). Es wurde eine einfache Bestätigungsanfrage durchgeführt mit folgenden Ergebnis: Die angefragte USt-IdNr. ist gültig." case 217 return "Bei der Verarbeitung der Daten aus dem angefragten EU-Mitgliedstaat ist ein Fehler aufgetreten. Ihre Anfrage kann deshalb nicht bearbeitet werden." case 218 return "Eine qualifizierte Bestätigung ist zur Zeit nicht möglich. Es wurde eine einfache Bestätigungsanfrage mit folgendem Ergebnis durchgeführt: Die angefragte USt-IdNr. ist gültig." case 219 return "Bei der Durchführung der qualifizierten Bestätigungsanfrage ist ein Fehler aufgetreten. Es wurde eine einfache Bestätigungsanfrage mit folgendem Ergebnis durchgeführt: Die angefragte USt-IdNr. ist gültig." case 220 return "Bei der Anforderung der amtlichen Bestätigungsmitteilung ist ein Fehler aufgetreten. Sie werden kein Schreiben erhalten." case 999 return "Eine Bearbeitung Ihrer Anfrage ist zurzeit nicht möglich. Bitte versuchen Sie es später noch einmal." end Select End Function
Function FindFile(name as string) As FolderItem // Look for file in parent folders from executable on dim parent as FolderItem = app.ExecutableFile.Parent while parent<>Nil dim file as FolderItem = parent.Child(name) if file<>Nil and file.Exists then Return file end if parent = parent.Parent wend End Function
Note "Note"
This uses a webservice from German Finance Department So you can query IDs from other EU countries from Germany
End Class
End Project

See also:

The items on this page are in the following plugins: MBS Main Plugin.


The biggest plugin in space...