Imports TAlex.WPF.Helpers

Public Class frmRechnungenSuche
    Dim SQL As New SQL
    Dim brexitXLS = False

    Private Sub btnSuche_Click(sender As Object, e As EventArgs) Handles btnSuche.Click
        Me.Cursor = Cursors.WaitCursor

        Dim sqlstr As String = ""
        Dim TopMax = If(IsNumeric(txtMaxSrch.Text), " TOP " & txtMaxSrch.Text, "")
        sqlstr &= "SELECT " & TopMax & " RK_ID,[RechnungsNr],cast([RechnungsDatum] as date) RechnungsDatum, Sammelrechnung, [FilialenNr],[AbfertigungsNr],[UnterNr],cast(Abfertigungsdatum as date) Abfertigungsdatum,  isnull(cast(RechnungsKundenNr as nvarchar(10)) + ' ','') + [RechnungsName 1] as [RechnungAn], " &
                " /* isnull(cast([AbsenderKundenNr] as nvarchar(10)) + ' ','') + [AbsenderName 1] as Absender,isnull(cast([EmpfängerKundenNr] as nvarchar(10)) + ' ','') + [EmpfängerName 1] as Empfänger,*/ isnull(cast([VermittlerKundenNr] as nvarchar(10)) + ' ','') + [VermittlerName 1] as Vermittler, [LKW Kennzeichen],Sachbearbeiter,[SteuerpflichtigerGesamtbetrag],[SteuerfreierGesamtbetrag], isnull(zugferdcheck,0) as ZUGFeRD " &
                " FROM [Rechnungsausgang] WHERE 1=1 "

        With DataGridView
            '  .DataSource = myTable
            '   MsgBox(sqlstr & getRechnungsAusgangWhere() & " ORDER BY Rechnungsdatum, RK_ID")
            .SET_SQL(sqlstr & getRechnungsAusgangWhere() & " ORDER BY Rechnungsdatum, RK_ID", "FMZOLL", getSpedbuchList)
            .LOAD()

            If .RowCount = 0 Then Me.Cursor = Cursors.Default : Exit Sub
            .RowHeadersVisible = False
            .ReadOnly = True
            .SelectionMode = DataGridViewSelectionMode.FullRowSelect
            '  .MultiSelect = False

            .Columns("RK_ID").Visible = False

            .Columns("RechnungsNr").Width = 70
            .Columns("RechnungsNr").HeaderText = "Rechnugs-Nr"
            .Columns("RechnungsNr").HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
            .Columns("RechnungsNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter

            .Columns("RechnungsDatum").Width = 100
            .Columns("RechnungsDatum").HeaderText = "Rg-Dat."
            .Columns("RechnungsDatum").HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
            .Columns("RechnungsDatum").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter

            .Columns("Sammelrechnung").Width = 45
            .Columns("Sammelrechnung").HeaderText = "SR"

            .Columns("FilialenNr").Width = 45
            .Columns("FilialenNr").HeaderText = "Filiale"
            .Columns("FilialenNr").HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
            .Columns("FilialenNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
            .Columns("AbfertigungsNr").Width = 70
            .Columns("AbfertigungsNr").HeaderText = "Abf-Nr"
            .Columns("AbfertigungsNr").HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
            .Columns("AbfertigungsNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
            .Columns("UnterNr").Width = 45
            .Columns("UnterNr").HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
            .Columns("UnterNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
            .Columns("Abfertigungsdatum").Width = 100
            .Columns("Abfertigungsdatum").HeaderText = "Abf-Dat."
            .Columns("Abfertigungsdatum").HeaderCell.Style.Alignment = DataGridViewContentAlignment.TopCenter
            .Columns("Abfertigungsdatum").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter

            .Columns("RechnungAn").MinimumWidth = 150
            .Columns("RechnungAn").HeaderText = "Rechnung an"
            .Columns("RechnungAn").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill

            '.Columns("Absender").MinimumWidth = 150
            '.Columns("Absender").HeaderText = "Absender"
            '.Columns("Absender").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill

            .Columns("Vermittler").MinimumWidth = 150
            .Columns("Vermittler").HeaderText = "Auftraggeber"
            .Columns("Vermittler").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill

            '.Columns("Empfänger").MinimumWidth = 150
            '.Columns("Empfänger").HeaderText = "Empfänger"
            '.Columns("Empfänger").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill

            .Columns("LKW Kennzeichen").Width = 120
            .Columns("LKW Kennzeichen").HeaderText = "LKW Kennzeichen"

            .Columns("Sachbearbeiter").MinimumWidth = 100
            .Columns("Sachbearbeiter").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill

            .Columns("SteuerpflichtigerGesamtbetrag").Width = 120
            .Columns("SteuerpflichtigerGesamtbetrag").HeaderText = "Betrag (stpfl.)"
            .Columns("SteuerpflichtigerGesamtbetrag").DefaultCellStyle.Format = "N2"
            .Columns("SteuerfreierGesamtbetrag").Width = 120
            .Columns("SteuerfreierGesamtbetrag").HeaderText = "Betrag (stfr.)"
            .Columns("SteuerfreierGesamtbetrag").DefaultCellStyle.Format = "N2"

            .Columns("ZUGFeRD").Width = 60
            .Columns("ZUGFeRD").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter

            lblErgebnis.Text = "Ergebnisse: " & .RowCount
            lblunterschRe.Text = "Anz. untersch. Belege: " & .Rows.Cast(Of DataGridViewRow)().[Select](Function(r) CInt(IIf(Not IsDBNull(r.Cells("RechnungsNr").Value), r.Cells("RechnungsNr").Value, 0))).Distinct().Count()

        End With
        brexitXLS = False
        Me.Cursor = Cursors.Default
    End Sub


    Function getRechnungsAusgangWhere() As String
        Dim sqlstr = ""
        If txtAvisiererKdNr.Text <> "" And IsNumeric(txtAvisiererKdNr.Text) Then : sqlstr &= " AND Rechnungsausgang.[AvisiererKundenNr] LIKE @AvisiererKundenNr "
        ElseIf kdtxtAvisierer.Text <> "" Then : sqlstr &= " AND  Rechnungsausgang.[Avisierer] LIKE @Avisierer " : End If
        If txtAbsenderKdnr.Text <> "" And IsNumeric(txtAbsenderKdnr.Text) Then : sqlstr &= " AND Rechnungsausgang.[AbsenderKundenNr] LIKE @AbsenderKundenNr "
        ElseIf kdtxtAbsender.Text <> "" Then : sqlstr &= " AND  Rechnungsausgang.[AbsenderName 1] LIKE @Absender " : End If
        If txtEmpfaengerKdnr.Text <> "" And IsNumeric(txtEmpfaengerKdnr.Text) Then : sqlstr &= " AND Rechnungsausgang.[EmpfängerKundenNr] LIKE @EmpfängerKundenNr "
        ElseIf kdtxtEmpfaenger.Text <> "" Then : sqlstr &= " AND  Rechnungsausgang.[EmpfängerName 1] LIKE @Empfänger " : End If

        If txtAuftraggeberKdnr.Text <> "" And IsNumeric(txtAuftraggeberKdnr.Text) Then : sqlstr &= " AND [VermittlerKundenNr] LIKE @VermittlerKundenNr "
        ElseIf kdtxtAuftraggeber.Text <> "" Then : sqlstr &= " AND  [VermittlerName 1] LIKE @Vermittler " : End If


        If txtRechnungAnKdNr.Text <> "" And IsNumeric(txtRechnungAnKdNr.Text) Then : sqlstr &= " AND [RechnungsKundenNr] LIKE @RechnungsKundenNr "
        ElseIf kdtxtRechnungAn.Text <> "" Then : sqlstr &= " AND  [RechnungsName 1] LIKE @RechnungAn " : End If

        If KdFrachtfuehrerKdnr.Text <> "" And IsNumeric(KdFrachtfuehrerKdnr.Text) Then : sqlstr &= " AND   (Select COUNT(*) from Speditionsbuch where Speditionsbuch.FilialenNr=[Rechnungsausgang].FilialenNr and Speditionsbuch.AbfertigungsNr=[Rechnungsausgang].AbfertigungsNr and Speditionsbuch.UnterNr=[Rechnungsausgang].UnterNr and FrachtführerKundenNr like @KdFrachtfuehrerKdNr  )>0  "
        ElseIf KdFrachtfuehrer.Text <> "" Then : sqlstr &= " AND  (Select COUNT(*) from Speditionsbuch where Speditionsbuch.FilialenNr=[Rechnungsausgang].FilialenNr and Speditionsbuch.AbfertigungsNr=[Rechnungsausgang].AbfertigungsNr and Speditionsbuch.UnterNr=[Rechnungsausgang].UnterNr and Frachtführer like @KdFrachtfuehrer  )>0  " : End If


        If cboDatum._value = "ADat" Then
            If txtAbfertDat.Text <> "" Then
                If txtAbfertDatBis.Text <> "" Then
                    sqlstr &= " AND (Rechnungsausgang.[Abfertigungsdatum] BETWEEN @Datum_von AND @Datum_bis ) "
                Else
                    sqlstr &= " AND (Rechnungsausgang.[Abfertigungsdatum] BETWEEN @Datum_von AND @Datum_von ) "
                End If
            End If
        ElseIf cboDatum._value = "RDat" Then
            If txtAbfertDat.Text <> "" Then
                If txtAbfertDatBis.Text <> "" Then
                    sqlstr &= " AND (Rechnungsausgang.[RechnungsDatum] BETWEEN @Datum_von AND @Datum_bis ) "
                Else
                    sqlstr &= " AND (Rechnungsausgang.[RechnungsDatum] BETWEEN @Datum_von AND @Datum_von ) "
                End If
            End If
        End If


        If txtAbfertigungsnummer.Text <> "" Then
            If txtAbfertigungsnummerBis.Text <> "" Then
                sqlstr &= " AND (Rechnungsausgang.[AbfertigungsNr] BETWEEN @AbfertigungsNr AND @AbfertigungsNr_bis) "
            Else
                sqlstr &= " AND Rechnungsausgang.AbfertigungsNr LIKE @AbfertigungsNr "
            End If
        End If


        If txtRechungsNr_von.Text <> "" Then
            If txtRechungsNr_bis.Text <> "" Then
                sqlstr &= " AND (Rechnungsausgang.[RechnungsNr] BETWEEN @RechnungsNr AND @RechnungsNr_bis) "
            Else
                sqlstr &= " AND Rechnungsausgang.RechnungsNr LIKE @RechnungsNr "
            End If
        End If

        If txtUnterNr.Text <> "" Then sqlstr &= " AND Rechnungsausgang.[UnterNr] LIKE @UnterNr "
        If cboFiliale._value <> "" Then sqlstr &= " AND Rechnungsausgang.[FilialenNr] LIKE @FilialenNr "
        If cboFirma._value <> "" Then sqlstr &= " AND Rechnungsausgang.[Firma_ID] = @Firma_ID "

        If MyTextBox14.Text <> "" Then sqlstr &= " AND Rechnungsausgang.[LKW Kennzeichen] LIKE @LKW "

        If txtSachbearbeiter.Text <> "" Then sqlstr &= " AND Rechnungsausgang.[Sachbearbeiter] = @Sachbearbeiter "


        Dim abfertigungsarten = getValues()
        If abfertigungsarten <> "" Then sqlstr &= " AND (SELECT TOP 1 Abfertigungsart FROM Speditionsbuch WHERE Speditionsbuch.AbfertigungsNr=Rechnungsausgang.AbfertigungsNr AND Speditionsbuch.FilialenNr=Rechnungsausgang.FilialenNr AND  Speditionsbuch.UnterNr=Rechnungsausgang.SpeditionsbuchUnterNr ) IN (" & abfertigungsarten & ") "



        Return sqlstr
    End Function

    Function getSpedbuchList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)

        Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Avisierer", kdtxtAvisierer.Text.Replace("*", "%")))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AvisiererKundenNr", txtAvisiererKdNr.Text.Replace("*", "%")))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Absender", kdtxtAbsender.Text.Replace("*", "%")))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbsenderKundenNr", txtAbsenderKdnr.Text.Replace("*", "%")))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Empfänger", kdtxtEmpfaenger.Text.Replace("*", "%")))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EmpfängerKundenNr", txtEmpfaengerKdnr.Text.Replace("*", "%")))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Vermittler", kdtxtAuftraggeber.Text.Replace("*", "%")))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VermittlerKundenNr", txtAuftraggeberKdnr.Text.Replace("*", "%")))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungAn", kdtxtRechnungAn.Text.Replace("*", "%")))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsKundenNr", txtRechnungAnKdNr.Text.Replace("*", "%")))

        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KdFrachtfuehrerKdNr", KdFrachtfuehrerKdnr.Text.Replace("*", "%")))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KdFrachtfuehrer", KdFrachtfuehrer.Text.Replace("*", "%")))

        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Datum_von", txtAbfertDat.Text & " 00:00:00"))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Datum_bis", txtAbfertDatBis.Text & " 23:59:59"))
        If txtAbfertigungsnummerBis.Text <> "" Then
            list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbfertigungsNr", txtAbfertigungsnummer.Text.Replace("*", "")))
            list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbfertigungsNr_bis", txtAbfertigungsnummerBis.Text.Replace("*", "")))
        Else
            list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbfertigungsNr", txtAbfertigungsnummer.Text.Replace("*", "%")))
        End If

        If txtRechungsNr_bis.Text <> "" Then
            list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsNr", txtRechungsNr_von.Text.Replace("*", "")))
            list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsNr_bis", txtRechungsNr_bis.Text.Replace("*", "")))
        Else
            list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsNr", txtRechungsNr_von.Text.Replace("*", "%")))
        End If

        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UnterNr", txtUnterNr.Text))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("FilialenNr", cboFiliale._value))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma_ID", cboFirma._value))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LKW", MyTextBox14.Text.Replace("*", "%").ToUpper))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachbearbeiter", txtSachbearbeiter.Text))
        Return list

    End Function
    Private Sub frmSpeditionsbuchSuche_Load(sender As Object, e As EventArgs) Handles Me.Load
        Me.Height = Screen.FromRectangle(Me.Bounds).WorkingArea.Size.Height
        Me.Top = 0

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

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


        kdtxtAbsender.initKdBox(Me, txtAbsenderKdnr) '   initKdAbsender()
        kdtxtEmpfaenger.initKdBox(Me, txtEmpfaengerKdnr) 'initKdEmpfaenger()
        kdtxtAuftraggeber.initKdBox(Me, txtAuftraggeberKdnr) 'initKdAuftraggeber()
        kdtxtAvisierer.initKdBox(Me, txtAvisiererKdNr) 'initKdAuftraggeber()
        kdtxtRechnungAn.initKdBox(Me, txtRechnungAnKdNr) 'initKdAuftraggeber()
        KdFrachtfuehrer.initKdBox(Me, KdFrachtfuehrerKdnr) 'initKdAuftraggeber()


        cboFirma.fillWithSQL(" SELECT [Firma_ID],[Firma_Bez] FROM [tblFirma] order by Firma_ID ", True, "FMZOLL", True)
        cboBerichtRgAbfArt.fillWithSQL(" SELECT [Abfertigungsart],[Abfertigungsbezeichnung] FROM [Abfertigungsarten] ORDER BY Abfertigungsart ", True, "FMZOLL", True)
        ' cboSachbearbeiter.fillWithSQL("SELECT  ID, Name FROM Personal WHERE [Status]<>'L' ORDER BY Name ", True, "FMZOLL", True)
        '     cboSachbearbeiter.fillWithSQL("SELECT  ID,/*cast(ID as nvarchar(3)) +' ' + Name as*/ Name FROM Personal WHERE [Status]<>'L' ORDER BY Name ", False, "FMZOLL", True)
        cboFiliale.fillWithSQL("SELECT FilialenNr, Grenzstelle FROM Filialen WHERE Fil_Status='A' ORDER BY FilialenNr ", True, "FMZOLL", True)
        'ComboBox1.fillWithSQL("SELECT [Abfertigungsart],[Abfertigungsbezeichnung]  FROM [Abfertigungsarten] ORDER BY Abfertigungsart ", True, "FMZOLL")
        MyListBox1.fillWithSQL(" SELECT [Abfertigungsart],[Abfertigungsbezeichnung] FROM [Abfertigungsarten] ORDER BY Abfertigungsart ", , "FMZOLL")
        Button4.PerformClick()

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

        Select Case FirmaTmp
            Case "IMEX"
                cboFiliale.changeItem("5501")
                cboFiliale.Enabled = False
            Case "UNISPED"
                cboFiliale.changeItem("5601")
                cboFiliale.Enabled = False
            Case "AMBAR"
                cboFiliale.changeItem("5701")
                cboFiliale.Enabled = False
            Case "IMEX"
                cboFiliale.changeItem("5501")
                cboFiliale.Enabled = False
            Case "ATILLA"
                cboFiliale.changeItem("4813")
                cboFiliale.Enabled = False
                cboFirma.changeItem("7")
                cboFirma.Enabled = False
            Case "VERAGIMEX"
                ' cboFiliale.changeItem("5501") 
        End Select

        cboDatum.Items.Clear()
        cboDatum.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Rechnugsdatum", "RDat"))
        cboDatum.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Abfertigungsdatum", "ADat"))
        cboDatum.changeItem("RDat")

        'Label29.Visible = False
        'Label30.Visible = False

        'If VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER IsNot Nothing Then
        '    If VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_standartFiliale > 0 Then
        '        Dim aktNr = (New cOptionenDAL).getMaxPosNr(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_standartFiliale, Now.Year)
        '        Label30.Text = "akt. Pos-Nr. (" & VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_standartFiliale & "):"
        '        Label29.Text = aktNr
        '        Label29.Visible = True
        '        Label30.Visible = True
        '    End If
        'End If

        If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ADMIN", Me) Then
            ' btnQSAufteilung.Visible = True
        End If
        If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ZOLL_Auswertungen", Me) Then
            pnlBerichte.Visible = True
        End If

    End Sub
    Function getValues() As String
        Dim s As String = ""
        For Each i In MyListBox1.SelectedItems
            s += DirectCast(i, VERAG_PROG_ALLGEMEIN.MyListItem).Value & ", "
        Next
        If s.EndsWith(", ") Then
            s = s.Substring(0, s.Length - 2)
        End If
        Return s
    End Function
    ' Private Sub Button1_Click(sender As Object, e As EventArgs)
    '      For i = 0 To MyListBox1.Items.Count - 1
    '          MyListBox1.SetSelected(i, True)
    '      Next
    'End Sub
    '
    Private Sub Button2_Click(sender As Object, e As EventArgs)
        For i = 0 To MyListBox1.Items.Count - 1
            MyListBox1.SetSelected(i, False)
        Next
    End Sub
    '   Sub initKdAuftraggeber()
    '     Dim dgvFindKD As New DataGridView
    ' dgvFindKD.Name = "dgvFindKD"
    ' Me.Controls.Add(dgvFindKD)
    ' dgvFindKD.Visible = False
    ' kdtxtAuftraggeber.dgv = dgvFindKD
    ' AddHandler kdtxtAuftraggeber.PropertyChanged, Sub()
    ' txtAuftraggeberKdnr.Text = IIf(kdtxtAuftraggeber.KdNr_value > 0, kdtxtAuftraggeber.KdNr_value, "")
    ' End Sub
    ' End Sub

    ' Sub initKdAbsender()
    '     Dim dgvFindKD As New DataGridView
    ' dgvFindKD.Name = "dgvFindKD"
    ' Me.Controls.Add(dgvFindKD)
    ' dgvFindKD.Visible = False
    ' kdtxtAbsender.dgv = dgvFindKD
    ' kdtxtAbsender.kdNrField = txtAbsenderKdnr
    ' End Sub

    ' Sub initKdEmpfaenger()
    '     Dim dgvFindKD As New DataGridView
    ' dgvFindKD.Name = "dgvFindKD"
    ' Me.Controls.Add(dgvFindKD)
    ' dgvFindKD.Visible = False
    ' kdtxtEmpfaenger.dgv = dgvFindKD
    ' kdtxtEmpfaenger.kdNrField = txtEmpfaengerKdnr
    ' End Sub

    ' Sub initKdFrachtfuehrer()
    '     Dim dgvFindKD As New DataGridView
    ' dgvFindKD.Name = "dgvFindKD"
    ' Me.Controls.Add(dgvFindKD)
    ' dgvFindKD.Visible = False
    ' kdtxtFrachtfuehrer.dgv = dgvFindKD
    ' kdtxtFrachtfuehrer.kdNrField = txtFrachtfuehrerKdnr
    ' End Sub

    ' Sub initKdEndempfaenger()
    '     Dim dgvFindKD As New DataGridView
    ' dgvFindKD.Name = "dgvFindKD"
    ' Me.Controls.Add(dgvFindKD)
    ' dgvFindKD.Visible = False
    ' kdtxtEndempfaenger.dgv = dgvFindKD
    ' kdtxtEndempfaenger.kdNrField = txtEndempfaengerKdnr
    ' End Sub


    Private Sub txtAbfertDat_TextChanged(sender As Object, e As EventArgs) Handles txtAbfertDat.Leave
        If sender.Text <> "" AndAlso IsDate(sender.Text) Then
            DateTimePicker1.Value = CDate(sender.text)
        End If
    End Sub
    Private Sub txtAbfertDatBis_TextChanged(sender As Object, e As EventArgs) Handles txtAbfertDatBis.Leave
        If sender.Text <> "" AndAlso IsDate(sender.Text) Then
            DateTimePicker2.Value = CDate(sender.text)
        End If
    End Sub

    Private Sub MyTextBox1_TextChanged(sender As Object, e As EventArgs) Handles txtAbfertigungsnummer.TextChanged
        txtAbfertigungsnummerBis.Enabled = sender.text <> ""
    End Sub

    Private Sub DataGridView_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView.CellMouseClick
        If e.Button = Windows.Forms.MouseButtons.Right Then
            DataGridView.ClearSelection()
            DataGridView.Rows(e.RowIndex).Selected = True
        End If
    End Sub

    Private Sub DataGridView_CellContentClick(sender As Object, e As EventArgs) Handles DataGridView.DoubleClick, DataGridView.CellContentClick ', DataGridView.CellContentDoubleClick
        If DataGridView.SelectedRows.Count = 0 Then Exit Sub

        Dim f As New frmKundenUebersichtZollRgDetails(DataGridView.SelectedRows(0).Cells("RK_ID").Value)
        f.ShowDialog()

        DataGridView.RELOAD()

        '   frmNacherfassung.showAll()
    End Sub

    Private Sub Button1_Click_1(sender As Object, e As EventArgs)
        Dim frmNacherfassung As New frmNacherfassungNEU
        ' frmNacherfassung.cboFiliale.Text = DataGridView.SelectedRows(0).Cells("FilialenNr").Value
        ' frmNacherfassung.txtUnterNr.Text = DataGridView.SelectedRows(0).Cells("UnterNr").Value
        ' frmNacherfassung.txtAbfertigungsnummer.Text = DataGridView.SelectedRows(0).Cells("AbfertigungsNr").Value
        frmNacherfassung.newEntry = True
        '  frmNacherfassung.FMZollPersID = VERAG_PROG_ALLGEMEIN.cglobal.AktiverMitarbeiter.mit_FMZollPersID
        ' frmNacherfassung.initDataBinding()
        frmNacherfassung.ShowDialog(Me)
        DataGridView.RELOAD()
    End Sub

    Private Sub EintragLöschenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EintragLöschenToolStripMenuItem.Click
        If DataGridView.SelectedRows.Count > 0 Then
            If vbYes = MsgBox("Möchten Sie den Eintrag wirklich löschen?", vbYesNoCancel) Then
                Dim r As DataGridViewRow = DataGridView.SelectedRows(0)
                SQL.doSQL("DELETE FROM [Speditionsbuch] WHERE [FilialenNr]='" & r.Cells("FilialenNr").Value & "' AND [AbfertigungsNr] ='" & r.Cells("AbfertigungsNr").Value & "' AND [UnterNr]='" & r.Cells("UnterNr").Value & "' ", "FMZOLL")
                DataGridView.RELOAD()
            End If
        End If
    End Sub



    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

    Private Sub btnMonat_Click(sender As Object, e As EventArgs) Handles btnMonat.Click
        initBtns("Monat")
    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)

    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

    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 Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        SplitContainer1.Panel2Collapsed = Not SplitContainer1.Panel2Collapsed

        If SplitContainer1.Panel2Collapsed Then
            '    pnlSearch.Height = SplitContainer1.Panel1.Height
            SplitContainer.SplitterDistance -= 150
        Else
            'pnlSearch.Height = SplitContainer1.Height
            SplitContainer.SplitterDistance += 150
        End If

        If Button4.Image Is SDL.My.Resources.Resources.pfeil_unten Then
            Button4.Image = SDL.My.Resources.Resources.pfeil_oben
        Else
            Button4.Image = SDL.My.Resources.Resources.pfeil_unten
        End If
    End Sub


    Private Sub FlatButton7_Click(sender As Object, e As EventArgs) Handles FlatButton7.Click
        DataGridView.RELOAD()
    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 Button7_Click(sender As Object, e As EventArgs) Handles Button7.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 btnExcel_Click(sender As Object, e As EventArgs) Handles btnExcel.Click


        Me.Cursor = Cursors.WaitCursor

        'cProgramFunctions.genExcelFromDGV_NEW(DataGridView, False)
        If brexitXLS Then
            cProgramFunctions.genExcelFromDT_NEW(DataGridView.DataSource, {"J1:J" & (DataGridView.DataSource.Rows.Count + 2), "L1:M" & (DataGridView.DataSource.Rows.Count + 2)},,,, "£")
        Else
            Dim sqlstr As String = ""
            ' Dim TopMax = If(IsNumeric(txtMaxSrch.Text), " TOP " & txtMaxSrch.Text, "")
            sqlstr &= "SELECT  RK_ID,[RechnungsNr],cast([RechnungsDatum] as date) RechnungsDatum, Sammelrechnung, [FilialenNr],[AbfertigungsNr],[UnterNr],cast(Abfertigungsdatum as date) Abfertigungsdatum,  isnull(cast(RechnungsKundenNr as nvarchar(10)) + ' ','') + [RechnungsName 1] as [RechnungAn], " &
                "  isnull(cast([AbsenderKundenNr] as nvarchar(10)) + ' ','') + [AbsenderName 1] as Absender,isnull(cast([EmpfängerKundenNr] as nvarchar(10)) + ' ','') + [EmpfängerName 1] as Empfänger, isnull(cast([VermittlerKundenNr] as nvarchar(10)) + ' ','') + [VermittlerName 1] as Vermittler, [LKW Kennzeichen],Sachbearbeiter,[SteuerpflichtigerGesamtbetrag],[SteuerfreierGesamtbetrag] " &
                " FROM [Rechnungsausgang] WHERE 1=1 "
            Dim dt = SQL.loadDgvBySql_Param(sqlstr & getRechnungsAusgangWhere() & " ORDER BY Rechnungsdatum, RK_ID", "FMZOLL", , getSpedbuchList)

            cProgramFunctions.genExcelFromDT_NEW(dt, {"M1:N" & (DataGridView.DataSource.Rows.Count + 2)})
        End If
        Me.Cursor = Cursors.Default




        'Me.Cursor = Cursors.WaitCursor
        ''cProgramFunctions.genExcelFromDGV_NEW(DataGridView, False)
        'If brexitXLS Then
        '    cProgramFunctions.genExcelFromDT_NEW(dt, {"J1:J" & (dt.Rows.Count + 2), "L1:M" & (dt.Rows.Count + 2)},,,, "£")
        'Else
        '    cProgramFunctions.genExcelFromDT_NEW(dt, {"M1:N" & (dt.Rows.Count + 2)})
        'End If
        'Me.Cursor = Cursors.Default
        ''If brexitXLS Then
        ''    cProgramFunctions.genExcelFromDT_NEW(DataGridView.DataSource, {"J1:J" & (DataGridView.DataSource.Rows.Count + 2), "L1:M" & (DataGridView.DataSource.Rows.Count + 2)},,,, "£")
        ''Else
        ''    cProgramFunctions.genExcelFromDT_NEW(DataGridView.DataSource, {"M1:N" & (DataGridView.DataSource.Rows.Count + 2)})
        ''End If
        ''Me.Cursor = Cursors.Default
    End Sub

    Private Sub Button8_Click(sender As Object, e As EventArgs)

    End Sub

    Private Sub Button9_Click(sender As Object, e As EventArgs)
        Dim sqlstr As String = ""
        sqlstr &= " SELECT Aviso.[Grenzstelle], COUNT (*) as Anzahl FROM Speditionsbuch INNER JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & ".AVISO.dbo.AVISO on Aviso.avisoid=Speditionsbuch.AvisoID WHERE  PersonalnummerQS is not null "
        Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr & getRechnungsAusgangWhere() &
                                               " GROUP BY Aviso.[Grenzstelle]" &
                                               " ORDER BY Anzahl DESC",
                                    "FMZOLL", , getSpedbuchList())
        DataGridView.DataSource = dt
    End Sub

    Private Sub SplitContainer1_Panel2_Paint(sender As Object, e As PaintEventArgs) Handles SplitContainer1.Panel2.Paint

    End Sub

    Private Sub MyComboBox6_SelectedIndexChanged(sender As Object, e As EventArgs)

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim sqlstr As String = ""
        sqlstr &= " SELECT "
        sqlstr &= " 		max(DATENAME(YEAR, (RechnungsDatum))) as jahr,"
        sqlstr &= " 		max(DATENAME(month, (RechnungsDatum))) as monat,"
        sqlstr &= "         RechnungsDatum = DateAdd(Month, DateDiff(Month, 0, RechnungsDatum), 0)"
        sqlstr &= " 		,(SELECT COUNT (*)  FROM [VERAG].[dbo].[RechnungsausgangPositionen] inner join [VERAG].[dbo].[Rechnungsausgang] ON [RechnungsausgangPositionen].RK_ID=[Rechnungsausgang].RK_ID where LeistungsNr =347 AND RechnungsDatum between MIN(RA.RechnungsDatum) and MAX(RA.RechnungsDatum) ) as Clearing_Anzahl"
        sqlstr &= " 		,(SELECT sum ([SteuerpflichtigerBetrag]+[SteuerfreierBetrag]) as Betrag  FROM [VERAG].[dbo].[RechnungsausgangPositionen] inner join [VERAG].[dbo].[Rechnungsausgang] ON [RechnungsausgangPositionen].RK_ID=[Rechnungsausgang].RK_ID where LeistungsNr =347 AND RechnungsDatum between MIN(RA.RechnungsDatum) and MAX(RA.RechnungsDatum) ) as Clearing_Einnahmen"
        sqlstr &= " 		,(SELECT COUNT (*)  FROM [VERAG].[dbo].[RechnungsausgangPositionen] inner join [VERAG].[dbo].[Rechnungsausgang] ON [RechnungsausgangPositionen].RK_ID=[Rechnungsausgang].RK_ID where LeistungsNr =348 AND RechnungsDatum between MIN(RA.RechnungsDatum) and MAX(RA.RechnungsDatum) ) as Aviso_Anzahl"
        sqlstr &= " 		,(SELECT sum ([SteuerpflichtigerBetrag]+[SteuerfreierBetrag]) as Betrag  FROM [VERAG].[dbo].[RechnungsausgangPositionen] inner join [VERAG].[dbo].[Rechnungsausgang] ON [RechnungsausgangPositionen].RK_ID=[Rechnungsausgang].RK_ID where LeistungsNr =348 AND RechnungsDatum between MIN(RA.RechnungsDatum) and MAX(RA.RechnungsDatum) ) as Aviso_Einnahmen"
        sqlstr &= " FROM  [VERAG].[dbo].[Rechnungsausgang] as RA "
        sqlstr &= " 		WHERE RechnungsDatum between '" & txtAbfertDat.Text & " 00:00:00" & "' and '" & txtAbfertDatBis.Text & " 23:59:59" & "' "
        sqlstr &= "         GROUP BY(DATENAME(Year, (RechnungsDatum))), DateAdd(Month, DateDiff(Month, 0, RechnungsDatum), 0)"
        sqlstr &= " ORDER BY RechnungsDatum "

        'MsgBox(sqlstr)
        Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL", , getSpedbuchList())
        DataGridView.DataSource = dt
    End Sub

    Private Sub txtRechungsNr_von_TextChanged(sender As Object, e As EventArgs) Handles txtRechungsNr_von.TextChanged
        txtRechungsNr_bis.Enabled = (txtRechungsNr_von.Text <> "")
    End Sub


    Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click
        For i = 0 To MyListBox1.Items.Count - 1
            MyListBox1.SetSelected(i, True)
        Next
    End Sub

    Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
        For i = 0 To MyListBox1.Items.Count - 1
            MyListBox1.SetSelected(i, False)
        Next
    End Sub


    Private Sub EVOLOGToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EVOLOGSammelrechnungAuswählenToolStripMenuItem.Click
        If DataGridView.SelectedRows.Count = 0 Then Exit Sub
        Dim RG_TMP As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(DataGridView.SelectedRows(0).Cells("RK_ID").Value)
        If RG_TMP.Sammelrechnung <> 0 Then
            cFakturierung.doSAMMELRechnungDruck_Rechnungsdruck_Sammelrechnungsbericht_ExcelEvolog(RG_TMP.RechnungsNr, RG_TMP.DruckDatumZeit, 3, "", "")
        End If
    End Sub

    Private Sub ZFPASSAUToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ZFFriedrichshafenAGZeitraumAuswählenToolStripMenuItem.Click
        Me.Cursor = Cursors.WaitCursor
        Try

            Dim dt As DataTable = SQL.loadDgvBySql("SELECT   CAST(Rechnungsausgang.[FilialenNr] as varchar) + '/' + CAST(Rechnungsausgang.[AbfertigungsNr] as varchar) Abfertigungsnummer
	                          ,[RechnungsNr],RechnungsKundenNr
                              ,cast([RechnungsDatum] as date)RechnungsDatum
                              ,[AbsenderName 1]Absender
	                          ,(SteuerfreierGesamtbetrag+SteuerpflichtigerGesamtbetrag) Betrag
  	                          ,Speditionsbuch.BelegNr
                              ,Rechnungsausgang.[FilialenNr],Rechnungsausgang.[AbfertigungsNr] ,Speditionsbuch.Abfertigungsart
                          FROM [Rechnungsausgang] inner join Speditionsbuch ON Speditionsbuch.FilialenNr=Rechnungsausgang.FilialenNr and Speditionsbuch.AbfertigungsNr=Rechnungsausgang.AbfertigungsNr and Speditionsbuch.UnterNr=Rechnungsausgang.SpeditionsbuchUnterNr
                          where RechnungsKundenNr IN (714869) and rechnungsdatum BETWEEN '" & txtAbfertDat.Text & "' AND '" & txtAbfertDatBis.Text & "'", "FMZOLL")

            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")

                With exclApp
                    .Visible = False

                    Try
                        Path = sPath & "ZF_" & txtAbfertDat.Text & "-" & txtAbfertDatBis.Text & "" & " .xlsx"
                        While System.IO.File.Exists(Path)
                            Path = sPath & "ZF_" & txtAbfertDat.Text & "-" & txtAbfertDatBis.Text & "_" & 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)
                        Me.Cursor = Cursors.Default

                        Exit Sub
                    End Try

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

                    Blatt.Range("G1").Value = txtAbfertDat.Text & "-" & txtAbfertDatBis.Text

                    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("D" & cnt).Value = r("RechnungsDatum")
                        Blatt.Range("E" & cnt).Value = r("Absender")
                        Blatt.Range("F" & cnt).Value = r("Betrag")
                        Blatt.Range("G" & cnt).Value = r("BelegNr")

                        'Dim ZOLLANMELDUNG As New DAKOSY_Worker.cZollsysteme_Aktenbeschriftung
                        'If ZOLLANMELDUNG.getDataByBezugsnummer(r("FilialenNr") & "/" & r("AbfertigungsNr"), r("Abfertigungsart"), "") Then
                        '    Blatt.Range("H" & cnt).Value = ZOLLANMELDUNG.Rechnungspreis
                        '    Blatt.Range("I" & cnt).Value = ZOLLANMELDUNG.Handelsrechnung
                        'End If


                        cnt += 1
                    Next
                    Datei.Save

                    If False Then
                        Blatt.PrintOutEx()
                    Else
                        'Process.Start(Path)
                        .Visible = True

                    End If
                End With

            End If

        Catch ex As Exception
            MsgBox(ex.Message & ex.StackTrace)
        End Try
        Me.Cursor = Cursors.Default
    End Sub

    Private Sub ToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem1.Click
        If DataGridView.SelectedRows.Count = 0 Then Exit Sub
        Dim RG_TMP As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(DataGridView.SelectedRows(0).Cells("RK_ID").Value)
        If RG_TMP.Sammelrechnung <> 0 Then
            cFakturierung.doSAMMELRechnungDruck_Rechnungsdruck_Sammelrechnungsbericht_ExcelTransFerry360(RG_TMP.RechnungsNr, RG_TMP.DruckDatumZeit, 3, "", "")
        End If
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        If cboFiliale._value = "" Then MsgBox("Filiale auswählen!") : Exit Sub

        Dim TopMax = If(IsNumeric(txtMaxSrch.Text), " TOP " & txtMaxSrch.Text, "")
        With DataGridView
            Dim sqlStr = "SELECT  " & TopMax & "  [FilialenNr],[AbfertigungsNr]
                               ,cast([Abfertigungsdatum] as date) Abfertigungsdatum
                              ,[RechnungsNr]
                                 ,cast([RechnungsDatum] as date) [RechnungsDatum] 
	                          ,[RechnungsName 1]
	                          ,RechnungsLandKz
	                          ,RechnungsausgangPositionen.LeistungsNr
                            , RechnungsausgangPositionen.LeistungsBez,
	                        Preis,Anzahl, RechnungsausgangPositionen.SteuerfreierBetrag,RechnungsausgangPositionen.SteuerpflichtigerBetrag
                          FROM [VERAG].[dbo].[Rechnungsausgang] inner join RechnungsausgangPositionen on Rechnungsausgang.RK_ID=RechnungsausgangPositionen.RK_ID
                          inner join Leistungen on Leistungen.LeistungsNr = RechnungsausgangPositionen.LeistungsNr
                          where /*RechnungsDatum BETWEEN '01.01.2021' and '31.12.2021'*/
                          FilialenNr=" & cboFiliale._value & "
                          /*and Rechnungsausgang.SteuerpflichtigerGesamtbetrag<>0*/
                          /*and Leistungen.Steuerpflichtig=1*/
                          and (Leistungen.Abfertigungskosten=1 or Leistungen.LeistungsNr IN (656,425))
                          and RechnungsausgangPositionen.LeistungsNr NOT IN (700,710,750,751,20,60,61)
                          and Firma_ID=26
                          "

            '  MsgBox(sqlStr & getRechnungsAusgangWhere() & " order by [RechnungsDatum],RechnungsNr,RechnungsausgangPositionen.LeistungsNr")
            .SET_SQL(sqlStr & getRechnungsAusgangWhere() & " order by [RechnungsDatum],RechnungsNr,RechnungsausgangPositionen.LeistungsNr", "FMZOLL", getSpedbuchList)
            .LOAD()

            lblErgebnis.Text = "Ergebnisse: " & .RowCount
            brexitXLS = True
        End With
    End Sub

    Function getList_RK_ID() As List(Of Integer)
        Dim listRgNr As New List(Of Integer)
        Dim list As New List(Of Integer)
        If DataGridView.SelectedRows.Count > 0 Then
            For Each r As DataGridViewRow In DataGridView.SelectedRows
                If listRgNr.FindIndex((Function(x) x.ToString = r.Cells("RechnungsNr").Value)) < 0 Then
                    list.Add(r.Cells("RK_ID").Value)
                    listRgNr.Add(r.Cells("RechnungsNr").Value)
                End If
            Next
        End If
        Return list
    End Function

    Private Sub Button9_Click_1(sender As Object, e As EventArgs) Handles btnPDF.Click
        Me.Cursor = Cursors.WaitCursor
        Try
            For Each RK_ID In getList_RK_ID()
                Dim RG_PATH = ""
                cFakturierung.doRechnungsDruck_SRorER(RK_ID,, False, 4, RG_PATH,,, True)
                Process.Start(RG_PATH)
            Next
        Catch ex As Exception
            MsgBox(ex.Message & ex.StackTrace)
        End Try
        Me.Cursor = Cursors.Default
    End Sub

    Private Sub DateiHochladenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiHochladenToolStripMenuItem.Click
        Me.Cursor = Cursors.WaitCursor
        Try

            Dim list As New List(Of String)

            For Each RK_ID In getList_RK_ID()
                Dim RG_PATH = ""
                cFakturierung.doRechnungsDruck_SRorER(RK_ID,, False, 4, RG_PATH,,, True)
                list.Add(RG_PATH)
            Next

            'Zwischenablage
            Clipboard.Clear()
            Dim d As New DataObject(DataFormats.FileDrop, list.ToArray)
            Clipboard.SetDataObject(d, True)
        Catch ex As Exception
            MsgBox(ex.Message & ex.StackTrace)
        End Try
        Me.Cursor = Cursors.Default
    End Sub

    Private Sub DataGridView_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView.SelectionChanged
        btnPDF.Enabled = (DataGridView.SelectedRows.Count > 0)
    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 ToolStripMenuItem3_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem3.Click, NachRechnungslandToolStripMenuItem.Click, NachLeistungsnummerToolStripMenuItem.Click, NachLeistungsnummerToolStripMenuItem.Click, NachZollabfertigungspreisenToolStripMenuItem.Click
        If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ZOLL_Auswertungen", Me) Then
            MsgBox("Keine Berechtigung!")
            Exit Sub
        End If



        Dim sqlstr As String = ""

        If sender Is ToolStripMenuItem3 Then
            sqlstr &= "  SELECT COUNT(*) as Anzahl,RechnungsKundenNr,[RechnungsName 1] as RechnungAn,isnull(max(RechnungsLandKz),'') as RechnungsLandKz,isnull(max(RechnungsOrt),'') as RechnungsOrt,isnull(max(RechnungsStraße),'') as RechnungsStraße"
            sqlstr &= " FROM [Rechnungsausgang] INNER JOIN  Speditionsbuch on Speditionsbuch.FilialenNr=Rechnungsausgang.FilialenNr and Speditionsbuch.AbfertigungsNr=Rechnungsausgang.AbfertigungsNr and Speditionsbuch.UnterNr=Rechnungsausgang.UnterNr"
            sqlstr &= "  WHERE 1=1"
            sqlstr &= getRechnungsAusgangWhere().Replace("Rechnungsausgang.[Avisierer", "Speditionsbuch.[Avisierer")
            If cboBerichtRgAbfArt._value <> "" Then sqlstr &= " AND Speditionsbuch.Abfertigungsart=" & cboBerichtRgAbfArt._value
            sqlstr &= "  group by RechnungsKundenNr, [RechnungsName 1]"
            sqlstr &= "  order by COUNT(*) desc,[RechnungsName 1]"

        ElseIf sender Is NachRechnungslandToolStripMenuItem Then

            sqlstr &= "  SELECT COUNT(*) as Anzahl,isnull(max(RechnungsLandKz),'') as RechnungsLandKz,sum(SteuerfreierGesamtbetrag) as Steuerfrei ,sum(SteuerpflichtigerGesamtbetrag) as Steuerpflichtig, sum(SteuerpflichtigerGesamtbetrag + SteuerfreierGesamtbetrag) as Gesamt"
            sqlstr &= " FROM [Rechnungsausgang] INNER JOIN  Speditionsbuch on Speditionsbuch.FilialenNr=Rechnungsausgang.FilialenNr and Speditionsbuch.AbfertigungsNr=Rechnungsausgang.AbfertigungsNr and Speditionsbuch.UnterNr=Rechnungsausgang.UnterNr"
            sqlstr &= "  WHERE 1=1"
            sqlstr &= getRechnungsAusgangWhere().Replace("Rechnungsausgang.[Avisierer", "Speditionsbuch.[Avisierer")
            If cboBerichtRgAbfArt._value <> "" Then sqlstr &= " AND Speditionsbuch.Abfertigungsart=" & cboBerichtRgAbfArt._value
            sqlstr &= "  group by isnull((RechnungsLandKz),'')"
            sqlstr &= "  order by Anzahl desc"

        ElseIf sender Is NachLeistungsnummerToolStripMenuItem Then

            If cboFirma._value = "" Then
                MsgBox("Firma auswählen!")
                cboFirma.Focus()
                Exit Sub
            End If

            'Verag360 katt noch nicht alle Datensatze als Buchungen verfügbar, daher über die Rechnungen/Rechnungspositionen
            '-------------------------------------------------------------------
            '               Select Case* FROM( SELECT Leistungsnummer, LeistungsBez, Year(Abfertigungsdatum) [Year] , ([tblTrdinProduct].[SteuerpflichtigerBetragLokal] + [tblTrdinProduct].[SteuerfreierBetragLokal]) AS [Der Wert] FROM tblTrdinInvoice 
            '   INNER Join(tblTrdinProduct LEFT JOIN Leistungen On Leistungsnummer = LeistungsNr) ON (tblTrdinInvoice.Rechnungsnummer = tblTrdinProduct.Rechnungsnummer) 
            'And (tblTrdinInvoice.Rechnungsdatum = tblTrdinProduct.Rechnungsdatum) WHERE 1 = 1  And 
            '(tblTrdinInvoice.[RechnungsDatum] BETWEEN @Datum_von And @Datum_bis )  
            'And tblTrdinInvoice.[Firma_ID] = @Firma_ID  And Firma_ID IN (19)  ) AS 
            'rg PIVOT(sum([Der Wert]) For [Year] In ([2025],[2024],[2023],[2022],[2021],[2020],[2019],[2018],[2017],[2016],[2015],[2014],[2013],[2012],[2011],[2010])) AS MNamePivot order by Leistungsnummer  
            '-------------------------------------------------------------------

            sqlstr &= "  SELECT * FROM ( SELECT Leistungen.LeistungsNr, Leistungen.LeistungsBez,YEAR(Abfertigungsdatum ) [Year] , (RechnungsausgangPositionen.SteuerpflichtigerBetrag+RechnungsausgangPositionen.SteuerfreierBetrag  ) AS "
                sqlstr &= " [Der Wert] FROM Rechnungsausgang INNER JOIN (RechnungsausgangPositionen  LEFT JOIN Leistungen ON RechnungsausgangPositionen.LeistungsNr = Leistungen.LeistungsNr) ON (Rechnungsausgang.RK_ID = RechnungsausgangPositionen.RK_ID) "
                sqlstr &= " WHERE 1 = 1 "
                sqlstr &= getRechnungsAusgangWhere()
                sqlstr &= " AND Firma_ID IN (" & cboFirma._value & ") "
                sqlstr &= " ) AS Rg"
                sqlstr &= " PIVOT( SUM([Der Wert]) FOR [Year] IN (" & getJahrString() & ")) AS MNamePivot"
                sqlstr &= " order by LeistungsNr"

            ElseIf sender Is NachZollabfertigungspreisenToolStripMenuItem Then


                sqlstr &= "  SELECT COUNT(distinct(RechnungsNr)) as Anzahl,isnull(max(Offertenpositionen.Preis),0) as AbfKosten, MAX(Offertenpositionen.OffertenNr) as OffertenNr, RechnungsKundenNr,[RechnungsName 1] as RechnungAn,isnull(max(RechnungsLandKz),'') as RechnungsLandKz,isnull(max(RechnungsOrt),'') as RechnungsOrt,isnull(max(RechnungsStraße),'')as RechnungsStraße "
                sqlstr &= " FROM [Rechnungsausgang] INNER JOIN RechnungsausgangPositionen on [Rechnungsausgang].RK_ID = RechnungsausgangPositionen.RK_ID INNER JOIN  Speditionsbuch on Speditionsbuch.FilialenNr=Rechnungsausgang.FilialenNr and Speditionsbuch.AbfertigungsNr=Rechnungsausgang.AbfertigungsNr and Speditionsbuch.UnterNr=Rechnungsausgang.UnterNr  LEFT JOIN Offertenpositionen on Offertenpositionen.KundenNr = RechnungsKundenNr and (Offertenpositionen.OffertenNr =  1 or Offertenpositionen.OffertenNr = 38)"
                sqlstr &= "  WHERE 1=1"
                sqlstr &= getRechnungsAusgangWhere().Replace("Rechnungsausgang.[Avisierer", "Speditionsbuch.[Avisierer")
                If cboBerichtRgAbfArt._value <> "" Then sqlstr &= " AND Speditionsbuch.Abfertigungsart=" & cboBerichtRgAbfArt._value & " And RechnungsausgangPositionen.LeistungsNr = 340"
                sqlstr &= "  group by RechnungsKundenNr, [RechnungsName 1] "
                sqlstr &= "  order by isnull(max(Offertenpositionen.Preis),0) desc,[RechnungsName 1]"


            End If

            If cboBerichtRgAbfArt._value <> "" Then

            End If
            Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL", , getSpedbuchList())
            'DataGridView.DataSource = dt

            If dt.Rows.Count = 0 Then
                MsgBox("Keine Daten vorhanden!")
                Exit Sub
            End If


            If sender Is NachLeistungsnummerToolStripMenuItem Then

                cProgramFunctions.genExcelFromDT_NEW(dt,,,,, False)
                Exit Sub
            ElseIf sender Is NachRechnungslandToolStripMenuItem Then
                cProgramFunctions.genExcelFromDT_NEW(dt,,,,, False)
                Exit Sub

            ElseIf sender Is NachZollabfertigungspreisenToolStripMenuItem Then
                cProgramFunctions.genExcelFromDT_NEW(dt, ,,,, False)
                Exit Sub
            End If


            Dim print As New frmPrintLayout
            print.Text = "Rechnungsempfänger Bericht"

            Dim rpt As New rptFaktRechnungAn

            rpt.DataSource = dt

            'cProgramFunctions.genExcelFromDT_NEW(DataGridView.DataSource)

            If rpt.DataSource.rows.count = 0 Then
                rpt.Dispose() : print.Dispose()
                MsgBox("Keine Daten vorhanden!")
                Exit Sub
            End If

            Dim sum = 0
            rpt.lblUeberschrift.Text = "Rechnungsanschrift Bericht " & txtAbfertDat.Text & " bis " & txtAbfertDatBis.Text
            rpt.lblSachbearbeiter.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME
            'rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & "  /  " & PERSONAL.Niederlassung

            'Dim cnt As Integer = 0
            rpt.lblDat.Text = Now.ToLongDateString
            Dim sumAnz As Double = 0
            For Each r In dt.Rows
                If sender IsNot NachLeistungsnummerToolStripMenuItem Then If r("Anzahl") Then sumAnz += r("Anzahl")
            Next



            rpt.lblGesAnzahl.Text = sumAnz
            AddHandler rpt.Detail.Format, Sub()

                                              If sender Is ToolStripMenuItem3 Then

                                                  rpt.Label6.Text = "Kunden-Nr."
                                                  rpt.Label7.Text = "Land"
                                                  rpt.Label2.Text = "Rechnung an"
                                                  rpt.Label4.Text = "Adresse"

                                                  rpt.lblKdNr.Text = rpt.Fields.Item("RechnungsKundenNr").Value
                                                  rpt.lblLand.Text = rpt.Fields.Item("RechnungsLandKz").Value
                                                  rpt.lblRechnungsAn.Text = rpt.Fields.Item("RechnungAn").Value
                                                  rpt.lblRechnungsadresse.Text = rpt.Fields.Item("RechnungsOrt").Value
                                                  rpt.lblAnzahl.Text = rpt.Fields.Item("Anzahl").Value
                                                  If IsNumeric(rpt.Fields.Item("Anzahl").Value) Then
                                                      rpt.lblPercent.Text = CDbl(CDbl(rpt.Fields.Item("Anzahl").Value) / sumAnz).ToString("P1")
                                                  Else
                                                      rpt.lblPercent.Text = ""
                                                  End If

                                              End If



                                          End Sub

            print.Viewer.LoadDocument(rpt)
            print.Viewer.ViewType = GrapeCity.Viewer.Common.Model.ViewType.Continuous
            print.Show()

    End Sub



    Function getJahrString() As String
        getJahrString = ""
        For j = Now.Year To 2010 Step -1
            getJahrString &= "[" & j & "],"
        Next
        getJahrString = getJahrString.Substring(0, getJahrString.Length - 1)
    End Function

    Private Sub Button8_Click_1(sender As Object, e As EventArgs) Handles Button8.Click
        Dim f As New frmProvisionisverguetung
        f.Show(Me)
    End Sub

    Private Sub RechnungenOhnePositionenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RechnungenOhnePositionenToolStripMenuItem.Click
        Try

            Me.Cursor = Cursors.WaitCursor

            Dim sqlstr = "SELECT * From Rechnungsausgang r Where r.RechnungsDatum >= @Datum_von And r.RechnungsDatum <= @Datum_bis
                        And Not EXISTS( SELECT 1 From RechnungsausgangPositionen p Where p.RK_ID = r.RK_ID) "
            If cboFirma._value <> "" Then sqlstr &= " AND r.[Firma_ID] = @Firma_ID "


            Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL", , getSpedbuchList())

            If dt.Rows.Count > 0 Then
                cProgramFunctions.genExcelFromDT_NEW(dt)
                Me.Cursor = Cursors.Default
            Else
                Me.Cursor = Cursors.Default
                MsgBox("keine Rechnungen ohne Positionen vorhanden!")

            End If


        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
            Me.Cursor = Cursors.Default
        End Try
    End Sub

    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
        Dim webAddress As String = "https://wiki.verag.ag/de/abteilungen/verrechnung/xxxx#provisionsverg%C3%BCtung"
        Process.Start(webAddress)
    End Sub
End Class