diff --git a/MailSender/MAILSender.vb b/MailSender/MAILSender.vb index afa905a..1677570 100644 --- a/MailSender/MAILSender.vb +++ b/MailSender/MAILSender.vb @@ -3,6 +3,7 @@ Imports System.IO Imports System.Net Imports System.Net.Mail Imports ClosedXML.Excel +Imports com.sun.xml.internal.rngom.digested Imports DAKOSY_Worker Imports VERAG_PROG_ALLGEMEIN @@ -58,7 +59,6 @@ Module Mail ' PARAM = "NCTSLIST_TOBB" ' PARAM = "NCTSLIST_TOBB" '------------------------------------------------------------------------------------ - 'PARAM = "TETRAPAK" If PARAM = "" Then System.Console.WriteLine("OPTION nicht erkannt!") @@ -485,7 +485,45 @@ Module Mail End If End If + Case "BERICHT" + + Dim von = CDate("01." & Now.AddMonths(-1).Month & "." & Now.AddMonths(-1).Year) + Dim bis = CDate("01." & Now.Month & "." & Now.Year).AddDays(-1) + + For Each r As DataRow In dtParam.Rows + + System.Console.WriteLine("OPTION erkannt:" & dtParam.Rows(0).Item("ms_info")) + System.Console.WriteLine("Auswertung Details gestartet...") + If SendEmail_DiverseKunden(r.Item("ms_an"), r.Item("ms_kundenNr"), von, bis, "BERICHT", r.Item("ms_cc"), r.Item("ms_bcc"), r.Item("ms_subject"), r.Item("ms_mailtext")) Then + System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...") + End If + + Next + + + + Case "DETAILBERICHT" + + Dim von = CDate("01." & Now.AddMonths(-1).Month & "." & Now.AddMonths(-1).Year) + Dim bis = CDate("01." & Now.Month & "." & Now.Year).AddDays(-1) + + For Each r As DataRow In dtParam.Rows + + System.Console.WriteLine("OPTION erkannt:" & dtParam.Rows(0).Item("ms_info")) + System.Console.WriteLine("Auswertung Details gestartet...") + If SendEmail_DiverseKunden(r.Item("ms_an"), r.Item("ms_kundenNr"), von, bis, "DETAILBERICHT", r.Item("ms_cc"), r.Item("ms_bcc"), r.Item("ms_subject"), r.Item("ms_mailtext")) Then + System.Console.WriteLine("Vorgang erfolgreich abgeschlossen ...") + End If + + Next + + + + + Case Else + + System.Console.WriteLine("OPTION nicht erkannt!") End Select @@ -952,6 +990,58 @@ Module Mail End Function + Private Function SendEmail_DiverseKunden(Mailto As String, KdNr As String, von As Date, bis As Date, Auswertungstyp As String, Optional cc As String = "", Optional bcc As String = "", Optional Subject As String = "", Optional Body As String = "") As Boolean + Try + Dim excel As String = genEXCEL_Bericht_Kunden(KdNr, von, bis, Auswertungstyp) + System.Console.WriteLine("EXCEL erstellt...") + If excel <> "" And Not excel.StartsWith("ERROR: ") Then + + System.Console.WriteLine("Sende E-Mail...") + + Dim ADR As New cAdressen(KdNr) + + If Subject = "" Then + + Subject = "Auswertungen Zollanmeldungen " & ADR.Name_1 + + + Else + Subject = replaceBodyVariable(Subject, von, bis) + End If + + + If Body = "" Then + Body = "Anbei befinden sich die Auswertungen Zollanmeldungen von " & von.ToShortDateString & " bis " & bis.ToShortDateString & "." & + "

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


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

VERAG SPEDITION AG" + + Else + Body = replaceBodyVariable(Body, von, bis) + End If + + Dim anhenge As New List(Of String) + anhenge.Add(excel) + If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Mailto, Subject, Body,,, False, cc, bcc, 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_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 @@ -2482,6 +2572,243 @@ Module Mail End Function + + Public Function genEXCEL_Bericht_Kunden(KdNr As String, von As Date, bis As Date, Auswertungstyp As String) As String + + Dim KUNDE = New VERAG_PROG_ALLGEMEIN.cKunde(KdNr) + + Dim dt As DataTable = (New SQL).loadDgvBySql("SELECT CAST([FilialenNr] as varchar) + '/' + CAST([AbfertigungsNr] as varchar) Abfertigungsnummer + ,cast([Abfertigungsdatum] as date)Abfertigungsdatum + ,Absender + ,Rechnungsbetrag Betrag + ,BelegNr + ,[FilialenNr],[AbfertigungsNr],Speditionsbuch.Abfertigungsart,Abfertigungsbezeichnung,Speditionsbuch.Zollsystem_Land + FROM Speditionsbuch INNER JOIN [Abfertigungsarten] ON Speditionsbuch.Abfertigungsart=Abfertigungsarten.Abfertigungsart + where EmpfängerKundenNr IN (" & KdNr & ") and VermittlerKundenNr IN (" & KdNr & ") and Abfertigungsdatum BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "' And Speditionsbuch.Abfertigungsart IN (1,29,38)", "FMZOLL") + + Try + + Dim Path = "" + If dt IsNot Nothing And dt.Rows.Count > 0 Then + + 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 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") + + Select Case Auswertungstyp.ToUpper + + Case "DETAILBERICHT" + + With exclApp + .Visible = False + + Try + Path = sPath & "Detailbericht_" & KUNDE.KundenNr & "_" & von.ToShortDateString & "-" & bis.ToShortDateString & "" & " .xlsx" + While System.IO.File.Exists(Path) + Path = sPath & KUNDE.KundenNr & von.ToShortDateString & "-" & bis.ToShortDateString & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx" + End While + My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Detailauswertung_divers, False) + Catch ex As System.Exception + End Try + + + Datei = .Workbooks.Open(Path) 'Anpassen + Blatt = Datei.Worksheets(1) 'Anpassen + + Dim cnt = 2 + For Each r In dt.Rows + Dim ZOLLANMELDUNG As New DAKOSY_Worker.cZollsysteme_Aktenbeschriftung + Try + Dim zS = If(r("Zollsystem_Land") IsNot DBNull.Value, r("Zollsystem_Land").ToString(), "") + If ZOLLANMELDUNG.getDataByBezugsnummer(r("FilialenNr") & "/" & r("AbfertigungsNr"), r("Abfertigungsart"), "", False, zS) Then + + If ZOLLANMELDUNG.dtWARENPOS.Rows.Count > 0 Then + + Dim rowcounter As Integer = 0 + + For Each row As DataRow In ZOLLANMELDUNG.dtWARENPOS.Rows + + Dim ZollInProzent As Double = 0 + If If(ZOLLANMELDUNG.RechnungspreisohneWahrung, "") <> "" Then + ZollInProzent = ZOLLANMELDUNG.ABGABEN_ZOLL / ZOLLANMELDUNG.RechnungspreisohneWahrung * 100 + End If + + Blatt.Range("A" & cnt).Value = cnt - 1 + Blatt.Range("B" & cnt).Value = r("Abfertigungsdatum") + Blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr")) + Blatt.Range("D" & cnt).Value = ZOLLANMELDUNG.Empfaenger + Blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") + Blatt.Range("F" & cnt).Value = r("BelegNr") + Blatt.Range("G" & cnt).Value = row.Item("PosNr") + Blatt.Range("H" & cnt).Value = row.Item("WarenNr") + Blatt.Range("I" & cnt).Value = "-" + Blatt.Range("J" & cnt).Value = row.Item("WarenBez") + Blatt.Range("K" & cnt).Value = "" + Blatt.Range("L" & cnt).Value = ZOLLANMELDUNG.Waehrungscode + Blatt.Range("M" & cnt).Value = ZOLLANMELDUNG.Geschaeftsart + Blatt.Range("N" & cnt).Value = ZOLLANMELDUNG.Zollstelle_Eingang + Blatt.Range("O" & cnt).Value = "" + Blatt.Range("P" & cnt).Value = row.Item("Netto") + Blatt.Range("Q" & cnt).Value = row.Item("PosWert") + Blatt.Range("R" & cnt).Value = IIf(rowcounter = 0, ZOLLANMELDUNG.ABGABEN_EUST, "") + Blatt.Range("S" & cnt).Value = IIf(rowcounter = 0, ZOLLANMELDUNG.ABGABEN_ZOLL, "") + Blatt.Range("T" & cnt).Value = IIf(rowcounter = 0, ZollInProzent.ToString("N2") & " %", "") + Blatt.Range("U" & cnt).Value = IIf(ZOLLANMELDUNG.VerBestLandZst.ToString.Count > 1, ZOLLANMELDUNG.VerBestLandZst.ToString.Substring(0, 2), "") + Blatt.Range("V" & cnt).Value = ZOLLANMELDUNG.Absender + Blatt.Range("W" & cnt).Value = row.Item("Herkunft") + Blatt.Range("X" & cnt).Value = ZOLLANMELDUNG.Incoterms + Blatt.Range("Y" & cnt).Value = row.Item("Verfahren") + Blatt.Range("Z" & cnt).Value = row.Item("Preferenz") + + If If(ZOLLANMELDUNG.ATCMRN, "") <> "" AndAlso Blatt.Range("F" & cnt).Value = "" Then + Blatt.Range("F" & cnt).Value = ZOLLANMELDUNG.ATCMRN + End If + + cnt += 1 + rowcounter += 1 + Next + Else + Dim ZollInProzent As Double = 0 + If If(ZOLLANMELDUNG.RechnungspreisohneWahrung, "") <> "" Then + ZollInProzent = ZOLLANMELDUNG.ABGABEN_ZOLL / ZOLLANMELDUNG.RechnungspreisohneWahrung * 100 + End If + + Blatt.Range("A" & cnt).Value = cnt - 1 + Blatt.Range("B" & cnt).Value = r("Abfertigungsdatum") + Blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr")) + Blatt.Range("D" & cnt).Value = ZOLLANMELDUNG.Empfaenger + Blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") + Blatt.Range("F" & cnt).Value = r("BelegNr") + Blatt.Range("G" & cnt).Value = "" + Blatt.Range("H" & cnt).Value = "" + Blatt.Range("I" & cnt).Value = "-" + Blatt.Range("J" & cnt).Value = "" + Blatt.Range("K" & cnt).Value = "" + Blatt.Range("L" & cnt).Value = ZOLLANMELDUNG.Waehrungscode + Blatt.Range("M" & cnt).Value = ZOLLANMELDUNG.Geschaeftsart + Blatt.Range("N" & cnt).Value = ZOLLANMELDUNG.Zollstelle_Eingang + Blatt.Range("O" & cnt).Value = "" + Blatt.Range("P" & cnt).Value = "" + Blatt.Range("Q" & cnt).Value = "" + Blatt.Range("R" & cnt).Value = ZOLLANMELDUNG.ABGABEN_EUST + Blatt.Range("S" & cnt).Value = ZOLLANMELDUNG.ABGABEN_ZOLL + Blatt.Range("T" & cnt).Value = ZollInProzent.ToString("N2") & " %" + Blatt.Range("U" & cnt).Value = IIf(ZOLLANMELDUNG.VerBestLandZst.ToString.Count > 1, ZOLLANMELDUNG.VerBestLandZst.ToString.Substring(0, 2), "") + Blatt.Range("V" & cnt).Value = ZOLLANMELDUNG.Absender + Blatt.Range("W" & cnt).Value = "" + Blatt.Range("X" & cnt).Value = ZOLLANMELDUNG.Incoterms + Blatt.Range("Y" & cnt).Value = "" + Blatt.Range("Z" & cnt).Value = "" + Blatt.Range("AA" & cnt).Value = "" + + + If If(ZOLLANMELDUNG.ATCMRN, "") <> "" AndAlso Blatt.Range("F" & cnt).Value = "" Then + Blatt.Range("F" & cnt).Value = ZOLLANMELDUNG.ATCMRN + End If + cnt += 1 + End If + End If + + Catch ex As Exception + + End Try + + Next + + Datei.Save() + .DisplayAlerts = False + .quit() + Try : Datei.close(True) : Catch : End Try + End With + + Case "BERICHT" + + + With exclApp + .Visible = False + + Try + Path = sPath & "Bericht_" & KUNDE.KundenNr & von.ToShortDateString & "-" & bis.ToShortDateString & "" & " .xlsx" + While System.IO.File.Exists(Path) + Path = sPath & KUNDE.KundenNr & von.ToShortDateString & "-" & bis.ToShortDateString & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx" + End While + My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.Auswertung_divers, False) + Catch ex As System.Exception + + 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") + + Dim ZOLLANMELDUNG As New DAKOSY_Worker.cZollsysteme_Aktenbeschriftung + Try + Dim zS = If(r("Zollsystem_Land") IsNot DBNull.Value, r("Zollsystem_Land").ToString(), "") + If ZOLLANMELDUNG.getDataByBezugsnummer(r("FilialenNr") & "/" & r("AbfertigungsNr"), r("Abfertigungsart"), "", False, zS) Then + Blatt.Range("F" & cnt).Value = ZOLLANMELDUNG.RechnungspreisohneWahrung + 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 + + If If(ZOLLANMELDUNG.ATCMRN, "") <> "" Then + Blatt.Range("H" & cnt).Value = ZOLLANMELDUNG.ATCMRN + End If + End If + + Catch ex As Exception + MsgBox(ex.Message & ex.StackTrace) + End Try + + cnt += 1 + Next + Datei.Save() + .DisplayAlerts = False + .quit() + Try : Datei.close(True) : Catch : End Try + End With + + + + End Select + + '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 + + End If + + Catch ex As System.Exception + ' MsgBox(ex.Message) + Return "ERROR 02: " & ex.Message & vbNewLine & ex.StackTrace + End Try + + + + Return "" + + End Function + Private Sub releaseObject(ByVal obj As Object) Try System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) diff --git a/MailSender/MailSender.vbproj b/MailSender/MailSender.vbproj index 135e095..36bbcc5 100644 --- a/MailSender/MailSender.vbproj +++ b/MailSender/MailSender.vbproj @@ -117,6 +117,8 @@ Settings.Designer.vb + + Always diff --git a/MailSender/My Project/Resources.Designer.vb b/MailSender/My Project/Resources.Designer.vb index 00c3826..29a6d4e 100644 --- a/MailSender/My Project/Resources.Designer.vb +++ b/MailSender/My Project/Resources.Designer.vb @@ -60,6 +60,16 @@ Namespace My.Resources End Set End Property + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + ''' + Friend ReadOnly Property Auswertung_divers() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("Auswertung_divers", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + ''' ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[]. ''' @@ -80,6 +90,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + ''' + Friend ReadOnly Property Detailauswertung_divers() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("Detailauswertung_divers", 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 f3e09a1..ee6689d 100644 --- a/MailSender/My Project/Resources.resx +++ b/MailSender/My Project/Resources.resx @@ -118,12 +118,18 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\Auswertung_divers.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\resources\cs_aufteilung.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ..\resources\depot.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\Detailauswertung_divers.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/Auswertung_divers.xlsx b/MailSender/Resources/Auswertung_divers.xlsx new file mode 100644 index 0000000..0230879 Binary files /dev/null and b/MailSender/Resources/Auswertung_divers.xlsx differ diff --git a/MailSender/Resources/Detailauswertung_divers.xlsx b/MailSender/Resources/Detailauswertung_divers.xlsx new file mode 100644 index 0000000..72b3606 Binary files /dev/null and b/MailSender/Resources/Detailauswertung_divers.xlsx differ diff --git a/UID/usrCntlMailsender_.vb b/UID/usrCntlMailsender_.vb index 9c082bc..982c858 100644 --- a/UID/usrCntlMailsender_.vb +++ b/UID/usrCntlMailsender_.vb @@ -79,7 +79,7 @@ Public Class usrCntlMailsender_ Dim TopMax = If(IsNumeric(txtMaxSrch.Text), " TOP " & txtMaxSrch.Text, "") - DatenarchivBind.initBinding("SELECT " & TopMax & " [ms_id],[ms_param],[ms_an],[ms_cc],[ms_bcc],[ms_subject],[ms_mailtext],[ms_aktiv],[ms_info],[ms_firma] FROM " & table & " WHERE 1 = 1 " & getParamwhere(), table) + DatenarchivBind.initBinding("SELECT " & TopMax & " [ms_id],[ms_param],[ms_kundenNr],[ms_an],[ms_cc],[ms_bcc],[ms_subject],[ms_mailtext],[ms_aktiv],[ms_info],[ms_firma] FROM " & table & " WHERE 1 = 1 " & getParamwhere(), table) DataGridView.DataSource = DatenarchivBind.bindingdataTable @@ -110,7 +110,7 @@ Public Class usrCntlMailsender_ Dim TopMax = If(IsNumeric(txtMaxSrch.Text), " TOP " & txtMaxSrch.Text, "") - DatenarchivBind.initBinding("SELECT " & TopMax & " [ms_id],[ms_param],[ms_an],[ms_cc],[ms_bcc],[ms_subject],[ms_mailtext],[ms_aktiv],[ms_info],[ms_firma] FROM " & table & " WHERE 1 = 1 " & getParamwhere(), table) + DatenarchivBind.initBinding("SELECT " & TopMax & " [ms_id],[ms_param],[ms_kundenNr],[ms_an],[ms_cc],[ms_bcc],[ms_subject],[ms_mailtext],[ms_aktiv],[ms_info],[ms_firma] FROM " & table & " WHERE 1 = 1 " & getParamwhere(), table) DataGridView.DataSource = DatenarchivBind.bindingdataTable