Compare commits

...

2 Commits

Author SHA1 Message Date
f52c8455a0 fix 2026-10-06 15:23:21 +02:00
2d2d855eac fix 2026-10-06 15:22:56 +02:00

View File

@@ -8196,21 +8196,22 @@ repeatRequest:
Private Function checkZugferd(sendNotificationEmails As Boolean, Optional InvoicesUntilYesterday As Boolean = False) As Boolean
Try
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
'aktuell verwendet Verag360 kein Zugferd und Sammelrechnung 6 geht aktuell noch nicht - 29.04.2026 Start der neuen Funktion!
Dim DateString = " CONVERT(DATE, GETDATE())"
Dim top As String = ""
If InvoicesUntilYesterday Then
top = " top(1000) "
DateString = "CONVERT(DATE, DATEADD(DAY, -1, GETDATE()))"
Dim top As String = ""
If InvoicesUntilYesterday Then
top = " top(500) "
DateString = "CONVERT(DATE, DATEADD(DAY, -1, GETDATE()))"
End If
Dim dt As DataTable = SQL.loadDgvBySql("SELECT " & top & " RK_ID, dsId, Firma_ID, RechnungsNr FROM [Rechnungsausgang] where [zugferdcheck_daid] is null and [zugferdcheck_datetime] is null and dsId is not null and cast(RechnungsDatum as Date) between '29.04.2026' and " & DateString & " and Sammelrechnung <> 6 and Firma_ID <> 19 order by ReErfZeitstempel desc", "FMZOLL", 100, True)
Dim dt As DataTable = SQL.loadDgvBySql("SELECT " & top & " RK_ID, dsId, Firma_ID, RechnungsNr FROM [Rechnungsausgang] where [zugferdcheck_daid] is null and [zugferdcheck_datetime] is null and dsId is not null and cast(RechnungsDatum as Date) between '29.04.2026' and " & DateString & " and Sammelrechnung <> 6 and Firma_ID <> 19 order by ReErfZeitstempel desc", "FMZOLL", 1000, True)
Dim sumTotal_IMEX As Integer = 0
Dim sumTotal_VERAG As Integer = 0
@@ -8252,8 +8253,9 @@ repeatRequest:
Dim fileName = Paramslist.GET_PARAMETER_VALUE("ZUGFeRD_Check_Pfad_JAVA")
Dim arguments = Paramslist.GET_PARAMETER_VALUE("ZUGFeRD_Check_Pfad_CMD")
Dim errorCounter = 0
For Each row In dt.Rows
For Each row In dt.Rows
Dim rkObj As Object = row("RK_ID")
Dim dsObj As Object = row("dsId")
@@ -8263,164 +8265,172 @@ repeatRequest:
Dim rkId As Integer
Dim dsId As Integer
If Integer.TryParse(rkObj.ToString(), rkId) AndAlso
Integer.TryParse(dsObj.ToString(), dsId) AndAlso
dsId > 0 Then
If Integer.TryParse(rkObj.ToString(), rkId) AndAlso Integer.TryParse(dsObj.ToString(), dsId) AndAlso dsId > 0 Then
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsId)
Dim Path As String = DS.GET_TOP1_PATH()
If Path <> "" And System.IO.File.Exists(Path) Then
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsId)
Dim Path As String = DS.GET_TOP1_PATH()
If Path <> "" And System.IO.File.Exists(Path) Then
Try
Try
Dim psi As New ProcessStartInfo()
Dim psi As New ProcessStartInfo()
If Environment.MachineName = "H6CCWP3" Then
'Workstation Daniel
psi.FileName = "C:\Program Files\Eclipse Adoptium\jre-11.0.32.101-hotspot\bin\java.exe"
psi.Arguments = "-jar ""C:\Users\d.breimaier\Downloads\Mustang-CLI-2.21.0.jar"" --no-notices --action validate --source " & Path
'If Environment.MachineName = "H6CCWP3" Then
' 'Workstation Daniel
' psi.FileName = "C:\Program Files\Eclipse Adoptium\jre-11.0.32.101-hotspot\bin\java.exe"
' psi.Arguments = "-jar ""C:\Users\d.breimaier\Downloads\Mustang-CLI-2.21.0.jar"" --no-notices --action validate --source " & Path
Else
'Else
psi.FileName = fileName
psi.Arguments = arguments & Path
End If
psi.Arguments = arguments & Path
'End If
psi.RedirectStandardOutput = True
psi.RedirectStandardError = True
psi.UseShellExecute = False
psi.CreateNoWindow = True
psi.RedirectStandardOutput = True
psi.RedirectStandardError = True
psi.UseShellExecute = False
psi.CreateNoWindow = True
'MsgBox("START Mustang")
'MsgBox("Java: " & psi.FileName)
'MsgBox("Args: " & psi.Arguments)
'MsgBox("START Mustang")
'MsgBox("Java: " & psi.FileName)
'MsgBox("Args: " & psi.Arguments)
Using p As Process = Process.Start(psi)
Using p As Process = Process.Start(psi)
'MsgBox("PROCESS STARTED, PID=" & p.Id)
'MsgBox("PROCESS STARTED, PID=" & p.Id)
Dim outputTask = p.StandardOutput.ReadToEndAsync()
Dim errorTask = p.StandardError.ReadToEndAsync()
Dim outputTask = p.StandardOutput.ReadToEndAsync()
Dim errorTask = p.StandardError.ReadToEndAsync()
'MsgBox("READERS STARTED")
'MsgBox("READERS STARTED")
If Not p.WaitForExit(60000) Then
'MsgBox("TIMEOUT")
Try
p.Kill()
Catch
End Try
If Not p.WaitForExit(60000) Then
'MsgBox("TIMEOUT")
Try
p.Kill()
Catch
End Try
Throw New TimeoutException("Der Prozess wurde nach 60 Sekunden beendet." & vbNewLine & "Filename: " & psi.FileName & vbNewLine & "Arguments: " & psi.Arguments)
End If
'MsgBox("PROCESS EXITED")
Dim output = outputTask.Result
Dim err = errorTask.Result
'MsgBox("STDOUT:" & output)
'MsgBox("STDERR:" & err)
If output <> "" Then
Dim tmpPath_Report = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("MUSTANG-REPORT_" & rkObj & ".pdf", ".pdf", , False)
Dim PruefungOK = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.CreateValidationPdf(output, Path, rkId, tmpPath_Report)
If tmpPath_Report <> "" Then
'Process.Start(tmpPath_Report)
Dim fileInfo_ZP As New FileInfo(tmpPath_Report)
Dim ZUGF_DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "ZUGFERD", Now().Year, "", "", fileInfo_ZP.Name, -1, False)
ZUGF_DS.uploadDataToDATENSERVER(tmpPath_Report, fileInfo_ZP.Name & ".pdf", fileInfo_ZP.Extension,,,, True)
SQL.doSQL("Update [Rechnungsausgang] SET zugferdcheck_datetime=getDate(),zugferdcheck = " & IIf(PruefungOK, "1", "0") & ", zugferdcheck_daid = " & ZUGF_DS.da_id & " where RK_ID = " & rkId, "FMZOLL")
Select Case row("Firma_ID")
Case 11
sumTotal_CS += 1
If PruefungOK Then
sumvalid_CS += 1
Else
sumInvalid_CS += 1
dtCS.ImportRow(row)
End If
Case 24
sumTotal_AMBAR += 1
If PruefungOK Then
sumvalid_AMBAR += 1
Else
sumInvalid_AMBAR += 1
dtAMBAR.ImportRow(row)
End If
Case 21, 22, 23
sumTotal_US += 1
If PruefungOK Then
sumvalid_US += 1
Else
sumInvalid_US += 1
dtUNISPED.ImportRow(row)
End If
Case 20
sumTotal_IMEX += 1
If PruefungOK Then
sumvalid_IMEX += 1
Else
sumInvalid_IMEX += 1
dtIMEX.ImportRow(row)
End If
Case 19
sumTotal_360 += 1
If PruefungOK Then
sumvalid_360 += 1
Else
sumInvalid_360 += 1
dt360.ImportRow(row)
End If
Case 7
sumTotal_ATILLA += 1
If PruefungOK Then
sumvalid_ATILLA += 1
Else
sumInvalid_ATILLA += 1
dtATILLA.ImportRow(row)
End If
Case Else
sumTotal_VERAG += 1
If PruefungOK Then
sumvalid_VERAG += 1
Else
sumInvalid_VERAG += 1
dtVerag.ImportRow(row)
End If
End Select
Throw New TimeoutException("Der Prozess wurde nach 60 Sekunden beendet." & vbNewLine & "Filename: " & psi.FileName & vbNewLine & "Arguments: " & psi.Arguments)
End If
End If
'MsgBox("PROCESS EXITED")
Dim output = outputTask.Result
Dim err = errorTask.Result
'MsgBox("STDOUT:" & output)
'MsgBox("STDERR:" & err)
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
Return False
End Try
If output <> "" Then
Dim tmpPath_Report = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("MUSTANG-REPORT_" & rkObj & ".pdf", ".pdf", , False)
Dim PruefungOK = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.CreateValidationPdf(output, Path, rkId, tmpPath_Report)
If tmpPath_Report <> "" Then
'Process.Start(tmpPath_Report)
Dim fileInfo_ZP As New FileInfo(tmpPath_Report)
Dim ZUGF_DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "ZUGFERD", Now().Year, "", "", fileInfo_ZP.Name, -1, False)
ZUGF_DS.uploadDataToDATENSERVER(tmpPath_Report, fileInfo_ZP.Name & ".pdf", fileInfo_ZP.Extension,,,, True)
SQL.doSQL("Update [Rechnungsausgang] SET zugferdcheck_datetime=getDate(),zugferdcheck = " & IIf(PruefungOK, "1", "0") & ", zugferdcheck_daid = " & ZUGF_DS.da_id & " where RK_ID = " & rkId, "FMZOLL")
Select Case row("Firma_ID")
Case 11
sumTotal_CS += 1
If PruefungOK Then
sumvalid_CS += 1
Else
sumInvalid_CS += 1
dtCS.ImportRow(row)
End If
Case 24
sumTotal_AMBAR += 1
If PruefungOK Then
sumvalid_AMBAR += 1
Else
sumInvalid_AMBAR += 1
dtAMBAR.ImportRow(row)
End If
Case 21, 22, 23
sumTotal_US += 1
If PruefungOK Then
sumvalid_US += 1
Else
sumInvalid_US += 1
dtUNISPED.ImportRow(row)
End If
Case 20
sumTotal_IMEX += 1
If PruefungOK Then
sumvalid_IMEX += 1
Else
sumInvalid_IMEX += 1
dtIMEX.ImportRow(row)
End If
Case 19
sumTotal_360 += 1
If PruefungOK Then
sumvalid_360 += 1
Else
sumInvalid_360 += 1
dt360.ImportRow(row)
End If
Case 7
sumTotal_ATILLA += 1
If PruefungOK Then
sumvalid_ATILLA += 1
Else
sumInvalid_ATILLA += 1
dtATILLA.ImportRow(row)
End If
Case Else
sumTotal_VERAG += 1
If PruefungOK Then
sumvalid_VERAG += 1
Else
sumInvalid_VERAG += 1
dtVerag.ImportRow(row)
End If
End Select
End If
Else
errorCounter += 1
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(err, err & vbNewLine & "Maschine: " & Environment.MachineName, System.Reflection.MethodInfo.GetCurrentMethod.Name, ERROR_OP.MAIL)
If errorCounter >= 3 Then
Return False
End If
End If
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name, ERROR_OP.MAIL)
Continue For
End Try
End If
End If
End If
End If
Next
@@ -8441,8 +8451,8 @@ repeatRequest:
Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dtVerag,,,,, False,,, True)
Dim anhenge As New List(Of String)
anhenge.Add(path)
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " VERAG", createMailTextZugferd(sumTotal_VERAG, sumvalid_VERAG, sumInvalid_VERAG, "VERAG"), getAbsenderEmail(), True, False,,, anhenge)
End If
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " VERAG", createMailTextZugferd(sumTotal_VERAG, sumvalid_VERAG, sumInvalid_VERAG, "VERAG", dt.Rows.Count), getAbsenderEmail(), True, False,,, anhenge)
End If
End If
If dtIMEX.Rows.Count > 0 Then
@@ -8451,8 +8461,8 @@ repeatRequest:
Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dtIMEX,,,,, False,,, True)
Dim anhenge As New List(Of String)
anhenge.Add(path)
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " IMEX", createMailTextZugferd(sumTotal_IMEX, sumvalid_IMEX, sumInvalid_IMEX, "IMEX"), getAbsenderEmail(), True, False,,, anhenge)
End If
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " IMEX", createMailTextZugferd(sumTotal_IMEX, sumvalid_IMEX, sumInvalid_IMEX, "IMEX", dt.Rows.Count), getAbsenderEmail(), True, False,,, anhenge)
End If
End If
If dtAMBAR.Rows.Count > 0 Then
@@ -8461,8 +8471,8 @@ repeatRequest:
Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dtAMBAR,,,,, False,,, True)
Dim anhenge As New List(Of String)
anhenge.Add(path)
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " AMBAR", createMailTextZugferd(sumTotal_AMBAR, sumvalid_AMBAR, sumInvalid_AMBAR, "AMBAR"), getAbsenderEmail(), True, False,,, anhenge)
End If
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " AMBAR", createMailTextZugferd(sumTotal_AMBAR, sumvalid_AMBAR, sumInvalid_AMBAR, "AMBAR", dt.Rows.Count), getAbsenderEmail(), True, False,,, anhenge)
End If
End If
If dtUNISPED.Rows.Count > 0 Then
@@ -8471,8 +8481,8 @@ repeatRequest:
Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dtUNISPED,,,,, False,,, True)
Dim anhenge As New List(Of String)
anhenge.Add(path)
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " UNISPED", createMailTextZugferd(sumTotal_US, sumvalid_US, sumInvalid_US, "UNISPED"), getAbsenderEmail(), True, False,,, anhenge)
End If
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " UNISPED", createMailTextZugferd(sumTotal_US, sumvalid_US, sumInvalid_US, "UNISPED", dt.Rows.Count), getAbsenderEmail(), True, False,,, anhenge)
End If
End If
If dtATILLA.Rows.Count > 0 Then
@@ -8481,8 +8491,8 @@ repeatRequest:
Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dtATILLA,,,,, False,,, True)
Dim anhenge As New List(Of String)
anhenge.Add(path)
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " ATILLA", createMailTextZugferd(sumTotal_ATILLA, sumvalid_ATILLA, sumInvalid_ATILLA, "ATILLA"), getAbsenderEmail(), True, False,,, anhenge)
End If
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " ATILLA", createMailTextZugferd(sumTotal_ATILLA, sumvalid_ATILLA, sumInvalid_ATILLA, "ATILLA", dt.Rows.Count), getAbsenderEmail(), True, False,,, anhenge)
End If
End If
If dt360.Rows.Count > 0 Then
@@ -8491,8 +8501,8 @@ repeatRequest:
Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt360,,,,, False,,, True)
Dim anhenge As New List(Of String)
anhenge.Add(path)
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " VERAG 360", createMailTextZugferd(sumTotal_360, sumvalid_360, sumInvalid_360, "VERAG 360"), getAbsenderEmail(), True, False,,, anhenge)
End If
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " VERAG 360", createMailTextZugferd(sumTotal_360, sumvalid_360, sumInvalid_360, "VERAG 360", dt.Rows.Count), getAbsenderEmail(), True, False,,, anhenge)
End If
End If
If dtCS.Rows.Count > 0 Then
@@ -8501,28 +8511,31 @@ repeatRequest:
Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dtCS,,,,, False,,, True)
Dim anhenge As New List(Of String)
anhenge.Add(path)
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & "VERAG CS", createMailTextZugferd(sumTotal_CS, sumvalid_CS, sumInvalid_CS, "VERAG CS"), getAbsenderEmail(), True, False,,, anhenge)
End If
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfaneger, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & "VERAG CS", createMailTextZugferd(sumTotal_CS, sumvalid_CS, sumInvalid_CS, "VERAG CS", dt.Rows.Count), getAbsenderEmail(), True, False,,, anhenge)
End If
End If
'hier alle Prüfungen
'hier alle Prüfungen
Dim empfanegerALL = cMitarbeiter.GetEMailRecipientForEmailNotification("ZUGFERD-Check_ALL",)
If empfanegerALL <> "" Then
Dim empfanegerALL = cMitarbeiter.GetEMailRecipientForEmailNotification("ZUGFERD-Check_ALL",)
If empfanegerALL <> "" Then
sumTotal_Total = sumTotal_VERAG + sumTotal_ATILLA + sumTotal_AMBAR + sumTotal_360 + sumTotal_CS + sumTotal_IMEX + sumTotal_US
sumInvalid_Total = sumInvalid_VERAG + sumInvalid_ATILLA + sumInvalid_AMBAR + sumInvalid_360 + sumInvalid_CS + sumInvalid_IMEX + sumInvalid_US
sumvalid_Total = sumvalid_VERAG + sumvalid_ATILLA + sumvalid_AMBAR + sumvalid_360 + sumvalid_CS + sumvalid_IMEX + sumvalid_US
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfanegerALL, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " ALL", createMailTextZugferd(sumTotal_Total, sumvalid_Total, sumInvalid_Total, "ALL"), getAbsenderEmail(), True, False)
End If
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(empfanegerALL, IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TEST-", "") & Betreff & " ALL", createMailTextZugferd(sumTotal_Total, sumvalid_Total, sumInvalid_Total, "ALL", dt.Rows.Count), getAbsenderEmail(), True, False)
End If
End If
End If
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name, ERROR_OP.MAIL)
End Try
Return True
@@ -8530,7 +8543,7 @@ repeatRequest:
End Function
Private Function createMailTextZugferd(total As Integer, valid As Integer, invalid As Integer, Firma As String) As String
Private Function createMailTextZugferd(total As Integer, valid As Integer, invalid As Integer, Firma As String, AnzahlLautListe As Integer) As String
Dim MailText = "Auflistung der gültigen/ungültigen ZUGFeRD-Prüfungen vom " & Today.ToShortDateString & " für " & Firma & " <br><br>"
MailText &= "<table border=1>"
@@ -8541,6 +8554,11 @@ repeatRequest:
MailText &= "<td><b>" & total & "</b></td>"
MailText &= "</tr>"
MailText &= "</table>"
If Firma = "ALL" Then
MailText &= "<br><br>Anzahl laut Liste: " & AnzahlLautListe
End If
MailText &= "<br><br>Erstellt am: " & Now.ToShortDateString & " um " & Now.ToShortTimeString
MailText &= "<br><br>Automatisch generiertes E-Mail."
@@ -8559,7 +8577,7 @@ repeatRequest:
End Select
checkZugferd(sendNotificationEmails, True)
checkZugferd(sendNotificationEmails, False)
End Sub
Private Sub LinkLabel54_LinkClicked_2(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel54.LinkClicked