Imports System.Data.SqlClient
Imports System.IO
Imports System.Net
Imports System.Net.Mail
Imports System.Runtime.InteropServices
Imports ClosedXML.Excel
Imports DAKOSY_Worker
Imports VERAG_PROG_ALLGEMEIN

Module Mail
    Dim sPath As String = System.AppDomain.CurrentDomain.BaseDirectory
    Dim options As String = sPath & "OPTIONS.txt" '" & Now.ToString("ddMMyyyyHHmmss") & ".csv"
    Dim last_sent As String = sPath & "last_sent.txt" '" & Now.ToString("ddMMyyyyHHmmss") & ".csv"
    Dim betragOpTr = 1000
    Dim supportPWD = "$up0Rt2809!"
    Sub Main()
        Try
            VERAG_PROG_ALLGEMEIN.cAllgemein.ERR_OP_GLOBAL = VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL
            VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
            Dim PARAM = ""
            Dim parameter() As String = Environment.GetCommandLineArgs().ToArray
            If (parameter.Count - 1) >= 1 Then 'Höher als 1 weil der index 0 der Pfad zum programm ist
                PARAM = parameter(1)
                'For i = 1 To parameter.Count - 1
                ' 'If parameter(i) = "HISTORY" Then PARAM = True
                ' Next
            End If

            Dim MailsenderBez As String = "MailSender"
            If VERAG_PROG_ALLGEMEIN.cAllgemein.SQLGUIDE01_USED Then
                MailsenderBez &= " UNLEASHED"
            End If

            System.Console.WriteLine(MailsenderBez & " gestartet ...")
            ' If IO.File.Exists(options) Then

            'If Not IO.File.Exists(last_sent) Then
            'IO.File.Create(last_sent)
            '  End If

            ' Dim o As String = getOption()

            'Dim _erg = VERAG_PROG_ALLGEMEIN.cNCTS_Helper.getXLS_FremdBRG("ATILLA/VERAG", "TOBB - 15TR0004000020917 / 12TR0004000004665 / 17TR0004000032349 / 17TR0004000029518 ", " '12TR0004000004665','15TR0004000020917','17TR0004000032349','17TR0004000029518 '", CDate("01.08.2021 00:00:00"), CDate("12.08.2021 23:59:59"), True)
            'Dim _list As New List(Of String) : _list.Add(_erg)
            'VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail("al@verag.ag", "TOBB " & "ATILLA/VERAG", "*Automatic generated e-mail*",,,, "", "al@verag.ag", _list)

            '_erg = VERAG_PROG_ALLGEMEIN.cNCTS_Helper.getXLS_FremdBRG("IMEX", "TOBB - 15TR0004000020917 / 12TR0004000004665 / 17TR0004000032349 / 17TR0004000029518 ", " '12TR0004000004665','15TR0004000020917','17TR0004000032349','17TR0004000029518 '", CDate("01.08.2021 00:00:00"), CDate("12.08.2021 23:59:59"), True)
            '_list.Clear() : _list.Add(_erg)
            'VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail("al@verag.ag", "TOBB " & "IMEX", "*Automatic generated e-mail*",,,, "", "al@verag.ag", _list)

            'Dim _erg = VERAG_PROG_ALLGEMEIN.cNCTS_Helper.getXLS_FremdBRG("UNISPED", "TOBB - 15TR0004000020917 / 12TR0004000004665 / 17TR0004000032349 / 17TR0004000029518 ", " '12TR0004000004665','15TR0004000020917','17TR0004000032349','17TR0004000029518 '", CDate("01.08.2021 00:00:00"), CDate("12.08.2021 23:59:59"), True)
            'Dim _list As New List(Of String) : _list.Add(_erg)
            ''   VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail("al@verag.ag", "TOBB " & "UNISPED", "*Automatic generated e-mail*",,,, "", "al@verag.ag", _list)
            'VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail("eysan.sans@tobbund.com.tr;kerem.gozutok@tobbund.com.tr", "TOBB " & "UNISPED", "*Automatic generated e-mail*",,,, "Katharina.Haas@unisped.at;Sabine.Muehlboeck@unisped.at;Ernst.Stolzlechner@unisped.at", "al@verag.ag", _list)
            'Exit Sub


            '  PARAM = "MDM_IT_Verguetung"
            'PARAM = "JAHRESABRECHNUNG AG-ZS"
            'PARAM = "TETRAPAK"


            '------------------------------------------------------------------------------------
            '   PARAM = "NCTSLIST_TOBB"
            'PARAM = "KD_DroppedJobs"
            '------------------------------------------------------------------------------------

            If PARAM = "" Then
                System.Console.WriteLine("OPTION nicht erkannt!")
                Exit Sub
            End If
            Dim cnt = 0
            '  MsgBox(DoesProcessExists("MailSender"))
            'While DoesProcessExists("MailSender") Or cnt > 20
            '    System.Console.WriteLine("MailSender wurde nicht beendet, warten ...")
            '    Threading.Thread.Sleep(1000)
            '    cnt += 1
            'End While
            If cnt >= 20 Then
                System.Console.WriteLine("MailSender konnte nicht gestartet werden, da eine Instanz noch läuft...")
            Else

                Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
                Dim dtParam As DataTable = SQL.loadDgvBySql("select * from tblMailsender where ms_param ='" & PARAM & "' and ms_aktiv = 1", "ADMIN")

                Select Case PARAM

                    Case "KD_OP5000" 'umgebaut auf neue Mailsender-Logik
                        If dtParam.Rows.Count = 1 Then
                            System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            If SendEmail_OP5000NEW(dtParam.Rows(0).Item("ms_firma"), "", dtParam.Rows(0).Item("ms_an"), dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        Else
                            System.Console.WriteLine("OPTION erkannt: KD_TR_OP5000 _ Erstellt eine Liste türkischer Kunden und versendet diese AL.")
                            If SendEmail_OP5000("VERAG", "", {"al@verag.ag"}, {}, {}, "VERAG - Offene Posten") Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        End If

                    Case "KD_TR_OP5000" 'umgebaut auf neue Mailsender-Logik
                        If dtParam.Rows.Count = 1 Then
                            System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            If SendEmail_OP5000NEW(dtParam.Rows(0).Item("ms_firma"), "'TR'", dtParam.Rows(0).Item("ms_an"), dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        Else
                            System.Console.WriteLine("OPTION erkannt: KD_TR_OP5000 _ Erstellt eine Liste türkischer Kunden und versendet diese an Mestan und Bahadir.")
                            If SendEmail_OP5000("VERAG", "'TR'", {"mestan@verag.ag", "as@verag.ag"}, {"finans@verimextransit.com"}, {"al@verag.ag"}, "Kunden TR - Offene Rechnungen") Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        End If

                    Case "KD_TR_OP5000_ATILLA" 'umgebaut auf neue Mailsender-Logik
                        If dtParam.Rows.Count = 1 Then
                            System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            If SendEmail_OP5000NEW(dtParam.Rows(0).Item("ms_firma"), "'TR'", dtParam.Rows(0).Item("ms_an"), dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        Else
                            System.Console.WriteLine("OPTION erkannt: KD_TR_OP5000_ATILLA _ Erstellt eine Liste türkischer Kunden von ATILLA.")
                            If SendEmail_OP5000("ATILLA", "'TR'", {"finans@verimextransit.com"}, {}, {"al@verag.ag"}, "Kunden TR - Offene Rechnungen - ATILLA") Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        End If

                    Case "KD_TR_OP5000_IMEX" 'umgebaut auf neue Mailsender-Logik
                        If dtParam.Rows.Count = 1 Then
                            System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            If SendEmail_OP5000NEW(dtParam.Rows(0).Item("ms_firma"), "'TR'", dtParam.Rows(0).Item("ms_an"), dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        Else
                            System.Console.WriteLine("OPTION erkannt: KD_TR_OP5000_IMEX _ Erstellt eine Liste türkischer Kunden von IMEX.")
                            If SendEmail_OP5000("IMEX", "'TR'", {"mario.hoefer@imex-group.at"}, {"viktoria.leirich@imex-group.at", "finans@verimextransit.com"}, {"al@verag.ag"}, "Kunden TR - Offene Rechnungen - IMEX") Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        End If

                    Case "KD_OP_Kreditlimit" 'umgebaut auf neue Mailsender-Logik
                        If dtParam.Rows.Count = 1 Then
                            System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            If SendEmail_OPKreditlimitNEW(dtParam.Rows(0).Item("ms_an"), dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        Else
                            System.Console.WriteLine("OPTION erkannt: KD_OP_Kreditlimit _ Erstellt eine OP Liste von Kunden mit Kreditlimit oder VK-Kunden.")
                            If SendEmail_OPKreditlimit({"as@verag.ag"}, {}, {"al@verag.ag"}, "Kunden - Offene Rechnungen - ACHTUNG: nur mit erfasstem Kreditlimit") Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        End If

                    Case "NCTSLIST_TOBB" 'umgebaut auf neue Mailsender-Logik
                        If dtParam.Rows.Count > 0 Then
                            For i As Integer = 0 To dtParam.Rows.Count - 1
                                System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(i).Item("ms_info"))
                                sendTOBB(dtParam.Rows(i).Item("ms_firma"), Now.AddDays(-1), Now.AddDays(-1), dtParam.Rows(i).Item("ms_an"), dtParam.Rows(i).Item("ms_cc"), dtParam.Rows(i).Item("ms_bcc"), dtParam.Rows(i).Item("ms_subject"), dtParam.Rows(i).Item("ms_mailtext"))
                                i = i + 1
                            Next
                        Else
                            System.Console.WriteLine("OPTION erkannt: NCTSLIST_TOBB _ Erstellt eine Liste der Versandscheine mit TOBB Bürgschaft.")
                            sendTOBB("VERAG/ATILLA", Now.AddDays(-1), Now.AddDays(-1))
                            'sendTOBB("IMEX", Now.AddDays(-1), Now.AddDays(-1))
                            sendTOBB("UNISPED", Now.AddDays(-1), Now.AddDays(-1))
                        End If


                    Case "VW_DHL" 'umgebaut auf neue Mailsender-Logik
                        If dtParam.Rows.Count = 1 Then
                            System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            If SendEmail_VW_DHL_updateListNEW(dtParam.Rows(0).Item("ms_an"), dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        Else

                            System.Console.WriteLine("OPTION erkannt: VW_DHL _ Erstellt eine Liste der LKWs auf Ankunft und Freigabe des Tages.")
                            If SendEmail_VW_DHL_updateList({"volkswagen@verag.ag"}, {}, {}, "VW/DHL - aktuelle LKW Liste") Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        End If


                    Case "BRG_AUSWERTUNG_STANDARD"
                        System.Console.WriteLine("OPTION erkannt: BRG_AUSWERTUNG_STANDARD _ Erstellt die Auswertung der Bürgschaften.")
                        System.Console.WriteLine("Einlesen der Bürgschaftsdaten aus ATLAS und E-ZOLL...")
                        einlesenBRG()
                        System.Console.WriteLine("Einlesen abgeschlossen...")
                        System.Console.WriteLine("Auswertung gestartet...")
                        If SendEmail_BRG_Auswertung(IIf(Now.DayOfWeek = 1, True, False)) Then
                            System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                        End If
                    Case "BRG_AUSWERTUNG_DETAILS"
                        System.Console.WriteLine("OPTION erkannt: BRG_AUSWERTUNG_DETAILS _ Erstellt die Auswertung der Bürgschaften mit Details.")
                        System.Console.WriteLine("Einlesen der Bürgschaftsdaten aus ATLAS und E-ZOLL...")
                        einlesenBRG()
                        System.Console.WriteLine("Einlesen abgeschlossen...")
                        System.Console.WriteLine("Auswertung Details gestartet...")
                        If SendEmail_BRG_Auswertung(IIf(Now.DayOfWeek = 1, True, False), True) Then 'für Andreas Details
                            System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                        End If
                    Case "WOELFL"
                        System.Console.WriteLine("OPTION erkannt: WOELFL ")
                        System.Console.WriteLine("Starte Wölfl-Mail...")
                        If SendEmail_WOELFL() Then
                            Try
                                Dim outFile As System.IO.StreamWriter = Nothing
                                outFile = My.Computer.FileSystem.OpenTextFileWriter(last_sent, False)
                                outFile.Write(Now.AddDays(-1).ToShortDateString)
                                outFile.Close()
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            Catch ex As Exception
                                MsgBox(ex.Message)
                            End Try
                        End If

                    Case "THYSSENKRUPP_AUSWERTUNG" 'umgebaut auf neue Mailsender-Logik
                        Dim von = CDate("01." & Now.AddMonths(-1).Month & "." & Now.AddMonths(-1).Year)
                        Dim bis = CDate("01." & Now.Month & "." & Now.Year).AddDays(-1)

                        Dim EORI As String = "DE2841711"

                        If dtParam.Rows.Count = 1 Then
                            System.Console.WriteLine("OPTION erkannt:" & dtParam.Rows(0).Item("ms_info"))
                            System.Console.WriteLine("Auswertung Details gestartet...")
                            If SendEmail_THYSSENKRUPP_AUSWERTUNG(dtParam.Rows(0).Item("ms_an"), EORI, von, bis, dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then 'für Andreas Details
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        Else
                            System.Console.WriteLine("OPTION erkannt: THYSSENKRUPP_AUSWERTUNG _ Erstellt eine monaltiche Auswertung der DAKSOY-Abfertigungen für THYSSENKRUPP.")
                            System.Console.WriteLine("Auswertung Details gestartet...")
                            If SendEmail_THYSSENKRUPP_AUSWERTUNG("al@verag.ag", EORI, von, bis) Then 'für Andreas Details
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        End If


                    Case "RED_BULL" 'umgebaut auf neue Mailsender-Logik
                        Dim von = CDate("01." & Now.AddMonths(-1).Month & "." & Now.AddMonths(-1).Year)
                        Dim bis = CDate("01." & Now.Month & "." & Now.Year).AddDays(-1)

                        Dim KdNr As String = "756313"
                        If dtParam.Rows.Count = 1 Then
                            System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            System.Console.WriteLine("Auswertung Details gestartet...")
                            If SendEmail_RED_BULL(dtParam.Rows(0).Item("ms_an"), KdNr, von, bis, dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then 'für Andreas Details
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        Else
                            System.Console.WriteLine("OPTION erkannt: RED_BULL _ Erstellt eine monaltiche Auswertung der DAKSOY-Abfertigungen für RED_BULL/Alpha Tauri.")
                            System.Console.WriteLine("Auswertung Details gestartet...")
                            If SendEmail_RED_BULL("customs.documents.ata@redbull.com", KdNr, von, bis) Then 'für Andreas Details
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If

                        End If

                    Case "JAHRESABRECHNUNG AG-ZS" 'umgebaut auf neue Mailsender-Logik

                        Dim von = CDate("01.02." & Now.AddYears(-1).Year)
                        Dim bis = CDate("31.01." & Now.Year)
                        Dim Filialen = "'4803', '5003', '5303'"
                        Dim abfertigungsart = "38"
                        If dtParam.Rows.Count = 1 Then
                            System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            System.Console.WriteLine("Auswertung Details gestartet...")
                            If SendEmail_Jahresauwsertung_AG_ZF(dtParam.Rows(0).Item("ms_an"), Filialen, abfertigungsart, von, bis, dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        Else
                            System.Console.WriteLine("OPTION erkannt: JAHRESAUSWERTUNG AG-ZS_ Erstellt eine jährliche Auswertung der Abfertigungen für die BH.")
                            System.Console.WriteLine("Auswertung Details gestartet...")
                            If SendEmail_Jahresauwsertung_AG_ZF("as.verag.ag", Filialen, abfertigungsart, von, bis) Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        End If


                    Case "ZF" 'umgebaut auf neue Mailsender-Logik
                        Dim von = CDate("01." & Now.AddMonths(-1).Month & "." & Now.AddMonths(-1).Year)
                        Dim bis = CDate("01." & Now.Month & "." & Now.Year).AddDays(-1)


                        '--------ZF PASSAU------------

                        Dim KdNr As String = "714869"

                        If dtParam.Rows.Count > 1 Then

                            For Each r As DataRow In dtParam.Rows

                                System.Console.WriteLine("OPTION erkannt: " & r.Item("ms_info"))
                                System.Console.WriteLine("Auswertung Details gestartet...")
                                If SendEmail_ZF(r.Item("ms_an"), r.Item("ms_kundenNr"), von, bis, "monthly", r.Item("ms_cc"), r.Item("ms_bcc"), r.Item("ms_subject"), r.Item("ms_mailtext")) Then
                                    System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                                End If
                            Next


                        Else

                            System.Console.WriteLine("OPTION erkannt: ZF _ Erstellt eine monaltiche Auswertung der DAKSOY-Abfertigungen für ZF.")
                            System.Console.WriteLine("Auswertung Details gestartet...")
                            If SendEmail_ZF("robert.buchbauer@zf.com; teresa.elster@zf.com", KdNr, von, bis, "monthly") Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If


                        End If


                        '--------ZF THYRNAU------------

                        KdNr = "718486"
                        'NIX...

                        '--------ZF STEYR------------

                        KdNr = "764755"

                        If dtParam.Rows.Count > 1 Then
                            'wurde bereits oben durchgeführt!

                            'System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            'System.Console.WriteLine("Auswertung Details gestartet...")
                            'If SendEmail_ZF(dtParam.Rows(0).Item("ms_an"), KdNr, von, bis, "monthly", dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then
                            '    System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            'End If

                        Else

                            System.Console.WriteLine("OPTION erkannt: ZF _ Erstellt eine monaltiche Auswertung der Abfertigungen für ZF.")
                            System.Console.WriteLine("Auswertung Details gestartet...")

                            If SendEmail_ZF("teresa.elster@zf.com;manfred.lindbichler@zf.com;walter.gnadlinger@zf.com", KdNr, von, bis, "monthly") Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If


                        End If


                    Case "ZF_QUARTER" 'umgebaut auf neue Mailsender-Logik

                        Dim quartal As Integer = ((Now.Month - 1) \ 3) + 1
                        Dim jahr As Integer = Now.Year

                        If quartal = 1 Then
                            quartal = 4
                            jahr -= 1
                        Else
                            quartal -= 1
                        End If

                        Dim von As Date = New Date(jahr, (quartal - 1) * 3 + 1, 1)
                        Dim bis As Date = von.AddMonths(3).AddDays(-1)


                        '--------ZF STEYR------------


                        Dim KdNr As String = "764755"

                        If dtParam.Rows.Count >= 1 Then

                            'System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            'System.Console.WriteLine("Auswertung Details gestartet...")
                            'If SendEmail_ZF(dtParam.Rows(0).Item("ms_an"), dtParam.Rows(0).Item("ms_kundenNr"), von, bis, "quarter", dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then
                            '    System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            'End If


                            For Each r As DataRow In dtParam.Rows

                                System.Console.WriteLine("OPTION erkannt: " & r.Item("ms_info"))
                                System.Console.WriteLine("Auswertung Details gestartet...")
                                If SendEmail_ZF(dtParam.Rows(0).Item("ms_an"), dtParam.Rows(0).Item("ms_kundenNr"), von, bis, "quarter", dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then
                                    System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                                End If
                            Next


                        Else

                            System.Console.WriteLine("OPTION erkannt: ZF _ Erstellt eine Auswertung pro Quartal aller Abfertigungen für ZF.")
                            System.Console.WriteLine("Auswertung Details gestartet...")
                            If SendEmail_ZF("d.breimaier@verag.ag; ml@verag.ag", KdNr, von, bis, "quarter") Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If


                        End If

                        '--------ZF THYRNAU------------

                        KdNr = "718486"
                        'NIX...

                        '--------ZF PASSAU------------

                        KdNr = "714869"
                        'NIX...



                    Case "QS_AUFTEILUNG"
                        System.Console.WriteLine("OPTION erkannt: QS_AUFTEILUNG _ Erstellt die Auswertung der QS-AUFTEILUNG.")
                        System.Console.WriteLine("Auswertung gestartet...")

                        Dim von = CDate("01." & Now.AddMonths(-1).Month & "." & Now.AddMonths(-1).Year)
                        Dim bis = CDate("01." & Now.Month & "." & Now.Year).AddDays(-1)

                        If SendEmail_QS_Auswertung(von, bis) Then 'für Andreas Details
                            System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                        End If
                    Case "CS_AUFTEILUNG"
                        System.Console.WriteLine("OPTION erkannt: CS_AUFTEILUNG _ Erstellt die Auswertung der FISKAL-AUFTEILUNG.")
                        System.Console.WriteLine("Auswertung gestartet...")
                        If SendEmail_CS_Auswertung() Then 'für Andreas Details
                            System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                        End If
                    Case "MDM_Zollbuero_Verguetung"
                        System.Console.WriteLine("OPTION erkannt: MDM_Zollbuero_Verguetung _ Erstellt die Auswertung der durchgeführten MWST-Auszahlungen und MD-Kartenausgabe.")
                        System.Console.WriteLine("Auswertung gestartet...")
                        Dim Jahr = -1
                        If (parameter.Count - 1) >= 2 Then
                            Jahr = parameter(2)
                            System.Console.WriteLine("Parameter 'Jahr' erkannt: " & Jahr)
                        End If
                        If MDM_Zollbuero_Verguetung(Jahr) Then 'für Andreas Details
                            System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                        End If
                    Case "MDM_IT_Verguetung"
                        System.Console.WriteLine("OPTION erkannt: MDM_IT_Verguetung _ Erstellt die Auswertung der durchgeführten MDM Transaktionen.")
                        System.Console.WriteLine("Auswertung gestartet...")
                        Dim Jahr = -1
                        If (parameter.Count - 1) >= 2 Then
                            Jahr = parameter(2)
                            System.Console.WriteLine("Parameter 'Jahr' erkannt: " & Jahr)
                        End If
                        If MDM_IT_Verguetung(Jahr) Then 'für Andreas Details
                            System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                        End If
                    Case "KD_DroppedJobs" 'Rückgang Abfertigungszahlen
                        System.Console.WriteLine("OPTION erkannt: KD_DroppedJobs _ Erstellt die Auswertung der Kunden mit rückläufigen Zahlen")
                        System.Console.WriteLine("Auswertung gestartet...")
                        Dim FirmaTmp = ""
                        If (parameter.Count - 1) >= 2 Then
                            FirmaTmp = parameter(2)
                            System.Console.WriteLine("Parameter 'FirmaTmp' erkannt: " & FirmaTmp)
                        End If

                        If FirmaTmp <> "" Then
                            KD_DroppedJobs(FirmaTmp, "EMPFÄNGER")
                            KD_DroppedJobs(FirmaTmp, "AVISIERER")
                            System.Console.WriteLine("Vorgang  abgeschlossen ...")
                        Else
                            KD_DroppedJobs("VERAG", "EMPFÄNGER")
                            KD_DroppedJobs("VERAG", "AVISIERER")
                            KD_DroppedJobs("IMEX", "EMPFÄNGER")
                            KD_DroppedJobs("IMEX", "AVISIERER")
                            KD_DroppedJobs("UNISPED", "EMPFÄNGER")
                            KD_DroppedJobs("UNISPED", "AVISIERER")
                            System.Console.WriteLine("Vorgang abgeschlossen ...")
                        End If
                    Case "Kassenbuch_Zufall"
                        System.Console.WriteLine("OPTION erkannt: Kassenbuch_Zufall - Zufallsziehung zur Kassenkontrolle.")
                        System.Console.WriteLine("Vorgang gestartet...")
                        If SendEmail_Kassenbuch_Zufall() Then 'für Andreas Details
                            System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                        End If
                    Case "DEPOT_Kunden_Auswertung"
                        System.Console.WriteLine("OPTION erkannt: DEPOT_Kunden_Auswertung")
                        System.Console.WriteLine("Vorgang gestartet...")
                        'Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
                        Dim dt As DataTable = SQL.loadDgvBySql("SELECT  KundenNrZentrale FROM  [tblKundenErweitert] INNER JOIN Kunden on kundennr= kde_KundenNr where Depot_Kunde = 1", "FMZOLL")
                        If dt IsNot Nothing Then
                            For Each r In dt.Rows
                                DEPOT_Kunden_Auswertung(r("KundenNrZentrale"))
                            Next
                        End If
                        System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")

                    Case "AMBAR_Datev_Mailversand_to_HK" 'umgebaut auf neue Mailsender-Logik

                        If dtParam.Rows.Count = 1 Then
                            System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            System.Console.WriteLine("Vorgang gestartet...")
                            SendEmail_AMBARTOHKT(dtParam.Rows(0).Item("ms_an"), dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext"))
                            System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                        Else
                            System.Console.WriteLine("OPTION erkannt: AMBAR-Datev Versand")
                            System.Console.WriteLine("Vorgang gestartet...")
                            SendEmail_AMBARTOHKT("T.Wesolowski@hkt-tax.de", "C.Tuendermann@hkt-tax.de;D.Horneber@hkt-tax.de,IO@ambarlog.de", "d.breimaier@verag.ag")
                            System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")

                        End If


                    Case "UID_OPS_SYSKA_ABGLEICH" 'umgebaut auf neue Mailsender-Logik
                        If dtParam.Rows.Count = 1 Then
                            System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            System.Console.WriteLine("Vorgang gestartet...")
                            If SendEmail_Syska_UID_Vergleich(dtParam.Rows(0).Item("ms_an"), dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                        Else
                            System.Console.WriteLine("OPTION erkannt: UID-Vergleich SYSKA")
                            System.Console.WriteLine("Vorgang gestartet...")
                            If SendEmail_Syska_UID_Vergleich("as@verag.ag") Then System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                        End If


                    Case "TETRAPAK" 'umgebaut auf neue Mailsender-Logik
                        Dim von = CDate("01." & Now.AddMonths(-1).Month & "." & Now.AddMonths(-1).Year)
                        Dim bis = CDate("01." & Now.Month & "." & Now.Year).AddDays(-1)
                        If dtParam.Rows.Count = 1 Then
                            System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            System.Console.WriteLine("Auswertung Details gestartet...")
                            If SendEmail_Tetrapak(dtParam.Rows(0).Item("ms_an"), von, bis, "DE", dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) AndAlso SendEmail_Tetrapak(dtParam.Rows(0).Item("ms_an"), von, bis, "AT", dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        Else

                            System.Console.WriteLine("OPTION erkannt: TETRA_PAK _ Erstellt eine monatliche Auswertung der DAKSOY/EZOLL-Abfertigungen für TETRAPAK.")
                            System.Console.WriteLine("Auswertung Details gestartet...")

                            If SendEmail_Tetrapak("Maria.mendez@tetrapak.com; Andrea.Ronceria@tetrapak.com; nikhil.mediratta@tetrapak.com", von, bis, "DE") AndAlso SendEmail_Tetrapak("Maria.mendez@tetrapak.com;Andrea.Ronceria@tetrapak.com;nikhil.mediratta@tetrapak.com", von, bis, "AT") Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        End If
                    'Case "TETRAPAK_OKT" 'umgebaut auf neue Mailsender-Logik
                    '    Dim von = CDate("01.10.2025")
                    '    Dim bis = CDate("31.10.2025")
                    '    If dtParam.Rows.Count = 1 Then
                    '        System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                    '        System.Console.WriteLine("Auswertung Details gestartet...")
                    '        If SendEmail_Tetrapak(dtParam.Rows(0).Item("ms_an"), von, bis, "DE", dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) AndAlso SendEmail_Tetrapak(dtParam.Rows(0).Item("ms_an"), von, bis, "AT", dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then
                    '            System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                    '        End If
                    '    Else
                    '        System.Console.WriteLine("OPTION erkannt: TETRA_PAK _ Erstellt eine monatliche Auswertung der DAKSOY/EZOLL-Abfertigungen für TETRAPAK.")
                    '        System.Console.WriteLine("Auswertung Details gestartet...")

                    '        If SendEmail_Tetrapak("Maria.mendez@tetrapak.com; Andrea.Ronceria@tetrapak.com; nikhil.mediratta@tetrapak.com", von, bis, "DE") AndAlso SendEmail_Tetrapak("Maria.mendez@tetrapak.com;Andrea.Ronceria@tetrapak.com;nikhil.mediratta@tetrapak.com", von, bis, "AT") Then
                    '            System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                    '        End If
                    '    End If

                    Case "Imex_Kunden_keine_Abfertigung" 'umgebaut auf neue Mailsender-Logik
                        Dim von = CDate("01." & Now.AddMonths(-1).Month & "." & Now.AddMonths(-1).Year)
                        Dim bis = CDate("01." & Now.Month & "." & Now.Year).AddDays(-1)
                        If dtParam.Rows.Count = 1 Then

                            System.Console.WriteLine("OPTION erkannt: " & dtParam.Rows(0).Item("ms_info"))
                            System.Console.WriteLine("Auswertung Details gestartet...")
                            If SendEmail_ImexAbfertigung(dtParam.Rows(0).Item("ms_an"), von, bis, dtParam.Rows(0).Item("ms_cc"), dtParam.Rows(0).Item("ms_bcc"), dtParam.Rows(0).Item("ms_subject"), dtParam.Rows(0).Item("ms_mailtext")) Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If

                        Else

                            System.Console.WriteLine("OPTION erkannt: Imex-Kunden ohne Abfertigung – Erstellt eine monatliche Auswertung der Imex-Kunden, die in den letzten 2 Jahren keine Abfertigung hatten")
                            System.Console.WriteLine("Auswertung Details gestartet...")
                            If SendEmail_ImexAbfertigung("cf@verag.ag", von, bis) Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If
                        End If

                    Case "BERICHT"

                        Dim von = CDate("01." & Now.AddMonths(-1).Month & "." & Now.AddMonths(-1).Year)
                        Dim bis = CDate("01." & Now.Month & "." & Now.Year).AddDays(-1)

                        For Each r As DataRow In dtParam.Rows

                            System.Console.WriteLine("OPTION erkannt:" & dtParam.Rows(0).Item("ms_info"))
                            System.Console.WriteLine("Auswertung Details gestartet...")
                            If SendEmail_DiverseKunden(r.Item("ms_an"), r.Item("ms_kundenNr"), von, bis, "BERICHT", r.Item("ms_cc"), r.Item("ms_bcc"), r.Item("ms_subject"), r.Item("ms_mailtext")) Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If

                        Next



                    Case "DETAILBERICHT"

                        Dim von = CDate("01." & Now.AddMonths(-1).Month & "." & Now.AddMonths(-1).Year)
                        Dim bis = CDate("01." & Now.Month & "." & Now.Year).AddDays(-1)


                        For Each r As DataRow In dtParam.Rows

                            System.Console.WriteLine("OPTION erkannt:" & dtParam.Rows(0).Item("ms_info"))
                            System.Console.WriteLine("Auswertung Details gestartet...")

                            If SendEmail_DiverseKunden(r.Item("ms_an"), r.Item("ms_kundenNr"), von, bis, "DETAILBERICHT", r.Item("ms_cc"), r.Item("ms_bcc"), r.Item("ms_subject"), r.Item("ms_mailtext")) Then
                                System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
                            End If

                        Next





                    Case Else


                        System.Console.WriteLine("OPTION nicht erkannt!")
                End Select

            End If
            '  Else
            '  System.Console.WriteLine("OPTIONS-Datei nicht gefunden!  " & options)
            '  End If

            Threading.Thread.Sleep(1000)
            '  System.Console.WriteLine("Programm beendet in 5")
            ' Threading.Thread.Sleep(1000)
            ' System.Console.WriteLine("Programm beendet in 4")
            '  Threading.Thread.Sleep(1000)
            System.Console.WriteLine("Programm beendet in 3")
            Threading.Thread.Sleep(1000)
            System.Console.WriteLine("Programm beendet in 2")
            Threading.Thread.Sleep(1000)
            System.Console.WriteLine("Programm beendet in 1")
            Threading.Thread.Sleep(1000)

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

    Function sendTOBB(FirmaTmp As String, datVon As Date, datBis As Date, Optional mailto As String = "", Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean
        Dim _erg = VERAG_PROG_ALLGEMEIN.cNCTS_Helper.getXLS_FremdBRG(FirmaTmp, "TOBB - " & VERAG_PROG_ALLGEMEIN.cNCTS_GUARANTEES.getSlashList(VERAG_PROG_ALLGEMEIN.cNCTS_GUARANTEES.TOBB), VERAG_PROG_ALLGEMEIN.cNCTS_GUARANTEES.getSQLList(VERAG_PROG_ALLGEMEIN.cNCTS_GUARANTEES.TOBB), datVon, datBis, True)
        Dim _list As New List(Of String)
        Dim addbetreff = ""
        Select Case _erg
            Case "NO_RESULT"
                System.Console.WriteLine("Keine Einträge gefunden.")
                addbetreff = " - NO DATA"
            Case ""
            Case Else
                _list.Add(_erg)
        End Select

        Dim bool_sent = False
        If mailto = "" Then
            Select Case FirmaTmp
                Case "VERAG/ATILLA" : bool_sent = VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail("eysan.sans@tobbund.com.tr;kerem.gozutok@tobbund.com.tr;arda.bicakli@tobbund.com.tr;mert.koseoglu@tobbund.com.tr", "TOBB " & FirmaTmp & addbetreff, "*Automatic generated e-mail*",,,, "atilla@verag.ag", "al@verag.ag", _list)
                Case "IMEX" : bool_sent = VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail("eysan.sans@tobbund.com.tr;kerem.gozutok@tobbund.com.tr;arda.bicakli@tobbund.com.tr;mert.koseoglu@tobbund.com.tr", "TOBB " & FirmaTmp & addbetreff, "*Automatic generated e-mail*",,,, "info@imex-group.at;Mario.Hoefer@imex-group.at", "al@verag.ag", _list)
                Case "UNISPED" : bool_sent = VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail("eysan.sans@tobbund.com.tr;kerem.gozutok@tobbund.com.tr;arda.bicakli@tobbund.com.tr;mert.koseoglu@tobbund.com.tr", "TOBB " & FirmaTmp & addbetreff, "*Automatic generated e-mail*",,,, "Katharina.Haas@unisped.at;Sabine.Muehlboeck@unisped.at;Ernst.Stolzlechner@unisped.at", "al@verag.ag", _list)
            End Select
        Else
            bool_sent = VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(mailto, Subject & addbetreff, Body,,, False, cc, bcc, _list)
        End If


        If bool_sent Then
            System.Console.WriteLine("Vorgang erfolgreich abgeschlossen (" & FirmaTmp & ") ...")
        Else
            System.Console.WriteLine("Fehler beim Senden der Mail (" & FirmaTmp & ") ...")
        End If

        Return bool_sent
    End Function

    Function getOption() As String
        Try
            Dim instr = New StreamReader(options)
            Dim d = instr.ReadLine
            instr.Close()
            Return d
        Catch ex As Exception
            Return ""
        End Try
    End Function
    Private Function DoesProcessExists(ByVal PName As String) As Boolean
        Dim cnt = 0
        For Each p As Process In System.Diagnostics.Process.GetProcessesByName(PName)
            'MsgBox("found" & p.StartInfo.UserName)
            'If p.StartInfo.UserName = Environment.UserName Then
            cnt += 1
            'End If
        Next
        If cnt > 1 Then Return True
        Return False
    End Function


    Private Function SendEmail_Kassenbuch_Zufall() As Boolean
        Dim Msg As New MailMessage
        Dim myCredentials As New System.Net.NetworkCredential
        myCredentials.UserName = "support@verag.ag"
        myCredentials.Password = supportPWD


        ' myCredentials.UserName = "testmail@verag.ag"
        '  myCredentials.Password = "testmail"
        Msg.IsBodyHtml = False
        Dim mySmtpsvr As New SmtpClient()
        '  mySmtpsvr.Host = "192.168.0.107" 'bei web.de
        ' mySmtpsvr.Port = 25 '587 '25
        mySmtpsvr.Host = "owa.verag.ag"
        mySmtpsvr.Port = 587 '25 '587 '25
        mySmtpsvr.UseDefaultCredentials = False
        mySmtpsvr.Credentials = myCredentials
        System.Console.WriteLine("E-Mail Daten initialisiert...")
        Try
            Dim datum As String = Now.AddDays(-1).ToShortDateString

            System.Console.WriteLine("Sende E-Mail...")
            Msg.From = New MailAddress("support@verag.ag")

            Msg.IsBodyHtml = True
            Msg.To.Add("al@verag.ag")
            '   Msg.CC.Add("al@verag.ag")

            Msg.Subject = "Kassenprüfung - Zufallsziehung"

            Msg.Body &= "<span style=""font-family:Arial"">"
            Msg.Body = "Folgende Kasse ist zu kontrollieren und ein Kassensturz durchzuführen:"
            Msg.Body &= "<br><br>"
            Msg.Body &= "Per Zufallsgenerator gezogene Kasse: <b>" & (New VERAG_PROG_ALLGEMEIN.SQL).getValueTxtBySql("Select TOP 1 [Name] + ',  KB-Nr.: ' + cast([KassenbuchNr] as varchar) FROM [VERAG].[dbo].[Personal]  where Mandant='VERA'  AND  [Status]='A' AND BLC='R' AND SBSichtbar=1 and KassenbuchNr is not null   ORDER BY NEWID()", "FMZOLL") & "</b>"
            Msg.Body &= "<br><br><br>"
            Msg.Body &= "Automatisch generiertes E-Mail."
            Msg.Body &= "</span>"

            mySmtpsvr.Send(Msg)

            System.Console.WriteLine("E-Mail gesendet.")
            System.Console.WriteLine("Erfolgreich!")
            Return True

        Catch ex As Exception
            Try
                mySmtpsvr.Port = 25
                mySmtpsvr.Send(Msg)

            Catch ex2 As Exception
                Try
                    mySmtpsvr.Host = "192.168.0.107"
                    mySmtpsvr.Port = 25
                    mySmtpsvr.Send(Msg)

                Catch ex3 As Exception
                    MsgBox(ex3.Message & ex3.StackTrace)
                    Return False
                End Try
            End Try


        End Try
        Return False
    End Function





    Private Function DEPOT_Kunden_Auswertung(KundenNr) As Boolean
        '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True
        '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        Dim Msg As New MailMessage
        Dim myCredentials As New System.Net.NetworkCredential
        myCredentials.UserName = "support@verag.ag"
        myCredentials.Password = supportPWD


        ' myCredentials.UserName = "testmail@verag.ag"
        '  myCredentials.Password = "testmail"
        Msg.IsBodyHtml = True
        Dim mySmtpsvr As New SmtpClient()
        '  mySmtpsvr.Host = "192.168.0.107" 'bei web.de
        ' mySmtpsvr.Port = 25 '587 '25
        mySmtpsvr.Host = "owa.verag.ag"
        mySmtpsvr.Port = 587 '25 '587 '25
        mySmtpsvr.UseDefaultCredentials = False
        mySmtpsvr.Credentials = myCredentials
        System.Console.WriteLine("E-Mail Daten initialisiert...")
        Try
            System.Console.WriteLine("Erstelle EXCEL...")
            Dim excel As String = genEXCEL_DEPOT(KundenNr)
            MsgBox(excel)
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")
                Msg.From = New MailAddress("al@verag.ag")

                Msg.To.Add("al@verag.ag") 'Detailierter Bericht nur an al@verag.ag


                Msg.Subject = "Auswertung DEPOT"
                Msg.Body = "<p style='12pt Arial'>"
                Msg.Body &= "Anbei befinden sich die Auswertung Ihres Depot-Kontos<br><br>Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString
                Msg.Body &= "<br><br><br>Automatisch generiertes E-Mail."
                Msg.Body &= "</p>"

                Dim attachment1 As Attachment = New Attachment(File.OpenRead(excel), "Auswertung.xlsx")
                Msg.Attachments.Add(attachment1)



                mySmtpsvr.Send(Msg)

                System.Console.WriteLine("E-Mail gesendet.")
                System.Console.WriteLine("Erfolgreich!")
                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            Try
                mySmtpsvr.Port = 25
                mySmtpsvr.Send(Msg)

            Catch ex2 As Exception
                Try
                    mySmtpsvr.Host = "192.168.0.107"
                    mySmtpsvr.Port = 25
                    mySmtpsvr.Send(Msg)

                Catch ex3 As Exception
                    MsgBox(ex3.Message & ex3.StackTrace)
                    Return False
                End Try
            End Try


        End Try
        Return False
    End Function

    Private Function SendEmail_THYSSENKRUPP_AUSWERTUNG(Mailto As String, EORI As String, von As Date, bis As Date, Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean
        Try
            Dim excel As String = genEXCEL_THYSSENKRUPP(EORI, von, bis)
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")

                If Subject = "" Then
                    Subject = "Auswertungen Zollanmeldungen EORI " & EORI
                Else
                    Subject = replaceBodyVariable(Subject)
                End If

                If Body = "" Then
                    Body = "Anbei befinden sich die Auswertungen Zollanmeldungen von " & von.ToShortDateString & " bis " & bis.ToShortDateString & "." &
                     "<br><br>Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
                     "<br><br><br>Automatisch generiertes E-Mail. Bitte Antworten Sie nicht an dieses E-Mail." &
                     "<br><br>VERAG SPEDITION AG"
                Else

                    Body = replaceBodyVariable(Body, von, bis)

                End If



                Dim anhenge As New List(Of String)
                anhenge.Add(excel)
                If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False,, "al@verag.ag", anhenge) Then
                    System.Console.WriteLine("E-Mail gesendet.")
                    System.Console.WriteLine("Erfolgreich!")
                Else
                    System.Console.WriteLine("ERROR BEIM SENDEN DER MAIL!")

                End If

                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
            System.Console.WriteLine(ex.Message & ex.StackTrace)
            Return False
        End Try
    End Function

    Private Function SendEmail_RED_BULL(Mailto As String, KdNr As String, von As Date, bis As Date, Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean
        Try
            Dim excel As String = genEXCEL_RED_BULL(KdNr, von, bis)
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")

                If Subject = "" Then
                    Subject = "Auswertungen Zollanmeldungen Aplha Tauri "
                End If

                If Body = "" Then
                    Body = "Anbei befinden sich die Auswertungen Zollanmeldungen von " & von.ToShortDateString & " bis " & bis.ToShortDateString & "." &
                     "<br><br>Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
                     "<br><br><br>Automatisch generiertes E-Mail. Bitte Antworten Sie nicht an dieses E-Mail." &
                     "<br><br>VERAG SPEDITION AG"
                Else
                    Body = replaceBodyVariable(Body, von, bis)
                End If



                Dim anhenge As New List(Of String)
                anhenge.Add(excel)
                If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False,, "d.breimaier@verag.ag;schulung@verag.ag", anhenge) Then
                    System.Console.WriteLine("E-Mail gesendet.")
                    System.Console.WriteLine("Erfolgreich!")
                Else
                    System.Console.WriteLine("ERROR BEIM SENDEN DER MAIL!")

                End If

                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
            System.Console.WriteLine(ex.Message & ex.StackTrace)
            Return False
        End Try
    End Function

    Private Function SendEmail_ImexAbfertigung(Mailto As String, von As Date, bis As Date, Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean
        Try
            Dim excel As String = genImex_Abfertigung(von, bis)
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")

                If Subject = "" Then
                    Subject = "Imex-Kunden ohne Abfertigung "
                End If

                If Body = "" Then
                    Body = "Anbei befinden sich die Auswertung von " & von.ToShortDateString & " bis " & bis.ToShortDateString & "." &
                     "<br><br>Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
                     "<br><br><br>Automatisch generiertes E-Mail. Bitte Antworten Sie nicht an diese E-Mail." &
                     "<br><br>VERAG SPEDITION AG"

                Else
                    Body = replaceBodyVariable(Body, von, bis)
                End If


                Dim anhenge As New List(Of String)
                anhenge.Add(excel)
                If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False, cc, bcc, anhenge) Then
                    System.Console.WriteLine("E-Mail gesendet.")
                    System.Console.WriteLine("Erfolgreich!")
                Else
                    System.Console.WriteLine("ERROR BEIM SENDEN DER MAIL!")

                End If

                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
            System.Console.WriteLine(ex.Message & ex.StackTrace)
            Return False
        End Try
    End Function
    Private Function SendEmail_Jahresauwsertung_AG_ZF(Mailto As String, abfertigungsart As Integer, Filialnr As String, von As Date, bis As Date, Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean
        Try
            Dim excel As String = genEXCEL_ANNA(Filialnr, abfertigungsart, von, bis)
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")

                If Subject = "" Then
                Else
                    Subject = "Auswertungen Jahresauswertung A-ZF "
                End If

                If Body = "" Then
                    Body = "Anbei befinden sich die Auswertungen Zollanmeldungen von " & von.ToShortDateString & " bis " & bis.ToShortDateString & "." &
                   "<br><br>Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
                   "<br><br><br>Automatisch generiertes E-Mail. Bitte Antworten Sie nicht an dieses E-Mail." &
                   "<br><br>VERAG SPEDITION AG"
                Else
                    Body = replaceBodyVariable(Body, von, bis)
                End If

                Dim anhenge As New List(Of String)
                anhenge.Add(excel)
                If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False, cc, bcc, anhenge) Then
                    System.Console.WriteLine("E-Mail gesendet.")
                    System.Console.WriteLine("Erfolgreich!")
                Else
                    System.Console.WriteLine("ERROR BEIM SENDEN DER MAIL!")

                End If

                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
            System.Console.WriteLine(ex.Message & ex.StackTrace)
            Return False
        End Try
    End Function

    Private Function SendEmail_ZF(Mailto As String, KdNr As String, von As Date, bis As Date, Auswertungstyp As String, Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean
        Try
            Dim excel As String = genEXCEL_ZF(KdNr, von, bis, Auswertungstyp)
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")

                If Subject = "" Then
                    Select Case KdNr
                        Case "764755" : Subject = "Auswertungen Zollanmeldungen ZF STEYR "
                        Case "714869" : Subject = "Auswertungen Zollanmeldungen ZF PASSAU "
                        Case Else : Subject = "Auswertungen Zollanmeldungen ZF Friedrichshafen AG "

                    End Select

                Else
                    Subject = replaceBodyVariable(Subject, von, bis)
                End If

                Dim Typ As String = "Auswertung"
                Select Case Auswertungstyp
                    Case "monthly" : Typ = "monatliche Auswertungen"
                    Case "quarter" : Typ = "Quartalsauswertung"
                End Select

                If Body = "" Then
                    Body = "Anbei befinden sich die " & Typ & " der Zollanmeldungen von " & von.ToShortDateString & " bis " & bis.ToShortDateString & "." &
                     "<br><br>Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
                     "<br><br><br>Automatisch generiertes E-Mail. Bitte Antworten Sie nicht an dieses E-Mail." &
                     "<br><br>VERAG SPEDITION AG"

                Else
                    Body = replaceBodyVariable(Body, von, bis)
                End If

                Dim anhenge As New List(Of String)
                anhenge.Add(excel)
                If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False, cc, bcc, anhenge) Then
                    System.Console.WriteLine("E-Mail gesendet.")
                    System.Console.WriteLine("Erfolgreich!")
                Else
                    System.Console.WriteLine("ERROR BEIM SENDEN DER MAIL!")

                End If

                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
            System.Console.WriteLine(ex.Message & ex.StackTrace)
            Return False
        End Try
    End Function


    Private Function SendEmail_DiverseKunden(Mailto As String, KdNr As String, von As Date, bis As Date, Auswertungstyp As String, Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean
        Try
            Dim excel As String = genEXCEL_Bericht_Kunden(KdNr, von, bis, Auswertungstyp)
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")

                Dim ADR As New cAdressen(KdNr)

                If Subject = "" Then

                    Subject = "Auswertungen Zollanmeldungen " & ADR.Name_1


                Else
                    Subject = replaceBodyVariable(Subject, von, bis)
                End If


                If Body = "" Then
                    Body = "Anbei befinden sich die Auswertungen Zollanmeldungen von " & von.ToShortDateString & " bis " & bis.ToShortDateString & "." &
                     "<br><br>Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
                     "<br><br><br>Automatisch generiertes E-Mail. Bitte Antworten Sie nicht an dieses E-Mail."

                Else
                    Body = replaceBodyVariable(Body, von, bis)
                End If

                Dim anhenge As New List(Of String)
                anhenge.Add(excel)
                If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False, cc, bcc, anhenge) Then
                    System.Console.WriteLine("E-Mail gesendet.")
                    System.Console.WriteLine("Erfolgreich!")
                Else
                    System.Console.WriteLine("ERROR BEIM SENDEN DER MAIL!")

                End If

                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
            System.Console.WriteLine(ex.Message & ex.StackTrace)
            Return False
        End Try
    End Function


    Private Function SendEmail_BRG_Auswertung(Optional wochenAuswertung As Boolean = False, Optional details As Boolean = False) As Boolean
        Dim Msg As New MailMessage
        Dim myCredentials As New System.Net.NetworkCredential
        myCredentials.UserName = "al@verag.ag"
        myCredentials.Password = "verag#2"

        ' myCredentials.UserName = "testmail@verag.ag"
        '  myCredentials.Password = "testmail"
        Msg.IsBodyHtml = False
        Dim mySmtpsvr As New SmtpClient()
        '  mySmtpsvr.Host = "192.168.0.107" 'bei web.de
        ' mySmtpsvr.Port = 25 '587 '25
        mySmtpsvr.Host = "owa.verag.ag"
        mySmtpsvr.Port = 587 '25 '587 '25
        mySmtpsvr.UseDefaultCredentials = False
        mySmtpsvr.Credentials = myCredentials
        System.Console.WriteLine("E-Mail Daten initialisiert...")
        Try
            Dim datum As String = Now.AddDays(-1).ToShortDateString
            System.Console.WriteLine("Erstelle EXCEL...")
            Dim excel As String = genEXCEL_BRG(details)
            Dim excelKW As String = IIf(wochenAuswertung, genEXCEL_BRGKW(), "")
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") And Not excelKW.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")
                Msg.From = New MailAddress("al@verag.ag")

                If details Then
                    Msg.To.Add("al@verag.ag") 'Detailierter Bericht nur an al@verag.ag
                Else
                    Msg.To.Add("jl@verag.ag") 'Standardberichte an jl@verag.ag; al@verag.ag
                    Msg.CC.Add("al@verag.ag")
                End If

                Msg.Subject = IIf(wochenAuswertung, "Auswertungen der Bürgschaften", "Auswertung der Bürgschaften") & IIf(details, " - Details", "")
                Msg.Body = IIf(wochenAuswertung, "Anbei befinden sich die Auswertungen der Bürgschaften", "Anbei befindet sich die Auswertung der Bürgschaften") &
                    "." & vbNewLine & vbNewLine & "Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
                    vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."

                Dim attachment1 As Attachment = New Attachment(File.OpenRead(excel), "Auswertung.xlsx")
                Msg.Attachments.Add(attachment1)

                If wochenAuswertung Then
                    Dim attachment2 As Attachment = New Attachment(File.OpenRead(excelKW), "Auswertung_Atilla_Durmaz.xlsx")
                    Msg.Attachments.Add(attachment2)
                End If

                mySmtpsvr.Send(Msg)

                System.Console.WriteLine("E-Mail gesendet.")
                System.Console.WriteLine("Erfolgreich!")
                Return True
            Else
                System.Console.WriteLine(excel)
                System.Console.WriteLine(excelKW)
            End If
        Catch ex As Exception
            Try
                mySmtpsvr.Port = 25
                mySmtpsvr.Send(Msg)

            Catch ex2 As Exception
                Try
                    mySmtpsvr.Host = "192.168.0.107"
                    mySmtpsvr.Port = 25
                    mySmtpsvr.Send(Msg)

                Catch ex3 As Exception
                    MsgBox(ex3.Message & ex3.StackTrace)
                    Return False
                End Try
            End Try


        End Try
        Return False
    End Function

    Private Function SendEmail_QS_Auswertung(von, bis) As Boolean
        Dim Msg As New MailMessage
        Dim myCredentials As New System.Net.NetworkCredential
        myCredentials.UserName = "al@verag.ag"
        myCredentials.Password = "verag#2"

        ' myCredentials.UserName = "testmail@verag.ag"
        '  myCredentials.Password = "testmail"
        Msg.IsBodyHtml = False
        Dim mySmtpsvr As New SmtpClient()
        '  mySmtpsvr.Host = "192.168.0.107" 'bei web.de
        ' mySmtpsvr.Port = 25 '587 '25
        mySmtpsvr.Host = "owa.verag.ag"
        mySmtpsvr.Port = 587 '25 '587 '25
        mySmtpsvr.UseDefaultCredentials = False
        mySmtpsvr.Credentials = myCredentials
        System.Console.WriteLine("E-Mail Daten initialisiert...")
        Try
            Dim datum As String = Now.AddDays(-1).ToShortDateString
            System.Console.WriteLine("Erstelle EXCEL...")
            Dim excel As String = genEXCEL_QS(von, bis)
            System.Console.WriteLine("EXCEL erstellt..." & excel)
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")
                Msg.From = New MailAddress("al@verag.ag")


                Msg.To.Add("al@verag.ag")
                Msg.Bcc.Add("al@verag.ag")
                ' Msg.Bcc.Add("ga@verag.ag")

                Msg.Subject = "Auswertung QS-Aufteilung"
                Msg.Body = "Anbei befindet sich die Auswertung der QS-Aufteilung" &
                "." & vbNewLine & vbNewLine & "Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
                vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."

                Dim attachment1 As Attachment = New Attachment(File.OpenRead(excel), "Auswertung.xlsx")
                Msg.Attachments.Add(attachment1)

                mySmtpsvr.Send(Msg)

                System.Console.WriteLine("E-Mail gesendet.")
                System.Console.WriteLine("Erfolgreich!")
                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            Try
                mySmtpsvr.Port = 25
                mySmtpsvr.Send(Msg)

            Catch ex2 As Exception
                Try
                    mySmtpsvr.Host = "192.168.0.107"
                    mySmtpsvr.Port = 25
                    mySmtpsvr.Send(Msg)

                Catch ex3 As Exception
                    MsgBox(ex3.Message & ex3.StackTrace)
                    Return False
                End Try
            End Try


        End Try
        Return False
    End Function

    Private Function SendEmail_CS_Auswertung() As Boolean
        Dim Msg As New MailMessage
        Dim myCredentials As New System.Net.NetworkCredential
        myCredentials.UserName = "al@verag.ag"
        myCredentials.Password = "verag#2"

        Msg.IsBodyHtml = False
        Dim mySmtpsvr As New SmtpClient()
        mySmtpsvr.Host = "owa.verag.ag"
        mySmtpsvr.Port = 587 '25 '587 '25
        mySmtpsvr.UseDefaultCredentials = False
        mySmtpsvr.Credentials = myCredentials
        System.Console.WriteLine("E-Mail Daten initialisiert...")
        Try
            Dim datum As String = Now.AddDays(-1).ToShortDateString
            System.Console.WriteLine("Erstelle EXCEL...")
            Dim excel As String = genEXCEL_CS()
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")
                Msg.From = New MailAddress("al@verag.ag")


                Msg.To.Add("jl@verag.ag")
                Msg.Bcc.Add("al@verag.ag")
                Msg.Bcc.Add("cw@verag.ag")


                Msg.Subject = "Auswertung FISKAL-Aufteilung (Customs Service GmbH)"
                Msg.Body = "Anbei befindet sich die Auswertung der FISKAL-Aufteilung (Customs Service GmbH)" &
                "." & vbNewLine & vbNewLine & "Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
                vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."

                Dim attachment1 As Attachment = New Attachment(File.OpenRead(excel), "Auswertung.xlsx")
                Msg.Attachments.Add(attachment1)

                mySmtpsvr.Send(Msg)

                System.Console.WriteLine("E-Mail gesendet.")
                System.Console.WriteLine("Erfolgreich!")
                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            Try
                mySmtpsvr.Port = 25
                mySmtpsvr.Send(Msg)

            Catch ex2 As Exception
                Try
                    mySmtpsvr.Host = "192.168.0.107"
                    mySmtpsvr.Port = 25
                    mySmtpsvr.Send(Msg)

                Catch ex3 As Exception
                    MsgBox(ex3.Message & ex3.StackTrace)
                    Return False
                End Try
            End Try


        End Try
        Return False
    End Function

    Private Function MDM_Zollbuero_Verguetung(Jahr) As Boolean
        Dim Msg As New MailMessage
        Dim myCredentials As New System.Net.NetworkCredential
        myCredentials.UserName = "al@verag.ag"
        myCredentials.Password = "verag#2"

        Msg.IsBodyHtml = False
        Dim mySmtpsvr As New SmtpClient()
        mySmtpsvr.Host = "owa.verag.ag"
        mySmtpsvr.Port = 587 '25 '587 '25
        mySmtpsvr.UseDefaultCredentials = False
        mySmtpsvr.Credentials = myCredentials
        System.Console.WriteLine("E-Mail Daten initialisiert...")
        Try
            Dim datum As String = Now.AddDays(-1).ToShortDateString
            System.Console.WriteLine("Erstelle EXCEL...")
            Dim excel As String = genEXCEL_MDM_ZOLL(Jahr)
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")
                Msg.From = New MailAddress("al@verag.ag")


                ' Msg.To.Add("Viktoria.Leirich@imex-group.at")
                Msg.To.Add("as@verag.ag")
                Msg.To.Add("sales@verag.ag")
                '  Msg.To.Add("jl@verag.ag")
                '  Msg.Bcc.Add("al@verag.ag")
                Msg.CC.Add("jl@verag.ag")
                Msg.CC.Add("al@verag.ag")


                Msg.Subject = "Auswertung MDM-ZOLL Vergütung"
                Msg.Body = "Anbei befindet sich die Auswertung der MDM-ZOLL Vergütung" &
                "." & vbNewLine & vbNewLine & "Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
                vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."

                Dim attachment1 As Attachment = New Attachment(File.OpenRead(excel), "Auswertung.xlsx")
                Msg.Attachments.Add(attachment1)

                mySmtpsvr.Send(Msg)

                System.Console.WriteLine("E-Mail gesendet.")
                System.Console.WriteLine("Erfolgreich!")
                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            Try
                mySmtpsvr.Port = 25
                mySmtpsvr.Send(Msg)

            Catch ex2 As Exception
                Try
                    mySmtpsvr.Host = "192.168.0.107"
                    mySmtpsvr.Port = 25
                    mySmtpsvr.Send(Msg)

                Catch ex3 As Exception
                    MsgBox(ex3.Message & ex3.StackTrace)
                    Return False
                End Try
            End Try


        End Try
        Return False
    End Function

    Private Function KD_DroppedJobs(Firma, Art) As Boolean

        Dim [To] = ""
        Dim CC = ""
        Dim Bcc = ""
        Select Case Firma
            Case "VERAG"
                [To] = "kundenservice@verag.ag"
                CC = "cf@verag.ag;al@verag.ag;ml@verag.ag"
            Case "IMEX"
                [To] = "kundenservice@verag.ag"
                CC = "cf@verag.ag;al@verag.ag;ml@verag.ag"
            Case "UNISPED"
                [To] = "kundenservice@verag.ag"
                CC = "cf@verag.ag;al@verag.ag;ml@verag.ag"
        End Select

        '''''''''''''''''''''''''''
        '[To] = "al@verag.ag"
        'CC = ""
        '''''''''''''''''''''''''''
        '''
        System.Console.WriteLine("E-Mail Daten initialisiert...")
        Try


            System.Console.WriteLine("SQL Abfrage / Daten laden...")
            ' --- SQL 1x laden: alle Monate / Datenquellen ---
            Dim sqlstr As String = ""

            Select Case Art
                Case "EMPFÄNGER"
                    sqlstr =
                        "SELECT *
                            FROM dbo.ufn_KundenDropoff_Empfaenger
                            (
                                    '" & Firma & "',        -- Firma 
                                    DEFAULT,        -- Stichtag der Analyse ('2026-03-09')
                                    150,            -- Mindest-Risikoscore für Anzeige
                                    52,             -- Referenzzeitraum (Wochen)
                                    4,              -- aktuelle Vergleichsperiode (Wochen)
                                    100,            -- Mindestanzahl Vorgänge pro Jahr
                                    0.25,           -- minimaler Drop (25%)
                                    21,             -- Inaktivitätsgrenze (Tage)
                                    10.0,           -- Gewicht absoluter Mengenrückgang
                                    5.0,            -- Gewicht prozentualer Rückgang !!!!!!!!!
                                    20.0,           -- Strafgewicht wenn letzte Woche 0
                                    50,             -- Bonus wenn Kunde >21 Tage inaktiv
                                    20              -- Bonus wenn Kunde >14 Tage inaktiv
                            )
                            ORDER BY
                                RiskScore DESC,
                                ImpactPerWeek DESC,
                                DropPct_RecentVsBaseline DESC,
                                DaysSinceLast DESC,
                                BaselineAvgPerWeek DESC;"
                Case "AVISIERER"
                    sqlstr =
                        "SELECT *
                            FROM dbo.ufn_KundenDropoff_Avisierer
                            (
                                   '" & Firma & "',        -- Firma 
                                    DEFAULT,        -- Stichtag der Analyse ('2026-03-09')
                                    150,            -- Mindest-Risikoscore für Anzeige
                                    52,             -- Referenzzeitraum (Wochen)
                                    4,              -- aktuelle Vergleichsperiode (Wochen)
                                    100,            -- Mindestanzahl Vorgänge pro Jahr
                                    0.25,           -- minimaler Drop (25%)
                                    21,             -- Inaktivitätsgrenze (Tage)
                                    10.0,           -- Gewicht absoluter Mengenrückgang
                                    5.0,            -- Gewicht prozentualer Rückgang !!!!!!!!!
                                    20.0,           -- Strafgewicht wenn letzte Woche 0
                                    50,             -- Bonus wenn Kunde >21 Tage inaktiv
                                    20              -- Bonus wenn Kunde >14 Tage inaktiv
                            )
                            ORDER BY
                                RiskScore DESC,
                                ImpactPerWeek DESC,
                                DropPct_RecentVsBaseline DESC,
                                DaysSinceLast DESC,
                                BaselineAvgPerWeek DESC;"
            End Select


            Dim dt As DataTable = (New VERAG_PROG_ALLGEMEIN.SQL).loadDgvBySql(sqlstr, "FMZOLL")



            System.Console.WriteLine("Erstelle EXCEL...")
            Dim excel As String = ""

            '---------------------------------------------------
            Dim exclApp As Object = Nothing
            Dim Datei As Object = Nothing
            Dim Blatt As Object = Nothing

            Dim filepath As String = ""

            Try

                exclApp = CreateObject("Excel.Application")
                With exclApp
                    .Visible = False
                    .DisplayAlerts = False

                    Dim filepathTmp = sPath & "KD_DroppedJobs_" & Art & "_" & Format(Now, "yyyyMMdd_HHmmss") & ".xlsx"

                    ' Template aus Resources schreiben
                    Try
                        My.Computer.FileSystem.WriteAllBytes(filepathTmp, My.Resources.KD_DroppedJobs, False)
                    Catch ex As Exception
                        MsgBox(ex.Message & ex.StackTrace)

                        Return False
                    End Try

                    Datei = .Workbooks.Open(filepathTmp)
                    Blatt = Datei.Worksheets(1)

                    Blatt.Range("D1").Value = Art
                    Blatt.Range("F1").Value = Now.ToShortDateString

                    Dim r As Integer = 4
                    Dim c As Integer = 1

                    If dt IsNot Nothing Then

                        For Each row As DataRow In dt.Rows
                            c = 1
                            '   MsgBox("r: " & r)
                            For Each col As DataColumn In dt.Columns
                                '  MsgBox("c: " & c)

                                Blatt.Cells(r, c).Value = row(col)
                                c += 1
                            Next
                            r += 1
                        Next

                        Datei.SaveAs(filepathTmp)
                        Datei.Close(False)
                        exclApp.Quit()

                        filepath = filepathTmp

                    End If
                End With
            Catch ex As Exception
                MsgBox(ex.Message & ex.StackTrace)

                Return False
            Finally

                Blatt = Nothing
                Datei = Nothing
                exclApp = Nothing

                GC.Collect()
                GC.WaitForPendingFinalizers()
                GC.Collect()
            End Try
            '---------------------------------------------------

            Dim From = "al@verag.ag"
            If filepath <> "" Then
                System.Console.WriteLine("EXCEL erstellt...")

                System.Console.WriteLine("Sende E-Mail...")

                Dim ANHANG As List(Of String) = New List(Of String)
                ANHANG.Add(filepath)
                VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail([To], "Auswertung Dropped Jobs: " & Art & " -  " & Firma, "Anbei befindet sich die Auswertung der Dropped Jobs von " & Firma & ".", From,,, CC, Bcc, ANHANG)
                Return True
            Else
                System.Console.WriteLine("EXCEL Error - Pfad leer...")
                System.Console.WriteLine("Sende Error E-Mail...")
                VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail([To], "Auswertung Dropped Jobs - kein Anhang", "Fehler beim Erstellen für " & Firma & ".", From,,, CC, Bcc)
                Return False
            End If
        Catch ex3 As Exception
            MsgBox(ex3.Message & ex3.StackTrace)
            Return False
        End Try
        Return False

    End Function
    Private Function MDM_IT_Verguetung(Jahr) As Boolean
        Dim Msg As New MailMessage
        Dim myCredentials As New System.Net.NetworkCredential
        myCredentials.UserName = "al@verag.ag"
        myCredentials.Password = "verag#2"

        Msg.IsBodyHtml = False
        Dim mySmtpsvr As New SmtpClient()
        mySmtpsvr.Host = "owa.verag.ag"
        mySmtpsvr.Port = 587 '25 '587 '25
        mySmtpsvr.UseDefaultCredentials = False
        mySmtpsvr.Credentials = myCredentials
        System.Console.WriteLine("E-Mail Daten initialisiert...")
        Try
            Dim datum As String = Now.AddDays(-1).ToShortDateString
            System.Console.WriteLine("Erstelle EXCEL...")
            Dim excel As String = genEXCEL_MDM_IT(Jahr)
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")
                Msg.From = New MailAddress("al@verag.ag")


                ' Msg.To.Add("Viktoria.Leirich@imex-group.at")
                Msg.To.Add("as@verag.ag")
                Msg.To.Add("sales@verag.ag")
                ''  Msg.To.Add("jl@verag.ag")
                ''  Msg.Bcc.Add("al@verag.ag")
                Msg.CC.Add("jl@verag.ag")
                Msg.CC.Add("al@verag.ag")


                Msg.Subject = "Auswertung MDM-IT Vergütung"
                Msg.Body = "Anbei befindet sich die Auswertung der MDM-IT Vergütung" &
                "." & vbNewLine & vbNewLine & "Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
                vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."

                Dim attachment1 As Attachment = New Attachment(File.OpenRead(excel), "Auswertung.xlsx")
                Msg.Attachments.Add(attachment1)

                mySmtpsvr.Send(Msg)

                System.Console.WriteLine("E-Mail gesendet.")
                System.Console.WriteLine("Erfolgreich!")
                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            Try
                mySmtpsvr.Port = 25
                mySmtpsvr.Send(Msg)

            Catch ex2 As Exception
                Try
                    mySmtpsvr.Host = "192.168.0.107"
                    mySmtpsvr.Port = 25
                    mySmtpsvr.Send(Msg)

                Catch ex3 As Exception
                    MsgBox(ex3.Message & ex3.StackTrace)
                    Return False
                End Try
            End Try


        End Try
        Return False
    End Function


    Private Function SendEmail_OP5000(firma As String, LandEinschr As String, Mail_to() As String, Mail_cc() As String, Mail_bcc() As String, Mail_Subject As String) As Boolean
        '  send()
        '   Exit Function
        Dim Msg As New MailMessage
        Dim myCredentials As New System.Net.NetworkCredential
        'myCredentials.UserName = "al@verag.ag"
        'myCredentials.Password = "Luxandreas#2"

        '   myCredentials.UserName = "al@verag.ag"
        '    myCredentials.Password = "verag#2"

        'myCredentials.UserName = "al@verag.ag"
        'myCredentials.Password = "verag#2"
        myCredentials.UserName = "support@verag.ag"
        myCredentials.Password = supportPWD


        ' myCredentials.UserName = "testmail@verag.ag"
        '  myCredentials.Password = "testmail"
        Msg.IsBodyHtml = False
        Dim mySmtpsvr As New SmtpClient()
        '  mySmtpsvr.Host = "192.168.0.107" 'bei web.de
        ' mySmtpsvr.Port = 25 '587 '25
        mySmtpsvr.Host = "owa.verag.ag"
        mySmtpsvr.Port = 587 '25 '587 '25

        mySmtpsvr.UseDefaultCredentials = False
        mySmtpsvr.Credentials = myCredentials
        System.Console.WriteLine("E-Mail Daten initialisiert...")
        Try
            Dim datum As String = Now.AddDays(-1).ToShortDateString
            System.Console.WriteLine("Erstelle EXCEL...")
            Dim excel As String = ""
            Select Case firma
                Case "ATILLA"
                    excel = genEXCEL_TR_ATILLA(LandEinschr)
                Case "IMEX"
                    excel = genEXCEL_TR_IMEX(LandEinschr)
                Case "VERAG"
                    excel = genEXCEL_TR(LandEinschr)
            End Select



            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")
                Msg.From = New MailAddress("support@verag.ag")


                For Each m In Mail_to : Msg.To.Add(m) : Next
                For Each m In Mail_cc : Msg.CC.Add(m) : Next
                For Each m In Mail_bcc : Msg.Bcc.Add(m) : Next
                Msg.Subject = Mail_Subject




                '  Msg.To.Add("al@verag.ag")
                Msg.Body = "Anbei befindet sich die Liste der türkischen Kunden mit einem offenen Rechnungsbetrag von über 1.000,- EUR." & vbNewLine & vbNewLine & "Stand: " & Now.ToShortDateString & " " & Now.ToShortTimeString & vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."

                Dim attachment As Attachment = New Attachment(File.OpenRead(excel), "Kundenliste.xlsx")

                Msg.Attachments.Add(attachment)

                Try
                    mySmtpsvr.Send(Msg)
                Catch ex As Exception
                    Try
                        mySmtpsvr.Port = 25
                        mySmtpsvr.Send(Msg)
                    Catch ex2 As Exception
                        Try
                            mySmtpsvr.Host = "192.168.0.107"
                            mySmtpsvr.Port = 25
                            mySmtpsvr.Send(Msg)

                        Catch ex3 As Exception
                            MsgBox(ex3.Message & ex3.StackTrace)
                            Return False
                        End Try
                    End Try
                End Try



                System.Console.WriteLine("E-Mail gesendet.")
                '       MsgBox("E-Mail gesendet.", MsgBoxStyle.Information, Title:="Information")
                System.Console.WriteLine("Erfolgreich!")
                Return True
            Else
                System.Console.WriteLine(excel)
            End If

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

    Private Function SendEmail_OPKreditlimit(Mail_to() As String, Mail_cc() As String, Mail_bcc() As String, Mail_Subject As String) As Boolean
        '  send()
        '   Exit Function
        Dim Msg As New MailMessage
        Dim myCredentials As New System.Net.NetworkCredential
        'myCredentials.UserName = "al@verag.ag"
        'myCredentials.Password = "Luxandreas#2"

        '   myCredentials.UserName = "al@verag.ag"
        '    myCredentials.Password = "verag#2"

        'myCredentials.UserName = "al@verag.ag"
        'myCredentials.Password = "verag#2"
        myCredentials.UserName = "support@verag.ag"
        myCredentials.Password = supportPWD


        ' myCredentials.UserName = "testmail@verag.ag"
        '  myCredentials.Password = "testmail"
        Msg.IsBodyHtml = False
        Dim mySmtpsvr As New SmtpClient()
        '  mySmtpsvr.Host = "192.168.0.107" 'bei web.de
        ' mySmtpsvr.Port = 25 '587 '25
        mySmtpsvr.Host = "owa.verag.ag"
        mySmtpsvr.Port = 587 '25 '587 '25

        mySmtpsvr.UseDefaultCredentials = False
        mySmtpsvr.Credentials = myCredentials
        System.Console.WriteLine("E-Mail Daten initialisiert...")
        Try
            Dim datum As String = Now.AddDays(-1).ToShortDateString
            System.Console.WriteLine("Erstelle EXCEL...")
            Dim excel As String = genEXCEL_OPKreditlimit()


            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")
                Msg.From = New MailAddress("support@verag.ag")


                For Each m In Mail_to : Msg.To.Add(m) : Next
                For Each m In Mail_cc : Msg.CC.Add(m) : Next
                For Each m In Mail_bcc : Msg.Bcc.Add(m) : Next
                Msg.Subject = Mail_Subject




                '  Msg.To.Add("al@verag.ag")
                Msg.Body = "Anbei befindet sich die Liste der Kunden mit einem offenen Rechnungsbetrag über dem eingegebenen Kreditlimit " & vbNewLine & vbNewLine & "ACHTUNG: Kunden ohne hinterlegten Kreditlimit sind nciht in der Liste beinhaltet." & vbNewLine & vbNewLine & "Stand: " & Now.ToShortDateString & " " & Now.ToShortTimeString & vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."

                Dim attachment As Attachment = New Attachment(File.OpenRead(excel), "Kundenliste.xlsx")

                Msg.Attachments.Add(attachment)

                Try
                    mySmtpsvr.Send(Msg)
                Catch ex As Exception
                    Try
                        mySmtpsvr.Port = 25
                        mySmtpsvr.Send(Msg)
                    Catch ex2 As Exception
                        Try
                            mySmtpsvr.Host = "192.168.0.107"
                            mySmtpsvr.Port = 25
                            mySmtpsvr.Send(Msg)

                        Catch ex3 As Exception
                            MsgBox(ex3.Message & ex3.StackTrace)
                            Return False
                        End Try
                    End Try
                End Try



                System.Console.WriteLine("E-Mail gesendet.")
                '       MsgBox("E-Mail gesendet.", MsgBoxStyle.Information, Title:="Information")
                System.Console.WriteLine("Erfolgreich!")
                Return True
            Else
                System.Console.WriteLine(excel)
            End If

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

    Private Function SendEmail_VW_DHL_updateList(Mail_to() As String, Mail_cc() As String, Mail_bcc() As String, Mail_Subject As String) As Boolean
        '  send()
        '   Exit Function
        Dim Msg As New MailMessage
        Dim myCredentials As New System.Net.NetworkCredential
        'myCredentials.UserName = "al@verag.ag"
        'myCredentials.Password = "Luxandreas#2"

        '   myCredentials.UserName = "al@verag.ag"
        '    myCredentials.Password = "verag#2"

        'myCredentials.UserName = "al@verag.ag"
        'myCredentials.Password = "verag#2"
        myCredentials.UserName = "support@verag.ag"
        myCredentials.Password = supportPWD


        ' myCredentials.UserName = "testmail@verag.ag"
        '  myCredentials.Password = "testmail"
        Msg.IsBodyHtml = False
        Dim mySmtpsvr As New SmtpClient()
        '  mySmtpsvr.Host = "192.168.0.107" 'bei web.de
        ' mySmtpsvr.Port = 25 '587 '25
        mySmtpsvr.Host = "owa.verag.ag"
        mySmtpsvr.Port = 587 '25 '587 '25

        mySmtpsvr.UseDefaultCredentials = False
        mySmtpsvr.Credentials = myCredentials
        System.Console.WriteLine("E-Mail Daten initialisiert...")
        Try
            Dim datum As String = Now.AddDays(-1).ToShortDateString
            System.Console.WriteLine("Erstelle EXCEL...")
            Dim excel As String = genEXCEL_VW_DHL()


            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")
                Msg.From = New MailAddress("support@verag.ag")


                For Each m In Mail_to : Msg.To.Add(m) : Next
                For Each m In Mail_cc : Msg.CC.Add(m) : Next
                For Each m In Mail_bcc : Msg.Bcc.Add(m) : Next
                Msg.Subject = Mail_Subject




                '  Msg.To.Add("al@verag.ag")
                Msg.Body = "Anbei befindet sich die Liste der VW/DHL LKWs." & vbNewLine & vbNewLine & "ACHTUNG: Bitte DHL Sharepoint befüllen." & vbNewLine & vbNewLine & "Stand: " & Now.ToShortDateString & " " & Now.ToShortTimeString & vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."

                Dim attachment As Attachment = New Attachment(File.OpenRead(excel), "DHL_VW.xlsx")

                Msg.Attachments.Add(attachment)

                Try
                    mySmtpsvr.Send(Msg)
                Catch ex As Exception
                    Try
                        mySmtpsvr.Port = 25
                        mySmtpsvr.Send(Msg)
                    Catch ex2 As Exception
                        Try
                            mySmtpsvr.Host = "192.168.0.107"
                            mySmtpsvr.Port = 25
                            mySmtpsvr.Send(Msg)

                        Catch ex3 As Exception
                            MsgBox(ex3.Message & ex3.StackTrace)
                            Return False
                        End Try
                    End Try
                End Try



                System.Console.WriteLine("E-Mail gesendet.")
                '       MsgBox("E-Mail gesendet.", MsgBoxStyle.Information, Title:="Information")
                System.Console.WriteLine("Erfolgreich!")
                Return True
            Else
                System.Console.WriteLine(excel)
            End If

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

    Private Function SendEmail_OP5000NEW(firma As String, LandEinschr As String, Mailto As String, Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean
        Try


            Dim datum As String = Now.AddDays(-1).ToShortDateString
            System.Console.WriteLine("Erstelle EXCEL...")
            Dim excel As String = ""
            Select Case firma
                Case "ATILLA"
                    excel = genEXCEL_TR_ATILLA(LandEinschr)
                Case "IMEX"
                    excel = genEXCEL_TR_IMEX(LandEinschr)
                Case "VERAG"
                    excel = genEXCEL_TR(LandEinschr)
            End Select

            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")

                If Body = "" Then
                    Body = "Anbei befindet sich die Liste der türkischen Kunden mit einem offenen Rechnungsbetrag von über 1.000,- EUR." & vbNewLine & vbNewLine & "Stand: " & Now.ToShortDateString & " " & Now.ToShortTimeString & vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."
                Else
                    Body = Subject = replaceBodyVariable(Body)
                End If

                If Subject = "" Then
                    Subject = "Auswertungen Syska UID-Vergleich "
                Else
                    Subject = replaceBodyVariable(Subject)
                End If


                Dim anhenge As New List(Of String)
                anhenge.Add(excel)
                If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False, cc, bcc, anhenge) Then
                    System.Console.WriteLine("E-Mail gesendet.")
                    System.Console.WriteLine("Erfolgreich!")
                Else
                    System.Console.WriteLine("ERROR BEIM SENDEN DER MAIL!")

                End If

                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
            System.Console.WriteLine(ex.Message & ex.StackTrace)
            Return False
        End Try
    End Function



    Private Function SendEmail_OPKreditlimitNEW(Mailto As String, Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean
        Try
            Dim excel As String = genEXCEL_OPKreditlimit()
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")

                If Body = "" Then
                    Body = "Anbei befindet sich die Liste der Kunden mit einem offenen Rechnungsbetrag über dem eingegebenen Kreditlimit " & vbNewLine & vbNewLine & "ACHTUNG: Kunden ohne hinterlegten Kreditlimit sind nciht in der Liste beinhaltet." & vbNewLine & vbNewLine & "Stand: " & Now.ToShortDateString & " " & Now.ToShortTimeString & vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."
                Else
                    Body = replaceBodyVariable(Body)
                End If

                If Subject = "" Then
                    Subject = "Kunden - Offene Rechnungen - ACHTUNG: nur mit erfasstem Kreditlimit"
                Else
                    Subject = replaceBodyVariable(Subject)
                End If


                Dim anhenge As New List(Of String)
                anhenge.Add(excel)
                If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False, cc, bcc, anhenge) Then
                    System.Console.WriteLine("E-Mail gesendet.")
                    System.Console.WriteLine("Erfolgreich!")
                Else
                    System.Console.WriteLine("ERROR BEIM SENDEN DER MAIL!")

                End If

                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
            System.Console.WriteLine(ex.Message & ex.StackTrace)
            Return False
        End Try
    End Function


    Private Function SendEmail_VW_DHL_updateListNEW(Mailto As String, Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean
        Try
            Dim datum As String = Now.AddDays(-1).ToShortDateString
            System.Console.WriteLine("Erstelle EXCEL...")
            Dim excel As String = genEXCEL_VW_DHL()
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")

                Body = replaceBodyVariable(Body)
                Subject = replaceBodyVariable(Subject)

                Dim anhenge As New List(Of String)
                anhenge.Add(excel)
                If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False, cc, bcc, anhenge) Then
                    System.Console.WriteLine("E-Mail gesendet.")
                    System.Console.WriteLine("Erfolgreich!")
                Else
                    System.Console.WriteLine("ERROR BEIM SENDEN DER MAIL!")

                End If

                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
            System.Console.WriteLine(ex.Message & ex.StackTrace)
            Return False
        End Try
    End Function



    Private Function SendEmail_Syska_UID_Vergleich(Mailto As String, Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean
        Try
            Dim excel As String = genEXCEL_Syska_UID_VERGLEICH()
            System.Console.WriteLine("EXCEL erstellt...")
            If excel <> "" And Not excel.StartsWith("ERROR: ") Then

                System.Console.WriteLine("Sende E-Mail...")

                If Body = "" Then
                    Body = "Anbei befinden sich der UID-Nr Vergleich mit Syska." &
                        "<br><br>Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
                        "<br><br><br>Automatisch generiertes E-Mail. Bitte Antworten Sie nicht an dieses E-Mail." &
                        "<br><br>VERAG SPEDITION AG"
                Else
                    Body = replaceBodyVariable(Body)
                End If

                If Subject = "" Then
                    Subject = "Auswertungen Syska UID-Vergleich "
                End If


                Dim anhenge As New List(Of String)
                anhenge.Add(excel)
                If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False, cc, bcc, anhenge) Then
                    System.Console.WriteLine("E-Mail gesendet.")
                    System.Console.WriteLine("Erfolgreich!")
                Else
                    System.Console.WriteLine("ERROR BEIM SENDEN DER MAIL!")

                End If

                Return True
            Else
                System.Console.WriteLine(excel)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
            System.Console.WriteLine(ex.Message & ex.StackTrace)
            Return False
        End Try
    End Function


    Private Function SendEmail_Tetrapak(Mailto As String, von As Date, bis As Date, Report As String, Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean
        Try
            Dim anhenge As New List(Of String)

            Select Case Report

                Case "DE"
                    Dim dakosy_excel As String = genEXCEL_TETRAPAK_DE(von, bis)
                    System.Console.WriteLine("EXCEL DAKOSY erstellt...")
                    If dakosy_excel <> "" And Not dakosy_excel.StartsWith("ERROR: ") Then
                        anhenge.Add(dakosy_excel)
                    Else
                        System.Console.WriteLine(dakosy_excel)
                    End If
                Case "AT"
                    Dim dhf_excel As String = genEXCEL_TETRAPAK_AT(von, bis)
                    System.Console.WriteLine("EXCEL DHF erstellt...")
                    If dhf_excel <> "" And Not dhf_excel.StartsWith("ERROR: ") Then
                        anhenge.Add(dhf_excel)
                    Else
                        System.Console.WriteLine(dhf_excel)
                    End If
            End Select

            System.Console.WriteLine("Sende E-Mail...")

            If Subject = "" Then
                Subject = "Import Customs Statistics " & Report & " " & von & "-" & bis
            Else
                Subject = Subject.Replace("%report%", Report)
                Subject = Subject.Replace("%von%", von)
                Subject = Subject.Replace("%bis%", bis)
                Subject = replaceBodyVariable(Subject)
            End If



            If Body = "" Then
                Body = "Dear sir or madam," &
                     "<br><br>enclosed the import customs statistics for " & Report & "." &
                     "<br><br>Created at: " & Now.ToShortDateString & ", on " & Now.ToShortTimeString &
                     "<br><br><br>Automatically generated e-mail. Please do not reply to this e-mail." &
                     "<br><br>VERAG SPEDITION AG"
            Else
                Body = replaceBodyVariable(Body)
                Body = Body.Replace("%report%", Report)
            End If


            If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False, cc, bcc, anhenge) Then
                System.Console.WriteLine("E-Mail gesendet.")
                System.Console.WriteLine("Erfolgreich!")
            Else
                System.Console.WriteLine("ERROR BEIM SENDEN DER MAIL!")

            End If

            Return True

        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
            System.Console.WriteLine(ex.Message & ex.StackTrace)
            Return False
        End Try
    End Function

    Private Sub send()
        Dim message As New MailMessage("al@verag.ag", "al@verag.ag", "Test", "Testmail")

        Dim client As New SmtpClient("http://192.168.0.107/")
        client.Credentials = New NetworkCredential("al@verag.ag", "verag#2")
        client.Send(message)
    End Sub



    Private Function SendEmail_WOELFL() As Boolean
        Dim Msg As New MailMessage
        Dim myCredentials As New System.Net.NetworkCredential
        myCredentials.UserName = "support@verag.ag"
        myCredentials.Password = supportPWD


        ' myCredentials.UserName = "testmail@verag.ag"
        '  myCredentials.Password = "testmail"
        Msg.IsBodyHtml = False
        Dim mySmtpsvr As New SmtpClient()
        '  mySmtpsvr.Host = "192.168.0.107" 'bei web.de
        ' mySmtpsvr.Port = 25 '587 '25
        mySmtpsvr.Host = "owa.verag.ag"
        mySmtpsvr.Port = 587 '25 '587 '25
        mySmtpsvr.UseDefaultCredentials = False
        mySmtpsvr.Credentials = myCredentials
        System.Console.WriteLine("E-Mail Daten initialisiert...")
        Try
            Dim datum As String = Now.AddDays(-1).ToShortDateString
            Dim von = getDateFromFile()
            If von = "" Then von = datum
            Dim bis = datum
            System.Console.WriteLine("Erstelle CSV...")
            Dim csv As String = genCSV(von, bis)
            System.Console.WriteLine("CSV erstellt...")
            If csv <> "" And Not csv.StartsWith("ERROR: ") Then
                System.Console.WriteLine("Sende E-Mail...")
                Msg.From = New MailAddress("support@verag.ag")
                Msg.To.Add("al@verag.ag")
                Msg.Subject = "VERAG: Gutschriften/Rechnungen " & von & "-" & bis
                Msg.Body = "Sehr geehrte Damen und Herren," & vbNewLine & vbNewLine & "anbei erhalten Sie die Gutschriften/Rechnungen im Zeitraum: " & von & "-" & bis & ". " & vbNewLine & vbNewLine & "Mit frendlichen Grüßen " & vbNewLine & "Ihr VERAG MDM-TEAM" & vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."

                Dim attachment As Attachment = New Attachment(File.OpenRead(csv), "WOELFL_" & von & "-" & bis & ".csv")
                Msg.Attachments.Add(attachment)

                mySmtpsvr.Send(Msg)

                System.Console.WriteLine("E-Mail gesendet.")
                '       MsgBox("E-Mail gesendet.", MsgBoxStyle.Information, Title:="Information")
                System.Console.WriteLine("Erfolgreich!")
                Return True
            Else
                System.Console.WriteLine(csv)

            End If
        Catch ex As Exception
            Try
                mySmtpsvr.Port = 25
                mySmtpsvr.Send(Msg)

            Catch ex2 As Exception
                Try
                    mySmtpsvr.Host = "192.168.0.107"
                    mySmtpsvr.Port = 25
                    mySmtpsvr.Send(Msg)

                Catch ex3 As Exception
                    MsgBox(ex3.Message & ex3.StackTrace)
                    Return False
                End Try
            End Try


        End Try
        Return False
    End Function

    Private Function SendEmail_AMBARTOHKT(Mailto As String, Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean

        Try

            System.Console.WriteLine("Erstelle Buchungsdateien...")
            Dim Pathlist As New List(Of String)
            If VERAG_PROG_ALLGEMEIN.cDatev_Interface.genDatensatzCSV_ALL("AMBAR", False, True, True,, Pathlist) Then
                System.Console.WriteLine("Buchungsdateien erstellt...")
            Else
                System.Console.WriteLine("Keine Buchungsdaten vorhanden...")
                Return False
            End If


            If Body = "" Then
                Body = "Sehr geehrte Damen und Herren," &
                "<br><br> im Anhang befinden sich die Exportdaten für die Buchhaltung!" &
                 "<br><br>Mit freundlichen Grüßen " &
                 "<br><br> automatisch generiertes E-Mail"
            Else
                Body = replaceBodyVariable(Body)

            End If

            If Subject = "" Then
                Subject = "DATEV-Buchungsdaten AMBAR " & Now.Date.ToShortDateString
            Else
                Subject = replaceBodyVariable(Subject)
            End If


            If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False, cc, bcc, Pathlist) Then
                System.Console.WriteLine("E-Mail gesendet.")
                System.Console.WriteLine("Erfolgreich!")
            Else
                System.Console.WriteLine("ERROR BEIM SENDEN DER MAIL!")

            End If

            Return True

        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
            System.Console.WriteLine(ex.Message & ex.StackTrace)
            Return False
        End Try
    End Function



    Function getDateFromFile() As String
        Try
            Dim instr = New StreamReader(last_sent)
            Dim d As Date = CDate(instr.ReadLine).AddDays(1)
            instr.Close()
            Return d
        Catch ex As Exception
            Return ""
        End Try
    End Function

    Sub genExcel(dt As DataTable, Optional excelBez As String = "TMP", Optional Arbeitsplattbez As String = "Kundenliste")
        Dim wb As New XLWorkbook()

        '   Dim wb As New ClosedXML.Excel.XLWorkbook
        wb.Worksheets.Add(dt, Arbeitsplattbez)
        wb.SaveAs(sPath & excelBez & ".xlsx")

    End Sub
    Public Function genCSV(von, bis) As String
        Try


            Dim sqlstr = " SELECT CASE [BelegartenNr]	WHEN 71     THEN 'GS' " &
                                 " WHEN 70		THEN 'RG' " &
                                    " END AS [BelegArt] " &
                            " ,[RechnungsNr] " &
                            " ,CONVERT(VARCHAR(10), [RechnungsDatum], 104) as [RechnungsDatum] " &
                            "  ,[FilialenNr],[AbfertigungsNr],[UnterNr] " &
                            " ,CONVERT(VARCHAR(10), [Abfertigungsdatum], 104) as [Abfertigungsdatum] " &
                            " ,isnull(Adressen.WölflKundenNr,'') as WölflKundenNr " &
                            " ,CASE  WHEN [EmpfängerStraße] IS NULL      THEN [EmpfängerName 1] " &
                                    " ELSE		 [EmpfängerName 1] + ' ' +[EmpfängerName 2]  " &
                                    " END AS [Empfänger] " &
                            " ,CASE WHEN [EmpfängerStraße] IS NULL       THEN [EmpfängerName 2] " &
                                    " ELSE		[EmpfängerStraße] " &
                                    " END AS [EmpfängerAdresse 1] " &
                            " ,[EmpfängerOrt] as [EmpfängerAdresse 2] " &
                            " ,[Packstücke und Warenbezeichnung] as Beschreibung,[LeistungsNr],[LeistungsBez],[Steuersatz %] ,[SteuerpflichtigerGesamtbetrag] as [SteuerpflichtigerGesamtbetrag Netto] " &
                            " ,[SteuerfreierGesamtbetrag],[SteuerpflichtigerBetrag] as [SteuerpflichtigerBetrag Netto] ,[SteuerfreierBetrag] " &
                    " FROM [VERAG].[dbo].[Rechnungsausgang] inner join [VERAG].[dbo].[RechnungsausgangPositionen] on Rechnungsausgang.[RK_ID]=RechnungsausgangPositionen.[RK_ID] " &
                            " inner join [VERAG].[dbo].Adressen on Rechnungsausgang.EmpfängerKundenNr=Adressen.AdressenNr " &
                    " WHERE RechnungsKundenNr = 150000 " &
                            " and RechnungsDatum between '" & von & "' and '" & bis & "'"
            ' MsgBox(sqlstr)
            '  Dim SQL As New System.Data.Sql
            Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)


            Dim fn As String = sPath & "WOELFL.csv" '" & Now.ToString("ddMMyyyyHHmmss") & ".csv"
            Dim outFile As System.IO.StreamWriter = Nothing
            Try
                outFile = My.Computer.FileSystem.OpenTextFileWriter(fn, False)
            Catch ex As Exception
                MsgBox(ex.Message)
                Return "ERROR: Schreibfehler"
            End Try

            System.Console.WriteLine("Vorhandene Datensätze: " & dt.Rows.Count)

            If dt.Rows.Count = 0 Then
                Return "ERROR: KEINE DATEN"
            End If

            Dim clmns As String = ""
            For i = 0 To dt.Columns.Count - 1
                clmns &= dt.Columns(i).ColumnName.ToString().Replace(";", ",") & ";"
            Next

            outFile.WriteLine(clmns)
            For i = 0 To dt.Rows.Count - 1
                clmns = ""
                For j = 0 To dt.Columns.Count - 1
                    Dim o As Object = dt.Rows(i).Item(j).ToString
                    clmns &= dt.Rows(i).Item(j).ToString() & ";"
                Next
                outFile.WriteLine(clmns)
            Next
            outFile.Close()
            Return fn

        Catch ex As Exception
            ' MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
            Return "ERROR: " & ex.Message
        End Try
    End Function

    Public Function genEXCEL_BRG(Optional details As Boolean = False) As String
        Try

            Dim cProgramFunctions As New ADMIN.cProgramFunctions
            ' cProgramFunctions.EINLESEN(Now.AddDays(-8).ToShortDateString, Now.ToShortDateString)

            Dim tage As Integer = 7
            Dim startdate As Date = Now.AddDays(-1)
            '  Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\Bürgschaften\" ' My.Computer.FileSystem.GetTempFileName
            'If Not My.Computer.FileSystem.DirectoryExists(sPath) Then
            'My.Computer.FileSystem.CreateDirectory(sPath)
            'End If

            Return cProgramFunctions.genEXCEL_Auswertungen(sPath, tage, startdate, details, details, False)



        Catch ex As Exception
            '  MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
            Return "ERROR 03: " & ex.Message & vbNewLine & ex.StackTrace
        End Try
    End Function

    Public Function genEXCEL_QS(von As Date, bis As Date) As String
        Try

            Dim sqlstr As String = ""

            'sqlstr &= " SELECT Aviso.[Grenzstelle], SUM(Speditionsbuch.Abfertigungsanzahl) as Anzahl  FROM Speditionsbuch INNER JOIN [SQLGUIDE01.verag.ost.dmn].AVISO.dbo.AVISO on Aviso.avisoid=Speditionsbuch.AvisoID  "
            'sqlstr &= " WHERE  PersonalnummerQS is not null "
            'sqlstr &= " and FilialenNr NOT IN ( 4801,4806,5501 ) "
            'sqlstr &= " and Abfertigungsdatum between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "' " &
            '                                        " GROUP BY Aviso.[Grenzstelle]" &
            '                                        " ORDER BY Anzahl DESC"

            sqlstr &= " SELECT Speditionsbuch.[Grenzstelle], SUM(Speditionsbuch.Abfertigungsanzahl) as Anzahl  FROM Speditionsbuch  inner join Filialen on filialen.FilialenNr=Speditionsbuch.FilialenNr "
            sqlstr &= " WHERE  FilialenNrAbklaerung ='4803' " 'QS SUB
            ' sqlstr &= " WHERE  Filiale  "
            sqlstr &= " and Filialen.Firma='VERAG' "

            sqlstr &= " and Abfertigungsdatum between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "' " &
                                                    " GROUP BY Speditionsbuch.[Grenzstelle]" &
                                                    " ORDER BY Anzahl DESC"

            Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)

            Dim exclApp As Object 'as Application
            Dim Datei As Object 'as WorkBook
            Dim Blatt As Object 'as WorkSheet
            exclApp = CreateObject("Excel.Application")

            With exclApp
                .Visible = False
                Dim filepath = sPath & "QS_Auswertung.xlsx"
                While System.IO.File.Exists(filepath)
                    filepath = sPath & "QS_Auswertung_" & Now.ToString("ddMMyyy_HHmmss_fff") & ".xlsx"
                End While
                Try
                    My.Computer.FileSystem.WriteAllBytes(filepath, My.Resources.QS_Aufteilung, False)
                Catch ex As System.Exception
                    '  MsgBox(ex.Message)
                    Return "ERROR 01: " & ex.Message & vbNewLine & ex.StackTrace
                End Try

                Datei = .Workbooks.Open(filepath) 'Anpassen
                Blatt = Datei.Worksheets("QS") 'Anpassen

                Dim cnt = 0
                For Each r In dt.Rows
                    Blatt.Range("A" & (4 + cnt)).Value = r("Grenzstelle")
                    Blatt.Range("B" & (4 + cnt)).Value = r("Anzahl")
                    cnt += 1
                Next
                Blatt.Range("D1").Value = von.ToShortDateString
                Blatt.Range("F1").Value = bis.ToShortDateString

                Datei.Save()
                Try : Datei.close() : Catch ex As System.Exception
                    Return "ERROR 03: " & ex.Message & vbNewLine & ex.StackTrace
                End Try
                .DisplayAlerts = False
                .quit()
                releaseObject(exclApp)
                releaseObject(Datei)


                Return filepath
            End With
        Catch ex As System.Exception
            '  MsgBox(ex.Message)
            Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace
        End Try

    End Function


    Public Function genEXCEL_THYSSENKRUPP(EORI As String, von As Date, bis As Date) As String
        Try

            Dim sqlstr As String = ""

            sqlstr &= "   SELECT /*eza_id, eza_dyaAnmID,*/cast(eza_Trans_DatumZeit as date) as Datum,eza_ANR as Registriernummer, "

            sqlstr &= " (SELECT [tblDakosy_EZA_Adressen].ezaAd_NameFirma1 FROM [tblDakosy_EZA_Adressen]   WHERE eza_id=ezaAd_EZAId  and ezaAd_AdressTyp='CZ') Absender , "
            sqlstr &= " (SELECT [tblDakosy_EZA_Adressen].ezaAd_LandCode FROM [tblDakosy_EZA_Adressen]   WHERE eza_id=ezaAd_EZAId   and ezaAd_AdressTyp='CZ') AbsenderLand, "
            sqlstr &= " ezaWP_UrsprungslandCode Ursprungsland, "

            sqlstr &= " ezaWP_PositionsNummer as PositionsNummer, "
            sqlstr &= " tblDakosy_EZA_Warenposition.ezaWP_WarennummerEZT TarifnummerEZT, "
            sqlstr &= " tblDakosy_EZA_Warenposition.ezaWP_Artikelpreis Artikelpreis,  "
            sqlstr &= " CASE WHEN ezaWP_PositionsNummer=1 then  SUM(CASE WHEN [ezaAfb_AbgabeArt] = 'B0000' THEN [ezaAfb_Abgabenbetrag] ELSE 0 END) ELSE '' END  EUST, "
            sqlstr &= " CASE WHEN ezaWP_PositionsNummer=1 then  SUM(CASE WHEN [ezaAfb_AbgabeArt] = 'B0000' THEN 0 ELSE [ezaAfb_Abgabenbetrag] END) ELSE '' END  ZOLL, "
            sqlstr &= " ezaWP_PackstueckAnzahl PackstueckAnzahl, "
            sqlstr &= "  sum(tblDakosy_EZA_Warenposition.ezaWP_Eigenmasse) Eigenmasse,/* sum(tblDakosy_EZA_Warenposition.ezaWP_Rohmasse) Rohmasse, */ "

            sqlstr &= " max(tblDakosy_EZA_Warenposition.ezaWP_Warenbezeichnung )Warenbezeichnung "

            sqlstr &= " FROM [VERAG].[dbo].[tblDakosy_EZA] inner join tblDakosy_EZA_Warenposition on ezaWP_EzaId=eza_Id "
            sqlstr &= " inner join tblDakosy_EZA_Aufschub on [ezaAfb_EZAId]=eza_Id "
            sqlstr &= " where (SELECT count(*) FROM [tblDakosy_EZA_Adressen]  WHERE eza_id=ezaAd_EZAId AND  ezaAd_TeilnehmerEORI = '" & EORI & "' and ezaAd_AdressTyp='CN')>0 "

            sqlstr &= " and eza_Trans_DatumZeit between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "' "
            sqlstr &= " and eza_status BETWEEN 60 and 60  "
            sqlstr &= " group by eza_id,eza_dyaAnmID,eza_ANR,ezaWP_PositionsNummer,eza_Trans_DatumZeit,ezaWP_UrsprungslandCode ,ezaWP_WarennummerEZT,ezaWP_Artikelpreis,ezaWP_ArtikelpreisWaehrung,ezaWP_PackstueckAnzahl "



            Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)


            Dim filepath = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt, {"H:I"},,,, False, "Zollanmeldungen_" & EORI & "_" & von.ToShortDateString & "-" & bis.ToShortDateString)
            If filepath = "" Then Return "ERROR 01: Fehler beim Erzeugen des XLS."

            Return filepath
        Catch ex As System.Exception
            '  MsgBox(ex.Message)
            Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace
        End Try

    End Function

    Public Function genEXCEL_RED_BULL(KdNr As String, von As Date, bis As Date) As String
        Try
            Dim KUNDENADR = New VERAG_PROG_ALLGEMEIN.cAdressen(KdNr)
            Dim sqlstr As String = ""

            sqlstr &= "SELECT  cast([Abfertigungsdatum] as date) [Abfertigungsdatum], [BelegNr] [CNR/MRN] ,Abfertigungsbezeichnung,case when [AtlasBezNrEZA] <> '' Then [AtlasBezNrEZA] ELSE [AtlasBezNrNCTS] END as BezugsNr,[LKW Kennzeichen] , case when [AtlasBezNrEZA] <> '' Then EZA.eza_VersendungsLandCode else NCTS.ncts_VersendungsLandCode End as VersendungsLand  , case when [AtlasBezNrEZA] <> '' Then EZA.eza_Bestimmungsland else NCTS.ncts_BestimmungslandCode End as Bestimmungsland,[Absender],[Empfänger],[Packstücke] ,[Rohmasse] , case when [AtlasBezNrEZA] <> '' Then "
            sqlstr &= "(SELECT ezaWP_WarennummerEZT+ ', '  FROM [tblDakosy_EZA_Warenposition] As T2 WHERE T2.ezaWP_EzaId = EZA.eza_id ORDER BY ezaWP_WarennummerEZT FOR XML PATH (''), TYPE) else (SELECT nctsWP_Warennummer + ', '  FROM [tblDakosy_NCTSOut_Warenposition] As T2 WHERE T2.nctsWP_NctsId = NCTS.ncts_Id ORDER BY nctsWP_Warennummer FOR XML PATH (''), TYPE) End as CustomsTariffNr"
            sqlstr &= ", case when [AtlasBezNrEZA] <> '' Then (SELECT ezaWP_AnmeldeVErfahren + ', '  FROM [tblDakosy_EZA_Warenposition] As T2 WHERE T2.ezaWP_EzaId = EZA.eza_id ORDER BY ezaWP_AnmeldeVErfahren FOR XML PATH (''), TYPE) else NCTS.ncts_ArtAnmeldung End as CodeOfCostumsProcedure"
            sqlstr &= " From [VERAG].[dbo].[Speditionsbuch] as SPB"
            sqlstr &= " left join tblDakosy_NCTSOut as NCTS on NCTS.ncts_ObjectName = SPB.AtlasBezNrNCTS"
            sqlstr &= " left join tblDakosy_EZA as EZA on EZA.eza_ObjectName = SPB.AtlasBezNrEZA"
            sqlstr &= " left join Abfertigungsarten as ABF on ABF.[Abfertigungsart] = SPB.[Abfertigungsart]"
            sqlstr &= "  where (VermittlerKundenNr='" & KdNr & "' OR EmpfängerKundenNr='" & KdNr & "')"
            sqlstr &= "  and Abfertigungsdatum between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "'"

            Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)


            Dim filepath = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt,,,,, False, "Report Data_" & KUNDENADR.FullName & "_" & von.ToShortDateString & "-" & bis.ToShortDateString)
            If filepath = "" Then Return "ERROR 01: Fehler beim Erzeugen des XLS."

            Return filepath
        Catch ex As System.Exception
            '  MsgBox(ex.Message)
            Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace
        End Try

    End Function

    Public Function genImex_Abfertigung(von As Date, bis As Date) As String
        Try
            Dim sqlstr As String = ""

            sqlstr &= "SELECT * "
            sqlstr &= "FROM ( "
            sqlstr &= "    SELECT [KundenNr], [FilialenNr] "
            sqlstr &= "    FROM [VERAG].[dbo].[KundenFilialen] "
            sqlstr &= "    WHERE [FilialenNr] = 5501 "
            sqlstr &= ") AS kf "
            sqlstr &= "LEFT JOIN ( "
            sqlstr &= "    SELECT EndempfängerKundenNr, AbsenderKundenNr, EmpfängerKundenNr, [FilialenNr], [FrachtführerKundenNr], AvisiererKundenNr, VermittlerKundenNr "
            sqlstr &= "    FROM [VERAG].[dbo].[Speditionsbuch] "
            sqlstr &= "    WHERE [FilialenNr] = '5501' "
            sqlstr &= "    AND [Abfertigungsdatum] > DATEADD(YEAR, -2, GETDATE()) "
            sqlstr &= ") AS sped ON kf.[FilialenNr] = sped.[FilialenNr] "
            sqlstr &= "AND ( "
            sqlstr &= "    sped.EndempfängerKundenNr = kf.[KundenNr] OR "
            sqlstr &= "    sped.AbsenderKundenNr = kf.[KundenNr] OR "
            sqlstr &= "    sped.EmpfängerKundenNr = kf.[KundenNr] OR "
            sqlstr &= "    sped.AvisiererKundenNr = kf.[KundenNr] OR "
            sqlstr &= "    sped.[FrachtführerKundenNr] = kf.[KundenNr] OR "
            sqlstr &= "    sped.VermittlerKundenNr = kf.[KundenNr] "
            sqlstr &= ") "
            sqlstr &= "LEFT JOIN ( "
            sqlstr &= "    SELECT AdressenNr, Auswahl "
            sqlstr &= "    FROM [VERAG].[dbo].[Adressen] "
            sqlstr &= "    WHERE Auswahl = 'A' "
            sqlstr &= ") AS Ad ON Ad.AdressenNr = kf.[KundenNr] "
            sqlstr &= "LEFT JOIN ( "
            sqlstr &= "    SELECT KundenNr, [OffertenNr] "
            sqlstr &= "    FROM [VERAG].[dbo].[Offerten] "
            sqlstr &= "    WHERE [OffertenNr] = 1 "
            sqlstr &= ") AS o ON kf.KundenNr = o.KundenNr "
            sqlstr &= "WHERE sped.[FilialenNr] IS NULL "
            sqlstr &= "AND Ad.Auswahl = 'A' "
            sqlstr &= "AND OffertenNr = 1 "
            sqlstr &= "AND LEFT(kf.KundenNr, 1) = '1'; "


            Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr, 300)


            Dim filepath = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt,,,,, False, "Report Data_ImexAbfertigung" & "_" & von.ToShortDateString & "-" & bis.ToShortDateString)
            If filepath = "" Then Return "ERROR 01: Fehler beim Erzeugen des XLS."

            Return filepath
        Catch ex As System.Exception
            '  MsgBox(ex.Message)
            Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace
        End Try

    End Function


    Public Function genEXCEL_ANNA(FilialenNr As String, abfertigungsart As Integer, von As Date, bis As Date) As String
        Try

            Dim sqlstr As String = ""

            sqlstr &= "SELECT count(*) as Anzahl,FilialenNr,case when KE.Veranlagungskunde = 1 Then adr.[Name 1] else adre.[Name 1] ENd as Kunde "
            sqlstr &= "FROM [VERAG].[dbo].[Speditionsbuch] as SP "
            sqlstr &= "left join [tblKundenErweitert] as KE on KE.kde_KundenNr = SP.EmpfängerKundenNr "
            sqlstr &= "left join adressen as adr on adr.AdressenNr = SP.EmpfängerKundenNr "
            sqlstr &= "left join [tblKundenErweitert] as KA on KA.kde_KundenNr = SP.VermittlerKundenNr "
            sqlstr &= "left join adressen as adre on adre.AdressenNr = SP.VermittlerKundenNr "
            sqlstr &= "where Abfertigungsart = " & abfertigungsart & "  and Abfertigungsdatum between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "' and FilialenNr in (" & FilialenNr & ") and (Ke.Veranlagungskunde = 1 or KA.Veranlagungskunde = 1) "
            sqlstr &= "group by case when KE.Veranlagungskunde = 1 Then adr.[Name 1] else adre.[Name 1] ENd, FilialenNr order by Kunde"


            Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)


            Dim filepath = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt,,,,, False, "Report Data_" & von.ToShortDateString & "-" & bis.ToShortDateString)
            If filepath = "" Then Return "ERROR 01: Fehler beim Erzeugen des XLS."

            Return filepath
        Catch ex As System.Exception
            '  MsgBox(ex.Message)
            Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace
        End Try

    End Function


    Public Function genEXCEL_ZF(KdNr As String, von As Date, bis As Date, Auswertungstyp As String) As String
        Try




            Dim KUNDENADR = New VERAG_PROG_ALLGEMEIN.cAdressen(KdNr)
            Dim Path = ""

            If KdNr = "714869" Or KdNr = "718486" Or KdNr = "764755" Then 'ZUR SICHERHEIT, FALLS FALSCHE KDNR EINGEGEBEN WIRD!!!



                Dim dt As DataTable = loadDgvBySqlFMZOLL("SELECT   CAST([FilialenNr] as varchar) + '/' + CAST([AbfertigungsNr] as varchar) Abfertigungsnummer
	                           ,cast([Abfertigungsdatum] as date)Abfertigungsdatum
                              ,Absender
	                          ,Rechnungsbetrag Betrag 
  	                          ,BelegNr
                              ,[FilialenNr],[AbfertigungsNr],Speditionsbuch.Abfertigungsart,Abfertigungsbezeichnung,Speditionsbuch.Zollsystem_Land
                          FROM Speditionsbuch INNER JOIN [Abfertigungsarten] ON Speditionsbuch.Abfertigungsart=Abfertigungsarten.Abfertigungsart
                          where EmpfängerKundenNr IN (" & KdNr & ") and VermittlerKundenNr IN (" & KdNr & ") and Abfertigungsdatum BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And Speditionsbuch.Abfertigungsart IN (1,29,38)")



                Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SR\"
                If Not My.Computer.FileSystem.DirectoryExists(sPath) Then
                    My.Computer.FileSystem.CreateDirectory(sPath)
                End If



                Dim exclApp As Object 'as Application
                Dim Datei As Object 'as WorkBook
                Dim Blatt As Object 'Microsoft.Office.Interop.Excel.Worksheet 'As Object 'as Worksheet
                exclApp = CreateObject("Excel.Application")

                Select Case Auswertungstyp
                    Case "monthly"


                        With exclApp
                            .Visible = False

                            Try
                                Path = sPath & "ZF_" & KdNr & "_" & von.ToShortDateString & " - " & bis.ToShortDateString & "" & ".xlsx"
                                While System.IO.File.Exists(Path)
                                    Path = sPath & "ZF_" & KdNr & "_" & von.ToShortDateString & "-" & bis.ToShortDateString & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx"
                                End While
                                My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.RG_ZF, False)
                            Catch ex As System.Exception
                                '  MsgBox(ex.Message)
                                MsgBox("Error 01: " & ex.Message & vbNewLine & ex.StackTrace)


                                Return ""
                            End Try

                            Datei = .Workbooks.Open(Path) 'Anpassen
                            Blatt = Datei.Worksheets(1) 'Anpassen

                            Blatt.Range("I1").Value = von.ToShortDateString & "-" & bis.ToShortDateString

                            Dim cnt = 3
                            For Each r In dt.Rows
                                Blatt.Range("A" & cnt).Value = cnt - 2
                                Blatt.Range("B" & cnt).Value = r("Abfertigungsnummer")
                                '   Blatt.Range("C" & cnt).Value = r("RechnungsNr")
                                Blatt.Range("C" & cnt).Value = r("Abfertigungsdatum")
                                Blatt.Range("D" & cnt).Value = r("Abfertigungsbezeichnung")
                                Blatt.Range("E" & cnt).Value = r("Absender")
                                Blatt.Range("F" & cnt).Value = "" 'r("Betrag")
                                Blatt.Range("H" & cnt).Value = r("BelegNr")

                                VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERAG"

                                Dim ZOLLANMELDUNG As New cZollsysteme_Aktenbeschriftung
                                Dim zS = If(r("Zollsystem_Land") IsNot DBNull.Value, r("Zollsystem_Land").ToString(), "")
                                If ZOLLANMELDUNG.getDataByBezugsnummer(r("FilialenNr") & "/" & r("AbfertigungsNr"), r("Abfertigungsart"), "", False, zS) Then
                                    Blatt.Range("F" & cnt).Value = ZOLLANMELDUNG.Rechnungspreis
                                    Blatt.Range("G" & cnt).Value = ZOLLANMELDUNG.Handelsrechnung.Replace(", ", "," & vbNewLine)
                                    Blatt.Range("I" & cnt).Value = ZOLLANMELDUNG.ABGABEN_ZOLL
                                    Blatt.Range("J" & cnt).Value = ZOLLANMELDUNG.ANZ_POS
                                    If If(ZOLLANMELDUNG.ATCMRN, "") <> "" Then
                                        Blatt.Range("H" & cnt).Value = ZOLLANMELDUNG.ATCMRN
                                    End If
                                End If

                                cnt += 1

                            Next

                            Datei.Save()
                            .DisplayAlerts = False
                            .quit()
                            Try : Datei.close(True) : Catch : End Try
                        End With


                    Case "quarter"


                        With exclApp
                            .Visible = False

                            Try
                                Path = sPath & "ZF_" & KdNr & "_" & von.ToShortDateString & " - " & bis.ToShortDateString & "" & ".xlsx"
                                While System.IO.File.Exists(Path)
                                    Path = sPath & "ZF_" & KdNr & "_" & von.ToShortDateString & "-" & bis.ToShortDateString & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx"
                                End While
                                My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.RG_ZF_NEW, False)
                            Catch ex As System.Exception
                                '  MsgBox(ex.Message)
                                MsgBox("Error 01: " & ex.Message & vbNewLine & ex.StackTrace)


                                Return ""
                            End Try

                            Datei = .Workbooks.Open(Path) 'Anpassen
                            Blatt = Datei.Worksheets(1) 'Anpassen


                            Dim cnt = 2

                            For Each r In dt.Rows

                                Dim ZOLLANMELDUNG As New DAKOSY_Worker.cZollsysteme_Aktenbeschriftung

                                Dim zS = If(r("Zollsystem_Land") IsNot DBNull.Value, r("Zollsystem_Land").ToString(), "")
                                If ZOLLANMELDUNG.getDataByBezugsnummer(r("FilialenNr") & "/" & r("AbfertigungsNr"), r("Abfertigungsart"), "", False, zS) Then

                                    If ZOLLANMELDUNG.dtWARENPOS.Rows.Count > 0 Then

                                        Dim rowcounter As Integer = 0

                                        For Each row As DataRow In ZOLLANMELDUNG.dtWARENPOS.Rows

                                            Dim ZollInProzent As Double = ZOLLANMELDUNG.ABGABEN_ZOLL / ZOLLANMELDUNG.RechnungspreisohneWahrung * 100

                                            Blatt.Range("A" & cnt).Value = cnt - 1
                                            Blatt.Range("B" & cnt).Value = r("Abfertigungsdatum")
                                            Blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr"))
                                            Blatt.Range("D" & cnt).Value = ZOLLANMELDUNG.Empfaenger
                                            Blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr")
                                            Blatt.Range("F" & cnt).Value = r("BelegNr")
                                            Blatt.Range("G" & cnt).Value = row.Item("PosNr")
                                            Blatt.Range("H" & cnt).Value = row.Item("WarenNr")
                                            Blatt.Range("I" & cnt).Value = "-"
                                            Blatt.Range("J" & cnt).Value = row.Item("WarenBez")
                                            Blatt.Range("K" & cnt).Value = ""
                                            Blatt.Range("L" & cnt).Value = ZOLLANMELDUNG.Waehrungscode
                                            Blatt.Range("M" & cnt).Value = ZOLLANMELDUNG.Geschaeftsart
                                            Blatt.Range("N" & cnt).Value = ZOLLANMELDUNG.Zollstelle_Eingang
                                            Blatt.Range("O" & cnt).Value = ""
                                            Blatt.Range("P" & cnt).Value = row.Item("Netto")
                                            Blatt.Range("Q" & cnt).Value = row.Item("PosWert")
                                            Blatt.Range("R" & cnt).Value = IIf(rowcounter = 0, ZOLLANMELDUNG.ABGABEN_EUST, "")
                                            Blatt.Range("S" & cnt).Value = IIf(rowcounter = 0, ZOLLANMELDUNG.ABGABEN_ZOLL, "")
                                            Blatt.Range("T" & cnt).Value = IIf(rowcounter = 0, ZollInProzent.ToString("N2") & " %", "")
                                            Blatt.Range("U" & cnt).Value = IIf(ZOLLANMELDUNG.VerBestLandZst.ToString.Count > 1, ZOLLANMELDUNG.VerBestLandZst.ToString.Substring(0, 2), "")
                                            Blatt.Range("V" & cnt).Value = ZOLLANMELDUNG.Absender
                                            Blatt.Range("W" & cnt).Value = row.Item("Herkunft")
                                            Blatt.Range("X" & cnt).Value = ZOLLANMELDUNG.Incoterms
                                            Blatt.Range("Y" & cnt).Value = row.Item("Verfahren")
                                            Blatt.Range("Z" & cnt).Value = row.Item("Preferenz")
                                            Blatt.Range("AA" & cnt).Value = IIf(row.Item("isCBAM"), "Y", "N")

                                            If If(ZOLLANMELDUNG.ATCMRN, "") <> "" AndAlso Blatt.Range("F" & cnt).Value = "" Then
                                                Blatt.Range("F" & cnt).Value = ZOLLANMELDUNG.ATCMRN
                                            End If

                                            cnt += 1
                                            rowcounter += 1
                                        Next


                                    Else

                                        Dim ZollInProzent As Double = ZOLLANMELDUNG.ABGABEN_ZOLL / ZOLLANMELDUNG.RechnungspreisohneWahrung * 100

                                        Blatt.Range("A" & cnt).Value = cnt - 1
                                        Blatt.Range("B" & cnt).Value = r("Abfertigungsdatum")
                                        Blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr"))
                                        Blatt.Range("D" & cnt).Value = ZOLLANMELDUNG.Empfaenger
                                        Blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr")
                                        Blatt.Range("F" & cnt).Value = r("BelegNr")
                                        Blatt.Range("G" & cnt).Value = ""
                                        Blatt.Range("H" & cnt).Value = ""
                                        Blatt.Range("I" & cnt).Value = "-"
                                        Blatt.Range("J" & cnt).Value = ""
                                        Blatt.Range("K" & cnt).Value = ""
                                        Blatt.Range("L" & cnt).Value = ZOLLANMELDUNG.Waehrungscode
                                        Blatt.Range("M" & cnt).Value = ZOLLANMELDUNG.Geschaeftsart
                                        Blatt.Range("N" & cnt).Value = ZOLLANMELDUNG.Zollstelle_Eingang
                                        Blatt.Range("O" & cnt).Value = ""
                                        Blatt.Range("P" & cnt).Value = ""
                                        Blatt.Range("Q" & cnt).Value = ""
                                        Blatt.Range("R" & cnt).Value = ZOLLANMELDUNG.ABGABEN_EUST
                                        Blatt.Range("S" & cnt).Value = ZOLLANMELDUNG.ABGABEN_ZOLL
                                        Blatt.Range("T" & cnt).Value = ZollInProzent.ToString("N2") & " %"
                                        Blatt.Range("U" & cnt).Value = IIf(ZOLLANMELDUNG.VerBestLandZst.ToString.Count > 1, ZOLLANMELDUNG.VerBestLandZst.ToString.Substring(0, 2), "")
                                        Blatt.Range("V" & cnt).Value = ZOLLANMELDUNG.Absender
                                        Blatt.Range("W" & cnt).Value = ""
                                        Blatt.Range("X" & cnt).Value = ZOLLANMELDUNG.Incoterms
                                        Blatt.Range("Y" & cnt).Value = ""
                                        Blatt.Range("Z" & cnt).Value = ""
                                        Blatt.Range("AA" & cnt).Value = ""


                                        If If(ZOLLANMELDUNG.ATCMRN, "") <> "" AndAlso Blatt.Range("F" & cnt).Value = "" Then
                                            Blatt.Range("F" & cnt).Value = ZOLLANMELDUNG.ATCMRN
                                        End If
                                        cnt += 1
                                    End If



                                End If

                            Next



                            Datei.Save()
                            .DisplayAlerts = False
                            .quit()
                            Try : Datei.close(True) : Catch : End Try

                        End With



                End Select

                'Dim filepath = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt,,,,, False, "Report Data_" & KUNDENADR.FullName & "_" & von.ToShortDateString & "-" & bis.ToShortDateString)

            End If

            Dim filepath = Path
            If filepath = "" Then Return "ERROR 01: Fehler beim Erzeugen des XLS."

            Return filepath
        Catch ex As System.Exception
            '  MsgBox(ex.Message)
            Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace
        End Try

    End Function


    Public Function genEXCEL_Bericht_Kunden(KdNr As String, von As Date, bis As Date, Auswertungstyp As String) As String

        Dim KUNDE = New VERAG_PROG_ALLGEMEIN.cKunde(KdNr)

        Dim dt As DataTable = (New SQL).loadDgvBySql("SELECT   CAST([FilialenNr] as varchar) + '/' + CAST([AbfertigungsNr] as varchar) Abfertigungsnummer
	                           ,cast([Abfertigungsdatum] as date)Abfertigungsdatum
                              ,Absender
	                          ,Rechnungsbetrag Betrag 
  	                          ,BelegNr
                              ,[FilialenNr],[AbfertigungsNr],Speditionsbuch.Abfertigungsart,Abfertigungsbezeichnung,Speditionsbuch.Zollsystem_Land, Speditionsbuch.[LKW Kennzeichen]
                          FROM Speditionsbuch INNER JOIN [Abfertigungsarten] ON Speditionsbuch.Abfertigungsart=Abfertigungsarten.Abfertigungsart
                          where EmpfängerKundenNr IN (" & KdNr & ") and VermittlerKundenNr IN (" & KdNr & ") and Abfertigungsdatum BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And Speditionsbuch.Abfertigungsart IN (1,29,38, 26)", "FMZOLL")

        Try

            Dim Path = ""
            If dt IsNot Nothing And dt.Rows.Count > 0 Then

                Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SR\"
                If Not My.Computer.FileSystem.DirectoryExists(sPath) Then
                    My.Computer.FileSystem.CreateDirectory(sPath)
                End If


                Dim exclApp As Object 'as Application
                Dim Datei As Object 'as WorkBook
                Dim Blatt As Object 'Microsoft.Office.Interop.Excel.Worksheet 'As Object 'as Worksheet
                exclApp = CreateObject("Excel.Application")

                Select Case Auswertungstyp.ToUpper

                    Case "DETAILBERICHT"

                        With exclApp
                            .Visible = False

                            Try
                                Path = sPath & "Detailbericht_" & KUNDE.KundenNr & "_" & von.ToShortDateString & "-" & bis.ToShortDateString & "" & " .xlsx"
                                While System.IO.File.Exists(Path)
                                    Path = sPath & KUNDE.KundenNr & von.ToShortDateString & "-" & bis.ToShortDateString & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx"
                                End While
                                My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Detailauswertung_divers, False)
                            Catch ex As System.Exception
                            End Try


                            Datei = .Workbooks.Open(Path) 'Anpassen
                            Blatt = Datei.Worksheets(1) 'Anpassen

                            Dim cnt = 2
                            For Each r In dt.Rows
                                Dim ZOLLANMELDUNG As New DAKOSY_Worker.cZollsysteme_Aktenbeschriftung
                                Try
                                    Dim zS = If(r("Zollsystem_Land") IsNot DBNull.Value, r("Zollsystem_Land").ToString(), "")
                                    If ZOLLANMELDUNG.getDataByBezugsnummer(r("FilialenNr") & "/" & r("AbfertigungsNr"), r("Abfertigungsart"), "", False, zS) Then

                                        If ZOLLANMELDUNG.dtWARENPOS.Rows.Count > 0 Then

                                            Dim rowcounter As Integer = 0

                                            For Each row As DataRow In ZOLLANMELDUNG.dtWARENPOS.Rows

                                                Dim ZollInProzent As Double = 0
                                                If If(ZOLLANMELDUNG.RechnungspreisohneWahrung, "") <> "" Then
                                                    ZollInProzent = ZOLLANMELDUNG.ABGABEN_ZOLL / ZOLLANMELDUNG.RechnungspreisohneWahrung * 100
                                                End If

                                                Blatt.Range("A" & cnt).Value = cnt - 1
                                                Blatt.Range("B" & cnt).Value = r("Abfertigungsdatum")
                                                Blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr"))
                                                Blatt.Range("D" & cnt).Value = ZOLLANMELDUNG.Empfaenger
                                                Blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr")
                                                Blatt.Range("F" & cnt).Value = r("BelegNr")
                                                Blatt.Range("G" & cnt).Value = row.Item("PosNr")
                                                Blatt.Range("H" & cnt).Value = row.Item("WarenNr")
                                                Blatt.Range("I" & cnt).Value = "-"
                                                Blatt.Range("J" & cnt).Value = row.Item("WarenBez")
                                                Blatt.Range("K" & cnt).Value = ""
                                                Blatt.Range("L" & cnt).Value = ZOLLANMELDUNG.Waehrungscode
                                                Blatt.Range("M" & cnt).Value = ZOLLANMELDUNG.Geschaeftsart
                                                Blatt.Range("N" & cnt).Value = ZOLLANMELDUNG.Zollstelle_Eingang
                                                Blatt.Range("O" & cnt).Value = ""
                                                Blatt.Range("P" & cnt).Value = row.Item("Netto")
                                                Blatt.Range("Q" & cnt).Value = row.Item("PosWert")
                                                Blatt.Range("R" & cnt).Value = IIf(rowcounter = 0, ZOLLANMELDUNG.ABGABEN_EUST, "")
                                                Blatt.Range("S" & cnt).Value = IIf(rowcounter = 0, ZOLLANMELDUNG.ABGABEN_ZOLL, "")
                                                Blatt.Range("T" & cnt).Value = IIf(rowcounter = 0, ZollInProzent.ToString("N2") & " %", "")
                                                Blatt.Range("U" & cnt).Value = IIf(ZOLLANMELDUNG.VerBestLandZst.ToString.Count > 1, ZOLLANMELDUNG.VerBestLandZst.ToString.Substring(0, 2), "")
                                                Blatt.Range("V" & cnt).Value = ZOLLANMELDUNG.Absender
                                                Blatt.Range("W" & cnt).Value = row.Item("Herkunft")
                                                Blatt.Range("X" & cnt).Value = ZOLLANMELDUNG.Incoterms
                                                Blatt.Range("Y" & cnt).Value = row.Item("Verfahren")
                                                Blatt.Range("Z" & cnt).Value = row.Item("Preferenz")

                                                If If(ZOLLANMELDUNG.ATCMRN, "") <> "" AndAlso Blatt.Range("F" & cnt).Value = "" Then
                                                    Blatt.Range("F" & cnt).Value = ZOLLANMELDUNG.ATCMRN
                                                End If

                                                cnt += 1
                                                rowcounter += 1
                                            Next
                                        Else
                                            Dim ZollInProzent As Double = 0
                                            If If(ZOLLANMELDUNG.RechnungspreisohneWahrung, "") <> "" Then
                                                ZollInProzent = ZOLLANMELDUNG.ABGABEN_ZOLL / ZOLLANMELDUNG.RechnungspreisohneWahrung * 100
                                            End If

                                            Blatt.Range("A" & cnt).Value = cnt - 1
                                            Blatt.Range("B" & cnt).Value = r("Abfertigungsdatum")
                                            Blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr"))
                                            Blatt.Range("D" & cnt).Value = ZOLLANMELDUNG.Empfaenger
                                            Blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr")
                                            Blatt.Range("F" & cnt).Value = r("BelegNr")
                                            Blatt.Range("G" & cnt).Value = ""
                                            Blatt.Range("H" & cnt).Value = ""
                                            Blatt.Range("I" & cnt).Value = "-"
                                            Blatt.Range("J" & cnt).Value = ""
                                            Blatt.Range("K" & cnt).Value = ""
                                            Blatt.Range("L" & cnt).Value = ZOLLANMELDUNG.Waehrungscode
                                            Blatt.Range("M" & cnt).Value = ZOLLANMELDUNG.Geschaeftsart
                                            Blatt.Range("N" & cnt).Value = ZOLLANMELDUNG.Zollstelle_Eingang
                                            Blatt.Range("O" & cnt).Value = ""
                                            Blatt.Range("P" & cnt).Value = ""
                                            Blatt.Range("Q" & cnt).Value = ""
                                            Blatt.Range("R" & cnt).Value = ZOLLANMELDUNG.ABGABEN_EUST
                                            Blatt.Range("S" & cnt).Value = ZOLLANMELDUNG.ABGABEN_ZOLL
                                            Blatt.Range("T" & cnt).Value = ZollInProzent.ToString("N2") & " %"
                                            Blatt.Range("U" & cnt).Value = IIf(ZOLLANMELDUNG.VerBestLandZst.ToString.Count > 1, ZOLLANMELDUNG.VerBestLandZst.ToString.Substring(0, 2), "")
                                            Blatt.Range("V" & cnt).Value = ZOLLANMELDUNG.Absender
                                            Blatt.Range("W" & cnt).Value = ""
                                            Blatt.Range("X" & cnt).Value = ZOLLANMELDUNG.Incoterms
                                            Blatt.Range("Y" & cnt).Value = ""
                                            Blatt.Range("Z" & cnt).Value = ""
                                            Blatt.Range("AA" & cnt).Value = ""


                                            If If(ZOLLANMELDUNG.ATCMRN, "") <> "" AndAlso Blatt.Range("F" & cnt).Value = "" Then
                                                Blatt.Range("F" & cnt).Value = ZOLLANMELDUNG.ATCMRN
                                            End If
                                            cnt += 1
                                        End If
                                    End If

                                Catch ex As Exception

                                End Try

                            Next

                            Datei.Save()
                            .DisplayAlerts = False
                            .quit()
                            Try : Datei.close(True) : Catch : End Try
                        End With

                    Case "BERICHT"


                        With exclApp
                            .Visible = False

                            Try
                                Path = sPath & "Bericht_" & KUNDE.KundenNr & von.ToShortDateString & "-" & bis.ToShortDateString & "" & " .xlsx"
                                While System.IO.File.Exists(Path)
                                    Path = sPath & KUNDE.KundenNr & von.ToShortDateString & "-" & bis.ToShortDateString & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx"
                                End While
                                My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Auswertung_divers, False)
                            Catch ex As System.Exception

                            End Try

                            Datei = .Workbooks.Open(Path) 'Anpassen
                            Blatt = Datei.Worksheets(1) 'Anpassen


                            If KUNDE.KundenNr = 902452 Then 'KUNDE WILL WIEDER EXZTAWURST!!!!!!!

                                Blatt.Range("H1").Value = von.ToShortDateString & "-" & bis.ToShortDateString

                                Blatt.Range("A" & 2).Value = "Nr"
                                Blatt.Range("B" & 2).Value = "Datum"
                                Blatt.Range("C" & 2).Value = "MRN-Nr."
                                Blatt.Range("D" & 2).Value = "LKW/Cont."
                                Blatt.Range("E" & 2).Value = "Rg.-Nr."
                                Blatt.Range("F" & 2).Value = "EUST"
                                Blatt.Range("G" & 2).Value = "Anzahl Pos."
                                Blatt.Range("H" & 2).Value = ""
                                Blatt.Range("I" & 2).Value = ""
                                Blatt.Range("J" & 2).Value = ""
                                Blatt.Range("K" & 2).Value = ""
                                Blatt.Range("L" & 2).Value = ""

                                Dim cnt = 3
                                For Each r In dt.Rows
                                    Blatt.Range("A" & cnt).Value = cnt - 2
                                    Blatt.Range("B" & cnt).Value = r("Abfertigungsdatum")
                                    Blatt.Range("C" & cnt).Value = r("BelegNr")
                                    Blatt.Range("D" & cnt).Value = r("LKW Kennzeichen")

                                    Dim ZOLLANMELDUNG As New DAKOSY_Worker.cZollsysteme_Aktenbeschriftung
                                    Try
                                        Dim zS = If(r("Zollsystem_Land") IsNot DBNull.Value, r("Zollsystem_Land").ToString(), "")
                                        If ZOLLANMELDUNG.getDataByBezugsnummer(r("FilialenNr") & "/" & r("AbfertigungsNr"), r("Abfertigungsart"), "", False, zS) Then


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

                                            Dim RechnungsString = ZOLLANMELDUNG.Handelsrechnung.Replace(", ", "," & vbNewLine)
                                            Dim rows() As String = RechnungsString.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)

                                            For Each row As String In rows

                                                If IsDate(row) AndAlso row.Length = 10 Then
                                                    RechnungsString = RechnungsString.Replace(row.ToString, "")
                                                End If

                                            Next

                                            Blatt.Range("E" & cnt).Value = RechnungsString.Trim

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

                                            Blatt.Range("F" & cnt).Value = ZOLLANMELDUNG.ABGABEN_EUST
                                            Blatt.Range("G" & cnt).Value = ZOLLANMELDUNG.ANZ_POS
                                            If If(ZOLLANMELDUNG.ATCMRN, "") <> "" Then
                                                Blatt.Range("C" & cnt).Value = ZOLLANMELDUNG.ATCMRN
                                            End If
                                        End If

                                    Catch ex As Exception
                                        MsgBox(ex.Message & ex.StackTrace)
                                    End Try

                                    cnt += 1
                                Next

                            Else


                                Blatt.Range("I1").Value = von.ToShortDateString & "-" & bis.ToShortDateString

                                Dim ZOLLANMELDUNG As New DAKOSY_Worker.cZollsysteme_Aktenbeschriftung

                                Dim cnt = 3
                                For Each r In dt.Rows
                                    Blatt.Range("A" & cnt).Value = cnt - 2
                                    Blatt.Range("B" & cnt).Value = r("Abfertigungsnummer")
                                    Blatt.Range("C" & cnt).Value = r("Abfertigungsdatum")
                                    Blatt.Range("D" & cnt).Value = r("Abfertigungsbezeichnung")
                                    Blatt.Range("E" & cnt).Value = r("Absender")
                                    Blatt.Range("F" & cnt).Value = "" 'r("Betrag")
                                    Blatt.Range("H" & cnt).Value = r("BelegNr")

                                    Try
                                        Dim zS = If(r("Zollsystem_Land") IsNot DBNull.Value, r("Zollsystem_Land").ToString(), "")
                                        If ZOLLANMELDUNG.getDataByBezugsnummer(r("FilialenNr") & "/" & r("AbfertigungsNr"), r("Abfertigungsart"), "", False, zS) Then
                                            Blatt.Range("F" & cnt).Value = ZOLLANMELDUNG.RechnungspreisohneWahrung
                                            Blatt.Range("G" & cnt).Value = ZOLLANMELDUNG.Handelsrechnung.Replace(", ", "," & vbNewLine)
                                            Blatt.Range("I" & cnt).Value = ZOLLANMELDUNG.ABGABEN_ZOLL
                                            Blatt.Range("J" & cnt).Value = ZOLLANMELDUNG.ABGABEN_EUST
                                            Blatt.Range("K" & cnt).Value = ZOLLANMELDUNG.ANZ_POS

                                            If If(ZOLLANMELDUNG.ATCMRN, "") <> "" Then
                                                Blatt.Range("H" & cnt).Value = ZOLLANMELDUNG.ATCMRN
                                            End If
                                        End If

                                    Catch ex As Exception
                                        MsgBox(ex.Message & ex.StackTrace)
                                    End Try

                                    cnt += 1
                                Next

                            End If

                            Datei.Save()
                            .DisplayAlerts = False
                            .quit()
                            Try : Datei.close(True) : Catch : End Try
                        End With



                End Select

                'Dim filepath = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt,,,,, False, "Report Data_" & KUNDENADR.FullName & "_" & von.ToShortDateString & "-" & bis.ToShortDateString)
                Dim filepath = Path
                If filepath = "" Then Return "ERROR 01: Fehler beim Erzeugen des XLS."

                Return filepath

            End If

        Catch ex As System.Exception
            '  MsgBox(ex.Message)
            Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace
        End Try



        Return ""

    End Function

    Private Sub releaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            obj = Nothing
        Finally
            GC.Collect()
        End Try
    End Sub

    Public Function genEXCEL_CS() As String
        Try

            Dim sqlstr As String = ""

            Dim von = CDate("01." & Now.AddMonths(-1).Month & "." & Now.AddMonths(-1).Year)
            Dim bis = CDate("01." & Now.Month & "." & Now.Year).AddDays(-1)

            'sqlstr &= " SELECT Aviso.[Grenzstelle], SUM(Speditionsbuch.Abfertigungsanzahl) as Anzahl FROM Speditionsbuch INNER JOIN [SQLGUIDE01.verag.ost.dmn].AVISO.dbo.AVISO on Aviso.avisoid=Speditionsbuch.AvisoID WHERE Abfertigungsart IN (26,28) "
            'sqlstr &= " AND Aviso.[Grenzstelle] <> 'SFD' and FilialenNr NOT IN ( 4801,4806 ) "
            'sqlstr &= " and Abfertigungsdatum between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "' " &
            '                                        " GROUP BY Aviso.[Grenzstelle]" &
            '                                        " ORDER BY Anzahl DESC"


            sqlstr &= " SELECT [Grenzstelle], SUM(Speditionsbuch.Abfertigungsanzahl) as Anzahl FROM Speditionsbuch WHERE Abfertigungsart IN (26,28) "
            sqlstr &= " AND [Grenzstelle] <> 'SFD' and FilialenNr NOT IN ( 4801,4802,4806 ) "
            sqlstr &= " and Abfertigungsdatum between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "' " &
                                                    " GROUP BY [Grenzstelle]" &
                                                    " ORDER BY Anzahl DESC"
            Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)

            Dim exclApp As Object 'as Application
            Dim Datei As Object 'as WorkBook
            Dim Blatt As Object 'as WorkSheet
            exclApp = CreateObject("Excel.Application")

            With exclApp
                .Visible = False
                Dim filepath = sPath & "CS_Auswertung.xlsx"
                Try
                    My.Computer.FileSystem.WriteAllBytes(filepath, My.Resources.CS_Aufteilung, False)
                Catch ex As System.Exception
                    '  MsgBox(ex.Message)
                    Return "ERROR 01: " & ex.Message & vbNewLine & ex.StackTrace
                End Try

                Datei = .Workbooks.Open(filepath) 'Anpassen
                Blatt = Datei.Worksheets("CS") 'Anpassen

                Dim cnt = 0
                For Each r In dt.Rows
                    Blatt.Range("A" & (4 + cnt)).Value = r("Grenzstelle")
                    Blatt.Range("B" & (4 + cnt)).Value = r("Anzahl")
                    cnt += 1
                Next
                Blatt.Range("D1").Value = von.ToShortDateString
                Blatt.Range("F1").Value = bis.ToShortDateString

                Datei.Save()
                .DisplayAlerts = False
                .quit()
                Try : Datei.close(True) : Catch : End Try

                Return filepath
            End With
        Catch ex As System.Exception
            '  MsgBox(ex.Message)
            Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace
        End Try

    End Function



    Public Function genEXCEL_MDM_ZOLL(Jahr) As String
        Try


            Dim exclApp As Object 'as Application
            Dim Datei As Object 'as WorkBook
            Dim Blatt As Object 'as WorkSheet
            exclApp = CreateObject("Excel.Application")

            With exclApp
                .Visible = False
                Dim filepath = sPath & "MDM_ZOLL_Verguetung.xlsx"
                Try
                    My.Computer.FileSystem.WriteAllBytes(filepath, My.Resources.MDM_ZOLL_Verguetung, False)
                Catch ex As System.Exception
                    '  MsgBox(ex.Message)
                    Return "ERROR 01: " & ex.Message & vbNewLine & ex.StackTrace
                End Try

                Datei = .Workbooks.Open(filepath) 'Anpassen
                Blatt = Datei.Worksheets("CS") 'Anpassen

                Blatt.Range("F1").Value = If(Jahr > 0, Jahr, Now.AddMonths(-1).Year)


                ' Dim von = CDate("01." & Now.AddMonths(-1) & "." & Now.AddMonths(-1).Year)

                For i = 1 To 12 'Now.AddMonths(-1).Month
                    Dim year = If(Jahr > 0, Jahr, Now.AddMonths(-1).Year)
                    Dim sqlstr As String = ""

                    '  Dim bis = von.AddMonths(1).AddDays(-1)

                    Dim von = CDate("01." & i & "." & year)
                    Dim bis = CDate("01." & i & "." & year).AddMonths(1).AddDays(-1)

                    sqlstr &= "  SELECT  count(*)"
                    sqlstr &= "  FROM tblEABelegnummer as EAB  inner join tblEABelegposition as POS on  EAB.Mandant=POS.Mandant and EAB.[Niederlassung]=POS.[Niederlassung] and EAB.[Benutzer]=POS.[Benutzer] and EAB.[BelegDat]=POS.[BelegDat] and EAB.[BelegNr]=POS.[BelegNr]"
                    sqlstr &= "  where LeistungsNr=480	and [EAB].BelegDat between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "' and gebucht=1 and storniert=0  and EAB.Mandant='VERA' AND EAB.Niederlassung='SUA' "
                    ' sqlstr &= "  where LeistungsNr=480	and [EAB].BelegDat between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "' and gebucht=1 and storniert=0  and EAB.Mandant='IMEX' "

                    Dim anzahl = 0

                    Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)
                    If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then
                        anzahl = dt.Rows(0)(0)
                    End If
                    Blatt.Range("D" & (7 + i)).Value = anzahl



                    sqlstr = "  SELECT COUNT(*)  FROM [tblSDLAbholung]  where sdlAb_Storniert=0 and sdlAb_FahrerAbholAuftrag=1 and sdlAb_Abholung between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "'AND sdlAb_Abholung>='01.09.2021 00:00:00'  "
                    anzahl = 0

                    Dim dt2 = loadDgvBySqlSDL(sqlstr)
                    If dt2 IsNot Nothing AndAlso dt2.Rows.Count > 0 Then
                        anzahl = dt2.Rows(0)(0)
                    End If


                    Blatt.Range("B" & (7 + i)).Value = anzahl

                Next




                Datei.Save()
                .DisplayAlerts = False
                .quit()
                Try : Datei.close(True) : Catch : End Try

                Return filepath
            End With
        Catch ex As System.Exception
            '  MsgBox(ex.Message)
            Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace
        End Try

    End Function

    Public Function genEXCEL_MDM_IT(ByVal Jahr As Integer) As String
        Dim exclApp As Object = Nothing
        Dim Datei As Object = Nothing
        Dim Blatt As Object = Nothing

        Try
            Dim yearVal As Integer = If(Jahr > 0, Jahr, Now.AddMonths(-1).Year)

            exclApp = CreateObject("Excel.Application")
            With exclApp
                .Visible = False
                .DisplayAlerts = False

                Dim filepath As String = sPath & "MDM_IT_Verguetung.xlsx"

                'Template aus Resources schreiben
                Try
                    My.Computer.FileSystem.WriteAllBytes(filepath, My.Resources.MDM_it_Verguetung, False)
                Catch ex As Exception
                    Return "ERROR 01: " & ex.Message & vbNewLine & ex.StackTrace
                End Try

                Datei = .Workbooks.Open(filepath)
                Blatt = Datei.Worksheets("CS") ' ggf. anpassen

                ' Jahr eintragen (wie bisher)
                Blatt.Range("G1").Value = yearVal

                ' --- Zielbereich leeren (nur Wertebereich, nicht Monatsnamen/Überschriften) ---
                ' Monate sind i.d.R. Zeile 7-18 (12 Monate). Spalten B-F
                Blatt.Range("B8:F19").ClearContents()

                ' --- SQL 1x laden: alle Monate / Datenquellen ---
                Dim sqlstr As String =
                        "SELECT * FROM (
                            SELECT  count(*) as Anzahl, 'IDS' as Datenquelle, Month(tblIDSTransactionsNew_details.YearMonthDay) as Month,Year(tblIDSTransactionsNew_details.YearMonthDay)  as Year
                            FROM  tblIDSTransactionsNew_details 
                            WHERE Year(tblIDSTransactionsNew_details.YearMonthDay) =  " & yearVal & "
                            GROUP BY Month(tblIDSTransactionsNew_details.YearMonthDay),Year(tblIDSTransactionsNew_details.YearMonthDay) 
                              
                            UNION ALL

                            SELECT
                                COUNT(*) AS Anzahl,
                                Datenquelle,
                                MONTH(Billingdate) AS [Month],
                                YEAR(Billingdate)  AS [Year]
                            FROM [VERAG].[dbo].[tblMautbericht]
                            WHERE YEAR(Billingdate) = " & yearVal & " and Datenquelle not in ('IDS')
                            GROUP BY Datenquelle, MONTH(Billingdate), YEAR(Billingdate)
                        ) AS temp
                        ORDER BY Datenquelle, temp.[Year], temp.[Month];"

                Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)

                ' --- Map (Datenquelle, Monat) -> Anzahl ---
                Dim map As New Dictionary(Of String, Integer)(StringComparer.OrdinalIgnoreCase)

                If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then
                    For Each r As DataRow In dt.Rows
                        Dim src As String = If(r("Datenquelle") Is DBNull.Value, "", CStr(r("Datenquelle")).Trim())

                        ' Sonderzuordnung
                        If src.Equals("AT", StringComparison.OrdinalIgnoreCase) Then
                            src = "ASFINAG"
                        End If

                        Dim m As Integer = If(r("Month") Is DBNull.Value, 0, Convert.ToInt32(r("Month")))
                        Dim cnt As Integer = If(r("Anzahl") Is DBNull.Value, 0, Convert.ToInt32(r("Anzahl")))

                        If m >= 1 AndAlso m <= 12 AndAlso src <> "" Then
                            Dim key As String = src & "|" & m.ToString()
                            ' Falls doppelte Zeilen vorkommen, addieren wir (sicherer)
                            If map.ContainsKey(key) Then
                                map(key) += cnt
                            Else
                                map(key) = cnt
                            End If
                        End If
                    Next
                End If

                ' --- Spaltenmapping Datenquelle -> Excel-Spalte ---
                Dim col As New Dictionary(Of String, String)(StringComparer.OrdinalIgnoreCase) From {
                {"IDS", "B"},
                {"PLOSE", "C"},
                {"ASFINAG", "D"},
                {"MSE", "E"},
                {"UTA", "F"}
            }

                ' --- Schreiben: Monate 1..12 in Zeilen 7..18 ---
                For monthIdx As Integer = 1 To 12
                    Dim rowExcel As Integer = 7 + monthIdx ' 7..18

                    For Each kvp In col
                        Dim src As String = kvp.Key
                        Dim colLetter As String = kvp.Value
                        Dim key As String = src & "|" & monthIdx.ToString()

                        Dim value As Integer = 0
                        If map.ContainsKey(key) Then value = map(key)

                        Blatt.Range(colLetter & rowExcel.ToString()).Value = value
                    Next
                Next

                Datei.Save()
                Try : Datei.Close(True) : Catch : End Try
                Try : .Quit() : Catch : End Try
            End With

            Return sPath & "MDM_IT_Verguetung.xlsx"

        Catch ex As Exception
            Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace

        Finally
            ' COM sauber freigeben (verhindert EXCEL.EXE-Leichen)
            Try
                If Blatt IsNot Nothing Then Marshal.FinalReleaseComObject(Blatt)
            Catch
            End Try
            Try
                If Datei IsNot Nothing Then Marshal.FinalReleaseComObject(Datei)
            Catch
            End Try
            Try
                If exclApp IsNot Nothing Then Marshal.FinalReleaseComObject(exclApp)
            Catch
            End Try

            Blatt = Nothing
            Datei = Nothing
            exclApp = Nothing

            GC.Collect()
            GC.WaitForPendingFinalizers()
            GC.Collect()
        End Try
    End Function



    Public Function genEXCEL_DEPOT(KundenNr) As String
        Try

            Dim sqlstr As String = ""



            sqlstr &= "    Select   [Belegnummer] As [Rechnungsnummer/BelegNr], CONVERT(Date,[Belegdatum] ,4) As Belegdatum "
            sqlstr &= " ,[Gesamtausstand] as Betrag,[Buchungstext],Rechnungsausgang.Abfertigungsdatum "
            sqlstr &= " , (SELECT  TOP 1 Abfertigungsbezeichnung FROM Speditionsbuch INNER JOIN Abfertigungsarten ON Abfertigungsarten.Abfertigungsart= Speditionsbuch.Abfertigungsart WHERE Speditionsbuch.AbfertigungsNr=[Rechnungsausgang].AbfertigungsNr And Speditionsbuch.FilialenNr=[Rechnungsausgang].FilialenNr) as Abfertigungsart "
            sqlstr &= " ,Rechnungsausgang.[Packstücke und Warenbezeichnung] "
            sqlstr &= "   FROM  [Offene Posten] "
            sqlstr &= " Left Join [Rechnungsausgang] on [Rechnungsausgang].RechnungsNr=(case WHEN isnumeric(Belegnummer)=1 THEN Belegnummer ELSE -1 END  ) "
            sqlstr &= "  where Kontonummer = 716257 And [Offene Posten].Firma_ID=1 "
            sqlstr &= " order by Belegdatum, op_id "

            '  sqlstr &= " SELECT *  FROM  [Offene Posten] where Kontonummer= " & KundenNr
            '  sqlstr &= " ORDER BY  SSMA_TimeStamp"
            Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)

            Dim exclApp As Object 'as Application
            Dim Datei As Object 'as WorkBook
            Dim Blatt As Object 'as WorkSheet
            exclApp = CreateObject("Excel.Application")

            With exclApp
                .Visible = False
                Dim filepath = sPath & "\Depot.xlsx"
                Try
                    My.Computer.FileSystem.WriteAllBytes(filepath, My.Resources.Depot, False)
                Catch ex As System.Exception
                    '  MsgBox(ex.Message)
                    Return "ERROR 01: " & ex.Message & vbNewLine & ex.StackTrace
                End Try
                MsgBox(filepath)
                Datei = .Workbooks.Open(filepath) 'Anpassen
                Blatt = Datei.Worksheets(1) 'Anpassen

                Dim cnt = 0
                For Each r In dt.Rows
                    Blatt.Range("A" & (4 + cnt)).Value = r("Belegdatum")
                    Blatt.Range("B" & (4 + cnt)).Value = r("Belegnummer")
                    Blatt.Range("C" & (4 + cnt)).Value = r("Bruttobetrag")
                    Blatt.Range("D" & (4 + cnt)).Value = r("Waehrung")
                    Blatt.Range("E" & (4 + cnt)).Value = r("Buchungstext")
                    Blatt.Range("F" & (4 + cnt)).Value = r("KumSaldoEUR")
                    Blatt.Range("G" & (4 + cnt)).Value = r("Bemerkung")
                    cnt += 1
                Next
                Blatt.Range("E1").Value = Now.ToShortDateString

                Datei.Save()
                .DisplayAlerts = False
                .quit()
                Try : Datei.close(True) : Catch : End Try

                Return filepath
            End With
        Catch ex As System.Exception
            '  MsgBox(ex.Message)
            Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace
        End Try

    End Function




    Sub einlesenBRG()
        Dim cProgramFunctions As New ADMIN.cProgramFunctions
        cProgramFunctions.EINLESEN(Now.AddDays(-8).ToShortDateString, Now.ToShortDateString)
    End Sub
    Public Function genEXCEL_BRGKW() As String
        Try
            Dim cProgramFunctions As New ADMIN.cProgramFunctions
            '  cProgramFunctions.EINLESEN(Now.AddDays(-8), Now)

            Dim tage As Integer = 7
            Dim startdate As Date = Now.AddDays(-1)
            '    Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\Bürgschaften\" ' My.Computer.FileSystem.GetTempFileName
            'If Not My.Computer.FileSystem.DirectoryExists(sPath) Then
            'My.Computer.FileSystem.CreateDirectory(sPath)
            'End If

            Return cProgramFunctions.genEXCEL_AuswertungenKW(sPath, cProgramFunctions.getKW(Now.AddDays(-7)), Now.AddDays(-7).Year, False)



        Catch ex As Exception
            ' MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
            Return "ERROR 03: " & ex.Message & vbNewLine & ex.StackTrace
        End Try
    End Function



    Public Function genEXCEL_TR(LandEinschr) As String
        Try
            If LandEinschr <> "" Then LandEinschr = " AND LandKz IN (" & LandEinschr & ") "

            Dim sqlstr = " SELECT [Kontonummer] as KdNr,cast(SUM([Gesamtausstand]) as decimal(12,2)) as Summe,max([Waehrung]) as Währung ,max(LandKz) as Land, max(Ordnungsbegriff) as Firma,max(Ort) as Ort,max(Straße) as Straße,max([E-Mail]) as [E-Mail],max(Telefon) as Telefon, min([Fälligkeitsdatum]) as [Fälligkeitsdatum] " &
                         "FROM [Offene Posten] INNER JOIN Adressen ON AdressenNr=Kontonummer " &
                            "WHERE 1=1 " & LandEinschr & " AND Firma_ID NOT IN (7,15) " &
                         "GROUP BY [Kontonummer] " &
                         "HAVING SUM([Gesamtausstand]) > " & betragOpTr &
                         "ORDER BY Firma asc"
            ' MsgBox(sqlstr)
            '  Dim SQL As New System.Data.Sql
            Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)
            System.Console.WriteLine("Vorhandene Datensätze: " & dt.Rows.Count)
            genExcel(dt)

            Return sPath & "TMP.xlsx"

        Catch ex As Exception
            '  MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
            Return "ERROR: " & ex.Message
        End Try
    End Function



    Public Function genEXCEL_TR_IMEX(LandEinschr) As String
        Try

            If LandEinschr <> "" Then LandEinschr = " AND LandKz IN (" & LandEinschr & ") "

            Dim sqlstr = " SELECT [KundenNr] as KdNr,cast(SUM(Saldo) as decimal(12,2)) as Summe/*,max([Waehrung]) as Währung */,max(LandKz) as Land, max(Ordnungsbegriff) as Firma,max(Ort) as Ort,max(Straße) as Straße,max([E-Mail]) as [E-Mail],max(Telefon) as Telefon  " &
                         " FROM Offene_Posten_DVO INNER JOIN Adressen ON AdressenNr=[KundenNr]  " &
                            "WHERE 1=1  " & LandEinschr &
                         "GROUP BY [KundenNr] " &
                         "HAVING SUM([Saldo]) > " & betragOpTr &
                         "ORDER BY Firma asc"
            ' MsgBox(sqlstr)
            '  Dim SQL As New System.Data.Sql
            Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)
            System.Console.WriteLine("Vorhandene Datensätze: " & dt.Rows.Count)
            genExcel(dt)

            Return sPath & "TMP.xlsx"

        Catch ex As Exception
            '  MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
            Return "ERROR: " & ex.Message
        End Try

    End Function

    Public Function genEXCEL_OPKreditlimit() As String
        Try

            'Dim sqlstr = "SELECT  [AdressenNr],Ordnungsbegriff,Kreditlimit,sum([Offene Posten].Bruttobetrag) as OP_Saldo
            '              FROM [VERAG].[dbo].[Adressen]
            '              inner join Kunden on KundenNr=AdressenNr
            '              inner join [Offene Posten] on KundenNrZentrale=[Offene Posten].Kontonummer
            '              where Kreditlimit<>2600 
            '              and (LEN(Adressennr)=6 and AdressenNr not like '40%')
            '              group by [AdressenNr],Ordnungsbegriff,Kreditlimit 
            '                having sum([Offene Posten].Bruttobetrag) >Kreditlimit"

            Dim sqlstr = "	SELECT  [AdressenNr],Ordnungsbegriff, Kreditlimit ,dbo.fn_ConvertNumber(OP_Saldo, 1031, 2) as OP_Saldo, Vorauskasse, dbo.fn_ConvertNumber(OP_Faellig, 1031, 2)OP_Fällig
						      FROM (SELECT  [AdressenNr],Ordnungsbegriff, CASE WHEN kunden.Vorkasse =1 then '' ELSE CONVERT(varchar, CAST(Kreditlimit AS money), 1) END AS Kreditlimit , (sum([Offene Posten].Bruttobetrag)) as OP_Saldo, CASE WHEN kunden.Vorkasse =1 then 'JA' ELSE 'NEIN' END Vorauskasse
                                    , SUM(case when [Offene Posten].Fälligkeitsdatum<=getdate() then [Offene Posten].Bruttobetrag ELSE 0 end)   as OP_Faellig
                              FROM [VERAG].[dbo].[Adressen] 
                                    inner join Kunden on KundenNr=AdressenNr
                                    inner join [Offene Posten] on KundenNrZentrale=[Offene Posten].Kontonummer
                                    inner join Filialen on filialen.filialenNr=Kunden.FilialenNr
                              where ((Kreditlimit<>2600 and  Kreditlimit<>0) OR kunden.Vorkasse =1)
                                    and (LEN(Adressennr)=6 and AdressenNr not like '40%')
						            and filialen.Firma IN ('VERAG','ATILLA') and filialen.filialenNr<>8001 
                              group by [AdressenNr],Ordnungsbegriff,Kreditlimit ,kunden.Vorkasse
                                    having sum([Offene Posten].Bruttobetrag) >Kreditlimit    
								    ) 
							AS T1 
                              WHERE cast (OP_Faellig as float) > 5000
							order by OP_Faellig desc"

            Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)
            System.Console.WriteLine("Vorhandene Datensätze: " & dt.Rows.Count)
            genExcel(dt)

            Return sPath & "TMP.xlsx"

        Catch ex As Exception
            '  MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
            Return "ERROR: " & ex.Message
        End Try
    End Function

    Public Function genEXCEL_VW_DHL() As String
        Try

            'Dim sqlstr = "SELECT  [AdressenNr],Ordnungsbegriff,Kreditlimit,sum([Offene Posten].Bruttobetrag) as OP_Saldo
            '              FROM [VERAG].[dbo].[Adressen]
            '              inner join Kunden on KundenNr=AdressenNr
            '              inner join [Offene Posten] on KundenNrZentrale=[Offene Posten].Kontonummer
            '              where Kreditlimit<>2600 
            '              and (LEN(Adressennr)=6 and AdressenNr not like '40%')
            '              group by [AdressenNr],Ordnungsbegriff,Kreditlimit 
            '                having sum([Offene Posten].Bruttobetrag) >Kreditlimit"

            Dim sqlstr = "	SELECT TOP (1000) [AvisoID] LKW_Id
                                      ,[LKW_Nr] Kennzeichen
                                      ,[Auftraggeber] Avisierer
                                      ,[Frächter]
                                      ,[LetzterMitarbeiter]
                                      ,[Grenzstelle] 
                                       ,[AvisoEingang]
                                        ,[Datum] Erfasst
		                             ,isnull([Dauer],'')[Dauer]
										  ,''Puffer
									  ,[Vorbereitet] as [Doc.Checked-Vorbereitet]
                                      ,[Vorgeschrieben] as [DataDate-Vorgeschrieben]
									  ,[VoraussichtlichesEintreffen] as [ETA-Vorr.Eintreffen]
                                      ,[Ankunft] as [Arrival-DE]
                                      ,isnull(cast([VerwahrungStatusDate]as varchar(max)),'') PhysicalCheck
                                      ,isnull(cast((SELECT TOP 1 Datum  FROM [AVISO].[dbo].[Vermerke]  where VermerkeCode=18 and Geloescht=0 AND [Vermerke].AvisoID=Aviso.AvisoID  order by datum desc)as varchar(max)),'') as [Clearance-ZollFertig]
                                      ,isnull(cast([Freigabe]as varchar(max)),'')[Departure-Freigabe]
                                     
                                  FROM [AVISO].[dbo].[Aviso]
                                  where '768363' IN(Frächter_KdNr , Auftraggeber_KdNr)
                                     and 
                                          ( 
                                            (Status=3 )
                                           OR
                                            (Status=1 and cast(Freigabe as date)=cast(getdate() as date))
	                                        ) 
                                    ORDER BY Ankunft, Freigabe"

            Dim dt As DataTable = loadDgvBySqlAVISO(sqlstr)
            System.Console.WriteLine("Vorhandene Datensätze: " & dt.Rows.Count)

            If dt.Rows.Count > 0 Then
                genExcel(dt)
            End If

            Return sPath & "TMP.xlsx"

        Catch ex As Exception
            '  MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
            Return "ERROR: " & ex.Message
        End Try
    End Function

    Public Function genEXCEL_Syska_UID_VERGLEICH() As String
        Try

            Dim wb As New XLWorkbook()
            Dim firmenlist As New List(Of MyListItem)
            firmenlist.Add(New MyListItem("VERAG AG", 1))
            firmenlist.Add(New MyListItem("VERAG CS", 11))
            firmenlist.Add(New MyListItem("ATILLA", 7))

            For Each i In firmenlist
                Dim top = 100
                Dim sql As New SQL
                Dim sqlstrKunden = "   select * from ( SELECT  [KundenNr] as KundenNr,[Name 1], Adressen.LandKz, (isnull(Adressen.UstIdKz,'') + isnull(Adressen.UstIdNr,'')) as UIDNrKunden, isnull(c_ustidnr,'') as UIDNrKundenDeb, [i_firm_refid] as MandantFIBU,  FiBuSchnittstelleNr as MandantAVISO FROM [VERAG].[dbo].[Kunden] 
                                        inner join Adressen on Adressen.AdressenNr = Kunden.KundenNr
                                        inner join Buchhaltung.[FIBU2].[dbo].[fibu_konto] on Kunden.KundenNrZentrale = i_konto
                                        where isnull(KundenNrZentrale,0) <> 0 and Auswahl = 'A' And isnull(FiBuSchnittstelleNr,0) = " & i.Value & " ANd [i_firm_refid] = " & i.Value & "  ) as temp  where UIDNrKunden <> UIDNrKundenDeb"


                Dim dtKunden As DataTable = loadDgvBySqlFMZOLL(sqlstrKunden)
                If dtKunden.Rows.Count > 0 Then
                    System.Console.WriteLine("Vorhandene Datensätze: " & dtKunden.Rows.Count)
                    wb.Worksheets.Add(dtKunden, i.Text)
                End If

            Next

            wb.SaveAs(sPath & "TMP.xlsx")

            Return sPath & "TMP.xlsx"

        Catch ex As Exception
            '  MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
            Return "ERROR: " & ex.Message
        End Try
    End Function

    Public Function genEXCEL_TR_ATILLA(LandEinschr) As String
        Try

            If LandEinschr <> "" Then LandEinschr = " AND LandKz IN (" & LandEinschr & ") "

            Dim sqlstr = " SELECT [Kontonummer] as KdNr,cast(SUM([Gesamtausstand]) as decimal(12,2)) as Summe,max([Waehrung]) as Währung ,max(LandKz) as Land, max(Ordnungsbegriff) as Firma,max(Ort) as Ort,max(Straße) as Straße,max([E-Mail]) as [E-Mail],max(Telefon) as Telefon " &
                         "FROM [Offene Posten] INNER JOIN Adressen ON AdressenNr=Kontonummer " &
                            "WHERE 1=1 " & LandEinschr & " AND Firma_ID = 7 " &
                         "GROUP BY [Kontonummer] " &
                         "HAVING SUM([Gesamtausstand]) > " & betragOpTr &
                         "ORDER BY Firma asc"
            ' MsgBox(sqlstr)
            '  Dim SQL As New System.Data.Sql
            Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)
            System.Console.WriteLine("Vorhandene Datensätze: " & dt.Rows.Count)
            genExcel(dt)

            Return sPath & "TMP.xlsx"

        Catch ex As Exception
            '  MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
            Return "ERROR: " & ex.Message
        End Try
    End Function

    Public Function genEXCEL_TETRAPAK_DE(von As DateTime, bis As DateTime) As String
        Try
            Dim sql As New SQL
            Dim sqlstr = "SELECT /*eza_id,eza_dyaAnmID,*/ cast(isnull(eza_anmeldedatum,eza_Trans_DatumZeit) as date) as ImportDate,eza_ANR as MRN,
                            ezaWP_AnmeldeVErfahren [Import regime],
                            (SELECT [tblDakosy_EZA_Adressen].ezaAd_TeilnehmerEORI FROM [tblDakosy_EZA_Adressen]   WHERE eza_id=ezaAd_EZAId  and ezaAd_AdressTyp='CZ') ExporterEORI,
                            (SELECT [tblDakosy_EZA_Adressen].ezaAd_NameFirma1 FROM [tblDakosy_EZA_Adressen]   WHERE eza_id=ezaAd_EZAId  and ezaAd_AdressTyp='CZ') Exporter,
                            (SELECT [tblDakosy_EZA_Adressen].ezaAd_LandCode FROM [tblDakosy_EZA_Adressen]   WHERE eza_id=ezaAd_EZAId   and ezaAd_AdressTyp='CZ') ExporterCountry,
                            (SELECT [tblDakosy_EZA_Adressen].ezaAd_TeilnehmerEORI FROM [tblDakosy_EZA_Adressen]   WHERE eza_id=ezaAd_EZAId  and ezaAd_AdressTyp='CN') ImporterEORI, 
                            (SELECT TOP 1 [Ordnungsbegriff]  FROM [VERAG].[dbo].[Adressen] inner join kunden on KundenNr=AdressenNr WHERE EORITIN =(SELECT [tblDakosy_EZA_Adressen].ezaAd_TeilnehmerEORI FROM [tblDakosy_EZA_Adressen]   WHERE eza_id=ezaAd_EZAId  and ezaAd_AdressTyp='CN') ) Importer,
                            
                            ezaWP_UrsprungslandCode CountryOrigin,
                            
                            ezaWP_PositionsNummer as PositionNummer,
                            tblDakosy_EZA_Warenposition.ezaWP_WarennummerEZT HSCode,
                            tblDakosy_EZA_Warenposition.ezaWP_Artikelpreis GoodsValue, 
                            CASE WHEN ezaWP_PositionsNummer=1 then  SUM(CASE WHEN [ezaAfb_AbgabeArt] = 'B0000' THEN [ezaAfb_Abgabenbetrag] ELSE 0 END) ELSE '' END  VAT,
                            CASE WHEN ezaWP_PositionsNummer=1 then  SUM(CASE WHEN [ezaAfb_AbgabeArt] = 'B0000' THEN 0 ELSE [ezaAfb_Abgabenbetrag] END) ELSE '' END  DUTY,
                            ezaWP_PackstueckAnzahl Package,
                             sum(tblDakosy_EZA_Warenposition.ezaWP_Eigenmasse) NetWeight,
                              sum(tblDakosy_EZA_Warenposition.ezaWP_Rohmasse) GrossWeight, 
                              
                            
                            max(tblDakosy_EZA_Warenposition.ezaWP_Warenbezeichnung )GoodsDescription
                             
                              FROM [VERAG].[dbo].[tblDakosy_EZA] inner join tblDakosy_EZA_Warenposition on ezaWP_EzaId=eza_Id
                              inner join tblDakosy_EZA_Aufschub on [ezaAfb_EZAId]=eza_Id
                              where (SELECT count(*) FROM [tblDakosy_EZA_Adressen]  WHERE eza_id=ezaAd_EZAId AND  ezaAd_TeilnehmerEORI IN( 'ATEOS1000001405','ATEOS1000001405','DE2030640','DE2010348')and ezaAd_AdressTyp='CN')>0
                            
                              and cast(isnull(eza_anmeldedatum,eza_Trans_DatumZeit) as date) between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "'
                              and (eza_status BETWEEN 60 and 60  or eza_ANR like 'ATC%')
                              group by eza_id,eza_dyaAnmID,eza_ANR,ezaWP_PositionsNummer,isnull(eza_anmeldedatum,eza_Trans_DatumZeit),ezaWP_UrsprungslandCode ,ezaWP_WarennummerEZT,ezaWP_Artikelpreis,ezaWP_ArtikelpreisWaehrung,ezaWP_PackstueckAnzahl,ezaWP_AnmeldeVErfahren
                            
                              order by ImporterEORI, importdate"

            Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr, 300)
            System.Console.WriteLine("Vorhandene Datensätze: " & dt.Rows.Count)

            Dim excelBez = "TETRAPAK_DE_" & von.ToShortDateString.Replace(".", "-") & "_to_ " & bis.ToShortDateString.Replace(".", "-")
            genExcel(dt, excelBez, "TETRAPAK")

            Return sPath & excelBez & ".xlsx"

        Catch ex As Exception
            '  MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
            Return "ERROR: " & ex.Message
        End Try
    End Function

    Public Function genEXCEL_TETRAPAK_AT(von As DateTime, bis As DateTime) As String
        Try
            Dim sql As New SQL
            Dim sqlstr = " DECLARE @Eori AS VARCHAR(100)='ATEOS1000001405'
 
  
				 select  CRN,cast(DecDT as date) ImportDate,LRN,Net,TotGross,ItVal ,[ProcCd] Regime
				 , Orig Ursprungsland

				 , (SELECT TIN FROM zsAnmConorTra WHERE (zsAnmConorTra.LizenzNr =  zsAnmHea.LizenzNr ) And (zsAnmConorTra.OperatorID =zsAnmHea.OperatorID ) And (zsAnmConorTra.VorgangID = zsAnmHea.VorgangID ) And (zsAnmConorTra.AnmID = zsAnmHea.AnmID )) EORI_Exporter
				 , (SELECT Na FROM zsAnmConorTra WHERE (zsAnmConorTra.LizenzNr =  zsAnmHea.LizenzNr ) And (zsAnmConorTra.OperatorID =zsAnmHea.OperatorID ) And (zsAnmConorTra.VorgangID = zsAnmHea.VorgangID ) And (zsAnmConorTra.AnmID = zsAnmHea.AnmID )) Exporter
				 , (SELECT TIN FROM zsAnmConeeTra WHERE (zsAnmConeeTra.LizenzNr =  zsAnmHea.LizenzNr ) And (zsAnmConeeTra.OperatorID =zsAnmHea.OperatorID ) And (zsAnmConeeTra.VorgangID = zsAnmHea.VorgangID ) And (zsAnmConeeTra.AnmID = zsAnmHea.AnmID ))EORI_Importer
				 , (SELECT Na FROM zsAnmConeeTra WHERE (zsAnmConeeTra.LizenzNr =  zsAnmHea.LizenzNr ) And (zsAnmConeeTra.OperatorID =zsAnmHea.OperatorID ) And (zsAnmConeeTra.VorgangID = zsAnmHea.VorgangID ) And (zsAnmConeeTra.AnmID = zsAnmHea.AnmID ))Importer
				 ,GdsDes GoodsDescription,ComCd
				 
				   from  				 zsAnmRefs 
				 inner join zsAnmGdsitem  on zsAnmRefs.LizenzNr=zsAnmGdsitem.LizenzNr and zsAnmRefs.AnmID=zsAnmGdsitem.AnmID and zsAnmRefs.VorgangID=zsAnmGdsitem.VorgangID and zsAnmRefs.OperatorID=zsAnmGdsitem.OperatorID
				 inner join zsAnmHea on zsAnmHea.LizenzNr=zsAnmGdsitem.LizenzNr and zsAnmHea.AnmID=zsAnmGdsitem.AnmID and zsAnmHea.VorgangID=zsAnmGdsitem.VorgangID and zsAnmHea.OperatorID=zsAnmGdsitem.OperatorID
				 inner join zsAnmDeclarant on zsAnmHea.LizenzNr=zsAnmDeclarant.LizenzNr and zsAnmHea.AnmID=zsAnmDeclarant.AnmID and zsAnmHea.VorgangID=zsAnmDeclarant.VorgangID and zsAnmHea.OperatorID=zsAnmDeclarant.OperatorID
				 inner join zsAnmTransp on zsAnmHea.LizenzNr=zsAnmTransp.LizenzNr and zsAnmHea.AnmID=zsAnmTransp.AnmID and zsAnmHea.VorgangID=zsAnmTransp.VorgangID and zsAnmHea.OperatorID=zsAnmTransp.OperatorID
					 	where DecDT between '" & von.ToShortDateString & "' and '" & bis.ToShortDateString & "'
						 
                     and crn is not null
                    
                     and (SELECT TIN FROM zsAnmConeeTra WHERE (zsAnmConeeTra.LizenzNr =  zsAnmHea.LizenzNr ) And (zsAnmConeeTra.OperatorID =zsAnmHea.OperatorID ) And (zsAnmConeeTra.VorgangID = zsAnmHea.VorgangID ) And (zsAnmConeeTra.AnmID = zsAnmHea.AnmID )) LIKE @Eori
                    
                     order by   ImportDate,(SELECT Na FROM zsAnmConorTra WHERE (zsAnmConorTra.LizenzNr =  zsAnmHea.LizenzNr ) And (zsAnmConorTra.OperatorID =zsAnmHea.OperatorID ) And (zsAnmConorTra.VorgangID = zsAnmHea.VorgangID ) And (zsAnmConorTra.AnmID = zsAnmHea.AnmID ))"

            Dim dt As DataTable = sql.loadDgvBySql(sqlstr, "EZOLL", 300)
            System.Console.WriteLine("Vorhandene Datensätze: " & dt.Rows.Count)
            Dim excelBez = "TETRAPAK_AT_" & von.ToShortDateString.Replace(".", "-") & "_to_ " & bis.ToShortDateString.Replace(".", "-")
            genExcel(dt, excelBez, "TETRAPAK")

            Return sPath & excelBez & ".xlsx"

        Catch ex As Exception
            '  MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
            Return "ERROR: " & ex.Message
        End Try
    End Function
    Public Function loadDgvBySqlFMZOLL(ByVal sql As String, Optional CmdChangeTimeout As Integer = 0) As DataTable
        Try
            Dim myTable = New DataTable()
            Dim conn As SqlConnection = VERAG_PROG_ALLGEMEIN.SQL.GetNewOpenConnectionFMZOLL
            'conn.ConnectionString = "Data Source=192.168.0.91\SQLFMZOLL;Initial Catalog=VERAG;Integrated Security=false;User ID=test;Password=BmWr501956;"
            'conn.Open()

            Using cmd As New SqlCommand(sql, conn)
                If (CmdChangeTimeout > 0) Then
                    cmd.CommandTimeout = CmdChangeTimeout
                End If
                Dim dr As SqlDataReader = cmd.ExecuteReader()
                myTable.Load(dr)
                dr.Close()
            End Using
            conn.Close()

            Return myTable
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
        End Try

        Return Nothing
    End Function
    Public Function loadDgvBySqlSDL(ByVal sql As String) As DataTable
        Try
            Dim myTable = New DataTable()
            Dim conn As SqlConnection = VERAG_PROG_ALLGEMEIN.SQL.GetNewOpenConnectionSDL
            'conn.ConnectionString = "Data Source=192.168.0.91\SQLFMZOLL;Initial Catalog=SDL;Integrated Security=false;User ID=test;Password=BmWr501956;"
            'conn.Open()

            Using cmd As New SqlCommand(sql, conn)
                Dim dr As SqlDataReader = cmd.ExecuteReader()
                myTable.Load(dr)
                dr.Close()
            End Using
            conn.Close()

            Return myTable
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
        End Try

        Return Nothing
    End Function

    Public Function loadDgvBySqlAVISO(ByVal sql As String) As DataTable
        Try
            Dim myTable = New DataTable()
            Dim conn As SqlConnection = VERAG_PROG_ALLGEMEIN.SQL.GetNewOpenConnectionAVISO
            'conn.ConnectionString = "Data Source=192.168.0.91\SQLFMZOLL;Initial Catalog=SDL;Integrated Security=false;User ID=test;Password=BmWr501956;"
            'conn.Open()

            Using cmd As New SqlCommand(sql, conn)
                Dim dr As SqlDataReader = cmd.ExecuteReader()
                myTable.Load(dr)
                dr.Close()
            End Using
            conn.Close()

            Return myTable
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
        End Try

        Return Nothing
    End Function

    Public Function replaceBodyVariable(txt As String, Optional von As Date = Nothing, Optional bis As Date = Nothing) As String

        If txt = "" Then Return ""

        If IsDate(von) Then txt = txt.Replace("%von%", von.ToShortDateString)
        If IsDate(bis) Then txt = txt.Replace("%bis%", bis.ToShortDateString)
        txt = txt.Replace("%today%", Now.ToShortDateString)
        txt = txt.Replace("%now%", Now.ToShortTimeString)
        txt = txt.Replace("%now%", Now.ToShortTimeString)

        Return txt

    End Function
End Module
