Imports IntraSell_DLL

Imports IntraSell_Net_Base

Public Class VorgangKonvertieren

    Const VAR_AUTOMATISCH_ABSCHLIESSEN As String = "AUTOMATISCH_ABSCHLIESSEN"
    Dim loading As Boolean = True

    Private _VorgangTyp, _VorgangNummer As String, _KundenNr As Integer
    Public konvertiertNach_vorgangForm As Vorgang = Nothing

    Private Sub OK_Button_Click(sender As Object, e As System.EventArgs) Handles OK_Button.Click
        Try
            Cursor = Cursors.WaitCursor
            If KonvertiereVorgang() Then
                DialogResult = DialogResult.OK
                Close()
            End If
        Catch ex As Exception
            HandleAppError(ex)
        Finally
            Cursor = Cursors.Default
        End Try
    End Sub

    Private Sub Cancel_Button_Click(sender As Object, e As System.EventArgs) Handles Cancel_Button.Click
        Try
            DialogResult = DialogResult.Cancel
            Close()
        Catch ex As Exception
            HandleAppError(ex)
        End Try
    End Sub

    Private Sub VorgangKonvertieren_Load(sender As Object, e As System.EventArgs) Handles MyBase.Load
        Try
            loading = True
            'Arfaian: nur Rechnungen dürfen nicht automatisch abgeschlossen werden
            CheckBoxAbschliessen.Checked = VarValue_Default(VAR_AUTOMATISCH_ABSCHLIESSEN & _VorgangTyp, _VorgangTyp <> VorgangTypen.AR)
            If _VorgangTyp = VorgangTypen.AR Or _VorgangTyp = VorgangTypen.RE Then
                CheckBoxAbschliessen.Checked = False 'Arfaian: Rechungen und Retourwaren nie automatisch abschliessen per default
            End If

            FillComboBox(TypComboBox, "SELECT '' as Typ, '' as Bezeichnung union SELECT Typ, Bezeichnung FROM buchVorgangTyp ORDER By Bezeichnung", "Bezeichnung", "Typ")
            FillComboBox(TypNachComboBox, "SELECT '' as Typ, '' as Bezeichnung union SELECT Typ, Bezeichnung FROM buchVorgangTyp ORDER By Bezeichnung", "Bezeichnung", "Typ")

            TypComboBox.SelectedValue = _VorgangTyp
            NummerTextBox.Text = _VorgangNummer
            KundNrAdressenControl.IDNR = _KundenNr
            KundNrNachAdressenControl.IDNR = _KundenNr
            loading = False
        Catch ex As Exception
            HandleAppError(ex)
        End Try
    End Sub


    'setzte die Vorgangnummer für neue 
    Private Sub TypNachComboBox_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles TypNachComboBox.SelectedIndexChanged
        If loading Then Return
        Try

            If Not String.IsNullOrEmpty(TypNachComboBox.SelectedValue) Then
                NummerNachTextBox.Text = intrasell.vorgang.GetNewVorgangNummer(TypComboBox.SelectedValue, KundNrAdressenControl.IDNR)
                OK_Button.Enabled = True
            Else 'disable
                OK_Button.Enabled = False
            End If

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

    Private Function KonvertiereVorgang() As Boolean
        If KundNrNachAdressenControl.IDNR < 1 Then
            MsgBox("Kunden zuerst auswählen!", vbAbort)
            Return False
        End If
        Dim v = New VorgangInBearbeitung(TypComboBox.SelectedValue, NummerTextBox.Text)
        Dim alterVorgang = LadeVorgang(TypComboBox.SelectedValue, NummerTextBox.Text)

        'Sicherheitsabfrage wenn Kunde geändert wird
        If alterVorgang.KundNr <> KundNrNachAdressenControl.IDNR Then
            If MsgBox("Möchten Sie wirklich den Kunden ändern?", vbYesNo) = vbNo Then
                Return False
            End If
        End If

        PruefeVorgang(v)
        'abschliessen
        If CheckBoxAbschliessen.Checked Then
            VorgangAbschliessen(TypComboBox.SelectedValue, NummerTextBox.Text, silent:=False, benutzeTransaktion:=True)
        End If
        'end if

        Dim ZielVorgangTyp As String = TypNachComboBox.SelectedValue

        Dim newNummer As String = intrasell.vorgang.ConvertFromTo(
                                                    VorgangTypVon:=TypComboBox.SelectedValue,
                                                    VorgangTypNach:=ZielVorgangTyp,
                                                    VorgangNummerVon:=NummerTextBox.Text,
                                                    NewKundNr:=KundNrNachAdressenControl.IDNR,
                                                    silent:=False, benutzeTransaktion:=True, isStorno:=False)

        SetVorgangStatus(ZielVorgangTyp, newNummer, VorgangStatus.NEU, MitarbeiterID, silent:=True)
        SetMitarbeiter(ZielVorgangTyp, newNummer, MitarbeiterID)

        konvertiertNach_vorgangForm = OeffneVorgangByNummer(TypNachComboBox.SelectedValue, newNummer, NeuesFenster:=True)
        Return True
    End Function

    Sub Init(VorgangTyp As String, VorgangNummer As String, KundenNr As String)
        _VorgangTyp = VorgangTyp
        _VorgangNummer = VorgangNummer
        _KundenNr = KundenNr
    End Sub

    Private Sub CheckBoxNurKundenkonten_Click(sender As Object, e As EventArgs) Handles CheckBoxNurKundenkonten.Click
        Try

            If CheckBoxNurKundenkonten.Checked Then
                KundNrNachAdressenControl.Filter = "(nextIDNR=" & _KundenNr & " or IDNR = " & GetNextIDNR(_KundenNr) & ")"
            Else
                KundNrNachAdressenControl.Filter = ""
            End If
            KundNrNachAdressenControl.Reload()
        Catch ex As Exception

        End Try
    End Sub

    Private Sub CheckBoxAbschliessen_Click(sender As Object, e As EventArgs) Handles CheckBoxAbschliessen.Click
        Try
            SetVarValue(VAR_AUTOMATISCH_ABSCHLIESSEN & _VorgangTyp, CheckBoxAbschliessen.Checked)
            LabelHint.Visible = True
        Catch ex As Exception
            HandleAppError(ex, Silent:=True)
        End Try
    End Sub

End Class
