Files
SDL/VERAG_PROG_ALLGEMEIN/Schnittstellen/Finanzonline/cFinanzOnlineWebService.vb
2024-05-08 09:37:40 +02:00

425 lines
19 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, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
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.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_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 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