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

View File

@@ -128,6 +128,7 @@
<None Include="Resources\QS_Aufteilung.xlsx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="Resources\RG_ZF.xlsx" />
</ItemGroup>
<ItemGroup>
<WCFMetadata Include="Service References\" />
@@ -137,6 +138,10 @@
<Project>{a3b497bd-842c-4a2b-b398-ed1976849df1}</Project>
<Name>VERAG_PROG_ALLGEMEIN</Name>
</ProjectReference>
<ProjectReference Include="..\DAKOSY_Worker\DAKOSY_Worker_lib.vbproj">
<Project>{50E8E49B-4FD9-4DD4-B159-BDC2B7D0E94F}</Project>
<Name>DAKOSY_Worker_lib</Name>
</ProjectReference>
<ProjectReference Include="..\UID\ADMIN.vbproj">
<Project>{6eb4d3a4-3cf2-4651-9af9-ad5f727df403}</Project>
<Name>ADMIN</Name>

View File

@@ -22,7 +22,7 @@ Namespace My.Resources
'''<summary>
''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
@@ -99,5 +99,15 @@ Namespace My.Resources
Return CType(obj,Byte())
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ System.Byte[].
'''</summary>
Friend ReadOnly Property RG_ZF() As Byte()
Get
Dim obj As Object = ResourceManager.GetObject("RG_ZF", resourceCulture)
Return CType(obj,Byte())
End Get
End Property
End Module
End Namespace

View File

@@ -130,4 +130,7 @@
<data name="QS_Aufteilung" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\QS_Aufteilung.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="RG_ZF" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\RG_ZF.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

Binary file not shown.

View File

@@ -16,7 +16,7 @@
Private Sub frmERS_Load(sender As Object, e As EventArgs) Handles MyBase.Load
lblProgramm.Text = progId & " - " & progName & IIf(progVersion <> "", " (" & progVersion & ")", "")
lblFirma.Text = firma
lblFirma.Text = IIf(firma IsNot DBNull.Value, firma, "")
txtUser.Text = maId & " " & userName
txtType.Text = type
txtMethode.Text = errMethodName

View File

@@ -26,6 +26,9 @@ Partial Class usrCntlERS
Me.SplitContainer = New System.Windows.Forms.SplitContainer()
Me.pnlSearch = New System.Windows.Forms.Panel()
Me.SplitContainer1 = New System.Windows.Forms.SplitContainer()
Me.txtFehlersuche = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.Label2 = New System.Windows.Forms.Label()
Me.cbxTestSys = New System.Windows.Forms.CheckBox()
Me.Label9 = New System.Windows.Forms.Label()
Me.txtUser = New VERAG_PROG_ALLGEMEIN.KdSearchBox()
Me.cboType = New VERAG_PROG_ALLGEMEIN.MyComboBox()
@@ -61,7 +64,6 @@ Partial Class usrCntlERS
Me.Panel3 = New System.Windows.Forms.Panel()
Me.Button10 = New System.Windows.Forms.Button()
Me.Button11 = New System.Windows.Forms.Button()
Me.cbxTestSys = New System.Windows.Forms.CheckBox()
CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainer.Panel1.SuspendLayout()
Me.SplitContainer.Panel2.SuspendLayout()
@@ -117,6 +119,8 @@ Partial Class usrCntlERS
'
'SplitContainer1.Panel1
'
Me.SplitContainer1.Panel1.Controls.Add(Me.txtFehlersuche)
Me.SplitContainer1.Panel1.Controls.Add(Me.Label2)
Me.SplitContainer1.Panel1.Controls.Add(Me.cbxTestSys)
Me.SplitContainer1.Panel1.Controls.Add(Me.Label9)
Me.SplitContainer1.Panel1.Controls.Add(Me.txtUser)
@@ -148,10 +152,56 @@ Partial Class usrCntlERS
Me.SplitContainer1.SplitterDistance = 125
Me.SplitContainer1.TabIndex = 0
'
'txtFehlersuche
'
Me.txtFehlersuche._DateTimeOnly = False
Me.txtFehlersuche._numbersOnly = False
Me.txtFehlersuche._numbersOnlyKommastellen = ""
Me.txtFehlersuche._numbersOnlyTrennzeichen = True
Me.txtFehlersuche._Prozent = False
Me.txtFehlersuche._ShortDateNew = False
Me.txtFehlersuche._ShortDateOnly = False
Me.txtFehlersuche._TimeOnly = False
Me.txtFehlersuche._TimeOnly_Seconds = False
Me.txtFehlersuche._value = ""
Me.txtFehlersuche._Waehrung = False
Me.txtFehlersuche._WaehrungZeichen = True
Me.txtFehlersuche.ForeColor = System.Drawing.Color.Black
Me.txtFehlersuche.Location = New System.Drawing.Point(532, 79)
Me.txtFehlersuche.MaxLineLength = -1
Me.txtFehlersuche.MaxLines_Warning = ""
Me.txtFehlersuche.MaxLines_Warning_Label = Nothing
Me.txtFehlersuche.Name = "txtFehlersuche"
Me.txtFehlersuche.Size = New System.Drawing.Size(217, 20)
Me.txtFehlersuche.TabIndex = 52
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(449, 83)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(72, 13)
Me.Label2.TabIndex = 51
Me.Label2.Text = "Fehlersuche*:"
'
'cbxTestSys
'
Me.cbxTestSys.AutoSize = True
Me.cbxTestSys.BackColor = System.Drawing.Color.White
Me.cbxTestSys.Checked = True
Me.cbxTestSys.CheckState = System.Windows.Forms.CheckState.Indeterminate
Me.cbxTestSys.Location = New System.Drawing.Point(487, 3)
Me.cbxTestSys.Name = "cbxTestSys"
Me.cbxTestSys.Size = New System.Drawing.Size(79, 17)
Me.cbxTestSys.TabIndex = 50
Me.cbxTestSys.Text = "Testsystem"
Me.cbxTestSys.ThreeState = True
Me.cbxTestSys.UseVisualStyleBackColor = False
'
'Label9
'
Me.Label9.AutoSize = True
Me.Label9.Location = New System.Drawing.Point(330, 62)
Me.Label9.Location = New System.Drawing.Point(449, 39)
Me.Label9.Name = "Label9"
Me.Label9.Size = New System.Drawing.Size(32, 13)
Me.Label9.TabIndex = 47
@@ -176,7 +226,7 @@ Partial Class usrCntlERS
Me.txtUser.KdNr = "-1"
Me.txtUser.kdNrField = Nothing
Me.txtUser.KdNrNullInt = Nothing
Me.txtUser.Location = New System.Drawing.Point(368, 58)
Me.txtUser.Location = New System.Drawing.Point(532, 35)
Me.txtUser.Name = "txtUser"
Me.txtUser.nurAktive = False
Me.txtUser.searchActive = True
@@ -193,7 +243,7 @@ Partial Class usrCntlERS
Me.cboType.DropDownWidth = 250
Me.cboType.Font = New System.Drawing.Font("Microsoft Tai Le", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.cboType.FormattingEnabled = True
Me.cboType.Location = New System.Drawing.Point(451, 30)
Me.cboType.Location = New System.Drawing.Point(333, 79)
Me.cboType.Name = "cboType"
Me.cboType.Size = New System.Drawing.Size(105, 22)
Me.cboType.TabIndex = 42
@@ -202,7 +252,7 @@ Partial Class usrCntlERS
'
Me.Label6.AutoSize = True
Me.Label6.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label6.Location = New System.Drawing.Point(448, 12)
Me.Label6.Location = New System.Drawing.Point(330, 61)
Me.Label6.Name = "Label6"
Me.Label6.Size = New System.Drawing.Size(35, 13)
Me.Label6.TabIndex = 41
@@ -462,7 +512,7 @@ Partial Class usrCntlERS
Me.cboFirma.DropDownWidth = 250
Me.cboFirma.Font = New System.Drawing.Font("Microsoft Tai Le", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.cboFirma.FormattingEnabled = True
Me.cboFirma.Location = New System.Drawing.Point(575, 26)
Me.cboFirma.Location = New System.Drawing.Point(334, 124)
Me.cboFirma.Name = "cboFirma"
Me.cboFirma.Size = New System.Drawing.Size(104, 22)
Me.cboFirma.TabIndex = 20
@@ -471,7 +521,7 @@ Partial Class usrCntlERS
'
Me.Label1.AutoSize = True
Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label1.Location = New System.Drawing.Point(572, 8)
Me.Label1.Location = New System.Drawing.Point(331, 106)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(37, 13)
Me.Label1.TabIndex = 6
@@ -633,20 +683,6 @@ Partial Class usrCntlERS
Me.Button11.TabIndex = 4
Me.Button11.UseVisualStyleBackColor = True
'
'cbxTestSys
'
Me.cbxTestSys.AutoSize = True
Me.cbxTestSys.BackColor = System.Drawing.Color.White
Me.cbxTestSys.Checked = True
Me.cbxTestSys.CheckState = System.Windows.Forms.CheckState.Indeterminate
Me.cbxTestSys.Location = New System.Drawing.Point(530, 64)
Me.cbxTestSys.Name = "cbxTestSys"
Me.cbxTestSys.Size = New System.Drawing.Size(79, 17)
Me.cbxTestSys.TabIndex = 50
Me.cbxTestSys.Text = "Testsystem"
Me.cbxTestSys.ThreeState = True
Me.cbxTestSys.UseVisualStyleBackColor = False
'
'usrCntlERS
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -711,4 +747,6 @@ Partial Class usrCntlERS
Friend WithEvents txtUser As VERAG_PROG_ALLGEMEIN.KdSearchBox
Friend WithEvents lblErgebnis As Label
Friend WithEvents cbxTestSys As CheckBox
Friend WithEvents Label2 As Label
Friend WithEvents txtFehlersuche As VERAG_PROG_ALLGEMEIN.MyTextBox
End Class

View File

@@ -226,6 +226,10 @@ Public Class usrCntlERS
sqlstr &= " AND [ers_Testsystem] = @ersTestsystem "
End If
If txtFehlersuche.Text <> "" Then
sqlstr &= " AND ([ers_errStack] like '" & txtFehlersuche.Text.Replace("*", "%") & "' Or [ers_errMessage] like '" & txtFehlersuche.Text.Replace("*", "%") & "' OR [ers_errMethodName] like '" & txtFehlersuche.Text.Replace("*", "%") & "') "
End If
Return sqlstr
End Function
@@ -270,4 +274,13 @@ Public Class usrCntlERS
sender.RELOAD()
Me.Cursor = Cursors.Default
End Sub
Private Sub txtFehlersuche_KeyDown(sender As Object, e As KeyEventArgs) Handles txtFehlersuche.KeyDown
If e.KeyCode = Keys.Enter Then
Me.btnSuche_Click(sender, e)
e.Handled = True
End If
End Sub
End Class