Imports System.Globalization
Imports SDL.cBinding

Public Class usrCntlSDLLeistungVERAGCard
    Public KfzKennzeichen As String
    Public kdNr As String
    Public History As String
    Dim PROG As New cProgramFunctions
    Dim kundenSQL As New kundenSQL
    Public SDLNr As String

    Dim culture As CultureInfo = New CultureInfo("de-DE")
    Private PartnerKdNrFromFMZOLL As cPartnerKdNRFMZoll
    Public addnew As Boolean = False
    Dim VAL As New cValidationSDLLeistungen
    Public Event LKWChanged(kdNr, newKfz, SDLNr, History)
    Public Event CHANGED(kdNr, newKfz, SDLNr, History)
    'Public WithEvents s As New cBinding 'fürs Binding
    Public SDL As VERAG_PROG_ALLGEMEIN.cSDL
    Dim boud = False

    Sub New(kdNr, KfzKennzeichen, SDLNr, History)

        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()

        Me.kdNr = kdNr
        Me.KfzKennzeichen = KfzKennzeichen
        Me.SDLNr = SDLNr
        Me.History = History
        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

    End Sub

    Private Sub usrCntlSDLLeistungen_Load(sender As Object, e As EventArgs) Handles Me.Load

        UsrCntlDetails.kdNr = kdNr
        UsrCntlDetails.SDLNr = SDLNr
        UsrCntlDetails.History = History
        UsrCntlDetails.lblLKWNr.Text = KfzKennzeichen
        AddHandler UsrCntlDetails.LKWChanged, Sub(newKfz)
                                                  RaiseEvent LKWChanged(kdNr, newKfz, SDLNr, History)
                                              End Sub

        'Scan-Elemente initialisieren:
        ' scanRetourniert.INIT(kdNr, KfzKennzeichen, "SDL_" & SDLNr, "HIST_" & History)
        scanSonstiges.INIT(kdNr, KfzKennzeichen, "SDL_" & SDLNr, "HIST_" & History)

        '  PROG.addPicToGueltigBis(txtGueltigkeit)
        initDataBinding()

        boud = True


        If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_Leistungen_bearbeiten", Me.FindForm) Then
            cProgramFunctions.setControlReadOnly(Me)
        End If
    End Sub
    Sub getPartnerKdNrFromFMZOLL() ' Lädt die Partner-KdNr
        PartnerKdNrFromFMZOLL = kundenSQL.getPartnerKdNrFromFMZOLL(kdNr)
    End Sub
    Sub initDataBinding()
        Try
            SDL = New VERAG_PROG_ALLGEMEIN.cSDL(kdNr, KfzKennzeichen, SDLNr, History)

            PROG.initDTPE(txtBestelldatum)
            PROG.initDTPE(txtLieferung)

            txtBestelldatum._value = SDL.Bestelldatum
            txtLieferung._value = SDL.Lieferdatum



            cbxErsatzkarte._date = SDL.ErsatzkarteAm
            cbxVerloren._date = SDL.VerlorenAm
            cbxGestohlen._date = SDL.GestohlenAm
            cbxGesperrt._date = SDL.GesperrtAm
            cbxDefekt._date = SDL.DefektAm
            cbxAbgemeldet._date = SDL.LKWAbgemeldetAM

            cbxGesperrt.Checked = SDL.Gesperrt
            cbxDefekt.Checked = SDL.Defekt
            cbxGestohlen.Checked = SDL.Gestohlen
            cbxVerloren.Checked = SDL.Verloren
            cbxArchiviert.Checked = SDL.Archiviert
            cbxAbgemeldet.Checked = SDL.LKWAbgemeldet


            cbxErsatzkarte.Checked = SDL.Ersatzkarte

            txtVermerk.Text = SDL.Vermerk

            UsrCntlDetails.lblErfassung.Text = SDL.Erfassungsdatum
            UsrCntlDetails.lblAenderung.Text = SDL.Änderungsdatum
            UsrCntlDetails.lblSachbearb.Text = SDL.Sachbearbeiter


            txtKartenNr.Text = SDL.KartenNr
            txtFahrer.Text = SDL.Fahrer
            txtKaution._value = SDL.Kaution
            txtBelegNr.Text = SDL.BelegNr



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



    End Sub



    Public Sub newEntry()
        '  s.updateBinding()
        ' s.newEntry(kdNr, KfzKennzeichen, SDLNr) 'NEUER EINTRAG!
        If txtBestelldatum.Text = "" Then txtBestelldatum.Text = Now.ToShortDateString

     
    End Sub

    Sub BindingTableColumnChanged()
        UsrCntlDetails.lblSachbearb.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
        UsrCntlDetails.lblAenderung.Text = Now.ToString("dd.MM.yyyy HH:mm")
        ' If e.Column.ColumnName = "Sachbearbeiter" Or e.Column.ColumnName = "Änderungsdatum" Then Exit Sub
        If save() Then RaiseEvent CHANGED(kdNr, KfzKennzeichen, SDLNr, History)
    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs)
        Dim valid As Boolean = VAL.checkValidDate(sender, True)
    End Sub

    Public Function save() As Boolean
        loadDataInClass()

        Return SDL.SAVE
        'If checkSave() Then
        '        Return kundenSQL.doSQLByList(s.bindingSource)
        'End If
        Return False
    End Function

    Sub loadDataInClass()
        SDL.Bestelldatum = PROG.isEmptyNull(txtBestelldatum._value)
        SDL.Lieferdatum = PROG.isEmptyNull(txtLieferung._value)
        SDL.Gesperrt = cbxGesperrt.Checked
        SDL.Defekt = cbxDefekt.Checked
        SDL.Gestohlen = cbxGestohlen.Checked
        SDL.Verloren = cbxVerloren.Checked
        SDL.LKWAbgemeldet = cbxAbgemeldet.Checked
        SDL.Ersatzkarte = cbxErsatzkarte.Checked
        SDL.Vermerk = txtVermerk.Text
        SDL.Erfassungsdatum = UsrCntlDetails.lblErfassung.Text
        SDL.Änderungsdatum = UsrCntlDetails.lblAenderung.Text
        SDL.Sachbearbeiter = UsrCntlDetails.lblSachbearb.Text
        SDL.KartenNr = txtKartenNr.Text

        SDL.Fahrer = txtFahrer.Text
        SDL.Kaution = txtKaution._value
        SDL.BelegNr = txtBelegNr.Text

        SDL.ErsatzkarteAm = cbxErsatzkarte._date
        SDL.VerlorenAm = cbxVerloren._date
        SDL.LKWAbgemeldetAM = cbxAbgemeldet._date
        SDL.GestohlenAm = cbxGestohlen._date
        SDL.GesperrtAm = cbxGesperrt._date
        SDL.DefektAm = cbxDefekt._date
        SDL.Archiviert = cbxArchiviert.Checked
    End Sub

    Function checkSave() As Boolean
        '  If Not VAL.checkValidDate(txtBestellung, True) Then cProgramFunctions.setInfo(Me.FindForm, "ERR", "Bestelldatum: Datumsformat nicht korrekt!", 3) : Return False
        '  If Not VAL.checkValidDate(txtLieferung, True) Then cProgramFunctions.setInfo(Me.FindForm, "ERR", "Lieferdatum: Datumsformat nicht korrekt!", 3) : Return False
        ' If Not VAL.checkValidDate(txtGueltigkeit, True) Then cProgramFunctions.setInfo(Me.FindForm, "ERR", "Gültigkeitsdatum: Datumsformat nicht korrekt!", 3) : Return False
        Return True
    End Function

    Private Sub txtBestellung_TextChanged(sender As Object, e As EventArgs) Handles txtBestelldatum.PropertyChanged, txtLieferung.PropertyChanged, txtKartenNr.TextChanged, txtVermerk.TextChanged, cbxErsatzkarte.CheckedChanged, cbxDefekt.CheckedChanged, cbxVerloren.CheckedChanged, cbxGestohlen.CheckedChanged, cbxGesperrt.CheckedChanged, cbxArchiviert.CheckedChanged, cbxAbgemeldet.CheckedChanged,
        txtKaution.TextChanged, txtFahrer.TextChanged, txtBelegNr.TextChanged
        If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_Leistungen_bearbeiten", Me.FindForm) Then Exit Sub

        If boud And Me.FindForm IsNot Nothing Then
            If sender Is txtBestelldatum Then
                If Not PROG.checkSDLNrPartnerKdNr(kdNr, SDLNr) Then MsgBox("Bitte geben Sie die Partner-Kundennummer im Kundenblatt oder im FM-ZOLL ein!")
            End If
            BindingTableColumnChanged()
        End If
    End Sub
    Function addTxtToVermerk(tmp, txt) As String
        If txtVermerk.Text <> "" Then tmp &= " / "
        tmp &= txt & ", am " & Now.ToShortDateString
        If tmp.Length > txtVermerk.MaxLength Then tmp = tmp.Substring(0, txtVermerk.MaxLength)
        Return tmp
    End Function



    'Private Sub pic_Click(sender As Object, e As EventArgs) Handles pic.Click
    '    If txtKartenNr.Text = "" Then

    '        Dim f As New frmFindNewVeragCard
    '        If f.ShowDialog(Me) = DialogResult.OK Then

    '            Dim tmpKFZ = Me.KfzKennzeichen
    '            Dim tmpKdNr = Me.KfzKennzeichen


    '            Me.kdNr = f.kdNr
    '            Me.KfzKennzeichen = f.KfzKennzeichen
    '            Me.SDLNr = f.SDLNr
    '            Me.History = f.History

    '            initDataBinding()

    '            Me.KfzKennzeichen = tmpKFZ
    '            Me.kdNr = tmpKdNr

    '            save()

    '        End If


    '        ' 


    '    End If
    '
    ' End Sub

    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
        If clearVeragCard(kdNr, KfzKennzeichen, History) Then
            RaiseEvent CHANGED(kdNr, KfzKennzeichen, SDLNr, History)
            Me.Visible = False
        End If
    End Sub

    Shared Function clearVeragCard(kdNr, KfzKennzeichen, History) As Boolean
        Dim kundenSQL As New kundenSQL
        'VERAG Card zurücksetzen --> Kdnr=-1
        If vbYes = MsgBox("Möchten Sie die Zuordnung der VERAG-Card wirklich aufheben?", vbYesNoCancel) Then
            Dim hist = kundenSQL.getValueTxtBySql("SELECT isnull(max([History]),0)+1 as History FROM SDL where KundenNr = '-1' AND KfzKennzeichen='" & KfzKennzeichen & "' And SDLNr ='501' ", "SDL")
            '  MsgBox("UPDATE [SDL] set KundenNr='-1', History='" & History & "' WHERE KundenNr='" & kdNr & "' and KfzKennzeichen='" & KfzKennzeichen & "' and History='" & History & "' and SDLNr=501 ")
            If kundenSQL.doSQL("UPDATE [SDL] set KundenNr='-1', History='" & hist & "' WHERE KundenNr='" & kdNr & "' and KfzKennzeichen='" & KfzKennzeichen & "' and History='" & History & "' and SDLNr=501 ", "SDL") Then
                Return True
            End If
        End If
        Return False
    End Function
    Shared Function clearAllVeragCard(kdNr, KfzKennzeichen) As Boolean
        Try

            Dim kundenSQL As New kundenSQL
            'VERAG Card zurücksetzen --> Kdnr=-1
            Dim dt = kundenSQL.loadDgvBySql("Select History FROM SDL WHERE KundenNr='" & kdNr & "' and KfzKennzeichen='" & KfzKennzeichen & "'and SDLNr=501")
            If dt IsNot Nothing Then
                For Each r In dt.Rows
                    Dim hist = kundenSQL.getValueTxtBySql("SELECT isnull(max([History]),0)+1 as History FROM SDL where KundenNr = '-1' AND KfzKennzeichen='" & KfzKennzeichen & "' And SDLNr ='501' ", "SDL")
                    kundenSQL.doSQL("UPDATE [SDL] set KundenNr='-1', History='" & hist & "' WHERE KundenNr='" & kdNr & "' and KfzKennzeichen='" & KfzKennzeichen & "' and History='" & r("History") & "' and SDLNr=501 ", "SDL")
                Next
            End If

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


End Class
