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) As VERAG_PROG_ALLGEMEIN.cUIDPruefung
        Dim AD As New cAdressen(ba_KundenNr)
        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 = 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 = 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 (returnInt = 0) Then 'OK
                            If SaveErgInAdressen Then
                                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
