Mahnstufe Melden

Navigation:  Skripts > Programmerweiterungen > Beispiele >

Mahnstufe Melden

Previous pageReturn to chapter overviewNext page

Beschreibung

Beim erstellen eines Auftrags und Auswahl eines Kunden wird eine Meldung angezeigt, falls der Kunde eine gewisse Mahnstufe erreicht hat.

 

 

Voraussetzung

Auftragsverwaltung ab Version 12.1.7

 

 

Ablauf des Skripts

 1. Beim Start der Auftragsverwaltung wird der Skript automatisch kompiliert und überwacht das erstellen von neuen Fenstern.

 

 2. Wird ein Fenster erstellt, welches dem Typ "Auftrag" entspricht, wird die Datenquelle auf Änderung der Kundennummer überwacht.

 

 3. Bei Änderung der Kundennummer wird die Summe aller unbezahlten Mahnstufen berechnet.

 

 4. Ist die Gesamt-Mahnstufe über einem bestimmten Level (> 0 in der Voreinstellung) wird eine Meldung angezeigt.

 

 

Installation

Der Skript muss sich im Ordner "[Datenpfad]\Skripts\Autostart"  befinden.

 

 

Skript

Imports Microsoft.VisualBasic

Imports System

Imports System.Collections.Generic

Imports System.Linq

Imports Styletronix.AuftragsverwaltungV2.Common

Imports Styletronix.AuftragsverwaltungV2

Imports Styletronix.AuftragsverwaltungV2.IPC

Imports Styletronix

Imports Styletronix.Threading.Thread_Manager

 

Namespace LagerstandAbfrage

    Public Class DynamicCode

        Implements IPC.IPluginDetails

        Implements IPC.ICommonPlugIn

 

        'Geben Sie hier die Mahnstufe ein, ab der eine Warnung angezeigt werden soll. Die Mahnstufe ist dabei die Summe aller Mahnstufen von unbezahlten Rechnungen

        Dim WarnungAbMahnstufe = 1

 

 

#Region "Deklarationen"

        Private _Host As Object

#End Region

 

#Region "PluginDetails"

        Public ReadOnly Property Plugin_Company As String Implements IPC.IPluginDetails.Plugin_Company

            Get

                Return "Styletronix.net"

            End Get

        End Property

        Public ReadOnly Property Plugin_Description As String Implements IPC.IPluginDetails.Plugin_Description

            Get

                Return "Zeigt beim erstellen eines neuen Auftrags eine Warnung, wenn Kunde aktive Mahnungen hat."

            End Get

        End Property

        Public ReadOnly Property Plugin_Icon As System.Drawing.Image Implements IPC.IPluginDetails.Plugin_Icon

            Get

                Return Nothing

            End Get

        End Property

        Public ReadOnly Property Plugin_Name As Object Implements IPC.IPluginDetails.Plugin_Name

            Get

                Return "Mahnungswarnung im Auftrag"

            End Get

        End Property

        Public ReadOnly Property Plugin_Version As System.Version Implements IPC.IPluginDetails.Plugin_Version

            Get

                Return New Version(1, 0, 0)

            End Get

        End Property

#End Region

 

#Region "CommonPlugIn"

        Public Sub Initialize(Host As Object) Implements AuftragsverwaltungV2.IPC.ICommonPlugIn.Initialize

            Me._Host = Host

            'Überwacht das öffnen von Fenstern.

            AddHandler CType(Me._Host, Styletronix.Auftragsverwaltung.mainApp).XtraTabbedMdiManager2.PageAdded, AddressOf PageAdded

        End Sub

        Public ReadOnly Property Plugin_HasConfigMenu As Boolean Implements AuftragsverwaltungV2.IPC.ICommonPlugIn.Plugin_HasConfigMenu

            Get

                Return False

            End Get

        End Property

        Public Sub ShowConfigMenu() Implements AuftragsverwaltungV2.IPC.ICommonPlugIn.ShowConfigMenu

            Throw New NotImplementedException

        End Sub

        Public Function ShutDown() As Boolean Implements AuftragsverwaltungV2.IPC.ICommonPlugIn.ShutDown

            Return True

        End Function

        Public Function ShutDownRequest() As AuftragsverwaltungV2.IPC.ICommonPlugIn.Shutdown_Result Implements AuftragsverwaltungV2.IPC.ICommonPlugIn.ShutDownRequest

            Return New AuftragsverwaltungV2.IPC.ICommonPlugIn.Shutdown_Result With {.Cancel = False}

        End Function

#End Region

 

        Private Sub PageAdded(ByVal sender As Object, ByVal e As DevExpress.XtraTabbedMdi.MdiTabPageEventArgs)

            'Beim öffnen eines neuen Fensters wird geprüft, ob es sich um einen Auftrag handelt.

            Dim form = CType(e.Page.MdiChild, Windows.Forms.Form)

            Dim Auftrag As Styletronix.Auftragsverwaltung.frm_Auftrag = TryCast(form, Styletronix.Auftragsverwaltung.frm_Auftrag)

            If Not Auftrag Is Nothing Then

                'Fügt eine Überwachung zur Datenquelle hinzu

                AddHandler Auftrag.BindingSource_Auftrag.CurrentItemChanged, AddressOf CurrentItemChanged

                AddHandler Auftrag.FormClosed, AddressOf FormClosed

            End If

        End Sub

        Private LetzteKDNr As Int64

        Private Sub CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs)

            Dim Auftragsdaten As tbl_Auftrag = TryCast(sender.Current, tbl_Auftrag)

            'Bei Änderung der Datenquelle prüfen, ob sich die KDNr geändert hat.

            If Not Auftragsdaten.KDNr Is Nothing AndAlso Not Auftragsdaten.KDNr = LetzteKDNr Then

 

                'Auftragstyp prüfen

                If Auftragsdaten.typ Is Nothing Then Return

                If Auftragsdaten.typ = EntityHelper.CustomDataTypes.AuftragTyp.Mahnung Then Return

 

                'Letzte KDNr speichern um mehrfachanzeige zu vermeiden.

                Me.LetzteKDNr = Auftragsdaten.KDNr

 

                'Suche alle unbezahlten Rechnungen mit Mahnstufen >= WarnungAbMahnstufe

                Using dc As New DC_AllgemeinDataContext(Einstellungen.SQL_Verbindungszeichenfolge)

                    Dim Mahnungen = (From a In dc.tbl_Auftrag Where a.KDNr = Auftragsdaten.KDNr And a.bezahlt = False And a.Mahnstufe > 0 And a.typ = EntityHelper.CustomDataTypes.AuftragTyp.Rechnung Select a.Mahnstufe).Sum

                    If Mahnungen >= WarnungAbMahnstufe Then

 

                        'Meldung anzeigen, wenn die Mahnstufe ein gewisses Level überschritten hat.

                        Using dlg As New Styletronix.ReportSystem.MessageBox2

                            dlg.Überschrift = "Achtung, der Kunde befindet sich auf Mahnstufe " & Mahnungen

                            dlg.Text = "Mahnungen vorhanden"

 

                            Dim btn As New Styletronix.ReportSystem.MessageBox2.ButtonParameter

                            btn.Caption = "OK"

                            btn.Description = "Meldung schließen"

                            btn.Tag = "ok"

                            dlg.AddButton(btn)

 

                            btn = New Styletronix.ReportSystem.MessageBox2.ButtonParameter

                            btn.Caption = "Aufträge anzeigen"

                            btn.Description = "Alle Aufträge des Kunden anzeigen"

                            btn.Tag = "liste"

                            dlg.AddButton(btn)

 

                            dlg.ShowDialog()

 

                            Select Case dlg.SelectedItem.Tag

                                Case "liste"

 

                                    'Auftragsliste anzeigen

                                    Dim AuftragListe As New Styletronix.Auftragsverwaltung.frm_Auftragsliste(CInt(Auftragsdaten.KDNr))

                                    AuftragListe.MdiParent = Me._Host

                                    AuftragListe.Show()

 

                            End Select

                        End Using

                    End If

                End Using

            End If

        End Sub

        Private Sub FormClosed(sender As Object, e As Windows.Forms.FormClosedEventArgs)

            RemoveHandler CType(sender, Styletronix.Auftragsverwaltung.frm_Auftrag).BindingSource_Auftrag.CurrentItemChanged, AddressOf CurrentItemChanged

        End Sub

    End Class

End Namespace