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