From 0cdb2671d3b9c1610517f7850861457a513c4daa Mon Sep 17 00:00:00 2001 From: "m.ilhan" Date: Tue, 8 Oct 2024 09:21:35 +0200 Subject: [PATCH] Neue Aufgabe, Send Mail Alle Imex Kunden ohne Abfertigung in den letzten 2 Jahren --- MailSender/MAILSender.vb | 104 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 102 insertions(+), 2 deletions(-) diff --git a/MailSender/MAILSender.vb b/MailSender/MAILSender.vb index f0b6009..fecd0ea 100644 --- a/MailSender/MAILSender.vb +++ b/MailSender/MAILSender.vb @@ -71,7 +71,7 @@ Module Mail 'PARAM = "THYSSENKRUPP_AUSWERTUNG" 'PARAM = "JAHRESABRECHNUNG AG-ZS" - 'PARAM = "AMBAR_Datev_Mailversand_to_HK" + 'PARAM = "Imex_Kunden_keine_Abfertigung" '------------------------------------------------------------------------------------ ' PARAM = "NCTSLIST_TOBB" @@ -283,7 +283,15 @@ Module Mail System.Console.WriteLine("Vorgang gestartet...") SendEmail_AMBARTOHKT() System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...") + Case "Imex_Kunden_keine_Abfertigung" + Dim von = CDate("01." & Now.AddMonths(-1).Month & "." & Now.AddMonths(-1).Year) + Dim bis = CDate("01." & Now.Month & "." & Now.Year).AddDays(-1) + System.Console.WriteLine("OPTION erkannt: Imex-Kunden ohne Abfertigung – Erstellt eine monatliche Auswertung der Imex-Kunden, die in den letzten 2 Jahren keine Abfertigung hatten") + System.Console.WriteLine("Auswertung Details gestartet...") + If SendEmail_ImexAbfertigung("cf@verag.ag", von, bis) Then + System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...") + End If Case Else System.Console.WriteLine("OPTION nicht erkannt!") End Select @@ -587,6 +595,41 @@ Module Mail End Try End Function + Private Function SendEmail_ImexAbfertigung(Mailto As String, von As Date, bis As Date) As Boolean + Try + Dim excel As String = genImex_Abfertigung(von, bis) + System.Console.WriteLine("EXCEL erstellt...") + If excel <> "" And Not excel.StartsWith("ERROR: ") Then + + System.Console.WriteLine("Sende E-Mail...") + + Dim Subject = "Imex-Kunden ohne Abfertigung " + Dim Body = "Anbei befinden sich die Auswertung von " & von.ToShortDateString & " bis " & bis.ToShortDateString & "." & + "

Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString & + "


Automatisch generiertes E-Mail. Bitte Antworten Sie nicht an diese E-Mail." & + "

VERAG SPEDITION AG" + + + Dim anhenge As New List(Of String) + anhenge.Add(excel) + If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False,, "m.ilhan@verag.ag", anhenge) Then + System.Console.WriteLine("E-Mail gesendet.") + System.Console.WriteLine("Erfolgreich!") + Else + System.Console.WriteLine("ERROR BEIM SENDEN DER MAIL!") + + End If + + Return True + Else + System.Console.WriteLine(excel) + End If + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL) + System.Console.WriteLine(ex.Message & ex.StackTrace) + Return False + End Try + End Function Private Function SendEmail_Jahresauwsertung_AG_ZF(Mailto As String, abfertigungsart As Integer, Filialnr As String, von As Date, bis As Date) As Boolean Try Dim excel As String = genEXCEL_ANNA(Filialnr, abfertigungsart, von, bis) @@ -1554,6 +1597,60 @@ Module Mail End Function + Public Function genImex_Abfertigung(von As Date, bis As Date) As String + Try + Dim sqlstr As String = "" + + sqlstr &= "SELECT * " + sqlstr &= "FROM ( " + sqlstr &= " SELECT [KundenNr], [FilialenNr] " + sqlstr &= " FROM [VERAG].[dbo].[KundenFilialen] " + sqlstr &= " WHERE [FilialenNr] = 5501 " + sqlstr &= ") AS kf " + sqlstr &= "LEFT JOIN ( " + sqlstr &= " SELECT EndempfängerKundenNr, AbsenderKundenNr, EmpfängerKundenNr, [FilialenNr], [FrachtführerKundenNr], AvisiererKundenNr, VermittlerKundenNr " + sqlstr &= " FROM [VERAG].[dbo].[Speditionsbuch] " + sqlstr &= " WHERE [FilialenNr] = '5501' " + sqlstr &= " AND [Abfertigungsdatum] > DATEADD(YEAR, -2, GETDATE()) " + sqlstr &= ") AS sped ON kf.[FilialenNr] = sped.[FilialenNr] " + sqlstr &= "AND ( " + sqlstr &= " sped.EndempfängerKundenNr = kf.[KundenNr] OR " + sqlstr &= " sped.AbsenderKundenNr = kf.[KundenNr] OR " + sqlstr &= " sped.EmpfängerKundenNr = kf.[KundenNr] OR " + sqlstr &= " sped.AvisiererKundenNr = kf.[KundenNr] OR " + sqlstr &= " sped.[FrachtführerKundenNr] = kf.[KundenNr] OR " + sqlstr &= " sped.VermittlerKundenNr = kf.[KundenNr] " + sqlstr &= ") " + sqlstr &= "LEFT JOIN ( " + sqlstr &= " SELECT AdressenNr, Auswahl " + sqlstr &= " FROM [VERAG].[dbo].[Adressen] " + sqlstr &= " WHERE Auswahl = 'A' " + sqlstr &= ") AS Ad ON Ad.AdressenNr = kf.[KundenNr] " + sqlstr &= "LEFT JOIN ( " + sqlstr &= " SELECT KundenNr, [OffertenNr] " + sqlstr &= " FROM [VERAG].[dbo].[Offerten] " + sqlstr &= " WHERE [OffertenNr] = 1 " + sqlstr &= ") AS o ON kf.KundenNr = o.KundenNr " + sqlstr &= "WHERE sped.[FilialenNr] IS NULL " + sqlstr &= "AND Ad.Auswahl = 'A' " + sqlstr &= "AND OffertenNr = 1 " + sqlstr &= "AND LEFT(kf.KundenNr, 1) = '1'; " + + + Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr, 300) + + + Dim filepath = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt,,,,, False, "Report Data_ImexAbfertigung" & "_" & von.ToShortDateString & "-" & bis.ToShortDateString) + If filepath = "" Then Return "ERROR 01: Fehler beim Erzeugen des XLS." + + Return filepath + Catch ex As System.Exception + ' MsgBox(ex.Message) + Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace + End Try + + End Function + Public Function genEXCEL_ANNA(FilialenNr As String, abfertigungsart As Integer, von As Date, bis As Date) As String Try @@ -2046,7 +2143,7 @@ Module Mail Return "ERROR: " & ex.Message End Try End Function - Public Function loadDgvBySqlFMZOLL(ByVal sql As String) As DataTable + Public Function loadDgvBySqlFMZOLL(ByVal sql As String, Optional CmdChangeTimeout As Integer = 0) As DataTable Try Dim myTable = New DataTable() Dim conn As SqlConnection = VERAG_PROG_ALLGEMEIN.SQL.GetNewOpenConnectionFMZOLL @@ -2054,6 +2151,9 @@ Module Mail 'conn.Open() Using cmd As New SqlCommand(sql, conn) + If (CmdChangeTimeout > 0) Then + cmd.CommandTimeout = CmdChangeTimeout + End If Dim dr As SqlDataReader = cmd.ExecuteReader() myTable.Load(dr) dr.Close()