Imports IntraSell_DLL
Imports IntraSell_Net_Base

Public Class IntraSellCommandListener
    Public Sub Init()
        WriteLog("IntraSellCommandListener.Init")
        AddHandler ModuleGlobal.CommandRequestEvent, AddressOf OnCommand
    End Sub

    Public Sub Destroy()
        WriteLog("IntraSellCommandListener.Destroy")
        RemoveHandler ModuleGlobal.CommandRequestEvent, AddressOf OnCommand
    End Sub

    ''' <summary>
    ''' 
    ''' </summary>
    ''' <param name="cmd"></param>
    Private Sub OnCommand(cmd As IntraSellCommand)
        Try
            WriteDebug("IntraSell_Net:OnCommand cmd " & cmd.Serialize)

            If TypeOf (cmd) Is IntraSellVorgangCommand Then
                Dim c = CType(cmd, IntraSellVorgangCommand)
                Dim vorgInBearb = LadeVorgang(c.Typ, c.Nummer)

                Select Case c.command
                    Case IntraSellCommands.OpenVorgang
                        Dim v As Vorgang = OeffneVorgangByNummer(vorgInBearb.Typ, vorgInBearb.Nummer, True)
                        v.Show()

                    Case IntraSellCommands.Zahlungseingang
                        Dim commandZE = CType(cmd, IntraSellZahlungseingangCommand)
                        ModuleKassabuch.MakeKassaBuchEintrag(Datum:=commandZE.Datum, Konto:=commandZE.Konto, Beschreibung:=commandZE.Info,
                                                             Betrag:=commandZE.Betrag, MitarbeiterNr:=ModuleGlobals.MitarbeiterID,
                                                             Zahlungsmethode:=commandZE.Zahlungsmethode,
                                                             VorgangTyp:=commandZE.Typ, VorgangNummer:=commandZE.Nummer)
                    Case IntraSellCommands.Absagen

                        ModuleBuchVorgang.SetVorgangStatus(vorgInBearb.Typ, vorgInBearb.Nummer, VorgangStatus.STORNIERT, ModuleGlobals.MitarbeiterID, silent:=True)

                    Case IntraSellCommands.RechnungAbschliessen
                        ModuleBuchVorgang.VorgangAbschliessen(vorgInBearb.Typ, vorgInBearb.Nummer)

                End Select
            End If

            If TypeOf (cmd) Is IntraSellOeffneArtikelMaskeCommand Then
                Dim c = CType(cmd, IntraSellOeffneArtikelMaskeCommand)
                OffneArtikelMaske(c.ArtNr)
            End If

            If TypeOf (cmd) Is IntraSellReportCommand Then
                ModuleReportsAutomatisch.SendeStatistik()
                ModuleReportsAutomatisch.ReportTaskAnlegen()
            End If

        Catch ex As Exception
            HandleAppError(ex, "Fehler in OnReminder", Silent:=True)
        End Try
    End Sub
End Class
