Imports System.IO
Imports Microsoft.Office.Interop
Imports VERAG_PROG_ALLGEMEIN

Public Class frmAbrechnungsMaske
    Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL

    Dim selChangedAllowed = True

    Dim loaded = False

    Dim FilialNrRestriction As Integer = -1

    Private Sub frmAbrechnungsMaske_Load(sender As Object, e As EventArgs) Handles Me.Load
        'Größe anpassen:

        Me.Height = Screen.FromRectangle(Me.Bounds).WorkingArea.Size.Height
        Me.Top = 0
        initFilterPanel()

        cProgramFunctions.initDrucker(cboPrinter)

        txtAbfertDat.Text = Now.ToShortDateString 'CDate("01." & Now.ToString("MM.yyyy")).AddMonths(-1).ToShortDateString
        txtAbfertDatBis.Text = Now.ToShortDateString

        btnMonat.Text = MONAT.ToString("MMMM")
        btnJahr.Text = JAHR.Year
        cbx.Checked = False

        cboER_SR.Items.Clear()
        cboER_SR.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Alle", ""))
        cboER_SR.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ER", "ER"))
        cboER_SR.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("SR", "SR"))
        cboER_SR.changeItem("")

        cboRechnungsdruck.Items.Clear()
        cboRechnungsdruck.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboRechnungsdruck.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("POST", "0"))
        cboRechnungsdruck.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("FAX", "1"))
        cboRechnungsdruck.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("E-MAIL", "2"))
        cboRechnungsdruck.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("MAIL+KOPIE", "5"))
        cboRechnungsdruck.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AUTO-MAIL", "6"))
        cboRechnungsdruck.changeItem("")

        cboSort.Items.Clear()
        cboSort.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Eingabezeitpunkt", "EZ"))
        cboSort.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Pos.Nr", "POS"))
        cboSort.changeItem("EZ")

        'BERECHTIGUNG 90 = FAKTURIERUNG!!!

        Dim FirmaTmp = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
        If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("OFFERTE_FREMD_VERAGIMEX", "SDL") Or VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_VERAGIMEX", "SDL") Then
            FirmaTmp = "VERAGIMEX"
        End If

        'FirmaTmp = "AMBAR"

        cboSachbearbeiter.Items.Clear()

        Select Case FirmaTmp

            Case "VERAG"
                If VERAG_PROG_ALLGEMEIN.cAllgemein.ABTEILUNG = "MDM" Then
                    Dim whereFirma = " AND FIRMENGRUPPE In ('VERAG360')"
                    If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_VERAGAG_DE", "SDL") Then
                        whereFirma = " AND FIRMENGRUPPE In ('VERAG360','VERAGAG_DE') "
                    End If

                    If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_VERAGAG", "SDL") Then
                        whereFirma &= " OR Firma_ID=1 "
                    End If

                    cboER_SR.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("MSR", "MSR"))
                    cboFirma.fillWithSQL("Select [Firma_ID],[Firma_Bez]  FROM  [tblFirma] WHERE 1=1  " & whereFirma, False, "FMZOLL")
                    cboFirma.changeItem("1")
                    cboSachbearbeiter.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma IN ('VERAG'" & If(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN", ",'ALL'", "") & ") and mit_gekuendigt=0 AND  (mit_abteilung IN ('VRR','BH')	OR [mit_id] IN (SELECT  [beroz_bergrId]  FROM [tblBerechtigungsObjekteZuordnung]  where [beroz_beroId]=90 AND  beroz_art='B')) order by mit_username", False, "ADMIN", True)
                    'cboSachbearbeiter.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("*BAUBÖCK", "BAUBOECK"))
                    'cboSachbearbeiter.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DANIEL", "DANIEL"))

                Else

                    Dim whereFirma = " AND FIRMENGRUPPE IN ('VERAG','VERAGUNISPED','FRONTOFFICE','ATILLA') "
                    If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_VERAGAG_DE", "SDL") Then
                        whereFirma = " AND FIRMENGRUPPE In ('VERAG','VERAGUNISPED','FRONTOFFICE','ATILLA','VERAGAG_DE') "

                    End If

                    cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez]  FROM  [tblFirma] WHERE 1=1 " & whereFirma, False, "FMZOLL")
                    cboFirma.changeItem("1")
                    cboSachbearbeiter.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where mit_firma IN ('VERAG'" & If(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN", ",'ALL'", "") & ") and mit_gekuendigt=0 AND  (mit_abteilung IN ('VRR','BH')	OR [mit_id] IN (SELECT  [beroz_bergrId]  FROM [tblBerechtigungsObjekteZuordnung]  where [beroz_beroId]=90 AND  beroz_art='B')) order by mit_username", False, "ADMIN", True)
                End If
            Case "IMEX"
                cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez]  FROM  [tblFirma] WHERE FIRMENGRUPPE IN ('IMEX') ", False, "FMZOLL")
                cboFirma.changeItem("20")
                cboSachbearbeiter.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where  mit_firma='IMEX'  and mit_gekuendigt=0 AND  (mit_abteilung IN ('VRR','BH')	OR (SELECT COUNT(*)  FROM [tblBerechtigungsObjekteZuordnung]  where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True)
            Case "UNISPED"
                cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez]  FROM  [tblFirma] WHERE FIRMENGRUPPE IN ('UNISPED') ", False, "FMZOLL")
                cboFirma.changeItem("21")
                cboSachbearbeiter.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where  mit_firma='UNISPED'  and mit_gekuendigt=0 AND  (mit_abteilung IN ('VRR','BH')	OR (SELECT COUNT(*)  FROM [tblBerechtigungsObjekteZuordnung]  where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True)
            Case "AMBAR"
                cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez]  FROM  [tblFirma] WHERE FIRMENGRUPPE IN ('AMBAR') ", False, "FMZOLL")
                cboFirma.changeItem("24")
                cboSachbearbeiter.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where  mit_firma='AMBAR'  and mit_gekuendigt=0 AND  (mit_abteilung IN ('VRR','BH')	OR (SELECT COUNT(*)  FROM [tblBerechtigungsObjekteZuordnung]  where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True)

            Case "ATILLA"
                cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez]  FROM  [tblFirma] WHERE Firma_ID=7", False, "FMZOLL")
                cboFirma.changeItem("7")
                cboSachbearbeiter.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where  isnull(mit_firmaFMZoll,0)=7  and mit_gekuendigt=0 AND  (mit_abteilung IN ('VRR','BH')	OR (SELECT COUNT(*)  FROM [tblBerechtigungsObjekteZuordnung]  where [beroz_beroId]=199 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True)
                FilialNrRestriction = 4813

            Case "VERAGIMEX"
                Dim whereFirma = " AND FIRMENGRUPPE IN ('VERAG','IMEX','ATILLA','VERAGUNISPED','FRONTOFFICE') "
                If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_VERAGAG_DE", "SDL") Then
                    whereFirma = " AND FIRMENGRUPPE In ('VERAG','IMEX','VERAGUNISPED','FRONTOFFICE','ATILLA','VERAGAG_DE') "
                End If
                cboSachbearbeiter.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DANIEL", "DANIEL"))
                cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez]  FROM  [tblFirma] WHERE 1=1 " & whereFirma, False, "FMZOLL")
                Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
                    Case "VERAG" : cboFirma.changeItem("1")
                    Case "IMEX" : cboFirma.changeItem("20")
                End Select
                cboSachbearbeiter.fillWithSQL("SELECT [mit_username] FROM [tblMitarbeiter] where  mit_firma IN ('IMEX','VERAG'" & If(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN", ",'ALL'", "") & ") AND mit_gekuendigt=0 AND  (mit_abteilung IN ('VRR','BH')	OR (SELECT COUNT(*)  FROM [tblBerechtigungsObjekteZuordnung]  where [beroz_beroId]=90 AND [beroz_bergrId]=[mit_id] AND beroz_art='B')>0) order by mit_username", False, "ADMIN", True)
                cboSachbearbeiter.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DANIEL", "DANIEL"))
        End Select


        ' MyComboBox2.changeItem(VERAG_PROG_ALLGEMEIN.cAllgemein.USRID) 'Benutzerwechsel
        'If MyComboBox2.Items.Count > 0 Then MyComboBox2.SelectedIndex = 0
        cboSachbearbeiter.changeItem(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME)
        If cboSachbearbeiter._value = "" Then MsgBox("Keine Benutzerberechtigung gefunden!") : Exit Sub

        If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("FAKTURIERUNG_AlleBenutzer", Me) Then
            cboSachbearbeiter.Enabled = False
        End If

        KdSearchBox1.initKdBox(Me)



        AddHandler KdSearchBox1.PropertyChanged, Sub()
                                                     Try
                                                         initDGV()

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


    End Sub

    Private Sub frmAbrechnungsMaske_Shown(sender As Object, e As EventArgs) Handles Me.Shown

        newRechnung()

        loaded = True
        initDGV()
    End Sub

    Sub newRechnung()
        dgvRechnungen.ClearSelection()
        UsrCntlFaktAbrechnung1.newRECHNUNG()
    End Sub

    Sub initFilterPanel()
        cboFirma.fillWithSQL("SELECT [Firma_ID],[Firma_Bez]   FROM [tblFirma]", True, "FMZOLL")
    End Sub


    Function getDGV() As VERAG_PROG_ALLGEMEIN.MyDatagridview
        Return dgvRechnungen
        'If tbcntr.SelectedTab Is TabPage1 Then
        '    Return MyDatagridview1
        'Else
        '    Return MyDatagridview2
        'End If
    End Function

    Sub initDGV()



        If Not loaded Then Exit Sub
        Dim dgv As VERAG_PROG_ALLGEMEIN.MyDatagridview = getDGV()

        With dgv
            Dim sqlstr = ""

            If cbxGutschriftenAnVerag.Checked AndAlso cboFirma._value <> "" AndAlso cboFirma._value = "24" Then
                sqlstr &= "   SELECT isnull(R1.RechnungsNr,'-') as ReNr, R1.FilialenNr, R1.AbfertigungsNr, cast(R1.FilialenNr as varchar) + ' ' + cast(R1.AbfertigungsNr  as varchar) as PosNr, R1.UnterNr, Firma_ID,R1.Sammelrechnung as Art, [RechnungsName 1] as Rechnungsempfänger, (isnull(SteuerpflichtigerGesamtbetrag,0) + isnull(SteuerfreierGesamtbetrag,0)) as Betrag, RK_ID,RechnungsLandKz,RechnungsKundenNr FROM Rechnungsausgang as R1 INNER JOIN Adressen ON AdressenNr=R1.RechnungsKundenNr inner Join Speditionsbuch on Speditionsbuch.FilialenNr = R1.FilialenNr And Speditionsbuch.AbfertigungsNr = R1.AbfertigungsNr and  Speditionsbuch.UnterNr = R1.SpeditionsbuchUnterNr  "
                sqlstr &= "   WHERE 1=1 AND R1.Firma_ID=24 "
                sqlstr &= getRGWhere(cboER_SR._value, FilialNrRestriction)
                sqlstr &= "   and (SELECT COUNT(*) FROM Rechnungsausgang as R2 where"
                sqlstr &= "   R1.FilialenNr=R2.FilialenNr and R1.AbfertigungsNr=R2.AbfertigungsNr and R1.SpeditionsbuchUnterNr=R2.SpeditionsbuchUnterNr AND (RechnungsKundenNr=3013401 OR RechnungsKundenNr = 3017683) and R2.[BelegartenNr]=71)=0"
                sqlstr &= "   and Speditionsbuch.Abfertigungsart IN (1)"
                sqlstr &= "   ORDER BY FilialenNr, AbfertigungsNr, UnterNr"

            Else

                ' sqlstr &= " SELECT FilialenNr, AbfertigungsNr, UnterNr, Firma_ID, Status, Sammelrechnung, Sachbearbeiter, SteuerpflichtigerGesamtbetrag, SteuerfreierGesamtbetrag, RechnungsNr, RechnungsDatum, DruckDatumZeit, Buchungsjahr, RK_ID"
                sqlstr &= " SELECT cast(isnull(Automailversand_sent, 0) as bit) as AUTO_sent, isnull(Rechnungsausgang.RechnungsNr,'-') as ReNr, FilialenNr, AbfertigungsNr, cast(FilialenNr as varchar) + ' ' + cast(AbfertigungsNr  as varchar) as PosNr,UnterNr, Firma_ID,Rechnungsausgang.Sammelrechnung as Art, [RechnungsName 1] as Rechnungsempfänger, (isnull(SteuerpflichtigerGesamtbetrag,0) + isnull(SteuerfreierGesamtbetrag,0)) as Betrag, RK_ID,RechnungsLandKz,RechnungsKundenNr"
                sqlstr &= ",(CASE WHEN Rechnungsdruck =0 THEN 'POST' WHEN Rechnungsdruck=1 THEN 'FAX' WHEN Rechnungsdruck=2 THEN 'E-MAIL' WHEN Rechnungsdruck=5 THEN 'MAIL+KOPIE' ELSE '-' END) as Rechnungsdruck, isnull(BelegartenKz, '') as BelegartenKz "
                sqlstr &= " FROM Rechnungsausgang INNER JOIN Adressen ON AdressenNr=Rechnungsausgang.RechnungsKundenNr"
                sqlstr &= " WHERE 1=1 "

                sqlstr &= getRGWhere(cboER_SR._value, FilialNrRestriction)
                '  sqlstr &= " AND (SteuerpflichtigerGesamtbetrag<>0 OR SteuerfreierGesamtbetrag<>0)"
                sqlstr &= " ORDER BY FilialenNr, AbfertigungsNr, UnterNr "
            End If

            .SET_SQL(sqlstr, "FMZOLL")
            .LOAD()
            If .ColumnCount > 0 Then
                .Columns("RK_ID").Visible = False
                .Columns("FilialenNr").Visible = False
                .Columns("AbfertigungsNr").Visible = False
                .Columns("Firma_ID").Visible = False
                .Columns("RechnungsLandKz").Visible = False
                .Columns("RechnungsKundenNr").Visible = False
                .Columns("PosNr").HeaderText = "Pos-Nr."

                If .Columns.Contains("BelegartenKz") Then
                    .Columns("BelegartenKz").Visible = False
                End If

                If .Columns.Contains("ReNr") Then

                    If cbx.Checked Then
                        .Columns("ReNr").Visible = True
                    Else
                        .Columns("ReNr").Visible = False
                    End If

                End If

                If .Columns.Contains("AUTO_sent") Then
                    .Columns("AUTO_sent").Width = 40
                    If cboRechnungsdruck._value <> "6" Then
                        .Columns("AUTO_sent").Visible = False
                    Else
                        .Columns("AUTO_sent").Visible = True
                    End If
                End If

                .Columns("UnterNr").Width = 35
                .Columns("Art").Width = 30
                .Columns("Betrag").Width = 100
                .Columns("Rechnungsempfänger").MinimumWidth = 150
                .Columns("Rechnungsempfänger").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill

                If Not cbxGutschriftenAnVerag.Checked Then
                    .Columns("Rechnungsdruck").Width = 60
                    .Columns("Rechnungsdruck").HeaderText = "Rg.Art"
                    .Columns("Rechnungsdruck").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
                End If


                .Columns("Betrag").DefaultCellStyle.Format = "C2"
            End If

            If cboFirma._value <> "" AndAlso cboFirma._value = "19" Then

                For Each r In .Rows

                    If r.Cells("Betrag").Value IsNot DBNull.Value AndAlso IsNumeric(r.Cells("Betrag").Value) Then
                        Select Case r.Cells("BelegartenKz").Value.ToString
                            Case "AR" : If r.Cells("Betrag").Value < 0 Then
                                    r.DefaultCellStyle.ForeColor = Color.Red
                                Else
                                    r.DefaultCellStyle.ForeColor = Color.Black
                                End If
                            Case "AG" : If r.Cells("Betrag").Value < 0 Then
                                    r.DefaultCellStyle.ForeColor = Color.Red
                                Else
                                    r.DefaultCellStyle.ForeColor = Color.Black
                                End If
                        End Select

                    End If

                Next

            End If

        End With
    End Sub

    Function getRGWhere(filterSR As String, Optional filialenNr As Integer = -1)
        Dim sqlstr = ""
        Dim srchSB = "" ' "NÖBAUER ANJA" 'VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME

        Dim enableAUTOMAIL As Boolean = True
        Dim enableAUTOMAIL_BTN As Boolean = False

        srchSB = cboSachbearbeiter._value

        If cbxGutschriftenAnVerag.Checked AndAlso cboFirma._value <> "" AndAlso cboFirma._value = 24 Then Return sqlstr

        Select Case filterSR
            Case "ER" : sqlstr &= " And Rechnungsausgang.Sammelrechnung IN (0) "
            Case "SR" : sqlstr &= " And Rechnungsausgang.Sammelrechnung NOT IN (0,6) " : enableAUTOMAIL = False
            Case "MSR" : sqlstr &= " And Rechnungsausgang.Sammelrechnung IN (6) " : enableAUTOMAIL = False
            Case Else : sqlstr &= " And Rechnungsausgang.Sammelrechnung NOT IN (6)  " : enableAUTOMAIL = False
        End Select


        If filialenNr > 0 Then
            sqlstr &= " AND Rechnungsausgang.FilialenNr = " & filialenNr
        End If


        If cbx.Checked Then
            enableAUTOMAIL = False
            'sqlstr &= " AND Status = 0 "
            sqlstr &= " AND DruckDatumZeit BETWEEN '" & txtAbfertDat._value & " 00:00:00' AND '" & txtAbfertDatBis._value & " 23:59:59'"
            sqlstr &= IIf(filterSR = "MSR", " And (Status = 4)", "")

            If MyTextBox2.Text <> "" Then
                If MyTextBox3.Text <> "" Then
                    sqlstr &= " AND RechnungsNr BETWEEN '" & MyTextBox2.Text.Replace("*", "%") & "' AND '" & MyTextBox3.Text.Replace("*", "%") & "'"
                Else
                    sqlstr &= " AND RechnungsNr LIKE '" & MyTextBox2.Text.Replace("*", "%") & "'"
                End If
            End If
        Else
            sqlstr &= IIf(filterSR = "MSR", " And ((Status = 0 or Status = 2) or DruckDatumZeit is null)", " And (Status = 0 or DruckDatumZeit is null) ")
        End If

        If cboRechnungsdruck._value <> "" Then
            Select Case cboRechnungsdruck._value
                Case 6 : sqlstr &= " And isnull(Automailversand,0)=1 " : enableAUTOMAIL_BTN = True
                Case 2 : sqlstr &= " And Rechnungsdruck='" & cboRechnungsdruck._value & "' And isnull(Automailversand,0)=0" : enableAUTOMAIL_BTN = True
                Case 5 : sqlstr &= " And Rechnungsdruck='" & cboRechnungsdruck._value & "' And isnull(Automailversand,0)=0" : enableAUTOMAIL_BTN = False
                Case Else
                    sqlstr &= " And Rechnungsdruck='" & cboRechnungsdruck._value & "' And isnull(Automailversand,0)=0 " : enableAUTOMAIL = False
            End Select
        Else
            enableAUTOMAIL = False
        End If
        If srchSB <> "" Then sqlstr &= " And Rechnungsausgang.Sachbearbeiter='" & srchSB & "' "
        If cboFirma._value <> "" Then sqlstr &= " AND Rechnungsausgang.Firma_ID=" & cboFirma._value & " "

        If KdSearchBox1.KdNr_value > 0 Then sqlstr &= " AND Rechnungsausgang.RechnungsKundenNr=" & KdSearchBox1.KdNr_value & " "

        'UsrCntlFaktAbrechnung1.cbxAUTOMailversand.Enabled = enableAUTOMAIL
        btn_doMailAutoversand.Visible = enableAUTOMAIL_BTN AndAlso enableAUTOMAIL
        Button11.Visible = Not (enableAUTOMAIL_BTN AndAlso enableAUTOMAIL)
        Button7.Visible = Not (enableAUTOMAIL_BTN AndAlso enableAUTOMAIL)
        Button8.Visible = Not (enableAUTOMAIL_BTN AndAlso enableAUTOMAIL)
        Button9.Visible = Not (enableAUTOMAIL_BTN AndAlso enableAUTOMAIL)


        '  sqlstr &= " AND (SteuerpflichtigerGesamtbetrag<>0 OR SteuerfreierGesamtbetrag<>0)"
        Return sqlstr
    End Function
    Private Sub MyComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboFirma.SelectedIndexChanged, cboSachbearbeiter.SelectedIndexChanged, cboER_SR.SelectedIndexChanged, cboRechnungsdruck.SelectedIndexChanged

        If cboFirma._value = "24" Then

            cbxGutschriftenAnVerag.Visible = True
        Else
            cbxGutschriftenAnVerag.Visible = False
            cbxGutschriftenAnVerag.Checked = False
        End If

        If sender Is cboER_SR Then

            lblKunde.Visible = True 'cboER_SR._value = "MSR"
            KdSearchBox1.Visible = True 'cboER_SR._value = "MSR"

            'If KdSearchBox1.KdNr_value > 0 AndAlso cboER_SR._value <> "MSR" Then 'KdSearchBox1.KdNr_value > 0 AndAlso cboER_SR._value <> "MSR"
            '    KdSearchBox1.KdNr_value = -1

            'End If

            If KdSearchBox1.KdNr_value > 0 Then
                KdSearchBox1.KdNr_value = -1

            End If


        End If

        If cboRechnungsdruck._value <> "" Then



        End If

        initDGV()
    End Sub
    Function checkSrchValues() As Boolean
        'If MyComboBox2._value = "" Then Return False
        If cboFirma._value = "" Then Return False
        Return True
    End Function


    Private Sub MyDatagridview1_SelectionChanged(sender As Object, e As EventArgs) Handles dgvRechnungen.SelectionChanged
        If Not selChangedAllowed Then Exit Sub
        If sender.SelectedRows.Count > 0 Then
            If UsrCntlFaktAbrechnung1.SAVED Then
                UsrCntlFaktAbrechnung1.initRECHNUNG(sender.SelectedRows(0).Cells("RK_ID").Value)
                Exit Sub
            End If

        End If
        newRechnung()

    End Sub


    Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
        newRechnung()
    End Sub


    Private Sub UsrCntlFaktAbrechnung1_EVENT_SAVED() Handles UsrCntlFaktAbrechnung1.EVENT_SAVED
        selChangedAllowed = False
        getDGV().RELOAD()
        selChangedAllowed = True
    End Sub

    Private Sub UsrCntlFaktAbrechnung1_EVENT_DELETED() Handles UsrCntlFaktAbrechnung1.EVENT_DELETED
        selChangedAllowed = False
        getDGV().RELOAD()
        selChangedAllowed = True
        newRechnung()
    End Sub

    Private Sub UsrCntlFaktAbrechnung1_SOMETHING_CHANGED(rk_id) Handles UsrCntlFaktAbrechnung1.SOMETHING_CHANGED
        selChangedAllowed = False
        getDGV().RELOAD()
        dgvRechnungen.ClearSelection()
        selChangedAllowed = True
        If rk_id > 0 Then
            For Each r As DataGridViewRow In dgvRechnungen.Rows
                If r.Cells("RK_ID").Value = rk_id Then
                    r.Selected = True
                    Exit Sub
                End If
            Next
        End If
    End Sub



    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If checkSrchValues() Then
            getDGV().RELOAD()
            Dim orderBy = ""
            Select Case cboSort._value
                Case "EZ" : orderBy = " ORDER BY [ReErfZeitstempel] ASC"
                Case Else : orderBy = " ORDER BY /*[BelegartenKz] DESC,*/ FilialenNr, AbfertigungsNr, [RK_ID]"
            End Select

            'MsgBox("SELECT RK_ID,Rechnungsdruck as Rechnungsdruck FROM Rechnungsausgang INNER JOIN Adressen ON AdressenNr=RechnungsKundenNr WHERE Status=0 " & getRGWhere("ER") & orderBy)
            'Exit Sub

            Dim PARAM_printZollbeleg = VERAG_PROG_ALLGEMEIN.cAllgemein.PARAMS.GET_PARAMETER_VALUE_BOOL("FAKTURIERUNG_PRINT_Zollbeleg")
            Dim dt = SQL.loadDgvBySql("SELECT RK_ID,Rechnungsdruck as Rechnungsdruck FROM Rechnungsausgang INNER JOIN Adressen ON AdressenNr=RechnungsKundenNr WHERE Status=0 " & getRGWhere("ER", FilialNrRestriction) & orderBy, "FMZOLL")

            If dt IsNot Nothing Then
                If vbYes = MsgBox("Es werden " & dt.Rows.Count & " Rechnungen gedruckt." & vbNewLine & "Möchten Sie fortfahren?", vbYesNoCancel) Then
                    Dim RechnungsDatum As Date = Now
                    If cFakturierung.getRgDatInput("Es werden " & dt.Rows.Count & " Rechnungen gedruckt." & vbNewLine & "Möchten Sie fortfahren?" & vbNewLine, [RechnungsDatum]) Then 'Now.ToShortDateString
                        For Each r In dt.Rows
                            If r("Rechnungsdruck") = "2" Or r("Rechnungsdruck") = "5" Then
                                cFakturierung.doRechnungsDruck_MAIL(r("RK_ID"), RechnungsDatum,, r("Rechnungsdruck"),, cboPrinter.Text,, PARAM_printZollbeleg)
                            Else
                                cFakturierung.doRechnungsDruck(r("RK_ID"), RechnungsDatum,,,, cboPrinter.Text,, PARAM_printZollbeleg)
                            End If
                        Next
                        initDGV()
                    End If
                End If
            End If
        End If
    End Sub



    Function print_Anlagen() As Boolean
        Dim erg = True
        Dim dt = SQL.loadDgvBySql("SELECT RK_ID FROM Rechnungsausgang WHERE Status=0 " & getRGWhere("SR", FilialNrRestriction) & " ORDER BY [BelegartenKz] DESC, FilialenNr, AbfertigungsNr, [RK_ID]", "FMZOLL")
        If dt IsNot Nothing Then
            If vbYes = MsgBox("Es werden " & dt.Rows.Count & " Rechnungen gedruckt." & vbNewLine & "Möchten Sie fortfahren?", vbYesNoCancel) Then
                For Each r In dt.Rows
                    If Not cFakturierung.doRechnungsDruck(r("RK_ID"),,,, cboPrinter.Text) Then erg = False
                Next
            End If
        End If
        Return erg


        '        strLinkCriteria = "[Status]=1 And [DruckDatumZeit]=" & Format$(varDatumZeit, "\#mm\/dd\/yyyy hh\:nn\:ss AM/PM\#") & " And [Rechnungsdruck]=0"
        '970      DoCmd.OpenReport "Rechnungen drucken", acNormal, , strLinkCriteria

        '980      bytRechnungsdrucksteuerung = 0
        '990      strLinkCriteria = "[Status]=1 And [DruckDatumZeit]=" & Format$(varDatumZeit, "\#mm\/dd\/yyyy hh\:nn\:ss AM/PM\#") & " And [Rechnungsdruck]<>0"
        '1000     DoCmd.OpenReport "Rechnungen drucken A4", acNormal, , strLinkCriteria

        '1010     strLinkCriteria = "[Status]=1 And [DruckDatumZeit]=" & Format$(varDatumZeit, "\#mm\/dd\/yyyy hh\:nn\:ss AM/PM\#")
        '1020     DoCmd.OpenReport "Tages-Umsatz-Journal drucken (Einzelrechnungen)", acNormal, , strLinkCriteria

        '1030     strLinkCriteria = "[Status]=2 And [DruckDatumZeit]=" & Format$(varDatumZeit, "\#mm\/dd\/yyyy hh\:nn\:ss AM/PM\#")
        '1040     DoCmd.OpenReport "Anlage zur Sammelrechnung drucken", acNormal, , strLinkCriteria


    End Function

    'Private Sub Button5_Click2(sender As Object, e As EventArgs)
    '    If checkSrchValues() Then
    '        If vbYes = MsgBox("Es werden " & MyDatagridview1.SelectedRows.Count & " Rechnungen gedruckt." & vbNewLine & "Möchten Sie fortfahren?", vbYesNoCancel) Then

    '            For Each r As DataGridViewRow In MyDatagridview1.SelectedRows
    '                cFakturierung.doRechnungsDruck(r.Cells("RK_ID").Value,,,, cboPrinter.Text)
    '            Next
    '        End If
    '    End If
    'End Sub

    Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
        'If checkSrchValues() Then
        '    print_Anlagen()
        '    initDGV()
        'End If
        If checkSrchValues() Then
            Dim f As New frmFaktSammelRgDrucken(cboFirma._value)
            f.ShowDialog(Me)
            getDGV().RELOAD()
            If dgvRechnungen.Rows.Count = 0 Then newRechnung()
        End If
    End Sub

    Private Sub tbcntr_SelectedIndexChanged(sender As Object, e As EventArgs) Handles tbcntr.SelectedIndexChanged
        initDGV()
    End Sub

    Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
        If dgvRechnungen.SelectedRows.Count > 0 Then
            '  getDGV().RELOAD() -> hebt Selektierung auf
            If vbYes = MsgBox("Es werden " & dgvRechnungen.SelectedRows.Count & " Rechnungen in ein PDF gewandelt." & vbNewLine & "Möchten Sie fortfahren?", vbYesNoCancel) Then

                'Rechnungsdatum festlegen:
                Dim RechnungsDatumTMP As Object = Nothing
                If Not cbx.Checked Then 'GedruckteRechnugnen
                    RechnungsDatumTMP = Now
                    cFakturierung.getRgDatInput("", RechnungsDatumTMP)
                End If



                Dim list As New List(Of String) ' Sammlung PDFs

                For Each r As DataGridViewRow In dgvRechnungen.SelectedRows
                    Dim path = ""
                    cFakturierung.doRechnungsDruck(r.Cells("RK_ID").Value, RechnungsDatumTMP,, 4, path, cboPrinter.Text, cbxOriginalDrucken.Checked)
                    If path <> "" Then list.Add(path)
                Next

                If list.Count = 1 Then
                    Process.Start(list(0))
                Else
                    Dim dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("VERAG_Formular.pdf", ".pdf", False, False)
                    If Not FormularManagerNEU.MergePdfFiles(list, dest_path) Then
                        dest_path = "" : MsgBox("Fehler PDF")
                    Else
                        Process.Start(dest_path)
                    End If
                End If
                'merge PDFs path
                initDGV()
            End If
        End If
    End Sub

    Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click, Button11.Click
        '  getDGV().RELOAD() -> hebt Selektierung auf
        For Each r As DataGridViewRow In dgvRechnungen.SelectedRows
            If r.Cells("Art").Value <> "0" Then
                MsgBox("Nur bei Einzelrechnung")
                Exit Sub
            End If
        Next

        If dgvRechnungen.SelectedRows.Count = 1 Then
            Try
                Dim RECHNUNG As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(dgvRechnungen.SelectedRows(0).Cells("RK_ID").Value)
                Dim SPEDBUCH As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(RECHNUNG.FilialenNr, RECHNUNG.AbfertigungsNr, RECHNUNG.SpeditionsbuchUnterNr)
                If SPEDBUCH IsNot Nothing Then


                    'RG-Druck - Mail (+Kopie)
                    Dim RG_DRUCK = 2
                    If sender Is Button11 Then
                        RG_DRUCK = 5
                    End If

                    Dim f As New frmFaktEmail(RECHNUNG, SPEDBUCH, True, RG_DRUCK, RECHNUNG.Firma_ID)
                    f.ShowDialog(Me)

                End If

                'merge PDFs path
                initDGV()
            Catch ex As Exception
                MsgBox("Fehler beim Öffnen des Mail-Fensters!" & vbNewLine & vbNewLine & ex.StackTrace & ex.Message)
            End Try

        ElseIf dgvRechnungen.SelectedRows.Count > 1 Then

            If vbYes = MsgBox("Es werden " & dgvRechnungen.SelectedRows.Count & " Rechnungen ans Mail angefügt." & vbNewLine & "Möchten Sie fortfahren?", vbYesNoCancel) Then

                'Rechnungsdatum festlegen:
                Dim RechnungsDatumTMP As Object = Nothing
                If Not cbx.Checked Then 'GedruckteRechnugnen
                    RechnungsDatumTMP = Now
                    cFakturierung.getRgDatInput("", RechnungsDatumTMP)
                End If




                Dim list As New List(Of String) ' Sammlung PDFs

                For Each r As DataGridViewRow In dgvRechnungen.SelectedRows
                    Dim path = ""
                    cFakturierung.doRechnungsDruck(r.Cells("RK_ID").Value, RechnungsDatumTMP,, 4, path, cboPrinter.Text)
                    If path <> "" Then list.Add(path)
                Next

                Try


                    Dim outl As New Outlook.Application
                    Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
                    Mail = outl.CreateItem(0)
                    Dim RechnungsLandKz = getSelection("RechnungsLandKz")

                    Select Case RechnungsLandKz
                        Case "TR"
                            Mail.Subject = "Rechnungen " & cboFirma.Text
                            Mail.HTMLBody = "Sayin Bayanlar ve Baylar,<br><br>ekte baslikta yazan faturayi bulabilirsinz."
                            Mail.HTMLBody &= "<br><br><br>Saygilarimizla<br><br>" & cFakturierung.getSignature(RechnungsLandKz, cboFirma._value)
                        Case "A", "AT", "D", "DE", "CH"
                            Mail.Subject = "Rechnungen " & cboFirma.Text
                            Mail.HTMLBody = "Sehr geehrte Damen und Herren,<br><br>im Anhang senden wir Ihnen unsere Rechnungen."
                            Mail.HTMLBody &= "<br><br><br>Mit freundlichen Grüßen<br><br>" & cFakturierung.getSignature(RechnungsLandKz, cboFirma._value)
                        Case Else
                            Mail.Subject = "Invoice " & cboFirma.Text
                            Mail.HTMLBody = "Sehr geehrte Damen und Herren,<br><br>attached we send you the invoices."
                            Mail.HTMLBody &= "<br><br><br>Best regards<br><br>" & cFakturierung.getSignature(RechnungsLandKz, cboFirma._value)
                    End Select
                    Mail.HTMLBody = "<div style=""font-family:Calibri, Arial"">" & Mail.HTMLBody & "</div>"
                    Dim KdNrTmp = getSelectionKdNr()

                    Dim emai_receipt As String = ""

                    If getSelection("FilialenNr") = "4801" Or getSelection("FilialenNr") = "4802" Then emai_receipt = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(If(IsNumeric(KdNrTmp), KdNrTmp, -1), "Rechnung an (ATILLA)")

                    Mail.To = IIf(emai_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(If(IsNumeric(KdNrTmp), KdNrTmp, -1), "Rechnung an"), emai_receipt)

                    Mail.Display()


                    If list.Count > 0 Then
                        For Each l In list
                            Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , "Invoice.pdf")
                        Next
                    End If

                    Mail.Display()

                Catch ex As Exception
                    MsgBox("Fehler beim Öffnen des Mail-Programmes. PDF wird geladen!" & vbNewLine & vbNewLine & ex.StackTrace & ex.Message)

                    If list.Count = 1 Then
                        Process.Start(list(0))
                    Else
                        Dim dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("Invoice.pdf", ".pdf", False, False)
                        If Not FormularManagerNEU.MergePdfFiles(list, dest_path) Then
                            dest_path = "" : MsgBox("Fehler PDF")
                        Else
                            Process.Start(dest_path)
                        End If
                    End If

                End Try

                'merge PDFs path
                initDGV()
            End If
        End If
    End Sub

    Function getSelectionKdNr() As String
        getSelectionKdNr = ""
        If dgvRechnungen.SelectedRows.Count > 0 Then
            If dgvRechnungen.SelectedRows.Count = dgvRechnungen.Rows.Count Then Return "" ' Alle ausgewählt

            For Each r As DataGridViewRow In dgvRechnungen.SelectedRows
                getSelectionKdNr &= r.Cells("RechnungsKundenNr").Value & ","
            Next
            getSelectionKdNr = getSelectionKdNr.Substring(0, getSelectionKdNr.Length - 1)
        End If
    End Function

    Function getSelection(value) As String
        getSelection = ""
        If dgvRechnungen.SelectedRows.Count > 0 Then
            getSelection = dgvRechnungen.SelectedRows(0).Cells(value).Value
            For Each r As DataGridViewRow In dgvRechnungen.SelectedRows
                If getSelection <> r.Cells(value).Value Then Return ""
            Next
        End If
    End Function

    Private Sub Button7_Click2(sender As Object, e As EventArgs) Handles Button7.Click
        If dgvRechnungen.SelectedRows.Count > 0 Then
            '  getDGV().RELOAD() -> hebt Selektierung auf
            If vbYes = MsgBox("Es werden " & dgvRechnungen.SelectedRows.Count & " Rechnungen gedruckt." & vbNewLine & "Möchten Sie fortfahren?", vbYesNoCancel) Then

                'Rechnungsdatum festlegen:
                Dim RechnungsDatumTMP As Object = Nothing
                If Not cbx.Checked Then 'GedruckteRechnugnen
                    RechnungsDatumTMP = Now
                    cFakturierung.getRgDatInput("", RechnungsDatumTMP)
                End If



                Dim PARAM_printZollbeleg = VERAG_PROG_ALLGEMEIN.cAllgemein.PARAMS.GET_PARAMETER_VALUE_BOOL("FAKTURIERUNG_PRINT_Zollbeleg")

                For Each r As DataGridViewRow In dgvRechnungen.SelectedRows
                    cFakturierung.doRechnungsDruck(r.Cells("RK_ID").Value, RechnungsDatumTMP,, 0, , cboPrinter.Text, cbxOriginalDrucken.Checked,  , PARAM_printZollbeleg)
                Next
                'merge PDFs path
                initDGV()
            End If
        End If
    End Sub

    Private Sub cbx_CheckedChanged(sender As Object, e As EventArgs) Handles cbx.CheckedChanged
        cbxOriginalDrucken.Checked = False

        If cbx.Checked Then
            Panel1.Height = 170
            cbxOriginalDrucken.Visible = True
        Else
            Panel1.Height = 80
            cbxOriginalDrucken.Visible = False
        End If
        MyPanel1.Visible = cbx.Checked
        initDGV()
    End Sub

    Dim MONAT As Date = CDate("01." & Now.Month & "." & Now.Year) '.AddMonths(-1)
    Dim srcTAG As Date = CDate(Now.ToShortDateString)
    Dim JAHR As Date = CDate("01.01." & Now.Year)


    Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged
        txtAbfertDat._value = CDate(sender.value).ToShortDateString
    End Sub

    Private Sub DateTimePicker2_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker2.ValueChanged
        txtAbfertDatBis._value = CDate(sender.value).ToShortDateString
    End Sub

    Sub initBtns(MonatJahr)
        btnMonat.Text = MONAT.ToString("MMMM")
        btnJahr.Text = JAHR.Year
        Select Case MonatJahr
            Case "Monat"
                DateTimePicker1.Value = MONAT
                DateTimePicker2.Value = MONAT.AddMonths(1).AddDays(-1)
            Case "Jahr"
                '  If cbxGeschaftsjahr.Checked Then
                'DateTimePicker1.Value = JAHR.AddMonths(1)
                ' DateTimePicker2.Value = JAHR.AddYears(1).AddMonths(1).AddDays(-1)
                ' Else
                DateTimePicker1.Value = JAHR
                DateTimePicker2.Value = JAHR.AddYears(1).AddDays(-1)
                'End If
            Case "Tag"
                '  If cbxGeschaftsjahr.Checked Then
                'DateTimePicker1.Value = JAHR.AddMonths(1)
                ' DateTimePicker2.Value = JAHR.AddYears(1).AddMonths(1).AddDays(-1)
                ' Else
                DateTimePicker1.Value = srcTAG
                DateTimePicker2.Value = srcTAG
                If srcTAG = Now.ToShortDateString Then
                    Button5.Text = "Heute"
                ElseIf srcTAG = Now.AddDays(-1).ToShortDateString Then
                    Button5.Text = "Gestern"
                ElseIf srcTAG = Now.AddDays(-2).ToShortDateString Then
                    Button5.Text = "Vorgestern"
                Else
                    Button5.Text = srcTAG.ToString("dd.MM")
                End If

                'End If

            Case ""
                '  DateTimePicker1.Value = ("01." & Now.Month & "." & Now.Year)
                '  DateTimePicker2.Value = Now
        End Select
        initDGV()
    End Sub
    Private Sub btnMonat_Click(sender As Object, e As EventArgs) Handles btnMonat.Click
        initBtns("Monat")
    End Sub
    Private Sub btnJahr_Click(sender As Object, e As EventArgs) Handles btnJahr.Click
        initBtns("Jahr")
    End Sub

    Private Sub btnBisMonat_Click(sender As Object, e As EventArgs) Handles btnBisMonat.Click
        MONAT = MONAT.AddMonths(1)
        initBtns("Monat")
    End Sub

    Private Sub btnVonMonat_Click(sender As Object, e As EventArgs) Handles btnVonMonat.Click
        MONAT = MONAT.AddMonths(-1)
        initBtns("Monat")
    End Sub

    Private Sub btnBisJahr_Click(sender As Object, e As EventArgs) Handles btnBisJahr.Click
        JAHR = JAHR.AddYears(1)
        initBtns("Jahr")
    End Sub

    Private Sub btnVonJahr_Click(sender As Object, e As EventArgs) Handles btnVonJahr.Click
        JAHR = JAHR.AddYears(-1)
        initBtns("Jahr")
    End Sub

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
        srcTAG = srcTAG.AddDays(-1)
        initBtns("Tag")
    End Sub


    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        initBtns("Tag")
    End Sub


    Private Sub txtAbfertDat_Leave(sender As Object, e As EventArgs) Handles txtAbfertDat.Leave, txtAbfertDatBis.Leave
        initBtns("")
    End Sub

    Private Sub MyTextBox2_KeyDown(sender As Object, e As KeyEventArgs) Handles MyTextBox2.KeyDown, MyTextBox3.KeyDown
        If e.KeyCode = Keys.Return Then
            initBtns("")
        End If
    End Sub
    Private Sub MyTextBox3_Leave(sender As Object, e As EventArgs) Handles MyTextBox2.Leave, MyTextBox3.Leave
        initBtns("")
    End Sub

    Private Sub MyTextBox2_TextChanged(sender As Object, e As EventArgs) Handles MyTextBox2.TextChanged
        MyTextBox3.Enabled = (MyTextBox2.Text <> "")
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles btnWiederholeRgDruck.Click

        ContextMenuStrip1.Items.Clear()

        If Not ContextMenuStrip1.Items.ContainsKey("1") Then
            Dim print = New ToolStripMenuItem() With {.Text = "Drucken", .Name = "1", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
            AddHandler print.Click, AddressOf mnuItem_Clicked
            If cboFirma._value <> 19 Then ContextMenuStrip1.Items.Add(print)
        End If

        If Not ContextMenuStrip1.Items.ContainsKey("2") Then
            Dim mail = New ToolStripMenuItem() With {.Text = "E-Mail", .Name = "2", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
            ContextMenuStrip1.Items.Add(mail)
            AddHandler mail.Click, AddressOf mnuItem_Clicked
        End If

        If Not ContextMenuStrip1.Items.ContainsKey("3") Then
            Dim pdf = New ToolStripMenuItem() With {.Text = "PDF", .Name = "3", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
            AddHandler pdf.Click, AddressOf mnuItem_Clicked
            ContextMenuStrip1.Items.Add(pdf)
        End If

        ContextMenuStrip1.Show(Cursor.Position)

    End Sub

    Private Sub mnuItem_Clicked(sender As Object, e As EventArgs)
        ContextMenuStrip1.Hide()
        Dim id = 3 'default per PDF
        Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)

        If item IsNot Nothing Then id = item.Name

        Dim SR_RechnungsNr = InputBox("SR-Nummer eingeben: ", "Rechnungsdruck - " & IIf(item.Text IsNot Nothing, item.Text, "PDF"))
        If IsNumeric(SR_RechnungsNr) Then
            Dim RK_ID = SQL.getValueTxtBySql("SELECT TOP 1 RK_ID FROM Rechnungsausgang WHERE RechnungsNr='" & SR_RechnungsNr & "' AND Firma_ID='" & cboFirma._value & "' ORDER BY DruckDatumZeit DESC", "FMZOLL")
            If IsNumeric(RK_ID) Then
                Dim RG_TMP As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(RK_ID)
                Dim sammelrechnungskopieMDM As Boolean = False
                Dim sammelrechnungMDMmitAnhang As Boolean = False
                If RG_TMP IsNot Nothing Then
                    'id mitübergeben (1_> drucken, 2 Email, 3 PDF)
                    If RG_TMP.Sammelrechnung = 6 Then
                        If RG_TMP.Status = 4 Then sammelrechnungskopieMDM = True
                        Dim tempPDF As String = ""
                        Dim listOfCSV As New List(Of String)
                        sammelrechnungMDMmitAnhang = MsgBox("Soll die MDM Sammelrechnung mit Anhang angezeigt werden?", vbYesNoCancel)
                        cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 8, tempPDF, True,,,,,,,,, sammelrechnungMDMmitAnhang, sammelrechnungskopieMDM, listOfCSV, True)

                        Select Case id
                            Case 1
                               'aktuell keine Funktion PDF direkt zu drucken!
                            Case 2
                                Try
                                    Dim outl As New Outlook.Application
                                    Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
                                    Mail = outl.CreateItem(0)
                                    Mail.Attachments.Add(tempPDF, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , "Rechnung _" & RG_TMP.RechnungsNr & ".pdf")
                                    If listOfCSV.Count > 0 Then
                                        For Each r In listOfCSV
                                            Dim file As New FileInfo(r)
                                            Mail.Attachments.Add(r, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , file.Name)
                                        Next
                                    End If
                                    Mail.Display()

                                Catch ex As Exception
                                    MsgBox("Fehler bim Öffnen des Mail-Programmes. PDF wird geladen!")
                                    Process.Start(tempPDF)
                                End Try

                            Case 3 'PDF + öffnen
                                Process.Start(tempPDF)

                        End Select


                    Else
                        cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, id,, True,,,,,,,,,)
                    End If


                End If
            End If
        End If

    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim f As New frmFaktAufschubSuche(False)
        f.Show(Me)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        srcTAG = srcTAG.AddDays(1)
        initBtns("Tag")
    End Sub

    Private Sub cbxGutschriftenAnVerag_CheckedChanged(sender As Object, e As EventArgs) Handles cbxGutschriftenAnVerag.CheckedChanged

        Panel1.Height = 80
        cbxOriginalDrucken.Visible = False
        MyPanel1.Visible = False
        initDGV()
    End Sub

    Private Sub PictureBox5_Click(sender As Object, e As EventArgs) Handles PictureBox5.Click
        Dim webAddress As String = "https://wiki.verag.ag/de/abteilungen/verrechnung/xxxx"
        Process.Start(webAddress)
    End Sub

    Private Sub btn_doMailAutoversand_Click(sender As Object, e As EventArgs) Handles btn_doMailAutoversand.Click


        If dgvRechnungen.SelectedRows.Count > 0 Then

            If Not cAutomailversand.automRechnungsversand_durchführen Then Exit Sub

            Dim ListOfRK_ID As New List(Of Integer)

            Dim noRE_DATE = dgvRechnungen.SelectedRows.Cast(Of DataGridViewRow)().Any(Function(r) r.Cells("RENR").Value Is Nothing OrElse IsDBNull(r.Cells("RENR").Value) OrElse (r.Cells("RENR").Value) <> "-")

            If noRE_DATE Then MsgBox("ACHTUNG, Rechnungsdatum wurde nicht gesetzt." & vbNewLine & "Vorgang wird abgebrochen!") : Exit Sub

            For Each row As DataGridViewRow In dgvRechnungen.SelectedRows

                If Not IsDBNull(row.Cells("RK_ID").Value) AndAlso IsNumeric(row.Cells("RK_ID").Value) Then
                    ListOfRK_ID.Add(CInt(row.Cells("RK_ID").Value))
                End If

            Next

            Dim fun As New cAutomailversand
            fun.sendMailEinzelrechnungen(cboFirma._value, Today(), cboSachbearbeiter._value, ListOfRK_ID)
            initDGV()

        End If


    End Sub
End Class