diff --git a/MailSender/MAILSender.vb b/MailSender/MAILSender.vb index f7b7242..e1e7a24 100644 --- a/MailSender/MAILSender.vb +++ b/MailSender/MAILSender.vb @@ -62,7 +62,7 @@ Module Mail '------------------------------------------------------------------------------------ ' PARAM = "NCTSLIST_TOBB" - ' PARAM = "NCTSLIST_TOBB" + 'PARAM = "KD_DroppedJobs" '------------------------------------------------------------------------------------ If PARAM = "" Then @@ -429,6 +429,28 @@ Module Mail If MDM_IT_Verguetung(Jahr) Then 'für Andreas Details System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...") End If + Case "KD_DroppedJobs" 'Rückgang Abfertigungszahlen + System.Console.WriteLine("OPTION erkannt: KD_DroppedJobs _ Erstellt die Auswertung der Kunden mit rückläufigen Zahlen") + System.Console.WriteLine("Auswertung gestartet...") + Dim FirmaTmp = "" + If (parameter.Count - 1) >= 2 Then + FirmaTmp = parameter(2) + System.Console.WriteLine("Parameter 'FirmaTmp' erkannt: " & FirmaTmp) + End If + + If FirmaTmp <> "" Then + KD_DroppedJobs(FirmaTmp, "EMPFÄNGER") + KD_DroppedJobs(FirmaTmp, "AVISIERER") + System.Console.WriteLine("Vorgang abgeschlossen ...") + Else + KD_DroppedJobs("VERAG", "EMPFÄNGER") + KD_DroppedJobs("VERAG", "AVISIERER") + KD_DroppedJobs("IMEX", "EMPFÄNGER") + KD_DroppedJobs("IMEX", "AVISIERER") + KD_DroppedJobs("UNISPED", "EMPFÄNGER") + KD_DroppedJobs("UNISPED", "AVISIERER") + System.Console.WriteLine("Vorgang abgeschlossen ...") + End If Case "Kassenbuch_Zufall" System.Console.WriteLine("OPTION erkannt: Kassenbuch_Zufall - Zufallsziehung zur Kassenkontrolle.") System.Console.WriteLine("Vorgang gestartet...") @@ -1380,6 +1402,192 @@ Module Mail Return False End Function + Private Function KD_DroppedJobs(Firma, Art) As Boolean + + Dim [To] = "" + Dim CC = "" + Dim Bcc = "" + Select Case Firma + Case "VERAG" + [To] = "kundenservice@verag.ag" + CC = "cf@verag.ag;al@verag.ag;ml@verag.ag" + Case "IMEX" + [To] = "kundenservice@verag.ag" + CC = "cf@verag.ag;al@verag.ag;ml@verag.ag" + Case "UNISPED" + [To] = "kundenservice@verag.ag" + CC = "cf@verag.ag;al@verag.ag;ml@verag.ag" + End Select + + ''''''''''''''''''''''''''' + '[To] = "al@verag.ag" + 'CC = "" + ''''''''''''''''''''''''''' + ''' + System.Console.WriteLine("E-Mail Daten initialisiert...") + Try + + + System.Console.WriteLine("SQL Abfrage / Daten laden...") + ' --- SQL 1x laden: alle Monate / Datenquellen --- + Dim sqlstr As String = "" + + Select Case Art + Case "EMPFÄNGER" + sqlstr = + "SELECT * + FROM dbo.ufn_KundenDropoff_Empfaenger + ( + '" & Firma & "', -- Firma + DEFAULT, -- Stichtag der Analyse ('2026-03-09') + 150, -- Mindest-Risikoscore für Anzeige + 52, -- Referenzzeitraum (Wochen) + 4, -- aktuelle Vergleichsperiode (Wochen) + 100, -- Mindestanzahl Vorgänge pro Jahr + 0.25, -- minimaler Drop (25%) + 21, -- Inaktivitätsgrenze (Tage) + 10.0, -- Gewicht absoluter Mengenrückgang + 5.0, -- Gewicht prozentualer Rückgang !!!!!!!!! + 20.0, -- Strafgewicht wenn letzte Woche 0 + 50, -- Bonus wenn Kunde >21 Tage inaktiv + 20 -- Bonus wenn Kunde >14 Tage inaktiv + ) + ORDER BY + RiskScore DESC, + ImpactPerWeek DESC, + DropPct_RecentVsBaseline DESC, + DaysSinceLast DESC, + BaselineAvgPerWeek DESC;" + Case "AVISIERER" + sqlstr = + "SELECT * + FROM dbo.ufn_KundenDropoff_Avisierer + ( + '" & Firma & "', -- Firma + DEFAULT, -- Stichtag der Analyse ('2026-03-09') + 150, -- Mindest-Risikoscore für Anzeige + 52, -- Referenzzeitraum (Wochen) + 4, -- aktuelle Vergleichsperiode (Wochen) + 100, -- Mindestanzahl Vorgänge pro Jahr + 0.25, -- minimaler Drop (25%) + 21, -- Inaktivitätsgrenze (Tage) + 10.0, -- Gewicht absoluter Mengenrückgang + 5.0, -- Gewicht prozentualer Rückgang !!!!!!!!! + 20.0, -- Strafgewicht wenn letzte Woche 0 + 50, -- Bonus wenn Kunde >21 Tage inaktiv + 20 -- Bonus wenn Kunde >14 Tage inaktiv + ) + ORDER BY + RiskScore DESC, + ImpactPerWeek DESC, + DropPct_RecentVsBaseline DESC, + DaysSinceLast DESC, + BaselineAvgPerWeek DESC;" + End Select + + + Dim dt As DataTable = (New VERAG_PROG_ALLGEMEIN.SQL).loadDgvBySql(sqlstr, "FMZOLL") + + + + System.Console.WriteLine("Erstelle EXCEL...") + Dim excel As String = "" + + '--------------------------------------------------- + Dim exclApp As Object = Nothing + Dim Datei As Object = Nothing + Dim Blatt As Object = Nothing + + Dim filepath As String = "" + + Try + + exclApp = CreateObject("Excel.Application") + With exclApp + .Visible = False + .DisplayAlerts = False + + Dim filepathTmp = sPath & "KD_DroppedJobs_" & Art & "_" & Format(Now, "yyyyMMdd_HHmmss") & ".xlsx" + + ' Template aus Resources schreiben + Try + My.Computer.FileSystem.WriteAllBytes(filepathTmp, My.Resources.KD_DroppedJobs, False) + Catch ex As Exception + MsgBox(ex.Message & ex.StackTrace) + + Return False + End Try + + Datei = .Workbooks.Open(filepathTmp) + Blatt = Datei.Worksheets(1) + + Blatt.Range("D1").Value = Art + Blatt.Range("F1").Value = Now.ToShortDateString + + Dim r As Integer = 4 + Dim c As Integer = 1 + + If dt IsNot Nothing Then + + For Each row As DataRow In dt.Rows + c = 1 + ' MsgBox("r: " & r) + For Each col As DataColumn In dt.Columns + ' MsgBox("c: " & c) + + Blatt.Cells(r, c).Value = row(col) + c += 1 + Next + r += 1 + Next + + Datei.SaveAs(filepathTmp) + Datei.Close(False) + exclApp.Quit() + + filepath = filepathTmp + + End If + End With + Catch ex As Exception + MsgBox(ex.Message & ex.StackTrace) + + Return False + Finally + + Blatt = Nothing + Datei = Nothing + exclApp = Nothing + + GC.Collect() + GC.WaitForPendingFinalizers() + GC.Collect() + End Try + '--------------------------------------------------- + + Dim From = "al@verag.ag" + If filepath <> "" Then + System.Console.WriteLine("EXCEL erstellt...") + + System.Console.WriteLine("Sende E-Mail...") + + Dim ANHANG As List(Of String) = New List(Of String) + ANHANG.Add(filepath) + VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail([To], "Auswertung Dropped Jobs: " & Art & " - " & Firma, "Anbei befindet sich die Auswertung der Dropped Jobs von " & Firma & ".", From,,, CC, Bcc, ANHANG) + Return True + Else + System.Console.WriteLine("EXCEL Error - Pfad leer...") + System.Console.WriteLine("Sende Error E-Mail...") + VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail([To], "Auswertung Dropped Jobs - kein Anhang", "Fehler beim Erstellen für " & Firma & ".", From,,, CC, Bcc) + Return False + End If + Catch ex3 As Exception + MsgBox(ex3.Message & ex3.StackTrace) + Return False + End Try + Return False + + End Function Private Function MDM_IT_Verguetung(Jahr) As Boolean Dim Msg As New MailMessage Dim myCredentials As New System.Net.NetworkCredential diff --git a/MailSender/MailSender.vbproj b/MailSender/MailSender.vbproj index 7118932..f1fd8c3 100644 --- a/MailSender/MailSender.vbproj +++ b/MailSender/MailSender.vbproj @@ -119,6 +119,7 @@ + diff --git a/MailSender/My Project/Resources.Designer.vb b/MailSender/My Project/Resources.Designer.vb index c926658..a5214b8 100644 --- a/MailSender/My Project/Resources.Designer.vb +++ b/MailSender/My Project/Resources.Designer.vb @@ -100,6 +100,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + ''' + Friend ReadOnly Property KD_DroppedJobs() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("KD_DroppedJobs", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + ''' ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[]. ''' diff --git a/MailSender/My Project/Resources.resx b/MailSender/My Project/Resources.resx index a566e5c..5ce21eb 100644 --- a/MailSender/My Project/Resources.resx +++ b/MailSender/My Project/Resources.resx @@ -130,6 +130,9 @@ ..\Resources\Detailauswertung_divers.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\KD_DroppedJobs.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\Resources\MDM_AI_Verguetung.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 diff --git a/MailSender/Resources/KD_DroppedJobs.xlsx b/MailSender/Resources/KD_DroppedJobs.xlsx new file mode 100644 index 0000000..7a7bb45 Binary files /dev/null and b/MailSender/Resources/KD_DroppedJobs.xlsx differ