Imports System.Security.Cryptography
Imports com.sun.tools.corba.se
Imports VERAG_PROG_ALLGEMEIN
Public Class cZOLL_IMPORT
    Public Aviso As cAviso
    'Public SendungId As Integer = -1
    Dim KDSQL As New SQL
    Dim SQLAVISO As New cAvisoDAL
    Dim SQLADMIN As New adminfunc
    '  Dim avisoLinkId = -1
    Dim SPEDITIONSBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch
    Dim PosAnzahl As Integer = 0
    Dim SENDUNG As VERAG_PROG_ALLGEMEIN.cSendungen = Nothing
    Dim strManNr As String = "VERA"
    Dim strManNl As String = "SUB"

    Dim EZOLL_SQL As String = "EZOLL"

    Dim packstueckeAVISO_TMP As String = ""
    Dim RohmasseAviso As String = ""
    Dim packstueckeZOLL_TMP As String = ""
    Dim notFound = True
    Dim ATLAS_SERVER_VERBINDUNG As String = "ATLAS"



    Shared SQL As New VERAG_PROG_ALLGEMEIN.SQL

    Function countSpedbuchEntrysTC(filiale, BezugsNr, telanm_ART) As Integer
        Select Case telanm_ART
            Case "NCTS", "T1", "T2", "T2L" : Return countSpedbuchEntrysTC_EZA(filiale, BezugsNr)
            Case "AES" : Return countSpedbuchEntrysTC_AES(filiale, BezugsNr)
            Case Else : Return countSpedbuchEntrysTC_EZA(filiale, BezugsNr)
        End Select

    End Function

    Function countSpedbuchEntrysTC_EZA(filiale, BezugsNr) As Integer
        If If(BezugsNr, "") = "" Then Return -1
        Return SQL.getValueTxtBySqlVarList("SELECT isnull(count(*),0) FROM Speditionsbuch WHERE [FilialenNr]='" & filiale & "' AND [AtlasBezNrEZA]='" & BezugsNr & "'", "FMZOLL",, 0)
    End Function

    Function countSpedbuchEntrysTC_AES(filiale, BezugsNr) As Integer
        If If(BezugsNr, "") = "" Then Return -1
        Return SQL.getValueTxtBySqlVarList("SELECT isnull(count(*),0) FROM Speditionsbuch WHERE [FilialenNr]='" & filiale & "' AND [AtlasBezNrAES]='" & BezugsNr & "'", "FMZOLL",, 0)
    End Function


    Function countSpedbuchEntrysTC_NCTS(filiale, BezugsNr) As Integer
        If If(BezugsNr, "") = "" Then Return -1
        Return SQL.getValueTxtBySqlVarList("SELECT isnull(count(*),0) FROM Speditionsbuch WHERE [FilialenNr]='" & filiale & "' AND [AtlasBezNrNCTS]='" & BezugsNr & "'", "FMZOLL",, 0)
    End Function


    Function countSpedbuchEntrys_AbfertigungsNr(filiale, AbfertigungsNr) As Integer
        If If(AbfertigungsNr, "") = "" Then Return -1
        Return SQL.getValueTxtBySqlVarList("SELECT isnull(count(*),0) FROM Speditionsbuch WHERE [FilialenNr]='" & filiale & "' AND [AbfertigungsNr]='" & AbfertigungsNr & "'", "FMZOLL",, 0)
    End Function

    Public Function TelotecImport(TC As TELOTEC_Worker.cTelotec_Anmeldung) As Boolean

        'Function insertIntoSpedBuch() As Boolean
        Dim SPEDBUCH As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch

        Dim AbfertigungsNr = getAbfertigungsnummer(TC.telanm_BezugsNr)
        Dim FilialenNr = getFilialenNr(TC.telanm_BezugsNr)

        If FilialenNr <> "" AndAlso AbfertigungsNr <> "" AndAlso countSpedbuchEntrysTC(FilialenNr, TC.telanm_BezugsNr, TC.telanm_ART) = 0 AndAlso countSpedbuchEntrys_AbfertigungsNr(FilialenNr, AbfertigungsNr) = 0 Then


            SPEDBUCH.FilialenNr = FilialenNr
            ' SPEDBUCH.AbfertigungsNr = VERAG_PROG_ALLGEMEIN.cAllgemein.getMaxPosNrIncrement(SPEDBUCH.FilialenNr, Now.Year)
            SPEDBUCH.AbfertigungsNr = AbfertigungsNr
            SPEDBUCH.NewUNTER_NR()

            SPEDBUCH.Zollsystem_Land = "AT"
            SPEDBUCH.Zollsystem = "T"
            SPEDBUCH.Abfertigungsdatum = Now.ToShortDateString
            SPEDBUCH.Sachbearbeiter = "AUTO"


            Dim notfound = False

            Dim art = ""
            Select Case TC.telanm_ART
                Case "NCTS", "T1", "T2", "T2L" : TC.telanm_ART = "NCTS" : SPEDBUCH.AtlasBezNrNCTS = TC.telanm_BezugsNr
                Case "EUA", "EZA" : TC.telanm_ART = "EZA" : SPEDBUCH.AtlasBezNrEZA = TC.telanm_BezugsNr
                Case Else : TC.telanm_ART = "NCTS" : SPEDBUCH.AtlasBezNrNCTS = TC.telanm_BezugsNr
            End Select

            Dim PosAnzahl = 0
            ' TELOTECDatenbereitstellung(SPEDBUCH, Me.telanm_BezugsNr, notfound, art, PosAnzahl)
            SPEDBUCH = IMPORT(SPEDBUCH, TC.telanm_AvisoId, TC.telanm_SendungsId, "VERA", SPEDBUCH.FilialenNr, 3, SPEDBUCH.AtlasBezNrEZA, SPEDBUCH.AtlasBezNrNCTS, notfound, True)


            If Not notfound Then
                Return SPEDBUCH.SAVE
            Else
                Return False
            End If
        End If

        Return False 'Ohne Sendungsverweis kein eintrag...
    End Function


    Public Sub insertAbgabenTELOTEC(TC As TELOTEC_Worker.cTelotec_Anmeldung)
        ' MsgBox("aso")
        If TC.ABGABEN IsNot Nothing Then
            'MsgBox(TC.ABGABEN.Count)
            For Each ABG In TC.ABGABEN
                If ABG IsNot Nothing AndAlso ABG.Amnt > 0 Then
                    ' MsgBox(ABG.Amnt)
                    Dim ABGABEN As New VERAG_PROG_ALLGEMEIN.cAbgaben(TC.telanm_CRN, ABG.Ty, ABG.Amnt)
                    If Not ABGABEN.hasEntry Then
                        Dim LeistungsNr = ""
                        Dim LeistungsBez = ""

                        Dim saveAbgaben = True
                        Select Case ABG.Ty
                            Case "2EU", "2IG", "5EU" ' "2PE",
                                LeistungsNr = "20"
                            Case "B00" 'EUST
                                LeistungsNr = "20"
                                ABGABEN.Status = "A" 'AUSGEBUCHT
                            Case "5EV"   '"5EV"--> EV-KONTO!!
                                saveAbgaben = False
                            Case "2DU", "5DU", "5ZO", "5ZZ", "A20", "A30", "A35", "A40", "A45", "C00", "C10", "A00"
                                LeistungsNr = "76"
                            Case Else '1BD,0ML, 0PB, 0PG, 0PS, 1LG, 1ZN, 2AS, 2KO, 2RB, 2SB, 2SI, 2VF, 2VS, 5SI, 5VS, 6AK, 6BE, 6MS, 6SS, 6TS, 6ZW, 9EA, D00,D10,E00
                                LeistungsNr = "482"
                                LeistungsBez = getLeistungsBez(ABG.Ty)
                        End Select
                        If saveAbgaben Then

                            ABGABEN.Belegart = ABG.Ty
                            ABGABEN.Betrag = CDbl(ABG.Amnt)
                            ABGABEN.Status = Nothing
                            ABGABEN.LeistungsNr = LeistungsNr
                            ABGABEN.Bezugsnummer = TC.telanm_BezugsNr
                            ABGABEN.Registriernummer = TC.telanm_CRN
                            '  ABGABEN.AOFD = A.KennBuchstabenAufschub
                            ABGABEN.AKTO = TC.Hea_DefPayRef '"3027279" 'd1.Abgabenkonto 'IMEX--> FIX!!!
                            'ABGABEN.Fälligkeitsdatum = A.Faelligkeit
                            '  ABGABEN.Mandant = "VERG"
                            ABGABEN.Niederlassung = TC.Bereich_ID
                            ABGABEN.Abfertigungsdatum = ABG.Erstelldatum
                            ABGABEN.Übernahmedatum = ABG.Erstelldatum
                            ABGABEN.Eingabedatum = Now.ToShortDateString
                            ABGABEN.Sachbearbeiter = "AUTO"
                            ABGABEN.LeistungsBez = LeistungsBez
                            If If(ABGABEN.Bezugsnummer, "").ToString.Length > 35 Then ABGABEN.Bezugsnummer = ABGABEN.Bezugsnummer.ToString.Substring(0, 35)
                            If If(ABGABEN.Registriernummer, "").ToString.Length > 21 Then ABGABEN.Registriernummer = ABGABEN.Registriernummer.ToString.Substring(0, 21)

                            Dim errHInweis = "ATC: " & ABGABEN.Registriernummer & " - BezugsNr: " & ABGABEN.Bezugsnummer
                            ABGABEN.SAVE(errHInweis)


                            Dim EDIFACTNachrichtenNr = ""
                            'Aufschub - Überwachung:
                            Select Case CInt(ABGABEN.AKTO)
                                Case 3027279 : tryToInsertProgramm(ABGABEN.Eingabedatum, ABGABEN.Betrag, 1, EDIFACTNachrichtenNr, ABGABEN.Registriernummer, 0, ABGABEN.Fälligkeitsdatum)
                                    'UNISPED Case XXX: tryToInsertProgramm(ABGABEN.Eingabedatum, ABGABEN.Betrag,XXX, EDIFACTNachrichtenNr, ABGABEN.Registriernummer, 0, ABGABEN.Fälligkeitsdatum)

                                    'Case 2718 : VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMailTEST("al@verag.ag", "AUFSCHUB IMEX: " & ABGABEN.Betrag, "AUFSCHUB IMEX: " & ABGABEN.Betrag & vbNewLine & ABGABEN.Bezugsnummer)
                            End Select

                        End If
                    End If
                End If

            Next
        End If
    End Sub


    Public Function tryToInsertProgramm(brgak_datum, brgak_betrag, brgak_brgaktoId, brgak_filename, brgak_atc, brgak_fileline, brgak_faelligkeitsdatum) As Boolean

        Dim sql As String = " begin tran" &
                            " if Not exists (select * from tblBrgAufschub with (updlock,serializable) where brgak_filename = @brgak_filename AND  brgak_fileline=@brgak_fileline ) " &
                                   " begin " &
                                   " INSERT INTO tblBrgAufschub " &
                                   " (brgak_datum, brgak_betrag, brgak_brgaktoId, brgak_filename, brgak_atc,brgak_fileline,brgak_faelligkeitsdatum) VALUES " &
                                   " (@brgak_datum, @brgak_betrag, @brgak_brgaktoId, @brgak_filename, @brgak_atc,@brgak_fileline,@brgak_faelligkeitsdatum) " &
                                " End " &
                                " commit tran "


        Dim cn As System.Data.SqlClient.SqlConnection = VERAG_PROG_ALLGEMEIN.SQL.GetNewOpenConnectionADMIN

        Using cn
            Using cmd As New System.Data.SqlClient.SqlCommand(sql, cn)
                cmd.Parameters.AddWithValue("@brgak_datum", brgak_datum)
                cmd.Parameters.AddWithValue("@brgak_betrag", brgak_betrag)
                cmd.Parameters.AddWithValue("@brgak_brgaktoId", brgak_brgaktoId)
                cmd.Parameters.AddWithValue("@brgak_filename", brgak_filename)
                cmd.Parameters.AddWithValue("@brgak_atc", brgak_atc)
                cmd.Parameters.AddWithValue("@brgak_fileline", brgak_fileline)
                cmd.Parameters.AddWithValue("@brgak_faelligkeitsdatum", brgak_faelligkeitsdatum)
                Try
                    cmd.ExecuteNonQuery()

                    'Lösche File:


                    Return True
                Catch ex As System.Data.SqlClient.SqlException
                    VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
                End Try
            End Using
        End Using
        cn.Close()
        Return False
    End Function







    Shared Function getLeistungsBez(LeistungsBez)
        Select Case LeistungsBez
            Case "0ML"
                getLeistungsBez = "Altlastenbeitrag"
            Case "0PB"
                getLeistungsBez = "Punzierungskontrollgeb. Platin"
            Case "0PG"
                getLeistungsBez = "Punzierungskontrollgebühr Gold"
            Case "0PS"
                getLeistungsBez = "Punzierungskontrollgeb. Silber"
            Case "1BD"
                getLeistungsBez = "Bemessungsdatum"
            Case "1LG"
                getLeistungsBez = "Lagergeld gemäß §104 ZollR-DG"
            Case "1ZK"
                getLeistungsBez = "Kreditzinsen, Säumniszinsen"
            Case "1ZN"
                getLeistungsBez = "Nebenansprüche"
            Case "2AS"
                getLeistungsBez = "Agrarsicherheiten"
            Case "2DU"
                getLeistungsBez = "Antidumping-Sicherheit"
            Case "2EU"
                getLeistungsBez = "EUSt-Sicherheit"
            Case "2IG"
                getLeistungsBez = "Sicherheit EUSt ig. Lieferung"
            Case "2KO"
                getLeistungsBez = "Sicherheit für Kontingent"
            Case "2PE"
                getLeistungsBez = "Sicherheit bei Einfuhrwerten"
            Case "2RB"
                getLeistungsBez = "Sicherheit Bürgerschaft"
            Case "2SB"
                getLeistungsBez = "Summe der befreiten Sicherheit"
            Case "2SI"
                getLeistungsBez = "Sicherheit Geldbetragerlag"
            Case "2VF"
                getLeistungsBez = "Sicherheit bei Verifizierung"
            Case "2VS"
                getLeistungsBez = "Summe der vorg. Sicherheit"
            Case "2ZG"
                getLeistungsBez = "Zusatzzoll Geflügel"
            Case "2ZZ"
                getLeistungsBez = "Zusatzzoll Zucker"
            Case "2ZZ"
                getLeistungsBez = "Zusatzzoll 2ZZ"
            Case "5DU"
                getLeistungsBez = "Antidumping-und Ausgleichszoll"
            Case "5EU"
                getLeistungsBez = "Einfuhrumsatzsteuer"
            Case "5EV"
                getLeistungsBez = "EUSt gem. §26 Abs. 3Z.2UStG"
            Case "5SI"
                getLeistungsBez = "Agrarsicherheit"
            Case "5VS"
                getLeistungsBez = "Verbrauchsteuern"
            Case "5ZO"
                getLeistungsBez = "Zoll 5ZO"
            Case "5ZZ"
                getLeistungsBez = "Zusatzzoll 5ZZ"
            Case "6AK"
                getLeistungsBez = "Alkoholsteuer"
            Case "6BE"
                getLeistungsBez = "Biersteuer"
            Case "6MS"
                getLeistungsBez = "Mineralölsteuer"
            Case "6SS"
                getLeistungsBez = "Schaumweinsteuer"
            Case "6TS"
                getLeistungsBez = "Tabaksteuer"
            Case "6ZW"
                getLeistungsBez = "Zwischenerzeugnissteuer"
            Case "9EA"
                getLeistungsBez = "Summe Gesamtabgaben"
            Case "A00"
                getLeistungsBez = "Zölle auf gewerbliche Waren"
            Case "A00"
                getLeistungsBez = "Zollabgaben"
            Case "A10"
                getLeistungsBez = "Zölle landwirt. Erzeugnisse"
            Case "A20"
                getLeistungsBez = "Zusatzzölle"
            Case "A30"
                getLeistungsBez = "endgültige Antidumpingzölle"
            Case "A35"
                getLeistungsBez = "vorläufige Antidumpingzölle"
            Case "A40"
                getLeistungsBez = "endgültiger Ausgleichszoll"
            Case "A45"
                getLeistungsBez = "vorläufiger Ausgleichszoll"
            Case "B00"
                getLeistungsBez = "Einfuhrumsatzsteuer(EUSt)"
            Case "B10"
                getLeistungsBez = "Ausgleichszinsen(EUSt)"
            Case "C00"
                getLeistungsBez = "Ausfuhrabgaben"
            Case "C10"
                getLeistungsBez = "Ausfuhrabg. landwirt. Erzeug."
            Case "D00"
                getLeistungsBez = "Verzugszinsen"
            Case "D10"
                getLeistungsBez = "Ausgleichszinsen"
            Case "E00"
                getLeistungsBez = "Abgaben anderer Länder"
            Case Else
                getLeistungsBez = ""
        End Select
    End Function


    Public Shared Function EZOLLImport(LRN, art, Optional ByRef SPEDBUCH_TMP = Nothing) As Boolean
        Try

            Dim firmaTmp = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
            VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERAG" 'Wichtig für Spedbucheintrag
            Dim SPEDBUCH As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch

            If True Then
                'Filiale erkennen:
                Dim filialeBez = ""
                Dim filiale = getFiliale(LRN, filialeBez)
                Select Case filiale
                    Case "5501" : VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX"
                    Case "4801", "4802" : VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" ' Return False 'Keine Atoerfassung --> ab 11.02.2025 schon!
                    Case "5801" : VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "FRONTOFFICE"
                    Case "5601" : VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "UNISPED"
                End Select
                Dim abfertigungsnummer = getAbfertigungsnummer(LRN)

                If tryFindAviso(LRN, SPEDBUCH.AvisoID, SPEDBUCH.SendungID) Then
                    SPEDBUCH_TMP = SPEDBUCH
                    If filiale <> "" And abfertigungsnummer <> "" Then

                        If countSpedbuchEntrys(filiale, LRN, art) = 0 Then 'gibts einen SPED mit BezugsNr -> 

                            If countSpedbuchEntrys(filiale, abfertigungsnummer, "") = 0 Then 'gibts einen SPED mit Filiale-AbfertiungsNr

                                SPEDBUCH.FilialenNr = filiale
                                SPEDBUCH.AbfertigungsNr = abfertigungsnummer
                                SPEDBUCH.NewUNTER_NR()

                                SPEDBUCH.Abfertigungsanzahl = 1
                                SPEDBUCH.Fakturiert = 0
                                ' SPEDBUCH.AtlasBezNrEZA = LRN
                                SPEDBUCH.Zollsystem = "E"
                                SPEDBUCH.Sachbearbeiter = "AUTO"

                                Dim ZOLL_IMPORT As New cZOLL_IMPORT
                                Dim notfound = False
                                Dim posAnzahl = 0

                                Select Case art
                                    Case "NCTS" : SPEDBUCH.AtlasBezNrNCTS = LRN
                                    Case "AES" : SPEDBUCH.AtlasBezNrAES = LRN
                                    Case Else : SPEDBUCH.AtlasBezNrEZA = LRN
                                End Select

                                SPEDBUCH = ZOLL_IMPORT.IMPORT(SPEDBUCH, SPEDBUCH.AvisoID, SPEDBUCH.SendungID, "VERA", filialeBez, 1, SPEDBUCH.AtlasBezNrEZA, SPEDBUCH.AtlasBezNrNCTS, notfound, True,, SPEDBUCH.AtlasBezNrAES)

                                SPEDBUCH_TMP = SPEDBUCH

                                If notfound Then
                                    'VERAG_PROG_ALLGEMEIN.cErrorHandler.sendERRORperMail("HEUREKA " & art & " !!", LRN, Now.ToString("yyyy.MM.dd HH:mm"), "d.breimaier@verag.ag", "", "", "")
                                    Return False
                                End If
                                VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = firmaTmp

                                If SPEDBUCH.SAVE Then
                                    VERAG_PROG_ALLGEMEIN.cSendungen.SET_SpedbuchEntry(SPEDBUCH.SendungID, True)
                                    Return True
                                Else
                                    Return False
                                End If


                            ElseIf art <> "" Then

                                Dim SPEDITIONSBUCH_UPDATE As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(filiale, abfertigungsnummer, 0)

                                If SPEDITIONSBUCH_UPDATE.hasEntry Then

                                    If SPEDITIONSBUCH_UPDATE.Zollsystem = "" Then
                                        SPEDITIONSBUCH_UPDATE.Zollsystem = "E"
                                    End If

                                    Select Case art
                                        Case "NCTS"
                                            If SPEDITIONSBUCH_UPDATE.AtlasBezNrNCTS = "" Then
                                                SPEDITIONSBUCH_UPDATE.AtlasBezNrNCTS = LRN
                                                SPEDITIONSBUCH_UPDATE.SAVE()
                                            End If

                                        Case "AES"
                                            If SPEDITIONSBUCH_UPDATE.AtlasBezNrAES = "" Then
                                                SPEDITIONSBUCH_UPDATE.AtlasBezNrAES = LRN
                                                SPEDITIONSBUCH_UPDATE.SAVE()
                                            End If

                                        Case "EZA"
                                            If SPEDITIONSBUCH_UPDATE.AtlasBezNrEZA = "" Then
                                                SPEDITIONSBUCH_UPDATE.AtlasBezNrEZA = LRN
                                                SPEDITIONSBUCH_UPDATE.SAVE()
                                            End If

                                    End Select
                                End If


                            End If

                        End If
                    End If
                End If

            Else

                VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = firmaTmp
                Return False 'Ohne Sendungsverweis kein eintrag...
            End If
            VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = firmaTmp
            Return False

        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name, ERROR_OP.MAIL)
        End Try
    End Function

    Public Shared Function tryFindAviso(LRN, ByRef AvisoID, ByRef SendungID) As Boolean
        Dim srchStrFiliale = ""
        Dim srchStrAbf = ""
        LRN = LRN.ToString.Replace("-", "/")
        If LRN.Contains("/") Then
            Dim split = LRN.Split("/")
            If split.Length >= 2 Then
                srchStrFiliale = split(0)
                srchStrAbf = split(1)
                ' ElseIf  Then
                '      srchStrAbf = split(X)
            Else
                Return False
            End If

        End If
        If Not IsNumeric(srchStrFiliale) Or Not IsNumeric(srchStrAbf) Then Return False
        If srchStrFiliale.Length <> 4 Then Return False
        'If srchStrAbf.Length > 8 Then srchStrAbf = srchStrAbf.Substring(0, 8)

        If srchStrAbf.Length < 8 Then srchStrAbf = Now.ToString("yy") & CInt(srchStrAbf).ToString("000000")


        Dim sqlstr = " select [tblSnd_SendungID],[tblSnd_AvisoID]  FROM [tblSendungen] where '" & srchStrAbf & "' like ('%' + cast(AbfertigungsNr as varchar(10))+ '%') and FilialenNr ='" & srchStrFiliale & "' and AbfertigungsNr >0"

        Dim dt As DataTable = SQL.loadDgvBySql(sqlstr, "AVISO")
        If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then
            SendungID = dt.Rows(0)("tblSnd_SendungID")
            AvisoID = dt.Rows(0)("tblSnd_AvisoID")
            Return True
        End If

        Return False
    End Function



    Shared Function countSpedbuchEntrys(filiale, bezugsnr, art) As Integer
        If art = "NCTS" Then
            Return countSpedbuchEntrysNCTS(filiale, bezugsnr)
        ElseIf art = "EZA" Then
            Return countSpedbuchEntrysEZA(filiale, bezugsnr)
        ElseIf art = "AES" Then
            Return countSpedbuchEntrysAES(filiale, bezugsnr)
        Else
            Return countSpedbuchEntryALL(filiale, bezugsnr)
        End If
    End Function
    Shared Function countSpedbuchEntrysNCTS(filiale, ncts) As Integer
        If If(ncts, "") = "" Then Return 0
        Return SQL.getValueTxtBySqlVarList("SELECT isnull(count(*),0) FROM Speditionsbuch WHERE [FilialenNr]='" & filiale & "' AND AtlasBezNrNCTS='" & ncts & "'", "FMZOLL")
    End Function

    Shared Function countSpedbuchEntrysEZA(filiale, eza) As Integer
        If If(eza, "") = "" Then Return 0
        Return SQL.getValueTxtBySqlVarList("SELECT isnull(count(*),0) FROM Speditionsbuch WHERE [FilialenNr]='" & filiale & "' AND AtlasBezNrEZA='" & eza & "'", "FMZOLL")
    End Function

    Shared Function countSpedbuchEntrysAES(filiale, AES) As Integer
        If If(AES, "") = "" Then Return 0
        Return SQL.getValueTxtBySqlVarList("SELECT isnull(count(*),0) FROM Speditionsbuch WHERE [FilialenNr]='" & filiale & "' AND AtlasBezNrAES='" & AES & "'", "FMZOLL")
    End Function

    Shared Function countSpedbuchEntryALL(filiale, bezugsnr) As Integer
        If If(bezugsnr, "") = "" Then Return 0
        Return SQL.getValueTxtBySqlVarList("SELECT isnull(count(*),0) FROM Speditionsbuch WHERE [FilialenNr]='" & filiale & "' AND AbfertigungsNr='" & bezugsnr & "'", "FMZOLL")
    End Function

    Shared Function getFiliale(ByVal bezugsNr, ByRef filialeBez) As String
        If If(bezugsNr, "").ToString.Length > 4 Then
            Select Case bezugsNr.ToString.Substring(0, 4)
                Case "4803" : Return bezugsNr.ToString.Substring(0, 4) '...... derzeit nur 4803
                Case "7001" : Return bezugsNr.ToString.Substring(0, 4) '...... derzeit nur 4803
                Case "4805" : Return bezugsNr.ToString.Substring(0, 4) '...... derzeit nur 4803
                Case "4811" : Return bezugsNr.ToString.Substring(0, 4) '...... derzeit nur 4803
                Case "5003" : Return bezugsNr.ToString.Substring(0, 4) '...... derzeit nur 4803
                Case "5103" : Return bezugsNr.ToString.Substring(0, 4) '...... derzeit nur 4803
                Case "5303" : Return bezugsNr.ToString.Substring(0, 4) '...... derzeit nur 4803
                Case "7001" : Return bezugsNr.ToString.Substring(0, 4) '...... derzeit nur 4803
                Case Else : Return bezugsNr.ToString.Substring(0, 4)

                    ' Case "5601" : Return bezugsNr.ToString.Substring(0, 4) '...... derzeit nur 4803
                    'Case "4801", "4803", "4805", "4807", "4811", "5003", "5103", "5303" : Return bezugsNr.ToString.Substring(0, 4) ...... derzeit nur 4803
                    'filialeBez SUB, NKD, WAI,.-..
            End Select
        End If
        Return ""
    End Function



    Shared Function getFilialenNr(ByVal bezugsNr) As String
        getFilialenNr = ""
        If If(bezugsNr, "").ToString.Length > 4 Then

            Dim abf = ""
            For Each s In bezugsNr.ToString.Substring(0, 4)
                If Not IsNumeric(s) Then Exit For
                abf &= s
            Next
            If IsNumeric(abf) Then
                If CLng(abf) < 9999 Then
                    If CLng(abf) > 1000 Then
                        Return abf
                    End If
                End If
            End If
        End If
        Return ""

    End Function


    Shared Function getAbfertigungsnummer(ByVal bezugsNr) As String
        getAbfertigungsnummer = ""
        If If(bezugsNr, "").ToString.Length > 5 Then

            Dim abf = ""
            For Each s In bezugsNr.ToString.Substring(5)
                If Not IsNumeric(s) Then Exit For
                abf &= s
            Next
            If IsNumeric(abf) Then
                If CLng(abf) < 99000000 Then
                    If CLng(abf) > 18000000 Then
                        Return abf
                    Else
                        Return Now.ToString("yy") & CInt(abf).ToString("000000")
                    End If
                End If
            End If
        End If
        Return ""

    End Function
    'Zollsystem 0,1
    Public Function IMPORT(SPEDITIONSBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch, avisoLinkId As Integer, SendungId As Integer, strManNr As String, strManNl As String, Zollsystem As String, EZA_Nr As String, NCTS_Nr As String, ByRef notFound As Boolean, Optional autoImport As Boolean = False, Optional Personalnummer As Integer = -1, Optional AES_Nr As String = "") As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch

        Me.SPEDITIONSBUCH = SPEDITIONSBUCH
        Me.strManNr = strManNr
        Me.strManNl = strManNl

        If strManNl = "SBG" Then
            ATLAS_SERVER_VERBINDUNG = "ATLAS_SBG"
        Else
            ATLAS_SERVER_VERBINDUNG = "ATLAS"
        End If

        If SendungId > 0 Then SENDUNG = New VERAG_PROG_ALLGEMEIN.cSendungen(SendungId)

        If EZA_Nr = "" And NCTS_Nr = "" Then
            If SENDUNG IsNot Nothing AndAlso If(SENDUNG.tblSnd_DakosyRef, "") <> "" Then
                Select Case SENDUNG.tblSnd_Abfertigungsart_ID
                    Case 5, 6, 24, 33, 34, 37, 40
                        NCTS_Nr = SENDUNG.tblSnd_DakosyRef
                        SPEDITIONSBUCH.AtlasBezNrNCTS = NCTS_Nr
                    Case Else
                        EZA_Nr = SENDUNG.tblSnd_DakosyRef
                        SPEDITIONSBUCH.AtlasBezNrEZA = EZA_Nr
                End Select
                Zollsystem = 2
            End If
        End If
        '-------------------------------------------------------------------------------------------------------------

        ' ATLAS / EZOLL
        ' Dim strManNr = txtFirma.Text
        ' Dim strManNl As String = cboNiederlassung.Text

        Select Case Zollsystem
            Case 0 'ATLAS
                SPEDITIONSBUCH.Zollsystem = "A"
                If EZA_Nr <> "" Then
                    '  SPEDITIONSBUCH.AtlasBezNrEZA = EZA_Nr
                    AtlasEZADatenbereitstellung(EZA_Nr) 'BSP: 4/4817/16
                ElseIf NCTS_Nr <> "" Then
                    '  SPEDITIONSBUCH.AtlasBezNrNCTS = NCTS_Nr
                    AtlasNCTSDatenbereitstellung(NCTS_Nr) '4/4990/16
                End If
                notFound = Me.notFound
            Case 1 'ezoll

                EZOLL_SQL = "EZOLL"
                Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
                    Case "UNISPED" : EZOLL_SQL = "EZOLL_UNISPED"
                End Select

                SPEDITIONSBUCH.Zollsystem_Land = "AT"
                SPEDITIONSBUCH.Zollsystem = "E"
                If EZA_Nr <> "" Then
                    ' SPEDITIONSBUCH.AtlasBezNrEZA = EZA_Nr
                    EZollEZADatenbereitstellung(EZA_Nr, False)
                ElseIf AES_Nr <> "" Then
                    EZollEZADatenbereitstellung(AES_Nr, True)
                ElseIf NCTS_Nr <> "" Then
                    '    SPEDITIONSBUCH.AtlasBezNrNCTS = NCTS_Nr
                    EZollNCTSDatenbereitstellung(NCTS_Nr)
                End If
                notFound = Me.notFound
            Case 2 'dakosy
                SPEDITIONSBUCH.Zollsystem_Land = "DE"
                SPEDITIONSBUCH.Zollsystem = "D"
                If AES_Nr <> "" Then
                    '    SPEDITIONSBUCH.AtlasBezNrNCTS = NCTS_Nr
                    DAKOSY_Worker.cDakosyEZA.DakosyAESDatenbereitstellung(SPEDITIONSBUCH, AES_Nr, notFound, PosAnzahl)
                ElseIf EZA_Nr <> "" Then
                    If SPEDITIONSBUCH.Abfertigungsart = "7" Then
                        DAKOSY_Worker.cDakosyEZA.DakosyAESDatenbereitstellung(SPEDITIONSBUCH, EZA_Nr, notFound, PosAnzahl)
                    Else
                        DAKOSY_Worker.cDakosyEZA.DakosyEZADatenbereitstellung(SPEDITIONSBUCH, EZA_Nr, notFound, PosAnzahl)
                    End If
                ElseIf NCTS_Nr <> "" Then
                    '    SPEDITIONSBUCH.AtlasBezNrNCTS = NCTS_Nr
                    DAKOSY_Worker.cDakosyNCTSOut004.DakosyNCTSDatenbereitstellung(SPEDITIONSBUCH, NCTS_Nr, notFound)
                    If notFound Then DAKOSY_Worker.cDakosyNCTSOut.DakosyNCTSDatenbereitstellung(SPEDITIONSBUCH, NCTS_Nr, notFound)
                Else End If
                Me.notFound = notFound
            Case 3 'telotec
                SPEDITIONSBUCH.Zollsystem_Land = "AT"
                SPEDITIONSBUCH.Zollsystem = "T"
                If EZA_Nr <> "" Then
                    TELOTEC_Worker.cTelotec_Anmeldung.TELOTECDatenbereitstellung(SPEDITIONSBUCH, EZA_Nr, notFound, "EZA", PosAnzahl)
                ElseIf NCTS_Nr <> "" Then
                    '    SPEDITIONSBUCH.AtlasBezNrNCTS = NCTS_Nr
                    TELOTEC_Worker.cTelotec_Anmeldung.TELOTECDatenbereitstellung(SPEDITIONSBUCH, NCTS_Nr, notFound, "NCTS", PosAnzahl)
                End If
                Me.notFound = notFound
            Case Else 'Kein Zollsystem
        End Select


        If avisoLinkId = 0 Or SendungId = 0 Then
            Dim DY As DAKOSY_Worker.cDakosy_Zollanmeldungen = DAKOSY_Worker.cDakosy_Zollanmeldungen.LOADByBezugsNr(If(EZA_Nr <> "", EZA_Nr, NCTS_Nr))
            If DY IsNot Nothing Then
                If avisoLinkId = 0 Then avisoLinkId = If(DY.dy_AvisoId, 0)
                If SendungId = 0 Then SendungId = If(DY.dy_SendungsId, 0)
            End If
        End If

        '------------------------------------------------------------------------------------------------
        '--- Versuche die Verknüpfung über Bezugsnummer (AbfertigungsNr/FilialeNr) zu finden ------------
        '------------------------------------------------------------------------------------------------
        If avisoLinkId = 0 Or SendungId = 0 Then
            Dim BezugsNrSearch = If(EZA_Nr <> "", EZA_Nr, NCTS_Nr)
            If BezugsNrSearch.Length > 13 Then BezugsNrSearch = BezugsNrSearch.Substring(0, 13) '4801/28000000

            If BezugsNrSearch.Length = 13 AndAlso BezugsNrSearch.Contains("/") Then
                Dim FilialeNr As Integer
                Dim AbfertigungsNr As Integer

                If BezugsNrSearch(4) = "/"c AndAlso IsNumeric(BezugsNrSearch.Substring(0, 4)) AndAlso IsNumeric(BezugsNrSearch.Substring(5)) Then

                    FilialeNr = CInt(BezugsNrSearch.Substring(0, 4))
                    AbfertigungsNr = CInt(BezugsNrSearch.Substring(5))

                    Dim SND = VERAG_PROG_ALLGEMEIN.cSendungen.LOADByFilialenNrAbfertigungsNr(FilialeNr, AbfertigungsNr)
                    If SND IsNot Nothing Then
                        avisoLinkId = SND.tblSnd_AvisoID
                        SendungId = SND.tblSnd_SendungID
                    End If

                    Console.WriteLine("FilialeNr: " & FilialeNr & ", AbfertigungsNr: " & AbfertigungsNr)
                Else
                    Console.WriteLine("Ungültiges Format!")
                End If
            End If

        End If
        '------------------------------------------------------------------------------------------------



        '-------------------------------------------------------------------------------------------------------------


        If SPEDITIONSBUCH.Abfertigungsdatum Is Nothing Then SPEDITIONSBUCH.Abfertigungsdatum = Now.ToShortDateString

        If SendungId > 0 Then SPEDITIONSBUCH.SendungID = SendungId

        '   Dim fNEF = DirectCast(Me.Owner, frmNacherfassungNEU)
        If SendungId = 0 And SPEDITIONSBUCH.SendungID > 0 Then SendungId = SPEDITIONSBUCH.SendungID 'Falls falsch übergeben
        If SendungId > 0 And SENDUNG Is Nothing Then SENDUNG = New VERAG_PROG_ALLGEMEIN.cSendungen(SendungId)
        ' Dim dt As DataTable = SQLAVISO.loadDataTableBySQL("SELECT * FROM tblSendungen WHERE tblSnd_SendungID='" & SendungId & "' ")

        If SENDUNG IsNot Nothing Then
            ' Dim r As DataRow = dt.Rows(0)
            If SENDUNG.tblSnd_Warenbezeichnung <> "" Or SENDUNG.tblSnd_Abfertigungsart_ID = 23 Then
                packstueckeAVISO_TMP = IIf(SENDUNG.tblSnd_Colli <> "", SENDUNG.tblSnd_Colli & " Pk. ", "")
                packstueckeAVISO_TMP &= IIf(SENDUNG.tblSnd_Warenbezeichnung <> "", SENDUNG.tblSnd_Warenbezeichnung, "")
                packstueckeAVISO_TMP &= IIf(SENDUNG.tblSnd_Gewicht <> "", ", " & SENDUNG.tblSnd_Gewicht & " kg ", "")
            End If
            RohmasseAviso = IIf(SENDUNG.tblSnd_Gewicht <> "", SENDUNG.tblSnd_Gewicht, "")

            If SPEDITIONSBUCH.Abfertigungsart <= 0 Then SPEDITIONSBUCH.Abfertigungsart = SENDUNG.tblSnd_Abfertigungsart_ID
            If SPEDITIONSBUCH.Abfertigungsanzahl = 0 Then SPEDITIONSBUCH.Abfertigungsanzahl = SENDUNG.tblSnd_anzahlHandling
            If SPEDITIONSBUCH.AbfertigungsanzahlPos IsNot Nothing AndAlso IsNumeric(SPEDITIONSBUCH.AbfertigungsanzahlPos) Then
                SPEDITIONSBUCH.AbfertigungsanzahlPos = SENDUNG.tblSnd_anzahlPOS ' (NOCH) Keine Funktion!
                SPEDITIONSBUCH.Vermerk = "Pos-Anzahl: " & SPEDITIONSBUCH.AbfertigungsanzahlPos
            End If
            If SPEDITIONSBUCH.PersonalnummerQS <= 0 Then SPEDITIONSBUCH.PersonalnummerQS = SENDUNG.tblSnd_QS_MA
            If SPEDITIONSBUCH.PersonalnummerAbklTR <= 0 Then SPEDITIONSBUCH.PersonalnummerAbklTR = SENDUNG.tblSnd_AbklaerungTR_MA

            If SENDUNG.tblSnd_FilialeAbklaerung IsNot Nothing AndAlso IsNumeric(SENDUNG.tblSnd_FilialeAbklaerung) AndAlso SENDUNG.tblSnd_FilialeAbklaerung > 0 Then
                SPEDITIONSBUCH.FilialenNrAbklaerung = SENDUNG.tblSnd_FilialeAbklaerung
                'Else
                '    SPEDITIONSBUCH.FilialenNrHandling = SPEDITIONSBUCH.FilialenNr
            End If

            SENDUNG.LOAD_ABRECHNUNG()
            Dim FindPOS = SENDUNG.ABRECHNUNG.Find(Function(x) x.sndabr_beteiligter = "AUFTR" And x.sndabr_wert = "ERSTATTUNG")
            If FindPOS IsNot Nothing Then SPEDITIONSBUCH.AuftraggeberBetragKassiert = If(FindPOS.sndabr_preis, 0)

            SetBarKassiert(SPEDITIONSBUCH)

            'If If(SENDUNG.tblSnd_bar, False) Then
            'SPEDITIONSBUCH.Bar = True
            '  If (SENDUNG.tblSnd_barBeleg IsNot Nothing) And SPEDITIONSBUCH.ErfassungsNr = "" Then SPEDITIONSBUCH.ErfassungsNr = "VERA/" & VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG & "/" & CDate(SPEDITIONSBUCH.Abfertigungsdatum).ToShortDateString & "/" & SENDUNG.tblSnd_barBeleg
            '  If (SENDUNG.tblSnd_betrag IsNot Nothing) And SPEDITIONSBUCH.Barzahlungsbetrag = 0 Then SPEDITIONSBUCH.Barzahlungsbetrag = SENDUNG.tblSnd_betrag
            '   End If
            '


            If SPEDITIONSBUCH.NCTS_Verzollungsadresse Is Nothing OrElse SPEDITIONSBUCH.NCTS_Verzollungsadresse = "" Then
                SPEDITIONSBUCH.NCTS_Verzollungsadresse = SENDUNG.tblSnd_NCTSVerzollungsadresse

                SPEDITIONSBUCH.NCTS_Verzollungsadresse = If(SENDUNG.tblSnd_NCTSVerzollungsadresse, "")
                SPEDITIONSBUCH.NCTS_Verzollungsadresse &= vbNewLine & If(SENDUNG.NCTS_Verzollungsadresse_Strasse, "")
                SPEDITIONSBUCH.NCTS_Verzollungsadresse &= vbNewLine & If(SENDUNG.NCTS_Verzollungsadresse_Land, "") & " " & If(SENDUNG.NCTS_Verzollungsadresse_PLZ, "") & " " & If(SENDUNG.NCTS_Verzollungsadresse_Ort, "")
                SPEDITIONSBUCH.NCTS_Verzollungsadresse &= vbNewLine
                SPEDITIONSBUCH.NCTS_Verzollungsadresse = SPEDITIONSBUCH.NCTS_Verzollungsadresse.Trim

            End If
            If SPEDITIONSBUCH.Endempfänger Is Nothing OrElse SPEDITIONSBUCH.Endempfänger = "" Then
                SPEDITIONSBUCH.Endempfänger = SENDUNG.tblSnd_Endempfaenger
            End If

            If IsNull(SPEDITIONSBUCH.KdAuftragsNr) Then SPEDITIONSBUCH.KdAuftragsNr = If(SENDUNG.tblSnd_KdAuftragsNr, "")
            If IsNull(SPEDITIONSBUCH.KdAuftragsNrAvisierer) Then SPEDITIONSBUCH.KdAuftragsNrAvisierer = If(SENDUNG.tblSnd_KdAuftragsNrAvisierer, "")
            If IsNull(SPEDITIONSBUCH.KdAuftragsNrEmpfaenger) Then SPEDITIONSBUCH.KdAuftragsNrEmpfaenger = If(SENDUNG.tblSnd_KdAuftragsNrEmpfaenger, "")
            If IsNull(SPEDITIONSBUCH.KdAuftragsNrFrachtfuehrer) Then SPEDITIONSBUCH.KdAuftragsNrFrachtfuehrer = If(SENDUNG.tblSnd_KdAuftragsNrFrachtfuehrer, "")

        End If

        If avisoLinkId > 0 Then
            SPEDITIONSBUCH.AvisoID = avisoLinkId
            Dim sgut = CInt((New SQL).getValueTxtBySql("SELECT count(*) FROM tblSendungen WHERE tblSnd_AvisoID='" & avisoLinkId & "' ", "AVISO"))
            If sgut = 1 Then
                SPEDITIONSBUCH.SgutKompl = "K"
            ElseIf sgut > 1 Then
                SPEDITIONSBUCH.SgutKompl = "S"
            End If


            Aviso = SQLAVISO.LesenAviso(avisoLinkId, "")
            If Aviso IsNot Nothing Then
                ' If SPEDITIONSBUCH.Abfertigungsdatum Is Nothing Then SPEDITIONSBUCH.Abfertigungsdatum = CDate(Aviso.Freigabe).ToShortDateString
                If Aviso.Freigabe > CDate("01.01.2000") Then 'SPEDITIONSBUCH.Abfertigungsdatum Then
                    SPEDITIONSBUCH.Abfertigungsdatum = CDate(Aviso.Freigabe).ToShortDateString
                End If
                If Aviso.FreigabeFiliale IsNot Nothing AndAlso IsNumeric(Aviso.FreigabeFiliale) AndAlso Aviso.FreigabeFiliale > 0 Then
                    SPEDITIONSBUCH.FilialenNrHandling = Aviso.FreigabeFiliale
                    'Else
                    '    SPEDITIONSBUCH.FilialenNrHandling = SPEDITIONSBUCH.FilialenNr
                End If

                '  pnl3.Visible = True
                '  txtAuftraggeber.Text = Aviso.Auftraggeber
                '  txtAuftraggeberKdNr.Text = Aviso.Auftraggeber_KdNr

                'NICHT MEHR:
                'SPEDITIONSBUCH.Avisierer = Aviso.Auftraggeber
                'If getint(Aviso.Auftraggeber_KdNr) > 0 Then SPEDITIONSBUCH.AvisiererKundenNr = Aviso.Auftraggeber_KdNr

                'SPEDITIONSBUCH.Frachtführer = Aviso.Frächter
                'If getint(Aviso.Frächter_KdNr) > 0 Then SPEDITIONSBUCH.FrachtführerKundenNr = Aviso.Frächter_KdNr


                SPEDITIONSBUCH.LKW_Kennzeichen = Aviso.LKW_Nr
                If IsDate(Aviso.Freigabe) Then SPEDITIONSBUCH.AvisUhrzeit = CDate(Aviso.Freigabe) ' : MsgBox("dATE:" & CDate(Aviso.Freigabe).ToShortTimeString)


                If SPEDITIONSBUCH.Grenzstelle Is Nothing OrElse SPEDITIONSBUCH.Grenzstelle = "" Then
                    SPEDITIONSBUCH.Grenzstelle = If(Aviso.Grenzstelle, "")
                End If
                If SPEDITIONSBUCH.Zollstelle Is Nothing OrElse SPEDITIONSBUCH.Zollstelle = "" Then
                    SPEDITIONSBUCH.Zollstelle = If(Aviso.Zollstelle, "")
                End If
            End If

        End If






        If SENDUNG IsNot Nothing Then

            'NEU:
            SPEDITIONSBUCH.Avisierer = SENDUNG.tblSnd_Avisierer
            If getint(SENDUNG.tblSnd_AvisiererKdNr) > 0 Then SPEDITIONSBUCH.AvisiererKundenNr = SENDUNG.tblSnd_AvisiererKdNr

            SPEDITIONSBUCH.Frachtführer = SENDUNG.tblSnd_Frachtfuehrer
            If getint(SENDUNG.tblSnd_FrachtfuehrerKdNr) > 0 Then SPEDITIONSBUCH.FrachtführerKundenNr = SENDUNG.tblSnd_FrachtfuehrerKdNr

            If SENDUNG.tblSnd_BARzuKassieren IsNot Nothing AndAlso IsNumeric(SENDUNG.tblSnd_BARzuKassieren) AndAlso SPEDITIONSBUCH.HandlingZuKassieren <= 0 Then
                SPEDITIONSBUCH.HandlingZuKassieren = SENDUNG.tblSnd_BARzuKassieren
            End If


            If SPEDITIONSBUCH.AbsenderKundenNr Is Nothing OrElse SPEDITIONSBUCH.AbsenderKundenNr <= 0 Then
                If SENDUNG.tblSnd_AbsenderKdNr > 0 Then
                    SPEDITIONSBUCH.AbsenderKundenNr = SENDUNG.tblSnd_AbsenderKdNr
                End If
                If SPEDITIONSBUCH.Absender Is Nothing OrElse SPEDITIONSBUCH.Absender = "" Then SPEDITIONSBUCH.Absender = SENDUNG.tblSnd_Absender
            End If

            If SPEDITIONSBUCH.EmpfängerKundenNr Is Nothing OrElse SPEDITIONSBUCH.EmpfängerKundenNr <= 0 Then
                If SENDUNG.tblSnd_EmpfaengerKdNr > 0 Then SPEDITIONSBUCH.EmpfängerKundenNr = SENDUNG.tblSnd_EmpfaengerKdNr
                If SPEDITIONSBUCH.Empfänger Is Nothing OrElse SPEDITIONSBUCH.Empfänger = "" Then SPEDITIONSBUCH.Empfänger = SENDUNG.tblSnd_Empfaenger
            End If

            If SPEDITIONSBUCH.VermittlerKundenNr Is Nothing OrElse SPEDITIONSBUCH.VermittlerKundenNr <= 0 Then

                If SENDUNG.tblSnd_AuftraggeberKdNr > 0 Then SPEDITIONSBUCH.VermittlerKundenNr = SENDUNG.tblSnd_AuftraggeberKdNr ': MsgBox(SENDUNG.tblSnd_AuftraggeberKdNr)
                If SPEDITIONSBUCH.Vermittler Is Nothing OrElse SPEDITIONSBUCH.Vermittler = "" Then SPEDITIONSBUCH.Vermittler = SENDUNG.tblSnd_Auftraggeber
            End If

        End If
        SPEDITIONSBUCH.AtlasBezNrEZA = EZA_Nr
        SPEDITIONSBUCH.AtlasBezNrNCTS = NCTS_Nr

        If PosAnzahl > 0 Then
            SPEDITIONSBUCH.Vermerk = "Pos-Anzahl: " & PosAnzahl
        End If

        'Wenn Packstücke im Aviso eingegeben wurden, werden diese in das Speditionbuch gespeichert
        If packstueckeAVISO_TMP.Trim <> "" Then
            SPEDITIONSBUCH.Packstücke = packstueckeAVISO_TMP
            If packstueckeZOLL_TMP.Trim <> "" Then SPEDITIONSBUCH.Bemerkungen = packstueckeZOLL_TMP
        Else
            If packstueckeZOLL_TMP.Trim <> "" Then SPEDITIONSBUCH.Packstücke = packstueckeZOLL_TMP
        End If
        SPEDITIONSBUCH.Packstücke_Zoll = packstueckeZOLL_TMP

        'Wenn Gewicht im Aviso eingegeben ist, aber keine Rohmasse von ATLAS/EZOLL
        If IsNull(SPEDITIONSBUCH.Rohmasse) And Not IsNull(RohmasseAviso) Then
            If IsNumeric(RohmasseAviso) Then
                SPEDITIONSBUCH.Rohmasse = CInt(RohmasseAviso)
            End If
        End If

        '   If autoImport And Not notFound Then
        If SENDUNG IsNot Nothing AndAlso SENDUNG.tblSnd_Abfertigungsart_ID > 0 Then
            If SENDUNG.tblSnd_Abfertigungsart_ID = 23 Then
                If SENDUNG.tblSnd_anzahlHandling IsNot Nothing AndAlso IsNumeric(SENDUNG.tblSnd_anzahlHandling) Then
                    SPEDITIONSBUCH.Abfertigungsanzahl = SENDUNG.tblSnd_anzahlHandling
                Else
                    SPEDITIONSBUCH.Abfertigungsanzahl = 0
                End If


                SENDUNG.LOAD_HANDLING()
                Dim ataStr = ""
                'For Each HDL In SENDUNG.HANDLING
                '    ataStr &= HDL.sndhdg_nr & ";"
                'Next
                If SENDUNG.HANDLING.Count > 0 Then ataStr &= SENDUNG.HANDLING(0).sndhdg_nr
                If SENDUNG.HANDLING.Count > 1 Then ataStr &= ",etc."
                SPEDITIONSBUCH.BelegNr = ataStr
                If SPEDITIONSBUCH.BelegNr.Length > 27 Then SPEDITIONSBUCH.BelegNr = SPEDITIONSBUCH.BelegNr.Substring(0, 27)
            End If

            If SENDUNG.tblSnd_Abfertigungsart_ID = 67 Or SENDUNG.tblSnd_Abfertigungsart_ID = 68 Then
                If SENDUNG.tblSnd_anzahlHandling IsNot Nothing AndAlso IsNumeric(SENDUNG.tblSnd_anzahlHandling) Then
                    SPEDITIONSBUCH.Abfertigungsanzahl = SENDUNG.tblSnd_anzahlHandling
                Else
                    SPEDITIONSBUCH.Abfertigungsanzahl = 0
                End If

            End If

            If SENDUNG.tblSnd_Abfertigungsart_ID = 44 Then
                If SENDUNG.tblSnd_ATBFakturieren IsNot Nothing Then
                    SPEDITIONSBUCH.Fakturiert = Not SENDUNG.tblSnd_ATBFakturieren
                End If
            End If

            If (SENDUNG.tblSnd_Abfertigungsart_ID = 26 Or SENDUNG.tblSnd_Abfertigungsart_ID = 28 Or SENDUNG.tblSnd_Abfertigungsart_ID = 38) And NCTS_Nr <> "" Then
                'Überstellungs-T
                SPEDITIONSBUCH.Abfertigungsart = 5
            Else
                SPEDITIONSBUCH.Abfertigungsart = SENDUNG.tblSnd_Abfertigungsart_ID
            End If
        End If
        '  End If



        correctEntry(SPEDITIONSBUCH.AbsenderKundenNr, SPEDITIONSBUCH.Absender)
        correctEntry(SPEDITIONSBUCH.EmpfängerKundenNr, SPEDITIONSBUCH.Empfänger)
        correctEntry(SPEDITIONSBUCH.VermittlerKundenNr, SPEDITIONSBUCH.Vermittler)
        correctEntry(SPEDITIONSBUCH.AvisiererKundenNr, SPEDITIONSBUCH.Avisierer)
        correctEntry(SPEDITIONSBUCH.EndempfängerKundenNr, SPEDITIONSBUCH.Endempfänger)

        If SPEDITIONSBUCH.LKW_Kennzeichen IsNot Nothing AndAlso SPEDITIONSBUCH.LKW_Kennzeichen.ToString.Length > 25 Then
            SPEDITIONSBUCH.LKW_Kennzeichen = SPEDITIONSBUCH.LKW_Kennzeichen.ToString.Substring(0, 25)
        End If

        If SPEDITIONSBUCH.Währungsschlüssel Is Nothing OrElse (IsNumeric(SPEDITIONSBUCH.Währungsschlüssel) AndAlso SPEDITIONSBUCH.Währungsschlüssel <= 0) Then SPEDITIONSBUCH.Währungsschlüssel = 900

        If Personalnummer > 0 Then SPEDITIONSBUCH.Personalnummer = Personalnummer


        'notFound = Me.notFound

        If autoImport AndAlso Not checkIfAutoOK() Then
            notFound = True
        End If
        Return SPEDITIONSBUCH
    End Function


    Shared Sub SetBarKassiert(ByRef SPEDITIONSBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch)
        Try

            Dim KDSQL As New SQL
            Dim dt As DataTable = KDSQL.loadDgvBySql("SELECT * FROM ( " &
                                                        " SELECT  rksv_BelegId, isnull(rksv_umsatz ,0) as rksv_umsatz, isnull((Select Name from Personal where ID=b.Benutzer),'') as Benutzer FROM [tblEABelegnummer]  as b INNER JOIN [tblEABelegposition] as p ON  (b.BelegNr = p.BelegNr AND b.BelegDat = p.BelegDat AND b.Benutzer = p.Benutzer AND b.Niederlassung = p.Niederlassung AND b.Mandant = p.Mandant) where b.AbfertigungsNr='" & SPEDITIONSBUCH.AbfertigungsNr & "' and b.FilialenNr='" & SPEDITIONSBUCH.FilialenNr & "' and storniert=0 and gebuchtstorno=0  " &
                                                        " UNION " &
                                                        " SELECT  rksv_BelegId , sum(p.Betrag) as rksv_umsatz,isnull((Select Name from Personal where ID=b.Benutzer),'') as Benutzer FROM [tblEABelegnummer]  as b INNER JOIN [tblEABelegposition] as p ON  (b.BelegNr = p.BelegNr AND b.BelegDat = p.BelegDat AND b.Benutzer = p.Benutzer AND b.Niederlassung = p.Niederlassung AND b.Mandant = p.Mandant) where p.AbfertigungsNr='" & SPEDITIONSBUCH.AbfertigungsNr & "' and p.FilialenNr='" & SPEDITIONSBUCH.FilialenNr & "' and storniert=0 and gebuchtstorno=0 group by rksv_BelegId,b.Benutzer  " &
                                                        " ) as Tb order by rksv_BelegId", "FMZOLL")
            Dim BenutzerTmp = ""
            Dim BelegNrTmp = ""
            Dim BetragTmp As Double = 0

            If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then

                For Each r In dt.Rows
                    If BenutzerTmp = "" Then BenutzerTmp = r("Benutzer")
                    If r("Benutzer") <> BenutzerTmp Then BenutzerTmp = "Div.Benutzer"
                    If (IsNumeric(r("rksv_umsatz"))) Then BetragTmp += r("rksv_umsatz")
                    BelegNrTmp &= r("rksv_BelegId") & ","
                Next
                BenutzerTmp = getBenutzerShort(BenutzerTmp)
                If BelegNrTmp.EndsWith(",") Then BelegNrTmp = BelegNrTmp.Substring(0, BelegNrTmp.Length - 1)
                SPEDITIONSBUCH.Bar = True

                If SPEDITIONSBUCH.ErfassungsNr = "" Then SPEDITIONSBUCH.ErfassungsNr = "VERA/" & VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG & "/" & BenutzerTmp & "/" & CDate(SPEDITIONSBUCH.Abfertigungsdatum).ToShortDateString & "/" & BelegNrTmp & "/" & BetragTmp
                If SPEDITIONSBUCH.Barzahlungsbetrag = 0 Then SPEDITIONSBUCH.Barzahlungsbetrag = BetragTmp

            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name,, "BAR-Err: Beträge konnten nicht geladen werden!", "al@verag.ag", "al@verag.ag")
        End Try

    End Sub


    Shared Function getBenutzerShort(s As String) As String
        If s.ToString.Contains(" ") Then
            Dim split() = s.ToString.Split(" ")
            getBenutzerShort = split(0)
        Else
            getBenutzerShort = s
        End If
        If getBenutzerShort.Length > 10 Then
            getBenutzerShort = getBenutzerShort.Substring(0, 10)
        End If

    End Function
    Public Function AUTO_IMPORT(SendungId As Integer) As Boolean
        If SendungId > 0 Then SENDUNG = New VERAG_PROG_ALLGEMEIN.cSendungen(SendungId)
        ' Dim dt As DataTable = SQLAVISO.loadDataTableBySQL("SELECT * FROM tblSendungen WHERE tblSnd_SendungID='" & SendungId & "' ")
        If SENDUNG Is Nothing Then Return False

        Aviso = SQLAVISO.LesenAviso(SENDUNG.tblSnd_AvisoID, "")

        Dim SPED_LIST = New VERAG_PROG_ALLGEMEIN.cSpeditionsbuchList(SENDUNG.FilialenNr, SENDUNG.AbfertigungsNr)
        If SPED_LIST.LIST.Count > 0 Then
            MsgBox("Es existieren bereits Einträge zur PosNr '" & SENDUNG.FilialenNr & " " & SENDUNG.AbfertigungsNr & "'")
            Return False
        End If

        '  Dim BezugsNr(4) As String

        Dim ATLAS_SERVER = ""

        Dim strManNl = "SUB"


        'If cboNiederlassung.Text <> "" Then
        'strManNl = cboNiederlassung.Text
        ' Else
        '  cboNiederlassung.SelectedIndex = 0
        Select Case SENDUNG.FilialenNr
            Case 4803, 4809, 7001
                strManNl = "SUB"
            Case 4801, 4802
                strManNl = "SUW"
            Case 5003
                strManNl = "SBG" 'ANDERER SERVER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            Case 5103
                strManNl = "WAI"
        End Select


        ' FELT: STATUS, AAAAAAA
        Dim BezugsNr = genBezugsNummern(SENDUNG, strManNl)

        Dim SPEDBUCH_TMP As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch
        SPEDBUCH_TMP = New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(SENDUNG.FilialenNr, SENDUNG.AbfertigungsNr)
        '  SPEDBUCH_TMP.AbfertigungsNr
        Dim cnt = 0
        For Each s In BezugsNr
            If IMPORT_SPED_BUCH(SENDUNG.tblSnd_AvisoID, SendungId, SPEDBUCH_TMP, 0, s, "", ATLAS_SERVER) Then SPEDBUCH_TMP.SAVE() : SPED_LIST.LIST.Add(SPEDBUCH_TMP) : SPEDBUCH_TMP = New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(SENDUNG.FilialenNr, SENDUNG.AbfertigungsNr) : cnt += 1
            If IMPORT_SPED_BUCH(SENDUNG.tblSnd_AvisoID, SendungId, SPEDBUCH_TMP, 1, s, "", ATLAS_SERVER) Then SPEDBUCH_TMP.SAVE() : SPED_LIST.LIST.Add(SPEDBUCH_TMP) : SPEDBUCH_TMP = New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(SENDUNG.FilialenNr, SENDUNG.AbfertigungsNr) : cnt += 1
        Next
        For Each s In BezugsNr
            If IMPORT_SPED_BUCH(SENDUNG.tblSnd_AvisoID, SendungId, SPEDBUCH_TMP, 0, "", s, ATLAS_SERVER) Then SPEDBUCH_TMP.SAVE() : SPED_LIST.LIST.Add(SPEDBUCH_TMP) : SPEDBUCH_TMP = New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(SENDUNG.FilialenNr, SENDUNG.AbfertigungsNr) : cnt += 1
            If IMPORT_SPED_BUCH(SENDUNG.tblSnd_AvisoID, SendungId, SPEDBUCH_TMP, 1, "", s, ATLAS_SERVER) Then SPEDBUCH_TMP.SAVE() : SPED_LIST.LIST.Add(SPEDBUCH_TMP) : SPEDBUCH_TMP = New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(SENDUNG.FilialenNr, SENDUNG.AbfertigungsNr) : cnt += 1
        Next

        Return (cnt > 0)
    End Function



    Public Function checkIfAutoOK() As Boolean
        Try

            If SPEDITIONSBUCH.Personalnummer Is Nothing Then Return False
            Select Case SPEDITIONSBUCH.FilialenNr
                Case 4801, 4802 : Return True
                Case Else
                    If If(SPEDITIONSBUCH.Vermittler, "") = "" Then Return False
            End Select
            If Not IsNumeric(If(SPEDITIONSBUCH.Abfertigungsart, "")) Then Return False
            If SPEDITIONSBUCH.Abfertigungsanzahl = 0 Then Return False

        Catch ex As Exception
            '            VERAG_PROG_ALLGEMEIN.cErrorHandler.sendERRORperMail(, ex.Message, ex.StackTrace, , "",)
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name,, "Validierungsfehler SpedBuch - Trotzdem eingearbeitet!", "al@verag.ag", "al@verag.ag")

        End Try
        Return True
    End Function

    Public Function genBezugsNummern(SENDUNG As VERAG_PROG_ALLGEMEIN.cSendungen, strManNl As String) As List(Of String)
        genBezugsNummern = New List(Of String)

        Dim filiale As String = SENDUNG.FilialenNr
        Dim pos As String = ""
        Dim jahr As String = ""

        If SENDUNG.AbfertigungsNr.ToString.Length >= 8 Then
            pos = CInt(SENDUNG.AbfertigungsNr.ToString.Substring(2))
        End If

        If Aviso IsNot Nothing AndAlso IsDate(Aviso.Freigabe) AndAlso Aviso.Freigabe > CDate("01.01.2000") Then
            jahr = Aviso.Freigabe.ToString("yy") ' Falls Neujahr
        Else
            jahr = Now.ToString("yy") ' Falls Neujahr
        End If

        If strManNl = "SBG" Then
            ATLAS_SERVER_VERBINDUNG = "ATLAS_SBG"
        Else
            ATLAS_SERVER_VERBINDUNG = "ATLAS"
        End If

        Dim VERAGSQL As New VERAG_PROG_ALLGEMEIN.SQL
        Dim dt As DataTable = VERAGSQL.loadDgvBySql("Select isnull(veoant_beznr,'') as veoant_beznr  FROM veoant WHERE basman_nr='" & strManNr & "' And basman_nl='" & strManNl & "' And (veoant_beznr LIKE '%" & filiale & "/" & pos & "/" & jahr & "%' OR veoant_beznr LIKE '%" & filiale & "-" & pos & "-" & jahr & "%') AND  veoant_stat BETWEEN 50 AND 60 ORDER BY basman_nr, basman_nl, veoant_beznr, veoant_lfdnr DESC", ATLAS_SERVER_VERBINDUNG)

        If dt IsNot Nothing Then
            For Each r As DataRow In dt.Rows
                If r("veoant_beznr") <> String.Empty Then genBezugsNummern.Add(r("veoant_beznr"))
            Next
        End If

    End Function

    Public Function genBezugsNummernAAA(SENDUNG As VERAG_PROG_ALLGEMEIN.cSendungen) As List(Of String)
        genBezugsNummernAAA = New List(Of String)

        Dim filiale As String = SENDUNG.FilialenNr
        Dim pos As String = ""
        Dim jahr As String = ""

        If SENDUNG.AbfertigungsNr.ToString.Length >= 8 Then
            pos = CInt(SENDUNG.AbfertigungsNr.ToString.Substring(2))
        End If

        If Aviso IsNot Nothing AndAlso IsDate(Aviso.Freigabe) AndAlso Aviso.Freigabe > CDate("01.01.2000") Then
            jahr = Aviso.Freigabe.ToString("yy") ' Falls Neujahr
        Else
            jahr = Now.ToString("yy") ' Falls Neujahr
        End If


        genBezugsNummernAAA.Add(filiale & "/" & pos & "/" & jahr)
        genBezugsNummernAAA.Add(filiale & "/" & pos & "/" & jahr & "A")
        genBezugsNummernAAA.Add(filiale & "/" & pos & "/" & jahr & "AA")
        genBezugsNummernAAA.Add(filiale & "/" & pos & "/" & jahr & "AAA")

        Select Case SENDUNG.tblSnd_Abfertigungsart_ID
            Case "33", "34", "37"

                '  filiale = "TOBB"
                genBezugsNummernAAA.Add("TOBB/" & filiale & "/" & pos & "/" & jahr)
                genBezugsNummernAAA.Add("TOBB/" & filiale & "/" & pos & "/" & jahr & "A")
                genBezugsNummernAAA.Add("TOBB/" & filiale & "/" & pos & "/" & jahr & "AA")
                genBezugsNummernAAA.Add("TOBB/" & filiale & "/" & pos & "/" & jahr & "AAA")

                ' filiale = "EKOL"
                genBezugsNummernAAA.Add("EKOL/" & filiale & "/" & pos & "/" & jahr)
                genBezugsNummernAAA.Add("EKOL/" & filiale & "/" & pos & "/" & jahr & "A")
                genBezugsNummernAAA.Add("EKOL/" & filiale & "/" & pos & "/" & jahr & "AA")
                genBezugsNummernAAA.Add("EKOL/" & filiale & "/" & pos & "/" & jahr & "AAA")

                ' filiale = "SGS"
                genBezugsNummernAAA.Add("SGS/" & filiale & "/" & pos & "/" & jahr)
                genBezugsNummernAAA.Add("SGS/" & filiale & "/" & pos & "/" & jahr & "A")
                genBezugsNummernAAA.Add("SGS/" & filiale & "/" & pos & "/" & jahr & "AA")
                genBezugsNummernAAA.Add("SGS/" & filiale & "/" & pos & "/" & jahr & "AAA")
        End Select


        'Return BezugsNr
    End Function
    Function IMPORT_SPED_BUCH(AvisoId As Integer, SendungId As Integer, ByRef SPEDITIONSBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch, ZollSystem As String, EZANr As String, NCTSNr As String, ATLAS_SERVER_VERBINDUNG As String) As Boolean
        ' Label26.ForeColor = Color.Black
        ' If txtAtlasBezNrEZA.Text <> "" Or txtAtlasBezNrNCTS.Text <> "" Then
        'If cboZollsystem._value = "" Then
        'Label26.ForeColor = Color.Red
        '  Exit Function
        '  End If
        '  End If

        Dim strManNr = "VERA"
        Dim strManNl = "SUB"


        'If cboNiederlassung.Text <> "" Then
        'strManNl = cboNiederlassung.Text
        ' Else
        '  cboNiederlassung.SelectedIndex = 0
        Select Case SPEDITIONSBUCH.FilialenNr
            Case 4803, 4809, 7001
                strManNl = "SUB"
            Case 4801, 4802
                strManNl = "SUW"
            Case 5003
                strManNl = "SBG" 'ANDERER SERVER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            Case 5103
                strManNl = "WAI"
        End Select
        'End If

        ' Dim ZOLL_IMPORT As New SDL.ZOLL_IMPORT
        Dim notFound = False
        ' Dim ATLAS_SERVER_VERBINDUNG = ""
        'If cboNiederlassung.Text <> "" Then ATLAS_SERVER_VERBINDUNG = cboNiederlassung.Text
        SPEDITIONSBUCH = IMPORT(SPEDITIONSBUCH, AvisoId, SendungId, strManNr, strManNl, ZollSystem, EZANr, NCTSNr, notFound, True)
        ' If notFound Then
        '    lblZollsys.Visible = True
        '  If notFound And notFoundErrorAllowed Then MsgBox("Der Eintrag wurde nicht gefunden!", vbInformation)
        ' Else
        '   lblZollsys.Visible = False
        'End If
        ' loaddata()
        ' Import_Starten()
        Return Not notFound
    End Function

    Sub correctEntry(ByRef KundenNr, ByRef KdName)
        If KundenNr IsNot Nothing Then
            If KundenNr <= 0 Then
                KundenNr = Nothing : Exit Sub
            Else
                If KdName = "" Then
                    KdName = KDSQL.getValueTxtBySql("SELECT isnull(Ordnungsbegriff,'') FROM Adressen WHERE AdressenNr=" & KundenNr, "FMZOLL")
                End If
            End If
        End If
        If KdName IsNot Nothing AndAlso KdName.ToString.Length > 50 Then
            KdName = KdName.ToString.Substring(0, 50)
        End If
    End Sub


    Private Sub AtlasEZADatenbereitstellung(EZA_Nr)
        Dim dATLAS As DataTable = KDSQL.loadDgvBySql("SELECT basman_nr, basman_nl, zbant_beznr, zbant_regnr, zbant_korant, zbant_anmzb, zbant_vertzb, zbant_verszb, zbant_vland, zbant_bbland, zbant_rohm, zbant_bfkzi, zbant_preisr, zbant_waehr, zbant_kurs,zbant_verseori,zbant_anmeori,zbant_verteori,zbant_sb " &
                     " FROM zbant WHERE  basman_nr='" & strManNr & "' And basman_nl='" & strManNl & "' And zbant_beznr='" & EZA_Nr & "' ORDER BY basman_nr, basman_nl, zbant_beznr, zbant_regnr, zbant_korant, zbant_antart", ATLAS_SERVER_VERBINDUNG)
        '  Dim fNEF = DirectCast(Me.Owner, frmNacherfassungNEU)
        If dATLAS Is Nothing Then notFound = True : Exit Sub

        If dATLAS.Rows.Count > 0 Then
            notFound = False
            ' TextBox1.ForeColor = Color.Green
            For Each r As DataRow In dATLAS.Rows
                '   r.Item("").ToString()

                ' MsgBox(fNEF.txtAbsender.Text)

                If SPEDITIONSBUCH.Absender = "" Then setAdresseAndKundenNr(SPEDITIONSBUCH.Absender, SPEDITIONSBUCH.AbsenderKundenNr, 3, 1, r.Item("zbant_verszb"), r.Item("basman_nr"), r.Item("basman_nl"), r.Item("zbant_beznr"), r.Item("zbant_regnr"), r.Item("zbant_korant"), r.Item("zbant_vland"), r.Item("zbant_verseori"), "")
                If SPEDITIONSBUCH.Empfänger = "" Then setAdresseAndKundenNr(SPEDITIONSBUCH.Empfänger, SPEDITIONSBUCH.EmpfängerKundenNr, 4, 2, r.Item("zbant_anmzb"), r.Item("basman_nr"), r.Item("basman_nl"), r.Item("zbant_beznr"), r.Item("zbant_regnr"), r.Item("zbant_korant"), r.Item("zbant_vland"), r.Item("zbant_anmeori"), "")
                '   If SPEDITIONSBUCH.Vermittler = "" Then setAdresseAndKundenNr(SPEDITIONSBUCH.Vermittler, SPEDITIONSBUCH.VermittlerKundenNr, -1, 3, r.Item("zbant_vertzb"), r.Item("basman_nr"), r.Item("basman_nl"), r.Item("zbant_beznr"), r.Item("zbant_regnr"), r.Item("zbant_korant"), r.Item("zbant_vland"), r.Item("zbant_verteori"))


                If Not IsNull(r.Item("zbant_vland")) And Not Trim(r.Item("zbant_vland")) = "" Then
                    SPEDITIONSBUCH.Versendungsland = Trim(r.Item("zbant_vland"))
                End If

                If Not IsNull(r.Item("zbant_bbland")) And Not Trim(r.Item("zbant_bbland")) = "" Then
                    SPEDITIONSBUCH.Bestimmungsland = Trim(r.Item("zbant_bbland"))
                End If

                If Not IsNull(r.Item("zbant_bfkzi")) And Not Trim(r.Item("zbant_bfkzi")) = "" Then
                    SPEDITIONSBUCH.LKW_Kennzeichen = Microsoft.VisualBasic.Strings.Left(Trim(r.Item("zbant_bfkzi")), 25)
                    '  TextBoxLKWKz.Text = r.Item("zbant_bfkzi").trim()
                End If
                If Not IsNull(r.Item("zbant_regnr")) And Not Trim(r.Item("zbant_regnr")) = "" Then
                    SPEDITIONSBUCH.BelegNr = Trim(r.Item("zbant_regnr")) ' fNEF.txtBelegNummerZAT1T2.Text 
                End If
                If Not IsNull(r.Item("zbant_waehr")) Then
                    If r.Item("zbant_waehr") = "EUR" Then
                        SPEDITIONSBUCH.Währungsschlüssel = "900"
                    Else
                        SPEDITIONSBUCH.Währungsschlüssel = getWaehr(r.Item("zbant_waehr"))
                    End If

                    ' MsgBox(r.Item("zbant_waehr"))
                End If
                If Not IsNull(r.Item("zbant_preisr")) Then
                    SPEDITIONSBUCH.Rechnungsbetrag = CDbl(r.Item("zbant_preisr"))
                End If
                If Not IsNull(r.Item("zbant_kurs")) And r.Item("zbant_kurs") <> 0 Then
                    SPEDITIONSBUCH.Umrechnungskurs = r.Item("zbant_kurs")
                End If
                If Not IsNull(r.Item("zbant_rohm")) AndAlso IsNumeric(r.Item("zbant_rohm")) Then
                    SPEDITIONSBUCH.Rohmasse = CInt(r.Item("zbant_rohm"))
                End If

                'Personal Abfertigung:
                Try
                    If Not IsNull(r.Item("zbant_sb")) Then
                        Dim p = KDSQL.getValueTxtBySql("SELECT  ISNULL(CASE WHEN [mit_FMZollPersIDKasseIsnotSpedBuch]=1 THEN [mit_FMZollPersIDSpedBuch] ELSE [mit_FMZollPersID] END ,-1) as [mit_FMZollPersID]  FROM [ADMIN].[dbo].[tblMitarbeiter] WHERE mit_ATLAS_SB='" & r.Item("zbant_sb") & "'", "ADMIN")
                        SPEDITIONSBUCH.Personalnummer = If(IsNumeric(p), p, Nothing)
                    End If
                Catch ex As Exception

                    VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Fehler ATLAS Personal: " & vbNewLine & ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
                End Try
            Next
        Else
            notFound = True
        End If

        dATLAS = Nothing
        dATLAS = KDSQL.loadDgvBySql("SELECT zbpos_posnr, zbpos_stkanz, zbpos_stkart, zbpos_stkzei, zbpos_wanr, zbpos_wazus1, zbpos_wazus2, zbpos_wabes " &
                                   " FROM zbpos WHERE basman_nr='" & strManNr & "' And basman_nl='" & strManNl & "' And zbant_beznr='" & EZA_Nr & "' " &
                                   " ORDER BY basman_nr, basman_nl, zbant_beznr, zbant_regnr, zbant_korant, zbant_antart, zbpos_posnr ", ATLAS_SERVER_VERBINDUNG)
        ' rst = GetRecordsetADO(strSQL, cnn, adOpenForwardOnly, adLockReadOnly, adCmdText)
        If packstueckeZOLL_TMP.ToString = "" Then
            If dATLAS.Rows.Count > 0 Then
                Dim packst As String = ""
                For Each r As DataRow In dATLAS.Rows
                    If r.Item("zbpos_posnr") = 1 Then
                        If Not IsNull(r.Item("zbpos_stkanz")) And Not r.Item("zbpos_stkanz") = 0 Then
                            packst = packst & r.Item("zbpos_stkanz")
                            If Not Trim(r.Item("zbpos_stkart")) = "" Then
                                packst = packst & " " & Trim(r.Item("zbpos_stkart"))
                            End If
                            'If Not Trim(rst!zbpos_stkzei) = "" Then
                            '  Me!Packstücke = Me!Packstücke & " " & Trim(rst!zbpos_stkzei)
                            'End If
                            packst = packst & " "
                        End If
                        'If Not Trim(rst!zbpos_wanr) = "" Then
                        '  Me!Packstücke = Me!Packstücke & "TNr: " & Trim(rst!zbpos_wanr)
                        'End If
                        'If Not Trim(rst!zbpos_wazus1) = "" Then
                        '  Me!Packstücke = Me!Packstücke & "/" & Trim(rst!zbpos_wazus1)
                        'End If
                        'If Not Trim(rst!zbpos_wazus2) = "" Then
                        '  Me!Packstücke = Me!Packstücke & "/" & Trim(rst!zbpos_wazus2)
                        'End If
                        'Me!Packstücke = Me!Packstücke & " Warenbeschreibung lt. Anlage"
                        'Me!Packstücke = Me!Packstücke & vbCrLf
                        If Not Trim(r.Item("zbpos_wabes")) = "" Then
                            packst = packst & Trim(r.Item("zbpos_wabes"))
                        End If
                    End If
                Next
                packstueckeZOLL_TMP = packst
                PosAnzahl = dATLAS.Rows.Count
            End If
        End If

        'Schleife durchlaufen, bis keine passenden Datensätze mehr vorhanden sind.


    End Sub


    Public Function getMRNFROM_AtlasNCTSDatenbereitstellung(strManNr, strManNl, NCTS_Nr) As String
        If strManNl = "SBG" Then
            ATLAS_SERVER_VERBINDUNG = "ATLAS_SBG"
        Else
            ATLAS_SERVER_VERBINDUNG = "ATLAS"
        End If
        Return KDSQL.getValueTxtBySql("SELECT TOP 1  veoant_mrn  FROM veoant WHERE basman_nr='" & strManNr & "' And basman_nl='" & strManNl & "' And veoant_beznr='" & NCTS_Nr & "' AND  veoant_stat BETWEEN 50 AND 60 ORDER BY basman_nr, basman_nl, veoant_beznr, veoant_lfdnr DESC", ATLAS_SERVER_VERBINDUNG)
    End Function
    Public Function getMRNFROM_EZollNCTSDatenbereitstellung(NCTS_Nr) As String
        'Return KDSQL.getValueTxtBySql("SELECT top 1 CRN FROM zsAnmRefs WHERE (VorgangID = 'AV') AND (LRN = '" & NCTS_Nr & "') ORDER BY GeaendertAm DESC", EZOLL_SQL)
        Return KDSQL.getValueTxtBySql("SELECT top 1 CRN from zsAnmRefs left JOIN [zsAnmDHFRefs] on [zsAnmDHFRefs].AnmID=zsAnmRefs.AnmID AND [zsAnmDHFRefs].OperatorID=zsAnmRefs.OperatorID AND [zsAnmDHFRefs].LizenzNr=zsAnmRefs.LizenzNr where (zsAnmDHFRefs.VorgangID = 'AV') AND (LRN LIKE '" & NCTS_Nr & "') and ErledigungsTypID IN ('F','FB') ORDER BY zsAnmDHFRefs.GeaendertAm DESC", EZOLL_SQL)
    End Function

    Public Function getMRNFROM_EZollNCTSDatenbereitstellungDT(NCTS_Nr) As DataTable
        'Return KDSQL.getValueTxtBySql("SELECT top 1 CRN FROM zsAnmRefs WHERE (VorgangID = 'AV') AND (LRN = '" & NCTS_Nr & "') ORDER BY GeaendertAm DESC", EZOLL_SQL)
        Return KDSQL.loadDgvBySql("SELECT CRN from zsAnmRefs left JOIN [zsAnmDHFRefs] on [zsAnmDHFRefs].AnmID=zsAnmRefs.AnmID AND [zsAnmDHFRefs].OperatorID=zsAnmRefs.OperatorID AND [zsAnmDHFRefs].LizenzNr=zsAnmRefs.LizenzNr where (zsAnmDHFRefs.VorgangID = 'AV') AND (LRN LIKE '" & NCTS_Nr & "') and ErledigungsTypID IN ('F','FB') ORDER BY zsAnmDHFRefs.GeaendertAm DESC", EZOLL_SQL)
    End Function




    Private Sub AtlasNCTSDatenbereitstellung(NCTS_Nr)
        'Dim fNEF = DirectCast(Me.Owner, frmNacherfassungNEU)


        Dim dATLAS As DataTable = KDSQL.loadDgvBySql("SELECT basman_nr, basman_nl, veoant_beznr, veoant_lfdnr, veoant_tinve, veoant_tinem, veoant_tinze, veoant_tinhp, veoant_ldvs, veoant_ldbe, veoant_bfabkz, veoant_mrn, veoant_gsroh, veoant_anzcol, veoant_bedst, veoant_sb " &
                                                                   "  FROM veoant WHERE basman_nr='" & strManNr & "' And basman_nl='" & strManNl & "' And veoant_beznr='" & NCTS_Nr & "' " &
                                                                   "  ORDER BY basman_nr, basman_nl, veoant_beznr, veoant_lfdnr DESC", ATLAS_SERVER_VERBINDUNG)
        If dATLAS Is Nothing Then notFound = True : Exit Sub
        If dATLAS.Rows.Count > 0 Then
            notFound = False
            ' TextBox2.ForeColor = Color.Green
            For Each r As DataRow In dATLAS.Rows
                '   r.Item("").ToString()


                If SPEDITIONSBUCH.Absender = "" Then setAdresseAndKundenNrNCTS(SPEDITIONSBUCH.Absender, SPEDITIONSBUCH.AbsenderKundenNr, 3, 1, r.Item("veoant_tinve"), r.Item("veoant_tinve"), r.Item("basman_nr"), r.Item("basman_nl"), r.Item("veoant_beznr"), r.Item("veoant_lfdnr"), 0, 1, r.Item("veoant_ldvs"))
                If SPEDITIONSBUCH.Empfänger = "" Then setAdresseAndKundenNrNCTS(SPEDITIONSBUCH.Empfänger, SPEDITIONSBUCH.EmpfängerKundenNr, 4, 2, r.Item("veoant_tinze"), r.Item("veoant_tinem"), r.Item("basman_nr"), r.Item("basman_nl"), r.Item("veoant_beznr"), r.Item("veoant_lfdnr"), 0, 2, r.Item("veoant_ldbe"))
                If SPEDITIONSBUCH.Vermittler = "" Then setAdresseAndKundenNrNCTS(SPEDITIONSBUCH.Vermittler, SPEDITIONSBUCH.VermittlerKundenNr, -1, 3, r.Item("veoant_tinhp"), r.Item("veoant_tinhp"), r.Item("basman_nr"), r.Item("basman_nl"), r.Item("veoant_beznr"), r.Item("veoant_lfdnr"), 0, 3, r.Item("veoant_ldbe"))



                If Not IsNull(r.Item("veoant_ldvs")) And Not Trim(r.Item("veoant_ldvs")) = "" Then
                    SPEDITIONSBUCH.Versendungsland = Trim(r.Item("veoant_ldvs"))
                End If

                If Not IsNull(r.Item("veoant_ldbe")) And Not Trim(r.Item("veoant_ldbe")) = "" Then
                    SPEDITIONSBUCH.Bestimmungsland = Trim(r.Item("veoant_ldbe"))
                End If

                ' Änderung 05.01.2006, damit Vorgaben aus Barbeleg nicht überschrieben werden.
                'Me!VermittlerKundenNr = Null
                'Me!Vermittler = Null



                If Not IsNull(r.Item("veoant_bfabkz")) And Not Trim(r.Item("veoant_bfabkz")) = "" Then
                    SPEDITIONSBUCH.LKW_Kennzeichen = Microsoft.VisualBasic.Strings.Left(Trim(r.Item("veoant_bfabkz")), 25)
                    '   TextBoxLKWKz.Text = r.Item("veoant_bfabkz").trim()
                End If
                If Not IsNull(r.Item("veoant_mrn")) And Not Trim(r.Item("veoant_mrn")) = "" Then
                    SPEDITIONSBUCH.BelegNr = Trim(r.Item("veoant_mrn"))
                End If

                If packstueckeZOLL_TMP.ToString = "" Then
                    If Not IsNull(r.Item("veoant_anzcol")) Then
                        packstueckeZOLL_TMP = r.Item("veoant_anzcol")
                    End If
                End If

                If Not IsNull(r.Item("veoant_gsroh")) Then
                    SPEDITIONSBUCH.Rohmasse = r.Item("veoant_gsroh")
                End If
                'If Not IsNull(r.Item("veoant_bedst")) Then
                ' fNEF.cboBestimmungsZollstelle.Text = r.Item("veoant_bedst")
                ' End If
                '--------------------------------------

                'Personal Abfertigung:
                Try
                    If Not IsNull(r.Item("veoant_sb")) Then
                        Dim p = KDSQL.getValueTxtBySql("SELECT  ISNULL(CASE WHEN [mit_FMZollPersIDKasseIsnotSpedBuch]=1 THEN [mit_FMZollPersIDSpedBuch] ELSE [mit_FMZollPersID] END ,-1) as [mit_FMZollPersID]  FROM [ADMIN].[dbo].[tblMitarbeiter] WHERE mit_ATLAS_SB='" & r.Item("veoant_sb") & "'", "ADMIN")
                        SPEDITIONSBUCH.Personalnummer = If(IsNumeric(p), p, Nothing)
                    End If
                Catch ex As Exception
                    VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Fehler ATLAS Personal: " & vbNewLine & ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)

                End Try
            Next
        Else
            notFound = True
            '  TextBox2.ForeColor = Color.Red
        End If


        Dim curPosNr0Basbtg As Double
        Dim curPosNr0Sicbtg As Double

        Dim Rechnungsbetrag As Double = 0
        Dim Währungsschlüssel = 900  'Euro
        Dim Sicherheitsbetrag As Double = 0 '???????????

        dATLAS = Nothing
        dATLAS = KDSQL.loadDgvBySql("SELECT veoant_beznr, veoant_lfdnr, veopos_posnr, veoerz_typ, veoerz_lfdnr, veoerz_sicbsc, veoerz_basbtg, veoerz_baswrg, veoerz_sicbtg, veoerz_sicwrg, veoant_korant" &
              " FROM veoerz t1 WHERE  (veoant_beznr = '" & NCTS_Nr & "') AND (basman_nr = '" & strManNr & "') AND (basman_nl = '" & strManNl & "') AND (veoerz_typ = 2)" &
              " AND (veoant_korant = (SELECT MAX(t2.veoant_korant) FROM veoerz t2" &
                " WHERE t2.veoant_beznr = t1.veoant_beznr AND t2.veoant_lfdnr = t1.veoant_lfdnr AND t2.veopos_posnr = t1.veopos_posnr AND" &
                  " t2.veoerz_typ = t1.veoerz_typ AND t2.veoerz_lfdnr = t1.veoerz_lfdnr AND t2.basman_nr = t1.basman_nr AND" &
                  " t2.basman_nl = t1.basman_nl)) " &
                  " ORDER BY veoant_lfdnr, veopos_posnr, veoerz_typ, veoerz_lfdnr", ATLAS_SERVER_VERBINDUNG)
        If dATLAS.Rows.Count > 0 Then
            notFound = False
            Dim packst As String = ""
            For Each r As DataRow In dATLAS.Rows

                ' If r.Item("veopos_posnr") = 0 And Not IsNull(r.Item("veoerz_sicbsc")) And Not Trim(r.Item("veoerz_sicbsc")) = "" Then
                '[Bürgschaft] = Trim(r.Item("veoerz_sicbsc")) '????????
                '    End If
                If curPosNr0Basbtg = 0 And r.Item("veoerz_basbtg") <> 0.0# Then
                    If r.Item("veoerz_baswrg") = "EUR" Or r.Item("veoerz_baswrg") = "   " Then
                        Rechnungsbetrag = Rechnungsbetrag + r.Item("veoerz_basbtg")
                    Else
                        ' In Euro umrechnen.
                        'HIER
                        If SPEDITIONSBUCH.Abfertigungsdatum IsNot Nothing Then
                            Dim dATLAS2 As DataTable = KDSQL.loadDgvBySql("SELECT baskur_kurs" &
                                  " FROM baskur" &
                                  " WHERE (baskur_code = '" & r.Item("veoerz_baswrg") & "')" &
                                  " AND (baskur_typ = 1 OR baskur_typ = 2)" &
                                  " AND (baskur_gvdat <= CAST('" & CDate(SPEDITIONSBUCH.Abfertigungsdatum).ToShortDateString & "' as DATETIME))" &
                                  " AND (baskur_gbdat >= CAST('" & CDate(SPEDITIONSBUCH.Abfertigungsdatum).ToShortDateString & "'as DATETIME))" &
                                  " AND (baskur_wkz = 'EUR')" &
                                  " ORDER BY baskur_gvdat DESC, baskur_gbdat DESC", ATLAS_SERVER_VERBINDUNG)

                            ' rst2 = GetRecordsetADO(strSQL, cnn, adOpenForwardOnly, adLockReadOnly, adCmdText)
                            If dATLAS2.Rows.Count > 0 Then
                                Dim curEurobetrag = r.Item("veoerz_basbtg") / dATLAS2.Rows(0).Item("baskur_kurs")
                                curEurobetrag = Int(curEurobetrag * 100 + 0.5) / 100 'Runden
                                Rechnungsbetrag = Rechnungsbetrag + curEurobetrag
                            Else
                                Rechnungsbetrag = Rechnungsbetrag + r.Item("veoerz_basbtg")
                                ' Me!Währungsschlüssel = Null 'unterschiedliche Währungen
                                MsgBox("Es wurde kein Euro-Umrechnungskurs gefunden. Rechnungsbetrag wird ohne Kursumrechnung erzeugt.", , "Datenübernahme aus ATLAS " & r.Item("veoerz_basbtg") & " " & r.Item("veoerz_baswrg"))
                            End If
                        Else
                            MsgBox("Abfertigungsdatum ist nicht gesetzt. Rechnungsbetrag wurde nicht übernommen.")

                        End If
                    End If
                End If
                If curPosNr0Sicbtg = 0 And r.Item("veoerz_sicbtg") <> 0.0# Then
                    If r.Item("veoerz_sicwrg") = "EUR" Or r.Item("veoerz_sicwrg") = "   " Then
                        Sicherheitsbetrag = Sicherheitsbetrag + r.Item("veoerz_sicbtg")
                    Else
                        ' In Euro umrechnen.
                        If SPEDITIONSBUCH.Abfertigungsdatum IsNot Nothing Then
                            Dim dATLAS2 As DataTable = KDSQL.loadDgvBySql("SELECT baskur_kurs" &
                                  " FROM baskur" &
                                  " WHERE (baskur_code = '" & r.Item("veoerz_sicwrg") & "')" &
                                  " AND (baskur_typ = 1 OR baskur_typ = 2)" &
                                  " AND (baskur_gvdat <= CAST('" & CDate(SPEDITIONSBUCH.Abfertigungsdatum).ToShortDateString & "' as DATETIME))" &
                                  " AND (baskur_gbdat >= CAST('" & CDate(SPEDITIONSBUCH.Abfertigungsdatum).ToShortDateString & "' as DATETIME))" &
                                  " AND (baskur_wkz = 'EUR')" &
                                  " ORDER BY baskur_gvdat DESC, baskur_gbdat DESC", ATLAS_SERVER_VERBINDUNG)
                            If dATLAS2.Rows.Count > 0 Then
                                Dim curEurobetrag = r.Item("veoerz_sicbtg") / dATLAS2.Rows(0).Item("baskur_kurs")
                                curEurobetrag = Int(curEurobetrag * 100 + 0.5) / 100 'Runden
                                Sicherheitsbetrag = Sicherheitsbetrag + curEurobetrag
                            Else
                                Sicherheitsbetrag = Sicherheitsbetrag + r.Item("veoerz_sicbtg")
                                MsgBox("Es wurde kein Euro-Umrechnungskurs gefunden. Sicherheitsbetrag wird ohne Kursumrechnung erzeugt.", , "Datenübernahme aus ATLAS " & r.Item("veoerz_sicbtg") & " " & r.Item("veoerz_sicwrg"))

                            End If
                        Else
                            MsgBox("Abfertigungsdatum ist nicht gesetzt. Rechnungsbetrag wurde nicht übernommen.")

                        End If
                    End If
                End If
                If r.Item("veopos_posnr") = 0 Then
                    ' Basisbetrag und Sicherheitsbetrag aus Positionssatz 0 zwischenspeichern.
                    curPosNr0Basbtg = r.Item("veoerz_basbtg")
                    curPosNr0Sicbtg = r.Item("veoerz_sicbtg")
                End If
            Next

            SPEDITIONSBUCH.Rechnungsbetrag = CDbl(Rechnungsbetrag)
            SPEDITIONSBUCH.Sicherheitsbetrag = CDbl(Sicherheitsbetrag)

        End If

    End Sub






    Shared Function getAdresseFromEORI(EORI, EORI_NL, Firma, Optional ignoreCountOver1 = False)
        If EORI Is Nothing Then Return Nothing
        If If(EORI, "") <> "" Then
            Dim kdNrTmp = SQL.getFMZOLLKdNrFromEORI(EORI, EORI_NL, Firma, ignoreCountOver1)
            If IsNumeric(kdNrTmp) Then
                Dim ADRESSE As New VERAG_PROG_ALLGEMEIN.cAdressen(kdNrTmp)
                Return ADRESSE
            End If
        End If
        Return Nothing
    End Function

    Private Sub EZollNCTSDatenbereitstellung(NCTS_Nr)
        '  Dim fNEF = DirectCast(Me.Owner, frmNacherfassungNEU)


        Dim Bestimmungszollstelle = ""
        Dim Bürgschaft = ""
        Dim Sicherheitsbetrag As Double
        Dim dEZOLL As DataTable = KDSQL.loadDgvBySql("SELECT LizenzNr, OperatorID, VorgangID, AnmID, GeaendertAm, GeaendertVon, CRN, LRN" &
                    " FROM zsAnmRefs" &
                    " WHERE (VorgangID = 'AV') AND (LRN = '" & NCTS_Nr & "')" &
                    " ORDER BY GeaendertAm DESC", EZOLL_SQL)

        If dEZOLL Is Nothing Then notFound = True : Exit Sub
        If dEZOLL.Rows.Count = 0 Then
            ' MsgBox("Die Bezugsnummer " & NCTS_Nr & " wurde nicht in der EZoll-Datenbank gefunden.", vbInformation, "Daten aus EZoll übernehmen")
            notFound = True
            '      TextBox2.ForeColor = Color.Red
            Exit Sub
        End If
        'TextBox2.ForeColor = Color.Green
        Dim r As DataRow = dEZOLL.Rows(0)
        notFound = False


        If Not IsNull(r.Item("GeaendertAm")) Then
            '     If IsNull(SPEDITIONSBUCH.Abfertigungsdatum) Then SPEDITIONSBUCH.Abfertigungsdatum = DateValue(r.Item("GeaendertAm")) ' GEHT SO NED, aber wird whsk nicht benötigt?
            SPEDITIONSBUCH.AvisUhrzeit = CDate(r.Item("GeaendertAm"))
        End If
        If Not IsNull(r.Item("CRN")) Then SPEDITIONSBUCH.BelegNr = r.Item("CRN")

        If SPEDITIONSBUCH.Absender = "" Then
            ' Tabelle zsAnmConorTra lesen.
            Dim DTzsAnmConorTra As DataTable = KDSQL.loadDgvBySql("SELECT Na, Pst, Cty, Ctry" &
                         " FROM zsAnmConorTra" &
                         " WHERE (LizenzNr = '" & r.Item("LizenzNr") & "') And (OperatorID = " & r.Item("OperatorID") & ") And (VorgangID = '" & r.Item("VorgangID") & "') And (AnmID = " & r.Item("AnmID") & ")", EZOLL_SQL)
            If DTzsAnmConorTra.Rows().Count > 0 Then
                If Not IsNull(DTzsAnmConorTra.Rows(0).Item("Na")) Then SPEDITIONSBUCH.Absender = Strings.Left(DTzsAnmConorTra.Rows(0).Item("Na"), 50)
                If Not IsNull(DTzsAnmConorTra.Rows(0).Item("Ctry")) Then SPEDITIONSBUCH.Absender = Strings.Left(SPEDITIONSBUCH.Absender & ", " & DTzsAnmConorTra.Rows(0).Item("Ctry"), 50)
                If Not IsNull(DTzsAnmConorTra.Rows(0).Item("Pst")) Then SPEDITIONSBUCH.Absender = Strings.Left(SPEDITIONSBUCH.Absender & ", " & DTzsAnmConorTra.Rows(0).Item("Pst"), 50)
                If Not IsNull(DTzsAnmConorTra.Rows(0).Item("Cty")) Then SPEDITIONSBUCH.Absender = Strings.Left(SPEDITIONSBUCH.Absender & ", " & DTzsAnmConorTra.Rows(0).Item("Cty"), 50)
                If Not IsNull(DTzsAnmConorTra.Rows(0).Item("Ctry")) Then SPEDITIONSBUCH.Versendungsland = DTzsAnmConorTra.Rows(0).Item("Ctry")
            End If
        End If

        If SPEDITIONSBUCH.Empfänger = "" Then
            ' Tabelle zsAnmConeeTra lesen.
            Dim DTzsAnmConeeTra As DataTable = KDSQL.loadDgvBySql("SELECT Na, Pst, Cty, Ctry" &
                    " FROM zsAnmConeeTra" &
                    " WHERE (LizenzNr = '" & r.Item("LizenzNr") & "') And (OperatorID = " & r.Item("OperatorID") & ") And (VorgangID = '" & r.Item("VorgangID") & "') And (AnmID = " & r.Item("AnmID") & ")", EZOLL_SQL)

            If DTzsAnmConeeTra.Rows().Count > 0 Then
                If Not IsNull(DTzsAnmConeeTra.Rows(0).Item("Na")) Then SPEDITIONSBUCH.Empfänger = Strings.Left(DTzsAnmConeeTra.Rows(0).Item("Na"), 50)
                If Not IsNull(DTzsAnmConeeTra.Rows(0).Item("Ctry")) Then SPEDITIONSBUCH.Empfänger = Strings.Left(SPEDITIONSBUCH.Empfänger & ", " & DTzsAnmConeeTra.Rows(0).Item("Ctry"), 50)
                If Not IsNull(DTzsAnmConeeTra.Rows(0).Item("Pst")) Then SPEDITIONSBUCH.Empfänger = Strings.Left(SPEDITIONSBUCH.Empfänger & ", " & DTzsAnmConeeTra.Rows(0).Item("Pst"), 50)
                If Not IsNull(DTzsAnmConeeTra.Rows(0).Item("Cty")) Then SPEDITIONSBUCH.Empfänger = Strings.Left(SPEDITIONSBUCH.Empfänger & ", " & DTzsAnmConeeTra.Rows(0).Item("Cty"), 50)
                If Not IsNull(DTzsAnmConeeTra.Rows(0).Item("Ctry")) Then SPEDITIONSBUCH.Bestimmungsland = DTzsAnmConeeTra.Rows(0).Item("Ctry")
            End If
        End If

        ' Tabelle zsAnmTransp lesen.
        Dim DTzsAnmTransp As DataTable = KDSQL.loadDgvBySql("SELECT DepIdnt" &
                " FROM zsAnmTransp" &
                " WHERE (LizenzNr = '" & r.Item("LizenzNr") & "') And (OperatorID = " & r.Item("OperatorID") & ") And (VorgangID = '" & r.Item("VorgangID") & "') And (AnmID = " & r.Item("AnmID") & ")", EZOLL_SQL)
        If DTzsAnmTransp.Rows().Count > 0 Then
            If Not IsNull(DTzsAnmTransp.Rows(0).Item("DepIdnt")) Then
                SPEDITIONSBUCH.LKW_Kennzeichen = Strings.Left(DTzsAnmTransp.Rows(0).Item("DepIdnt"), 25)
                ' Me.TextBoxLKWKz.Text = Strings.Left(DTzsAnmTransp.Rows(0).Item("DepIdnt"), 25)
            End If
        End If

        ' Tabelle zsAnmValData lesen.
        Dim DTzsAnmValData As DataTable = KDSQL.loadDgvBySql("SELECT InvCurr, InvVal" &
                " FROM zsAnmValData" &
                " WHERE (LizenzNr = '" & r.Item("LizenzNr") & "') And (OperatorID = " & r.Item("OperatorID") & ") And (VorgangID = '" & r.Item("VorgangID") & "') And (AnmID = " & r.Item("AnmID") & ")", EZOLL_SQL)

        If DTzsAnmValData.Rows().Count > 0 Then
            If Not IsNull(DTzsAnmValData.Rows(0).Item("InvCurr")) Then
                If DTzsAnmValData.Rows(0).Item("InvCurr") = "EUR" Then
                    SPEDITIONSBUCH.Währungsschlüssel = "900"
                Else
                    SPEDITIONSBUCH.Währungsschlüssel = getWaehr(DTzsAnmValData.Rows(0).Item("InvCurr"))
                End If
            End If
            ' fNEF.cbxWaehrung._value = DTzsAnmValData.Rows(0).Item("InvCurr") '!Währungsschlüssel = DLookup("[Währungsschlüssel]", "Währungstabelle", "[Währungscode] = '" & DTzsAnmValData.Rows(0).Item("InvCurr") & "'")
            If Not IsNull(DTzsAnmValData.Rows(0).Item("InvVal")) Then SPEDITIONSBUCH.Rechnungsbetrag = CDbl(DTzsAnmValData.Rows(0).Item("InvVal"))
        End If

        ' Tabelle zsAnmHea lesen.
        Dim DTzsAnmHea As DataTable = KDSQL.loadDgvBySql("SELECT TotPack, TotGross" &
                " FROM zsAnmHea" &
                " WHERE (LizenzNr = '" & r.Item("LizenzNr") & "') And (OperatorID = " & r.Item("OperatorID") & ") And (VorgangID = '" & r.Item("VorgangID") & "') And (AnmID = " & r.Item("AnmID") & ")", EZOLL_SQL)

        If packstueckeZOLL_TMP = "" Then
            If DTzsAnmHea.Rows().Count > 0 Then
                If Not IsNull(DTzsAnmHea.Rows(0).Item("TotPack")) Then packstueckeZOLL_TMP = DTzsAnmHea.Rows(0).Item("TotPack") & " Packst."
                If Not IsNull(DTzsAnmHea.Rows(0).Item("TotGross")) AndAlso IsNumeric(IsNull(DTzsAnmHea.Rows(0).Item("TotGross"))) Then SPEDITIONSBUCH.Rohmasse = CInt(DTzsAnmHea.Rows(0).Item("TotGross"))
            End If

            ' Tabelle zsAnmGdsitem lesen.
            Dim DTzsAnmGdsitem As DataTable = KDSQL.loadDgvBySql("SELECT GdsDes" &
                    " FROM zsAnmGdsitem" &
                    " WHERE (LizenzNr = '" & r.Item("LizenzNr") & "') And (OperatorID = " & r.Item("OperatorID") & ") And (VorgangID = '" & r.Item("VorgangID") & "') And (AnmID = " & r.Item("AnmID") & ")" &
                    " ORDER BY GdsItemID", EZOLL_SQL)

            If DTzsAnmGdsitem.Rows().Count > 0 Then
                If Not IsNull(DTzsAnmGdsitem.Rows(0).Item("GdsDes")) Then
                    If IsNull(packstueckeZOLL_TMP) Then
                        packstueckeZOLL_TMP = DTzsAnmGdsitem.Rows(0).Item("GdsDes")
                    Else
                        packstueckeZOLL_TMP = packstueckeZOLL_TMP & " " & DTzsAnmGdsitem.Rows(0).Item("GdsDes")
                    End If
                End If
            End If
        End If
        ' Tabelle zsAnmDestCo lesen.
        Dim DTzsAnmDestCo As DataTable = KDSQL.loadDgvBySql("SELECT Ref" &
                " FROM zsAnmDestCo" &
                " WHERE (LizenzNr = '" & r.Item("LizenzNr") & "') And (OperatorID = " & r.Item("OperatorID") & ") And (VorgangID = '" & r.Item("VorgangID") & "') And (AnmID = " & r.Item("AnmID") & ")", EZOLL_SQL)

        If DTzsAnmDestCo.Rows().Count > 0 Then
            If Not IsNull(DTzsAnmDestCo.Rows(0).Item("ref")) Then [Bestimmungszollstelle] = DTzsAnmDestCo.Rows(0).Item("ref")
        End If

        ' Tabelle zsAnmGrteeGrteeRef lesen.
        Dim DTzsAnmGrteeGrteeRef As DataTable = KDSQL.loadDgvBySql("SELECT GRN, GVal" &
                " FROM zsAnmGrteeGrteeRef" &
                " WHERE (LizenzNr = '" & r.Item("LizenzNr") & "') And (OperatorID = " & r.Item("OperatorID") & ") And (VorgangID = '" & r.Item("VorgangID") & "') And (AnmID = " & r.Item("AnmID") & ")" &
                " ORDER BY GrteeID, GrteeRefID", EZOLL_SQL)

        If DTzsAnmGrteeGrteeRef.Rows().Count > 0 Then
            [Sicherheitsbetrag] = 0
            For Each DTzsAnmGrteeGrteeRef_row In DTzsAnmGrteeGrteeRef.Rows()
                If Not IsNull(DTzsAnmGrteeGrteeRef_row.item("GRN")) Then [Bürgschaft] = DTzsAnmGrteeGrteeRef_row.item("GRN")
                If Not IsNull(DTzsAnmGrteeGrteeRef_row.item("GVal")) Then [Sicherheitsbetrag] = [Sicherheitsbetrag] + DTzsAnmGrteeGrteeRef_row.item("GVal")
            Next
        End If

        'Personal Abfertigung:
        Try
            If Not IsNull(r.Item("GeaendertVon")) Then
                Dim p = KDSQL.getValueTxtBySql("SELECT  ISNULL(CASE WHEN [mit_FMZollPersIDKasseIsnotSpedBuch]=1 THEN [mit_FMZollPersIDSpedBuch] ELSE [mit_FMZollPersID] END ,-1) as [mit_FMZollPersID]  FROM [ADMIN].[dbo].[tblMitarbeiter] WHERE mit_EZOLL_SB='" & r.Item("GeaendertVon") & "'", "ADMIN")
                SPEDITIONSBUCH.Personalnummer = If(IsNumeric(p), p, Nothing)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Fehler EZOLL Personal: " & vbNewLine & ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)

        End Try

        'Anhang
        If Not IsNull(r.Item("LRN")) Then
            getVBDFromAnmId(r.Item("LRN"), SPEDITIONSBUCH.DokumentId_VBD)
        End If


        SPEDITIONSBUCH.Sicherheitsbetrag = CDbl(Sicherheitsbetrag)
        SPEDITIONSBUCH.Bestimmungszollstelle = Bestimmungszollstelle
        SPEDITIONSBUCH.Bürgschaft = Bürgschaft
    End Sub

    Private Sub EZollEZADatenbereitstellung(EZA_Nr, isAES)

        ' Dim fNEF = DirectCast(Me.Owner, frmNacherfassungNEU)

        Dim VorgangID As String = "EF"
        If isAES Then
            VorgangID = "AF"
        End If

        Dim dEZOLL As DataTable = KDSQL.loadDgvBySql("SELECT LizenzNr, OperatorID, VorgangID, AnmID, GeaendertAm, GeaendertVon, CRN, LRN" &
                " FROM zsAnmRefs" &
                " WHERE (VorgangID = '" & VorgangID & "' ) AND (LRN = '" & EZA_Nr & "')" &
                " ORDER BY GeaendertAm DESC", EZOLL_SQL)
        If dEZOLL Is Nothing Then notFound = True : Exit Sub

        If dEZOLL.Rows.Count = 0 Then
            'MsgBox("Die Bezugsnummer " & EZA_Nr & " wurde nicht in der EZoll-Datenbank gefunden.", vbInformation, "Daten aus EZoll übernehmen")
            notFound = True
            '  TextBox1.ForeColor = Color.Red
            Exit Sub
        End If
        '  TextBox1.ForeColor = Color.Green
        Dim DR_zsAnmRefs As DataRow = dEZOLL.Rows(0)

        notFound = False

        If Not IsNull(DR_zsAnmRefs.Item("GeaendertAm")) Then
            '     If IsNull(SPEDITIONSBUCH.Abfertigungsdatum) Then SPEDITIONSBUCH.Abfertigungsdatum = DateValue(DR_zsAnmRefs.Item("GeaendertAm")) 'KA::::
            SPEDITIONSBUCH.AvisUhrzeit = CDate(DR_zsAnmRefs.Item("GeaendertAm"))
        End If
        If Not IsNull(DR_zsAnmRefs.Item("CRN")) Then SPEDITIONSBUCH.BelegNr = DR_zsAnmRefs.Item("CRN")

        If SPEDITIONSBUCH.Absender = "" Then
            ' Tabelle zsAnmConorTra lesen.
            Dim DTzsAnmConorTra As DataTable = KDSQL.loadDgvBySql("SELECT Na, Pst, Cty, Ctry" &
                    " FROM zsAnmConorTra" &
                    " WHERE (LizenzNr = '" & DR_zsAnmRefs.Item("LizenzNr") & "') And (OperatorID = " & DR_zsAnmRefs.Item("OperatorID") & ") And (VorgangID = '" & DR_zsAnmRefs.Item("VorgangID") & "') And (AnmID = " & DR_zsAnmRefs.Item("AnmID") & ")", EZOLL_SQL)

            If DTzsAnmConorTra.Rows().Count > 0 Then
                If Not IsNull(DTzsAnmConorTra.Rows(0).Item("Na")) Then SPEDITIONSBUCH.Absender = Strings.Left(DTzsAnmConorTra.Rows(0).Item("Na"), 50)
                If Not IsNull(DTzsAnmConorTra.Rows(0).Item("Ctry")) Then SPEDITIONSBUCH.Absender = Strings.Left(SPEDITIONSBUCH.Absender & ", " & DTzsAnmConorTra.Rows(0).Item("Ctry"), 50)
                If Not IsNull(DTzsAnmConorTra.Rows(0).Item("Pst")) Then SPEDITIONSBUCH.Absender = Strings.Left(SPEDITIONSBUCH.Absender & ", " & DTzsAnmConorTra.Rows(0).Item("Pst"), 50)
                If Not IsNull(DTzsAnmConorTra.Rows(0).Item("Cty")) Then SPEDITIONSBUCH.Absender = Strings.Left(SPEDITIONSBUCH.Absender & ", " & DTzsAnmConorTra.Rows(0).Item("Cty"), 50)
                If Not IsNull(DTzsAnmConorTra.Rows(0).Item("Ctry")) Then SPEDITIONSBUCH.Versendungsland = DTzsAnmConorTra.Rows(0).Item("Ctry")
            End If
        End If

        If SPEDITIONSBUCH.Empfänger = "" Then
            ' Tabelle zsAnmConeeTra lesen.
            Dim DTzsAnmConeeTra As DataTable = KDSQL.loadDgvBySql("SELECT Na, Pst, Cty, Ctry" &
                        " FROM zsAnmConeeTra" &
                        " WHERE (LizenzNr = '" & DR_zsAnmRefs.Item("LizenzNr") & "') And (OperatorID = " & DR_zsAnmRefs.Item("OperatorID") & ") And (VorgangID = '" & DR_zsAnmRefs.Item("VorgangID") & "') And (AnmID = " & DR_zsAnmRefs.Item("AnmID") & ")", EZOLL_SQL)

            If DTzsAnmConeeTra.Rows().Count > 0 Then
                If Not IsNull(DTzsAnmConeeTra.Rows(0).Item("Na")) Then SPEDITIONSBUCH.Empfänger = Strings.Left(DTzsAnmConeeTra.Rows(0).Item("Na"), 50)
                If Not IsNull(DTzsAnmConeeTra.Rows(0).Item("Ctry")) Then SPEDITIONSBUCH.Empfänger = Strings.Left(SPEDITIONSBUCH.Empfänger & ", " & DTzsAnmConeeTra.Rows(0).Item("Ctry"), 50)
                If Not IsNull(DTzsAnmConeeTra.Rows(0).Item("Pst")) Then SPEDITIONSBUCH.Empfänger = Strings.Left(SPEDITIONSBUCH.Empfänger & ", " & DTzsAnmConeeTra.Rows(0).Item("Pst"), 50)
                If Not IsNull(DTzsAnmConeeTra.Rows(0).Item("Cty")) Then SPEDITIONSBUCH.Empfänger = Strings.Left(SPEDITIONSBUCH.Empfänger & ", " & DTzsAnmConeeTra.Rows(0).Item("Cty"), 50)
                If Not IsNull(DTzsAnmConeeTra.Rows(0).Item("Ctry")) Then SPEDITIONSBUCH.Bestimmungsland = DTzsAnmConeeTra.Rows(0).Item("Ctry")
            End If
        End If

        ' Tabelle zsAnmTransp lesen.
        Dim DTzsAnmTransp As DataTable = KDSQL.loadDgvBySql("SELECT DepIdnt" &
                " FROM zsAnmTransp" &
                " WHERE (LizenzNr = '" & DR_zsAnmRefs.Item("LizenzNr") & "') And (OperatorID = " & DR_zsAnmRefs.Item("OperatorID") & ") And (VorgangID = '" & DR_zsAnmRefs.Item("VorgangID") & "') And (AnmID = " & DR_zsAnmRefs.Item("AnmID") & ")", EZOLL_SQL)

        If DTzsAnmTransp.Rows().Count > 0 Then
            If Not IsNull(DTzsAnmTransp.Rows(0).Item("DepIdnt")) Then SPEDITIONSBUCH.LKW_Kennzeichen = Strings.Left(DTzsAnmTransp.Rows(0).Item("DepIdnt"), 25)
        End If

        ' Tabelle zsAnmValData lesen.
        Dim DTzsAnmValData As DataTable = KDSQL.loadDgvBySql("SELECT InvCurr, InvVal" &
                " FROM zsAnmValData" &
                " WHERE (LizenzNr = '" & DR_zsAnmRefs.Item("LizenzNr") & "') And (OperatorID = " & DR_zsAnmRefs.Item("OperatorID") & ") And (VorgangID = '" & DR_zsAnmRefs.Item("VorgangID") & "') And (AnmID = " & DR_zsAnmRefs.Item("AnmID") & ")", EZOLL_SQL)

        If DTzsAnmValData.Rows().Count > 0 Then
            If Not IsNull(DTzsAnmValData.Rows(0).Item("InvCurr")) Then
                If DTzsAnmValData.Rows(0).Item("InvCurr") = "EUR" Then
                    SPEDITIONSBUCH.Währungsschlüssel = "900"
                Else
                    SPEDITIONSBUCH.Währungsschlüssel = getWaehr(DTzsAnmValData.Rows(0).Item("InvCurr"))
                End If
            End If
            ' fNEF.cbxWaehrung._value = DTzsAnmValData.Rows(0).Item("InvCurr") ' = DLookup("[Währungsschlüssel]", "Währungstabelle", "[Währungscode] = '" & DTzsAnmValData.Rows(0).Item("InvCurr") & "'")
            If Not IsNull(DTzsAnmValData.Rows(0).Item("InvVal")) Then SPEDITIONSBUCH.Rechnungsbetrag = CDbl(DTzsAnmValData.Rows(0).Item("InvVal"))
        End If

        ' Tabelle zsAnmHea lesen.
        Dim DTzsAnmHea As DataTable = KDSQL.loadDgvBySql("SELECT TotPack, TotGross" &
                " FROM zsAnmHea" &
                " WHERE (LizenzNr = '" & DR_zsAnmRefs.Item("LizenzNr") & "') And (OperatorID = " & DR_zsAnmRefs.Item("OperatorID") & ") And (VorgangID = '" & DR_zsAnmRefs.Item("VorgangID") & "') And (AnmID = " & DR_zsAnmRefs.Item("AnmID") & ")", EZOLL_SQL)

        If packstueckeZOLL_TMP = "" Then
            If DTzsAnmHea.Rows().Count > 0 Then
                If Not IsNull(DTzsAnmHea.Rows(0).Item("TotPack")) Then packstueckeZOLL_TMP = DTzsAnmHea.Rows(0).Item("TotPack") & " Packst."
                If Not IsNull(DTzsAnmHea.Rows(0).Item("TotGross")) Then SPEDITIONSBUCH.Rohmasse = DTzsAnmHea.Rows(0).Item("TotGross")
            End If

            'Dim pkAnz = SQL.DLookup("sum(cast(Nr as float))", "[zsAnmGdsItemPack]", "(LizenzNr = '" & DR_zsAnmRefs.Item("LizenzNr") & "') And (OperatorID = " & DR_zsAnmRefs.Item("OperatorID") & ") And (VorgangID = '" & DR_zsAnmRefs.Item("VorgangID") & "') And (AnmID = " & DR_zsAnmRefs.Item("AnmID") & ")", EZOLL_SQL, "")


            ' Tabelle zsAnmGdsitem lesen.
            Dim DTzsAnmGdsitem As DataTable = KDSQL.loadDgvBySql("SELECT GdsDes" &
                    " FROM zsAnmGdsitem" &
                    " WHERE (LizenzNr = '" & DR_zsAnmRefs.Item("LizenzNr") & "') And (OperatorID = " & DR_zsAnmRefs.Item("OperatorID") & ") And (VorgangID = '" & DR_zsAnmRefs.Item("VorgangID") & "') And (AnmID = " & DR_zsAnmRefs.Item("AnmID") & ")" &
                    " ORDER BY GdsItemID", EZOLL_SQL)

            If DTzsAnmGdsitem.Rows().Count > 0 Then
                If Not IsNull(DTzsAnmGdsitem.Rows(0).Item("GdsDes")) Then
                    If IsNull(packstueckeZOLL_TMP) Then
                        packstueckeZOLL_TMP = DTzsAnmGdsitem.Rows(0).Item("GdsDes")
                    Else
                        packstueckeZOLL_TMP = packstueckeZOLL_TMP & " " & DTzsAnmGdsitem.Rows(0).Item("GdsDes")
                    End If
                End If
            End If
        End If

        ' Qualitäts-CRN -->  Tabelle zsAnmGdsItemDocCerts lesen.
        Dim DTzsAnmGdsQ As DataTable = KDSQL.loadDgvBySql("Select distinct(DRef) DRef FROM [zsAnmGdsItemDocCerts] WHERE (LizenzNr = '" & DR_zsAnmRefs.Item("LizenzNr") & "') And (OperatorID = " & DR_zsAnmRefs.Item("OperatorID") & ") And (VorgangID = '" & DR_zsAnmRefs.Item("VorgangID") & "') And (AnmID = " & DR_zsAnmRefs.Item("AnmID") & " AND DocCd IN ('N002' ,'7246') )", EZOLL_SQL)
        If DTzsAnmGdsQ IsNot Nothing AndAlso DTzsAnmGdsQ.Rows().Count > 0 Then
            If Not IsNull(DTzsAnmGdsQ.Rows(0).Item("DRef")) Then SPEDITIONSBUCH.QKN = DTzsAnmGdsQ.Rows(0).Item("DRef")
        End If


        'Personal Abfertigung:
        Try
            If Not IsNull(DR_zsAnmRefs.Item("GeaendertVon")) Then
                Dim p = KDSQL.getValueTxtBySql("SELECT  ISNULL(CASE WHEN [mit_FMZollPersIDKasseIsnotSpedBuch]=1 THEN [mit_FMZollPersIDSpedBuch] ELSE [mit_FMZollPersID] END ,-1) as [mit_FMZollPersID]  FROM [ADMIN].[dbo].[tblMitarbeiter] WHERE mit_EZOLL_SB='" & DR_zsAnmRefs.Item("GeaendertVon") & "'", "ADMIN")
                SPEDITIONSBUCH.Personalnummer = If(IsNumeric(p), p, Nothing)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Fehler EZOLL Personal: " & vbNewLine & ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)

        End Try

        'Anhang
        If Not IsNull(DR_zsAnmRefs.Item("LRN")) Then
            getStbFromAnmId(DR_zsAnmRefs.Item("LRN"), SPEDITIONSBUCH.DokumentId_Steuerbeleg, SPEDITIONSBUCH.DokumentId_Mitteilung)
        End If

    End Sub

    Function getStbFromAnmId(LRN, ByRef StbId, ByRef MittId) As Boolean
        Try
            StbId = KDSQL.getValueTxtBySql("SELECT [docID]  FROM [tblDHF_Anhaenge]   where MsgTyp IN ('EZ922') and LRN='" & LRN & "'  ", "FMZOLL",,, Nothing)
            MittId = KDSQL.getValueTxtBySql("SELECT [docID]  FROM [tblDHF_Anhaenge]   where MsgTyp IN ('EZ923') and LRN='" & LRN & "'  ", "FMZOLL",,, Nothing)
            Return True
        Catch : End Try
        Return False
    End Function

    Function getVBDFromAnmId(LRN, ByRef VbdId) As Boolean
        Try
            VbdId = KDSQL.getValueTxtBySql("SELECT [docID]  FROM [tblDHF_Anhaenge]   where MsgTyp IN ('TR109') and LRN='" & LRN & "'  ", "FMZOLL",,, Nothing)
            Return True
        Catch : End Try
        Return False
    End Function

    Function IsNull(o) As Boolean
        Try
            If o Is Nothing Then Return True
            If o Is DBNull.Value Then Return True
            If o.ToString.Trim = "" Then Return True
        Catch : End Try
        Return False
    End Function

    Sub setAdresseAndKundenNr(ByRef KUNDE_TXT As String, ByRef KUNDE_KDNR As Integer, Adr_zbadz_typ As Integer, intTyp As Integer, ByVal zollNr As String, ByVal basman_nr As String, ByVal basman_nl As String, ByVal zbant_beznr As String, ByVal zbant_regnr As String, ByVal zbant_korant As String, zbant_vland As String, eori As String, eori_NL As String)
        Dim kunde_tmp As String = ""
        Dim kdnr_tmp As String = ""

        If KUNDE_TXT = "" And KUNDE_KDNR <= 0 Then
            kdnr_tmp = KDSQL.getFMZOLLKdNrFromEORI(eori, eori_NL, "VERAG")
            If IsNull(kdnr_tmp) Then
                If Not IsNull(zollNr) AndAlso IsNumeric(zollNr) AndAlso zollNr <> 0 Then
                    kdnr_tmp = KDSQL.getATLASKdNrFromZollNr(zollNr)
                    If IsNull(kdnr_tmp) And IsNull(kunde_tmp) Then

                        If intTyp = 3 Or intTyp = 4 Then                          ' Vertreter ODER ANMELDER --> zB bei Konsilager gesehen
                            Dim veragZolNr = False
                            If zollNr = 4590317 Then veragZolNr = True ' VERAG Spedition AG, Suben
                            If zollNr = 4884876 Then veragZolNr = True ' VERAG Spedition AG, Raunheim
                            If zollNr = 4899911 Then veragZolNr = True ' VERAG Spedition AG, Salzburg
                            If zollNr = 4824105 Then veragZolNr = True ' VERAG Spedition AG, Neuhaus
                            If zollNr = 5133599 Then veragZolNr = True ' VERAG Spedition AG, Waidhaus
                            If zollNr = "DE4590317" Then veragZolNr = True ' VERAG Spedition AG, Suben
                            If zollNr = "DE4884876" Then veragZolNr = True ' VERAG Spedition AG, Raunheim" Then
                            If zollNr = "DE4899911" Then veragZolNr = True ' VERAG Spedition AG, Salzburg" Then
                            If zollNr = "DE4824105" Then veragZolNr = True ' VERAG Spedition AG, Neuhaus" Then
                            If zollNr = "DE5133599" Then veragZolNr = True ' VERAG Spedition AG, Waidhaus

                            If Not veragZolNr Then ' Nur Wenn 
                                Dim s() As String = KDSQL.getATLASNacherfassungAdresseFrombaskun(zollNr, basman_nr, basman_nl, ATLAS_SERVER_VERBINDUNG)
                                kdnr_tmp = s(1)
                                kunde_tmp = s(0)
                            End If
                        End If
                    End If
                End If
                If intTyp = 1 Or intTyp = 2 Then
                    If IsNull(kdnr_tmp) And IsNull(kunde_tmp) Then
                        kunde_tmp = KDSQL.getATLASNacherfassungAdresse(basman_nr, basman_nl, zbant_beznr, zbant_regnr, zbant_korant, Adr_zbadz_typ, ATLAS_SERVER_VERBINDUNG)
                    End If
                End If
                If intTyp = 1 Then
                    If IsNull(kdnr_tmp) And IsNull(kunde_tmp) Then
                        If Not IsNull(zbant_vland) And Not Trim(zbant_vland) = "" Then
                            kunde_tmp = Trim(zbant_vland)
                        End If
                    End If
                End If
            End If
        End If

        KUNDE_TXT = kunde_tmp
        If IsNumeric(kdnr_tmp) AndAlso kdnr_tmp > 0 Then
            KUNDE_KDNR = kdnr_tmp
        End If

    End Sub

    Sub setAdresseAndKundenNrNCTS(ByRef KUNDE_TXT As String, ByRef KUNDE_KDNR As Integer, Adr_zbadz_typ As Integer, intTyp As Integer, ByVal kdNRATLAS As String, ByVal kdNRATLAS2 As String, ByVal basman_nr As String, ByVal basman_nl As String, ByVal zbant_beznr As String, intLfdNr As Integer, intPosNr As Integer, lngTyp As Long, veoant_ldvs As String)
        Dim kunde_tmp As String = ""
        Dim kdnr_tmp As String = ""
        'Adr_zbadz_typ = 3  -> Absender
        'Adr_zbadz_typ = 4  -> Empfänger

        'intTyp = 1  -> Absender
        'intTyp = 2  -> Empfänger
        'intTyp = 3  -> Auftraggeber
        ' Dim fNEF = DirectCast(Me.Owner, frmNacherfassung)

        ' If KUNDE_TXT = "" And KUNDE_KDNR <= 0 Then
        'kdnr_tmp = KDSQL.getFMZOLLKdNrFromEORI(eori)
        ' End If


        If KUNDE_TXT = "" And KUNDE_KDNR <= 0 Then

            If Not IsNull(kdNRATLAS) AndAlso IsNumeric(kdNRATLAS) AndAlso kdNRATLAS <> 0 Then
                ' kdnr_tmp = KDSQL.getATLASKdNrFromZollNr(kdNRATLAS)
                ' If IsNull(kdnr_tmp) And IsNull(kunde_tmp) Then
                Dim s() As String = KDSQL.getATLASNacherfassungAdresseFrombaskunByKuNr(kdNRATLAS, basman_nr, basman_nl, ATLAS_SERVER_VERBINDUNG)
                kdnr_tmp = s(1)
                kunde_tmp = s(0)
                'End If
            End If
            If intTyp = 2 Then 'EMPF
                If Not IsNull(kdNRATLAS2) AndAlso IsNumeric(kdNRATLAS2) AndAlso kdNRATLAS2 <> 0 Then
                    '  kdnr_tmp = KDSQL.getATLASKdNrFromZollNr(kdNRATLAS2)
                    If IsNull(kdnr_tmp) And IsNull(kunde_tmp) Then
                        Dim s() As String = KDSQL.getATLASNacherfassungAdresseFrombaskunByKuNr(kdNRATLAS2, basman_nr, basman_nl, ATLAS_SERVER_VERBINDUNG)
                        kdnr_tmp = s(1)
                        kunde_tmp = s(0)

                    End If
                End If
            End If
            If intTyp = 1 Or intTyp = 2 Then
                If IsNull(kdnr_tmp) And IsNull(kunde_tmp) Then
                    kunde_tmp = KDSQL.getATLASNacherfassungAdresseNCTS(basman_nr, basman_nl, zbant_beznr, intLfdNr, intPosNr, lngTyp, ATLAS_SERVER_VERBINDUNG)
                End If
            End If
            If intTyp = 1 Or intTyp = 2 Then
                If IsNull(kdnr_tmp) And IsNull(kunde_tmp) Then
                    If Not IsNull(veoant_ldvs) And Not Trim(veoant_ldvs) = "" Then
                        kunde_tmp = Trim(veoant_ldvs)
                    End If
                End If
            End If
        End If

        KUNDE_TXT = kunde_tmp
        If IsNumeric(kdnr_tmp) AndAlso kdnr_tmp > 0 Then
            KUNDE_KDNR = kdnr_tmp
        End If
    End Sub
    Function getint(o) As Integer
        Try
            If o IsNot DBNull.Value AndAlso IsNumeric(o) Then Return CInt(o)
        Catch ex As Exception : End Try
        Return -1
    End Function
    Function getStr(o) As String
        Try
            If o IsNot DBNull.Value Then Return CStr(o)
        Catch ex As Exception : End Try
        Return ""
    End Function
    Function getWaehr(s) As String
        'Return KDSQL.getValueTxtBySql("SELECT TOP 1 isnull([LandNr],-1) FROM [Länderverzeichnis für die Außenhandelsstatistik] WHERE [Währungscode]='" & s & "'", "FMZOLL")
        s = s.replace("TRY", "TRL") ' Türkische Lira
        Return KDSQL.getValueTxtBySql("SELECT TOP 1 isnull([Währungsschlüssel],-1) FROM [Währungstabelle] WHERE [Währungscode]='" & s & "'", "FMZOLL")

    End Function

End Class