Beschreibung
Beim erstellen einer Gutschrift wird eine Meldung angezeigt, die zur Angabe des Reklamationsgrunds auffordert. Die Antwort wird in den erweiterten Eigenschaften des Auftrags gespeichert und kann durch LINQ Abfragen abgerufen werden.
Voraussetzung
Auftragsverwaltung ab Version 12.1.6
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 des Auftrag Typs überwacht. Wird der Typ auf "Gutschrift" geändert, wird eine Meldung zur Angabe des Reklamationsgrunds eingeblendet. |
3. | Das Ergebnis wird in den erweiterten Eigenschaften des Auftrags gespeichert und kann zum erstellen von Filtern verwendet werden. |
Installation
Der Skript muss sich im Ordner "[Datenpfad]\Skripts\Autostart" befinden.
Um die Auftragsliste nach den Reklamationsgründen zu filtern kann folgende LINQ Abfrage verwendet werden:
From a In dc.tbl_Auftrag
Where (From e In a.tbl_Auftrag_Extendeds Where e.Kategorie = "RMA Grund" And e.Text = "Transportschaden").Any()
Der gelb markierte Text gibt den anzuzeigenden Reklamationsgrund an und kann je nach Bedarf angepasst werden. Dabei ist auf Groß-/Kleinschreibung zu achten.
Im Beispielskript sind folgende RMA Gründe verfügbar:
• | falsch bestellt |
• | falsch geliefert |
• | neu defekt |
• | Transportschaden |
• | sonstiges |
Einrichten einer Abfrage
1. | Öffnen Sie die Auftragsliste. Klicken Sie dazu im Hauptmenü auf "Aufträge" und anschließend auf "Alle Aufträge anzeigen" |
2. | Wählen Sie im rechten Navigationsmenü "Filter" aus. Im unteren Bereich des Filterdialogs über der Schaltfläche "Filter anwenden" befindet sich ein Textfeld. Klicken Sie dieses an und bestätigen Sie die angezeigte Warnung. |
3. | Geben Sie im Textfeld die oben angegebene LINQ abfrage ein. Passen Sie den gelben Text an Ihre Bedürfnisse an. |
4. | Klicken Sie auf das + neben der Filterliste im oberen Bereich um den Filter als neuen Filter zu speichern. |
5. | Geben Sie eine Bezeichnung für den neuen Filter ein und klicken Sie auf speichern. |
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
#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 "Fragt bei der erstellung einer Gutschrift nach dem Grund für die Gutschrift."
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 "Abfrage Grund für Gutschrift"
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
Dim Monitoring As New AuftragMonitoring(Auftrag, _Host)
End If
End Sub
Private Class AuftragMonitoring
Private LetzterAuftragsTyp As Int64
Private Form As Styletronix.Auftragsverwaltung.frm_Auftrag
Private Host As Object
Public Sub New(Form As Styletronix.Auftragsverwaltung.frm_Auftrag, Host As Object)
Me.Form = Form
Me.Host = Host
AddHandler Me.Form.BindingSource_Auftrag.CurrentItemChanged, AddressOf CurrentItemChanged
End Sub
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.typ Is Nothing AndAlso Not Auftragsdaten.typ = LetzterAuftragsTyp Then
'Auftragstyp prüfen
If Auftragsdaten.typ Is Nothing Then Return
'If Auftragsdaten.ID <= 0 Then Return
If Not Auftragsdaten.typ = EntityHelper.CustomDataTypes.AuftragTyp.Gutschrift Then Return
Me.LetzterAuftragsTyp = Auftragsdaten.typ
If (From a In Auftragsdaten.tbl_Auftrag_Extendeds Where a.Kategorie = "RMA Grund").Count > 0 Then Return
Using dlg As New Styletronix.ReportSystem.MessageBox2
dlg.Überschrift = "Geben Sie den Grund für die Gutschrift an."
dlg.Text = "Grund für Gutschrift"
Dim btn As New Styletronix.ReportSystem.MessageBox2.ButtonParameter
btn.Caption = "falsch bestellt"
btn.Tag = "falsch bestellt"
dlg.AddButton(btn)
btn = New Styletronix.ReportSystem.MessageBox2.ButtonParameter
btn.Caption = "falsch geliefert"
btn.Tag = "falsch geliefert"
dlg.AddButton(btn)
btn = New Styletronix.ReportSystem.MessageBox2.ButtonParameter
btn.Caption = "neu defekt"
btn.Tag = "neu defekt"
dlg.AddButton(btn)
btn = New Styletronix.ReportSystem.MessageBox2.ButtonParameter
btn.Caption = "Transportschaden"
btn.Tag = "Transportschaden"
dlg.AddButton(btn)
btn = New Styletronix.ReportSystem.MessageBox2.ButtonParameter
btn.Caption = "sonstiges"
btn.Tag = "sonstiges"
dlg.AddButton(btn)
btn = New Styletronix.ReportSystem.MessageBox2.ButtonParameter
btn.Caption = "abbruch"
btn.Description = "Schließt diese Meldung ohne angabe eines Grundes"
btn.Image = Styletronix.Auftragsverwaltung.My.Resources.Stop_2
btn.Tag = "cancel"
dlg.AddButton(btn)
dlg.ShowDialog()
If Not dlg.SelectedItem.Tag = "cancel" Then
Dim g As New tbl_Auftrag_Extended
g.Datum = DateTime.Now
g.Kategorie = "RMA Grund"
g.Text = dlg.SelectedItem.Tag
g.UserID = UserManagement.UserID
Auftragsdaten.tbl_Auftrag_Extendeds.Add(g)
End If
'From a In dc.tbl_Auftrag
'Where (From e In a.tbl_Auftrag_Extendeds Where e.Kategorie = "RMA Grund" And e.Text = "Transportschaden").Any()
End Using
End If
End Sub
End Class
End Class
End Namespace