Mailsender

This commit is contained in:
2025-09-26 16:00:31 +02:00
parent 7c22afa197
commit 91a8717210
3 changed files with 121 additions and 75 deletions

View File

@@ -3,7 +3,6 @@ Imports System.IO
Imports System.Net Imports System.Net
Imports System.Net.Mail Imports System.Net.Mail
Imports ClosedXML.Excel Imports ClosedXML.Excel
Imports com.sun.xml.internal.rngom.digested
Imports DAKOSY_Worker Imports DAKOSY_Worker
Imports VERAG_PROG_ALLGEMEIN Imports VERAG_PROG_ALLGEMEIN
@@ -52,7 +51,7 @@ Module Mail
'PARAM = "UID_OPS_SYSKA_ABGLEICH" 'PARAM = "UID_OPS_SYSKA_ABGLEICH"
'PARAM = "JAHRESABRECHNUNG AG-ZS" 'PARAM = "BERICHT"
'------------------------------------------------------------------------------------ '------------------------------------------------------------------------------------
@@ -2581,7 +2580,7 @@ Module Mail
,Absender ,Absender
,Rechnungsbetrag Betrag ,Rechnungsbetrag Betrag
,BelegNr ,BelegNr
,[FilialenNr],[AbfertigungsNr],Speditionsbuch.Abfertigungsart,Abfertigungsbezeichnung,Speditionsbuch.Zollsystem_Land ,[FilialenNr],[AbfertigungsNr],Speditionsbuch.Abfertigungsart,Abfertigungsbezeichnung,Speditionsbuch.Zollsystem_Land, Speditionsbuch.[LKW Kennzeichen]
FROM Speditionsbuch INNER JOIN [Abfertigungsarten] ON Speditionsbuch.Abfertigungsart=Abfertigungsarten.Abfertigungsart 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") 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")
@@ -2746,39 +2745,90 @@ Module Mail
Datei = .Workbooks.Open(Path) 'Anpassen Datei = .Workbooks.Open(Path) 'Anpassen
Blatt = Datei.Worksheets(1) 'Anpassen Blatt = Datei.Worksheets(1) 'Anpassen
Blatt.Range("I1").Value = von.ToShortDateString & "-" & bis.ToShortDateString
Dim cnt = 3 If KUNDE.KundenNr = 902452 Then 'KUNDE WILL WIEDER EXZTAWURST!!!!!!!
For Each r In dt.Rows
Blatt.Range("A" & cnt).Value = cnt - 2 Blatt.Range("H1").Value = von.ToShortDateString & "-" & bis.ToShortDateString
Blatt.Range("B" & cnt).Value = r("Abfertigungsnummer")
' Blatt.Range("C" & cnt).Value = r("RechnungsNr") Blatt.Range("A" & 2).Value = "Nr"
Blatt.Range("C" & cnt).Value = r("Abfertigungsdatum") Blatt.Range("B" & 2).Value = "Datum"
Blatt.Range("D" & cnt).Value = r("Abfertigungsbezeichnung") Blatt.Range("C" & 2).Value = "MRN-Nr."
Blatt.Range("E" & cnt).Value = r("Absender") Blatt.Range("D" & 2).Value = "LKW/Cont."
Blatt.Range("F" & cnt).Value = "" 'r("Betrag") Blatt.Range("E" & 2).Value = "Rg.-Nr."
Blatt.Range("H" & cnt).Value = r("BelegNr") Blatt.Range("F" & 2).Value = "EUST"
Blatt.Range("G" & 2).Value = "Anzahl Pos."
Blatt.Range("H" & 2).Value = ""
Blatt.Range("I" & 2).Value = ""
Blatt.Range("J" & 2).Value = ""
Blatt.Range("K" & 2).Value = ""
Blatt.Range("L" & 2).Value = ""
Dim cnt = 3
For Each r In dt.Rows
Blatt.Range("A" & cnt).Value = cnt - 2
Blatt.Range("B" & cnt).Value = r("Abfertigungsdatum")
Blatt.Range("C" & cnt).Value = r("BelegNr")
Blatt.Range("D" & cnt).Value = r("LKW Kennzeichen")
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("E" & cnt).Value = ZOLLANMELDUNG.Handelsrechnung.Replace(", ", "," & vbNewLine)
Blatt.Range("F" & cnt).Value = ZOLLANMELDUNG.ABGABEN_EUST
Blatt.Range("G" & cnt).Value = ZOLLANMELDUNG.ANZ_POS
If If(ZOLLANMELDUNG.ATCMRN, "") <> "" Then
Blatt.Range("E" & cnt).Value = ZOLLANMELDUNG.ATCMRN
End If
End If
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
cnt += 1
Next
Else
Blatt.Range("I1").Value = von.ToShortDateString & "-" & bis.ToShortDateString
Dim ZOLLANMELDUNG As New DAKOSY_Worker.cZollsysteme_Aktenbeschriftung 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 Dim cnt = 3
Blatt.Range("H" & cnt).Value = ZOLLANMELDUNG.ATCMRN 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("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")
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.ABGABEN_EUST
Blatt.Range("K" & cnt).Value = ZOLLANMELDUNG.ANZ_POS
If If(ZOLLANMELDUNG.ATCMRN, "") <> "" Then
Blatt.Range("H" & cnt).Value = ZOLLANMELDUNG.ATCMRN
End If
End If End If
End If
Catch ex As Exception Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace) MsgBox(ex.Message & ex.StackTrace)
End Try End Try
cnt += 1
Next
End If
cnt += 1
Next
Datei.Save() Datei.Save()
.DisplayAlerts = False .DisplayAlerts = False
.quit() .quit()

View File

@@ -6,8 +6,6 @@ Imports System.Security.Cryptography.X509Certificates
Imports System.Text Imports System.Text
Imports System.Threading Imports System.Threading
Imports System.Xml Imports System.Xml
Imports com.sun.xml.internal.rngom
Imports com.sun.xml.internal.rngom.digested
Imports MDM_Worker Imports MDM_Worker
Imports Renci.SshNet Imports Renci.SshNet
Imports VERAG_PROG_ALLGEMEIN Imports VERAG_PROG_ALLGEMEIN
@@ -833,26 +831,26 @@ Public Class frmStartOptions
End If End If
Case "CREDITSAFE_EVENTS_DETAIL" Case "CREDITSAFE_EVENTS_MONTHLY"
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
Dim upateKunden As Boolean = True Dim upateKunden As Boolean = False
Dim OnlyCurrentMonthData As Boolean = True Dim checkDate As Boolean = True
Dim setzeInfoImKunden As Boolean = False Dim setzeInfoImKunden As Boolean = False
Dim sendMail As Boolean = True Dim sendMail As Boolean = False 'nicht nochmals, oder?
importCreditsafeEvents(CDate("01." & Now.Month & "." & Now.Year).ToShortDateString, OnlyCurrentMonthData, upateKunden, setzeInfoImKunden, sendMail, True) importCreditsafeEvents(CDate("01." & Now.Month & "." & Now.Year).ToShortDateString, checkDate, upateKunden, setzeInfoImKunden, sendMail, True)
closeMe() closeMe()
Case "CREDITSAFE_EVENTS" Case "CREDITSAFE_EVENTS_DAILY"
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
Dim upateKunden As Boolean = True Dim upateKunden As Boolean = False
Dim OnlyCurrentMonthData As Boolean = True Dim checkDate As Boolean = True
Dim setzeInfoImKunden As Boolean = False Dim setzeInfoImKunden As Boolean = False
Dim sendMail As Boolean = True Dim sendMail As Boolean = True
importCreditsafeEvents(CDate("01." & Now.Month & "." & Now.Year).ToShortDateString, OnlyCurrentMonthData, upateKunden, setzeInfoImKunden, sendMail, False) importCreditsafeEvents(CDate(Today().AddDays(-1)).ToShortDateString, checkDate, upateKunden, setzeInfoImKunden, sendMail, False)
closeMe() closeMe()
Case "CREDITSAFE_UPLOADS" Case "CREDITSAFE_UPLOADS"
@@ -6363,45 +6361,46 @@ weiter:
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'WICHTIG, bei companyDetailEventsRequest = true wird gleich Punkt 3 gemacht (dauert länger, aber mehr Datensätze und alle Kunden werden geprüft, bei companyDetailEventsRequest = false wird die u.a. Best Practice-Methode durchgeführt-> also triggerbasierend)!!!! 'WICHTIG, bei companyDetailEventsRequest = true wird gleich Punkt 3 gemacht (dauert länger, aber mehr Datensätze und alle Kunden werden geprüft, bei companyDetailEventsRequest = false wird die u.a. Best Practice-Methode durchgeführt (Punkt 1 und 2) -> also triggerbasierend)!!!!
'ANSATZ, bei der täglichen Prüfung die triggerbasierten Abruf, 1x im Monat bzw. wenn spezisches Unternehmen geprüft wird, dann Punkt 3.
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Best Practices for Viewing Notification Events 'Best Practices for Viewing Notification Events
'1. Use Portfolio-Specific Events for Targeted Monitoring: Start with the portfolio-specific endpoint to focus on changes relevant to a particular portfolio. '1. Use Portfolio-Specific Events for Targeted Monitoring: Start with the portfolio-specific endpoint to focus on changes relevant to a particular portfolio.
'2. Leverage Global Events for a Broader View: Use the all-events endpoint to gain a comprehensive overview of all notifications across your portfolios. '2. Leverage Global Events for a Broader View: Use the all-events endpoint to gain a comprehensive overview of all notifications across your portfolios.
'3. Drill Down to Company-Level Events When Needed: For detailed insights into a specific company, use the company-specific endpoint.
'3. Drill Down to Company-Level Events WHEN NEEDED: For detailed insights into a specific company, use the company-specific endpoint.
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- '-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Dim creditsaveOld As String = "
' select ba_KundenNr FROM tblBonitaetsauskunft WHERE ba_Pruefungstool = 'creditsafe API'
Dim creditsaveOld As String = " ' EXCEPT
select ba_KundenNr FROM tblBonitaetsauskunft WHERE ba_Pruefungstool = 'creditsafe API'
' SELECT * FROM ( SELECT ba_KundenNr
EXCEPT ' FROM tblBonitaetsauskunft
' WHERE ba_Pruefungstool = 'creditsafe API' and cast(ba_Datum as Date) >= '" & datum & "'
SELECT * FROM ( SELECT ba_KundenNr
FROM tblBonitaetsauskunft ' UNION ALL
WHERE ba_Pruefungstool = 'creditsafe API' and cast(ba_Datum as Date) >= '" & datum & "'
' SELECT e.KundenNr
UNION ALL ' FROM (
' SELECT e.KundenNr,
SELECT e.KundenNr ' e.eventDate,
FROM ( ' 'creditsafe API' AS Source
SELECT e.KundenNr, ' FROM [VERAG].[dbo].[tblCreditsafeEvents] e
e.eventDate, ' INNER JOIN [VERAG].[dbo].[tblBonitaetsauskunft] b
'creditsafe API' AS Source ' ON e.bonId = b.ba_id
FROM [VERAG].[dbo].[tblCreditsafeEvents] e ' WHERE b.ba_Pruefungstool = 'creditsafe API'
INNER JOIN [VERAG].[dbo].[tblBonitaetsauskunft] b ' AND (e.localEventCode IN ('CL','CR') OR e.globalEventCode IN ('CL','CR'))
ON e.bonId = b.ba_id ' ) e
WHERE b.ba_Pruefungstool = 'creditsafe API' ' WHERE cast(e.eventDate as Date) >= '" & datum & "'
AND (e.localEventCode IN ('CL','CR') OR e.globalEventCode IN ('CL','CR')) ' GROUP BY Source, e.KundenNr, cast(e.eventDate as Date)
) e ' ) AS Temp"
WHERE cast(e.eventDate as Date) >= '" & datum & "'
GROUP BY Source, e.KundenNr, cast(e.eventDate as Date)
) AS Temp"
@@ -6411,9 +6410,11 @@ weiter:
inner join tblKundenErweitert on Kunden.KundenNr = kde_KundenNr inner join tblKundenErweitert on Kunden.KundenNr = kde_KundenNr
inner join Filialen as f on f.FilialenNr = Kunden.FilialenNr inner join Filialen as f on f.FilialenNr = Kunden.FilialenNr
inner join tblBonitaetsauskunft on ba_KundenNr = kde_KundenNr inner join tblBonitaetsauskunft on ba_KundenNr = kde_KundenNr
where isnull(tblKundenErweitert.kde_CreditSaveId,'') <> '' and kde_CreditSaveId <> 'True' and kde_CreditSaveId <>'False' and isnull(kde_CreditSaveNo,'') <> '' and kde_CSPortfolioAdded = 1 AND ba_Pruefungstool = 'creditsafe API'" & IIf(datum <> "", " AND Kunden.Bonitätsdatum <= '" & datum & "'", "") where isnull(tblKundenErweitert.kde_CreditSaveId,'') <> '' and kde_CreditSaveId <> 'True' and kde_CreditSaveId <>'False' and isnull(kde_CreditSaveNo,'') <> '' and kde_CSPortfolioAdded = 1 AND ba_Pruefungstool = 'creditsafe API'" & IIf(datum <> "", " AND Kunden.Bonitätsdatum <= '" & datum & "' ", "")
'KundenNr und Firma If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
creditsave &= " AND ba_Kundennr in (701809, 1096780)"
End If
Dim cs = New cCreditSafeAPI("creditsafe") Dim cs = New cCreditSafeAPI("creditsafe")
@@ -6472,11 +6473,6 @@ repeatRequestDailyPages:
End If End If
If False Then
creditsave &= " and (ba_KundenNr = 718137 or ba_KundenNr = 1003418)"
End If
Dim dtRechnungen As DataTable = (New SQL).loadDgvBySql("select distinct(RechnungsKundenNr) from Rechnungsausgang where cast(RechnungsDatum as Date) >= ' " & Today().AddYears(-2) & "' ", "FMZOLL") Dim dtRechnungen As DataTable = (New SQL).loadDgvBySql("select distinct(RechnungsKundenNr) from Rechnungsausgang where cast(RechnungsDatum as Date) >= ' " & Today().AddYears(-2) & "' ", "FMZOLL")
Dim dtCreditsafe As DataTable = (New SQL).loadDgvBySql(creditsave, "FMZOLL") Dim dtCreditsafe As DataTable = (New SQL).loadDgvBySql(creditsave, "FMZOLL")
@@ -6529,7 +6525,7 @@ repeatRequestDailyPages:
repeatRequest: repeatRequest:
Dim APIText As String = "" Dim APIText As String = ""
If exists Then If exists Then
APIText = cs.getCompanyEvents(company, dt, False, checkDate, upateKunden, False,, setzeKundenbesonderheiten, Mailinfolast2Years, row("Firma")) APIText = cs.getCompanyEventsDetails(company, dt, checkDate, upateKunden, False, , setzeKundenbesonderheiten, Mailinfolast2Years, row("Firma"))
End If End If
If (APIText.Contains("Error") Or APIText.Contains("Verbindungsfehler")) Then If (APIText.Contains("Error") Or APIText.Contains("Verbindungsfehler")) Then