diff --git a/initATLASAufschubkonten/frmStartOptions.vb b/initATLASAufschubkonten/frmStartOptions.vb index b8e357a..cda4ecc 100644 --- a/initATLASAufschubkonten/frmStartOptions.vb +++ b/initATLASAufschubkonten/frmStartOptions.vb @@ -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 >= 5 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 & "

" MailText &= "" @@ -8541,6 +8554,11 @@ repeatRequest: MailText &= "" MailText &= "" MailText &= "
" & total & "
" + + If Firma = "ALL" Then + MailText &= "

Anzahl laut Liste: " & AnzahlLautListe + End If + MailText &= "

Erstellt am: " & Now.ToShortDateString & " um " & Now.ToShortTimeString MailText &= "

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