Imports SDL.RKSVServer

Public Class frmKassenbuch
    Dim SQL As New SQL
    Public GESCHAEFTSJAHR As Integer = cRKSV.getGJ(Now) 'IIf(Now.Month = 1, Now.Year - 1, Now.Year)
    Dim PERSONAL As cPersonal
    Dim RKSV As cRKSV_Kasse
    Dim PERSONAL_LG As cPersonal = Nothing
    ' Dim PERSONAL_TMP_MASTER_KASSSE As cPersonal
    Dim KennwortTime As DateTime = CDate("01.01.1990")
    ' Dim firma = "VERAG"
    Dim DGV = "B"
    Dim loginAfterSeconds = 10
    Public master_Kasse As Boolean = False
    Dim FMZOLL_SQL As New FMZOLL_SQL

    Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal)
        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()
        Me.PERSONAL = PERSONAL
        Me.PERSONAL_LG = PERSONAL_LG
        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

    End Sub

    Private Sub FlatButton1_Click(sender As Object, e As EventArgs) Handles btnBelegKunde.Click
        If KennwortOK() Then

            lblERRKennwort.Visible = False
            Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL_LG, "E")
            frmBeleg.ShowDialog(Me)
            init()

        End If

    End Sub

    Function KennwortOK() As Boolean
        If DateDiff(DateInterval.Second, KennwortTime, Now) < loginAfterSeconds Then
            Return True
        End If
        Dim frmSecureLoginKassenbuch As New frmSecureLoginKassenbuch
        frmSecureLoginKassenbuch.openKB = False
        frmSecureLoginKassenbuch.KassenbuchNr_tmp = PERSONAL.KassenbuchNr
        frmSecureLoginKassenbuch.ShowDialog(Me)
        If frmSecureLoginKassenbuch.DialogResult = Windows.Forms.DialogResult.OK Then
            KennwortTime = Now
            PERSONAL_LG = frmSecureLoginKassenbuch.PERSONAL_LG
            Return True
        Else
            lblERRKennwort.Visible = True
            Return False
        End If
    End Function
    Private Sub frmKassenbuch_Load(sender As Object, e As EventArgs) Handles Me.Load
        RKSV = New cRKSV_Kasse(PERSONAL.cRKSV_KasseID)
        GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(Now, RKSV.rksv_firma)


        If PERSONAL.ID = 274 Then master_Kasse = True
        If VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN" Or VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "SIENER" Then
            Button6.Visible = True
        End If
        KennwortTime = Now
        initDgv() 'nur set
        init()
        cboKassen.fillWithSQL("SELECT [rksv_id], [rksv_bez] FROM [tblRKSV_Kassen] WHERE ([rksv_aktiv]=1 OR [rksvde_aktiv]=1 or rksv_id=4) ", False, "FMZOLL") ' [rksv_firma]='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "' AND

        If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then
            btnBelegKunde.Enabled = False
            btnBelegAusgang.Enabled = False
            btnBelegEingang.Enabled = False
            btnBelegGSKunde.Enabled = False
            btnBelegLeihgeld.Enabled = False
            btnStorno.Enabled = False
        End If
    End Sub
    Sub init()
        Dim sqlstr = ""

        If master_Kasse Then
            Label9.Text = "ADMIN"
            pnlTop.BackColor = Color.Red
            btnBelegEingang.Enabled = False
            btnBelegGSKunde.Enabled = False
            btnBelegLeihgeld.Enabled = False
            Label15.Text = "MASTER-KASSE"
            btnBelegKunde.Enabled = False
            btnBelegAusgang.Enabled = False
            pnl.Visible = True




            'sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " &
            '      " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " &
            '      " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " &
            '      " AND  tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') AND tblKassenbuch.Geschäftsjahr=" & GESCHAEFTSJAHR & "  and Personal.[KassenbuchNr]=tblKassenbuch.Konto"
            '  sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " &
            '         " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " &
            '        " WHERE tblKassenbuch.[rksv_id]='" & PERSONAL.cRKSV_Kasse.rksv_id & "' AND tblKassenbuch.Geschäftsjahr=" & GESCHAEFTSJAHR & "  " 'and Personal.[KassenbuchNr]=tblKassenbuch.Konto"
            sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " &
                     " FROM tblKassenbuch  WHERE tblKassenbuch.[rksv_id]='" & PERSONAL.cRKSV_Kasse.rksv_id & "' AND tblKassenbuch.Geschäftsjahr=" & GESCHAEFTSJAHR & " AND Konto in (select KassenbuchNr from Personal where Standard_RKSV_KasseId='" & PERSONAL.cRKSV_Kasse.rksv_id & "') " 'and Personal.[KassenbuchNr]=tblKassenbuch.Konto"

        Else
            Label9.Text = PERSONAL.Name
            pnlTop.BackColor = Color.FromArgb(0, 54, 128)
            btnBelegEingang.Enabled = True
            btnBelegGSKunde.Enabled = True
            btnBelegLeihgeld.Enabled = True
            Label15.Text = PERSONAL.KassenbuchNr
            btnBelegKunde.Enabled = True
            btnBelegAusgang.Enabled = True
            pnl.Visible = False

            sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " &
                 " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " &
                " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " &
                "  And tblKassenbuch.Benutzer=" & PERSONAL.ID & " AND tblKassenbuch.Geschäftsjahr=" & GESCHAEFTSJAHR & " AND tblKassenbuch.Konto=" & PERSONAL.KassenbuchNr & ""
        End If

        If PERSONAL.isLeihgeldkasse Then
            '    btnBelegLeihgeld.Enabled = True
            btnBelegGSKunde.Enabled = False
            Button10.Visible = True
            'btnBelegKunde.Enabled = False
        End If

        initDate()
        ' initDgv()
        initDgv() 'initDgv, weil sonst Umschaltung zu MASTER Kasse nicht funzt
        'DataGridView2.RELOAD() 

        If PERSONAL.cRKSV_Kasse Is Nothing Then
            Label5.Text = "Keine Standard-Kasse"
        Else

            Dim dt As DataTable = SQL.loadDgvBySql(sqlstr, "FMZOLL")
            Label5.Text = CDbl(If(dt.Rows.Count > 0, cSqlDb.checkNullReturnValue(dt.Rows(0)("Saldo"), 0), 0)).ToString("C")

        End If


        '  Label9.Text = PERSONAL.Name
        DataGridView2.ClearSelection()
    End Sub
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        searchdate = searchdate.AddMonths(1)
        initDate()
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        searchdate = searchdate.AddMonths(-1)
        initDate()
    End Sub
    Sub initDate()
        lblMonatSuche.Text = searchdate.ToString("MMMM yyyy")
        datVon.Value = searchdate
        datBis.Value = searchdate.AddMonths(1).AddDays(-1)
    End Sub
    Private Sub datVon_ValueChanged(sender As Object, e As EventArgs) Handles datVon.ValueChanged, datBis.ValueChanged
        initDgv()
    End Sub

    Dim searchdate As Date = CDate("01." & Now.Month & "." & Now.Year)
    Sub initDgv()

        With DataGridView2
            .Columns.Clear()
            If DGV = "B" Then
                btnDGVBelege.BackColor = Color.SteelBlue
                btnDGVBelege.ForeColor = Color.White
                btnDGVKassenbuch.BackColor = Color.Transparent
                btnDGVKassenbuch.ForeColor = Color.DimGray

                Dim benutzerTMP = ""
                Dim benutzerBezTMP = ""
                Dim lgTxt = ""
                If master_Kasse Then
                    benutzerTMP = " AND Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "')  "
                    benutzerBezTMP = " , (SELECT cast(ID as varchar(3))+' '+Name FROM [Personal] WHERE [ID]=b.Benutzer) as BenutzerBez "
                Else
                    benutzerTMP = " And Benutzer=" & PERSONAL.ID & ""
                End If
                If PERSONAL.isLeihgeldkasse Then
                    lgTxt = ",[Fahrer],[Passnummer] "
                End If
                .SET_SQL("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE  (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as  Betrag, b.Ordnungsbegriff,  b.BelegNr,  b.Frachtführer, " &
                                               " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer  " & benutzerBezTMP & lgTxt &
                                                    " FROM tblEABelegnummer as b WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "'   " &
                                                    "  ORDER BY  b.rksv_BelegId DESC, b.[upsize_ts] desc;", "FMZOLL")
                ' .DataSource = SQL.loadDgvBySql("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE  (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as  Betrag, b.Ordnungsbegriff,  b.BelegNr,  b.Frachtführer, " &
                '                                " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer  " & benutzerBezTMP &
                '                                    " FROM tblEABelegnummer as b WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "'   " &
                '                                   "  ORDER BY  b.rksv_BelegId DESC;", "FMZOLL")
                .LOAD()

                .Columns("Betrag").DefaultCellStyle.Format = "C"
                .Columns("Betrag").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
                .Columns("Ordnungsbegriff").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill

                .Columns("rksv_BelegId").HeaderText = "Beleg-Nr"
                .Columns("rksv_BelegId").Width = 55
                .Columns("rksv_BelegId").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
                .Columns("BelegDat").HeaderText = "Datum"
                .Columns("BelegDat").Width = 65
                .Columns("BelegNr").HeaderText = "KB-Bel.Nr"
                .Columns("BelegNr").Width = 55
                .Columns("BelegNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
                .Columns("Belegart").HeaderText = "Art"
                .Columns("Belegart").Width = 30
                .Columns("Belegart").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
                .Columns("Ordnungsbegriff").Width = 160
                .Columns("Frachtführer").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
                .Columns("Beleg_TYP").Visible = False
                .Columns("storniert").HeaderText = "Storn."
                .Columns("storniert").Width = 45
                .Columns("Benutzer").Visible = False

                If PERSONAL.isLeihgeldkasse Then
                    .Columns("Fahrer").Visible = False
                    .Columns("Passnummer").Visible = False
                End If

                If master_Kasse Then
                    .Columns("BenutzerBez").HeaderText = "Benutzer" 'gibts bei bei master
                End If

                For Each r As DataGridViewRow In .Rows
                    If r.Cells("storniert").Value = "JA" Then
                        r.DefaultCellStyle.ForeColor = Color.Red
                    End If
                Next

            ElseIf DGV = "KB" Then
                btnDGVKassenbuch.BackColor = Color.SteelBlue
                btnDGVKassenbuch.ForeColor = Color.White
                btnDGVBelege.BackColor = Color.Transparent
                btnDGVBelege.ForeColor = Color.DimGray

                Dim benutzerTMP = ""
                If master_Kasse Then
                    benutzerTMP = " AND tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "')  "
                Else
                    benutzerTMP = " And tblKassenbuch.Benutzer=" & PERSONAL.ID & ""

                End If


                .SET_SQL("SELECT [JournalNr],[BelegDat],[BelegNr],CASE WHEN Belegart=1 THEN 'E' ELSE 'A' END as Belegart,[Buchungstext],([Betrag]+[Steuerbetrag]) as Brutto,[Konto],[Soll],[Haben],Steuerbetrag as Steuer,tblKassenbuch.Benutzer " &
                  " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer  " &
                  "    WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " &
                  " " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' ORDER BY JournalNr DESC", "FMZOLL")

                ' .DataSource = SQL.loadDgvBySql("SELECT [JournalNr],[BelegDat],[BelegNr],CASE WHEN Belegart=1 THEN 'E' ELSE 'A' END as Belegart,[Buchungstext],([Betrag]+[Steuerbetrag]) as Brutto,[Konto],[Soll],[Haben],Steuerbetrag as Steuer,tblKassenbuch.Benutzer " &
                '   " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer  " &
                '    "    WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " &
                '    " " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' ORDER BY JournalNr DESC", "FMZOLL")
                .LOAD()

                .Columns("JournalNr").Width = 55
                .Columns("JournalNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
                .Columns("Brutto").DefaultCellStyle.Format = "C"
                .Columns("Brutto").Width = 80
                .Columns("Brutto").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
                .Columns("BelegDat").HeaderText = "Datum"
                .Columns("BelegDat").Width = 65
                .Columns("BelegNr").HeaderText = "KB-Bel.Nr"
                .Columns("BelegNr").Width = 55
                .Columns("BelegNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
                .Columns("Belegart").HeaderText = "Art"
                .Columns("Belegart").Width = 30
                .Columns("Belegart").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
                .Columns("Buchungstext").MinimumWidth = 60
                .Columns("Buchungstext").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
                .Columns("Konto").Width = 40
                .Columns("Soll").Width = 80
                .Columns("Soll").DefaultCellStyle.Format = "C"
                .Columns("Haben").Width = 80
                .Columns("Haben").DefaultCellStyle.Format = "C"
                .Columns("Steuer").Width = 80
                .Columns("Steuer").DefaultCellStyle.Format = "C"
                .Columns("Benutzer").Visible = False

            End If
        End With
    End Sub

    Private Sub DataGridView2_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView2.CellDoubleClick
        Try

            If e.RowIndex >= 0 Then
                Dim r As DataGridViewRow = DataGridView2.Rows(e.RowIndex)

                Dim PersonalTmp = PERSONAL
                If r.Cells("Benutzer").Value <> PersonalTmp.ID Then PersonalTmp = FMZOLL_SQL.getPersonalById(r.Cells("Benutzer").Value)

                Dim B As New EABeleg("LOAD", PersonalTmp.Mandant, PersonalTmp.Niederlassung, PersonalTmp.ID, r.Cells("BelegNr").Value, r.Cells("BelegDat").Value)
                openBELEG(B, PersonalTmp)

            End If

        Catch ex As Exception

        End Try
    End Sub

    Sub openBELEG(B As EABeleg, PERSONAL As cPersonal)
        If B Is Nothing Then Exit Sub
        Select Case B.Beleg_TYP
            Case "0"
                MsgBox("Ein NULL-Beleg ist nur einmal verfügbar.")
            Case "E"
                'If B.storniert Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub
                Dim frmBeleg As New frmFremdbeleg(PERSONAL, PERSONAL.Mandant, PERSONAL.Niederlassung, B.Benutzer, B.BelegNr, B.BelegDat)
                frmBeleg.ShowDialog(Me)
            Case "L"
                If B.storniert Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub
                Dim frmBeleg As New frmNacherfassungLeihgeld(PERSONAL, PERSONAL_LG, PERSONAL.Mandant, PERSONAL.Niederlassung, B.Benutzer, B.BelegNr, B.BelegDat)
                frmBeleg.ShowDialog(Me)
            Case Else
                Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL_LG, PERSONAL.Mandant, PERSONAL.Niederlassung, B.Benutzer, B.BelegNr, B.BelegDat)
                frmBeleg.ShowDialog(Me)
        End Select

        init()

        '  End If
    End Sub
    Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
        'OLD!!!!!!!!!!!!!!!!!!!!!!!
        If e.RowIndex >= 0 Then
            Dim r As DataGridViewRow = DataGridView1.Rows(e.RowIndex)
            Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL_LG, PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID, r.Cells("BelegNr").Value, r.Cells("BelegDat").Value)
            frmBeleg.ShowDialog(Me)
            init()
        End If
    End Sub

    Private Sub FlatButton7_Click(sender As Object, e As EventArgs) Handles FlatButton7.Click
        init()
    End Sub

    Private Sub FlatButton6_Click(sender As Object, e As EventArgs) Handles FlatButton6.Click

        Dim print As New frmPrintLayout
        print.Text = "Kassenbuch"

        Dim rpt As New rptKassenbuchBuchhaltung

        Dim frmVonBis As New frmKasseBerichtVonBis
        If frmVonBis.ShowDialog(Me) <> Windows.Forms.DialogResult.OK Then
            Exit Sub
        End If
        Dim von As Date = frmVonBis.datVon.Value.ToShortDateString
        Dim bis As Date = frmVonBis.datBis.Value.ToShortDateString

        'Dim von As Date = CDate("01.01.2016")
        ' Dim bis As Date = CDate("31.01.2016")

        '  rpt.DataSource = SQL.loadDgvBySql("SELECT MIN(JournalNr)as JournalNr, MAX(BelegDat)as BelegDat,MAX(Buchungsdatum)as Buchungsdatum,MAX(belegNr) as BelegNr, (SELECT top 1 t.Buchungstext FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Buchungstext,(SELECT top 1 t.konto FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Konto, SUM(Soll) as Soll,SUM(haben) as Haben " &
        '                                   "FROM [tblKassenbuch] WHERE CAST(Buchungsdatum  as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And Benutzer=" & PERSONAL.ID & " group by BelegNr", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos)
        Dim where = ""

        If frmVonBis.cbxRKSV_only.Checked Then
            where = " AND [rksv_id] IS NOT NULL AND [rksv_BelegId] IS NOT NULL AND rksv_aktiv=1 "

        End If
        Dim sqlStr = ""
        '  sqlStr = sqlStr = "SELECT JournalNr, BelegDat,Buchungstext, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben " &
        '                                      "FROM [tblKassenbuch] WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND  CAST(Buchungsdatum  as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "'  And tblKassenbuch.Benutzer=" & PERSONAL.ID & " And Konto=" & PERSONAL.KassenbuchNr & "  " & where & " ORDER BY Buchungsdatum, JournalNr "

        If master_Kasse Then
            rpt.lblSachbearbeiter.Text = "ADMIN"
            rpt.lblKassenbuchNr.Text = "-"
            rpt.lblMandantNiederlassung.Text = "-"
            sqlStr = "SELECT JournalNr, BelegDat,Buchungstext, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben,tblKassenbuch.Benutzer as Benutzer,tblKassenbuch.Konto as Konto " &
                                             "FROM [tblKassenbuch] INNER JOIN Personal ON Personal.ID = tblKassenbuch.Benutzer  WHERE tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') AND Personal.[KassenbuchNr]=tblKassenbuch.Konto AND tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND  CAST(Buchungsdatum  as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' " & where & " ORDER BY Buchungsdatum, JournalNr "
        Else
            rpt.lblSachbearbeiter.Text = PERSONAL.Name
            rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr
            rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & "  /  " & PERSONAL.Niederlassung

            sqlStr = "SELECT JournalNr, BelegDat,Buchungstext, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben,tblKassenbuch.Benutzer as Benutzer,tblKassenbuch.Konto as Konto " &
                                           "FROM [tblKassenbuch] WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND  CAST(Buchungsdatum  as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "'  And tblKassenbuch.Benutzer=" & PERSONAL.ID & " And Konto=" & PERSONAL.KassenbuchNr & "  " & where & " ORDER BY Buchungsdatum, JournalNr "
        End If
        rpt.DataSource = SQL.loadDgvBySql(sqlStr, "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos)

        rpt.GroupHeader1.DataField = "Buchungsdatum" 'Gruppierung

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

        Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
            Case "IMEX" : rpt.picVERAG.Image = My.Resources.IMEX_LOGO_simple : rpt.Label28.Text = "IMEX Customs Service GmbH"
            Case "ATILLA" : rpt.picVERAG.Image = My.Resources.Atilla : rpt.Label28.Text = "ATILLA Spedition"
            Case Else
        End Select

        Dim GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(von, RKSV.rksv_firma) ' iif (von.Month = 1, von.Year - 1, von.Year)
        Dim sum = 0
        rpt.lblUeberschrift.Text = "Kassenbuch  " & von.ToShortDateString & " bis " & bis.ToShortDateString
        rpt.lblGeschaeftsjahr.Text = GESCHAEFTSJAHR
        'rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & "  /  " & PERSONAL.Niederlassung

        'Dim cnt As Integer = 0
        rpt.lblDat.Text = Now.ToLongDateString
        Dim sumSoll As Double = 0
        Dim sumHaben As Double = 0
        Dim gesSumSoll As Double = 0
        Dim gesSumHaben As Double = 0
        Dim datum = ""
        AddHandler rpt.Detail.Format, Sub()
                                          ' Dim dt As DataTable = SQL.loadDgvBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END  as Konto, SUM(soll)as Soll, SUM(haben) as Haben  FROM [tblKassenbuch] " &
                                          '        " WHERE  Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "'and Benutzer=" & PERSONAL.ID & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL")

                                          ' Dim soll = dt.Rows(0)("Soll")
                                          ' Dim haben = dt.Rows(0)("Haben")
                                          'Dim konto = dt.Rows(0)("Konto")

                                          rpt.lblJournalNr.Text = rpt.Fields.Item("JournalNr").Value()
                                          Dim BuDat As Date = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString
                                          rpt.lblBelegDat.Text = BuDat
                                          Dim GESCHAEFTSJAHR_TMP = cRKSV.getGJ_FIRMA(BuDat, RKSV.rksv_firma) ''IIf(BuDat.Month = 1, BuDat.Year - 1, BuDat.Year)
                                          rpt.lblBelegNr.Text = IIf(rpt.Fields.Item("rksv_BelegId").Value Is DBNull.Value, "(" & rpt.Fields.Item("BelegNr").Value & ")", rpt.Fields.Item("rksv_BelegId").Value())
                                          rpt.lblBuchungstext.Text = rpt.Fields.Item("Buchungstext").Value()
                                          '  rpt.lblKonto.Text = SQL.getValueTxtBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END  as Konto, SUM(soll)as Soll, SUM(haben) as Haben  FROM [tblKassenbuch] " &
                                          '        " WHERE  Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL")
                                          rpt.lblKonto.Text = SQL.getValueTxtBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END  as Konto, SUM(soll)as Soll, SUM(haben) as Haben  FROM [tblKassenbuch] " &
                                                                                      " WHERE  Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' And Benutzer=" & rpt.Fields.Item("Benutzer").Value & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL")

                                          Dim soll = CDbl(rpt.Fields.Item("Soll").Value())
                                          Dim haben = CDbl(rpt.Fields.Item("Haben").Value())

                                          rpt.lblSoll.Text = IIf(soll <> 0, soll.ToString("C"), "")
                                          rpt.lblHaben.Text = IIf(haben <> 0, haben.ToString("C"), "")
                                          ' rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " &
                                          '                                          " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " AND tblKassenbuch.Konto='" & PERSONAL.KassenbuchNr & "' " &
                                          '                                          " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C")

                                          rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " &
                                                                                     " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' And Benutzer=" & rpt.Fields.Item("Benutzer").Value & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " AND tblKassenbuch.Konto='" & rpt.Fields.Item("Konto").Value & "' " &
                                                                                     " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C")
                                          sumSoll += CDbl(rpt.Fields.Item("Soll").Value())
                                          sumHaben += CDbl(rpt.Fields.Item("Haben").Value())
                                          gesSumSoll += CDbl(rpt.Fields.Item("Soll").Value())
                                          gesSumHaben += CDbl(rpt.Fields.Item("Haben").Value())
                                          '  rpt.lblLeistungsNr.Text = rpt.Fields.Item("clmnAnzahl").Value()
                                          ' rpt.lblEinzelpreis.Text = CDbl(rpt.Fields.Item("clmnPreis").Value()).ToString("C")
                                          ' sum += rpt.Fields.Item("clmnBetrag").Value()
                                          datum = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString ' Im Footer wird bereits das nächste Datumgenommen, darum hier befüllt
                                      End Sub
        AddHandler rpt.GroupHeader1.Format, Sub()
                                                sumSoll = 0
                                                sumHaben = 0
                                            End Sub
        AddHandler rpt.GroupFooter1.Format, Sub()
                                                rpt.lblSummeBuchungsDat.Text = "Summe Buchungsdatum " & datum & ":"
                                                rpt.lblSollSumme.Text = sumSoll.ToString("C")
                                                rpt.lblHabenSumme.Text = sumHaben.ToString("C")
                                                ' rpt.lblEinzelpreis.Text = CDbl(rpt.Fields.Item("clmnPreis").Value()).ToString("C")
                                                ' sum += rpt.Fields.Item("clmnBetrag").Value()
                                            End Sub
        AddHandler rpt.ReportFooter1.Format, Sub()
                                                 rpt.lblSollGesamtSumme.Text = gesSumSoll.ToString("C")
                                                 rpt.lblHabenGesamtSumme.Text = gesSumHaben.ToString("C")
                                             End Sub

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

    Private Sub FlatButton2_Click(sender As Object, e As EventArgs) Handles FlatButton2.Click

        Dim print As New frmPrintLayout
        print.Text = "Kassenbuch"
        Dim rpt As New rptKassenbuchBuchhaltungDetails

        Dim frmVonBis As New frmKasseBerichtVonBis
        If frmVonBis.ShowDialog(Me) <> Windows.Forms.DialogResult.OK Then
            Exit Sub
        End If
        Dim von As Date = frmVonBis.datVon.Value.ToShortDateString
        Dim bis As Date = frmVonBis.datBis.Value.ToShortDateString
        Dim GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(Now, RKSV.rksv_firma) ' IIf(von.Month = 1, von.Year - 1, von.Year)

        '  rpt.DataSource = SQL.loadDgvBySql("SELECT MIN(JournalNr)as JournalNr, MAX(BelegDat)as BelegDat,MAX(Buchungsdatum)as Buchungsdatum,MAX(belegNr) as BelegNr, (SELECT top 1 t.Buchungstext FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Buchungstext,(SELECT top 1 t.konto FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Konto, SUM(Soll) as Soll,SUM(haben) as Haben " &
        '                                    "FROM [tblKassenbuch] WHERE CAST(Buchungsdatum  as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And Benutzer=" & PERSONAL.ID & " group by BelegNr", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos)
        Dim where = ""
        Dim benutzerTMP = ""
        If master_Kasse Then
            rpt.lblSachbearbeiter.Text = "ADMIN"
            rpt.lblKassenbuchNr.Text = "-"
            rpt.lblMandantNiederlassung.Text = "-"
            benutzerTMP = " AND tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "')  "
        Else
            rpt.lblSachbearbeiter.Text = PERSONAL.Name
            rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr
            rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & "  /  " & PERSONAL.Niederlassung
            benutzerTMP = " And Benutzer=" & PERSONAL.ID & ""
        End If
        If frmVonBis.cbxRKSV_only.Checked Then
            where = " AND [rksv_id] IS NOT NULL AND [rksv_BelegId] IS NOT NULL AND rksv_aktiv=1 "

        End If
        rpt.DataSource = SQL.loadDgvBySql("SELECT JournalNr, BelegDat,Buchungstext,Konto, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben,isnull(Bez,'') as Bez,CASE WHEN Steuertyp=1 THEN Steuerbetrag Else 0 END as Umsatzsteuer,CASE WHEN Steuertyp=2 THEN Steuerbetrag Else 0 END as Vorsteuer " &
                                                " FROM [tblKassenbuch] LEFT JOIN [tblSteuersätze] ON [Nr]=Steuer " &
                                          "  WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND CAST(Buchungsdatum  as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' " & benutzerTMP & " " & where & " ORDER BY Buchungsdatum, JournalNr ", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos)

        rpt.GroupHeader1.DataField = "Buchungsdatum" 'Gruppierung

        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 = "Buchungsbericht  " & von.ToShortDateString & " bis " & bis.ToShortDateString
        'rpt.lblSachbearbeiter.Text = PERSONAL.Name
        ' rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr
        ' rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & "  /  " & PERSONAL.Niederlassung
        rpt.lblGeschaeftsjahr.Text = GESCHAEFTSJAHR

        Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
            Case "IMEX" : rpt.picVERAG.Image = My.Resources.IMEX_LOGO_simple : rpt.Label28.Text = "IMEX Customs Service GmbH"
            Case "ATILLA" : rpt.picVERAG.Image = My.Resources.Atilla : rpt.Label28.Text = "ATILLA Spedition"
            Case Else
        End Select

        'Dim cnt As Integer = 0
        rpt.lblDat.Text = Now.ToLongDateString
        Dim sumSoll As Double = 0
        Dim sumHaben As Double = 0
        Dim gesSumSoll As Double = 0
        Dim gesSumHaben As Double = 0

        Dim sumUSt As Double = 0
        Dim sumVorSt As Double = 0
        Dim gesSumUSt As Double = 0
        Dim gesSumVorSt As Double = 0
        Dim datum = ""
        AddHandler rpt.Detail.Format, Sub()
                                          ' Dim dt As DataTable = SQL.loadDgvBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END  as Konto, SUM(soll)as Soll, SUM(haben) as Haben  FROM [tblKassenbuch] " &
                                          '        " WHERE  Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "'and Benutzer=" & PERSONAL.ID & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL")

                                          ' Dim soll = dt.Rows(0)("Soll")
                                          ' Dim haben = dt.Rows(0)("Haben")
                                          'Dim konto = dt.Rows(0)("Konto")

                                          rpt.lblJournalNr.Text = rpt.Fields.Item("JournalNr").Value()
                                          Dim BuDat As Date = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString
                                          rpt.lblBelegDat.Text = BuDat
                                          Dim GESCHAEFTSJAHR_TMP = cRKSV.getGJ_FIRMA(BuDat, RKSV.rksv_firma) 'IIf(BuDat.Month = 1, BuDat.Year - 1, BuDat.Year)
                                          rpt.lblBelegNr.Text = IIf(rpt.Fields.Item("rksv_BelegId").Value Is DBNull.Value, "(" & rpt.Fields.Item("BelegNr").Value & ")", rpt.Fields.Item("rksv_BelegId").Value())
                                          rpt.lblBuchungstext.Text = rpt.Fields.Item("Buchungstext").Value()
                                          rpt.lblKonto.Text = rpt.Fields.Item("Konto").Value()
                                          Dim soll = CDbl(rpt.Fields.Item("Soll").Value())
                                          Dim haben = CDbl(rpt.Fields.Item("Haben").Value())

                                          rpt.lblSoll.Text = IIf(soll <> 0, soll.ToString("C"), "")
                                          rpt.lblHaben.Text = IIf(haben <> 0, haben.ToString("C"), "")
                                          rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " &
                                                                                    " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " AND tblKassenbuch.Konto='" & rpt.Fields.Item("Konto").Value() & "' " &
                                                                                    " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C")

                                          '  If Not rpt.Fields.Item("Bez").Value() Is DBNull.Value Then
                                          rpt.lblSteuer.Text = rpt.Fields.Item("Bez").Value()
                                          '  End If

                                          Dim ust = CDbl(rpt.Fields.Item("Umsatzsteuer").Value())
                                          Dim vorst = CDbl(rpt.Fields.Item("Vorsteuer").Value())
                                          rpt.lblUSt.Text = IIf(ust <> 0, ust.ToString("C"), "")
                                          rpt.lblVorst.Text = IIf(vorst <> 0, vorst.ToString("C"), "")

                                          sumSoll += soll
                                          sumHaben += haben
                                          gesSumSoll += soll
                                          gesSumHaben += haben

                                          sumUSt += ust
                                          sumVorSt += vorst
                                          gesSumUSt += ust
                                          gesSumVorSt += vorst

                                          datum = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString ' Im Footer wird bereits das nächste Datumgenommen, darum hier befüllt
                                      End Sub
        AddHandler rpt.GroupHeader1.Format, Sub()
                                                sumSoll = 0
                                                sumHaben = 0
                                                sumUSt = 0
                                                sumVorSt = 0
                                            End Sub
        AddHandler rpt.GroupFooter1.Format, Sub()
                                                rpt.lblSummeBuchungsDat.Text = "Summe Buchungsdatum " & datum & ":"
                                                rpt.lblSollSumme.Text = sumSoll.ToString("C")
                                                rpt.lblHabenSumme.Text = sumHaben.ToString("C")
                                                rpt.lblUstSumme.Text = sumUSt.ToString("C")
                                                rpt.lblVorstSumme.Text = sumVorSt.ToString("C")

                                            End Sub
        AddHandler rpt.ReportFooter1.Format, Sub()
                                                 rpt.lblSollGesamtSumme.Text = gesSumSoll.ToString("C")
                                                 rpt.lblHabenGesamtSumme.Text = gesSumHaben.ToString("C")
                                                 rpt.lblUstGesamtSumme.Text = gesSumUSt.ToString("C")
                                                 rpt.lblVorStGesamtSumme.Text = gesSumVorSt.ToString("C")
                                             End Sub

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

    Private Sub FlatButton5_Click(sender As Object, e As EventArgs) Handles FlatButton5.Click

        Dim print As New frmPrintLayout
        print.Text = "Kassenbuch"
        Dim rpt As New rptKassenbuchKontenBericht

        Dim frmVonBis As New frmKasseBerichtVonBis
        If frmVonBis.ShowDialog(Me) <> Windows.Forms.DialogResult.OK Then
            Exit Sub
        End If
        Dim von As Date = frmVonBis.datVon.Value.ToShortDateString
        Dim bis As Date = frmVonBis.datBis.Value.ToShortDateString
        Dim GESCHAEFTSJAHR = cRKSV.getGJ_FIRMA(von, RKSV.rksv_firma) ' IIf(von.Month = 1, von.Year - 1, von.Year)

        Dim where = ""
        Dim benutzerTMP = ""
        If master_Kasse Then
            rpt.lblSachbearbeiter.Text = "ADMIN"
            rpt.lblKassenbuchNr.Text = "-"
            rpt.lblMandantNiederlassung.Text = "-"
            benutzerTMP = " AND tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "')  "
        Else
            rpt.lblSachbearbeiter.Text = PERSONAL.Name
            rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr
            rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & "  /  " & PERSONAL.Niederlassung
            benutzerTMP = " And Benutzer=" & PERSONAL.ID & ""
        End If
        If frmVonBis.cbxRKSV_only.Checked Then
            where = " AND tblKassenbuch.[rksv_id] IS NOT NULL AND tblKassenbuch.[rksv_BelegId] IS NOT NULL AND tblKassenbuch.rksv_aktiv=1 "
        End If

        rpt.DataSource = SQL.loadDgvBySql(" SELECT MIN(tblKassenbuch.Konto) as Konto,isNull(MIN(tblKonto.Bez),'') as Bezeichnung, SUM(ISNULL(Haben,0)) AS Habenbetrag,SUM(ISNULL(Soll,0)) AS Sollbetrag, MIN(tblSteuersätze.Bez) as Steuer, SUM(CASE WHEN Steuertyp=1 THEN Steuerbetrag Else 0 END) as Umsatzsteuer,SUM(CASE WHEN Steuertyp=2 THEN Steuerbetrag Else 0 END) as Vorsteuer " &
                                           " FROM tblKassenbuch LEFT JOIN tblKonto ON tblKassenbuch.Konto = tblKonto.KontoNr INNER JOIN tblSteuersätze ON tblKassenbuch.Steuer = tblSteuersätze.Nr  INNER JOIN Personal ON tblKassenbuch.Benutzer = Personal.ID " &
                                           " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND tblKassenbuch.Konto<>[Personal].[KassenbuchNr] AND CAST(Buchungsdatum  as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' " & benutzerTMP & " " & where & " GROUP BY Konto ORDER BY Konto ", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos)


        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 = "Summen-Bericht  " & von.ToShortDateString & " bis " & bis.ToShortDateString
        'rpt.lblSachbearbeiter.Text = PERSONAL.Name
        'rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr
        rpt.lblGeschaeftsjahr.Text = GESCHAEFTSJAHR
        'rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & "  /  " & PERSONAL.Niederlassung

        Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
            Case "IMEX" : rpt.picVERAG.Image = My.Resources.IMEX_LOGO_simple : rpt.Label28.Text = "IMEX Customs Service GmbH"
            Case "ATILLA" : rpt.picVERAG.Image = My.Resources.Atilla : rpt.Label28.Text = "ATILLA Spedition"
            Case Else
        End Select

        'Dim cnt As Integer = 0
        rpt.lblDat.Text = Now.ToLongDateString
        Dim gesSumSoll As Double = 0
        Dim gesSumHaben As Double = 0

        Dim gesSumUSt As Double = 0
        Dim gesSumVorSt As Double = 0
        Dim datum = ""
        AddHandler rpt.Detail.Format, Sub()
                                          rpt.lblBuchungstext.Text = If(rpt.Fields.Item("Bezeichnung") IsNot Nothing, If(rpt.Fields.Item("Bezeichnung").Value(), ""), "")
                                          rpt.lblKonto.Text = rpt.Fields.Item("Konto").Value()
                                          Dim soll = CDbl(rpt.Fields.Item("Sollbetrag").Value())
                                          Dim haben = CDbl(rpt.Fields.Item("Habenbetrag").Value())

                                          rpt.lblSollbetrag.Text = IIf(soll <> 0, soll.ToString("C"), "")
                                          rpt.lblHabenbetrag.Text = IIf(haben <> 0, haben.ToString("C"), "")

                                          rpt.lblSteuer.Text = rpt.Fields.Item("Steuer").Value()

                                          Dim ust = CDbl(rpt.Fields.Item("Umsatzsteuer").Value())
                                          Dim vorst = CDbl(rpt.Fields.Item("Vorsteuer").Value())
                                          rpt.lblUmsatzsteuer.Text = IIf(ust <> 0, ust.ToString("C"), "")
                                          rpt.lblVorsteuer.Text = IIf(vorst <> 0, vorst.ToString("C"), "")

                                          gesSumSoll += soll
                                          gesSumHaben += haben

                                          gesSumUSt += ust
                                          gesSumVorSt += vorst
                                      End Sub

        AddHandler rpt.ReportFooter1.Format, Sub()
                                                 rpt.lblSollGesamtSumme.Text = gesSumSoll.ToString("C")
                                                 rpt.lblHabenGesamtSumme.Text = gesSumHaben.ToString("C")
                                                 rpt.lblUmsatzsteuerGesamtsumme.Text = gesSumUSt.ToString("C")
                                                 rpt.lblVorsteuerGesamtsumme.Text = gesSumVorSt.ToString("C")
                                             End Sub

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


    Private Sub FlatButton9_Click(sender As Object, e As EventArgs) Handles btnBelegAusgang.Click, btnBelegEingang.Click
        If KennwortOK() Then
            Dim frmFremdbeleg As New frmFremdbeleg
            frmFremdbeleg.Art = IIf(sender Is btnBelegAusgang, 2, 1)
            frmFremdbeleg.PERSONAL = PERSONAL
            ' frmFremdbeleg.GESCHAEFTSJAHR = GESCHAEFTSJAHR
            frmFremdbeleg.ShowDialog(Me)
            init()
        End If
    End Sub




    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        MsgBox("Leider noch nicht verfügbar")
        Exit Sub
        Dim client As RKSVWcfClient = New RKSVWcfClient()
        client.Endpoint.Address = New System.ServiceModel.EndpointAddress("http://192.168.0.106:8733/Design_Time_Addresses/RKSVCompleteServer/Service1/?singleWsdl")
        client.Open()
        '   svcRKSV.DBUserCredentials m_credentials = new svcRKSV.DBUserCredentials();
        Dim credentials As New SDL.RKSVServer.DBUserCredentials

        credentials.Database = "RKSVWcfDB"
        credentials.Server = "AVISO\SQLEXPRESS"

        Select Case cboKassen._value
            Case "VERAG-SUB-KASSE-ZOLL"
                credentials.Username = "Admin"
                credentials.Password = "verag#2"
                credentials.CashboxID = "VERAG-SUB-KASSE-ZOLL"
                credentials.CompanyGUID = "9119d9ae-f549-4a0f-a50f-0500ec7ca059"

                Dim certificate = ""
                Dim certificateChain = ""
                Dim exportResult = ""
                cRKSV.getDEP(certificate, exportResult)



                'If (client.ExportJWS()) Then
                '  Else
                'MessageBox.Show(answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                '                End If
            Case ""
                MsgBox("Keine Kasse gewählt!")
                Exit Sub
        End Select

    End Sub


    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        Dim f As New frmBelegFinden
        f.Standard_RKSV_KasseId = PERSONAL.cRKSV_Kasse.rksv_id
        If Not master_Kasse Then f.BenutzerId = PERSONAL.ID

        If f.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
            Select Case f.art
                Case "NEU"
                    openBelegRKSVId(f.txtBelegNrNeu.Text)
                Case "ALT"
                    Dim PERSONALTmp As cPersonal = FMZOLL_SQL.getPersonalById(f.cboBenutzer._value)
                    Dim B As New EABeleg("LOAD", PERSONALTmp.Mandant, PERSONALTmp.Niederlassung, PERSONALTmp.ID, f.txtBelegNrAlt.Text, f.dat.Value)
                    openBELEG(B, PERSONALTmp)
            End Select
        End If
    End Sub

    Sub openBelegRKSVId(rksv_beleg_Id)
        If rksv_beleg_Id <> "" Then
            '  Dim dt As DataTable = SQL.loadDgvBySql("SELECT *  FROM [tblEABelegnummer]  WHERE [Mandant]='" & PERSONAL.Mandant & "' AND Niederlassung='" & PERSONAL.Niederlassung & "' AND rksv_BelegId='" & rksv_beleg_Id & "'", "FMZOLL")
            Dim dt As DataTable = SQL.loadDgvBySql("SELECT *  FROM [tblEABelegnummer]  WHERE [rksv_id]='" & PERSONAL.cRKSV_KasseID & "' AND rksv_BelegId='" & rksv_beleg_Id & "'", "FMZOLL")
            If dt.Rows.Count > 0 Then
                '   If dt.Rows(0)("storniert") Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub

                Dim PERSONALTmp As cPersonal = FMZOLL_SQL.getPersonalById(dt.Rows(0)("Benutzer"))


                'Wenn LeigeldBeleg oder Kasse Ein/Ausgang, dann nur Ersteller!
                Select Case dt.Rows(0)("Beleg_TYP")
                    Case "E", "L"
                        If master_Kasse = False Then
                            If dt.Rows(0)("Benutzer") <> PERSONAL.ID Then
                                MsgBox("Der Beleg wurde von einem anderen Beutzer erstellt. " & vbNewLine & " Bitte wenden Sie sich an: '" & PERSONALTmp.Name & "'.") : Exit Sub
                            End If
                        End If
                End Select


                Select Case dt.Rows(0)("Beleg_TYP")
                    Case "0"
                        MsgBox("Ein NULL-Beleg ist nur einmal verfügbar.")
                    Case "E"
                        If dt.Rows(0)("storniert") Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub
                        Dim frmBeleg As New frmFremdbeleg(PERSONALTmp, PERSONALTmp.Mandant, PERSONALTmp.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat"))
                        frmBeleg.ShowDialog(Me)
                    Case "L"
                        If dt.Rows(0)("storniert") Then MsgBox("Der Beleg wurde bereits storiniert!") : Exit Sub
                        Dim frmBeleg As New frmNacherfassungLeihgeld(PERSONALTmp, PERSONAL_LG, PERSONAL.Mandant, PERSONALTmp.Niederlassung, PERSONALTmp.ID, dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat"))
                        frmBeleg.ShowDialog(Me)
                    Case Else
                        Dim frmBeleg As New frmBelegNeu(PERSONALTmp, PERSONAL_LG, PERSONALTmp.Mandant, PERSONALTmp.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat"))
                        frmBeleg.ShowDialog(Me)
                End Select

                init()
            Else
                MsgBox("Keine Daten gefunden!")
            End If
        End If
    End Sub

    Private Sub btnEinnahmeBeleg_Click(sender As Object, e As EventArgs) Handles btnDGVBelege.Click
        DGV = "B"
        initDgv()
    End Sub

    Private Sub btnAusgabebeleg_Click(sender As Object, e As EventArgs) Handles btnDGVKassenbuch.Click
        DGV = "KB"
        initDgv()
    End Sub

    Private Sub btnExcel_Click(sender As Object, e As EventArgs) Handles btnExcel.Click
        Me.Cursor = Cursors.WaitCursor
        cProgramFunctions.genExcelFromDGV_NEW(DataGridView2, True)
        Me.Cursor = Cursors.Default
    End Sub

    Private Sub frmKassenbuch_Shown(sender As Object, e As EventArgs) Handles Me.Shown
        Me.Height = My.Computer.Screen.WorkingArea.Height
        Me.Top = 0
        DataGridView2.ClearSelection()
        If master_Kasse Then
            btnBelegKunde.Enabled = False
            btnBelegGSKunde.Enabled = False
            btnBelegAusgang.Enabled = False
            btnBelegEingang.Enabled = False
            btnBelegLeihgeld.Enabled = False
        End If
        If PERSONAL.cRKSV_Kasse IsNot Nothing Then lblRKSV_KASSEN_Bez.Text = PERSONAL.cRKSV_Kasse.rksv_bez
        If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then
            btnBelegLeihgeld.Visible = False
            btnBelegGSKunde.Visible = False
        End If
        If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then 'vorher IMEX
            If Not PERSONAL.isLeihgeldkasse Then btnBelegLeihgeld.Visible = False
            btnBelegGSKunde.Visible = False 'VERAG-MDM KAsse bei IMEX
            If PERSONAL.cRKSV_Kasse.rksv_id = 1 Then
                btnBelegGSKunde.Visible = True
                btnBelegKunde.Enabled = False
            End If
        End If

        If PERSONAL.cRKSV_Kasse Is Nothing Then
            MsgBox("Keine Kasse hinterlegt!")
            Me.Close()
        End If
        If PERSONAL.cRKSV_Kasse.rksv_id = 5 Then
            btnBelegKunde.Enabled = False
            btnBelegGSKunde.Enabled = False
            btnBelegLeihgeld.Enabled = False
        End If
        Me.BringToFront()
    End Sub

    Private Sub Button6_Click(sender As Object, e As EventArgs) Handles btnStorno.Click
        Dim f As New frmBelegFinden
        f.Standard_RKSV_KasseId = PERSONAL.cRKSV_Kasse.rksv_id
        If Not master_Kasse Then f.BenutzerId = PERSONAL.ID

        If master_Kasse Then
            f.cbxStornoErzwingenAdmin.Visible = True
            f.cbxStornoRKSV.Visible = True
            f.cbxStornoBELEG.Visible = True
        End If
        Dim BELEGTmp As EABeleg = Nothing
        If f.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
            Select Case f.art
                Case "NEU"
                    Dim dt As DataTable = SQL.loadDgvBySql("SELECT *  FROM [tblEABelegnummer]  WHERE rksv_BelegId='" & f.txtBelegNrNeu.Text & "' AND [rksv_id]='" & PERSONAL.cRKSV_Kasse.rksv_id & "' ", "FMZOLL")
                    If dt.Rows.Count > 0 Then
                        BELEGTmp = New EABeleg("LOAD", PERSONAL.Mandant, PERSONAL.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat"))
                    End If
                Case "ALT"
                    Dim PERSONALTmp As cPersonal = FMZOLL_SQL.getPersonalById(f.cboBenutzer._value)
                    BELEGTmp = New EABeleg("LOAD", PERSONALTmp.Mandant, PERSONALTmp.Niederlassung, PERSONALTmp.ID, f.txtBelegNrAlt.Text, f.dat.Value)
            End Select
            If BELEGTmp IsNot Nothing Then

                If cRKSV.getGJ(Now) <> cRKSV.getGJ(BELEGTmp.BelegDat) Then
                    MsgBox("Das Geschäftsjahr im Beleg ist '" & cRKSV.getGJ(BELEGTmp.BelegDat) & "', es können nur Belege im laufenden Geschäftsjahr gebucht werden. Aktion wird abgebrochen!")
                    Exit Sub
                End If





                'NUR KB
                If f.cbxStornoRKSV.Checked Or f.cbxStornoBELEG.Checked Or f.cbxStornoErzwingenAdmin.Checked Then
                    Dim grund2 = InputBox("ADMIN-Storno (" & If(f.cbxStornoRKSV.Checked, " -RKSV-Tabelle- ", "") & If(f.cbxStornoBELEG.Checked, " -BELEG-Tabelle- ", "") & If(f.cbxStornoErzwingenAdmin.Checked, " -KASSENBUCH-Tabelle- ", "") & "):" & vbNewLine & vbNewLine & "Betrag: " & BELEGTmp.rksv_umsatz & vbNewLine & "Datum: " & BELEGTmp.BelegDat & vbNewLine & vbNewLine & "Bitte geben Sie einen Stornogrund an:" & vbNewLine, "Storno")
                    If grund2 = "" Then
                        MsgBox("Kein Stornotext, Aktion wird abgebrochen")
                        Exit Sub
                    End If

                    Dim KASSETmp As New cRKSV_Kasse(BELEGTmp.rksv_id)
                    ' Dim OLD_rksv_BelegId = BELEGTmp.rksv_BelegId
                    If BELEGTmp.BelegDat < Now.AddMonths(-2) And Not master_Kasse Then
                        MsgBox("Beleg älter als 2 Monate, Aktion wird abgebrochen") 'alte Belege nicht mehr storinieren
                        Exit Sub
                    End If

                    'If KASSETmp.StornoIncreaseBelegCnt Then ' Ob beim Storno eine neue BelegNr vergeben werden soll
                    '    Dim RKSV_Beleg_Id = KASSETmp.INCREASE_BELEG_UMSATZ(BELEGTmp.rksv_umsatz)
                    '    BELEGTmp.rksv_BelegId = RKSV_Beleg_Id
                    'End If

                    If f.cbxStornoErzwingenAdmin.Checked Then
                        BELEGTmp = cRKSV.STORNO(BELEGTmp, grund2, True, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung
                    End If

                    If f.cbxStornoRKSV.Checked Then 'nur RKSV!!!!!!!
                        ' BELEGTmp = cRKSV.STORNO(BELEGTmp, grund, Fal) 'Beleg storno und Kassenbuch Gegenbuchung
                        If KASSETmp IsNot Nothing Then
                            KASSETmp.INCREASE_ONLY_BELEG_UMSATZ(BELEGTmp.rksv_umsatz * -1) ' Bei Storno wird der Umsatz vermindert!
                            Dim QRQString As String = ""
                            Dim LastJWS As String = ""
                            Dim answer = ""
                            If KASSETmp.rksv_aktiv Then
                                If Not cRKSV.stornoRKSV(KASSETmp, BELEGTmp.BelegDat, BELEGTmp.Steuerschlüssel, BELEGTmp.rksv_BelegId, BELEGTmp.rksv_umsatz, QRQString, LastJWS, answer) Then
                                    MessageBox.Show("Fehler bei der RKSV-Storinerung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                                    Exit Sub
                                End If
                            End If
                            If KASSETmp.rksvDE_aktiv Then
                                Dim PERSONALTmp1 As cPersonal = FMZOLL_SQL.getPersonalById(BELEGTmp.Benutzer)
                                If Not cRKSV.stornoRKSV_DE(PERSONALTmp1, BELEGTmp, KASSETmp, BELEGTmp.rksv_BelegId, BELEGTmp.rksv_BelegId, BELEGTmp.rksv_umsatz, QRQString, LastJWS, False, answer) Then
                                    MessageBox.Show("Fehler bei der RKSV-Storinerung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                                    Exit Sub
                                End If
                            End If
                        End If
                    End If

                    If f.cbxStornoBELEG.Checked Then 'nur BELEG!!!!!!!
                        BELEGTmp = cRKSV.STORNO_BELEG_ONLY(BELEGTmp, grund2) 'Beleg storno 
                    End If

                    init()
                    Exit Sub
                End If
                'End If
                'If BELEGTmp IsNot Nothing Then

                ' BELEGTmp = New EABeleg("LOAD", PERSONAL.Mandant, PERSONAL.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat"))

                Dim PERSONALTmp As cPersonal = FMZOLL_SQL.getPersonalById(BELEGTmp.Benutzer)
                    If master_Kasse = False Then
                        If BELEGTmp.Benutzer <> PERSONAL.ID Then MsgBox("Der Beleg wurde von einem anderen Beutzer erstellt. " & vbNewLine & " Bitte wenden Sie sich an: '" & PERSONALTmp.Name & "'.") : Exit Sub
                    End If
                    Dim grund = InputBox("Möchten Sie den Beleg wirklich storinieren?" & vbNewLine & vbNewLine & "Betrag: " & BELEGTmp.rksv_umsatz & vbNewLine & "Datum: " & BELEGTmp.BelegDat & vbNewLine & vbNewLine & "Bitte geben Sie einen Stornogrund an:" & vbNewLine, "Storno")
                    If grund = "" Then
                        MsgBox("Kein Stornotext, Aktion wird abgebrochen")
                        Exit Sub
                    End If


                    If BELEGTmp.BelegNr <= 0 Then MsgBox("Fehler beim Laden der Belegdaten") : Exit Sub


                    If Not BELEGTmp.gebuchtStorno Then 'f.cbxStornoErzwingenAdmin.Checked=stono erzwingen

                    Dim OLD_rksv_BelegId = BELEGTmp.rksv_BelegId
                    Dim KASSETmp As New cRKSV_Kasse(BELEGTmp.rksv_id)

                    If KASSETmp.rksv_StornoIncreaseBelegCnt Then ' Ob beim Storno eine neue BelegNr vergeben werden soll
                        Dim RKSV_Beleg_Id = KASSETmp.INCREASE_BELEG_UMSATZ(BELEGTmp.rksv_umsatz)
                        BELEGTmp.rksv_BelegIdStorno = RKSV_Beleg_Id
                    End If

                    BELEGTmp = cRKSV.STORNO(BELEGTmp, grund, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung
                    '    BELEGTmp = cRKSV.STORNO(BELEGTmp, "") 'Beleg storno und Kassenbuch Gegenbuchung

                    ' Dim summe As Double = 0
                    ' For Each p In BELEGTmp.POS
                    'summe += p.Betrag
                    '  Next
                    '  summe = summe * -1
                    ' Dim KASSETmp As New cRKSV_Kasse(BELEGTmp.rksv_id)


                    If KASSETmp IsNot Nothing Then
                        KASSETmp.INCREASE_ONLY_BELEG_UMSATZ(BELEGTmp.rksv_umsatz * -1) ' Bei Storno wird der Umsatz vermindert!
                        Dim QRQString As String = ""
                        Dim LastJWS As String = ""
                        Dim answer = ""
                        If KASSETmp.rksv_aktiv Then
                            If Not cRKSV.stornoRKSV(KASSETmp, BELEGTmp.BelegDat, BELEGTmp.Steuerschlüssel, If(BELEGTmp.rksv_BelegIdStorno, BELEGTmp.rksv_BelegId), BELEGTmp.rksv_umsatz, QRQString, LastJWS, answer) Then
                                'FEHLER!!
                                If KASSETmp.rksv_StornoIncreaseBelegCnt Then BELEGTmp.rksv_BelegIdStorno = Nothing
                                BELEGTmp = cRKSV.STORNO_RUECKGAENGIG(BELEGTmp, grund, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung
                                MessageBox.Show("Fehler bei der RKSV-Storinerung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                                Exit Sub
                            End If
                        End If
                        If KASSETmp.rksvDE_aktiv Then
                            If Not cRKSV.stornoRKSV_DE(PERSONALTmp, BELEGTmp, KASSETmp, If(BELEGTmp.rksv_BelegIdStorno, BELEGTmp.rksv_BelegId), BELEGTmp.rksv_BelegId, BELEGTmp.rksv_umsatz, QRQString, LastJWS, False, answer) Then
                                'FEHLER!!
                                If KASSETmp.rksv_StornoIncreaseBelegCnt Then BELEGTmp.rksv_BelegIdStorno = Nothing
                                BELEGTmp = cRKSV.STORNO_RUECKGAENGIG(BELEGTmp, grund, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung
                                MessageBox.Show("Fehler bei der RKSV-Storinerung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                                Exit Sub
                            End If
                        End If
                    End If

                        Select Case BELEGTmp.Beleg_TYP 'dt.Rows(0)("Beleg_TYP")
                            Case "E"
                                Dim KBEntry As cKassenbuch = Nothing
                                Dim KBEntryGB As cKassenbuch = Nothing
                            If cRKSV.getKB(BELEGTmp, PERSONALTmp, KBEntry, KBEntryGB, KASSETmp.rksv_firma) Then
                                cRKSV.printFremdBeleg(BELEGTmp, KASSETmp, PERSONALTmp, KBEntry, KBEntryGB, "") 'Beleg drucken
                            End If
                        Case "L"
                                cRKSV.printKundenBelegLG(BELEGTmp, KASSETmp, PERSONALTmp, "", "LG") 'Beleg drucken
                            Case "A"
                                cRKSV.printKundenBelegLG(BELEGTmp, KASSETmp, PERSONALTmp, "", "A") 'Beleg drucken
                            Case Else
                                cRKSV.printKundenBeleg(BELEGTmp, KASSETmp, PERSONALTmp, "", False) 'Beleg drucken
                        End Select

                        MsgBox("Beleg storniert!")
                        'Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL.Mandant, PERSONAL.Niederlassung, dt.Rows(0)("Benutzer"), dt.Rows(0)("BelegNr"), dt.Rows(0)("BelegDat"))
                        ' frmBeleg.ShowDialog(Me)
                        ' init() If Not BELEGTmp.gebuchtStorno Then
                    Else
                        MsgBox("Beleg wurde bereits storniert!")
                    End If
                    init()
                Else
                    MsgBox("Keine Daten gefunden!")
                End If
            End If

    End Sub

    Private Sub Button7_Click(sender As Object, e As EventArgs) Handles btnBelegLeihgeld.Click
        If KennwortOK() Then
            Try
                Dim frmNacherfassungLeihgeld As New frmNacherfassungLeihgeld(PERSONAL, PERSONAL_LG)
                frmNacherfassungLeihgeld.ShowDialog(Me)
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
            init()
        End If
    End Sub

    Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
        Label18.ForeColor = Color.Black
        If Not IsNumeric(cboKassen._value) Then
            Label18.ForeColor = Color.Red
            Exit Sub
        End If

        Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox
        cRKSV.printNULLBeleg(KASSE, PERSONAL, True, KASSE.rksv_firma)
        '  End If
    End Sub

    Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
        Label18.ForeColor = Color.Black
        If Not IsNumeric(cboKassen._value) Then
            Label18.ForeColor = Color.Red
            Exit Sub
        End If
        Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox
        cRKSV.printAESKey(KASSE, "") 'Beleg drucken

    End Sub

    Private Sub Button6_Click_1(sender As Object, e As EventArgs) Handles Button6.Click
        master_Kasse = Not master_Kasse
        init()
    End Sub

    Private Sub Button10_Click(sender As Object, e As EventArgs) Handles btnBelegGSKunde.Click
        If KennwortOK() Then

            lblERRKennwort.Visible = False
            Dim frmBeleg As New frmBelegNeu(PERSONAL, PERSONAL_LG, "A")
            frmBeleg.ShowDialog(Me)
            init()

        End If
    End Sub

  
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim f As New frmKassenbuchPWD(PERSONAL)
        If f.ShowDialog() = Windows.Forms.DialogResult.OK Then
            Dim frmSecureLoginKassenbuch As New SDL.frmSecureLoginKassenbuch()
            frmSecureLoginKassenbuch.openKB = True
            frmSecureLoginKassenbuch.ShowDialog(Me.Parent)
            Me.Close()
        End If
    End Sub

    Private Sub Button7_Click_1(sender As Object, e As EventArgs) Handles Button7.Click
        Dim reader = InputBox("Bitte ReaderNamen angeben:")

        If reader <> "" Then
            Dim serial = cRKSV.getCardSerialInReader(cboKassen._value, reader)
            If serial <> "" Then MsgBox(serial) Else MsgBox("Karte nicht gefunden!")
        End If
    End Sub

    Private Sub Button10_Click_1(sender As Object, e As EventArgs) Handles Button10.Click

        Dim print As New frmPrintLayout
        print.Text = "Kassenbuch"

        Dim rpt As New rptKassenbuchLeihgeld2

        Dim frmVonBis As New frmKasseBerichtVonBis
        If frmVonBis.ShowDialog(Me) <> Windows.Forms.DialogResult.OK Then
            Exit Sub
        End If
        Dim von As Date = frmVonBis.datVon.Value.ToShortDateString
        Dim bis As Date = frmVonBis.datBis.Value.ToShortDateString

        'Dim von As Date = CDate("01.01.2016")
        ' Dim bis As Date = CDate("31.01.2016")

        '  rpt.DataSource = SQL.loadDgvBySql("SELECT MIN(JournalNr)as JournalNr, MAX(BelegDat)as BelegDat,MAX(Buchungsdatum)as Buchungsdatum,MAX(belegNr) as BelegNr, (SELECT top 1 t.Buchungstext FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Buchungstext,(SELECT top 1 t.konto FROM [tblKassenbuch] as t WHERE journalnr=t.journalnr) as Konto, SUM(Soll) as Soll,SUM(haben) as Haben " &
        '                                   "FROM [tblKassenbuch] WHERE CAST(Buchungsdatum  as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And Benutzer=" & PERSONAL.ID & " group by BelegNr", "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos)
        Dim where = ""

        If frmVonBis.cbxRKSV_only.Checked Then
            where = " AND [rksv_id] IS NOT NULL AND [rksv_BelegId] IS NOT NULL AND rksv_aktiv=1 "

        End If
        Dim sqlStr = ""
        '  sqlStr = sqlStr = "SELECT JournalNr, BelegDat,Buchungstext, Buchungsdatum,BelegNr,rksv_BelegId, Soll, Haben " &
        '                                      "FROM [tblKassenbuch] WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND  CAST(Buchungsdatum  as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "'  And tblKassenbuch.Benutzer=" & PERSONAL.ID & " And Konto=" & PERSONAL.KassenbuchNr & "  " & where & " ORDER BY Buchungsdatum, JournalNr "

        If master_Kasse Then
            rpt.lblSachbearbeiter.Text = "ADMIN"
            rpt.lblKassenbuchNr.Text = "-"
            rpt.lblMandantNiederlassung.Text = "-"
            sqlStr = "SELECT JournalNr, tblKassenbuch.BelegDat,Buchungstext, Buchungsdatum,tblKassenbuch.BelegNr,tblKassenbuch.rksv_BelegId, Soll, Haben,tblKassenbuch.Benutzer as Benutzer,tblKassenbuch.Konto as Konto,[LKW Kennzeichen],Fahrer,FrachtführerKundenNr,Frachtführer " &
                                             " FROM [tblKassenbuch] INNER JOIN Personal ON Personal.ID = tblKassenbuch.Benutzer " &
                                             " inner join [tblEABelegnummer] on [tblEABelegnummer].Mandant=tblKassenbuch.Mandant AND [tblEABelegnummer].Niederlassung=tblKassenbuch.Niederlassung AND [tblEABelegnummer].Benutzer=tblKassenbuch.Benutzer AND [tblEABelegnummer].BelegDat=tblKassenbuch.BelegDat AND [tblEABelegnummer].BelegNr=tblKassenbuch.BelegNr " &
                                             " WHERE tblKassenbuch.Benutzer IN (SELECT ID FROM [Personal] WHERE [Standard_RKSV_KasseId]='" & PERSONAL.cRKSV_Kasse.rksv_id & "') AND Personal.[KassenbuchNr]=tblKassenbuch.Konto AND tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND  CAST(Buchungsdatum  as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' " & where & " ORDER BY Buchungsdatum, JournalNr "
        Else
            rpt.lblSachbearbeiter.Text = PERSONAL.Name
            rpt.lblKassenbuchNr.Text = PERSONAL.KassenbuchNr
            rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & "  /  " & PERSONAL.Niederlassung

            sqlStr = "SELECT JournalNr, tblKassenbuch.BelegDat,Buchungstext, Buchungsdatum,tblKassenbuch.BelegNr,tblKassenbuch.rksv_BelegId, Soll, Haben,tblKassenbuch.Benutzer as Benutzer,tblKassenbuch.Konto as Konto ,[LKW Kennzeichen],Fahrer ,FrachtführerKundenNr,Frachtführer " &
                                           " FROM [tblKassenbuch]  " &
                                             " inner join [tblEABelegnummer] on [tblEABelegnummer].Mandant=tblKassenbuch.Mandant AND [tblEABelegnummer].Niederlassung=tblKassenbuch.Niederlassung AND [tblEABelegnummer].Benutzer=tblKassenbuch.Benutzer AND [tblEABelegnummer].BelegDat=tblKassenbuch.BelegDat AND [tblEABelegnummer].BelegNr=tblKassenbuch.BelegNr " &
                                             " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' and tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' AND  CAST(Buchungsdatum  as date) BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "'  And tblKassenbuch.Benutzer=" & PERSONAL.ID & " And Konto=" & PERSONAL.KassenbuchNr & "  " & where & " ORDER BY Buchungsdatum, JournalNr "
        End If

        rpt.DataSource = SQL.loadDgvBySql(sqlStr, "FMZOLL") 'cProgramFunctions.dgridViewTods(dgvBelegPos)

        rpt.GroupHeader1.DataField = "Buchungsdatum" 'Gruppierung

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

        Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
            Case "IMEX" : rpt.picVERAG.Image = My.Resources.IMEX_LOGO_simple : rpt.Label28.Text = "IMEX Customs Service GmbH"
            Case "ATILLA" : rpt.picVERAG.Image = My.Resources.Atilla : rpt.Label28.Text = "ATILLA Spedition"
            Case Else
        End Select

        Dim GESCHAEFTSJAHR = cRKSV.getGJ(von) ' IIf(von.Month = 1, von.Year - 1, von.Year)
        Dim sum = 0
        rpt.lblUeberschrift.Text = "Kassenbuch  " & von.ToShortDateString & " bis " & bis.ToShortDateString
        rpt.lblGeschaeftsjahr.Text = GESCHAEFTSJAHR
        'rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & "  /  " & PERSONAL.Niederlassung

        'Dim cnt As Integer = 0
        rpt.lblDat.Text = Now.ToLongDateString
        Dim sumSoll As Double = 0
        Dim sumHaben As Double = 0
        Dim gesSumSoll As Double = 0
        Dim gesSumHaben As Double = 0
        Dim datum = ""
        AddHandler rpt.Detail.Format, Sub()
                                          ' Dim dt As DataTable = SQL.loadDgvBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END  as Konto, SUM(soll)as Soll, SUM(haben) as Haben  FROM [tblKassenbuch] " &
                                          '        " WHERE  Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "'and Benutzer=" & PERSONAL.ID & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL")

                                          ' Dim soll = dt.Rows(0)("Soll")
                                          ' Dim haben = dt.Rows(0)("Haben")
                                          'Dim konto = dt.Rows(0)("Konto")

                                          rpt.lblLKWKz.Text = If(rpt.Fields.Item("LKW Kennzeichen").Value IsNot DBNull.Value, rpt.Fields.Item("LKW Kennzeichen").Value(), "")
                                          rpt.lblFahrer.Text = If(rpt.Fields.Item("Fahrer").Value IsNot DBNull.Value, rpt.Fields.Item("Fahrer").Value(), "")

                                          Dim BuDat As Date = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString
                                          rpt.lblBelegDat.Text = BuDat
                                          Dim GESCHAEFTSJAHR_TMP = cRKSV.getGJ(BuDat) 'IIf(BuDat.Month = 1, BuDat.Year - 1, BuDat.Year)
                                          rpt.lblBelegNr.Text = IIf(rpt.Fields.Item("rksv_BelegId").Value Is DBNull.Value, "(" & rpt.Fields.Item("BelegNr").Value & ")", rpt.Fields.Item("rksv_BelegId").Value())
                                          rpt.lblBuText.Text = rpt.Fields.Item("Buchungstext").Value()

                                          rpt.txtKunde.Text = If(CInt(rpt.Fields.Item("FrachtführerKundenNr").Value) > 0, rpt.Fields.Item("FrachtführerKundenNr").Value() & " ", "") & rpt.Fields.Item("Frachtführer").Value()

                                          '  rpt.lblKonto.Text = SQL.getValueTxtBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END  as Konto, SUM(soll)as Soll, SUM(haben) as Haben  FROM [tblKassenbuch] " &
                                          '        " WHERE  Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL")
                                          rpt.lblKonto.Text = SQL.getValueTxtBySql("SELECT CASE WHEN COUNT(distinct(konto))>1 THEN 'div.' ELSE CONVERT(VARCHAR(4),MAX(konto)) END  as Konto, SUM(soll)as Soll, SUM(haben) as Haben  FROM [tblKassenbuch] " &
                                                                                      " WHERE  Konto<>" & PERSONAL.KassenbuchNr & " AND Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' And Benutzer=" & rpt.Fields.Item("Benutzer").Value & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " and BelegNr='" & rpt.Fields.Item("BelegNr").Value() & "' ", "FMZOLL")

                                          Dim soll = CDbl(rpt.Fields.Item("Soll").Value())
                                          Dim haben = CDbl(rpt.Fields.Item("Haben").Value())

                                          rpt.lblSoll.Text = IIf(soll <> 0, soll.ToString("C"), "")
                                          rpt.lblHaben.Text = IIf(haben <> 0, haben.ToString("C"), "")
                                          ' rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " &
                                          '                                          " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " and Geschäftsjahr=" & GESCHAEFTSJAHR & " AND tblKassenbuch.Konto='" & PERSONAL.KassenbuchNr & "' " &
                                          '                                          " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C")

                                          rpt.lblSaldo.Text = CDbl(SQL.getValueTxtBySql("SELECT isnull(sum([Soll]-[Haben]),0) AS Saldo FROM tblKassenbuch " &
                                                                                     " WHERE Mandant='" & PERSONAL.Mandant & "' and Niederlassung='" & PERSONAL.Niederlassung & "' And Benutzer=" & rpt.Fields.Item("Benutzer").Value & " and Geschäftsjahr=" & GESCHAEFTSJAHR_TMP & " AND tblKassenbuch.Konto='" & rpt.Fields.Item("Konto").Value & "' " &
                                                                                     " and JournalNr<='" & rpt.Fields.Item("JournalNr").Value() & "' ", "FMZOLL")).ToString("C")
                                          sumSoll += CDbl(rpt.Fields.Item("Soll").Value())
                                          sumHaben += CDbl(rpt.Fields.Item("Haben").Value())
                                          gesSumSoll += CDbl(rpt.Fields.Item("Soll").Value())
                                          gesSumHaben += CDbl(rpt.Fields.Item("Haben").Value())
                                          '  rpt.lblLeistungsNr.Text = rpt.Fields.Item("clmnAnzahl").Value()
                                          ' rpt.lblEinzelpreis.Text = CDbl(rpt.Fields.Item("clmnPreis").Value()).ToString("C")
                                          ' sum += rpt.Fields.Item("clmnBetrag").Value()
                                          datum = CDate(rpt.Fields.Item("Buchungsdatum").Value()).ToShortDateString ' Im Footer wird bereits das nächste Datumgenommen, darum hier befüllt
                                      End Sub
        AddHandler rpt.GroupHeader1.Format, Sub()
                                                sumSoll = 0
                                                sumHaben = 0
                                            End Sub
        AddHandler rpt.GroupFooter1.Format, Sub()
                                                rpt.lblSummeBuchungsDat.Text = "Summe Buchungsdatum " & datum & ":"
                                                rpt.lblSollSumme.Text = sumSoll.ToString("C")
                                                rpt.lblHabenSumme.Text = sumHaben.ToString("C")
                                                ' rpt.lblEinzelpreis.Text = CDbl(rpt.Fields.Item("clmnPreis").Value()).ToString("C")
                                                ' sum += rpt.Fields.Item("clmnBetrag").Value()
                                            End Sub
        AddHandler rpt.ReportFooter1.Format, Sub()
                                                 rpt.lblSollGesamtSumme.Text = gesSumSoll.ToString("C")
                                                 rpt.lblHabenGesamtSumme.Text = gesSumHaben.ToString("C")
                                             End Sub

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