'Imports UID.cMeineFunktionen
'Imports UID.cDbFunctions
'Imports UID.at.gv.bmf.finanzonline
'Imports Gemeinsames
Imports GrapeCity.ActiveReports
Imports System.Data.SqlClient

Public Class frmCheckliste
    Private newEntry As Boolean = False         ' handelt es sich um einen neune Eintrag?
    Private data As cUIDDataKunde               ' aktuelle Daten der Form
    Private dataold As cUIDDataKunde            ' Daten der Form beim Laden
    Private attachments As List(Of cAttachment) ' Liste der PDF-Anhänge 
    Private valueChanged As Boolean = False     ' wurden Daten verändert?
    Private enterUpdate As Boolean = True
    Private closeOK As Boolean = False          ' wenn gesetzt, kann das Fenster ohne einen Hinweis auf das Speichern geschlossen werden
    Private pathToAttach As String = ""
    Private printAttach As Boolean = False
    Dim cDbFunctions As New cDbFunctions

    Dim uid_message As String
    Public uid_message_report As String
    Public eori_message_report As String

    Public rowId As Integer ' die ID des Datensatzes
    'Public kdNr As Integer = -1
    Dim binding_Kunden As New cBinding("FMZOLL")
    Dim binding_Vollmachten As New cBinding("FMZOLL")
    'Public userfullname As String
    'Public username As String
    Public speedPrint As Boolean = False
    Public ADRESSEN As VERAG_PROG_ALLGEMEIN.cAdressen
    Public KUNDE As VERAG_PROG_ALLGEMEIN.cKunde
    Public KUNDE_ERW As VERAG_PROG_ALLGEMEIN.cKundenErweitert
    Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL

    Sub initDataBindingKunden()
        Try
            ' Dim tmpHist As String = "" 'If History <> "" Then tmpHist = " AND History='" & History & "'"
            'binding_Kunden.initBinding(" SELECT TOP 1 * FROM Kunden INNER JOIN Adressen ON Kunden.KundenNr= Adressen.AdressenNr where  KundenNr=" & kdNr & "  ", "FMZOLL")

            '  AddHandler s.bindingdataTable.ColumnChanged, AddressOf BindingTableColumnChanged
            '  AddHandler s.bindingdataTable.TableNewRow, AddressOf s.bindingdataTable_TableNewRow_SDLLeistungen
            'im r As DataRow = binding_Kunden.bindingdataTable.Rows(0)

            txtEori.Text = If(KUNDE.EORITIN, "") '(r.Item("EORITIN"))

            Dim firma = If(KUNDE_ERW.kde_FirmenwortlautFiskal, "")
            If firma = "" Then
                firma &= (ADRESSEN.Name_1 & " " & ADRESSEN.Name_2).Trim & vbNewLine
                firma &= ADRESSEN.Straße & vbNewLine
                firma &= (ADRESSEN.LandKz & " " & ADRESSEN.PLZ & " " & ADRESSEN.Ort).Trim
            End If
            txtFirma.Text = firma.Trim

            txtInfo.Text = If(KUNDE.Besonderheiten, "")
            txtKuerzel.Text = ADRESSEN.Ordnungsbegriff
            txtUid.Text = If(ADRESSEN.UstIdKz, "") & If(ADRESSEN.UstIdNr, "")

            '   MsgBox("1")
            initDGVVollmachten()

            'Dim dt As DataTable = (New SQL).loadDgvBySql(" SELECT [kdvm_kdvmaId],CONVERT(varchar(10), [kdvm_erhalten_Datum], 104) as kdvm_erhalten_Datum FROM [tblKundenVollmachten]  WHERE [kdvm_KundenNr]=" & ADRESSEN.AdressenNr & " ", "FMZOLL")
            'For Each row As DataRow In dt.Rows
            '    Select Case row.Item("kdvm_kdvmaId").ToString
            '        Case "1" : txtDeZvm.Text = row.Item("kdvm_erhalten_Datum").ToString
            '        Case "2" : txtDeFisk.Text = row.Item("kdvm_erhalten_Datum").ToString
            '        Case "3" : txtAtZvmFisk.Text = row.Item("kdvm_erhalten_Datum").ToString
            '        Case "4" : txtAtZvmFiskCustoms.Text = row.Item("kdvm_erhalten_Datum").ToString
            '    End Select
            'Next
            '    MsgBox("2")


            'cbxAktiv.Checked = checkNullBool(r.Item("??"))


            '  If History <> "" Then
            '            Try : s.bindingSource.Position = s.bindingSource.Find("History", History)
            '        Catch ex As Exception : End Try
            'End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try


        '   If addnew Then newEntry() 'NEUER EINTRAG!

    End Sub

    Sub initDGVVollmachten()
        With dgvVollmachten
            .Columns.Clear()

            Dim where = ""
            Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
                Case "IMEX" : where = " AND art.kdvma_Firma='IMEX' "
                Case Else : where = " AND art.kdvma_Firma<>'IMEX' "
            End Select

            .DataSource = SQL.loadDgvBySql("SELECT abf.kdvm_Id,art.kdvma_Id,  art.kdvma_Bezeichnung, abf.[kdvm_KundenNr], abf.[kdvm_erhalten],abf.[kdvm_erhalten_Datum], abf.kdvm_datenarchivId,abf.kdvm_Info " &
                                                    "  FROM [tblKundenVollmachtenArt] as art LEFT  JOIN (select * from [tblKundenVollmachten] where [kdvm_KundenNr]='" & KUNDE.KundenNr & "' ) as abf on art.[kdvma_Id]=abf.[kdvm_kdvmaId] WHERE art.kdvma_visible=1 AND abf.[kdvm_erhalten]=1  " & where &
                                                    "  ORDER BY art.kdvma_id", "FMZOLL")

            lblVMErr.Visible = (.Rows.Count = 0)
            .Visible = Not (.Rows.Count = 0)

            If .Columns.Count = 0 Then Exit Sub


            '  .RowTemplate.Height = 30
            .Columns("kdvm_Id").Visible = False
            .Columns("kdvma_Id").Visible = False
            .Columns("kdvm_KundenNr").Visible = False
            .Columns("kdvm_datenarchivId").Visible = False
            .Columns("kdvma_Bezeichnung").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
            .Columns("kdvma_Bezeichnung").HeaderText = "Bezeichnung"
            .Columns("kdvm_erhalten").Width = 45
            .Columns("kdvm_erhalten").HeaderText = "Erhalten"
            .Columns("kdvm_erhalten").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
            .Columns("kdvm_erhalten_Datum").Width = 100
            .Columns("kdvm_erhalten_Datum").HeaderText = "Erhalten am"
            .Columns("kdvm_erhalten_Datum").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
            .Columns("kdvm_Info").Width = 200
            .Columns("kdvm_Info").HeaderText = "Info"
            .Columns("kdvm_Info").Visible = False

            For Each r As DataGridViewRow In .Rows
                If r.Cells("kdvm_erhalten").Value Is DBNull.Value Then
                    r.DefaultCellStyle.ForeColor = Color.Gray
                ElseIf CBool(r.Cells("kdvm_erhalten").Value) = False Then
                    r.DefaultCellStyle.ForeColor = Color.Gray
                ElseIf IsDate(r.Cells("kdvm_erhalten_Datum").Value) AndAlso CDate(r.Cells("kdvm_erhalten_Datum").Value) < Now.AddYears(-2) Then
                    r.DefaultCellStyle.ForeColor = Color.Red
                End If

                If False Then
                    If r.Cells("kdvm_datenarchivId").Value IsNot DBNull.Value AndAlso CInt(r.Cells("kdvm_datenarchivId").Value) > 0 Then
                        DirectCast(r.Cells("clmnPDF"), DataGridViewImageCell).Value = My.Resources.pdf
                    End If
                End If
            Next
        End With

    End Sub



    ' Public Sub newEntry()
    '     s.updateBinding()
    '     s.newEntry(kdNr, KfzKennzeichen, SDLNr) 'NEUER EINTRAG!
    ' End Sub

    Private Sub frmDetails_Load(sender As Object, e As EventArgs) Handles Me.Load
        initDataBindingKunden()

        cProgramFunctions.initDrucker(cboPrinter)

        btnPrint.Visible = False
        btnVorschau.Visible = False

        If Not cbxAktiv.Checked Then
            btnPrint.Visible = True
            btnVorschau.Visible = True
        End If
        newEntry = False


        ' If VERAG_PROG_ALLGEMEIN.cAllgemein.USRBER > 5 Then btnOK.Enabled = False : closeOK = True ' Hat der Benutzer keine Rechte die Daten zu verändern, wird auch nicht nach Änderungen beim Schließen geprüft
        If Now >= Date.Parse("06.05.2015") Then lblInfo.Visible = False 'Hinweistext sichtbar
        closeOK = True

    End Sub

    ' Wird das Fenster geschlossen , wird geprüft, ob Änderungen vorgenommen wurden
    Private Sub frmDetails_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
        If valueChanged = False Or closeOK Then ' wenn keine Daten geändert wurden oder Schließen ohne Speichern aktzeptiert wird
            'frmMain.Enabled = True
            Me.Dispose() 'Fenster wird geschlossen
            '  e.Cancel = False
            ' Me.Close()
            '   frmMain.BringToFront()
        Else ' Daten wurden geändert
            Select Case MsgBox("Wollen Sie die geänderten Daten verwerfen?", vbQuestion Or vbYesNo Or vbDefaultButton2, "Änderung verwerfen?")
                Case vbYes
                    '   frmMain.Enabled = True
                    ' Me.Close()
                    Me.Dispose() 'Fenster wird geschlossen
                    e.Cancel = False
                    '   frmMain.BringToFront()
                Case vbNo
                    e.Cancel = True 'Fenster wird nicht geschlossen
            End Select
        End If
        e.Cancel = True
    End Sub


    'Abbrechen
    Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
        Me.Close()
    End Sub







    'Druckvorschau laden
    Private Sub btnPrint_Click(sender As Object, e As EventArgs) Handles btnVorschau.Click
        Dim report As rptCheckliste = New rptCheckliste
        report.lblUID.Text = Me.txtUid.Text
        report.lblEORI.Text = Me.txtEori.Text
        report.lblFirma.Text = Me.txtFirma.Text
        report.lblInfo.Text = Me.txtInfo.Text
        'sreport.lblUID.Text = Me.txtUid.Text
        report.Label19.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME
        report.lblDetails.Text = String.Format("erstellt am {0} um {1} von {2}", DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString(), VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME)


        report.cbxUID.Checked = Me.cbxUID.Checked
        report.cbxEORI.Checked = Me.cbxEORI.Checked
        report.cbxCMR.Checked = Me.cbxVS1.Checked
        report.cbxCMRVers.Checked = Me.cbxVS2.Checked
        report.cbxCMRFracht.Checked = Me.cbxVS3.Checked
        report.cbxLieferschein.Checked = Me.cbxVS4.Checked
        report.cbxPackliste.Checked = Me.cbxVS5.Checked
        report.cbxVerzollt.Checked = Me.cbxCMR1.Checked
        report.cbxCMRVersendung.Checked = Me.cbxCMR3.Checked
        report.cbxRGVersendung.Checked = Me.cbxRG1.Checked
        report.cbxRG_UID.Checked = Me.cbxRG2.Checked
        report.cbxPassport.Checked = Me.cbxS1.Checked
        report.cbxT1.Checked = Me.cbxS2.Checked
        report.cbxUEBER_AURATR.Checked = Me.cbxUEST3.Checked
        report.cbxUEBER_Bestimmungsort.Checked = Me.cbxUEST2.Checked
        report.cbxUEBER_CMR.Checked = Me.cbxUEST1.Checked
        report.cbxUEBER_Zollanm.Checked = Me.cbxUEST4.Checked
        report.SubReport.Report = New subRptVM(KUNDE.KundenNr)


        Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
            Case "IMEX"
                report.picVERAG.Image = My.Resources.IMEX_LOGO_simple
                report.Label16.Text = "Bei Nicht-Übereinstimmung: Abfertigung verweigern !!!!"
                report.Label8.Text = "IMEX"

        End Select
        'If txtDeZvm.Text <> "" Then report.lblDE_ZVM.Text = txtDeZvm.Text
        'If txtDeFisk.Text <> "" Then report.lblDE_FKVM.Text = txtDeFisk.Text
        'If txtAtZvmFisk.Text <> "" Then report.lblVM_ZS.Text = txtAtZvmFisk.Text
        'If txtAtZvmFiskCustoms.Text <> "" Then report.lblVM_CS.Text = txtAtZvmFiskCustoms.Text





        If speedPrint Then
            report.Run(False)
            report.Document.Printer.PrinterName = cboPrinter.Text
            report.Document.Print(False, False)
            report.Dispose()
            Me.Close()
            '   AddHandler rpt.Viewer.LoadCompleted, Sub()
            'rpt.Viewer.Print(True, True, True)
            '  rpt.Close()
            ' End Sub
        Else
            Dim rpt As New frmPrintLayout
            rpt.Text = "Checkliste"

            rpt.Viewer.LoadDocument(report)

            rpt.Viewer.ViewType = GrapeCity.Viewer.Common.Model.ViewType.Continuous
            rpt.Show()
        End If

    End Sub

    Private Sub frmDetails_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Return) Then ' 'Enter' löst die Speichern-Function aus
            '    If enterUpdate And VERAG_PROG_ALLGEMEIN.cAllgemein.USRBER <= 5 Then
            ''        If newEntry Then insertData() Else updateData()
            '     End If
            '   ElseIf e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Escape) Then ' 'ESC' schließt das Fenster
            Me.Close()
        End If

    End Sub

    'Wird ein Wert geändert, wird 'valueChanged'= true 
    Private Sub valueChangedEvent(sender As Object, e As EventArgs)
        valueChanged = True
    End Sub

    'befindet man sich in einem mehrzeiligen Textfeld darf die Enter-Tast nicht das Key-Evnet auslösen
    Private Sub txtBox_GotFocus(sender As Object, e As EventArgs) Handles txtFirma.GotFocus, txtInfo.GotFocus
        enterUpdate = False
    End Sub

    'bei Verlassen des Textfeldes ist das Key-Evnet wieder akitv
    Private Sub txtBox_GotLost(sender As Object, e As EventArgs) Handles txtFirma.LostFocus, txtInfo.LostFocus
        enterUpdate = True
    End Sub

    'Komfortable EORI-Prüfung
    Private Sub btnCheckEORI_Click(sender As Object, e As EventArgs) Handles btnCheckEORI.Click
        Dim eorilink As String = "https://ec.europa.eu/taxation_customs/dds2/eos/eori_validation.jsp?Lang=de&EoriNumb=" & txtEori.Text & "&Expand=true"

        ' Dim eorilink As String = "http://ec.europa.eu/taxation_customs/dds2/eos/eori_validation.jsp?Lang=de&EoriNumb=" & txtEori.Text & "&Expand=true"
        frmEoriLink.link = eorilink
        frmEoriLink.frmCheckliste = Me
        frmEoriLink.Show()
    End Sub



    'Anhang hinzufügen
    Private Sub btnAddAttach_Click(sender As Object, e As EventArgs)
        Dim fd As OpenFileDialog = New OpenFileDialog()

        fd.Title = "Anhang hinzufügen"
        fd.Filter = "PDF Dateien (*.PDF)|*.PDF"
        fd.FilterIndex = 2
        fd.RestoreDirectory = True

        If fd.ShowDialog() = DialogResult.OK Then
            Dim value As String = ""
            value = InputBox("Bitte geben Sie einen Namen für das Dokument ein:", "Anhang - Name", cut_file(fd.FileName), 200, 100)

            If Not value Is "" Then
                Dim d As New cAttachment
                If Not value.ToLower.EndsWith(".pdf") Then value = value & ".pdf"
                Dim directory As String = "F:\PROGRAMME\UID_DATA\PDFAnhang\" & rowId & "\"
                If Not My.Computer.FileSystem.DirectoryExists(directory) Then
                    My.Computer.FileSystem.CreateDirectory(directory)
                End If
                Dim newPathToAttach As String = "F:\PROGRAMME\UID_DATA\PDFAnhang\" & rowId & "\" & value
                Try
                    System.IO.File.Copy(fd.FileName, newPathToAttach, True) 'Das ausgewwählte PDF ins F Verzeichnis schieben
                    d.att_pfad = newPathToAttach
                    d.att_name = value
                    cDbFunctions.insertAttachment(d, rowId)

                Catch ex As Exception
                    MsgBox("Die Zollerklärung konnte nicht kopiert werden!", vbInformation)
                End Try
            End If
        End If
    End Sub

    ' Funktion zum Entfernen der Backslashs / Ordner While file.Contains("\") file = file.Remove(0, 1) End While Return file End Function 
    Private Function cut_file(ByVal file As String) As String
        While file.Contains("\")
            file = file.Remove(0, 1)
        End While
        Return file
    End Function



    'der Sofort-Druck öffnet direkt den Print-Dialog
    Private Sub btnFastPrint_Click_1(sender As Object, e As EventArgs) Handles btnPrint.Click
        speedPrint = True
        btnVorschau.PerformClick()
    End Sub


    Private Sub cbxAktiv_CheckedChanged(sender As Object, e As EventArgs) Handles cbxAktiv.CheckedChanged
        If cbxAktiv.Checked Then
            cbxAktiv.ForeColor = Color.Red
        Else
            cbxAktiv.ForeColor = Color.Black
        End If
    End Sub

    Private Sub btnCheckUID_Click(sender As Object, e As EventArgs) Handles btnCheckUID.Click
        Dim uidlink As String = "https://finanzonline.bmf.gv.at/fon/"
        Process.Start(uidlink)
        '_________________________________
        ' frmUidLink.link = uidlink
        '   frmUidLink.Show()

        '_________________________________
        'Me.Cursor = Cursors.WaitCursor
        ' Dim session As String = Call_Web_Service_MethodUID_Login()
        'If session <> "" Then
        'Dim s As String
        ' Try
        '  s = Call_Web_Service_MethodUID_Abfrage(session)
        'Call_Web_Service_MethodUID_Logout(session)
        '  uid_message = getmessage(s)
        'If s = "0" Then
        '        uid_message_report = "Die UID-Nummer " & txtUid.Text & " wurde geprüft und ist gültig."
        'ElseIf s = "4" Then
        'uid_message_report = "Die UID-Nummer " & txtUid.Text & " wurde geprüft und ist NICHT gültig."
        'Else
        ''uid_message_report = "Probleme bei der Abfrage - UID-Nummer: " & txtUid.Text
        'End If
        '
        'Catch ex As Exception
        'MsgBox("Fehler beim Prüfen der UID-Nummer" & vbNewLine & vbNewLine & ex.Message) : End Try
        'End If
        'Me.Cursor = Cursors.Default

    End Sub

    'Behandlung des Ergebnises aus der UID-Abfrage
    Private Function getmessage(ByRef rc As String) As String
        Dim msg As String = "ERROR: Es ist ein Fehler bei der Anfrage aufgetreten."
        picUIDAbfrage.Visible = False
        picUIDAbfrage.Image = Nothing
        lblUIDAbfrage.Text = ""
        cbxUID.Checked = False

        Try
            Select Case CInt(rc)
                Case 0
                    picUIDAbfrage.Image = My.Resources.ok
                    picUIDAbfrage.Visible = True
                    msg = "Die UID des Erwerbers ist gültig."
                    lblUIDAbfrage.Text = msg
                    cbxUID.Checked = True
                    Return msg
                Case 1

                    picUIDAbfrage.Image = My.Resources.del
                    picUIDAbfrage.Visible = True
                    msg = "Die UID des Erwerbers ist N I C H T gültig."
                    lblUIDAbfrage.Text = msg

                Case 3
                    msg = "3 Die UID-Nummer des Antragstellers ist ungültig."
                Case 4
                    picUIDAbfrage.Image = My.Resources.del
                    picUIDAbfrage.Visible = True
                    msg = "Die UID-Nummer des Erwerbers ist falsch."
                    lblUIDAbfrage.Text = msg & " Bitte überprüfen Sie die Daten!"
                    Return msg
                Case 5
                    msg = "5 Die UID-Nummer des Antragstellers ist ungültig."
                Case 6
                    msg = "6 Der angegebene Mitgliedstaat ist derzeit nicht erreichbar."
                Case 7
                    msg = "7 Der angegebene Mitgliedstaat ist derzeit nicht erreichbar."
                Case 8
                    msg = "8 Anfragen sind derzeit nicht möglich."
                Case 9
                    msg = "9 Name und Anschrift des Erwerbers sind derzeit nicht ermittelbar."
                Case 101
                    msg = "101 Die UID des Antragstellers muss mit 'ATU' beginnen."
                Case 102
                    msg = "102 Bei 'Stufe' ist nur '1' oder '2' zulässig."
                Case 103
                    msg = "103 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 sich 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
                    msg = "104 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 sich 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äß §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 105
                    msg = "105 Die UID-Nummer ist über FinanzOnline einzeln abzufragen."
                Case 999
                    msg = "999 Nicht alle erforderlichen Parameter wurden angegeben."
                Case 1511
                    msg = "1511 Der angegebene Mitgliedstaat ist derzeit nicht erreichbar."
            End Select
        Catch ex As Exception

        End Try
        picUIDAbfrage.Image = My.Resources.del
        picUIDAbfrage.Visible = True
        lblUIDAbfrage.Text = "Fehler bei der Abfrage"
        Return msg
    End Function

    'Genaue Nachricht anzeigen
    Private Sub lblUIDAbfrage_Click(sender As Object, e As EventArgs) Handles lblUIDAbfrage.Click
        If uid_message <> "" Then MsgBox(uid_message)
    End Sub

    'EORI Prüfung Falsch
    Public Sub eoriFalse()
        cbxEORI.Checked = False
        lblEORIAbfrage.Text = "Die EORI-Nummer wurde geprüft und ist N I C H T gültig."
        eori_message_report = "Die EORI-Nummer " & txtEori.Text & " wurde geprüft und ist NICHT gültig."
        picEORIAbfrage.Image = My.Resources.del
        picEORIAbfrage.Visible = True
    End Sub

    'EORI Prüfung OK
    Public Sub eoriTrue()
        cbxEORI.Checked = True
        lblEORIAbfrage.Text = "Die EORI-Nummer wurde geprüft und ist gültig."
        eori_message_report = "Die EORI-Nummer " & txtEori.Text & " wurde geprüft und ist gültig."
        picEORIAbfrage.Image = My.Resources.ok
        picEORIAbfrage.Visible = True
    End Sub

    'UID Prüfung Falsch
    Public Sub uidFalse()
        cbxUID.Checked = False
        lblUIDAbfrage.Text = "Die UID-Nummer wurde geprüft - die Daten stimmen ist N I C H T überein."
        uid_message_report = "Die UID-Nummer " & txtUid.Text & " wurde geprüft - die Daten stimmen NICHT überein."
        picUIDAbfrage.Image = My.Resources.del
        picUIDAbfrage.Visible = True
    End Sub

    'UID Prüfung OK
    Public Sub uidTrue()
        cbxUID.Checked = True
    End Sub

    'Information zur neuen Funktion
    Private Sub btnInfo_Click(sender As Object, e As EventArgs) Handles btnInfo.Click
        MsgBox("INFO: " & vbNewLine & vbNewLine & "Die Funktion 'EORI prüfen' bietet eine komfortable Lösung, um auf die Homepage " &
             "der Europäischen Kommission zugreifen. Bitte überprüfen Sie die Angaben der Homepage mit den " &
             "darunter angeführten Daten." & vbNewLine & vbNewLine &
             "Die Funktion 'UID prüfen' verlinkt Sie auf die FinanzOnline-Homepage.")
    End Sub

    Function checkNullStr(o As Object) As String
        If Not IsDBNull(o) Then
            Return o
        End If
        Return ""
    End Function


    Function checkNullNbr(o As Object) As Double
        If Not IsDBNull(o) AndAlso IsNumeric(o) Then
            Return o
        End If
        Return 0
    End Function
    Function checkNullBool(o As Object) As Boolean
        Try
            Return DirectCast(o, Boolean)
        Catch ex As Exception
            Return False
        End Try
    End Function

    Private Sub dgvVollmachten_SelectionChanged(sender As Object, e As EventArgs) Handles dgvVollmachten.SelectionChanged
        dgvVollmachten.ClearSelection()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ' Dim uidlink As String = "https://evatr.bff-online.de/eVatR/"
        ' Process.Start(uidlink)
        If ADRESSEN IsNot Nothing Then openUIDPruefung_DE(ADRESSEN.AdressenNr)
    End Sub



    Sub openUIDPruefung_DE(UIDLandKz, UIDNr, Optional print = False)
        openUIDPruefung_DE(-1, UIDLandKz, UIDNr, print)
    End Sub



    Sub openUIDPruefung_DE(KdNr, Optional UIDLandKz = "", Optional UIDNr = "", Optional print = False)
        Dim AD As VERAG_PROG_ALLGEMEIN.cAdressen = Nothing
        Dim KD As VERAG_PROG_ALLGEMEIN.cKunde = Nothing
        If KdNr > 0 Then
            AD = New VERAG_PROG_ALLGEMEIN.cAdressen(KdNr)
            KD = New VERAG_PROG_ALLGEMEIN.cKunde(KdNr)
            UIDLandKz = If(AD.UstIdKz, "")
            UIDNr = If(AD.UstIdNr, "")
        End If

        Dim f As New frmInfo
        f.Controls.Clear()
        Dim f_EORI As Form
        Dim WebBrowser As New VERAG_PROG_ALLGEMEIN.Kleinma.Controls.WebBrowserEx

        f.Controls.Add(WebBrowser)
        f.Visible = True
        'f.Visible = false
        'f.WindowState = FormWindowState.Minimized
        f.Show()
        f_EORI = f
        WebBrowser.Dock = DockStyle.Fill
        WebBrowser.Navigate(New Uri("https://evatr.bff-online.de/eVatR/"))
        f.Size = New Size(1000, 1300)
        f.StartPosition = FormStartPosition.CenterScreen
        f.Top = 0
        WebBrowser.AllowNavigation = True
        Dim doFilling = True
        Dim doFilling2 = False

        WebBrowser.ScriptErrorsSuppressed = True


        AddHandler WebBrowser.DocumentCompleted, Sub()
                                                     ' Print the document now that it is fully loaded.
                                                     If WebBrowser.ReadyState = WebBrowserReadyState.Complete Then
                                                         If UIDLandKz <> "" And UIDNr <> "" Then
                                                             '   System.Threading.Thread.Sleep(1000)
                                                             '   WebBrowser.Print()
                                                             ' Dispose the WebBrowser now that the task is complete. 
                                                             ' WebBrowser.Dispose()
                                                             '  
                                                             If doFilling2 Then
                                                                 If AD IsNot Nothing Then
                                                                     Try

                                                                         Dim Adname = (If(AD.Name_1, "") & If(AD.Name_2, "")).ToString.Trim
                                                                         WebBrowser.Document.GetElementsByTagName("input").GetElementsByName("firmenname").Item(0).SetAttribute("value", Adname)
                                                                         Dim Rechtsform = ""


                                                                         ' <option value = "AG" > agnbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Aktiengesellschaft</Option>
                                                                         '<option value = "EGEN" > eGen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Eingetragene Genossenschaft</Option>
                                                                         '<option value = "EWIV" > EWIV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Europäische wirtschaftliche Interessenvereinigung</Option>
                                                                         '<option value = "GEN" > GEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Genossenschaft</Option>
                                                                         '<option value = "GESBR" > GesbR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Gesellschaft bürgerlichen Rechts</Option>
                                                                         '<option value = "GESMBH" > GesmbH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Gesellschaft mit beschränkter Haftung</Option>
                                                                         '<option value = "GESMBHCO" > GesmbH & amp; CO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Gesellschaft mit beschränkter Haftung &amp; Co</Option>
                                                                         '<option value = "GESMBHCOKG" > GesmbH & amp; CO KG&nbsp;&nbsp;- Gesellschaft mit beschränkter Haftung &amp; Co KG</Option>
                                                                         '<option value = "GESMBHCOKEG" > GesmbH & amp; CO KEG - Gesellschaft mit beschränkter Haftung &amp; Co KEG</Option>
                                                                         '<option value = "GESMBHCOOG" > GesmbH & amp; CO OG&nbsp; - Gesellschaft mit beschränkter Haftung &amp; Co OG</Option>
                                                                         '<option value = "GESMBHCOOHG" > GesmbH & amp; CO OHG - Gesellschaft mit beschränkter Haftung &amp; Co OHG</Option>
                                                                         '<option value = "GNBR" > GNBR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Gesellschaft nach bürgerlichem Recht</Option>
                                                                         '<option value = "KEG" > KEG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Kommanditerwerbsgesellschaft</Option>
                                                                         '<option value = "KG" > KG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Kommanditgesellschaft</Option>
                                                                         '<option value = "OEG" > OEG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Offene Erwerbsgesellschaft</Option>
                                                                         '<option value = "OG" > OG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Offene Gesellschaft</Option>
                                                                         '<option value = "OHG" > OHG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Offene Handelsgesellschaft</Option>
                                                                         '<option value = "PS" > Privatstiftung&nbsp; - Privatstiftung</Option>
                                                                         '<option value = "REGEN" > RegGen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Registrierte Genossenschaft</Option>
                                                                         '<option value = "REGENMBH" > RGenmbH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Registrierte Genossenschaft mit beschränkter Haftung</Option>
                                                                         '<option value = "VAG" > VaG / VVaG / VVG&nbsp;&nbsp;&nbsp; - Versicherung/-sverein auf Gegenseitigkeit</Option>
                                                                         '<option value = "" >& nbsp;</Option>
                                                                         '<option value = "" > ------------------englische Rechtsformen ------------------</Option>
                                                                         '<option value = "Ltd" > LTD - Limited</Option>
                                                                         '<option value = "PLC" > PLC - Public limited company</option>
                                                                         '<option value = "" >& nbsp;</Option>
                                                                         '<option value = "" > -----------------französische Rechtsformen ----------------</Option>
                                                                         '<option value = "SA" > SA&nbsp;&nbsp; - Société anonyme</Option>
                                                                         '<option value = "SARL" > SARL - Société à responsabilité limitée</Option>
                                                                         '<option value = "" >& nbsp;</Option>
                                                                         '<option value = "" > -----------------europäische Rechtsformen -----------------</Option>
                                                                         '<option value = "SE" > SE - Societas Europaea</Option>

                                                                         If Adname.ToUpper.EndsWith("AG") Then Rechtsform = "AG"
                                                                         If Adname.ToUpper.EndsWith("EGEN") Then Rechtsform = "EGEN"
                                                                         If Adname.ToUpper.EndsWith("GESBR") Then Rechtsform = "GESBR"
                                                                         If Adname.ToUpper.EndsWith("GESMBH") Then Rechtsform = "GESMBH"
                                                                         If Adname.ToUpper.EndsWith("GMBH") Then Rechtsform = "GESMBH"
                                                                         If Adname.ToUpper.EndsWith("GMBH & CO") Then Rechtsform = "GESMBHCO"
                                                                         If Adname.ToUpper.EndsWith("GESMBH & CO") Then Rechtsform = "GESMBHCO"
                                                                         If Adname.ToUpper.EndsWith("GMBH & CO KG") Then Rechtsform = "GESMBHCOKG"
                                                                         If Adname.ToUpper.EndsWith("GESMBH & CO KG") Then Rechtsform = "GESMBHCOKG"
                                                                         If Adname.ToUpper.EndsWith("KEG") Then Rechtsform = "KEG"
                                                                         If Adname.ToUpper.EndsWith("OG") Then Rechtsform = "OG"
                                                                         If Adname.ToUpper.EndsWith("Ltd") Then Rechtsform = "Ltd"
                                                                         If Adname.ToUpper.EndsWith("SARL") Then Rechtsform = "SARL"
                                                                         If Adname.ToUpper.Contains("S.A.R.L.") Then Rechtsform = "SARL"


                                                                         WebBrowser.Document.GetElementsByTagName("select").GetElementsByName("rfm").Item(0).SetAttribute("value", Rechtsform)
                                                                         WebBrowser.Document.GetElementsByTagName("input").GetElementsByName("ort").Item(0).SetAttribute("value", If(AD.Ort, ""))
                                                                         WebBrowser.Document.GetElementsByTagName("input").GetElementsByName("plz").Item(0).SetAttribute("value", If(AD.PLZ, ""))
                                                                         WebBrowser.Document.GetElementsByTagName("input").GetElementsByName("strasse").Item(0).SetAttribute("value", If(AD.Straße, ""))

                                                                         'If print Then

                                                                         '    timer_EORI.Enabled = True
                                                                         'End If



                                                                     Catch ex As Exception

                                                                     End Try
                                                                 End If
                                                                 doFilling2 = False
                                                             End If
                                                             If doFilling Then
                                                                 Try
                                                                     Dim firmaTMP = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
                                                                     If VERAG_PROG_ALLGEMEIN.cAllgemein.isCLUSTER And KD IsNot Nothing Then
                                                                         firmaTMP = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(KD.FilialenNr)
                                                                     End If
                                                                     Select Case firmaTMP
                                                                         Case "IMEX"
                                                                             WebBrowser.Document.GetElementsByTagName("input").GetElementsByName("eigene_nr").Item(0).SetAttribute("value", "295575575")
                                                                             '????? GLOBAL????
                                                                         'Case "FRONTOFFICE"
                                                                             'WebBrowser.Document.GetElementsByTagName("input").GetElementsByName("eigene_nr").Item(0).SetAttribute("value", "295575575")
                                                                         Case "UNISPED"
                                                                             '  WebBrowser.Document.GetElementsByTagName("input").GetElementsByName("eigene_nr").Item(0).SetAttribute("value", "295575575")
                                                                             '????? FRONT OFFICE DE-UIDNR?
                                                                         Case Else
                                                                             WebBrowser.Document.GetElementsByTagName("input").GetElementsByName("eigene_nr").Item(0).SetAttribute("value", "813570890")
                                                                     End Select

                                                                     WebBrowser.Document.GetElementsByTagName("input").GetElementsByName("abfrage_nr").Item(0).SetAttribute("value", UIDNr)

                                                                     Select Case UIDLandKz
                                                                         Case "DE"
                                                                         Case "BE", "BG", "DK", "EE", "FI", "FR", "EL", "GB", "IE", "IT", "HR", "LV", "LT", "LU", "MT", "NL", "AT", "PL", "PT", "RO", "SE", "SK", "SI", "ES", "CZ", "HU", "CY"
                                                                             'Nur bei erlaubten Ländern:
                                                                             WebBrowser.Document.GetElementsByTagName("select").GetElementsByName("abfrage_land").Item(0).SetAttribute("value", UIDLandKz)
                                                                             WebBrowser.Document.GetElementsByTagName("input").GetElementsByName("eAnfrage").Item(0).InvokeMember("click")
                                                                         Case Else

                                                                     End Select
                                                                     doFilling2 = True


                                                                 Catch ex As Exception

                                                                 End Try
                                                             End If
                                                             doFilling = False
                                                         End If
                                                     End If
                                                 End Sub


    End Sub

    Private Sub lkl_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles lkl.LinkClicked
        Dim uidlink As String = "https://evatr.bff-online.de/eVatR/"
        Process.Start(uidlink)
    End Sub

    Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs)
        Dim uidlink As String = "https://evatr.bff-online.de/eVatR/"
        Process.Start(uidlink)
    End Sub
End Class


Public Class cUIDDataKunde
    Property id As Integer
    Property deakt As Boolean
    Property kuerzel As String
    Property firma As String
    Property uid As String
    Property eori As String
    Property info As String
    Property deZv As String
    Property deFisk As String
    Property atZvmfisk As String
    Property atZvmfiskCustoms As String
    'Property printAttach As Boolean
    '  Property pathToAttach As String
    Property lastUser As String
End Class

Public Class cAttachment
    Property att_id As Integer
    Property att_name As String
    Property att_pfad As String
End Class


Class cDbFunctions
    '  Dim cSqlDb As New Gemeinsames.cDatenbank
    Public Function LesenOptionen(ByVal id As Integer) As cUIDDataKunde
        'falls ID mitgegeben, dann diese laden, ansonsten den anderen Wert suchen
        Dim sql As String = "SELECT * FROM tblData WHERE id = " & id & ""
        Dim daten As cUIDDataKunde = Nothing
        Try
            Using conn As SqlConnection = cSqlDb.GetNewOpenConnection()
                Using cmd As New SqlCommand(sql, conn)
                    Dim dr = cmd.ExecuteReader()
                    If dr.HasRows Then
                        dr.Read()
                        daten = New cUIDDataKunde()
                        Try
                            daten.id = CInt(dr.Item("Id"))
                            daten.deakt = CBool(dr.Item("deakt"))
                            daten.kuerzel = CStr(dr.Item("kuerzel"))
                            daten.firma = CStr(dr.Item("firma"))
                            daten.uid = CStr(dr.Item("uid"))
                            daten.eori = CStr(dr.Item("eori"))
                            daten.info = CStr(dr.Item("info"))
                            daten.deZv = CStr(dr.Item("de_vz_vm"))
                            daten.deFisk = CStr(dr.Item("de_fisk_vm"))
                            daten.atZvmfisk = CStr(dr.Item("at_vzfisk_vm"))
                            If Not dr.Item("at_vzfisk_vm_customs") Is DBNull.Value Then daten.atZvmfiskCustoms = CStr(dr.Item("at_vzfisk_vm_customs"))

                            daten.lastUser = CStr(dr.Item("letzter_benutzer"))
                        Catch ex As Exception
                            MsgBox(System.Reflection.MethodInfo.GetCurrentMethod.Name & ": Fehler beim Einlesen der Optionen" & vbCrLf & vbCrLf & ex.Message, MsgBoxStyle.Exclamation)
                        End Try
                    End If
                    dr.Close()
                End Using
            End Using
            Return daten
        Catch ex As Exception
            MsgBox(System.Reflection.MethodInfo.GetCurrentMethod.Name & ": Fehler beim Lesen der Optionen:" & vbCrLf & vbCrLf & ex.Message, vbExclamation, "Datenbankfehler")
            Return Nothing
        End Try
    End Function
    Public Function getAttachmentByDataid(ByVal id As Integer) As List(Of cAttachment)
        'falls ID mitgegeben, dann diese laden, ansonsten den anderen Wert suchen
        Dim sql As String = "SELECT * FROM tblDataAttachment WHERE att_dataId = " & id & ""
        Dim daten As New List(Of cAttachment)
        Try
            Using conn As SqlConnection = cSqlDb.GetNewOpenConnection()
                Using cmd As New SqlCommand(sql, conn)
                    Dim dr = cmd.ExecuteReader()
                    If dr.HasRows Then
                        While dr.Read()
                            Dim d As New cAttachment()
                            Try
                                d.att_id = CInt(dr.Item("att_id"))
                                If Not dr.Item("att_name") Is DBNull.Value Then d.att_name = CStr(dr.Item("att_name"))
                                If Not dr.Item("att_pfad") Is DBNull.Value Then d.att_pfad = CStr(dr.Item("att_pfad"))
                                daten.Add(d)
                            Catch ex As Exception
                                MsgBox(System.Reflection.MethodInfo.GetCurrentMethod.Name & ": Fehler beim Einlesen der Anhänge" & vbCrLf & vbCrLf & ex.Message, MsgBoxStyle.Exclamation)
                            End Try
                        End While
                    End If
                    dr.Close()
                End Using
            End Using
            Return daten
        Catch ex As Exception
            MsgBox(System.Reflection.MethodInfo.GetCurrentMethod.Name & ": Fehler beim Lesen der Optionen:" & vbCrLf & vbCrLf & ex.Message, vbExclamation, "Datenbankfehler")
            Return Nothing
        End Try
    End Function

    Public Function insertAttachment(ByVal d As cAttachment, ByVal id As Integer) As Boolean
        Dim hAuswahl As String = ""

        'Änderung
        Dim sql = "INSERT INTO tblDataAttachment " &
                       "(att_name, att_pfad, att_dataId) VALUES " &
                       "(@att_name,@att_pfad,@att_dataId)"

        Using conn As SqlConnection = cSqlDb.GetNewOpenConnection()
            Using cmd As New SqlCommand(sql, conn)
                Try
                    cmd.Parameters.AddWithValue("@att_name", d.att_name)
                    cmd.Parameters.AddWithValue("@att_pfad", d.att_pfad)
                    cmd.Parameters.AddWithValue("@att_dataId", id)
                    cmd.ExecuteNonQuery()
                    Return True
                Catch ex As Exception
                    MsgBox(System.Reflection.MethodInfo.GetCurrentMethod.Name & ": Anhang kann nicht gespeichert werden!" & vbCrLf & vbCrLf & ex.Message, vbExclamation, "Fehler beim Speichern Anhang")
                End Try
            End Using
        End Using
        Return False
    End Function
    Public Function delAttachment(ByVal id As Integer) As Boolean
        Dim hAuswahl As String = ""

        Dim sql = "DELETE FROM tblDataAttachment WHERE att_id=@att_id"

        Using conn As SqlConnection = cSqlDb.GetNewOpenConnection()
            Using cmd As New SqlCommand(sql, conn)
                Try
                    cmd.Parameters.AddWithValue("@att_id", id)
                    cmd.ExecuteNonQuery()
                    Return True
                Catch ex As Exception
                    MsgBox(System.Reflection.MethodInfo.GetCurrentMethod.Name & ": Anhang kann nicht gespeichert werden!" & vbCrLf & vbCrLf & ex.Message, vbExclamation, "Fehler beim Speichern Anhang")
                End Try
            End Using
        End Using
        Return False
    End Function

    Public Function getDataBy() As IList(Of cUIDDataKunde)
        'falls ID mitgegeben, dann diese laden, ansonsten den anderen Wert suchen
        Dim sql As String = "SELECT * FROM tblData "
        Dim daten As New List(Of cUIDDataKunde)
        Try
            Using conn As SqlConnection = cSqlDb.GetNewOpenConnection()
                Using cmd As New SqlCommand(sql, conn)
                    Dim dr = cmd.ExecuteReader()
                    If dr.HasRows Then
                        While dr.Read
                            'daten = New cUIDDataKunde()
                            'MsgBox(daten.Count)
                            Try
                                Dim d As New cUIDDataKunde
                                d.id = CInt(dr.Item("Id"))
                                d.deakt = CBool(dr.Item("deakt"))
                                d.kuerzel = CStr(dr.Item("kuerzel"))
                                d.firma = CStr(dr.Item("firma"))
                                d.uid = CStr(dr.Item("uid"))
                                d.eori = CStr(dr.Item("eori"))
                                d.info = CStr(dr.Item("info"))
                                d.deZv = CStr(dr.Item("de_vz_vm"))
                                d.deFisk = CStr(dr.Item("de_fisk_vm"))
                                d.atZvmfisk = CStr(dr.Item("at_vzfisk_vm"))
                                If Not dr.Item("at_vzfisk_vm_customs") Is DBNull.Value Then d.atZvmfiskCustoms = CStr(dr.Item("at_vzfisk_vm_customs"))
                                d.lastUser = CStr(dr.Item("letzter_benutzer"))
                                daten.Add(d)
                            Catch ex As Exception
                                MsgBox(System.Reflection.MethodInfo.GetCurrentMethod.Name & ": Fehler beim Einlesen der Optionen" & vbCrLf & vbCrLf & ex.Message, MsgBoxStyle.Exclamation)
                            End Try
                        End While
                    End If
                    dr.Close()
                End Using
            End Using
            Return daten
        Catch ex As Exception
            MsgBox(System.Reflection.MethodInfo.GetCurrentMethod.Name & ": Fehler beim Lesen der Optionen:" & vbCrLf & vbCrLf & ex.Message, vbExclamation, "Datenbankfehler")
            Return Nothing
        End Try
    End Function

    Public Function updateData(ByVal d As cUIDDataKunde) As Boolean
        Dim hAuswahl As String = ""

        'Änderung
        Dim sql = "UPDATE tblData " &
                       "SET deakt=@deakt, kuerzel=@kuerzel, firma=@firma, uid=@uid, eori=@eori, info=@info,de_vz_vm=@de_vz_vm,de_fisk_vm=@de_fisk_vm,at_vzfisk_vm=@at_vzfisk_vm,at_vzfisk_vm_customs=@at_vzfisk_vm_customs,letzter_benutzer=@letzter_benutzer " &
                       "WHERE id=@id"

        Using conn As SqlConnection = cSqlDb.GetNewOpenConnection()
            Using cmd As New SqlCommand(sql, conn)
                cmd.Parameters.AddWithValue("@deakt", d.deakt)
                cmd.Parameters.AddWithValue("@kuerzel", d.kuerzel)
                cmd.Parameters.AddWithValue("@firma", d.firma)
                cmd.Parameters.AddWithValue("@uid", d.uid)
                cmd.Parameters.AddWithValue("@eori", d.eori)
                cmd.Parameters.AddWithValue("@info", d.info)
                cmd.Parameters.AddWithValue("@de_vz_vm", d.deZv)
                cmd.Parameters.AddWithValue("@de_fisk_vm", d.deFisk)
                cmd.Parameters.AddWithValue("@at_vzfisk_vm", d.atZvmfisk)
                cmd.Parameters.AddWithValue("@at_vzfisk_vm_customs", d.atZvmfiskCustoms)
                cmd.Parameters.AddWithValue("@letzter_benutzer", d.lastUser)
                cmd.Parameters.AddWithValue("@id", d.id)

                Try
                    cmd.ExecuteNonQuery()
                    Return True
                Catch ex As Exception
                    MsgBox(System.Reflection.MethodInfo.GetCurrentMethod.Name & ": Datensatz kann nicht gespeichert werden!" & vbCrLf & vbCrLf & ex.Message, vbExclamation, "Fehler beim Speichern Data")
                End Try
            End Using
        End Using
        Return False
    End Function

    Public lastinsert As Integer
    Public Function insertNewData(ByVal d As cUIDDataKunde) As Boolean
        Dim hAuswahl As String = ""

        'Änderung
        Dim sql = "INSERT INTO tblData " &
                       "(deakt, kuerzel, firma, uid, eori, info,de_vz_vm,de_fisk_vm,at_vzfisk_vm,at_vzfisk_vm_customs,letzter_benutzer) VALUES " &
                       "(@deakt,@kuerzel,@firma,@uid,@eori,@info,@de_vz_vm,@de_fisk_vm,@at_vzfisk_vm,@at_vzfisk_vm_customs,@letzter_benutzer)"

        Using conn As SqlConnection = cSqlDb.GetNewOpenConnection()
            Using cmd As New SqlCommand(sql, conn)
                cmd.Parameters.AddWithValue("@deakt", d.deakt)
                cmd.Parameters.AddWithValue("@kuerzel", d.kuerzel)
                cmd.Parameters.AddWithValue("@firma", d.firma)
                cmd.Parameters.AddWithValue("@uid", d.uid)
                cmd.Parameters.AddWithValue("@eori", d.eori)
                cmd.Parameters.AddWithValue("@info", d.info)
                cmd.Parameters.AddWithValue("@de_vz_vm", d.deZv)
                cmd.Parameters.AddWithValue("@de_fisk_vm", d.deFisk)
                cmd.Parameters.AddWithValue("@at_vzfisk_vm", d.atZvmfisk)
                cmd.Parameters.AddWithValue("@at_vzfisk_vm_customs", d.atZvmfiskCustoms)
                cmd.Parameters.AddWithValue("@letzter_benutzer", d.lastUser)

                Try
                    cmd.ExecuteNonQuery()
                    Dim newcmd As New SqlCommand("SELECT @@IDENTITY", conn)
                    lastinsert = CInt(newcmd.ExecuteScalar)
                    Return True
                Catch ex As Exception
                    MsgBox(System.Reflection.MethodInfo.GetCurrentMethod.Name & ": Datensatz kann nicht gespeichert werden!" & vbCrLf & vbCrLf & ex.Message, vbExclamation, "Fehler beim Speichern Data")
                End Try
            End Using
        End Using
        Return False
    End Function

End Class
