Automatischer EMail-Versand für ZF-Auswertung, Errors GUI verbessert.

This commit is contained in:
2023-10-11 14:55:50 +02:00
parent 9c3677266d
commit 5aa8232db7
8 changed files with 235 additions and 26 deletions

View File

@@ -4,6 +4,7 @@ Imports System.Data.SqlClient
Imports ClosedXML.Excel
Imports DocumentFormat
Imports System.Net
Imports DAKOSY_Worker
Module Mail
Dim sPath As String = System.AppDomain.CurrentDomain.BaseDirectory
@@ -69,6 +70,7 @@ Module Mail
'PARAM = "THYSSENKRUPP_AUSWERTUNG"
'PARAM = "RED_BULL"
'PARAM = "ZF"
'------------------------------------------------------------------------------------
' PARAM = "NCTSLIST_TOBB"
@@ -97,7 +99,7 @@ Module Mail
' cnt += 1
'End While
If cnt >= 20 Then
System.Console.WriteLine("MailSender konnte nicht gestartet werden, da eine Insatanz noch läuft...")
System.Console.WriteLine("MailSender konnte nicht gestartet werden, da eine Instanz noch läuft...")
Else
'Select Case firma
@@ -205,6 +207,16 @@ Module Mail
If SendEmail_RED_BULL("customs.documents.ata@redbull.com", KdNr, von, bis) Then 'für Andreas Details
System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
End If
Case "ZF"
Dim von = CDate("01." & Now.AddMonths(-1).Month & "." & Now.AddMonths(-1).Year)
Dim bis = CDate("01." & Now.Month & "." & Now.Year).AddDays(-1)
Dim KdNr As String = "714869"
System.Console.WriteLine("OPTION erkannt: ZF _ Erstellt eine monaltiche Auswertung der DAKSOY-Abfertigungen für ZF.")
System.Console.WriteLine("Auswertung Details gestartet...")
If SendEmail_ZF("robert.buchbauer@zf.com; christina.eggerl@zf.com; teresa.elster@zf.com", KdNr, von, bis) Then
System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
End If
Case "QS_AUFTEILUNG"
System.Console.WriteLine("OPTION erkannt: QS_AUFTEILUNG _ Erstellt die Auswertung der QS-AUFTEILUNG.")
System.Console.WriteLine("Auswertung gestartet...")
@@ -556,6 +568,43 @@ Module Mail
End Try
End Function
Private Function SendEmail_ZF(Mailto As String, KdNr As String, von As Date, bis As Date) As Boolean
Try
Dim excel As String = genEXCEL_ZF(KdNr, von, bis)
System.Console.WriteLine("EXCEL erstellt...")
If excel <> "" And Not excel.StartsWith("ERROR: ") Then
System.Console.WriteLine("Sende E-Mail...")
Dim Subject = "Auswertungen Zollanmeldungen ZF Friedrichshafen AG "
Dim Body = "Anbei befinden sich die Auswertungen Zollanmeldungen von " & von.ToShortDateString & " bis " & bis.ToShortDateString & "." &
"<br><br>Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
"<br><br><br>Automatisch generiertes E-Mail. Bitte Antworten Sie nicht an dieses E-Mail." &
"<br><br>VERAG SPEDITION AG"
Dim anhenge As New List(Of String)
anhenge.Add(excel)
If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False,, "d.breimaier@verag.ag;ra@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.LOG)
System.Console.WriteLine(ex.Message & ex.StackTrace)
Return False
End Try
End Function
Private Function SendEmail_BRG_Auswertung(Optional wochenAuswertung As Boolean = False, Optional details As Boolean = False) As Boolean
Dim Msg As New MailMessage
Dim myCredentials As New System.Net.NetworkCredential
@@ -1375,6 +1424,97 @@ Module Mail
End Function
Public Function genEXCEL_ZF(KdNr As String, von As Date, bis As Date) As String
Try
Dim KUNDENADR = New VERAG_PROG_ALLGEMEIN.cAdressen(KdNr)
Dim sqlstr As String = ""
sqlstr &= "SELECT CAST([FilialenNr] as varchar) + '/' + CAST([AbfertigungsNr] as varchar) Abfertigungsnummer,cast([Abfertigungsdatum] as date)Abfertigungsdatum,Absender,Rechnungsbetrag Betrag ,BelegNr,[FilialenNr],[AbfertigungsNr],Speditionsbuch.Abfertigungsart,Abfertigungsbezeichnung"
sqlstr &= " FROM Speditionsbuch INNER JOIN [Abfertigungsarten] ON Speditionsbuch.Abfertigungsart=Abfertigungsarten.Abfertigungsart"
sqlstr &= " where EmpfängerKundenNr IN (" & KdNr & ") and Abfertigungsdatum BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And Speditionsbuch.Abfertigungsart IN (1,29)"
Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)
Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SR\"
If Not My.Computer.FileSystem.DirectoryExists(sPath) Then
My.Computer.FileSystem.CreateDirectory(sPath)
End If
Dim Path = ""
Dim exclApp As Object 'as Application
Dim Datei As Object 'as WorkBook
Dim Blatt As Object 'Microsoft.Office.Interop.Excel.Worksheet 'As Object 'as Worksheet
exclApp = CreateObject("Excel.Application")
With exclApp
.Visible = False
Try
Path = sPath & "ZF_" & von.ToShortDateString & "-" & bis.ToShortDateString & "" & " .xlsx"
While System.IO.File.Exists(Path)
Path = sPath & "ZF_" & von.ToShortDateString & "-" & bis.ToShortDateString & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx"
End While
My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.RG_ZF, False)
Catch ex As System.Exception
' MsgBox(ex.Message)
MsgBox("ERROR 01: " & ex.Message & vbNewLine & ex.StackTrace)
Return ""
End Try
Datei = .Workbooks.Open(Path) 'Anpassen
Blatt = Datei.Worksheets(1) 'Anpassen
Blatt.Range("I1").Value = von.ToShortDateString & "-" & bis.ToShortDateString
Dim cnt = 3
For Each r In dt.Rows
Blatt.Range("A" & cnt).Value = cnt - 2
Blatt.Range("B" & cnt).Value = r("Abfertigungsnummer")
' Blatt.Range("C" & cnt).Value = r("RechnungsNr")
Blatt.Range("C" & cnt).Value = r("Abfertigungsdatum")
Blatt.Range("D" & cnt).Value = r("Abfertigungsbezeichnung")
Blatt.Range("E" & cnt).Value = r("Absender")
Blatt.Range("F" & cnt).Value = "" 'r("Betrag")
Blatt.Range("H" & cnt).Value = r("BelegNr")
VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERAG"
Dim ZOLLANMELDUNG As New cZollsysteme_Aktenbeschriftung
If ZOLLANMELDUNG.getDataByBezugsnummer(r("FilialenNr") & "/" & r("AbfertigungsNr"), r("Abfertigungsart"), "", False) Then
Blatt.Range("F" & cnt).Value = ZOLLANMELDUNG.Rechnungspreis
Blatt.Range("G" & cnt).Value = ZOLLANMELDUNG.Handelsrechnung.Replace(", ", "," & vbNewLine)
Blatt.Range("I" & cnt).Value = ZOLLANMELDUNG.ABGABEN_ZOLL
Blatt.Range("J" & cnt).Value = ZOLLANMELDUNG.ANZ_POS
End If
cnt += 1
Next
Datei.Save()
.DisplayAlerts = False
.quit()
Try : Datei.close(True) : Catch : End Try
End With
'Dim filepath = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt,,,,, False, "Report Data_" & KUNDENADR.FullName & "_" & von.ToShortDateString & "-" & bis.ToShortDateString)
Dim filepath = Path
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
Private Sub releaseObject(ByVal obj As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
@@ -1417,7 +1557,7 @@ Module Mail
.Visible = False
Dim filepath = sPath & "CS_Auswertung.xlsx"
Try
My.Computer.FileSystem.WriteAllBytes(filepath, My.Resources.cs_Aufteilung, False)
My.Computer.FileSystem.WriteAllBytes(filepath, My.Resources.CS_Aufteilung, False)
Catch ex As System.Exception
' MsgBox(ex.Message)
Return "ERROR 01: " & ex.Message & vbNewLine & ex.StackTrace
@@ -1563,7 +1703,7 @@ Module Mail
.Visible = False
Dim filepath = sPath & "\Depot.xlsx"
Try
My.Computer.FileSystem.WriteAllBytes(filepath, My.Resources.depot, False)
My.Computer.FileSystem.WriteAllBytes(filepath, My.Resources.Depot, False)
Catch ex As System.Exception
' MsgBox(ex.Message)
Return "ERROR 01: " & ex.Message & vbNewLine & ex.StackTrace