Imports IntraSell_DLL
Imports IntraSell_Net_Base

Public Class ArtikelQuick3
    Implements InterfacePrintable, IArtikelEditor

    Dim ARTIKEL_BILDER_VERZEICHNIS As String

    'Die Datensätze filtern
    Public Sub FilterBy(Expression As String)
        Try
            GrartikelBindingSource.Filter = Expression
        Catch ex As Exception
            HandleAppError(ex)
        End Try
    End Sub


    Private Sub Artikel_Load(sender As Object, e As System.EventArgs) Handles MyBase.Load
        Try

            ARTIKEL_BILDER_VERZEICHNIS = VarValue_Default(Variablen.ARTIKEL_BILDER_VERZEICHNIS, ClassSettings.GetDataPath & "produktbilder")

            Try
                Grartikel_kategorienTableAdapter.Fill(DsArtikel._grartikel_kategorien)
                GrartikelTableAdapter.Fill(DsArtikel.grartikel)
            Catch ex As Exception
                IgnoreAppError(ex)
            End Try

            AddHandler DsArtikel.grartikel.grartikelRowChanged, AddressOf AktivateSaveButton
            AddHandler DsArtikel.grartikel.ColumnChanged, AddressOf AktivateSaveButton2
        Catch ex As Exception
            HandleAppError(ex)
        End Try
    End Sub

    Public Sub Print(sender As Object) Implements InterfacePrintable.Print
        EtikettenToolStripMenuItem_Click(Nothing, Nothing)
    End Sub

#Region "New"

    Public Sub BeginNew(Optional artkatnr As Integer = -1)
        Try
            GrartikelBindingSource.AddNew()
            Dim artikel As dsArtikel.grartikelRow = GrartikelBindingSource.Current.Row
            artikel.ArtNr = NextId("grArtikel", "ArtNr", , True)

            Dim mwst = FirstRow("select mwst from grartikel a  where artkatnr = " & ArtikelKategorieControl1.ArtKatNr)
            If Not IsNumeric(mwst) Then
                mwst = VarValue_Default(ARTIKEL_ANLAGE_MWST, "20")
            End If
            artikel.MWST = mwst
            MWSTTextBox.Text = mwst
            artikel.EAN = artikel.ArtNr
            artikel.LagerArtikel = False
            artikel.ProduktAktiv = True
            If artkatnr > -1 Then
                ArtikelKategorieControl1.ArtKatNr = artkatnr
            End If
            BezeichnungTextBox.Focus()
        Catch ex As Exception
            HandleAppError(ex)
        End Try
    End Sub
#End Region


    Private Sub PreisATS_BruttoTextBox_TextChanged(sender As Object, e As EventArgs) Handles PreisATS_BruttoTextBox.Validated
        Try
            Dim artikel As dsArtikel.grartikelRow = GrartikelBindingSource.Current.Row
            artikel.PreisATS = FormatCurrency(PreisATS_BruttoTextBox.Text / ((100 + MWSTTextBox.Text) / 100), 3)
        Catch ex As Exception
        End Try
    End Sub


    Private Sub GrartikelBindingSource_DataError(sender As Object, e As BindingManagerDataErrorEventArgs) Handles GrartikelBindingSource.DataError

    End Sub

    Private Sub EtikettenToolStripMenuItem_Click(sender As Object, e As EventArgs)
        Try
            ArtikelEtikette.ArtNr = GrartikelBindingSource.Current.row.artnr
            ArtikelEtikette.Show()
            ArtikelEtikette.Focus()
        Catch ex As Exception
            HandleAppError(ex)
        End Try
    End Sub

    Private Sub ArtikelKategorieControl1_ArtKatNrAdded(newArtKatNR As Integer) Handles ArtikelKategorieControl1.ArtKatNrAdded
        Try
            DsArtikel.EnforceConstraints = False
            Grartikel_kategorienTableAdapter.Fill(DsArtikel._grartikel_kategorien)

            Dim artikel As dsArtikel.grartikelRow = GrartikelBindingSource.Current.Row
            artikel.ArtKatNr = newArtKatNR

            Try
                DsArtikel.EnforceConstraints = True
            Catch ex As Exception
            End Try

        Catch ex As Exception
            HandleAppError(ex)
        End Try
    End Sub

    Private Sub MWSTTextBox_Validated(sender As Object, e As EventArgs) Handles MWSTTextBox.Validated
        Try
            SetVarValue(ARTIKEL_ANLAGE_MWST, MWSTTextBox.Text)
        Catch ex As Exception

        End Try
    End Sub


    Private Sub ArtikelKategorieControl1_ArtKatNrChanged2(ArtKatNr As Integer) Handles ArtikelKategorieControl1.ArtKatNrChanged2
        Dim mwst = FirstRow("select mwst from grartikel a  where artkatnr = " & ArtKatNr)
        If IsNumeric(mwst) Then
            MWSTTextBox.Text = mwst
            MWSTTextBox.Enabled = False
        Else
            MWSTTextBox.Enabled = True
        End If
    End Sub

    ''' <summary>
    ''' Sicherstellen dass nur die selbe MWST je Kategorie benutzt wird
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub MWSTTextBox_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles MWSTTextBox.Validating
        If Not IsNumeric(ArtikelKategorieControl1.ArtKatNr) Then
            e.Cancel = True
            Exit Sub
        End If
        Dim mwst = FirstRow("select mwst from grartikel a  where artkatnr = " & ArtikelKategorieControl1.ArtKatNr)
        If IsNumeric(mwst) Then
            If MWSTTextBox.Text <> mwst Then
                e.Cancel = True
                Exit Sub
            End If
        End If
    End Sub


    Private Sub ButtonSave_Click(sender As Object, e As EventArgs) Handles ButtonSave.Click
        If ArtikelSave.Save(Me) Then
            Close()
        End If
    End Sub

    Private Sub AktivateSaveButton(sender As Object, e As IntraSell_Net_Base.dsArtikel.grartikelRowChangeEvent)
        ButtonSave.Enabled = True
    End Sub

    Private Sub AktivateSaveButton2(sender As Object, e As DataColumnChangeEventArgs)
        ButtonSave.Enabled = True
    End Sub



#Region "IArtikelEditor"
    Function ErrorProvider() As ErrorProvider Implements IArtikelEditor.ErrorProvider
        Return ErrorProvider1
    End Function

    Function BindingSource() As System.Windows.Forms.BindingSource Implements IArtikelEditor.BindingSource
        Return GrartikelBindingSource
    End Function

    Function GetBezeichnungTextBox() As Control Implements IArtikelEditor.GetBezeichnungTextBox
        Return BezeichnungTextBox
    End Function

    Function GetPreisATSTextBox() As Control Implements IArtikelEditor.GetPreisATSTextBox
        Return PreisATS_BruttoTextBox
    End Function

    Function GetPreisATS_BruttoTextBox() As Control Implements IArtikelEditor.GetPreisATS_BruttoTextBox
        Return PreisATS_BruttoTextBox
    End Function

    Function GetArtikelKategorieControl() As Control Implements IArtikelEditor.GetArtikelKategorieControl
        Return ArtikelKategorieControl1
    End Function

    Function GetMWSTTextBox() As Control Implements IArtikelEditor.GetMWSTTextBox
        Return MWSTTextBox
    End Function

    Function GetEANTextBox() As Control Implements IArtikelEditor.GetEANTextBox
        Return BezeichnungTextBox
    End Function

    Function GetGrartikelTableAdapter() As IntraSell_Net_Base.dsArtikelTableAdapters.grartikelTableAdapter Implements IArtikelEditor.GetGrartikelTableAdapter
        Return GrartikelTableAdapter
    End Function

    Function GetDsArtikel() As IntraSell_Net_Base.dsArtikel Implements IArtikelEditor.GetDsArtikel
        Return DsArtikel
    End Function

    Function ValidateFrom() As Boolean Implements IArtikelEditor.ValidateFrom
        Return Validate()
    End Function
#End Region
End Class