Imports System.Data.SqlClient
Imports System.Drawing.Printing
Imports System.Globalization
Imports SDL.RKSVServer

Public Class frmBelegNeu
    Implements System.ComponentModel.INotifyPropertyChanged
    Dim dgvInitWait As Boolean = False
    '  Private bindingSDL As New BindingSource
    ' Private dataAdapterLKW As New SqlDataAdapter
    Dim PROG As New cProgramFunctions
    Dim kundenSQL As New kundenSQL
    Dim SQL As New SQL
    'Public firma As String = "VERAG"
    Dim PERSONAL As cPersonal
    Dim PERSONAL_LG As cPersonal
    Dim KASSE As New cRKSV_Kasse
    Dim EA As String = "E"
    Public BELEG As EABeleg = Nothing
    ' Dim ART As String = "E"
    Public AvisoID = Nothing
    Public SendungID = Nothing
    ' Private gebucht As Boolean = False
    Public Event LOADED()
    Public warnClose As Boolean = True
    Dim allowPrint = False
    Public printErfolgreich = False
    Public defaultPrinter = ""



    Public aktFiliale As Integer = 0
    Public aktAbfertigungsNr As Integer = 0

    Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal, EA As String)

        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()
        Me.PERSONAL = PERSONAL
        Me.PERSONAL_LG = PERSONAL_LG
        Me.EA = EA
        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

    End Sub

    Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal, Mandant As String, Niederlassung As String, Benutzer As Integer, BelegNr As Integer, BelegDat As Date)
        InitializeComponent()
        Me.PERSONAL = PERSONAL
        Me.PERSONAL_LG = PERSONAL_LG
        BELEG = New EABeleg("LOAD", Mandant, Niederlassung, Benutzer, BelegNr, BelegDat)
    End Sub


    Public Sub AddDusche(print As Boolean)

        '   Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1)
        Dim p As EABelegPositionen

        cboSteuerschlüssel.changeItem(2512)
        p = New EABelegPositionen
        p.Mandant = PERSONAL.Mandant
        p.Niederlassung = PERSONAL.Niederlassung
        p.Benutzer = PERSONAL.ID
        'p.Benutzer = BenutzerNr
        p.BelegDat = Now
        p.BelegNr = BELEG.BelegNr
        p.PreislistenNr = 4
        p.PreislistenPos = 19
        p.LeistungsNr = 800

        p.LeistungsBez = "Dusche"
        p.Leistungsbeschreibung = "Dusche"

        p.Preis = 1.67
        p.Abfertigungsart = 0
        p.Anzahl = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1)
        p.Betrag = p.Anzahl * p.Preis
        BELEG.POS.Add(p)
        ' cntr.BackColor = Color.Yellow
        initDGVBelegPos()
        If print Then allowPrint = True : btnPrint.PerformClick()
    End Sub


    Public Function AddLeihgeld(print As Boolean, BELEG_TMP As EABeleg, POS_ADD As List(Of EABelegPositionen)) As Boolean
        BELEG = BELEG_TMP
        For Each p In POS_ADD
            BELEG.POS.Add(p)
        Next
        BELEG.LKW_Beleg = True

        cboSteuerschlüssel.changeItem(BELEG.Steuerschlüssel)
        init()
        initDGVBelegPos()

        If print Then allowPrint = True : btnPrint.PerformClick()
        Return printErfolgreich
    End Function

    Public Property Gebucht_prop As Boolean
        Get
            Return BELEG.gebucht
        End Get
        Set(value As Boolean)
            BELEG.gebucht = value : RaiseEvent PropertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs("Gebucht_prop"))
        End Set
    End Property


    '  Dim BelegNr As Integer = -1 ' = 664
    '  Dim Benutzer As Integer = 226
    ' Public WithEvents bindingBELEG As New cBinding("FMZOLL") 'fürs Binding


    Public Event PropertyChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) _
            Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged

    Private Sub frmBeleg_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
        If warnClose Then
            If Not BELEG.gebucht Then
                Select Case MsgBox("Beleg noch nicht verbucht! Fenster schließen?", vbYesNoCancel)
                    Case vbYes : e.Cancel = False '  Case vbYes : SQL.doSQL("DELETE FROM [tblEABelegnummer] WHERE BelegNr=" & BELEG.BelegNr & " AND Benutzer='" & BELEG.Benutzer & "'", "FMZOLL") : e.Cancel = False
                    Case vbNo, vbCancel : e.Cancel = True
                End Select
            End If
        End If
    End Sub



    Private Sub frmBeleg_Load(sender As Object, e As EventArgs) Handles Me.Load
        If PERSONAL Is Nothing Then
            MsgBox("Fehler beim Laden der Personaldaten!")
            Me.Close()
        End If
        kdkunde.initKdBox(Me, lblkundeKdNr)
        kdFrachtf.initKdBox(Me, lblAtrKdNr)

        cboSteuerschlüssel.fillWithSQL("SELECT tblSteuersätze.Nr, tblSteuersätze.Beschreibung FROM tblSteuersätze ORDER BY tblSteuersätze.Nr; ", False, "FMZOLL")
        cboFiliale.fillWithSQL("SELECT Filialen.FilialenNr, Filialen.Grenzstelle FROM Filialen WHERE (((Filialen.FilialenNr)>=4800) AND ((Filialen.Fil_Status)='A')) ORDER BY Filialen.FilialenNr;", True, "FMZOLL")

        cboSteuerschlüssel.changeItem(3520)
        cboKassen.fillWithSQL("SELECT [rksv_id], [rksv_bez] FROM [tblRKSV_Kassen] WHERE ([rksv_firma]='" & VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "' OR rksv_id IN('" & PERSONAL.cRKSV_KasseID & "')) ", False, "FMZOLL")
        If cboKassen.Items.Count > 0 Then cboKassen.SelectedIndex = 0 'default
        If PERSONAL.cRKSV_KasseID > 0 Then
            cboKassen.changeItem(CStr(PERSONAL.cRKSV_KasseID))
        Else
            Select Case PERSONAL.Niederlassung
                Case "SUB"
                    cboKassen.changeItem(1)
                Case "WAI", "SBG"
                    cboKassen.changeItem(8)
                Case "NKD"
                    cboKassen.changeItem(4)
                Case "SUA"
                    cboKassen.changeItem(5)
                Case Else
                    MsgBox("Fehler: Dem Benutzer ist noch keine RKSV-Kasse bze. keine Niederlassung zugeordnet!")

            End Select
        End If

        KASSE.LOAD(cboKassen._value)

        If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA <> KASSE.rksv_firma Then
            kdkunde._UseFIRMA = KASSE.rksv_firma
        End If

        cboFrachtf_Sgut.Items.Clear()
        cboFrachtf_Sgut.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("S - Sammelgut", "S"))
        cboFrachtf_Sgut.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("K - Komplett", "K"))
        cboFrachtf_Sgut.SelectedIndex = 0
        '  Select Case PERSONAL.Niederlassung
        '      Case "SUB" : cboFiliale.changeItem(4803)
        '      Case "SBG" : cboFiliale.changeItem(5003)
        '      Case "SUW" : cboFiliale.changeItem(4801)
        '     Case "SUA" : cboFiliale.changeItem(4801)
        ' '  Case "NKD" : cboFiliale.changeItem(000)
        '     Case "WAI" : cboFiliale.changeItem(5103)
        ' End Select

        AddHandler kdkunde.PropertyChanged, Sub()
                                                If kdkunde.KdNr > 0 Then
                                                    lblKunde_Strasse.Text = kdkunde.KdData_ADRESSEN.Straße
                                                    lblKunde_Land.Text = kdkunde.KdData_ADRESSEN.LandKz

                                                    lblKunde_Plz.Text = kdkunde.KdData_ADRESSEN.PLZ
                                                    lblKunde_Ort.Text = kdkunde.KdData_ADRESSEN.Ort
                                                    lblKunde_UstId_Land.Text = kdkunde.KdData_ADRESSEN.UstIdKz
                                                    lblKunde_UstId_Nr.Text = kdkunde.KdData_ADRESSEN.UstIdNr
                                                    btnOfferte.Visible = True
                                                Else
                                                    btnOfferte.Visible = False
                                                End If


                                                If lblKunde_Strasse.Text.Length > lblKunde_Strasse.MaxLength Then lblKunde_Strasse.Text = lblKunde_Strasse.Text.Substring(0, lblKunde_Strasse.MaxLength)
                                                If lblKunde_Land.Text.Length > lblKunde_Land.MaxLength Then lblKunde_Land.Text = lblKunde_Land.Text.Substring(0, lblKunde_Land.MaxLength)
                                                If lblKunde_Plz.Text.Length > lblKunde_Plz.MaxLength Then lblKunde_Plz.Text = lblKunde_Plz.Text.Substring(0, lblKunde_Plz.MaxLength)
                                                If lblKunde_Ort.Text.Length > lblKunde_Ort.MaxLength Then lblKunde_Ort.Text = lblKunde_Ort.Text.Substring(0, lblKunde_Ort.MaxLength)
                                                If lblKunde_UstId_Land.Text.Length > lblKunde_UstId_Land.MaxLength Then lblKunde_UstId_Land.Text = lblKunde_UstId_Land.Text.Substring(0, lblKunde_UstId_Land.MaxLength)
                                                If lblKunde_UstId_Nr.Text.Length > lblKunde_UstId_Nr.MaxLength Then lblKunde_UstId_Nr.Text = lblKunde_UstId_Nr.Text.Substring(0, lblKunde_UstId_Nr.MaxLength)


                                            End Sub

        If BELEG Is Nothing Then
            BELEG = New EABeleg(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID)
            BELEG.Beleg_TYP = "K"

            If EA = "E" Then
                BELEG.Belegart = "1"
                Label19.Text = "Kunden-Beleg"
                Label19.ForeColor = Color.FromArgb(0, 54, 128)
            Else
                BELEG.Belegart = "2"
                Label19.Text = "Kunden-Auszahlung"
                Label19.ForeColor = Color.Red
            End If
        Else
            If BELEG.gebucht Then
                pnlData.Enabled = False
                pnlOptionen.Enabled = False
                FlowLayoutPanel.Enabled = False
                ' FlowLayoutPanel1.Enabled = False
                Label17.Visible = True
                btnPrint.Text = "Beleg Kopie" & vbNewLine & "drucken"
            End If
             
            If BELEG.Belegart = "1" Then
                EA = "E"
                Label19.Text = "Kunden-Beleg"
                Label19.ForeColor = Color.FromArgb(0, 54, 128)
            Else
                EA = "A"
                Label19.Text = "Kunden-Auszahlung"
                Label19.ForeColor = Color.Red
            End If

            If BELEG.gebuchtStorno Then
                lblStorno.Visible = True
            End If
            If AvisoID Is Nothing Then AvisoID = BELEG.LKW_Id

            init()
        End If

     
        initArt() 'Einnahme/AusgabeBeleg

        lblMandant_niederlassung.Text = PERSONAL.Niederlassung
        lblMandant.Text = PERSONAL.Mandant
        lblSachbearbeiter.Text = PERSONAL.Name
        lblKassenbuchNr.Text = PERSONAL.KassenbuchNr

        If defaultPrinter <> "" Then
            cProgramFunctions.initDrucker(cboPrinter, defaultPrinter)
        Else
            If EA = "E" Then
                cProgramFunctions.initBONDrucker(cboPrinter, "EPSON") ' Eingangsbeleg --> BON
            Else
                cProgramFunctions.initDrucker(cboPrinter) ' Ausgangsbeleg --> A4
            End If
        End If
        initTabCntlPreislisten()

        initDGVBelegPos()

        txtAnzahl.Text = "1"
        txtAnzahl.Focus()
        txtAnzahl.SelectAll()

        If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then
            '   btnNeueAbfNr.Visible = True
            cboFiliale.changeItem(4801)
        ElseIf VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX" Then
            '  btnNeueAbfNr.Visible = True
            cboFiliale.changeItem(5501)
            cboFiliale.Enabled = False
        End If

    End Sub


    Sub init()
        'lblRgNr.Text = "12345 / TR"
        lblBelegDatum.Text = BELEG.BelegDat.ToShortDateString
        lblkundeKdNr.Text = IIf(BELEG.KundenNr > 0, BELEG.KundenNr, "")
        kdkunde.Text = BELEG.Ordnungsbegriff
        If BELEG.KundenNr > 0 Then kdkunde.KdNr = BELEG.KundenNr
        lblKunde_Ort.Text = (kdkunde.Text).Trim
        lblKunde_Strasse.Text = lblKunde_Strasse.Text
        lblKunde_Land.Text = BELEG.LandKz
        lblKunde_Ort.Text = BELEG.Ort
        lblKunde_Plz.Text = BELEG.PLZ
        lblKunde_UstId_Land.Text = BELEG.UstIdKz
        lblKunde_UstId_Nr.Text = BELEG.UstIdNr


        kdFrachtf.Text = BELEG.Frachtführer
        If BELEG.FrachtführerKundenNr > 0 Then kdFrachtf.KdNr = BELEG.FrachtführerKundenNr
        lblFrachtf_Fahrer.Text = BELEG.Fahrer
        lblFrachtf_LKWNr.Text = BELEG.LKW_Kennzeichen
        Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
            Case "ATILLA" : cbxSplittung.Enabled = False
            Case Else : cbxSplittung.Checked = Not If(BELEG.LKW_Beleg, False)
        End Select

        

        aktFiliale = BELEG.FilialenNr
        aktAbfertigungsNr = BELEG.AbfertigungsNr


        cboSteuerschlüssel._value = BELEG.Steuerschlüssel
        If BELEG.rksv_BelegId > 0 Then
            lblBelegNr.Text = BELEG.rksv_BelegId
        End If
        cboFiliale.changeItem(BELEG.FilialenNr)
        txtAbfertigungsNr.Text = IIf(BELEG.AbfertigungsNr <= 0, "", BELEG.AbfertigungsNr)

    End Sub


    Sub initTabCntlPreislisten()
        FlowLayoutPanel1.Controls.Clear()
        FlowLayoutPanel.Controls.Clear()
        ' Dim EA = IIf(BELEG.Belegart = "1", "E", "A")

        Dim where = "1 = 1"
        If PERSONAL.Niederlassung = "SUB" Then where = "Preislisten_visibleSUB = 1"
        If PERSONAL.Niederlassung = "SUA" Then
            where = "Preislisten_visibleATILLA = 1"
            If PERSONAL.cRKSV_KasseID = 1 Then where = "Preislisten_visibleSUB = 1" 'MDM
        End If
        If PERSONAL.Niederlassung = "SBG" Then where = "Preislisten_visibleSBG = 1"
        If PERSONAL.Niederlassung = "WAI" Then where = "Preislisten_visibleWAI = 1"
        If PERSONAL.Niederlassung = "NKD" Then where = "Preislisten_visibleNKD = 1"
        If PERSONAL.Niederlassung = "IME" Then
            where = "Preislisten_visibleIMEX = 1"
            ' If PERSONAL.cRKSV_KasseID = 1 Then where = "Preislisten_visibleSUB = 1"'MDM
        End If

        If PERSONAL.Mandant = "FO" Then where = "Preislisten_visibleFRONTOFFICE = 1"


        If PERSONAL.isLeihgeldkasse Then
            where &= " AND allowLGKasse=1 "
        End If
        For Each r As DataRow In kundenSQL.loadDgvBySql("SELECT * FROM [tblPreislisten] WHERE 1=1 AND  " & where & " AND Art='" & EA & "' order by PreislistenBez", "FMZOLL").Rows

            Dim btn As New Button
            btn.Text = r.Item("PreislistenBez")
            btn.Tag = r.Item("PreislistenNr")
            btn.FlatStyle = FlatStyle.Flat
            btn.FlatAppearance.BorderSize = 1
            btn.Left = 0
            btn.Width = 100
            btn.Height = 50
            btn.Margin = New Padding(1, 3, 1, 0)
            FlowLayoutPanel1.Controls.Add(btn)
            AddHandler btn.Click, AddressOf changePL


            'p.Controls.Add(Flp)

        Next
    End Sub
    Sub changePLToAktPreisliste()

    End Sub


    Sub changePL(snd As Object, ev As EventArgs)
        Dim PreislistenNr = snd.tag
        If BELEG.POS.Count > 0 Then
            PreislistenNr = BELEG.POS(0).PreislistenNr
            If FlowLayoutPanel.Controls.Count > 0 Then
                If DirectCast(FlowLayoutPanel.Controls(0), usrcntlBelegLeistungEintrag).PreisListenNr = PreislistenNr Then Exit Sub ' Bereits die richtige PreislistenNR
            End If
        End If
        For Each b As Button In FlowLayoutPanel1.Controls
            If b.Tag = PreislistenNr Then
                b.BackColor = Color.SteelBlue
                b.ForeColor = Color.White
            Else
                b.BackColor = Color.White
                b.ForeColor = Color.Black

            End If

        Next
        FlowLayoutPanel.SuspendLayout()
        FlowLayoutPanel.Controls.Clear()
        '    For Each r2 As DataRow In kundenSQL.loadDgvBySql("Select * FROM [tblPreislistenpositionen] where PreislistenNr = '" & snd.tag & "' ORDER BY LeistungsBez", "FMZOLL").Rows


        For Each r2 As DataRow In kundenSQL.loadDgvBySql("Select [LeistungsNr],(SELECT LeistungsBez FROM [Leistungen]  WHERE [tblPreislistenpositionen].LeistungsNr=Leistungen.LeistungsNr ) as LeistungsBez FROM [tblPreislistenpositionen] where PreislistenNr='" & PreislistenNr & "' group by LeistungsNr ORDER BY COUNT(*) DESC, LeistungsBez ASC", "FMZOLL").Rows
            Dim usrCntl As New usrcntlBelegLeistungEintrag
            usrCntl.lblTitle.Text = IIf(r2.Item("LeistungsBez") Is DBNull.Value, "", r2.Item("LeistungsBez"))
            usrCntl.PreisListenNr = PreislistenNr
            ' usrCntl.FlatStyle = FlatStyle.Flat
            usrCntl.Left = 0
            usrCntl.Width = 110
            usrCntl.Height = 40

            usrCntl.FlowLayoutPanel.Controls.Clear()
            For Each r As DataRow In kundenSQL.loadDgvBySql("Select * FROM [tblPreislistenpositionen] where PreislistenNr = '" & PreislistenNr & "' AND LeistungsNr='" & r2.Item("LeistungsNr") & "' ORDER BY PreislistenPos ", "FMZOLL").Rows
                Dim usrCntlpos As New usrcntlBelegLeistungEintragPosition

                usrCntlpos.PreislistenNr = r.Item("PreislistenNr")
                usrCntlpos.PreislistenPos = r.Item("PreislistenPos")
                usrCntlpos.LeistungsNr = r.Item("LeistungsNr")
                usrCntlpos.Art = r.Item("Art").ToString.Trim

                '  MsgBox(r.Item("Art") & " _ " & VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM)

                usrCntlpos.Anzahlmultiplikator = r.Item("Anzahlmultiplikator")


                usrCntlpos.LeistungsBez = IIf(r.Item("LeistungsBez") Is DBNull.Value, "", r.Item("LeistungsBez"))
                'Ausnahme Frei-TEXT
                If (usrCntlpos.PreislistenPos = 15 Or usrCntlpos.PreislistenPos = 21 Or usrCntlpos.PreislistenPos = 24 Or usrCntlpos.PreislistenPos = 40) And usrCntlpos.LeistungsNr = 498 Then
                    usrCntlpos.Leistungsbeschreibung = r.Item("LeistungsBez")
                Else
                    usrCntlpos.Leistungsbeschreibung = r.Item("Leistungsbeschreibung")


                End If

                usrCntlpos.Abfertigungsart = cSqlDb.checkNullInteger(r.Item("Abfertigungsart"))
                usrCntlpos.txtAnzahl.Text = "0"
                If r.Item("Preis") IsNot DBNull.Value AndAlso IsNumeric(r.Item("Preis")) Then
                    usrCntlpos.Preis = CDbl(r.Item("Preis"))
                    usrCntlpos.FixPreis = True
                Else
                    usrCntlpos.Preis = 0
                End If
                'usrCntlpos()
                usrCntlpos.MaximumSize = New Size(250, 100)
                usrCntlpos.AutoSize = True
                'usrCntlpos.Preis = IIf(r.Item("Preis") IsNot DBNull.Value AndAlso IsNumeric(r.Item("Preis")), CDbl(r.Item("Preis")), -1)

                '     If r.Item("Preis") Is DBNull.Value Or r.Item("Preis") Is Nothing Then
                'usrCntlpos.txtPreis.Text = "-"
                '   Else
                '   usrCntlpos.txtPreis.Text = CDbl(r.Item("Preis")).ToString("F", CultureInfo.InvariantCulture)
                '  End If

                usrCntl.FlowLayoutPanel.Controls.Add(usrCntlpos)


                AddHandler usrCntlpos.INCREASE, Sub(cntr As usrcntlBelegLeistungEintragPosition)

                                                    Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1)
                                                    Dim p As EABelegPositionen

                                                    If Not increase(anz, cntr.PreislistenNr, cntr.PreislistenPos, cntr.LeistungsNr, cntr.Anzahlmultiplikator, aktFiliale, aktAbfertigungsNr) Then
                                                        Dim preis As Double = 0
                                                        Dim text As String = ""
                                                        If cntr.Preis = 0 Then
                                                            ' frmGrayOut()
                                                            Dim frmGrayOut = cProgramFunctions.grayoutForm(Me)

                                                            If ((cntr.PreislistenPos = 15 Or cntr.PreislistenPos = 21 Or cntr.PreislistenPos = 24 Or cntr.PreislistenPos = 40) And (cntr.LeistungsNr = 498 Or cntr.LeistungsNr = 497)) Or
                                                          (cntr.LeistungsNr = 152 And cntr.PreislistenPos = 2) Then '   (cntr.LeistungsNr = 111 And cntr.PreislistenPos = 1) Or

                                                                'Sonstges Freitext
                                                                Dim l As New frmPreisText(If(cntr.LeistungsNr = 497, cntr.LeistungsBez, ""))
                                                                l.Location = cntr.loc
                                                                If l.ShowDialog(frmGrayOut) = DialogResult.OK Then
                                                                    If IsNumeric(l.txt.Text) And l.txtLeistung.Text <> "" Then
                                                                        preis = CDbl(l.txt.Text)
                                                                        If (cntr.LeistungsNr = 152 And cntr.PreislistenPos = 2) Then 'Bei Rechnungsbegelichung --> Referenztext
                                                                            text = cntr.LeistungsBez & ": " & l.txtLeistung.Text
                                                                        Else
                                                                            text = l.txtLeistung.Text
                                                                        End If
                                                                    Else
                                                                        frmGrayOut.Close() : Exit Sub
                                                                    End If
                                                                Else
                                                                    frmGrayOut.Close() : Exit Sub
                                                                End If
                                                                frmGrayOut.Close()
                                                            Else
                                                                Dim l As New frmPreis()
                                                                l.Location = cntr.loc
                                                                If l.ShowDialog(frmGrayOut) = DialogResult.OK Then
                                                                    If IsNumeric(l.txt.Text) Then
                                                                        preis = CDbl(l.txt.Text)
                                                                    Else
                                                                        frmGrayOut.Close() : Exit Sub
                                                                    End If
                                                                Else
                                                                    frmGrayOut.Close() : Exit Sub
                                                                End If
                                                                frmGrayOut.Close()
                                                            End If

                                                        End If

                                                        p = New EABelegPositionen
                                                        p.Mandant = PERSONAL.Mandant
                                                        p.Niederlassung = PERSONAL.Niederlassung
                                                        p.Benutzer = PERSONAL.ID
                                                        'p.Benutzer = BenutzerNr
                                                        p.BelegDat = Now
                                                        p.BelegNr = BELEG.BelegNr
                                                        p.PreislistenNr = cntr.PreislistenNr
                                                        p.PreislistenPos = cntr.PreislistenPos
                                                        p.LeistungsNr = cntr.LeistungsNr

                                                        If cntr.Anzahlmultiplikator = 0 Or cntr.Anzahlmultiplikator = 1 Then
                                                            p.Anzahlmultiplikator = CInt(cntr.Anzahlmultiplikator)
                                                        End If

                                                        p.LeistungsBez = IIf(text <> "", text, cntr.LeistungsBez) ' cntr.LeistungsBez
                                                        p.Leistungsbeschreibung = IIf(text <> "", text, cntr.Leistungsbeschreibung) 'cntr.Leistungsbeschreibung

                                                        p.Preis = IIf(cntr.Preis = 0, preis, cntr.Preis)
                                                        If cntr.Art = "A" And EA = "E" Then
                                                            If p.Preis > 0 Then p.Preis = p.Preis * -1
                                                        End If
                                                        p.Abfertigungsart = If(cntr.Abfertigungsart > 0, cntr.Abfertigungsart, Nothing)
                                                        p.Anzahl = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1)
                                                        p.Betrag = p.Anzahl * p.Preis

                                                        p.FilialenNr = aktFiliale
                                                        p.AbfertigungsNr = aktAbfertigungsNr

                                                        BELEG.POS.Add(p)
                                                        ' cntr.BackColor = Color.Yellow
                                                        initDGVBelegPos()
                                                    End If


                                                End Sub

                AddHandler usrCntlpos.REDUCE, Sub(cntr As usrcntlBelegLeistungEintragPosition)
                                                  Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1)
                                                  ' Dim p As EABelegPositionen
                                                  reduce(anz, cntr.PreislistenNr, cntr.PreislistenPos, cntr.LeistungsNr, aktFiliale, aktAbfertigungsNr)
                                              End Sub

            Next
            Dim ThreadInitBGPos = New System.Threading.Thread(AddressOf Me.initBGPos)
            ThreadInitBGPos.IsBackground = True
            ThreadInitBGPos.Start()


            FlowLayoutPanel.Controls.Add(usrCntl)


        Next
        FlowLayoutPanel.ResumeLayout()
    End Sub


    Function increase(anz, PreislistenNr, PreislistenPos, LeistungsNr, Anzahlmultiplikator, tmpFiliale, tmpAbfertigungsNr) As Boolean
        For Each p In BELEG.POS
            If p.PreislistenNr = PreislistenNr And p.PreislistenPos = PreislistenPos And p.LeistungsNr = LeistungsNr Then
                If cbxSplittung.Checked Then
                    If p.FilialenNr = tmpFiliale And p.AbfertigungsNr = tmpAbfertigungsNr Then
                        p.Anzahl += anz
                        p.Betrag = p.Anzahl * p.Preis
                        p.Anzahlmultiplikator = CInt(Anzahlmultiplikator)
                        ' cntr.BackColor = Color.Yellow
                        initDGVBelegPos()
                        Return True
                    End If
                Else
                    p.Anzahl += anz
                    p.Betrag = p.Anzahl * p.Preis
                    p.Anzahlmultiplikator = CInt(Anzahlmultiplikator)
                    ' cntr.BackColor = Color.Yellow
                    initDGVBelegPos()
                    Return True
                End If
            End If
        Next
        Return False
    End Function


    Function setAnz(anz, PreislistenNr, PreislistenPos, LeistungsNr, Anzahlmultiplikator, tmpFiliale, tmpAbfertigungsNr) As Boolean
        If anz > 0 Then
            For Each p In BELEG.POS
                If p.PreislistenNr = PreislistenNr And p.PreislistenPos = PreislistenPos And p.LeistungsNr = LeistungsNr Then
                    If cbxSplittung.Checked Then
                        If p.FilialenNr = tmpFiliale And p.AbfertigungsNr = tmpAbfertigungsNr Then
                            p.Anzahl = anz
                            p.Anzahlmultiplikator = Anzahlmultiplikator
                            p.Betrag = p.Anzahl * p.Preis
                            initDGVBelegPos()
                            Return True
                        End If
                    Else
                        p.Anzahl = anz
                        p.Anzahlmultiplikator = Anzahlmultiplikator
                        p.Betrag = p.Anzahl * p.Preis
                        initDGVBelegPos()
                        Return True
                    End If
                End If
            Next
        End If
        Return False
    End Function


    Sub reduce(anz, PreislistenNr, PreislistenPos, LeistungsNr, tmpFiliale, tmpAbfertigungsNr)
        For Each p In BELEG.POS
            If p.PreislistenNr = PreislistenNr And p.PreislistenPos = PreislistenPos And p.LeistungsNr = LeistungsNr Then
                If cbxSplittung.Checked Then
                    If p.FilialenNr = tmpFiliale And p.AbfertigungsNr = tmpAbfertigungsNr Then
                        If p.Anzahl > anz Then
                            p.Anzahl -= anz
                            p.Betrag = p.Anzahl * p.Preis
                        Else
                            BELEG.POS.Remove(p)
                        End If
                        initDGVBelegPos()
                        Exit Sub 'gefunden!
                    End If
                Else
                    If p.Anzahl > anz Then
                        p.Anzahl -= anz
                        p.Betrag = p.Anzahl * p.Preis
                    Else
                        BELEG.POS.Remove(p)
                    End If
                    initDGVBelegPos()
                    Exit Sub 'gefunden!
                End If


            End If
        Next
    End Sub

    Sub delete(PreislistenNr, PreislistenPos, LeistungsNr, tmpFiliale, tmpAbfertigungsNr)
        For Each p In BELEG.POS
            If p.PreislistenNr = PreislistenNr And p.PreislistenPos = PreislistenPos And p.LeistungsNr = LeistungsNr Then
                If cbxSplittung.Checked Then
                    If p.FilialenNr = tmpFiliale And p.AbfertigungsNr = tmpAbfertigungsNr Then

                        BELEG.POS.Remove(p)
                        initDGVBelegPos()
                        Exit Sub
                    End If
                Else
                    BELEG.POS.Remove(p)
                    initDGVBelegPos()
                    Exit Sub
                End If
            End If
        Next
    End Sub

    Sub initBGPos()
        For Each c As usrcntlBelegLeistungEintrag In FlowLayoutPanel.Controls
            For Each cPos As usrcntlBelegLeistungEintragPosition In c.FlowLayoutPanel.Controls
                setData(cPos, Color.White, 0, 0)
                For Each p In BELEG.POS
                    If cPos.PreislistenNr = p.PreislistenNr And cPos.PreislistenPos = p.PreislistenPos And cPos.LeistungsNr = p.LeistungsNr Then
                        'Dim where = ""
                        If cbxSplittung.Checked Then
                            If p.FilialenNr = aktFiliale And p.AbfertigungsNr = aktAbfertigungsNr Then
                                setData(cPos, Color.Khaki, p.Preis, p.Anzahl)
                            End If
                        Else
                            setData(cPos, Color.Khaki, p.Preis, p.Anzahl)
                        End If
                    End If
                Next
            Next
        Next
    End Sub

    'threadsicherer Aufruf
    Delegate Sub setDataCallback(l As usrcntlBelegLeistungEintragPosition, BackColor As Color, preis As Double, anzahl As Integer)
    Private Sub setData(l As usrcntlBelegLeistungEintragPosition, BackColor As Color, preis As Double, anzahl As Integer)
        Try
            If Me.InvokeRequired Then
                Dim d As New setDataCallback(AddressOf setData)
                Me.Invoke(d, New Object() {l, BackColor, preis, anzahl})
            Else
                With l
                    .BackColor = BackColor

                    If preis <> 0 Then .txtPreis.Text = CDbl(preis).ToString("F", CultureInfo.InvariantCulture)
                    If anzahl > 0 Then
                        .txtAnzahl.Text = anzahl & " x"
                        .txtAnzahl.Visible = True
                    Else
                        .txtAnzahl.Visible = False
                        If Not .FixPreis Then .txtPreis.Text = "-" 'nur wenn FixPreis
                    End If

                End With
            End If

        Catch ex As Exception
            '??  MsgBox("Es ist ein Fehler beim Kunden-Such-Feld aufgetreten: " & vbNewLine & vbNewLine & ex.Message)

        End Try
    End Sub

    Dim WithEvents mPrintDocument As New PrintDocument
    Dim mPrintBitMap As Bitmap
    Private Sub m_PrintDocument_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles mPrintDocument.PrintPage
        ' Draw the image centered.
        Dim lWidth As Integer = e.MarginBounds.X + (e.MarginBounds.Width - mPrintBitMap.Width) \ 2
        Dim lHeight As Integer = e.MarginBounds.Y + (e.MarginBounds.Height - mPrintBitMap.Height) \ 2
        e.Graphics.DrawImage(mPrintBitMap, lWidth, lHeight)

        ' There's only one page.
        e.HasMorePages = False
    End Sub


    ' Dim RKSV_Service_Location = "\\192.168.0.106:8733/Design_Time_Addresses/RKSVCompleteServer/Service1/"
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click

        Try
            printErfolgreich = False
            If BELEG.gebucht Or BELEG.gebuchtStorno Then
                '  KASSE.LOAD(cboKassen._value)
                If BELEG.rksv_id > 0 Then KASSE.LOAD(BELEG.rksv_id)
                Select Case BELEG.Belegart
                    Case "1" : If cRKSV.printKundenBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, cbxBelegOffnen.Checked) Then Me.Close()
                    Case "2" : If cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") Then Me.Close() 'Beleg drucken 
                End Select
            Else
                Dim TESTBUCHUNG = False
                '   VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM()
                If cRKSV.isforbiddenDate Then
                    MsgBox("Die Kasse wir am Monatsende abgeschlossen. Es dürfen keine weiteren Belege erstellt werden. Bitte veruchen Sie den Vorgang nach Mitternacht erneut.")
                    Exit Sub
                End If

                Me.Cursor = Cursors.WaitCursor

                If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
                    KASSE.LOAD(6) 'Laden der Kasse anhand der Auswahlbox
                Else
                    KASSE.LOAD(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox
                End If
                BELEG.rksv_id = KASSE.rksv_id ' bei Fehler wird sonst die ID nicht richtig übernommen

                If kdkunde.Text.Trim.Length > 50 Then
                    kdkunde.Text = kdkunde.Text.Trim.Substring(0, 50)
                End If

                datatoBeleg() 'Daten werden in "BELEG" geldaen
                If Not validValues() Then Me.Cursor = Cursors.Default : Exit Sub

                If Not allowPrint Then
                    If Not vbYes = MsgBox("Beim Druckvorgang werden die Beleg-Daten ins Kassenbuch eingetragen. Danach sind keine Änderungen mehr möglich." & vbNewLine & vbNewLine & "Soll der Vorgang gestartet werden?", vbYesNoCancel) Then Me.Cursor = Cursors.Default : Exit Sub
                End If

                Dim summeNETTO As Double = 0
                For Each p In BELEG.POS : summeNETTO += p.Betrag : Next

                Dim summeBRUTTO = summeNETTO
                Dim steuersatz As Double = SQL.getValueTxtBySql("SELECT isnull(tblSteuersätze.Steuersatz,0) FROM tblSteuersätze WHERE tblSteuersätze.Nr='" & BELEG.Steuerschlüssel & "' ", "FMZOLL")
                If IsNumeric(steuersatz) Then summeBRUTTO += (summeNETTO * steuersatz)
                ' If EA = "A" Then
                '      summeNETTO *= -1
                '   steuersatz *= -1
                '     summeBRUTTO *= -1
                '  End If

                Dim oldBelegZaehler = KASSE.rksv_BelegIdZaehler 'Flls Fehler bei Signatur

                Dim RKSV_Beleg_Id = KASSE.INCREASE_BELEG_UMSATZ(If(TESTBUCHUNG, 0, If(EA = "E", summeBRUTTO, summeBRUTTO * -1))) 'Bei Ausgabebeleg wird der Umsatz vermindert
                If RKSV_Beleg_Id < 0 Then
                    Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub
                End If
                ' MsgBox(BELEG.POS.Count)
                Dim JournalNr = 0
                If Not cRKSV.insertKB(PERSONAL, BELEG, KASSE.rksv_id, RKSV_Beleg_Id, KASSE.rksv_aktiv, JournalNr, KASSE.rksv_firma) Then
                    KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1)
                    MsgBox("Programmfehler bei Eintrag ins Kassenbuch.")
                    Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub
                End If

                '  QR_Image = Nothing
                Dim QR_CodeString As String = ""
                Dim LastJWS As String = ""

                If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV ÖSTERREICH gilt
                    Dim answer = ""
                    If Not cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
                        If Not TESTBUCHUNG Then
                            KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, If(EA = "E", summeBRUTTO * -1, summeBRUTTO))
                            cRKSV.DELETE(BELEG, KASSE.rksv_firma)
                        End If
                        MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
                        Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub
                    End If
                    KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
                End If

                'If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, 0, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
                '    If Not TESTBUCHUNG Then
                '        KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summe * -1)
                '        cRKSV.DELETE(BELEG)
                '    End If
                '    MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
                '    ' Me.Cursor = Cursors.Default
                '    'BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
                '    ' MsgBox("Programmfehler bei der digitalen Signatur.")

                '    Return False
                'End If
                'KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)

                '  Dim TEST_KASSE = (BELEG.Niederlassung = "WAI")
                If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV DEUTSCHLAND gilt
                    Dim answer = ""

                    If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
                        If Not TESTBUCHUNG Then
                            KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, If(EA = "E", summeBRUTTO * -1, summeBRUTTO))
                            cRKSV.DELETE(BELEG, KASSE.rksv_firma)
                        End If
                        MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
                        Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub
                    End If
                    KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)

                    'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                    If KASSE.rksv_KassaGuid = "KASSE_01" Then 'Testkasse
                        BELEG.rksv_jws = Nothing
                        BELEG.rksv_qr = Nothing
                    End If
                    'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
                End If

                'RKSV-Daten beim Beleg ergänzen:
                BELEG.rksv_jws = LastJWS
                BELEG.rksv_qr = QR_CodeString
                BELEG.rksv_BelegId = RKSV_Beleg_Id
                BELEG.rksv_id = KASSE.rksv_id
                BELEG.rksv_umsatz = summeBRUTTO
                BELEG.rksv_aktiv = KASSE.rksv_aktiv
                BELEG.gebucht = True
                BELEG.SAVE()


                Me.DialogResult = Windows.Forms.DialogResult.OK
                'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken


                Select Case BELEG.Belegart
                    Case "1"
                        If cRKSV.printKundenBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, cbxBelegOffnen.Checked) Then
                            'WARTEN
                            printErfolgreich = True
                        End If
                    Case "2"
                        If cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") Then
                            'WARTEN
                            printErfolgreich = True
                        End If
                End Select

                If warnClose Then 'Dann automatisch erstellt, zb Leihgeld --> Spedbuch bereits dort erfasst
                    If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then 'Or VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG = "WAI" Then
                        If vbYes = MsgBox("Daten ins Speditionsbuch eintragen?", vbYesNoCancel) Then
                            Dim abbruch As Boolean = False
                            If cRKSV.SpedBuchExists(BELEG) Then
                                If vbYes <> MsgBox("Speditionsbuch Eintrag existiert bereits - Daten überschreiben?", vbYesNoCancel) Then
                                    abbruch = True
                                End If
                            End If
                            If Not abbruch Then
                                cRKSV.insertToSpedBuch(PERSONAL, PERSONAL_LG, BELEG, AvisoID, SendungID)
                                If Not cRKSV.SpedBuchExists(BELEG) Then
                                    MsgBox("Speditionsbuch-Eintrag fehlgeschlagen!!")
                                Else
                                    If vbYes = MsgBox("Speditionsbuch anzeigen?", vbYesNoCancel) Then
                                        Dim frmNacherfassung As New frmNacherfassungNEU()
                                        frmNacherfassung.srchFiliale = BELEG.FilialenNr
                                        frmNacherfassung.srchAbfertigungsnummer = BELEG.AbfertigungsNr
                                        frmNacherfassung.srchUnterNr = 0
                                        frmNacherfassung.ShowDialog(Me)
                                    End If
                                End If
                            End If
                        End If
                    End If
                End If
                Me.Close()

                Me.Cursor = Cursors.Default
            End If

        Catch ex As Exception
            Me.DialogResult = Windows.Forms.DialogResult.None
            Me.Cursor = Cursors.Default
            printErfolgreich = False
            MsgBox("Allgemeiner Programmfehler - Belegerfassung wird geschlossen!" & ex.Message & ex.StackTrace)
            warnClose = False
            Me.Close()
        End Try
    End Sub



    Function validValues() As Boolean
        lblErr_frachfuehrer.Visible = False
        lblErr_kunde.Visible = False
        lblErr_filiale.Visible = False
        lblErr_steuer.Visible = False
        lblErrPos.Visible = False
        lblErr_Fahrer.Visible = False
        lblErr_Pass.Visible = False
        lblErr_LKW.Visible = False

        If BELEG.POS.Count = 0 Then lblErrPos.Visible = True : Return False
        If BELEG.Ordnungsbegriff = "" Then lblErr_kunde.Visible = True : Return False
        '    If BELEG.Frachtführer = "" Then lblErr_frachfuehrer.Visible = True : Return False
        If Not (IsNumeric(BELEG.Steuerschlüssel) AndAlso BELEG.Steuerschlüssel >= 0) Then lblErr_steuer.Visible = True : Return False
        If cbxSplittung.Checked Then
            If BELEG.LKW_Id Is Nothing Then
                MsgBox("LKW-Beleg konnte nicht erstellt werden, da keine LKW-Id hinterlegt. Bitte Filiale und Abfertigungsnummer angeben!") : Return False
            End If
            'For Each b In BELEG.POS
            '    If If(b.FilialenNr, 0) <= 0 Then MsgBox("Filiale-/AbfertigungsNr. fehlt!") : Return False
            '    If If(b.AbfertigungsNr, 0) <= 0 Then MsgBox("Filiale-/AbfertigungsNr. fehlt!") : Return False
            'Next
        Else
            ' If BELEG.LKW_Id Is Nothing Then
            'MsgBox("LKW-Beleg konnte nicht erstellt werden, da keine LKW-Id hinterlegt. Bitte Filiale und Abfertigungsnummer angeben!") : Return False
            '  End If
            '  If BELEG.FilialenNr <= 0 Then lblErr_filiale.Visible = True : Return False
            '  If BELEG.AbfertigungsNr <= 0 Then lblErr_filiale.Visible = True : Return False
        End If
        If BELEG.Belegart = 2 Then
            If BELEG.Fahrer = "" Then lblErr_Fahrer.Visible = True : Return False
            If BELEG.Passnummer = "" Then lblErr_Pass.Visible = True : Return False
            If BELEG.LKW_Kennzeichen = "" Then lblErr_LKW.Visible = True : Return False
        End If
        Return True
    End Function
    ' Dim QR_Image As Image = Nothing

    Sub datatoBeleg()
        'BELEG.= "12345 / TR"
        ' BELEG.lblRgDatum.Text = Now.ToShortDateString
        BELEG.BelegDat = Now
        BELEG.KundenNr = IIf(kdkunde.KdNr > 0, kdkunde.KdNr, Nothing)

        BELEG.Ordnungsbegriff = If(kdkunde.Text.Trim.Length > 50, kdkunde.Text.Trim.Substring(0, 50), kdkunde.Text.Trim)

        ' If BELEG.Ordnungsbegriff.Length > 50 Then
        'BELEG.Ordnungsbegriff = BELEG.Ordnungsbegriff.Substring(0, 50)
        ' End If

        BELEG.Name1 = BELEG.Ordnungsbegriff.Trim
        BELEG.Name2 = ""

        If kdkunde.KdData_ADRESSEN IsNot Nothing Then ' Überschreiben wenn vorhanden+
            BELEG.Name1 = IIf(kdkunde.KdData_ADRESSEN.Name_1 IsNot Nothing, kdkunde.KdData_ADRESSEN.Name_1, BELEG.Ordnungsbegriff).ToString.Trim
            BELEG.Name2 = IIf(kdkunde.KdData_ADRESSEN.Name_2 IsNot Nothing, kdkunde.KdData_ADRESSEN.Name_2, "").ToString.Trim
        End If

        If BELEG.Name1.Length > 40 Then BELEG.Name1 = BELEG.Name1.Substring(0, 40)
        If BELEG.Name2.Length > 40 Then BELEG.Name2 = BELEG.Name2.Substring(0, 40)
        If BELEG.Ordnungsbegriff.Length > 50 Then BELEG.Ordnungsbegriff = BELEG.Ordnungsbegriff.Substring(0, 50)

        BELEG.Straße = lblKunde_Strasse.Text
        BELEG.LandKz = lblKunde_Land.Text
        BELEG.Ort = lblKunde_Ort.Text
        BELEG.PLZ = lblKunde_Plz.Text

        BELEG.UstIdKz = lblKunde_UstId_Land.Text.Trim
        BELEG.UstIdNr = lblKunde_UstId_Nr.Text.Trim
        BELEG.LKW_Kennzeichen = lblFrachtf_LKWNr.Text.Trim.ToUpper
        BELEG.Fahrer = lblFrachtf_Fahrer.Text
        BELEG.Passnummer = lblFrachtf_Pass.Text

        BELEG.Frachtführer = BELEG.Name1 'kdFrachtf.Text
        BELEG.FrachtführerKundenNr = BELEG.KundenNr 'IIf(kdFrachtf.KdNr > 0, kdFrachtf.KdNr, Nothing)
        BELEG.LKW_Kennzeichen = lblFrachtf_LKWNr.Text
        BELEG.Steuerschlüssel = If(IsNumeric(cboSteuerschlüssel._value), cboSteuerschlüssel._value, 0)
        BELEG.SgutKompl = cboFrachtf_Sgut._value


        Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
            Case "ATILLA"
                BELEG.FilialenNr = IIf(IsNumeric(cboFiliale._value), cboFiliale._value, -1)
                BELEG.AbfertigungsNr = IIf(IsNumeric(txtAbfertigungsNr.Text), txtAbfertigungsNr.Text, -1)
            Case Else
                If Not PERSONAL.isLeihgeldkasse Then 'Wird berits anders geregelt

                    BELEG.LKW_Beleg = (Not cbxSplittung.Checked And AvisoID IsNot Nothing)
                    If Not BELEG.LKW_Beleg Then
                        BELEG.FilialenNr = -1
                        BELEG.AbfertigungsNr = -1
                    Else
                        BELEG.FilialenNr = IIf(IsNumeric(cboFiliale._value), cboFiliale._value, -1)
                        BELEG.AbfertigungsNr = IIf(IsNumeric(txtAbfertigungsNr.Text), txtAbfertigungsNr.Text, -1)
                    End If
                End If
        End Select
        If PERSONAL.isLeihgeldkasse AndAlso PERSONAL_LG IsNot Nothing Then
            BELEG.Benutzer_LG = PERSONAL_LG.ID
        End If
    End Sub




    Sub STORNO2(JournalNr, Optional grund = "")
        If Not BELEG.gebuchtStorno Then
            Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM tblKassenbuch WHERE  [Mandant]='" & BELEG.Mandant & "' AND Niederlassung='" & BELEG.Niederlassung & "' AND Benutzer'" & BELEG.Benutzer & "' AND Geschäftsjahr='" & cRKSV.getGJ(BELEG.BelegDat) & "' AND JournalNr='" & JournalNr & "'", "FMZOLL")
            Dim GJ = New cGeschaeftsjahr(BELEG.Mandant, BELEG.Niederlassung, BELEG.Benutzer, cRKSV.getGJ(BELEG.BelegDat))
            If dt IsNot Nothing Then
                For Each r In dt.Rows
                    Dim KBEntry As New cKassenbuch("LOAD", BELEG.Mandant, BELEG.Niederlassung, BELEG.Benutzer, cRKSV.getGJ(BELEG.BelegDat), r("JournalNr"))
                    KBEntry.JournalNr = GJ.INCREASE_JOURNAL() 'Vergabe der Journalnummer
                    KBEntry.Buchungsdatum = Now.ToShortDateString
                    KBEntry.Soll = KBEntry.Soll * -1
                    KBEntry.Haben = KBEntry.Haben * -1
                Next

            End If
            BELEG.gebuchtStorno = True
            BELEG.storniert = True
            BELEG.Stornogrund = grund
            BELEG.SAVE()
        End If
    End Sub




    Sub dgvInit()

        With dgvBelegPos
            If .RowCount = 0 Then Exit Sub
            For Each c In .Columns
                c.Visible = False
            Next
            .Columns("LeistungsNr").Visible = True
            .Columns("LeistungsBez").Visible = True
            .Columns("TW1").Visible = True
            .Columns("TW2").Visible = True
            .Columns("Preis").Visible = True
            .Columns("Anzahl").Visible = True
            .Columns("Betrag").Visible = True
            .Columns("Leistungsbeschreibung").Visible = True


        End With
    End Sub

    Sub initDGVBelegPos()
        lblErrPos.Visible = False

        With dgvBelegPos
            .Rows.Clear()
            .Columns("clmnPreis").DefaultCellStyle.Format = "C"
            .Columns("clmnPreis").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
            .Columns("clmnBetrag").DefaultCellStyle.Format = "C"
            .Columns("clmnBetrag").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight

            For Each p In BELEG.POS
                Dim FixpreisStr = SQL.getValueTxtBySql("SELECT case WHEN Preis is null then '0' else '1' end  FROM [tblPreislistenpositionen]    where [PreislistenNr]=" & p.PreislistenNr & " and [PreislistenPos]=" & p.PreislistenPos & "", "FMZOLL")
                Dim fixpreis As Boolean = If(FixpreisStr.ToString = "", False, CBool(FixpreisStr))
                .Rows.Add(p.Anzahl, p.Leistungsbeschreibung, "", "", p.Preis, p.Betrag, p.PreislistenNr, p.PreislistenPos, p.LeistungsNr, CInt(p.Anzahlmultiplikator), fixpreis, p.AbfertigungsNr, p.FilialenNr)
            Next
            .ClearSelection()
        End With

        Dim ThreadInitBGPos = New System.Threading.Thread(AddressOf Me.initBGPos)
        ThreadInitBGPos.IsBackground = True
        ThreadInitBGPos.Start()

        initBetragBerechnen()

        txtAnzahl.Text = "1"
        txtAnzahl.Focus()
        txtAnzahl.SelectAll()
    End Sub

    Sub initBetragBerechnen()
        Dim sum As Double = 0
        If BELEG IsNot Nothing AndAlso BELEG.POS IsNot Nothing Then
            For Each p In BELEG.POS
                sum += p.Betrag
            Next
        End If

        '  If EA = "E" Then
        lblBetrag_Netto.Text = sum.ToString("C")
        lblBetrag_Steuern.Text = (sum * txtSteuersatz._value).ToString("C")
        lblBetrag_Brutto.Text = (sum + sum * txtSteuersatz._value).ToString("C")
        '  Else
        '  lblBetrag_Netto.Text = (-1 * sum).ToString("C")
        '   lblBetrag_Steuern.Text = (-1 * (sum * txtSteuersatz._value)).ToString("C")
        '  lblBetrag_Brutto.Text = (-1 * (sum + sum * txtSteuersatz._value)).ToString("C")
        ' End If
    End Sub


    Private Sub cboSteuerschlüssel_SelectedValueChanged(sender As Object, e As EventArgs) Handles cboSteuerschlüssel.SelectedIndexChanged
        If IsNumeric(cboSteuerschlüssel._value) Then
            txtSteuersatz.fillWithSQL("SELECT isnull(tblSteuersätze.Steuersatz,0) FROM tblSteuersätze WHERE tblSteuersätze.Nr='" & cboSteuerschlüssel._value & "' ", "FMZOLL")
        End If
        initBetragBerechnen()
    End Sub

    Private Sub frmBeleg_Shown(sender As Object, e As EventArgs) Handles Me.Shown
        '  initTB_DGV()
        Me.Height = My.Computer.Screen.WorkingArea.Height
        Me.Top = 0

        iniChangePNL()
        RaiseEvent LOADED()
        'MsgBox(cboSteuerschlüssel._value)
        If cboSteuerschlüssel._value = "" Or cboSteuerschlüssel._value = 0 Then cboSteuerschlüssel.changeItem(3520)
    End Sub

    Sub iniChangePNL()
        If FlowLayoutPanel1.Controls.Count = 1 Then
            changePL(FlowLayoutPanel1.Controls(0), New EventArgs)
        Else
            Dim srchPreisliste = -1
            If VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_standardPreisliste > 0 Then
                srchPreisliste = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_standardPreisliste
            Else
                If PERSONAL.Niederlassung <> "" Then
                    If PERSONAL.Niederlassung = "SUA" Then
                        srchPreisliste = 3
                    ElseIf PERSONAL.Niederlassung = "IME" Then
                        srchPreisliste = 13
                    Else
                        srchPreisliste = 4
                    End If
                End If
            End If
            If srchPreisliste > 0 Then
                For Each b As Button In FlowLayoutPanel1.Controls
                    If b.Tag = srchPreisliste Then
                        changePL(b, New EventArgs)

                        Exit For
                    End If
                Next
            End If
        End If

    End Sub
    Private Sub btnEinnahmeBeleg_Click(sender As Object, e As EventArgs) Handles btnEinnahmeBeleg.Click
        If BELEG.POS.Count > 0 Then
            If vbYes <> MsgBox("Es wurden bereits Positionen angelegt, sollen diese geslöscht werden?", MsgBoxStyle.YesNoCancel) Then
                Exit Sub
            End If
        End If
        BELEG.POS.Clear()
        initDGVBelegPos()
        BELEG.Belegart = "1"
        initTabCntlPreislisten()
        initArt()
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btnAusgabebeleg.Click
        If BELEG.POS.Count > 0 Then
            If vbYes <> MsgBox("Es wurden bereits Positionen angelegt, sollen diese geslöscht werden?", MsgBoxStyle.YesNoCancel) Then
                Exit Sub
            End If
        End If
        BELEG.POS.Clear()
        initDGVBelegPos()
        BELEG.Belegart = "2"
        initTabCntlPreislisten()
        initArt()
    End Sub
    Sub initArt()
        If BELEG.Belegart = "1" Then
            btnEinnahmeBeleg.BackColor = Color.SteelBlue
            btnEinnahmeBeleg.ForeColor = Color.White
            btnAusgabebeleg.BackColor = Color.Transparent
            btnAusgabebeleg.ForeColor = Color.DimGray
        ElseIf BELEG.Belegart = "2" Then
            btnAusgabebeleg.BackColor = Color.SteelBlue
            btnAusgabebeleg.ForeColor = Color.White
            btnEinnahmeBeleg.BackColor = Color.Transparent
            btnEinnahmeBeleg.ForeColor = Color.DimGray

        End If
    End Sub

    Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
        If dgvBelegPos.SelectedRows.Count = 1 Then
            Dim i = dgvBelegPos.SelectedRows(0).Index
            Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1)
            increase(1, dgvBelegPos.SelectedRows(0).Cells("PreislistenNr").Value, dgvBelegPos.SelectedRows(0).Cells("PreislistenPos").Value, dgvBelegPos.SelectedRows(0).Cells("LeistungsNr").Value, dgvBelegPos.SelectedRows(0).Cells("Anzahlmultiplikator").Value, dgvBelegPos.SelectedRows(0).Cells("FilialenNr").Value, dgvBelegPos.SelectedRows(0).Cells("AbfertigungsNr").Value)

            Try : dgvBelegPos.Rows(i).Selected = True : Catch : End Try
        End If
    End Sub

    Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
        If dgvBelegPos.SelectedRows.Count = 1 Then
            Dim i = dgvBelegPos.SelectedRows(0).Index
            Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1)
            reduce(1, dgvBelegPos.SelectedRows(0).Cells("PreislistenNr").Value, dgvBelegPos.SelectedRows(0).Cells("PreislistenPos").Value, dgvBelegPos.SelectedRows(0).Cells("LeistungsNr").Value, dgvBelegPos.SelectedRows(0).Cells("FilialenNr").Value, dgvBelegPos.SelectedRows(0).Cells("AbfertigungsNr").Value)
            Try : dgvBelegPos.Rows(i).Selected = True : Catch : End Try
        End If
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        If dgvBelegPos.SelectedRows.Count = 1 Then
            Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1)
            delete(dgvBelegPos.SelectedRows(0).Cells("PreislistenNr").Value, dgvBelegPos.SelectedRows(0).Cells("PreislistenPos").Value, dgvBelegPos.SelectedRows(0).Cells("LeistungsNr").Value, dgvBelegPos.SelectedRows(0).Cells("FilialenNr").Value, dgvBelegPos.SelectedRows(0).Cells("AbfertigungsNr").Value)
        End If
    End Sub

    Private Sub dgvBelegPos_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvBelegPos.CellContentClick
        If e.RowIndex = -1 Then
            sender.clearselection()
        End If
    End Sub

    Private Sub dgvBelegPos_SelectionChanged(sender As Object, e As EventArgs) Handles dgvBelegPos.SelectionChanged
        txtEinzelpreis.Text = ""
        txtEinzelpreis.Enabled = False

        If dgvBelegPos.SelectedRows.Count = 1 Then
            txtAnzahl.Text = dgvBelegPos.SelectedRows(0).Cells("clmnAnzahl").Value
            txtEinzelpreis.Text = dgvBelegPos.SelectedRows(0).Cells("clmnPreis").Value

            If Not dgvBelegPos.SelectedRows(0).Cells("clmnFixpreis").Value Then
                txtEinzelpreis.Enabled = True
            End If

        End If
    End Sub

    Private Sub txtAnzahl_KeyDown(sender As Object, e As KeyEventArgs) Handles txtAnzahl.KeyDown
        If e.KeyCode = Keys.Return Then
            If dgvBelegPos.SelectedRows.Count = 1 Then
                setAnz(txtAnzahl.Text, dgvBelegPos.SelectedRows(0).Cells("PreislistenNr").Value, dgvBelegPos.SelectedRows(0).Cells("PreislistenPos").Value, dgvBelegPos.SelectedRows(0).Cells("LeistungsNr").Value, dgvBelegPos.SelectedRows(0).Cells("Anzahlmultiplikator").Value, dgvBelegPos.SelectedRows(0).Cells("FilialenNr").Value, dgvBelegPos.SelectedRows(0).Cells("AbfertigungsNr").Value)
                initDGVBelegPos()
            End If
        End If
    End Sub
    Private Sub txtEinzelpreis_KeyDown(sender As Object, e As KeyEventArgs) Handles txtEinzelpreis.KeyDown
        If e.KeyCode = Keys.Return Then
            If dgvBelegPos.SelectedRows.Count = 1 Then
                setEP(txtEinzelpreis.Text, dgvBelegPos.SelectedRows(0).Cells("PreislistenNr").Value, dgvBelegPos.SelectedRows(0).Cells("PreislistenPos").Value, dgvBelegPos.SelectedRows(0).Cells("LeistungsNr").Value, dgvBelegPos.SelectedRows(0).Cells("Anzahlmultiplikator").Value)
                initDGVBelegPos()
            End If
        End If
    End Sub

    Function setEP(ep, PreislistenNr, PreislistenPos, LeistungsNr, Anzahlmultiplikator) As Boolean
        If IsNumeric(ep) AndAlso ep > 0 Then
            For Each p In BELEG.POS
                If p.PreislistenNr = PreislistenNr And p.PreislistenPos = PreislistenPos And p.LeistungsNr = LeistungsNr Then
                    p.Preis = ep
                    p.Anzahlmultiplikator = Anzahlmultiplikator
                    p.Betrag = p.Anzahl * p.Preis
                    initDGVBelegPos()
                    Return True
                End If
            Next
        End If
        Return False
    End Function

    Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click
        'BELEG.SAVE()
        warnClose = False
        Me.Close()
    End Sub


    Private Sub btnOfferte_Click(sender As Object, e As EventArgs) Handles btnOfferte.Click
        If kdkunde.KdNr_value > 0 Then
            Dim f As New frmKundenUebersichtZOLL(kdkunde.KdNr)
            f.selectedTAB = "Offerte"
            f.ShowDialog(Me)
        End If

    End Sub

    Private Sub btnNeueAbfNr_Click(sender As Object, e As EventArgs) Handles btnNeueAbfNr.Click
        If Not IsNumeric(cboFiliale._value) OrElse CInt(cboFiliale._value) <= 0 Then
            MsgBox("Bitte Filiale auswählen!") : Exit Sub
        End If
        txtAbfertigungsNr.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.getMaxPosNrIncrement(cboFiliale._value, Now.Year)
        ' If txtUnterNr.Text = "" Then txtUnterNr.Text = 0
        cboFiliale.Enabled = False
        sender.visible = False
    End Sub

    Private Sub txtAbfertigungsNr_TextChanged(sender As Object, e As EventArgs) Handles txtAbfertigungsNr.Leave
        If txtAbfertigungsNr.Text.Length > 8 Then Exit Sub
        If txtAbfertigungsNr.Text.Length <= 6 Then
            If IsNumeric(txtAbfertigungsNr.Text) Then
                txtAbfertigungsNr.Text = Now.ToString("yy") & CInt(txtAbfertigungsNr.Text).ToString("000000")
            End If
        End If

        checkDoppelAbfNr()
    End Sub
    Sub checkDoppelAbfNr()
        lblInfoAbfertNrExists.Visible = False
        If IsNumeric(cboFiliale._value) And IsNumeric(txtAbfertigungsNr.Text) Then
            If cRKSV.SpedBuchExists(cboFiliale._value, txtAbfertigungsNr.Text) Then
                lblInfoAbfertNrExists.Visible = True
            End If
        End If
    End Sub

    Private Sub cboFiliale_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboFiliale.Leave
        checkDoppelAbfNr()
    End Sub


    Private Sub cbxLKWBeleg_CheckedChanged(sender As Object, e As EventArgs) Handles cbxSplittung.CheckedChanged

        'txtAbfertigungsNr.Visible = Not cbxAbfertigungsBeleg.Checked
        'btnNeueAbfNr.Visible = Not cbxAbfertigungsBeleg.Checked
        'Label8.Visible = Not cbxAbfertigungsBeleg.Checked
        Label22.Visible = cbxSplittung.Checked
        txtzuKassieren.Visible = cbxSplittung.Checked

        If cbxSplittung.Checked Then lblInfoAbfertNrExists.Visible = False : lblErr_filiale.Visible = False ': lblErrPos.Visible = False

        If cbxSplittung.Checked Then

            FlowLayoutPanel2.Visible = True
            initSendungen()
            If FlowLayoutPanel2.Controls.Count > 0 Then
                Dim found = False
                For Each b As Button In FlowLayoutPanel2.Controls
                    If b.Tag.ToString.Contains(aktFiliale & "/" & aktAbfertigungsNr) Then
                        '    b.PerformClick()
                        found = True
                        changeABF(b, New EventArgs)
                    End If
                Next
                If Not found Then changeABF(FlowLayoutPanel2.Controls(0), New EventArgs)
            Else
                MsgBox("Keine Sendungen mit Abfertigungsnummer gefunden!")
                cbxSplittung.Checked = False
            End If
        Else
            FlowLayoutPanel2.Visible = False
        End If
        'If cbxLKWBeleg.Checked Then
        '    Label8.Text = "LKW-Id:"
        '    btnNeueAbfNr.Visible = False
        'Else
        '    Label8.Text = "Abfertigungs-Nr:"
        '    btnNeueAbfNr.Visible = True
        'End If
    End Sub


    Sub initSendungen()
        FlowLayoutPanel2.Controls.Clear()
        If If(AvisoID, 0) > 0 Then

            ' Dim EA = IIf(BELEG.Belegart = "1", "E", "A")

            Dim btnA As New Button
            btnA.Text = "Allgemein"
            btnA.Tag = "0/0/0/0" 'r.Item("tblSnd_SendungID")
            btnA.FlatStyle = FlatStyle.Flat
            btnA.FlatAppearance.BorderSize = 1
            btnA.Left = 0
            btnA.Width = 100
            btnA.Height = 60
            btnA.BackColor = Color.FloralWhite


            btnA.Margin = New Padding(1, 3, 1, 0)
            FlowLayoutPanel2.Controls.Add(btnA)
            AddHandler btnA.Click, AddressOf changeABF

            For Each r As DataRow In kundenSQL.loadDgvBySql("SELECT *,isnull(tblSnd_Empfaenger,'') as empf, isnull(tblSnd_BARzuKassieren,0) as BARzuKassieren FROM [tblSendungen] WHERE 1=1  AND [tblSnd_AvisoID]='" & AvisoID & "' AND FilialenNr>0 AND AbfertigungsNr>0 order by tblSnd_PosUnterNr", "AVISO").Rows
                Dim Abf = kundenSQL.getValueTxtBySql("SELECT TOP (1) cast([Abfertigungsart] as varchar (2)) + ' - ' + [Abfertigungsbezeichnung] FROM [Abfertigungsarten] WHERE [Abfertigungsart]='" & r.Item("tblSnd_Abfertigungsart_ID") & "'", "FMZOLL")
                If Abf.Length > 10 Then Abf = Abf.Substring(0, 10)

                Dim btn As New Button
                btn.Text = Abf & vbNewLine & If(r.Item("empf").ToString.Length > 10, r.Item("empf").ToString.Substring(0, 10), r.Item("empf")) & vbNewLine & r.Item("FilialenNr") & "/" & r.Item("AbfertigungsNr")
                btn.Tag = r.Item("tblSnd_SendungID") & "/" & r.Item("FilialenNr") & "/" & r.Item("AbfertigungsNr") & "/" & r.Item("BARzuKassieren") 'r.Item("tblSnd_SendungID")
                btn.FlatStyle = FlatStyle.Flat
                btn.FlatAppearance.BorderSize = 1
                btn.Left = 0
                btn.Width = 100
                btn.Height = 60
                btn.BackColor = Color.FloralWhite


                btn.Margin = New Padding(1, 3, 1, 0)
                FlowLayoutPanel2.Controls.Add(btn)
                AddHandler btn.Click, AddressOf changeABF


                'p.Controls.Add(Flp)

            Next
        Else
            FlowLayoutPanel2.Visible = False

        End If
    End Sub

    

    Function cntPosFilAbf(FilialenNr, AbfertigungsNr) As Integer
        For Each b In BELEG.POS
            '   MsgBox(CInt(If(b.FilialenNr, 0)) & " = " & CInt(If(FilialenNr, 0)) & "  --  " & CInt(If(b.AbfertigungsNr, 0)) & " = " & CInt(If(AbfertigungsNr, 0)) & "  --  " & (CInt(If(b.FilialenNr, 0)) = CInt(If(FilialenNr, 0)) And CInt(If(b.AbfertigungsNr, 0)) = CInt(If(AbfertigungsNr, 0))))


            If b.FilialenNr = CInt(If(FilialenNr, 0)) And b.AbfertigungsNr = CInt(If(AbfertigungsNr, 0)) Then
                Return 1
            End If
        Next

        Return 0
    End Function

    Sub changeABF(snd As Object, ev As EventArgs)

        txtzuKassieren.Text = ""
        Dim tag = snd.tag
        For Each b As Button In FlowLayoutPanel2.Controls
            If b.Tag = tag Then
                b.BackColor = Color.OrangeRed
                b.ForeColor = Color.White

                Dim s = b.Tag.ToString.Split("/")
                aktFiliale = If(IsNumeric(s(1)), s(1), 0)
                aktAbfertigungsNr = If(IsNumeric(s(2)), s(2), 0)
                txtzuKassieren.Text = s(3)
            Else
                Dim s = b.Tag.ToString.Split("/")
                If cntPosFilAbf(s(1), s(2)) Then
                    b.BackColor = Color.Khaki
                Else
                    b.BackColor = Color.FloralWhite
                End If
                b.ForeColor = Color.Black
            End If

        Next
        
        'neu Laden
        FlowLayoutPanel.Controls.Clear()
        iniChangePNL()

    End Sub

End Class

Class TestRKSVW
    Shared Sub Main()
        Dim client As RKSVWcfClient = New RKSVWcfClient()
        ' Use the 'client' variable to call operations on the service.

        ' Always close the client.
        client.Close()
    End Sub
End Class

