Grund für Gutschrift

Navigation:  Skripts > Programmerweiterungen > Beispiele >

Grund für Gutschrift

Previous pageReturn to chapter overviewNext page

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