diff --git a/app/DD_PM_WINDREAM/ClassAnnotation.vb b/app/DD_PM_WINDREAM/ClassAnnotation.vb index cadcc23..649f5cd 100644 --- a/app/DD_PM_WINDREAM/ClassAnnotation.vb +++ b/app/DD_PM_WINDREAM/ClassAnnotation.vb @@ -4,32 +4,35 @@ Imports PdfSharp.Pdf.IO Imports PdfSharp.Drawing Public Class ClassAnnotation Public Shared Function Annotate_PDF(title As String, content As String, page As Integer, fromGui As Boolean, Optional ycorrect As Integer = 0, Optional sizecorrect As Integer = 0) - Try - Dim doc As PdfDocument = PdfReader.Open(CURRENT_DOC_PATH, PdfDocumentOpenMode.Modify) - Dim firstPage As PdfPage = doc.Pages(page) + If CURRENT_DOC_PATH.Length > 0 Then + Try + Dim doc As PdfDocument = PdfReader.Open(CURRENT_DOC_PATH, PdfDocumentOpenMode.Modify) + Dim firstPage As PdfPage = doc.Pages(page) - Dim gfx As XGraphics = XGraphics.FromPdfPage(firstPage) - Dim rect As XRect = gfx.Transformer.WorldToDefaultPage(New XRect(New XPoint(30, 60 + ycorrect), New XSize(60 + sizecorrect, 40 + sizecorrect))) + Dim gfx As XGraphics = XGraphics.FromPdfPage(firstPage) + Dim rect As XRect = gfx.Transformer.WorldToDefaultPage(New XRect(New XPoint(30, 60 + ycorrect), New XSize(60 + sizecorrect, 40 + sizecorrect))) - Dim annot As PdfTextAnnotation = New PdfTextAnnotation + Dim annot As PdfTextAnnotation = New PdfTextAnnotation - annot.Title = title - 'annot.Subject = txtsubject.Text - annot.Contents = content - annot.Rectangle = New PdfRectangle(rect) + annot.Title = title + 'annot.Subject = txtsubject.Text + annot.Contents = content + annot.Rectangle = New PdfRectangle(rect) - firstPage.Annotations.Add(annot) - doc.Save(CURRENT_DOC_PATH) - Return True - Catch ex As Exception - If fromGui = True Then - MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in Annotate pdf:") - End If - LOGGER.Error(ex) - LOGGER.Info("Unexpected error in Annotate pdf: " & ex.Message, False) - Return False - End Try + firstPage.Annotations.Add(annot) + doc.Save(CURRENT_DOC_PATH) + Return True + Catch ex As Exception + If fromGui = True Then + MsgBox(ex.Message, MsgBoxStyle.Critical, "Error in Annotate pdf:") + End If + LOGGER.Error(ex) + LOGGER.Info("Unexpected error in Annotate pdf: " & ex.Message, False) + Return False + End Try + End If + End Function End Class diff --git a/app/DD_PM_WINDREAM/My Project/AssemblyInfo.vb b/app/DD_PM_WINDREAM/My Project/AssemblyInfo.vb index 675d6f2..08c1ee1 100644 --- a/app/DD_PM_WINDREAM/My Project/AssemblyInfo.vb +++ b/app/DD_PM_WINDREAM/My Project/AssemblyInfo.vb @@ -13,7 +13,7 @@ Imports System.Runtime.InteropServices - + @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - + diff --git a/app/DD_PM_WINDREAM/frmMain.resx b/app/DD_PM_WINDREAM/frmMain.resx index 760ce75..ff7ba07 100644 --- a/app/DD_PM_WINDREAM/frmMain.resx +++ b/app/DD_PM_WINDREAM/frmMain.resx @@ -511,168 +511,96 @@ - AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAABMLAAATCwAAAAAAAAAA - AAAxJKXfMSSl8jEkpe4uIqHuMCSk7lhC3e5eSOfuWELe7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD - 3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uW0Th7ldC3e43KK3uVkDa7l5G5e5YQ97uYEnp7j4v - uO4hF47uQDC77mBI6e5ZQ9/uWUPf7llD3+5YQt3uW0Xi7mBJ6u5fSOfuWUPf7lhC3u5ZQ9/uWUPf7llD - 3+5ZQ9/uWUPf8llD398xJKX/MCOi/zIlqP84Kbz/LyKv/0Ewyf9oTvz/X0jm/19H5/9fR+f/X0fn/19H - 5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H5/9fR+f/Xkfm/2hO8v9MOdP/Py7H/2ZN - 9/9eR+X/ZUzx/1dB2f8rH6T/PS3D/2JK7P9gSOj/X0fn/19H5/9hSev/WELc/0w5zv9WQen/ZEv7/2FJ - 6/9eR+X/X0fn/19I6P9aROH/WELe/1lD3/8xJKXuMiWp/zAjoP8pHov/KR6L/yEYfv9GM7//W0To/1A8 - 0P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdP/UT3T/11G - 9f9PO8z/HBRu/z8vrf9ZQ+X/UT3U/1lD4/8tIY7/Jx2H/1VA3f9TPtX/UT3U/1E91P9WQdv/SDbK/ycd - kf8bFG//OSuk/1hC4P9SPtX/UT3U/1E90/9YQt3/WkTh/1lD3+4xJKXuOCm8/ykeiv8AAAD/AAAA/wAA - AP8CAQ//MSOs/zAjqf8sIZ7/LSGf/y0hn/8tIZ//LSGf/y0hn/8tIZ//LSGf/y0hn/8tIZ//LSGf/ywh - nf8tIZ//OCnD/yIZfP8AAAX/AAAA/ygekv8xJK7/LCCc/zUnuv8fFmT/AAAA/y0hn/8wJKr/LSGf/y0h - n/8sIJ3/MiWq/zYosf8GBBb/AAAA/yAYd/81J7n/LCCd/ygdmP9QPNP/YEjo/1lD3+4xJKXuNym6/yke - i/8AAAD/AAAA/wAAAP8AAAD/GhNb/zwsyv8wI6D/MCOk/zAjpP8wI6T/MCOk/zAjpP8wI6T/MCOk/zAj - pP8wI6T/MCOj/zAkpP88K8r/Ihlx/wAAAP8AAAD/KB2G/zorxP8vI6D/MCSk/zAkpP86KsT/DAkn/xoT - WP87K8f/LyOh/zAjpP8wI6T/LyOi/zkqwv8RDDr/AAAA/xkSVv87K8j/LyKg/ywgnv9RPdT/X0fn/1lD - 3+4xJKXuNym6/ykejP8AAAD/AAAA/wAAAP8AAAD/AgII/zMmrP81J7L/MSSl/zEkpf8xJKX/MSSl/zEk - pf8xJKX/MSSl/zEkpf8xJKX/MCSi/z0szP8jGnf/AAAA/wAAAP8hGG7/PCzK/zAko/8xJKX/MSSl/zAk - o/83Kbv/KR6J/wsIJf83KLn/MiWo/zEkpf8xJKX/MSSn/zcpu/8NCSv/AAAA/w0KK/87K8f/MSSm/y0h - nv9RPdT/X0fn/1lD3+4xJKXuNym6/ykejP8AAAD/AAAA/wAAAP8AAAD/AAAA/xsUXP88LMr/MCOh/zEk - pf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8wI6D/OyvH/ykdif8AAAD/AAAA/x8Xav89Lc3/MSSm/zEk - pP8xJKX/MSSl/zEkpf8wI6L/OyvG/wsJJ/8ZE1b/PCzK/zAjof8xJKX/MSSk/zsrxf8WEEj/AAAA/wAA - AP8kGnr/Pi7T/y0hnv9RPdP/X0fn/1lD3+4xJKXuNym6/ykejP8AAAD/AAAA/wAAAP8AAAD/AAAA/wQD - D/80J7H/Myat/zEkpf8xJKX/MSSl/zEkpf8wJKT/MSSk/zEkpf87K8T/MCOh/wAAAP8AAAD/JBp3/zws - yv8xJKb/MCSj/zEkpf8xJKX/MSSl/zEkpf8xJKP/OirF/x4WZf8AAAD/Myas/zYotv8xJKP/MSSk/zco - uP8uIZn/AAAA/wAAAP8AAAH/Ihlz/zUnu/9RPdP/X0fn/1lD3+4xJKXuNym6/ykejP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8jGnb/OivE/zEko/8xJKP/MSSk/zQnsP86KsL/OirC/zkqv/81J7P/BwUW/wIB - Bf8qH4//QjHd/zkqwv86KsL/Nyi4/zIlp/8wI6L/MSSl/zEkpf8xJKX/Nii1/y8inf8AAAD/Dwsz/zws - yv8xJKT/MSSm/zAkov86KsT/Ixp4/wAAAP8AAAD/AAAA/yQbgv9ZQ+//Xkfk/1lD3+4xJKXuNym6/yke - jP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8QDDb/OSrA/zAjof83KLn/OirE/zEkp/8jGXX/FA5C/w4K - L/8DAgv/AAAA/wQDDf8PCzL/DAkq/xMOQf8gF2z/LCCT/zcpuv87K8b/NCaw/zAjov8xJKX/MiWp/zYn - tf8HBRj/AAAA/ykeif85KsD/MCSj/zEkpP8xJKX/OirD/y4imv8KByL/AAAA/wUDGP9YQen/X0jq/1lD - 3+4xJKXuNym6/ykejP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQX/MSSl/z8v1f8uIpv/FQ9I/wQD - D/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w0KLf8gF2z/MyWr/zsr - x/8zJq7/LyOf/zsrxf8WEEr/AAAA/w8LMf86K8P/MSSk/zEkpf8xJKT/MCOi/zssx/81J7T/BAMQ/wAA - AP9OO8b/Y0v4/1lD3+4xJKXuNym6/ykejP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/KB2E/ycd - hP8AAAH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/BgQT/x4WZv83KLf/OSq+/zwsyv8qH4//AAAA/wAAAP8tIZf/Nii2/zEkpf8xJKX/MSSl/zAj - n/89Lc3/HhZp/wAAAP9NOsH/Y0v4/1lD3+4xJKXuNym6/ykejP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/BAMN/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8JBx//LCCS/zoqw/8gF2v/AAAA/wAAAP8dFV//OivD/zEk - pP8xJKX/MSSl/zEko/85KsD/JBp6/wAABf9UP97/YEjs/1lD3+4xJKXuNym6/ykejP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wQACP8AAAD/AAAA/wAA - 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 - wf86K8P/OCm9/zUnsv8uIpv/Jx2B/xsUW/8QDDj/DAkp/wQDDP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8BAQL/CAYc/xcRTv8qH4z/OSrA/zcpuv8wI6H/MSSl/zEkpP8xJKX/OivE/ysg - kv8RDTr/AgEG/wAAAP8AAAD/AAAA/wAAAP8vI5b/SzjX/1lD3u5gSeruZ03w/1hC4f80Jrf/Nie3/zMl - q/8uIpv/Kh6M/yEYcf8bFFv/Eg08/woHIv8BAQX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wgGHP8mG33/Ixp1/yUbfP8tIZb/NCav/zorxf84Kbz/MSSl/zAko/8xJKX/MSSl/zEk - pf8xJKT/MCOi/zgpvP85Kr7/LiKa/yQaeP8hGG//Ixp2/ycdjf9VQNz/aE71/1xF5O5EM8DuSTfQ/zor - qv8PCzb/DQks/wcFGP8BAQT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/Dgow/zYouP89Lc//OSrA/zgqv/82KLb/MyWr/zEko/8xJKT/MSSl/zEk - pf8xJKX/MSSl/zEkpf8xJKX/MSSl/zAko/8xJKb/NSe0/zkqwP85KsL/OCm//zIlsf9SPtb/Xkbl/1lD - 3+4pHpruMCOx/yIZf/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8UD0T/OSrB/zcpuP8vI5//MSSk/zEkpP8xJKX/MSSl/zEk - pf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpP8xJKT/MCOj/y0h - n/9RPdT/X0fn/1lD3+4xJKXuNym6/ykejP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xoTWf87LMn/NSey/zAjof8xJKX/MSSl/zEk - pf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEk - pf8xJKX/MCOk/y0hn/9RPdT/X0fn/1lD3+4xJKXuNym6/ykejP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/IRhw/z0tzf8zJa3/MCOi/zEk - pf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEkpf8xJKX/MSSl/zEk - pf8xJKX/MSSl/zEkpf8xJKX/MCOk/y0hn/9RPdT/X0fn/1lD3+4xJKXuNym6/ykei/8AAAD/AAAA/wAA - AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8mHIL/PCzK/zEk - pv8wI6L/MCOk/zAjpP8wI6T/MCOk/zAjpP8wI6T/MCOk/zAjpP8wI6T/MCOk/zAjpP8wI6T/MCOk/zAj - pP8wI6T/MCOk/zAjpP8wI6T/MCOk/zAjpP8wI6T/LyKj/ywgnv9RPdT/X0fn/1lD3+4xJKXuOCm8/yke - iv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAM/ygd - jv84KcT/LSGd/ywhnv8tIZ//LSGf/y0hn/8tIZ//LSGf/y0hn/8tIZ//LSGf/y0hn/8tIZ//LSGf/y0h - n/8tIZ//LSGf/y0hn/8tIZ//LSGf/y0hn/8tIZ//LSGf/y0hn/8tIZ//LCCe/ygdmP9QPNP/YEjo/1lD - 3+4xJKXuMiWp/zAjoP8pHov/KR6L/ykejP8pHoz/KR6M/ykejP8pHoz/KR6M/ykejP8qHoz/Kx+N/yEX - f/8rIIz/Uz7U/1tE8P9QPdD/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E9 - 1P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E91P9RPdT/UT3U/1E9 - 0/9YQt3/WkTh/1lD3+4xJKX/MCOi/zIlqP83Kbv/Nym7/zcpuv83Kbr/Nym6/zcpuv83Kbr/Nym6/zcp - uv84Kbv/LyKu/zwswf9jSvv/Zk33/11H4/9fR+f/X0fn/19H5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H - 5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H5/9fR+f/X0fn/19H - 5/9fR+f/X0fn/19I6P9aROH/WELe/1lD3/8xJKXfMSSl8jEkpe4xJKXuMSSl7jEkpe4xJKXuMSSl7jEk - pe4xJKXuMSSl7jEkpe4sIJ3uOyyz7mBJ6e5fR+fuWELd7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD - 3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD - 3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf7llD3+5ZQ9/uWUPf8llD398AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAA= + 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 + baPg47kAAAAASUVORK5CYII= diff --git a/app/DD_PM_WINDREAM/frmMain.vb b/app/DD_PM_WINDREAM/frmMain.vb index dca3031..8862364 100644 --- a/app/DD_PM_WINDREAM/frmMain.vb +++ b/app/DD_PM_WINDREAM/frmMain.vb @@ -17,6 +17,8 @@ Imports DevExpress.XtraBars.Ribbon Imports DigitalData.Modules.ZooFlow Public Class frmMain + Private Property FormHelper As FormHelper + Private UserLoggedin As Integer = 0 Private CURR_DT_VWPM_PROFILE_ACTIVE As DataTable Private CURR_DT_OVERVIEW As DataTable @@ -50,12 +52,16 @@ Public Class frmMain Private DetailLinkActive As Boolean = False Private FRONTEND_ACTION As String = "NONE" Private Ev_Filter_Panel_Closed As Boolean = False + Dim omsgOpenWorkflow = "Bitte schliessen Sie den offenen Workflow!" + Dim omsgTitleWarning = "Achtung:" + Private Const FullFilepatColName = "FULL_FILE_PATH" + Private Const FA_NONE = "NONE" Private Function GET_LAST_ADDED(pDatatable As DataTable) As String Dim oADDED As String Try If IsNothing(pDatatable) Then oADDED = "NOTHING" - ElseIf LAST_ADDED_COLUMN = "NONE" Then + ElseIf LAST_ADDED_COLUMN = FA_NONE Then oADDED = Now.ToShortTimeString.ToString Else Dim result As Object @@ -73,7 +79,7 @@ Public Class frmMain Try If IsNothing(pDatatable) Then oCHANGED = "NOTHING" - ElseIf LAST_EDITED_COLUMN = "NONE" Then + ElseIf LAST_EDITED_COLUMN = FA_NONE Then oCHANGED = Now.ToShortTimeString.ToString Else Dim result As Object @@ -105,7 +111,6 @@ Public Class frmMain My.Settings.frmMainSize = Me.Size My.Settings.frmMainPosition = Me.Location My.Settings.Save() - 'SaveGridLayout() Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Error in Save FormLayout: " & ex.Message) @@ -159,6 +164,13 @@ Public Class frmMain ' Create helper to save/load expanded GroupColumns at runtime RefreshHelper = New RefreshHelper(LOGCONFIG, GridViewWFItems, "GUID") + + If User.Language <> "de-DE" Then + omsgOpenWorkflow = "Please close the active workflow!" + omsgTitleWarning = "Warning:" + End If + + Dim oVErsion = String.Format("{0}.{1}.{2}", My.Application.Info.Version.Major, My.Application.Info.Version.Minor, My.Application.Info.Version.Build) bsiVersion.Caption = oVErsion If ERROR_STATE = "NO DB-CONNECTION" Or ERROR_STATE = "FAILED DBCONNECTION" Then @@ -530,8 +542,6 @@ Public Class frmMain End Function - - Private Function GetXML_LayoutName() Dim Filename As String = String.Format("DevExpressGridViewOverview_UserLayout_{0}.xml", GRID_LOAD_TYPE) Return System.IO.Path.Combine(CONFIG.UserConfigPath.Replace("UserConfig.xml", ""), Filename) @@ -590,7 +600,11 @@ Public Class frmMain GridViewWFItems.Columns.Item("PROFILE_ID").Visible = False GridViewWFItems.Columns.Item("GUID").Visible = False Try - GridViewWFItems.Columns.Item("FULL_FILE_PATH").Visible = False + GridViewWFItems.Columns.Item(FullFilepatColName).Visible = False + Catch ex As Exception + + End Try + Try 'GridView_Docs.Columns.Item("DocID").Visible = False GridViewWFItems.Columns.Item("TL_STATE").Visible = False Catch ex As Exception @@ -744,7 +758,7 @@ Public Class frmMain Private Async Sub navBar_LinkClicked(ByVal sender As Object, ByVal e As NavBarLinkEventArgs) If Not Application.OpenForms().OfType(Of frmValidator).Any Then Else - MsgBox("Please close the active workflow!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE) + FormHelper.ShowInfoMessage(omsgOpenWorkflow, omsgTitleWarning) Exit Sub End If @@ -762,9 +776,6 @@ Public Class frmMain If Not Application.OpenForms().OfType(Of frmValidator).Any Then CURRENT_CLICKED_PROFILE_ID = _tag CURRENT_CLICKED_PROFILE_TITLE = e.Link.Item.Caption - Else - MsgBox("Please close the active workflow!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE) - Exit Sub End If @@ -791,13 +802,13 @@ Public Class frmMain DetailLinkActive = False OVERVIEW_ADDED_WHEN = "" End If - Await Load_Grid_Overview(oForce) + Await Load_Grid_Overview(False, True, True) GridViewWFItems.HideLoadingPanel() TimerRefresh.Start() RefreshHelper.LoadViewInfo() If GridViewWFItems.GroupCount = 0 And IsNothing(GridViewWFItems.Columns("GROUP_TEXT")) Then LOGGER.Info("NO GROUPS AFTER CLICK OVERVIEW...CREATING GROUPS NEW...") - Await Load_Grid_Overview(False, True) + Await Load_Grid_Overview(False, True, True) GridViewWFItems.HideLoadingPanel() TimerRefresh.Start() RefreshHelper.LoadViewInfo() @@ -805,7 +816,7 @@ Public Class frmMain End If End If - FRONTEND_ACTION = "NONE" + FRONTEND_ACTION = FA_NONE End Sub Function Load_Profiles_for_User() As Boolean Try @@ -824,7 +835,6 @@ Public Class frmMain Sub GridControl_Docs_Visible() Try If GridControl_Docs.Visible = False Then - GridControl_Docs.Visible = True End If Catch ex As Exception @@ -898,7 +908,7 @@ Public Class frmMain LOGGER.Error(ex) LOGGER.Info("Load_single_Profile - Error: " & ex.Message) End Try - FRONTEND_ACTION = "NONE" + FRONTEND_ACTION = FA_NONE End Function Sub Create_Basic_View() Try @@ -986,7 +996,10 @@ Public Class frmMain GridViewWFItems.Columns.Item("PROFILE_ID").Visible = False GridViewWFItems.Columns.Item("GUID").Visible = False Try - GridViewWFItems.Columns.Item("FULL_FILE_PATH").Visible = False + GridViewWFItems.Columns.Item(FullFilepatColName).Visible = False + Catch ex As Exception + End Try + Try 'GridView_Docs.Columns.Item("DocID").Visible = False GridViewWFItems.Columns.Item("TL_STATE").Visible = False Catch ex As Exception @@ -1017,7 +1030,7 @@ Public Class frmMain Catch ex As Exception LOGGER.Info("Create_Basic_View2 - Column CONVERSATION obviously is not part of GridView_Docs - Trying to Rest Layout") ResetLayout() - FRONTEND_ACTION = "NONE" + FRONTEND_ACTION = FA_NONE Exit Sub End Try End If @@ -1044,13 +1057,16 @@ Public Class frmMain GridViewWFItems.Columns.Item("GROUP_TEXT").Visible = False GridViewWFItems.Columns.Item("GROUP_COLOR").Visible = False Catch ex As Exception - LOGGER.Error(ex) + If OverviewOrDEtail = "OVERVIEW" Then + LOGGER.Warn("ATTENTION: GROUP COLUMNS NOT PART OF GRID") + End If + End Try LOGGER.Debug("All columns in CreateBasicView created") Catch ex As Exception LOGGER.Error(ex) End Try - FRONTEND_ACTION = "NONE" + FRONTEND_ACTION = FA_NONE End Sub @@ -1068,7 +1084,7 @@ Public Class frmMain If oViewColumn.Caption = oGridDXFieldName Then If oActGridColumn.Visible = False Then If oViewColumn.Caption <> "GUID" And oViewColumn.Caption <> "TL_STATE" And oViewColumn.Caption <> "PROFILE_ID" And oViewColumn.Caption <> "DocID" And - oViewColumn.Caption <> "FULL_FILE_PATH" And oViewColumn.Caption <> "GROUP_COLOR" And oViewColumn.Caption <> "GROUP_TEXT" And oViewColumn.Caption <> "CONV_YN" Then + oViewColumn.Caption <> "GROUP_COLOR" And oViewColumn.Caption <> "GROUP_TEXT" And oViewColumn.Caption <> "CONV_YN" Then Console.WriteLine($"ViewColumn [{oViewColumn.Caption}] is invisible") Else oViewColumn_exists = True @@ -1079,8 +1095,10 @@ Public Class frmMain End If Next If oViewColumn_exists = False Then - LOGGER.Info($"Following ViewColumn no longer exists in the view: [{oViewColumn.Caption}]") - Return True + If oViewColumn.Caption = FullFilepatColName And IDB_ACTIVE = False Then + LOGGER.Info($"Following ViewColumn no longer exists in the view: [{oViewColumn.Caption}]") + Return True + End If End If Next For Each oActGridColumn As GridColumn In GridViewWFItems.Columns @@ -1177,7 +1195,6 @@ Public Class frmMain End If Try - ' SaveGridLayout() 'bwSync.ReportProgress(10) LoadNavBar() 'bwSync.ReportProgress(60) @@ -1222,14 +1239,14 @@ Public Class frmMain GridViewWFItems.ShowLoadingPanel() TimerRefresh.Stop() - + FRONTEND_ACTION = "DECIDE_LOAD" If GRID_LOAD_TYPE = "OVERVIEW" Then - Await Load_Grid_Overview(pIsFormLoad, ForceReload) + Await Load_Grid_Overview(pIsFormLoad, ForceReload, False) ElseIf GRID_LOAD_TYPE.StartsWith("PROFILE#") Then Await Load_single_Profile(ForceReload) End If - + FRONTEND_ACTION = FA_NONE GridViewWFItems.HideLoadingPanel() TimerRefresh.Start() @@ -1290,6 +1307,7 @@ Public Class frmMain End Try Try InitializeComponent() + FormHelper = New FormHelper(LOGCONFIG, Me) ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. Catch ex As Exception LOGGER.Error(ex) @@ -1402,7 +1420,7 @@ Public Class frmMain ' th.Start() Else LOGGER.Debug("Validator is already open...") - MsgBox(omsg, MsgBoxStyle.Exclamation, omsgTitle) + FormHelper.ShowInfoMessage(omsg, omsgTitleWarning) End If @@ -1600,15 +1618,14 @@ Public Class frmMain Try oFocusedDocGUID = GridViewWFItems.GetFocusedRowCellValue(GridViewWFItems.Columns("GUID")) Catch ex As Exception - MsgBox("Could not get DocGUID. Inform Your admin-team: Check Your View-Config", MsgBoxStyle.Critical) + FormHelper.ShowInfoMessage("Could not get DocGUID. Inform Your admin-team: Check Your View-Config", omsgTitleWarning) End Try Dim oFocusedDocID Try oFocusedDocID = GridViewWFItems.GetFocusedRowCellValue(GridViewWFItems.Columns("DocID")) Catch ex As Exception - MsgBox("Could not get DocID. Inform Your admin-team: Check Your View-Config", MsgBoxStyle.Critical) - + FormHelper.ShowInfoMessage("Could not get DocID. Inform Your admin-team: Check Your View-Config", omsgTitleWarning) End Try If IsNothing(oFocusedDocID) Then @@ -1624,13 +1641,17 @@ Public Class frmMain Exit Sub End If LOGGER.Debug($"Item_Scope: GotDocID {oFocusedDocID} and DocGUID {oFocusedDocGUID}") - Dim DOC_PATH = GridViewWFItems.GetFocusedRowCellValue(GridViewWFItems.Columns("FULL_FILE_PATH")) - If IsNothing(DOC_PATH) Then - LOGGER.Warn("In hitInfo.InDataRow: DOC_PATH is nothing!!!") - Exit Sub + If Not IsNothing(GridViewWFItems.Columns(FullFilepatColName)) Then + Dim DOC_PATH = GridViewWFItems.GetFocusedRowCellValue(GridViewWFItems.Columns(FullFilepatColName)) + If IsNothing(DOC_PATH) Then + LOGGER.Warn("In hitInfo.InDataRow: FULL_FILE_PATH is nothing!!!") + Exit Sub + End If + DOC_PATH = DOC_PATH.Replace("W:\", "\\windream\objects\") + DOC_PATH = DOC_PATH.Replace("K:\", "\\windream\objects\") + ' CURRENT_DOC_PATH = DOC_PATH End If - DOC_PATH = DOC_PATH.Replace("W:\", "\\windream\objects\") - DOC_PATH = DOC_PATH.Replace("K:\", "\\windream\objects\") + 'Checking if table really contains one record with profile-id and docid oExpression = oExpression & " AND DocID = " & oFocusedDocID 'Dim TEMP_TABLE = CURR_DT_OVERVIEW @@ -1644,7 +1665,7 @@ Public Class frmMain CURRENT_DOC_ID = oFocusedDocID CURRENT_JUMP_DOC_GUID = oFocusedDocGUID CURRENT_DOC_GUID = CURRENT_JUMP_DOC_GUID - CURRENT_DOC_PATH = DOC_PATH + Dim oSQL = $"SELECT [dbo].[FNPM_CHECK_DocGUID_Valid] ({CURRENT_DOC_GUID})" Dim oResult = DatabaseFallback.GetScalarValueECM(oSQL) Try @@ -1657,7 +1678,8 @@ Public Class frmMain omsg = "Attention: the item You chose is rather in work or locked from another user!" otitle = "Attention:" End If - MsgBox(omsg, MsgBoxStyle.Exclamation, otitle) + FormHelper.ShowInfoMessage(omsg, omsgTitleWarning) + End If Catch ex As Exception LOGGER.Warn($"Uenxpected error in Checking freefile - sql so far: {oSQL} - ") @@ -1670,8 +1692,7 @@ Public Class frmMain End If Else - MsgBox("Could not get the ProfileID of file! - Check Your configuration of MainView!", MsgBoxStyle.Critical, ADDITIONAL_TITLE) - + FormHelper.ShowInfoMessage("Could not get the ProfileID of file! - Check Your configuration of MainView!", omsgTitleWarning) End If Catch ex As Exception LOGGER.Error(ex) @@ -1747,12 +1768,13 @@ Public Class frmMain Dim sd = GridViewWFItems.GroupedColumns(index).GetTextCaption GridViewWFItems.GroupedColumns(index).Tag = GridViewWFItems.Columns.Item("PROFILE_ID") Next + GridViewWFItems.CollapseAllGroups() LOGGER.Debug("finished Grouping!") Catch ex As Exception LOGGER.Error(ex) End Try End Sub - Async Function Load_Grid_Overview(FormLoad As Boolean, Optional ForceReload As Boolean = False) As Tasks.Task + Async Function Load_Grid_Overview(pFormLoad As Boolean, pForceReload As Boolean, pNavbarClick As Boolean) As Tasks.Task Dim oStopWatch As New RefreshHelper.SW("Load_Grid_Overview(LGO)") GridControl_Docs_Visible() GRID_LOAD_TYPE = "OVERVIEW" @@ -1779,16 +1801,16 @@ Public Class frmMain Dim oStopWatch2 As New RefreshHelper.SW("LGO#build CURR_DT_OVERVIEW") Dim oSQLOverview = BASEDATA_DT_CONFIG.Rows(0).Item("SQL_PROFILE_MAIN_VIEW") If IsDBNull(oSQLOverview) Then - bsiMessage.Caption = "No GROUP-CONFIG (SQL_PROFILE_MAIN_VIEW) in Baseconfig" + bsiMessage.Caption = "No SQL_PROFILE_MAIN_VIEW in Baseconfig" oStopWatch.Done() oStopWatch2.Done() Exit Function End If If oSQLOverview.ToString.Contains("GROUP_TEXT") = False Then - MsgBox("Incomplete Overview-Source (No Group-Columns). Please reload manually!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE) - NO_WORKFLOWITEMS = True + LOGGER.Info($"SQL SO FAR: {oSQLOverview} ") + FormHelper.ShowInfoMessage("Incomplete Overview-Source (No Group-Columns). Please reload manually!", omsgTitleWarning) - 'MsgBox("Aktuell keine Workflowdaten vorhanden!", MsgBoxStyle.Information) + NO_WORKFLOWITEMS = True GridControl_Docs.Visible = False bindsourcegrid.DataSource = Nothing GridControl_Docs.DataSource = Nothing @@ -1823,21 +1845,21 @@ Public Class frmMain Dim oADDED = GET_LAST_ADDED(CURR_DT_OVERVIEW) Dim oChanged = GET_LAST_CHANGED(CURR_DT_OVERVIEW) Dim oCOUNT = CURR_DT_OVERVIEW.Rows.Count - If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN And oCOUNT = OVERVIEW_COUNT Then - - If ForceReload = False Then - LOGGER.Debug("No changes on OverviewHash - so exit Load_Grid_overview") - Exit Function + If pForceReload = False Then + If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN And oCOUNT = OVERVIEW_COUNT Then + If pForceReload = False Then + LOGGER.Debug("No changes on OverviewHash - so exit Load_Grid_overview") + Exit Function + End If + Else + LOGGER.Info("Differences on OverviewHash") + LOGGER.Debug($"oADDED/OVERVIEW_ADDED_WHEN: {oADDED}/{OVERVIEW_ADDED_WHEN}#oADDED/OVERVIEW_ADDED_WHEN: {oChanged}/{OVERVIEW_CHANGED_WHEN}") + OVERVIEW_ADDED_WHEN = oADDED + OVERVIEW_CHANGED_WHEN = oChanged + OVERVIEW_COUNT = oCOUNT End If - - Else - LOGGER.Info("Differences on OverviewHash") - LOGGER.Debug($"oADDED/OVERVIEW_ADDED_WHEN: {oADDED}/{OVERVIEW_ADDED_WHEN}#oADDED/OVERVIEW_ADDED_WHEN: {oChanged}/{OVERVIEW_CHANGED_WHEN}") - OVERVIEW_ADDED_WHEN = oADDED - OVERVIEW_CHANGED_WHEN = oChanged - OVERVIEW_COUNT = oCOUNT End If - Create_View_Caption() + NO_WORKFLOWITEMS = False If CURR_DT_OVERVIEW.Rows.Count = 0 Then If USER_LANGUAGE = "de-DE" Then @@ -1845,11 +1867,7 @@ Public Class frmMain Else GridViewWFItems.ViewCaption = "No workflowdata!" End If - - NO_WORKFLOWITEMS = True - - 'MsgBox("Aktuell keine Workflowdaten vorhanden!", MsgBoxStyle.Information) GridControl_Docs.Visible = False bindsourcegrid.DataSource = Nothing GridControl_Docs.DataSource = Nothing @@ -1857,9 +1875,7 @@ Public Class frmMain GridViewWFItems.Columns.Clear() Catch ex As Exception LOGGER.Error(ex) - End Try - Exit Function End If @@ -1873,9 +1889,6 @@ Public Class frmMain columnStateIcon.Caption = "" CURR_DT_OVERVIEW.Columns.Add(columnStateIcon) End If - - - RedDocuments = 0 YellowDocuments = 0 GreenDocuments = 0 @@ -1927,47 +1940,44 @@ Public Class frmMain bindsourcegrid.DataSource = CURR_DT_OVERVIEW GridControl_Docs.DataSource = bindsourcegrid - 'Dim objectCount_Descr = GridViewWFItems.RowCount.ToString - 'If USER_LANGUAGE = "de-DE" Then - ' GridViewWFItems.ViewCaption = "Gesamtübersicht" - ' objectCount_Descr &= " Vorgänge" - 'Else - ' GridViewWFItems.ViewCaption = "Overview" - ' objectCount_Descr &= " objects" - 'End If + Create_View_Caption() - ' tslblObjectCount.Text = objectCount_Descr - 'tslblObjectCount.ForeColor = Color.DarkBlue + Dim oColNotPartofLayout As Boolean oColNotPartofLayout = False 'GridControlDocRow.ForceInitialize() ' GridControl1.DataSource = CURR_DT_PROFILEGRID - If FormLoad = True Then + If pFormLoad = True Then If IDB_ACTIVE = True Then oColNotPartofLayout = Column_inGridViewLayout("CONV_YN") End If End If - If FORCE_LAYOUT_OVERVIEW = True And (GridLayoutChanged() = True Or oColNotPartofLayout = True) Then - ResetLayout() - SaveGridLayout() - Else - If oColNotPartofLayout = False Then - RestoreLayout() + If pNavbarClick = False Then + If pForceReload = True And (GridLayoutChanged() = True Or oColNotPartofLayout = True) Then + ResetLayout() + SaveGridLayout() + Else + If oColNotPartofLayout = False Then + RestoreLayout() + End If End If + Else + RestoreLayout() End If + Try Create_Groups() GridViewWFItems.Columns.Item("PROFILE_ID").Visible = False GridViewWFItems.Columns.Item("GUID").Visible = False Try - GridViewWFItems.Columns.Item("FULL_FILE_PATH").Visible = False + GridViewWFItems.Columns.Item(FullFilepatColName).Visible = False 'GridView_Docs.Columns.Item("DocID").Visible = False GridViewWFItems.Columns.Item("TL_STATE").Visible = False Catch ex As Exception End Try - GridViewWFItems.CollapseAllGroups() + If TL_ICON = True Then Try @@ -2022,10 +2032,9 @@ Public Class frmMain LOGGER.Error(ex) LOGGER.Info("Unexpected Error in Formatting Grid: " & ex.Message) End Try - 'SaveGridLayout() - If GridViewWFItems.Columns.Count <= 2 Then + If GridViewWFItems.Columns.Count <= 5 Then LOGGER.Info("GridView_Docs.Columns.Count <= 2 - Reset_Gridlayout will be forced...", False) - Await Reset_GridLayout(FormLoad) + Await Reset_GridLayout(pFormLoad) End If Else NO_WORKFLOWITEMS = True @@ -2048,12 +2057,11 @@ Public Class frmMain LOGGER.Info("Load_Grid_Overview - Fehler: " & ex.Message) End Try End Function - Private Sub tsmiValidationProfil_Click(sender As Object, e As EventArgs) Handles tsmiValidationProfil.Click If CURRENT_CLICKED_PROFILE_ID <> 0 Then Load_Profil_from_Grid(CURRENT_CLICKED_PROFILE_ID) Else - MsgBox("Please choose a profile!", MsgBoxResult.Ok, ADDITIONAL_TITLE) + FormHelper.ShowInfoMessage("Please choose a profile!", omsgTitleWarning) End If End Sub @@ -2066,7 +2074,7 @@ Public Class frmMain SaveGridLayout() GridBuilder.WithFontSizeDelta(CONFIG.Config.GridFontSizeDelta) If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo() - FRONTEND_ACTION = "NONE" + FRONTEND_ACTION = FA_NONE End Sub Async Function Reset_GridLayout(FormLoad As Boolean) As Tasks.Task @@ -2077,7 +2085,6 @@ Public Class frmMain InResetlayout = True ' Layout zurücksetzen ResetLayout() - 'SaveGridLayout() ' Ansicht neu laden LoadNavBar() @@ -2213,10 +2220,10 @@ Public Class frmMain End Sub Private Sub GridView_Docs_ColumnWidthChanged(sender As Object, e As Views.Base.ColumnEventArgs) Handles GridViewWFItems.ColumnWidthChanged - GridLayout_Changed() + GridLayout_Changed("ColumnWidthChanged") End Sub Private Sub GridView_Docs_EndSorting(sender As Object, e As EventArgs) Handles GridViewWFItems.EndSorting - GridLayout_Changed() + GridLayout_Changed("EndSorting") End Sub Private Sub GridView_Docs_LostFocus(sender As Object, e As EventArgs) Handles GridViewWFItems.LostFocus @@ -2338,7 +2345,7 @@ Public Class frmMain End Sub Sub DebuglogBackgroundthread() - Dim oSQL As String = "None" + Dim oSQL As String = FA_NONE Try For Each oSLogstring As String In LOGCONFIG.Logs Dim oLogSplit As String() = oSLogstring.Split("|") @@ -2431,14 +2438,17 @@ Public Class frmMain Private Async Sub bbtniRefresh_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniRefresh.ItemClick - Timer_Inactivity_Reset_Disable("OverviewRefreshClick") - If GridControl_Docs.Visible = True And FormOpenClose = False Then - RefreshHelper.SaveViewInfo() - SaveGridLayout() + If Application.OpenForms().OfType(Of frmValidator).Any Then + FormHelper.ShowInfoMessage(omsgOpenWorkflow, omsgTitleWarning) + Exit Sub End If - - LoadNavBar() + Timer_Inactivity_Reset_Disable("OverviewRefreshClick") + 'If GridControl_Docs.Visible = True And FormOpenClose = False Then + ' RefreshHelper.SaveViewInfo() + ' SaveGridLayout() + 'End If Await Decide_Load(False, True) + LoadNavBar() If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo() End If @@ -2648,8 +2658,7 @@ Public Class frmMain If GridViewWFItems.ActiveFilterEnabled Then End If - - SaveGridLayout() + GridLayout_Changed("ColumnFilterChanged") Catch ex As Exception LOGGER.Error(ex.Message) End Try @@ -2758,7 +2767,7 @@ Public Class frmMain MyProcess.Start() Else LOGGER.Warn($"Clipboardwatcher-Exe not found [{bbtniCW.Tag}]") - MsgBox("Clipboard Watcher could not be started!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE) + FormHelper.ShowInfoMessage("Clipboard Watcher could not be started!", omsgTitleWarning) End If Catch ex As Exception @@ -2767,13 +2776,13 @@ Public Class frmMain End Sub Private Sub GridView_Docs_ColumnPositionChanged(sender As Object, e As EventArgs) Handles GridViewWFItems.ColumnPositionChanged - GridLayout_Changed() + GridLayout_Changed("ColumnPositionChanged") End Sub - Private Sub GridLayout_Changed() - If FormShown = False Then + Private Sub GridLayout_Changed(oEvent As String) + If FormShown = False Or Ev_Filter_Panel_Closed Then Exit Sub End If - If FRONTEND_ACTION <> "NONE" Then + If FRONTEND_ACTION <> FA_NONE Then Exit Sub End If SaveGridLayout() @@ -2781,7 +2790,7 @@ Public Class frmMain Private Sub GridView_Docs_EndGrouping(sender As Object, e As EventArgs) Handles GridViewWFItems.EndGrouping - GridLayout_Changed() + GridLayout_Changed("EndGrouping") End Sub Private Sub bsilastsync_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bsilastsync.ItemClick @@ -2815,8 +2824,8 @@ Public Class frmMain End Sub Sub Grid_Layout_Save() FRONTEND_ACTION = "SAVE GRID LAYOUT" - GridLayout_Changed() - FRONTEND_ACTION = "NONE" + GridLayout_Changed("Grid_Layout_Save") + FRONTEND_ACTION = FA_NONE End Sub Private Sub BarButtonItem3_ItemClick_2(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem3.ItemClick @@ -2868,19 +2877,19 @@ Public Class frmMain Dim oProfileId = 0 If oSelectedRows.Count = 0 Then - If USER_LANGUAGE = "de-DE" Then - MsgBox("Bitte selektieren Sie einige 1 oder mehr Dokumente", MsgBoxStyle.Exclamation, "Massenabschluss") - Else - MsgBox("Please select some documents!", MsgBoxStyle.Exclamation, "Mass Validation") - End If + Dim omsg = "Bitte selektieren Sie einige 1 oder mehr Dokumente" + If USER_LANGUAGE <> "de-DE" Then + omsg = "Please select some documents!" + End If + FormHelper.ShowInfoMessage(omsg, omsgTitleWarning) Exit Sub End If oProfileId = GridViewWFItems.GetRowCellValue(oSelectedRows.Last(), GridViewWFItems.Columns("PROFILE_ID")) If oProfileId = 0 Then - MsgBox("Could not select a profile!", MsgBoxStyle.Exclamation, "Mass Validation") + FormHelper.ShowInfoMessage("Could not select a profile!", omsgTitleWarning) Exit Sub End If @@ -2924,11 +2933,11 @@ Public Class frmMain End If Dim R As DataRow = NewDatatable.NewRow CURRENT_DOC_ID = oDocID - Dim DOC_PATH = GridViewWFItems.GetRowCellValue(oRowHandle, "FULL_FILE_PATH") - CURRENT_DOC_PATH = DOC_PATH + Dim DOC_PATH = GridViewWFItems.GetRowCellValue(oRowHandle, FullFilepatColName) + ' CURRENT_DOC_PATH = DOC_PATH CURRENT_DOC_GUID = GridViewWFItems.GetRowCellValue(oRowHandle, "GUID") R("DocID") = CURRENT_DOC_ID - R("FULL_PATH") = CURRENT_DOC_PATH + R("FULL_PATH") = DOC_PATH R("DOC_GUID") = GridViewWFItems.GetRowCellValue(oRowHandle, "GUID") NewDatatable.Rows.Add(R) Next @@ -3007,6 +3016,6 @@ Public Class frmMain End Sub Private Sub GridViewWFItems_SubstituteFilter(sender As Object, e As DevExpress.Data.SubstituteFilterEventArgs) Handles GridViewWFItems.SubstituteFilter - + GridLayout_Changed("GridViewWFItems_SubstituteFilter") End Sub End Class \ No newline at end of file diff --git a/app/DD_PM_WINDREAM/frmValidator.vb b/app/DD_PM_WINDREAM/frmValidator.vb index e504b34..3262858 100644 --- a/app/DD_PM_WINDREAM/frmValidator.vb +++ b/app/DD_PM_WINDREAM/frmValidator.vb @@ -511,8 +511,8 @@ Public Class frmValidator End Try End Sub Sub Reset_CurrentReferences() - CURRENT_DOC_ID = 0 - CURRENT_DOC_GUID = 0 + LOGGER.Info("Attention: Reset_CurrentReferences....") + If Not IsNothing(DT_AdditionalSearches_Resultset_Docs) Then DT_AdditionalSearches_Resultset_Docs.Clear() End If @@ -2342,28 +2342,40 @@ Public Class frmValidator Try LOGGER.Debug("Get_Next_GUID...") Dim oNewGUID As Integer - - LOGGER.Debug("Old Document_Path: " & OLD_Document_Path) Dim oBIT As Integer = 0 If PROFIL_sortbynewest = True Then oBIT = 1 End If Dim oSQL = $"EXEC PRPM_GET_NEXT_DOC_INFO {CURRENT_ProfilGUID},{CURRENT_DOC_ID},{USER_ID}" - 'Dim oSQL = $"SELECT * from [dbo].[FNPM_GET_NEXT_DOC_INFO] ({CURRENT_ProfilGUID},{oBIT},{CURRENT_DOC_GUID},'{USER_USERNAME}')" Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL) + CURRENT_DOC_ID = 0 + CURRENT_DOC_GUID = 0 If oDT.Rows.Count > 0 Then - oNewGUID = oDT.Rows(0).Item(0) - CURRENT_DOC_ID = oDT.Rows(0).Item(1) + Try + oNewGUID = oDT.Rows(0).Item(0) + Catch ex As Exception + LOGGER.Warn($">> Attention: in GetNextGUID - Could not get the next GUID - SQL [{oSQL}]") + LOGGER.Warn($"ERRORMESSAGE [{ex.Message}]") + End Try + + Try + CURRENT_DOC_ID = oDT.Rows(0).Item(1) + LOGGER.Debug($"Get_Next_GUID: CURRENT_DOC_ID [{CURRENT_DOC_ID}]...") + Catch ex As Exception + LOGGER.Warn($">> Attention: in GetNextGUID - Could not get the next DocID - SQL [{oSQL}]") + LOGGER.Warn($"ERRORMESSAGE [{ex.Message}]") + End Try + Try Amount_Docs2Validate = oDT.Rows(0).Item(2) + LOGGER.Debug($"Get_Next_GUID: Amount_Docs2Validate [{Amount_Docs2Validate}]...") Catch ex As Exception Amount_Docs2Validate = 0 LOGGER.Warn("Amount_Docs2Validate Error: " & ex.Message) End Try - Else - LOGGER.Info(" >> Attention: in GetNextGUID - Could not get a GUID(1)") + LOGGER.Info($">> Attention: GetNextGUID - Could not get the next GUID - SQL [{oSQL}]") oNewGUID = 0 Return oNewGUID End If @@ -2550,7 +2562,12 @@ Public Class frmValidator If USER_LANGUAGE <> "de-DE" Then omsg = $"Remaining documents: {omsg}" End If - bsiInformation.Caption = omsg + If Amount_Docs2Validate > 0 Then + bsiInformation.Caption = omsg + Else + bsiInformation.Caption = "Could not get the amount of remaining docs!" + End If + bsiDocID.Caption = "Document-ID: " & CURRENT_DOC_ID & " - GUID: " & CURRENT_DOC_GUID LOGGER.Debug("AllDocInfo created...") @@ -5531,13 +5548,11 @@ Public Class frmValidator End Sub Sub Datei_ueberspringen() Try - LOGGER.Debug("Dokument überspringen") + LOGGER.Debug("Skipping document....(Datei_ueberspringen)") 'Das Dokument freigeben Free_File() - Dim oSQL = $"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{WMDocPathWindows}',{CURRENT_DOC_GUID}" DatabaseFallback.ExecuteNonQueryECM(oSQL) - LOGGER.Debug($"Skipped DocGUID {CURRENT_DOC_GUID}") Load_Next_Document(False) Catch ex As Exception