diff --git a/MailSender/MAILSender.vb b/MailSender/MAILSender.vb
index 262ee2d..9874398 100644
--- a/MailSender/MAILSender.vb
+++ b/MailSender/MAILSender.vb
@@ -1,4 +1,5 @@
-Imports System.Data.SqlClient
+Imports System.Runtime.InteropServices
+Imports System.Data.SqlClient
Imports System.IO
Imports System.Net
Imports System.Net.Mail
@@ -50,7 +51,7 @@ Module Mail
'Exit Sub
- ' PARAM = "TETRAPAK_OKT"
+ ' PARAM = "MDM_IT_Verguetung"
'PARAM = "JAHRESABRECHNUNG AG-ZS"
' PARAM = "UID_OPS_SYSKA_ABGLEICH"
@@ -408,6 +409,17 @@ Module Mail
If MDM_Zollbuero_Verguetung(Jahr) Then 'für Andreas Details
System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
End If
+ Case "MDM_IT_Verguetung"
+ System.Console.WriteLine("OPTION erkannt: MDM_IT_Verguetung _ Erstellt die Auswertung der durchgeführten MDM Transaktionen.")
+ System.Console.WriteLine("Auswertung gestartet...")
+ Dim Jahr = -1
+ If (parameter.Count - 1) >= 2 Then
+ Jahr = parameter(2)
+ System.Console.WriteLine("Parameter 'Jahr' erkannt: " & Jahr)
+ End If
+ If MDM_IT_Verguetung(Jahr) Then 'für Andreas Details
+ System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...")
+ End If
Case "Kassenbuch_Zufall"
System.Console.WriteLine("OPTION erkannt: Kassenbuch_Zufall - Zufallsziehung zur Kassenkontrolle.")
System.Console.WriteLine("Vorgang gestartet...")
@@ -1359,6 +1371,77 @@ Module Mail
Return False
End Function
+ Private Function MDM_IT_Verguetung(Jahr) As Boolean
+ Dim Msg As New MailMessage
+ Dim myCredentials As New System.Net.NetworkCredential
+ myCredentials.UserName = "al@verag.ag"
+ myCredentials.Password = "verag#2"
+
+ Msg.IsBodyHtml = False
+ Dim mySmtpsvr As New SmtpClient()
+ mySmtpsvr.Host = "owa.verag.ag"
+ mySmtpsvr.Port = 587 '25 '587 '25
+ mySmtpsvr.UseDefaultCredentials = False
+ mySmtpsvr.Credentials = myCredentials
+ System.Console.WriteLine("E-Mail Daten initialisiert...")
+ Try
+ Dim datum As String = Now.AddDays(-1).ToShortDateString
+ System.Console.WriteLine("Erstelle EXCEL...")
+ Dim excel As String = genEXCEL_MDM_IT(Jahr)
+ System.Console.WriteLine("EXCEL erstellt...")
+ If excel <> "" And Not excel.StartsWith("ERROR: ") Then
+
+ System.Console.WriteLine("Sende E-Mail...")
+ Msg.From = New MailAddress("al@verag.ag")
+
+
+ ' Msg.To.Add("Viktoria.Leirich@imex-group.at")
+ Msg.To.Add("as@verag.ag")
+ Msg.To.Add("sales@verag.ag")
+ '' Msg.To.Add("jl@verag.ag")
+ '' Msg.Bcc.Add("al@verag.ag")
+ Msg.CC.Add("jl@verag.ag")
+ Msg.CC.Add("al@verag.ag")
+
+
+ Msg.Subject = "Auswertung MDM-IT Vergütung"
+ Msg.Body = "Anbei befindet sich die Auswertung der MDM-IT Vergütung" &
+ "." & vbNewLine & vbNewLine & "Erstellt am: " & Now.ToShortDateString & ", um " & Now.ToShortTimeString &
+ vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."
+
+ Dim attachment1 As Attachment = New Attachment(File.OpenRead(excel), "Auswertung.xlsx")
+ Msg.Attachments.Add(attachment1)
+
+ mySmtpsvr.Send(Msg)
+
+ System.Console.WriteLine("E-Mail gesendet.")
+ System.Console.WriteLine("Erfolgreich!")
+ Return True
+ Else
+ System.Console.WriteLine(excel)
+ End If
+ Catch ex As Exception
+ Try
+ mySmtpsvr.Port = 25
+ mySmtpsvr.Send(Msg)
+
+ Catch ex2 As Exception
+ Try
+ mySmtpsvr.Host = "192.168.0.107"
+ mySmtpsvr.Port = 25
+ mySmtpsvr.Send(Msg)
+
+ Catch ex3 As Exception
+ MsgBox(ex3.Message & ex3.StackTrace)
+ Return False
+ End Try
+ End Try
+
+
+ End Try
+ Return False
+ End Function
+
Private Function SendEmail_OP5000(firma As String, LandEinschr As String, Mail_to() As String, Mail_cc() As String, Mail_bcc() As String, Mail_Subject As String) As Boolean
' send()
@@ -3065,6 +3148,154 @@ Module Mail
End Function
+ Public Function genEXCEL_MDM_IT(ByVal Jahr As Integer) As String
+ Dim exclApp As Object = Nothing
+ Dim Datei As Object = Nothing
+ Dim Blatt As Object = Nothing
+
+ Try
+ Dim yearVal As Integer = If(Jahr > 0, Jahr, Now.AddMonths(-1).Year)
+
+ exclApp = CreateObject("Excel.Application")
+ With exclApp
+ .Visible = False
+ .DisplayAlerts = False
+
+ Dim filepath As String = sPath & "MDM_IT_Verguetung.xlsx"
+
+ 'Template aus Resources schreiben
+ Try
+ My.Computer.FileSystem.WriteAllBytes(filepath, My.Resources.MDM_it_Verguetung, False)
+ Catch ex As Exception
+ Return "ERROR 01: " & ex.Message & vbNewLine & ex.StackTrace
+ End Try
+
+ Datei = .Workbooks.Open(filepath)
+ Blatt = Datei.Worksheets("CS") ' ggf. anpassen
+
+ ' Jahr eintragen (wie bisher)
+ Blatt.Range("G1").Value = yearVal
+
+ ' --- Zielbereich leeren (nur Wertebereich, nicht Monatsnamen/Überschriften) ---
+ ' Monate sind i.d.R. Zeile 7-18 (12 Monate). Spalten B-F
+ Blatt.Range("B8:F19").ClearContents()
+
+ ' --- SQL 1x laden: alle Monate / Datenquellen ---
+ Dim sqlstr As String =
+ "SELECT * FROM (
+ SELECT
+ COUNT(*) AS Anzahl,
+ 'IDS' AS Datenquelle,
+ MONTH(t.YearMonthDay) AS [Month],
+ YEAR(t.YearMonthDay) AS [Year]
+ FROM tblIDSTransactionsNew t
+ INNER JOIN tbl_IDS_Länder l ON t.OutletCountryCode = l.OutletCountryCode
+ INNER JOIN tbl_IDS_Produkte p ON t.ProductTypeCode = p.ProductTypeCode
+ WHERE YEAR(t.YearMonthDay) = " & yearVal & "
+ GROUP BY MONTH(t.YearMonthDay), YEAR(t.YearMonthDay)
+
+ UNION ALL
+
+ SELECT
+ COUNT(*) AS Anzahl,
+ Datenquelle,
+ MONTH([Transaction date]) AS [Month],
+ YEAR([Transaction date]) AS [Year]
+ FROM [VERAG].[dbo].[tblMautbericht]
+ WHERE YEAR([Transaction date]) = " & yearVal & "
+ GROUP BY Datenquelle, MONTH([Transaction date]), YEAR([Transaction date])
+ ) AS temp
+ ORDER BY Datenquelle, temp.[Year], temp.[Month];"
+
+ Dim dt As DataTable = loadDgvBySqlFMZOLL(sqlstr)
+
+ ' --- Map (Datenquelle, Monat) -> Anzahl ---
+ Dim map As New Dictionary(Of String, Integer)(StringComparer.OrdinalIgnoreCase)
+
+ If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then
+ For Each r As DataRow In dt.Rows
+ Dim src As String = If(r("Datenquelle") Is DBNull.Value, "", CStr(r("Datenquelle")).Trim())
+
+ ' Sonderzuordnung
+ If src.Equals("AT", StringComparison.OrdinalIgnoreCase) Then
+ src = "ASFINAG"
+ End If
+
+ Dim m As Integer = If(r("Month") Is DBNull.Value, 0, Convert.ToInt32(r("Month")))
+ Dim cnt As Integer = If(r("Anzahl") Is DBNull.Value, 0, Convert.ToInt32(r("Anzahl")))
+
+ If m >= 1 AndAlso m <= 12 AndAlso src <> "" Then
+ Dim key As String = src & "|" & m.ToString()
+ ' Falls doppelte Zeilen vorkommen, addieren wir (sicherer)
+ If map.ContainsKey(key) Then
+ map(key) += cnt
+ Else
+ map(key) = cnt
+ End If
+ End If
+ Next
+ End If
+
+ ' --- Spaltenmapping Datenquelle -> Excel-Spalte ---
+ Dim col As New Dictionary(Of String, String)(StringComparer.OrdinalIgnoreCase) From {
+ {"IDS", "B"},
+ {"PLOSE", "C"},
+ {"ASFINAG", "D"},
+ {"MSE", "E"},
+ {"UTA", "F"}
+ }
+
+ ' --- Schreiben: Monate 1..12 in Zeilen 7..18 ---
+ For monthIdx As Integer = 1 To 12
+ Dim rowExcel As Integer = 7 + monthIdx ' 7..18
+
+ For Each kvp In col
+ Dim src As String = kvp.Key
+ Dim colLetter As String = kvp.Value
+ Dim key As String = src & "|" & monthIdx.ToString()
+
+ Dim value As Integer = 0
+ If map.ContainsKey(key) Then value = map(key)
+
+ Blatt.Range(colLetter & rowExcel.ToString()).Value = value
+ Next
+ Next
+
+ Datei.Save()
+ Try : Datei.Close(True) : Catch : End Try
+ Try : .Quit() : Catch : End Try
+ End With
+
+ Return sPath & "MDM_IT_Verguetung.xlsx"
+
+ Catch ex As Exception
+ Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace
+
+ Finally
+ ' COM sauber freigeben (verhindert EXCEL.EXE-Leichen)
+ Try
+ If Blatt IsNot Nothing Then Marshal.FinalReleaseComObject(Blatt)
+ Catch
+ End Try
+ Try
+ If Datei IsNot Nothing Then Marshal.FinalReleaseComObject(Datei)
+ Catch
+ End Try
+ Try
+ If exclApp IsNot Nothing Then Marshal.FinalReleaseComObject(exclApp)
+ Catch
+ End Try
+
+ Blatt = Nothing
+ Datei = Nothing
+ exclApp = Nothing
+
+ GC.Collect()
+ GC.WaitForPendingFinalizers()
+ GC.Collect()
+ End Try
+ End Function
+
Public Function genEXCEL_DEPOT(KundenNr) As String
diff --git a/MailSender/MailSender.vbproj b/MailSender/MailSender.vbproj
index b15ab67..7118932 100644
--- a/MailSender/MailSender.vbproj
+++ b/MailSender/MailSender.vbproj
@@ -101,9 +101,9 @@
VbMyResourcesResXFileCodeGenerator
- Resources.Designer.vb
My.Resources
Designer
+ Resources.Designer.vb
@@ -119,12 +119,8 @@
-
- Always
-
-
- Always
-
+
+
Always
diff --git a/MailSender/My Project/Resources.Designer.vb b/MailSender/My Project/Resources.Designer.vb
index 29a6d4e..c926658 100644
--- a/MailSender/My Project/Resources.Designer.vb
+++ b/MailSender/My Project/Resources.Designer.vb
@@ -100,6 +100,26 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[].
+ '''
+ Friend ReadOnly Property MDM_AI_Verguetung() As Byte()
+ Get
+ Dim obj As Object = ResourceManager.GetObject("MDM_AI_Verguetung", resourceCulture)
+ Return CType(obj,Byte())
+ End Get
+ End Property
+
+ '''
+ ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[].
+ '''
+ Friend ReadOnly Property MDM_IT_Verguetung() As Byte()
+ Get
+ Dim obj As Object = ResourceManager.GetObject("MDM_IT_Verguetung", 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 ee6689d..a566e5c 100644
--- a/MailSender/My Project/Resources.resx
+++ b/MailSender/My Project/Resources.resx
@@ -130,6 +130,12 @@
..\Resources\Detailauswertung_divers.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
+
+
+ ..\Resources\MDM_IT_Verguetung.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
..\resources\mdm_zoll_verguetung.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
diff --git a/MailSender/Resources/MDM_IT_Verguetung.xlsx b/MailSender/Resources/MDM_IT_Verguetung.xlsx
index 7b0cc56..f0339dd 100644
Binary files a/MailSender/Resources/MDM_IT_Verguetung.xlsx and b/MailSender/Resources/MDM_IT_Verguetung.xlsx differ
diff --git a/UID/ADMIN.vbproj b/UID/ADMIN.vbproj
index aaba6b3..9fb8b2d 100644
--- a/UID/ADMIN.vbproj
+++ b/UID/ADMIN.vbproj
@@ -980,6 +980,8 @@
Always
+
+
Component
Always
diff --git a/UID/My Project/Resources.Designer.vb b/UID/My Project/Resources.Designer.vb
index 49c0df4..023baeb 100644
--- a/UID/My Project/Resources.Designer.vb
+++ b/UID/My Project/Resources.Designer.vb
@@ -424,6 +424,26 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[].
+ '''
+ Friend ReadOnly Property MDM_AI_Verguetung() As Byte()
+ Get
+ Dim obj As Object = ResourceManager.GetObject("MDM_AI_Verguetung", resourceCulture)
+ Return CType(obj,Byte())
+ End Get
+ End Property
+
+ '''
+ ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[].
+ '''
+ Friend ReadOnly Property MDM_IT_Verguetung() As Byte()
+ Get
+ Dim obj As Object = ResourceManager.GetObject("MDM_IT_Verguetung", resourceCulture)
+ Return CType(obj,Byte())
+ End Get
+ End Property
+
'''
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
'''
diff --git a/UID/My Project/Resources.resx b/UID/My Project/Resources.resx
index 3c00e24..093ca70 100644
--- a/UID/My Project/Resources.resx
+++ b/UID/My Project/Resources.resx
@@ -316,4 +316,10 @@
..\Resources\sdl_ico2.ico;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\MDM_AI_Verguetung.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ ..\Resources\MDM_IT_Verguetung.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
\ No newline at end of file
diff --git a/UID/Resources/MDM_AI_Verguetung.xlsx b/UID/Resources/MDM_AI_Verguetung.xlsx
new file mode 100644
index 0000000..63a115c
Binary files /dev/null and b/UID/Resources/MDM_AI_Verguetung.xlsx differ
diff --git a/UID/Resources/MDM_IT_Verguetung.xlsx b/UID/Resources/MDM_IT_Verguetung.xlsx
new file mode 100644
index 0000000..7b0cc56
Binary files /dev/null and b/UID/Resources/MDM_IT_Verguetung.xlsx differ