186 lines
8.3 KiB
VB.net
186 lines
8.3 KiB
VB.net
Imports System.Net.Mail
|
|
Imports System.IO
|
|
Imports System.Data.SqlClient
|
|
|
|
Module Mail
|
|
Dim sPath As String = System.AppDomain.CurrentDomain.BaseDirectory
|
|
Dim last_sent As String = sPath & "\last_sent.txt" '" & Now.ToString("ddMMyyyyHHmmss") & ".csv"
|
|
|
|
Sub Main()
|
|
If Not IO.File.Exists(last_sent) Then
|
|
IO.File.Create(last_sent)
|
|
End If
|
|
|
|
System.Console.WriteLine("Starte Wölfl-Mail...")
|
|
If SendEmail() Then
|
|
Try
|
|
Dim outFile As IO.StreamWriter = Nothing
|
|
outFile = My.Computer.FileSystem.OpenTextFileWriter(last_sent, False)
|
|
outFile.Write(Now.AddDays(-1).ToShortDateString)
|
|
outFile.Close()
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message)
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Function getDateFromFile() As String
|
|
Try
|
|
Dim instr = New StreamReader(last_sent)
|
|
Dim d As Date = CDate(instr.ReadLine).AddDays(1)
|
|
instr.Close()
|
|
Return d
|
|
Catch ex As Exception
|
|
Return ""
|
|
End Try
|
|
End Function
|
|
|
|
Private Function SendEmail() As Boolean
|
|
Dim Msg As New MailMessage
|
|
Dim myCredentials As New System.Net.NetworkCredential
|
|
myCredentials.UserName = "al@verag.ag"
|
|
myCredentials.Password = "Luxandreas#2"
|
|
Msg.IsBodyHtml = False
|
|
Dim mySmtpsvr As New SmtpClient()
|
|
mySmtpsvr.Host = "smtp.1und1.de" 'bei web.de
|
|
mySmtpsvr.Port = 587 '25
|
|
mySmtpsvr.UseDefaultCredentials = False
|
|
mySmtpsvr.Credentials = myCredentials
|
|
System.Console.WriteLine("E-Mail Daten initialisiert...")
|
|
Try
|
|
Dim datum As String = Now.AddDays(-1).ToShortDateString
|
|
Dim von = getDateFromFile()
|
|
If von = "" Then von = datum
|
|
Dim bis = datum
|
|
System.Console.WriteLine("Erstelle CSV...")
|
|
Dim csv As String = genCSV(von, bis)
|
|
System.Console.WriteLine("CSV erstellt...")
|
|
If csv <> "" And Not csv.StartsWith("ERROR: ") Then
|
|
System.Console.WriteLine("Sende E-Mail...")
|
|
Msg.From = New MailAddress("al@verag.ag")
|
|
Msg.To.Add("al@verag.ag")
|
|
Msg.Subject = "VERAG: Gutschriften/Rechnungen " & von & "-" & bis
|
|
Msg.Body = "Sehr geehrte Damen und Herren," & vbNewLine & vbNewLine & "anbei erhalten Sie die Gutschriften/Rechnungen im Zeitraum: " & von & "-" & bis & ". " & vbNewLine & vbNewLine & "Mit frendlichen Grüßen " & vbNewLine & "Ihr VERAG MDM-TEAM" & vbNewLine & vbNewLine & vbNewLine & "Automatisch generiertes E-Mail."
|
|
|
|
Dim attachment As Attachment = New Attachment(File.OpenRead(csv), "WOELFL_" & von & "-" & bis & ".csv")
|
|
Msg.Attachments.Add(attachment)
|
|
|
|
mySmtpsvr.Send(Msg)
|
|
|
|
System.Console.WriteLine("E-Mail gesendet.")
|
|
' MsgBox("E-Mail gesendet.", MsgBoxStyle.Information, Title:="Information")
|
|
System.Console.WriteLine("Erfolgreich!")
|
|
Return True
|
|
Else
|
|
System.Console.WriteLine(csv)
|
|
Threading.Thread.Sleep(1000)
|
|
' System.Console.WriteLine("Programm beendet in 5")
|
|
' Threading.Thread.Sleep(1000)
|
|
' System.Console.WriteLine("Programm beendet in 4")
|
|
' Threading.Thread.Sleep(1000)
|
|
System.Console.WriteLine("Programm beendet in 3")
|
|
Threading.Thread.Sleep(1000)
|
|
System.Console.WriteLine("Programm beendet in 2")
|
|
Threading.Thread.Sleep(1000)
|
|
System.Console.WriteLine("Programm beendet in 1")
|
|
Threading.Thread.Sleep(1000)
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox(Err.Number & ex.Message & ex.StackTrace.ToString) 'Falls ein Fehler auftritt wird eine MsgBox angezeigt
|
|
End Try
|
|
Return False
|
|
End Function
|
|
|
|
|
|
|
|
Public Function genCSV(von, bis) As String
|
|
Try
|
|
|
|
|
|
Dim sqlstr = " SELECT CASE [BelegartenNr] WHEN 71 THEN 'GS' " &
|
|
" WHEN 70 THEN 'RG' " &
|
|
" END AS [BelegArt] " &
|
|
" ,[RechnungsNr] " &
|
|
" ,CONVERT(VARCHAR(10), [RechnungsDatum], 104) as [RechnungsDatum] " &
|
|
" ,[FilialenNr],[AbfertigungsNr],[UnterNr] " &
|
|
" ,CONVERT(VARCHAR(10), [Abfertigungsdatum], 104) as [Abfertigungsdatum] " &
|
|
" ,isnull(Adressen.WölflKundenNr,'') as WölflKundenNr " &
|
|
" ,CASE WHEN [EmpfängerStraße] IS NULL THEN [EmpfängerName 1] " &
|
|
" ELSE [EmpfängerName 1] + ' ' +[EmpfängerName 2] " &
|
|
" END AS [Empfänger] " &
|
|
" ,CASE WHEN [EmpfängerStraße] IS NULL THEN [EmpfängerName 2] " &
|
|
" ELSE [EmpfängerStraße] " &
|
|
" END AS [EmpfängerAdresse 1] " &
|
|
" ,[EmpfängerOrt] as [EmpfängerAdresse 2] " &
|
|
" ,[Packstücke und Warenbezeichnung] as Beschreibung,[LeistungsNr],[LeistungsBez],[Steuersatz %] ,[SteuerpflichtigerGesamtbetrag] as [SteuerpflichtigerGesamtbetrag Netto] " &
|
|
" ,[SteuerfreierGesamtbetrag],[SteuerpflichtigerBetrag] as [SteuerpflichtigerBetrag Netto] ,[SteuerfreierBetrag] " &
|
|
" FROM [VERAG].[dbo].[Rechnungsausgang] inner join [VERAG].[dbo].[RechnungsausgangPositionen] on Rechnungsausgang.[RK_ID]=RechnungsausgangPositionen.[RK_ID] " &
|
|
" inner join [VERAG].[dbo].Adressen on Rechnungsausgang.EmpfängerKundenNr=Adressen.AdressenNr " &
|
|
" WHERE RechnungsKundenNr = 150000 " &
|
|
" and RechnungsDatum between '" & von & "' and '" & bis & "'"
|
|
' MsgBox(sqlstr)
|
|
' Dim SQL As New System.Data.Sql
|
|
Dim dt As DataTable = loadDgvBySql(sqlstr)
|
|
|
|
|
|
Dim fn As String = sPath & "WOELFL.csv" '" & Now.ToString("ddMMyyyyHHmmss") & ".csv"
|
|
Dim outFile As IO.StreamWriter = Nothing
|
|
Try
|
|
outFile = My.Computer.FileSystem.OpenTextFileWriter(fn, False)
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message)
|
|
Return "ERROR: Schreibfehler"
|
|
End Try
|
|
|
|
System.Console.WriteLine("Vorhandene Datensätze: " & dt.Rows.Count)
|
|
|
|
If dt.Rows.Count = 0 Then
|
|
Return "ERROR: KEINE DATEN"
|
|
End If
|
|
|
|
Dim clmns As String = ""
|
|
For i = 0 To dt.Columns.Count - 1
|
|
clmns &= dt.Columns(i).ColumnName.ToString().Replace(";", ",") & ";"
|
|
Next
|
|
|
|
outFile.WriteLine(clmns)
|
|
For i = 0 To dt.Rows.Count - 1
|
|
clmns = ""
|
|
For j = 0 To dt.Columns.Count - 1
|
|
Dim o As Object = dt.Rows(i).Item(j).ToString
|
|
clmns &= dt.Rows(i).Item(j).ToString() & ";"
|
|
Next
|
|
outFile.WriteLine(clmns)
|
|
Next
|
|
outFile.Close()
|
|
Return fn
|
|
|
|
Catch ex As Exception
|
|
MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
|
|
Return "ERROR: " & ex.Message
|
|
End Try
|
|
End Function
|
|
Public Function loadDgvBySql(ByVal sql As String) As DataTable
|
|
Try
|
|
Dim myTable = New DataTable()
|
|
Dim conn As New SqlConnection
|
|
conn.ConnectionString = "Data Source=192.168.0.91\SQLFMZOLL;Initial Catalog=VERAG;Integrated Security=false;User ID=test;Password=BmWr501956;"
|
|
conn.Open()
|
|
|
|
Using cmd As New SqlCommand(sql, conn)
|
|
Dim dr As SqlDataReader = cmd.ExecuteReader()
|
|
myTable.Load(dr)
|
|
dr.Close()
|
|
End Using
|
|
conn.Close()
|
|
|
|
Return myTable
|
|
Catch ex As Exception
|
|
MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message)
|
|
End Try
|
|
|
|
Return Nothing
|
|
End Function
|
|
|
|
End Module
|