438 lines
20 KiB
VB.net
438 lines
20 KiB
VB.net
Imports SDL.at.gv.bmf.finanzonlineLogin
|
|
|
|
|
|
' Aufruf des Webservice von FinanzOnline zur prüfung der UID-Nummer
|
|
' Aufgrund von verzögerten Bestätigungen wurd diese Funktion deaktiviert!!!
|
|
|
|
Public Class cFinanzOnlineWebService
|
|
' Private tid As String = My.Resources.tid
|
|
' Private benid As String = My.Resources.benid
|
|
' Private pin As String = My.Resources.pin
|
|
|
|
' 'VERAG:
|
|
'Shared tid As String = "1000103u3032"
|
|
'Shared benid As String = "webserv99"
|
|
'Shared pin As String = "webserv99"
|
|
'Shared uid As String = "ATU53187000"
|
|
|
|
' 'VERAG CS:
|
|
'Shared tid As String = "19379933"
|
|
'Shared benid As String = "WEBserv99"
|
|
'Shared pin As String = "WEBserv99"
|
|
'Shared uid As String = "XXXX"
|
|
|
|
|
|
''FRONT-Office:
|
|
'Shared tid As String = "67493371k039"
|
|
'Shared benid As String = "WEBserv99"
|
|
'Shared pin As String = "WEBserv99"
|
|
'Shared uid As String = "ATU74813856"
|
|
|
|
|
|
'IMEX:
|
|
Shared tid As String = "19435107n654"
|
|
Shared benid As String = "WEBserv99"
|
|
Shared pin As String = "WEBserv99"
|
|
Shared uid As String = "ATU68490714"
|
|
|
|
|
|
Public SESSION_ID As String = ""
|
|
|
|
Sub initValues()
|
|
|
|
Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
|
|
Case "IMEX"
|
|
tid = "19435107n654"
|
|
benid = "WEBserv99"
|
|
pin = "WEBserv99"
|
|
uid = "ATU68490714"
|
|
Case "FRONTOFFICE"
|
|
tid = "67493371k039"
|
|
benid = "WEBserv99"
|
|
pin = "WEBserv99"
|
|
uid = "ATU74813856"
|
|
Case "UNISPED"
|
|
tid = "18778752z632"
|
|
benid = "Webmaster1"
|
|
pin = "Webmaster1"
|
|
uid = "ATU67001200"
|
|
Case Else 'VERAG:
|
|
tid = "13390891m005"
|
|
benid = "WEBserv99"
|
|
pin = "WEBserv99"
|
|
uid = "ATU53187000"
|
|
'tid = "1000103u3032"
|
|
'benid = "webserv99"
|
|
'pin = "webserv99"
|
|
'uid = "ATU53187000"
|
|
End Select
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
Function Call_Web_Service_MethodUID_Login_NEU2020() As Integer
|
|
Dim CallWebService As New VERAG_PROG_ALLGEMEIN.at.gv.bmf.finanzonline.session.sessionService
|
|
Try
|
|
Dim rc As Integer = -1
|
|
Dim msg = ""
|
|
|
|
SESSION_ID = CallWebService.login(tid, benid, pin, uid, rc, msg)
|
|
|
|
Return rc
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message & ex.StackTrace)
|
|
End Try
|
|
Return -99
|
|
End Function
|
|
|
|
|
|
|
|
|
|
Function Call_Web_Service_MethodUID_Abfrage_NEU2020(ba_KundenNr, Optional AskIfDouble = False, Optional SaveErgInAdressen = True, Optional showErr = True, Optional Stufe = 1, Optional ByRef errorCode = 0, Optional ByRef errorMsg = "") As VERAG_PROG_ALLGEMEIN.cUIDPruefung
|
|
Dim AD As New cAdressen(ba_KundenNr)
|
|
Dim multiUID = False
|
|
If AD IsNot Nothing Then
|
|
|
|
If AD.UstIdKz IsNot Nothing AndAlso AD.UstIdNr IsNot Nothing Then
|
|
|
|
Try
|
|
If AskIfDouble Then
|
|
If IsDate(AD.UstIdGeprüft) AndAlso CDate(AD.UstIdGeprüft).ToShortDateString = Now.ToShortDateString Then
|
|
If vbYes <> MsgBox("Die UID-Nummer wurde heute bereits geprüft. Soll die Prüfung nochmal durchgeführt werden?", vbYesNoCancel) Then
|
|
Return Nothing
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
Dim tmp_SESSION_ID = SESSION_ID
|
|
Dim CallWebService As New VERAG_PROG_ALLGEMEIN.at.gv.bmf.finanzonline.uidAbfrageService
|
|
|
|
Dim msg As String = ""
|
|
Dim name As String = ""
|
|
Dim adrz1 As String = ""
|
|
Dim adrz2 As String = ""
|
|
Dim adrz3 As String = ""
|
|
Dim adrz4 As String = ""
|
|
Dim adrz5 As String = ""
|
|
Dim adrz6 As String = ""
|
|
Dim countryCode As String = AD.UstIdKz
|
|
Dim vatNumber As String = AD.UstIdNr
|
|
|
|
Dim StufeAbf = VERAG_PROG_ALLGEMEIN.at.gv.bmf.finanzonline.uidAbfrageServiceRequestStufe.Item1
|
|
Select Case Stufe
|
|
Case 1
|
|
StufeAbf = VERAG_PROG_ALLGEMEIN.at.gv.bmf.finanzonline.uidAbfrageServiceRequestStufe.Item1
|
|
Case 2
|
|
StufeAbf = VERAG_PROG_ALLGEMEIN.at.gv.bmf.finanzonline.uidAbfrageServiceRequestStufe.Item2
|
|
End Select
|
|
|
|
Dim returnInt As Integer
|
|
Try
|
|
|
|
returnInt = CallWebService.uidAbfrage(tid, benid, SESSION_ID, uid, countryCode & vatNumber, StufeAbf, msg, name, adrz1, adrz2, adrz3, adrz4, adrz5, adrz6)
|
|
If msg <> "" Then errorMsg = " " & msg
|
|
errorCode = returnInt
|
|
Catch ex As Exception
|
|
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, "Fehler im externen Webservice " & System.Reflection.MethodInfo.GetCurrentMethod.Name & vbNewLine & " Daten: TID: " & tid & vbNewLine & " BENID: " & benid & vbNewLine & " SessionID: " & SESSION_ID & vbNewLine & " UID: " & uid & vbNewLine & " COUNTRY-CODE/VAT: " & countryCode & vatNumber & vbNewLine & " Stufe: " & StufeAbf & vbNewLine & " MSG: " & msg & vbNewLine & " Name: " & name & vbNewLine & " Adr1: " & adrz1 & vbNewLine & " Adr2: " & adrz2 & vbNewLine & " Adr3: " & adrz3 & vbNewLine & " Adr4: " & adrz4 & vbNewLine & " Adr5: " & adrz5 & vbNewLine & " Adr6: " & adrz6, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
|
|
|
|
If ex.Message.Contains("Wegen Wartungsarbeiten") AndAlso ex.Message.Contains("Verf??gung") Then
|
|
Dim startIndex As Integer = ex.Message.IndexOf("Wegen Wartungsarbeiten")
|
|
Dim endIndex As Integer = ex.Message.IndexOf("Verf??gung", startIndex)
|
|
Dim messageError As String = ex.Message.Substring(startIndex, endIndex - startIndex + "Verf??gung".Length)
|
|
If messageError <> "" Then errorMsg = messageError
|
|
errorCode = -99
|
|
|
|
End If
|
|
|
|
Exit Function
|
|
End Try
|
|
|
|
If returnInt = 0 Or returnInt = 1 Then
|
|
|
|
If Stufe = 1 AndAlso returnInt = 0 Then multiUID = AD.getUIDMehrfachverwendung() 'nur bei Stufe 1 und bei gültigen Prüfungen!!!
|
|
|
|
Dim UID_TMP As New VERAG_PROG_ALLGEMEIN.cUIDPruefung
|
|
|
|
UID_TMP.uid_Datum = Now
|
|
UID_TMP.uid_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
|
|
If If(UID_TMP.uid_Sachbearbeiter, "") = "" Then UID_TMP.uid_Sachbearbeiter = "AUTO"
|
|
UID_TMP.uid_MaId = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID
|
|
UID_TMP.uid_valid = (returnInt = 0)
|
|
UID_TMP.uid_KundenNr = ba_KundenNr
|
|
|
|
UID_TMP.uid_UstIdKz = countryCode
|
|
UID_TMP.uid_UstIdNr = vatNumber
|
|
|
|
UID_TMP.Firma = If(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA, "VERAG")
|
|
UID_TMP.uid_abfrageUid = uid
|
|
UID_TMP.uid_sessionId = tmp_SESSION_ID
|
|
|
|
UID_TMP.uid_firma = name
|
|
UID_TMP.uid_adr1 = adrz1
|
|
UID_TMP.uid_adr2 = adrz2
|
|
UID_TMP.uid_adr3 = adrz3
|
|
UID_TMP.uid_adr4 = adrz4
|
|
UID_TMP.uid_adr5 = adrz5
|
|
UID_TMP.uid_adr6 = adrz6
|
|
|
|
UID_TMP.uid_stufe = Stufe
|
|
|
|
UID_TMP.uid_pruefungstool = "FINANZONLINE"
|
|
|
|
UID_TMP.SAVE()
|
|
|
|
If multiUID Then
|
|
Dim dt_multiUID As DataTable = AD.getDTUIDMehrfachverwendung(AD.AdressenNr)
|
|
If dt_multiUID.Rows.Count > 0 Then
|
|
For Each adresse As DataRow In dt_multiUID.Rows
|
|
|
|
Dim UID_TMP_new As New VERAG_PROG_ALLGEMEIN.cUIDPruefung
|
|
Dim AD_new As New cAdressen(adresse.Item("KundenNr"))
|
|
|
|
UID_TMP_new.uid_Datum = Now
|
|
UID_TMP_new.uid_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
|
|
If If(UID_TMP_new.uid_Sachbearbeiter, "") = "" Then UID_TMP_new.uid_Sachbearbeiter = "AUTO"
|
|
UID_TMP_new.uid_MaId = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID
|
|
UID_TMP_new.uid_valid = (returnInt = 0)
|
|
UID_TMP_new.uid_KundenNr = AD_new.AdressenNr
|
|
|
|
|
|
UID_TMP_new.uid_UstIdKz = countryCode
|
|
UID_TMP_new.uid_UstIdNr = vatNumber
|
|
|
|
UID_TMP_new.Firma = If(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA, "VERAG")
|
|
UID_TMP_new.uid_abfrageUid = uid
|
|
UID_TMP_new.uid_sessionId = tmp_SESSION_ID
|
|
|
|
UID_TMP_new.uid_firma = name
|
|
UID_TMP_new.uid_adr1 = adrz1
|
|
UID_TMP_new.uid_adr2 = adrz2
|
|
UID_TMP_new.uid_adr3 = adrz3
|
|
UID_TMP_new.uid_adr4 = adrz4
|
|
UID_TMP_new.uid_adr5 = adrz5
|
|
UID_TMP_new.uid_adr6 = adrz6
|
|
|
|
UID_TMP_new.uid_stufe = Stufe
|
|
UID_TMP.uid_pruefungstool = "FINANZONLINE"
|
|
UID_TMP_new.SAVE()
|
|
|
|
If (UID_TMP.uid_valid) Then 'OK
|
|
If SaveErgInAdressen Then
|
|
|
|
AD_new.UpdateSpecialField("UstIdGeprüft", Now.ToShortDateString)
|
|
'AD_new.UstIdGeprüft = Now.ToShortDateString
|
|
'AD_new.SAVE()
|
|
End If
|
|
End If
|
|
|
|
Next
|
|
|
|
End If
|
|
|
|
End If
|
|
|
|
If (returnInt = 0) Then 'OK
|
|
If SaveErgInAdressen Then
|
|
|
|
AD.UpdateSpecialField("UstIdGeprüft", Now.ToShortDateString)
|
|
'AD.UstIdGeprüft = Now.ToShortDateString
|
|
'AD.SAVE()
|
|
|
|
End If
|
|
|
|
End If
|
|
Return UID_TMP
|
|
Else
|
|
If showErr Then MsgBox(GetCodeText(returnInt))
|
|
End If
|
|
Catch ex As Exception
|
|
If showErr Then MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
|
|
' Call_Web_Service_MethodUID_Logout_NEU2020()
|
|
End Try
|
|
End If
|
|
End If
|
|
|
|
|
|
|
|
'If returnInt = 0 Then
|
|
' Firma = name & vbNewLine & adrz1
|
|
' If adrz2 <> "" Then Firma = Firma & vbNewLine & adrz2
|
|
' If adrz3 <> "" Then Firma = Firma & vbNewLine & adrz3
|
|
' If adrz4 <> "" Then Firma = Firma & vbNewLine & adrz4
|
|
' If adrz5 <> "" Then Firma = Firma & vbNewLine & adrz5
|
|
' If adrz6 <> "" Then Firma = Firma & vbNewLine & adrz6
|
|
|
|
' ' frmUIDCheck.firmaUIDFinanzOnline = firma
|
|
' ' frmUIDCheck.firmaUIDProgramm = txtFirma
|
|
' ' frmUIDCheck.uidnr = txtUid
|
|
' ' frmUIDCheck.Show()
|
|
|
|
|
|
'Else
|
|
' MsgBox(GetCodeText(returnInt))
|
|
'End If
|
|
' msgErgebnis = msg
|
|
' Call_Web_Service_MethodUID_Logout_NEU2020()
|
|
|
|
|
|
Return Nothing
|
|
End Function
|
|
|
|
Function Call_Web_Service_MethodUID_Abfrage_WO_KDNR(UID_Nr, Optional showErr = True, Optional Stufe = 1, Optional ByRef errorCode = 0) As VERAG_PROG_ALLGEMEIN.cUIDPruefung
|
|
|
|
Try
|
|
If UID_Nr.Length > 6 Then
|
|
|
|
|
|
Dim tmp_SESSION_ID = SESSION_ID
|
|
Dim CallWebService As New VERAG_PROG_ALLGEMEIN.at.gv.bmf.finanzonline.uidAbfrageService
|
|
|
|
Dim msg As String = ""
|
|
Dim name As String = ""
|
|
Dim adrz1 As String = ""
|
|
Dim adrz2 As String = ""
|
|
Dim adrz3 As String = ""
|
|
Dim adrz4 As String = ""
|
|
Dim adrz5 As String = ""
|
|
Dim adrz6 As String = ""
|
|
Dim countryCode As String = UID_Nr.Substring(0, 2)
|
|
Dim vatNumber As String = UID_Nr.Substring(2, uid.Length)
|
|
|
|
Dim StufeAbf = VERAG_PROG_ALLGEMEIN.at.gv.bmf.finanzonline.uidAbfrageServiceRequestStufe.Item1
|
|
Select Case Stufe
|
|
Case 1
|
|
StufeAbf = VERAG_PROG_ALLGEMEIN.at.gv.bmf.finanzonline.uidAbfrageServiceRequestStufe.Item1
|
|
Case 2
|
|
StufeAbf = VERAG_PROG_ALLGEMEIN.at.gv.bmf.finanzonline.uidAbfrageServiceRequestStufe.Item2
|
|
End Select
|
|
|
|
Dim returnInt As Integer = CallWebService.uidAbfrage(tid, benid, SESSION_ID, uid, countryCode & vatNumber, StufeAbf, msg, name, adrz1, adrz2, adrz3, adrz4, adrz5, adrz6)
|
|
errorCode = returnInt
|
|
If returnInt = 0 Or returnInt = 1 Then
|
|
|
|
Dim UID_TMP As New VERAG_PROG_ALLGEMEIN.cUIDPruefung
|
|
|
|
UID_TMP.uid_Datum = Now
|
|
UID_TMP.uid_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
|
|
If If(UID_TMP.uid_Sachbearbeiter, "") = "" Then UID_TMP.uid_Sachbearbeiter = "AUTO"
|
|
UID_TMP.uid_MaId = VERAG_PROG_ALLGEMEIN.cAllgemein.USRID
|
|
UID_TMP.uid_valid = (returnInt = 0)
|
|
UID_TMP.uid_KundenNr = -1
|
|
|
|
|
|
UID_TMP.uid_UstIdKz = countryCode
|
|
UID_TMP.uid_UstIdNr = vatNumber
|
|
|
|
UID_TMP.Firma = If(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA, "VERAG")
|
|
UID_TMP.uid_abfrageUid = uid
|
|
UID_TMP.uid_sessionId = tmp_SESSION_ID
|
|
|
|
UID_TMP.uid_firma = name
|
|
UID_TMP.uid_adr1 = adrz1
|
|
UID_TMP.uid_adr2 = adrz2
|
|
UID_TMP.uid_adr3 = adrz3
|
|
UID_TMP.uid_adr4 = adrz4
|
|
UID_TMP.uid_adr5 = adrz5
|
|
UID_TMP.uid_adr6 = adrz6
|
|
|
|
UID_TMP.uid_stufe = Stufe
|
|
|
|
UID_TMP.SAVE()
|
|
If (returnInt = 0) Then 'OK
|
|
End If
|
|
Return UID_TMP
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
If showErr Then MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
|
|
' Call_Web_Service_MethodUID_Logout_NEU2020()
|
|
|
|
|
|
End Try
|
|
|
|
|
|
|
|
Return Nothing
|
|
End Function
|
|
|
|
Function GetUIDLand(uid As String)
|
|
If uid.Length > 2 Then
|
|
Return uid.Substring(0, 2)
|
|
End If
|
|
'Dim uidLand = ""
|
|
'For Each s In uid
|
|
' If IsNumeric(s) Then Return uidLand
|
|
' uidLand &= s
|
|
'Next
|
|
'Return uidLand
|
|
End Function
|
|
|
|
|
|
Function GetUidNr(uid As String)
|
|
If uid.Length > 2 Then
|
|
Return uid.Substring(2, uid.Length - 2)
|
|
End If
|
|
'Dim uidLand = ""
|
|
'For Each s In uid
|
|
' If IsNumeric(s) Then uidLand &= s
|
|
'Next
|
|
'Return uidLand
|
|
|
|
End Function
|
|
Function GetCodeText(rc As Integer)
|
|
Select Case rc
|
|
Case 0 : Return "Die UID des Erwerbers ist gültig."
|
|
Case -1 : Return "Die Session ID ist ungültig oder abgelaufen."
|
|
Case -2 : Return "Der Aufruf des Webservices ist derzeit wegen Wartungsarbeiten nicht möglich."
|
|
Case -3 : Return "Es ist ein technischer Fehler aufgetreten."
|
|
Case -4 : Return "Dieser Teilnehmer ist für diese Funktion nicht berechtigt."
|
|
Case 1 : Return "Die UID des Erwerbers ist nicht gültig."
|
|
Case 4 : Return "Die UID-Nummer des Erwerbers ist falsch."
|
|
Case 5 : Return "Die UID-Nummer des Antragstellers ist ungültig."
|
|
Case 10 : Return "Der angegebene Mitgliedstaat verbietet diese Abfrage."
|
|
Case -99 : Return "" & rc
|
|
Case 101 : Return "UID beginnt nicht mit ATU."
|
|
Case 103 : Return "Die angefragte UID-Nummer kann im FinanzOnline nur in Stufe 1 bestätigt werden,
|
|
da diese UID-Nummer zu einer Unternehmensgruppe (Umsatzsteuergruppe) gehört.
|
|
Aus technischen Gründen werden aus Tschechien keine Firmendaten angezeigt. Für
|
|
eine gültige Stufe 2 Abfrage ist es daher erforderlich, dass Sie unter
|
|
http://adisreg.mfcr.cz die Daten der CZ-Umsatzsteuergruppe aufrufen und
|
|
kontrollieren, ob das angefragte Unternehmen auch tatsächlich zu dieser Gruppe
|
|
gehört.Bitte bewahren Sie den Ausdruck dieser Anfrage in Ihren Unterlagen als
|
|
Beleg gemäß § 132 BAO auf. Für jede Anfrage Stufe 2 ist sowohl das
|
|
Bestätigungsverfahren in Stufe 1 im FinanzOnline als auch das Gruppenregister im
|
|
anderen Mitgliedsstaat laut o.a. Link zu konsultieren. Im Falle von Fragen wenden
|
|
Sie sich bitte an Ihr zuständiges Finanzamt."
|
|
Case 104 : Return "Die angefragte UID-Nummer kann im FinanzOnline nur in Stufe 1 bestätigt werden,
|
|
da diese UID-Nummer zu einer Unternehmensgruppe (Umsatzsteuergruppe) gehört.
|
|
Aus technischen Gründen werden aus der Slowakei keine Firmendaten angezeigt.
|
|
Für eine gültige Stufe 2 Abfrage ist es daher erforderlich, dass Sie unter
|
|
http://www.drsr.sk die Daten der SK-Umsatzsteuergruppe aufrufen und kontrollieren,
|
|
ob das angefragte Unternehmen auch tatsächlich zu dieser Gruppe gehört. Bitte
|
|
bewahren Sie den Ausdruck dieser Anfrage in Ihren Unterlagen als Beleg gemäß §Bundesministerium für Finanzen Seite 3 von 3
|
|
Stand: 27.10.2016 BAO auf. Für jede Anfrage Stufe 2 ist sowohl das Bestätigungsverfahren In Stufe
|
|
1 im FinanzOnline als auch das Gruppenregister im anderen Mitgliedsstaat laut o.a.
|
|
Link zu konsultieren. Im Falle von Fragen wenden Sie sich bitte an Ihr zuständiges
|
|
Finanzamt."
|
|
Case 105 : Return "Die UID-Nummer ist über FinanzOnline einzeln abzufragen."
|
|
Case 1511 : Return "Der angegebene Mitgliedstaat ist derzeit nicht erreichbar"
|
|
Case 1512 : Return "Die UID-Abfrage ist auf Grund der hohen Anzahl an Abfragen derzeit nicht möglich."
|
|
Case 1513 : Return "Die UID-Abfrage für die angegebene UID-Nummer des Erwerbers wurde an diesem Tag bereits zweimal durchgeführt. Eine häufigere Abfrage mittels Webservice ist nicht möglich."
|
|
Case Else : Return "Unbekannter Fehler: " & rc
|
|
End Select
|
|
End Function
|
|
Function Call_Web_Service_MethodUID_Logout_NEU2020() As String
|
|
Dim CallWebService As New VERAG_PROG_ALLGEMEIN.at.gv.bmf.finanzonline.session.sessionService
|
|
Try
|
|
Dim msg = ""
|
|
Dim sGetValue As String = CallWebService.logout(tid, benid, SESSION_ID, msg)
|
|
Return sGetValue
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message)
|
|
End Try
|
|
Return ""
|
|
End Function
|
|
End Class
|