7375 lines
335 KiB
VB.net
7375 lines
335 KiB
VB.net
Imports DevExpress.Utils
|
|
Imports DevExpress.XtraEditors
|
|
Imports DevExpress.XtraGrid.Views.Base
|
|
Imports DevExpress.XtraGrid.Views.Tile
|
|
Imports DevExpress.XtraGrid.Views.Grid
|
|
Imports DevExpress.XtraGrid.Views.Grid.ViewInfo
|
|
Imports DevExpress.XtraGrid
|
|
Imports DevExpress.XtraScheduler
|
|
Imports System.Text
|
|
Imports System.IO
|
|
|
|
Imports WINDREAMLib
|
|
Imports System.Runtime.InteropServices
|
|
Imports DD_Rights
|
|
Imports DD_LIB_Standards
|
|
Imports DevExpress.LookAndFeel
|
|
Imports System.ComponentModel
|
|
Imports System.Threading
|
|
Imports DevExpress.XtraTreeList
|
|
Imports DevExpress.XtraTreeList.Columns
|
|
Imports DevExpress.XtraTreeList.Nodes.Operations
|
|
Imports DevExpress.XtraTreeList.Nodes
|
|
|
|
Public Class frmConstructor_Main
|
|
<DllImport("Shell32", CharSet:=CharSet.Auto, SetLastError:=True)>
|
|
Public Shared Function ShellExecuteEx(ByRef lpExecInfo As SHELLEXECUTEINFO) As Boolean
|
|
End Function
|
|
Public Structure SHELLEXECUTEINFO
|
|
Public cbSize As Integer
|
|
Public fMask As Integer
|
|
Public hwnd As IntPtr
|
|
<MarshalAs(UnmanagedType.LPTStr)> Public lpVerb As String
|
|
<MarshalAs(UnmanagedType.LPTStr)> Public lpFile As String
|
|
<MarshalAs(UnmanagedType.LPTStr)> Public lpParameters As String
|
|
<MarshalAs(UnmanagedType.LPTStr)> Public lpDirectory As String
|
|
Dim nShow As Integer
|
|
Dim hInstApp As IntPtr
|
|
Dim lpIDList As IntPtr
|
|
<MarshalAs(UnmanagedType.LPTStr)> Public lpClass As String
|
|
Public hkeyClass As IntPtr
|
|
Public dwHotKey As Integer
|
|
Public hIcon As IntPtr
|
|
Public hProcess As IntPtr
|
|
End Structure
|
|
#Region "Laufzeitvariablen & Konstanten"
|
|
Private ERROR_FORM_LOAD As Boolean = False
|
|
Private Const SEE_MASK_INVOKEIDLIST = &HC
|
|
Private Const SEE_MASK_NOCLOSEPROCESS = &H40
|
|
Private Const SEE_MASK_FLAG_NO_UI = &H400
|
|
Public Const SW_SHOW As Short = 5
|
|
Private PARENT_SKIPPED As Boolean = False
|
|
|
|
Public CtrlBuilder As ClassControlBuilder
|
|
Public CtrlCommandUI As ClassControlCommandsUI
|
|
|
|
Private CONSTRUCTORID As Integer
|
|
Private CONSTRUCTOR_DETAIL_ID As Integer
|
|
'Private CONSTRUCT_EXPAND As Boolean = True
|
|
Private DT_CONSTRUCT_VIEW As DataTable
|
|
Private DT_VWPMO_CONSTRUCTOR_FORMS As DataTable
|
|
Private DT_ENTITY_DATA As DataTable
|
|
Private DT_TREEVIEW_NODES_ALL As DataTable
|
|
Private DT_TREEVIEW_NODES_FIRST As DataTable
|
|
Private DT_TREEVIEW_NODES_DEVEXPRESS As DataTable
|
|
|
|
Private DT_TREEVIEW_CONFIGURATION As DataTable
|
|
Private DT_CONTROLS_ENTITY As DataTable
|
|
|
|
|
|
Private DT_ADDING_USERS As DataTable
|
|
|
|
Private DT_CONTROL_SCREEN_SHOW_COL_0 As DataTable
|
|
Private TREEVIEW_IMAGELIST As ImageList
|
|
Private NODE_NAVIGATION As Boolean = False
|
|
Private NODE_NAVIGATION_LOADED As Boolean = False
|
|
|
|
Private LOCK_CONTROLS_BG_LOAD As Boolean = False
|
|
|
|
Private EBENE2_PARENT_ID As Integer
|
|
Private EBENE3_PARENT_ID As Integer
|
|
Private ACT_EBENE As Integer
|
|
Private ACT_EBENE_STRING As String
|
|
Private SELECTED_RECORD_ID As Integer
|
|
Private PARENT_RECORDID As Integer
|
|
Private POS_ENTITY As Integer = 0
|
|
Private POS_SQL As String = ""
|
|
Private POS_RECORD_ID
|
|
Private MyTreeview As TreeView
|
|
|
|
|
|
Private TreeView_perControl As Boolean = False
|
|
|
|
Dim IsTopFirstRow As Boolean = True
|
|
Dim IsFilterMode As Boolean = False
|
|
Private GRIDRightMouse_Clicked = False
|
|
Private GRIDdownHitInfo As GridHitInfo
|
|
|
|
Private VIEW_ID
|
|
Private VIEW_ID_RUNTIME As Integer = -1
|
|
|
|
Public RECORD_ENABLED As Boolean = False
|
|
Public POS_ENABLED As Boolean = False
|
|
Private windream_inited = False
|
|
|
|
Private ENTITY_RECORD_COUNT As Integer = 0
|
|
Private EBENE1_ENTITY
|
|
Private EBENE2_ENTITY
|
|
Private EBENE3_ENTITY
|
|
Private EBENE1_COLUMNNAME
|
|
Private EBENE2_COLUMNNAME
|
|
Private EBENE3_COLUMNNAME
|
|
Private EBENE1_RECID
|
|
Private EBENE2_RECID
|
|
Private EBENE3_RECID
|
|
Private EBENE1_GRID_RESULT
|
|
Private EBENE2_GRID_RESULT
|
|
Private EBENE3_GRID_RESULT
|
|
Private act_FormViewID
|
|
|
|
Private EDIT_STATE As EditState = EditState.None
|
|
Private GRID_TYPE As GridType = GridType.Tiles
|
|
Private GRID_TYPE_ID As Integer = 1
|
|
Private FORM_LOADED As Boolean = False
|
|
Private FORM_SHOWN As Boolean = False
|
|
Private SAVE_ROUTINE_ACTIVE As Boolean = False
|
|
Private SP1 As String
|
|
Private SP2 As String
|
|
Private SP3 As String
|
|
Private SP4 As String
|
|
Private SP5 As String
|
|
|
|
Private windream_Docshow As Boolean = False
|
|
Private WD_Suche As String
|
|
Private DocView
|
|
Private DocViewString As String
|
|
Private OpenedFileString As String
|
|
|
|
Private _FormClosing As Boolean = False
|
|
|
|
Private ENTITY_LOADING_PROCESS As Boolean = False
|
|
|
|
Private LinkParentID As Integer
|
|
|
|
Private CONTROL_DOCTYPE_MATCH As Integer = 0
|
|
|
|
Private FOLLOW_UPisActive As Boolean = False
|
|
Private DT_FU_Record As DataTable
|
|
Private DT_FU_ENTITY As DataTable
|
|
' Private gridGUID = 2
|
|
|
|
Private DT_WINDREAM_RESULTLIST_DEF As DataTable
|
|
Private DT_WINDREAM_COLUMNS_GRID As DataTable
|
|
Private DT_DOCRESULT_DROPDOWN_ITEMS As DataTable
|
|
Private DT_RESULTLIST_OPTIONS As DataTable
|
|
Private DT_RESULTLIST_VARIABLE_VALUE As DataTable
|
|
Private DT_WORKFLOWS_MANUAL As DataTable
|
|
Private _MANUAL_WORKFLOW As Boolean = False
|
|
|
|
Private USER_RESULTLIST_CONFIG_GUID As Integer = 0
|
|
Private DT_TBPMO_FORM_VIEW As DataTable
|
|
|
|
|
|
Private FOLL_UP_RECORD_DEFINED As Boolean = False
|
|
Private FOLL_UP_DATE_CTRL_ID As Integer
|
|
Private FOLL_UP_DONE_CTRL_ID As Integer
|
|
Private FOLL_UP_ID As Integer
|
|
|
|
Private LOAD_DIRECT As Boolean = False
|
|
Private IS_SINGLE_RECORD As Boolean = False
|
|
Private LOAD_ENTITY_SEARCH_AT_STARTUP As Boolean = False
|
|
Private SELECTION_IN_ACTION As Boolean = False
|
|
Private RECORD_ID As Integer
|
|
Private PARENT_ENTITYID As Integer
|
|
Private DOC_SEARCH_TAB1 As Boolean = False
|
|
Private ACTIVATE_DOC_SEARCH_ON_EDIT As Boolean = False
|
|
Private ADD_RECORDS_CONSTR As Boolean = True
|
|
Private FORM_TYPE As Integer
|
|
Private ENTITY_ID As Integer
|
|
Private REDUNDANT_FORM As Integer
|
|
Private COUNT_RO_CONTROLS As Integer
|
|
|
|
Private FORMVIEW_ID As Integer
|
|
Private _VIEWNAME As String
|
|
Private _ENTITYSTRING As String
|
|
|
|
'Private ClassWindreamDocGrid.RESULT_DOC_PATH
|
|
'Private ClassWindreamDocGrid.RESULT_OBJECTTYPE
|
|
'Private ClassWindreamDocGrid.RESULT_INWORK
|
|
'Private ClassWindreamDocGrid.RESULT_DOC_ID
|
|
'Private ClassWindreamDocGrid.RESULT_DISPLAYNAME
|
|
|
|
Private IW_USER As String
|
|
Private IW_COMMENT As String
|
|
Private BACKGROUND_HELPER As ClassBackgroundHelper
|
|
Private ROW_READ_ONLY As Boolean = False
|
|
Private ERROR_WHILE_SAVING As Boolean = False
|
|
|
|
Public Enum EditState
|
|
None
|
|
Insert
|
|
Update
|
|
Delete
|
|
End Enum
|
|
|
|
Public Enum GridType
|
|
Grid
|
|
Carousel
|
|
Tiles
|
|
End Enum
|
|
#End Region
|
|
|
|
Private Sub frmForm_Constructor_Main_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
|
|
'If RECORD_CHANGED = True Then
|
|
' Dim ResultMessage As String
|
|
' Try
|
|
' ResultMessage = Update_Record_OnChange()
|
|
' Catch ex As Exception
|
|
' MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in saving Record")
|
|
' Me.Cursor = Cursors.Default
|
|
' ' Verhindert den Zeilenwechsel
|
|
' e.Cancel = True
|
|
' Exit Sub
|
|
' End Try
|
|
'End If
|
|
|
|
If TrySave_Automatic() = False Then
|
|
|
|
e.Cancel = True
|
|
End If
|
|
|
|
_FormClosing = True
|
|
' Check_Record_Changed()
|
|
CloseWDDocview()
|
|
Save_Grid_Layout()
|
|
If DOC_SEARCH_TAB1 = True Then
|
|
Save_DocGrid_Layout()
|
|
End If
|
|
ClassWindowLocation.SaveFormLocationSize(Me, CONSTRUCTORID, CURRENT_SCREEN_ID, "CONSTRUCTOR_MAIN")
|
|
|
|
CURRENT_OPEN_CONSTRUCTOR_FORMS.Remove(CONSTRUCTORID)
|
|
|
|
' Verhindert, das noch geöffnete Records für immer gelockt sind
|
|
If Not IsNothing(CURRENT_DOCVIEW) Then
|
|
Try
|
|
CURRENT_DOCVIEW.CloseView(CURRENT_DOCVIEW_PATH, 0)
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub AddRibbonCloseHandler(controls As Control.ControlCollection)
|
|
For Each c As Control In controls
|
|
AddHandler c.MouseClick, Sub()
|
|
MAIN_FORM.CloseRibbon()
|
|
End Sub
|
|
If c.Controls.Count > 0 Then
|
|
AddRibbonCloseHandler(c.Controls)
|
|
End If
|
|
Next
|
|
End Sub
|
|
Private Sub Load_Configurable_Nodes()
|
|
Try
|
|
Dim oSql = String.Format("SELECT * FROM TBPMO_STRUCTURE_NODES_CONFIGURATION where TYPE_NODE = 1000 AND ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", CONSTRUCTORID)
|
|
NODE_CONFIGURABLE_NODES_DT = ClassDatabase.Return_Datatable(oSql, False)
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Load_Configurable_Nodes")
|
|
End Try
|
|
End Sub
|
|
Sub Load_Adding_users()
|
|
Try
|
|
Dim oSql = String.Format("SELECT * FROM TBPMO_ENTITY_USERRIGHT_ADDING where ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", CONSTRUCTORID)
|
|
DT_ADDING_USERS = ClassDatabase.Return_Datatable(oSql, False)
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Load_Adding_users")
|
|
End Try
|
|
End Sub
|
|
Private Sub frmForm_Constructor_Main_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
Dim sw As New SW("Form Load")
|
|
Dim DT_PROXY_ENTITY As DataTable
|
|
Dim SQL
|
|
Try
|
|
BarEditItem2.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
bsitmLoadEntity.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
CURRENT_DT_DOC_ENTITY_SEARCH = Nothing
|
|
bsitmState.Caption = ""
|
|
_FormClosing = False
|
|
CONSTRUCTORID = CURRENT_CONSTRUCTOR_ID
|
|
Me.Cursor = Cursors.WaitCursor
|
|
|
|
AddRibbonCloseHandler(Controls)
|
|
|
|
Init_Grid_Control()
|
|
'Catch ex As Exception
|
|
' ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
'End Try
|
|
|
|
' Hintergrund Bild initialisieren
|
|
BACKGROUND_HELPER = New ClassBackgroundHelper(GridViewDoc_Search, My.Resources.windream_Logo_transparent_klein)
|
|
|
|
|
|
' Bestimme Dinge ausblenden wenn kein admin
|
|
If USER_IS_ADMIN = True Then
|
|
FormDesignerToolStripMenuItem.Visible = True
|
|
Else
|
|
FormDesignerToolStripMenuItem.Visible = False
|
|
End If
|
|
|
|
If LICENSE_PROXY = True And DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED Then
|
|
SQL = "SELECT * FROM TBPROXY_SYNC_ENTITY"
|
|
DT_PROXY_ENTITY = ClassDatabase.Return_Datatable(SQL, True)
|
|
End If
|
|
|
|
ClassWindowLocation.LoadFormLocationSize(Me, CONSTRUCTORID, CURRENT_SCREEN_ID, "CONSTRUCTOR_MAIN")
|
|
' VWPMO_WF_USER_ACTIVETableAdapter.Connection.ConnectionString = MyConnectionString
|
|
ClassWorkflow.Refresh_Workflows_Entity()
|
|
SQL = String.Format("SELECT *, [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID), {1}) AS 'CAPTION' " &
|
|
"FROM VWPMO_CONSTRUCTOR_FORMS WHERE SCREEN_ID = {2} AND CONSTRUCT_ID = {3} ORDER BY SEQUENCE", USER_LANGUAGE, CURRENT_SCREEN_ID, CURRENT_SCREEN_ID, CONSTRUCTORID)
|
|
|
|
DT_VWPMO_CONSTRUCTOR_FORMS = ClassDatabase.Return_Datatable(SQL, True)
|
|
Catch ex As System.Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Loading Form part 1")
|
|
End Try
|
|
Try
|
|
If LICENSE_PROXY = True And DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED Then
|
|
If DT_VWPMO_CONSTRUCTOR_FORMS.Rows.Count = 0 Then
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Missing Proxy-Configuration", String.Format("Attention: You are using Proxy-Server with synchronized data:" & vbNewLine &
|
|
"Actually there is no data for this view synchronized or configured! Please inform Digital Data!" & vbNewLine &
|
|
"View will now be terminated!"))
|
|
ERROR_FORM_LOAD = True
|
|
Exit Sub
|
|
Else
|
|
Dim Entity_Exists As Boolean = False
|
|
Dim Entity_Name As String
|
|
For Each Constr_row As DataRow In DT_VWPMO_CONSTRUCTOR_FORMS.Rows
|
|
Entity_Name = Constr_row.Item("FORM_TITLE")
|
|
Dim Constr_FORM = Constr_row.Item("FORM_ID")
|
|
Dim expression As String = String.Format("ENTITY_ID = {0}", Constr_FORM)
|
|
Dim matchingRows() As DataRow = DT_PROXY_ENTITY.Select(expression)
|
|
'Prüfen ob Form in Config Proxy vorhanden
|
|
For Each matchingRow As DataRow In matchingRows
|
|
Entity_Exists = True
|
|
Next
|
|
If Entity_Exists = False Then
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Missing Proxy-Configuration", String.Format("Attention: You are using Proxy-Server with synchronized data:" &
|
|
"The entity '{0}' used in this view is not configured for Your proxy-server! Please inform Digital Data!" &
|
|
"View will now be terminated!", Entity_Name))
|
|
ERROR_FORM_LOAD = True
|
|
Exit Sub
|
|
End If
|
|
Next
|
|
End If
|
|
End If
|
|
|
|
CURRENT_DT_TBPMO_ENTITY_RIGHT_CONTROLS = ClassDatabase.Return_Datatable(String.Format("SELECT * FROM TBPMO_ENTITY_RIGHT_CONTROLS where ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", CONSTRUCTORID), False)
|
|
|
|
Load_Adding_users()
|
|
Load_Configurable_Nodes()
|
|
|
|
Catch ex As System.Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Loading Form part 2")
|
|
End Try
|
|
Try
|
|
SQL = String.Format("select * from VWPMO_STRUCTURE_NODES where ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", CONSTRUCTORID)
|
|
Dim DT As DataTable = ClassDatabase.Return_Datatable(SQL, True)
|
|
If DT.Rows.Count > 1 Then
|
|
TreeView_perControl = True
|
|
DT_TREEVIEW_NODES_ALL = DT
|
|
DT_TREEVIEW_NODES_DEVEXPRESS = DT_TREEVIEW_NODES_ALL.Copy()
|
|
Try
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("ID1")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("ID2")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("ID3")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("BOOL1")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("BOOL2")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("ADDED_WHO")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("ADDED_WHEN")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("CHANGED_WHO")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("CHANGED_WHEN")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("CONTROL_ID")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("CREATE_RECORD")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("ENTITY_ID")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("SEQUENCE")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("EXPAND_NODE")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("NAME")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("TYPE_NODE")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("FONT_FAMILY")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("FONT_COLOR")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("FONT_SIZE")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.Columns.Remove("FONT_STYLE")
|
|
DT_TREEVIEW_NODES_DEVEXPRESS.AcceptChanges()
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
|
|
|
|
DT_TREEVIEW_NODES_FIRST = ClassHelper.FILTER_DATATABLE(DT, "EXPAND_NODE = 1", "")
|
|
SQL = String.Format("select * from TBPMO_STRUCTURE_NODES_CONFIGURATION where ENTITY_ID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = {0})", CONSTRUCTORID)
|
|
DT_TREEVIEW_CONFIGURATION = ClassDatabase.Return_Datatable(SQL)
|
|
|
|
Try
|
|
TREEVIEW_IMAGELIST = New ImageList
|
|
For Each row As DataRow In DT_TREEVIEW_CONFIGURATION.Rows
|
|
Try
|
|
Dim bimage = row.Item("NODE_IMAGE")
|
|
If Not IsDBNull(bimage) Then
|
|
Dim Node_image = ByteArrayToBitmap(bimage)
|
|
TREEVIEW_IMAGELIST.Images.Add(row.Item("GUID").ToString, Node_image) 'row.Item("GUID").ToString & "#" & row.Item("ENTITY_ID")
|
|
End If
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
Next
|
|
TreeViewMain.ImageList = TREEVIEW_IMAGELIST
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Adding NodeConfigurations to TreeView: ")
|
|
End Try
|
|
|
|
|
|
Me.SplitContainerTop.Panel1.Controls.Remove(Me.TreeViewMain)
|
|
Me.SplitContainerFORM.Panel1.Controls.Add(Me.TreeViewMain)
|
|
SplitContainerFORM.Collapsed = False
|
|
SplitContainerFORM.PanelVisibility = SplitPanelVisibility.Both
|
|
SplitContainerTop.Collapsed = True
|
|
SplitContainerTop.PanelVisibility = SplitPanelVisibility.Panel2
|
|
SplitContainerMain.Collapsed = True
|
|
NODE_NAVIGATION = True
|
|
tsmiNodedownSearch.Visible = True
|
|
tsmiNodeNew.Visible = True
|
|
tsmiNodeRename.Visible = True
|
|
Else
|
|
tsmiNodeNew.Visible = False
|
|
tsmiNodeRename.Visible = False
|
|
|
|
If DT_VWPMO_CONSTRUCTOR_FORMS.Rows.Count = 1 Then
|
|
SplitContainerTop.PanelVisibility = SplitPanelVisibility.Both
|
|
SplitContainerTop.CollapsePanel = SplitCollapsePanel.Panel1
|
|
SplitContainerTop.Collapsed = True
|
|
End If
|
|
End If
|
|
Catch ex As System.Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Loading Form part 3")
|
|
End Try
|
|
Try
|
|
DT_CONSTRUCT_VIEW = ClassDatabase.Return_Datatable("SELECT * FROM TBPMO_FORM_CONSTRUCTOR WHERE GUID = " & CONSTRUCTORID)
|
|
Dim SEL1 = String.Format("SELECT * FROM TBPMO_FORM WHERE GUID IN (SELECT FORM_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE SCREEN_ID = {0} AND CONSTRUCT_ID = {1})", CURRENT_SCREEN_ID, CONSTRUCTORID)
|
|
DT_ENTITY_DATA = ClassDatabase.Return_Datatable(SEL1, True)
|
|
|
|
SEL1 = String.Format("SELECT *, dbo.FNPMO_GET_CONTROL_CAPTION ('{0}', 1, CONTROL_ID) AS 'CAPTION' FROM VWPMO_CONTROL_SCREEN", USER_LANGUAGE)
|
|
DT_VWPMO_CONTROL_SCREEN = ClassDatabase.Return_Datatable(SEL1, True)
|
|
DT_CONTROL_SCREEN_SHOW_COL_0 = ClassHelper.FILTER_DATATABLE(DT_VWPMO_CONTROL_SCREEN, "CONTROL_SHOW_COLUMN = 0", "") 'ClassDatabase.Return_Datatable("SELECT FORM_ID, CONTROL_ID, CONTROL_COL_NAME, CONTROL_SHOW_COLUMN FROM VWPMO_CONTROL_SCREEN WHERE CONTROL_SHOW_COLUMN = 0", True)
|
|
If DT_CONSTRUCT_VIEW.Rows.Count = 1 Then
|
|
'Load Input Grid
|
|
Me.Text = DT_CONSTRUCT_VIEW.Rows(0).Item("FORM_TITLE")
|
|
'Die Standards ein/ausblenden
|
|
End If
|
|
|
|
Dim sql_ResultList = "select T1.ENTITY_ID,T.GUID,T.TITLE,T.MANUALLY,T.CREATE_ON_REC_CREATE,T.CREATE_ON_FOLL_UP " &
|
|
"FROM TBPMO_WORKFLOW T,TBPMO_WORKFLOW_ENTITY_STATE T1 " &
|
|
"WHERE T.GUID = T1.WF_ID " &
|
|
"GROUP BY T1.ENTITY_ID,T.GUID,T.TITLE,T.MANUALLY,T.CREATE_ON_REC_CREATE,T.CREATE_ON_FOLL_UP"
|
|
DT_WORKFLOWS_MANUAL = ClassDatabase.Return_Datatable(sql_ResultList)
|
|
' Load_Tree_View()
|
|
' Load_Tree_View()
|
|
'Do While BW_LoadTreeView.IsBusy
|
|
|
|
'Loop
|
|
|
|
'If Not IsNothing(MyTreeview) Then
|
|
' For Each node As TreeNode In MyTreeview.Nodes
|
|
' TreeViewMain.Nodes.Add(node.Clone)
|
|
' Next
|
|
'End If
|
|
|
|
FORM_LOADED = True
|
|
sw.Done()
|
|
If LogErrorsOnly = False Then ClassLogger.Add("", False)
|
|
Catch ex As System.Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Error in Loading Form part 4")
|
|
End Try
|
|
Me.Cursor = Cursors.Default
|
|
End Sub
|
|
|
|
#Region "Layout"
|
|
|
|
Private Sub GridControl_Leave(sender As Object, e As EventArgs) Handles GridControl1.Leave, GridControlMain.Leave, GridControlPos.Leave, GridControlDocSearch.Leave
|
|
Save_Grid_Layout()
|
|
Save_POSGrid_Layout()
|
|
Save_DocGrid_Layout()
|
|
Save_Variants_Grid_Layout()
|
|
End Sub
|
|
|
|
Private Sub Save_Variants_Grid_Layout()
|
|
Try
|
|
Dim XMLPath = Get_VariantsGrid_Layout_Filename()
|
|
GridViewVariants.SaveLayoutToXml(XMLPath)
|
|
' Update_Status_Label(True, "Grid Layout Loaded")
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
|
|
Sub Load_Variants_Grid_Layout()
|
|
Try
|
|
Dim XMLPath = Get_VariantsGrid_Layout_Filename()
|
|
If File.Exists(XMLPath) Then
|
|
GridViewVariants.RestoreLayoutFromXml(XMLPath)
|
|
GridViewVariants.GuessAutoFilterRowValuesFromFilter()
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Function Get_VariantsGrid_Layout_Filename()
|
|
Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)")
|
|
Dim EntityName As String = EntityRegex.Replace(ACT_EBENE_STRING, "")
|
|
Dim Filename As String = String.Format("GridViewDoc_Search-{0}-{1}-UserLayout.xml", GetSafeFilename(EntityName), CONSTRUCTOR_DETAIL_ID)
|
|
Return System.IO.Path.Combine(Application.UserAppDataPath(), Filename)
|
|
End Function
|
|
|
|
Private Sub SplitContainer_SplitterMoved(sender As Object, e As EventArgs) Handles SplitContainerTop.SplitterMoved, SplitContainerDetails.SplitterMoved, SplitContainerMain.SplitterMoved, SplitContainerFORM.SplitterMoved
|
|
Save_Splitter_Layout()
|
|
End Sub
|
|
|
|
Sub Save_POSGrid_Layout()
|
|
Try
|
|
Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)")
|
|
Dim EntityName As String = EntityRegex.Replace(ACT_EBENE_STRING & "_POS", "")
|
|
Dim Filename As String = String.Format("{0}-{1}-{2}-UserLayout.xml", grvwGridPos.Name, EntityName, CONSTRUCTOR_DETAIL_ID)
|
|
Dim XMLPath = System.IO.Path.Combine(Application.UserAppDataPath(), Filename)
|
|
grvwGridPos.SaveLayoutToXml(XMLPath)
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
Sub Load_POSGrid_Layout()
|
|
Try
|
|
Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)")
|
|
Dim EntityName As String = EntityRegex.Replace(ACT_EBENE_STRING & "_POS", "")
|
|
Dim Filename As String = String.Format("{0}-{1}-{2}-UserLayout.xml", grvwGridPos.Name, EntityName, CONSTRUCTOR_DETAIL_ID)
|
|
Dim XMLPath = System.IO.Path.Combine(Application.UserAppDataPath(), Filename)
|
|
If File.Exists(XMLPath) Then
|
|
grvwGridPos.RestoreLayoutFromXml(XMLPath)
|
|
grvwGridPos.GuessAutoFilterRowValuesFromFilter()
|
|
'grvwGrid.ClearGrouping()
|
|
' grvwGridPos.ClearSelection()
|
|
' grvwGridPos.OptionsView.ShowPreview = False
|
|
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
Sub Save_Grid_Layout()
|
|
Try
|
|
If ACT_EBENE_STRING Is Nothing Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim XMLPath = Get_Grid_Layout_Filename()
|
|
grvwGrid.SaveLayoutToXml(XMLPath)
|
|
' Update_Status_Label(True, "Grid Layout Loaded")
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
Sub Save_DocGrid_Layout()
|
|
Try
|
|
If ACT_EBENE_STRING Is Nothing Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim XMLPath = Get_DocGrid_Layout_Filename()
|
|
GridViewDoc_Search.SaveLayoutToXml(XMLPath)
|
|
' Update_Status_Label(True, "Grid Layout Loaded")
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
Sub Load_DocGrid_Layout()
|
|
Try
|
|
If ACT_EBENE_STRING Is Nothing Then
|
|
Exit Sub
|
|
End If
|
|
Dim XMLPath = Get_DocGrid_Layout_Filename()
|
|
If File.Exists(XMLPath) Then
|
|
GridViewDoc_Search.RestoreLayoutFromXml(XMLPath)
|
|
GridViewDoc_Search.GuessAutoFilterRowValuesFromFilter()
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
Sub Load_Grid_Layout()
|
|
Try
|
|
Dim XMLPath = Get_Grid_Layout_Filename()
|
|
If File.Exists(XMLPath) And GRID_TYPE = GridType.Grid Then
|
|
grvwGrid.RestoreLayoutFromXml(XMLPath)
|
|
grvwGrid.GuessAutoFilterRowValuesFromFilter()
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
Sub Load_Splitter_Layout()
|
|
Try
|
|
Dim XMLPath As String = Get_Splitter_Layout_Filename()
|
|
Dim layout As New ClassLayout(XMLPath)
|
|
Dim settings As System.Collections.Generic.List(Of ClassSetting)
|
|
settings = layout.Load()
|
|
|
|
If settings.Count = 0 Then
|
|
settings.Add(New ClassSetting("SplitViewTopSplitterPosition", SplitContainerTop.SplitterPosition))
|
|
If CONSTRUCTOR_DETAIL_ID > 0 Then
|
|
settings.Add(New ClassSetting("SplitViewMainSplitterPosition_" & CONSTRUCTOR_DETAIL_ID.ToString, SplitContainerMain.SplitterPosition))
|
|
Else
|
|
settings.Add(New ClassSetting("SplitViewMainSplitterPosition_0", SplitContainerMain.SplitterPosition))
|
|
End If
|
|
|
|
settings.Add(New ClassSetting("SplitViewDetailsSplitterPosition_" & CONSTRUCTOR_DETAIL_ID.ToString, SplitContainerDetails.SplitterPosition))
|
|
layout.Save(settings)
|
|
End If
|
|
|
|
For Each setting As ClassSetting In settings
|
|
Select Case setting._name
|
|
Case "SplitViewTopSplitterPosition"
|
|
SplitContainerTop.SplitterPosition = Integer.Parse(setting._value)
|
|
Case "SplitViewMainSplitterPosition_" & CONSTRUCTOR_DETAIL_ID.ToString
|
|
If NODE_NAVIGATION = False Then
|
|
SplitContainerMain.SplitterPosition = Integer.Parse(setting._value)
|
|
Else
|
|
SplitContainerFORM.SplitterPosition = Integer.Parse(setting._value)
|
|
End If
|
|
Case "SplitViewDetailsSplitterPosition_" & CONSTRUCTOR_DETAIL_ID.ToString
|
|
If DOC_SEARCH_TAB1 = True Then
|
|
SplitContainerDetails.SplitterPosition = Integer.Parse(setting._value)
|
|
End If
|
|
End Select
|
|
Next
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
Sub Save_Splitter_Layout()
|
|
Try
|
|
Dim XMLPath = Get_Splitter_Layout_Filename()
|
|
Dim layout As New ClassLayout(XMLPath)
|
|
Dim settings As New System.Collections.Generic.List(Of ClassSetting)
|
|
If NODE_NAVIGATION = False Then
|
|
settings.Add(New ClassSetting("SplitViewTopSplitterPosition", SplitContainerTop.SplitterPosition))
|
|
If CONSTRUCTOR_DETAIL_ID > 0 Then
|
|
settings.Add(New ClassSetting("SplitViewMainSplitterPosition_" & CONSTRUCTOR_DETAIL_ID.ToString, SplitContainerMain.SplitterPosition))
|
|
Else
|
|
settings.Add(New ClassSetting("SplitViewMainSplitterPosition_0", SplitContainerMain.SplitterPosition))
|
|
End If
|
|
Else
|
|
settings.Add(New ClassSetting("SplitViewTopSplitterPosition", SplitContainerTop.SplitterPosition))
|
|
settings.Add(New ClassSetting("SplitViewMainSplitterPosition_" & CONSTRUCTOR_DETAIL_ID.ToString, SplitContainerFORM.SplitterPosition))
|
|
|
|
End If
|
|
If DOC_SEARCH_TAB1 = True Then
|
|
settings.Add(New ClassSetting("SplitViewDetailsSplitterPosition_" & CONSTRUCTOR_DETAIL_ID.ToString, SplitContainerDetails.SplitterPosition))
|
|
End If
|
|
layout.Save(settings)
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
|
|
Function GetSafeFilename(filename As String)
|
|
Return String.Join("_", filename.Split(Path.GetInvalidFileNameChars()))
|
|
End Function
|
|
|
|
Private Function Get_Splitter_Layout_Filename()
|
|
Dim Filename As String = String.Format("{0}-{1}-SplitterLayout.xml", CONSTRUCTOR_DETAIL_ID, CONSTRUCTOR_DETAIL_ID.ToString)
|
|
Return System.IO.Path.Combine(Application.UserAppDataPath(), Filename)
|
|
End Function
|
|
|
|
Private Function Get_POSGrid_Layout_Filename()
|
|
Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)")
|
|
Dim EntityName As String = EntityRegex.Replace(ACT_EBENE_STRING, "")
|
|
Dim Filename As String = String.Format("{0}-{1}-{2}-UserLayout.xml", grvwGrid.Name, GetSafeFilename(EntityName), CONSTRUCTOR_DETAIL_ID)
|
|
Return System.IO.Path.Combine(Application.UserAppDataPath(), Filename)
|
|
End Function
|
|
Private Function Get_Grid_Layout_Filename()
|
|
Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)")
|
|
If NODE_NAVIGATION = True Then
|
|
ACT_EBENE_STRING = "NODE_NAVIGATION"
|
|
End If
|
|
Dim EntityName As String = EntityRegex.Replace(ACT_EBENE_STRING, "")
|
|
Dim Filename As String = String.Format("{0}-{1}-{2}-UserLayout.xml", grvwGrid.Name, GetSafeFilename(EntityName), CONSTRUCTOR_DETAIL_ID)
|
|
Return System.IO.Path.Combine(Application.UserAppDataPath(), Filename)
|
|
End Function
|
|
Private Function Get_DocGrid_Layout_Filename()
|
|
Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)")
|
|
Dim EntityName As String = EntityRegex.Replace(ACT_EBENE_STRING, "")
|
|
Dim Filename As String = String.Format("GridViewDoc_Search-{0}-{1}-UserLayout.xml", GetSafeFilename(EntityName), CONSTRUCTOR_DETAIL_ID)
|
|
LAYOUT_DOC_GRIDVIEW = System.IO.Path.Combine(Application.UserAppDataPath(), Filename)
|
|
Return LAYOUT_DOC_GRIDVIEW
|
|
End Function
|
|
#End Region
|
|
|
|
Sub Refresh_Entity_Data(pManually As Boolean)
|
|
If TrySave_Automatic() = True Then
|
|
Save_Grid_Layout()
|
|
' Setzt die RECORD_ID auf Null
|
|
' damit beim Refresh keine alten Werte
|
|
' in die Datenbank geschrieben werden
|
|
SELECTED_RECORD_ID = 0
|
|
RECORD_ID = 0
|
|
CURRENT_RECORD_ID = 0
|
|
|
|
If CtrlCommandUI.IsInsert Then
|
|
ActivateAllTabs()
|
|
End If
|
|
Load_Datafor_Entity(pManually)
|
|
End If
|
|
End Sub
|
|
|
|
Dim NodesThatMatch As New List(Of TreeNode)
|
|
Private Function SearchTheTreeView(ByVal TV As TreeView, ByVal TextToFind As String) As List(Of TreeNode)
|
|
' Empty previous
|
|
NodesThatMatch.Clear()
|
|
|
|
' Keep calling RecursiveSearch
|
|
For Each TN As TreeNode In TV.Nodes
|
|
If TN.Text.Contains(TextToFind) Then
|
|
NodesThatMatch.Add(TN)
|
|
End If
|
|
RecursiveSearch(TN, TextToFind)
|
|
Next
|
|
|
|
If NodesThatMatch.Count > 0 Then
|
|
Return NodesThatMatch
|
|
Else
|
|
Return Nothing
|
|
End If
|
|
|
|
End Function
|
|
Private Sub RecursiveSearch(ByVal treeNode As TreeNode, ByVal TextToFind As String)
|
|
' Keep calling the test recursively.
|
|
For Each TN As TreeNode In treeNode.Nodes
|
|
If TN.Text.Contains(TextToFind) Then
|
|
NodesThatMatch.Add(TN)
|
|
End If
|
|
|
|
RecursiveSearch(TN, TextToFind)
|
|
Next
|
|
End Sub
|
|
|
|
'#Region "NavPane"
|
|
' Sub Refresh_Navpane()
|
|
' 'Die aktuelle Ebene überprüfen und das NAvpane aktualisieren
|
|
' Select Case ACT_EBENE
|
|
' Case 1
|
|
' If Not EBENE1_COLUMNNAME Is Nothing Then
|
|
' EBENE1_GRID_RESULT = Get_GridResult(EBENE1_COLUMNNAME)
|
|
' Dim cat As TileNavCategory = LoadLevel1Nav()
|
|
' NavPane.Categories.Clear()
|
|
' NavPane.Categories.Add(cat)
|
|
' End If
|
|
' Case 2
|
|
' If Not EBENE2_COLUMNNAME Is Nothing Then
|
|
' EBENE2_GRID_RESULT = Get_GridResult(EBENE2_COLUMNNAME)
|
|
' Dim cat As TileNavCategory = LoadLevel1Nav()
|
|
' NavPane.Categories.Clear()
|
|
' NavPane.Categories.Add(cat)
|
|
|
|
' Dim item As TileNavItem = LoadLevel2Nav()
|
|
' cat.Items.Add(item)
|
|
' End If
|
|
' Case 3
|
|
' EBENE3_RECID = SELECTED_RECORD_ID
|
|
' If Not EBENE3_COLUMNNAME Is Nothing Then
|
|
' EBENE3_GRID_RESULT = Get_GridResult(EBENE3_COLUMNNAME)
|
|
' Dim cat As TileNavCategory = LoadLevel1Nav()
|
|
' NavPane.Categories.Clear()
|
|
' NavPane.Categories.Add(cat)
|
|
|
|
' Dim item As TileNavItem = LoadLevel2Nav()
|
|
' cat.Items.Add(item)
|
|
|
|
' Dim subitem As TileNavSubItem = LoadLevel3Nav()
|
|
' item.SubItems.Add(subitem)
|
|
|
|
' End If
|
|
' End Select
|
|
' End Sub
|
|
' Private Function FindNode(tncoll As TreeNodeCollection, strText As [String]) As TreeNode
|
|
' Dim tnFound As TreeNode
|
|
' For Each tnCurr As TreeNode In tncoll
|
|
' If tnCurr.Text.StartsWith(strText) Then
|
|
' Return tnCurr
|
|
' End If
|
|
' tnFound = FindNode(tnCurr.Nodes, strText)
|
|
' If tnFound IsNot Nothing Then
|
|
' Return tnFound
|
|
' End If
|
|
' Next
|
|
' Return Nothing
|
|
' End Function
|
|
' Private Sub NavPane_MouseUp(sender As Object, e As MouseEventArgs)
|
|
' Dim pane As TileNavPane = TryCast(sender, TileNavPane)
|
|
' Dim hitInfo As TileNavPaneHitInfo = pane.ViewInfo.CalcHitInfo(e.Location)
|
|
' If hitInfo.InButton Then
|
|
' Dim element = hitInfo.ButtonInfo.Element
|
|
' NavPane.HideDropDownWindow()
|
|
|
|
' Save_Grid_Layout()
|
|
|
|
' If TypeOf element Is NavButton Then
|
|
' Dim btn As NavButton = TryCast(element, NavButton)
|
|
|
|
' If btn.IsMain Then
|
|
' ResetNav()
|
|
' ElseIf btn.Name = "NavButtonRefresh" Then
|
|
' Refresh_Entity_Data()
|
|
' End If
|
|
|
|
' Else
|
|
' Dim Entity As String = element.Tag
|
|
' Dim Node = FindNode(TreeViewMain.Nodes, Entity)
|
|
|
|
' If Node IsNot Nothing Then
|
|
' TreeViewMain.SelectedNode = Node
|
|
' Load_Datafor_Entity()
|
|
' End If
|
|
' End If
|
|
|
|
' End If
|
|
' End Sub
|
|
|
|
' Private Function LoadLevel1Nav()
|
|
' Dim cat As New TileNavCategory()
|
|
' cat.Caption = EBENE1_GRID_RESULT
|
|
' cat.Name = EBENE1_GRID_RESULT
|
|
' cat.TileText = EBENE1_GRID_RESULT
|
|
' cat.Tag = EBENE1_ENTITY
|
|
|
|
' NavPane.SelectedElement = cat
|
|
|
|
' Return cat
|
|
' End Function
|
|
|
|
' Private Function LoadLevel2Nav()
|
|
' Dim item As New TileNavItem()
|
|
' item.Caption = EBENE2_GRID_RESULT
|
|
' item.Name = EBENE2_GRID_RESULT
|
|
' item.TileText = EBENE2_GRID_RESULT
|
|
' item.Tag = EBENE2_ENTITY
|
|
|
|
' NavPane.SelectedElement = item
|
|
|
|
' Return item
|
|
' End Function
|
|
|
|
' Private Function LoadLevel3Nav()
|
|
' Dim subitem As New TileNavSubItem()
|
|
' subitem.Caption = EBENE3_GRID_RESULT
|
|
' subitem.Name = EBENE3_GRID_RESULT
|
|
' subitem.TileText = EBENE3_GRID_RESULT
|
|
' subitem.Tag = EBENE3_ENTITY
|
|
|
|
' NavPane.SelectedElement = subitem
|
|
|
|
' Return subitem
|
|
' End Function
|
|
|
|
' Private Sub ResetNav()
|
|
' 'Grid zurücksetzen
|
|
' Clear_Grid_View()
|
|
' ACT_EBENE = 0
|
|
' CURRENT_ACT_LEVEL = 0
|
|
' ACT_EBENE_STRING = ""
|
|
' EBENE1_ENTITY = ""
|
|
' EBENE1_RECID = 0
|
|
' EBENE2_ENTITY = ""
|
|
' EBENE2_RECID = 0
|
|
' EBENE3_ENTITY = ""
|
|
' EBENE3_RECID = 0
|
|
' 'Navigation zurücksetzen
|
|
' NavPane.Categories.Clear()
|
|
' 'TreeView zurücksetzen
|
|
' 'Load_Tree_View(CONSTRUCTORID)
|
|
' TreeViewMain.SelectedNode = Nothing
|
|
' SetSelectedNodeStyle(TreeViewMain.Nodes)
|
|
|
|
' Load_Tree_View(CONSTRUCTORID)
|
|
' End Sub
|
|
'#End Region
|
|
|
|
#Region "GridControl"
|
|
|
|
|
|
Public Sub Init_Grid_Control()
|
|
GRID_TYPE = GridType.Tiles
|
|
GRID_TYPE_ID = 1
|
|
GridControlMain.MainView = grvwTiles
|
|
End Sub
|
|
Public Function Get_Pos_SQL(FormId As Integer)
|
|
POS_SQL = String.Format("Select T.* FROM VWPMO_ENTITY_TABLE{0} T, TBPMO_RECORD_CONNECT t1 where T.[Record-ID] = T1.RECORD2_ID And T1.RECORD1_ID = @PARENT_ID", FormId.ToString)
|
|
End Function
|
|
Public Sub Clear_Grid_View()
|
|
GridControlMain.DataSource = Nothing
|
|
|
|
If GRID_TYPE = GridType.Grid Then
|
|
If grvwGrid.Columns.Count > 0 Then
|
|
grvwGrid.Columns.Clear()
|
|
End If
|
|
|
|
ElseIf GRID_TYPE = GridType.Tiles Then
|
|
grvwTiles.Columns.Clear()
|
|
Else
|
|
grvwCarousel.Columns.Clear()
|
|
End If
|
|
End Sub
|
|
Public Sub Clear_GridPos_View()
|
|
BindingNavigatorPOS.BindingSource = Nothing
|
|
GridControlPos.DataSource = Nothing
|
|
grvwGridPos.Columns.Clear()
|
|
POS_RECORD_ID = 0
|
|
End Sub
|
|
Public Function Get_Grid_Row_Count() As Integer
|
|
If GRID_TYPE = GridType.Grid Then
|
|
Return grvwGrid.RowCount
|
|
ElseIf GRID_TYPE = GridType.Tiles Then
|
|
Return grvwTiles.RowCount
|
|
Else
|
|
Return grvwCarousel.RowCount
|
|
End If
|
|
End Function
|
|
|
|
'Public Function Get_Grid_Row_Handle(value As String)
|
|
' Try
|
|
' Dim rowHandle As Integer = DT_SELECTION.Rows.IndexOf(DT_SELECTION.Rows.Find(value))
|
|
' If rowHandle > 0 Then
|
|
' If GRID_TYPE = GridType.Grid Then
|
|
' grvwGrid.FocusedRowHandle = rowHandle
|
|
' ElseIf GRID_TYPE = GridType.Tiles Then
|
|
' grvwTiles.FocusedRowHandle = rowHandle
|
|
' Else
|
|
' grvwCarousel.FocusedRowHandle = rowHandle
|
|
' End If
|
|
' End If
|
|
' Catch ex As Exception
|
|
' ClassLogger.Add("Error In Search_RowHandle: " & ex.Message, False)
|
|
' End Try
|
|
'End Function
|
|
Public Function Get_Grid_Column_Count() As Integer
|
|
If GRID_TYPE = GridType.Grid Then
|
|
Return grvwGrid.Columns.Count
|
|
ElseIf GRID_TYPE = GridType.Tiles Then
|
|
Return grvwTiles.Columns.Count
|
|
Else
|
|
Return grvwCarousel.Columns.Count
|
|
End If
|
|
End Function
|
|
|
|
Public Function Get_Focused_Row_Cell_Value(columnName As String)
|
|
If GRID_TYPE = GridType.Grid Then
|
|
Return grvwGrid.GetFocusedRowCellValue(grvwGrid.Columns(columnName))
|
|
ElseIf GRID_TYPE = GridType.Tiles Then
|
|
Return grvwTiles.GetFocusedRowCellValue(grvwTiles.Columns(columnName))
|
|
Else
|
|
Return grvwCarousel.GetFocusedRowCellValue(grvwCarousel.Columns(columnName))
|
|
End If
|
|
End Function
|
|
Public Function Get_Focused_Row_Cell_Value_pos(columnName As String)
|
|
Return grvwGridPos.GetFocusedRowCellValue(grvwGrid.Columns(columnName))
|
|
End Function
|
|
|
|
Private Sub grvwGrid_BeforeLeaveRow(sender As Object, e As RowAllowEventArgs) Handles grvwGrid.BeforeLeaveRow
|
|
|
|
If TrySave_Automatic() = False Then
|
|
e.Allow = False
|
|
Else
|
|
If CtrlCommandUI.IsInsert Then
|
|
ActivateAllTabs()
|
|
CtrlCommandUI.IsInsert = False
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
'Private Sub grvwGrid_FocusedColumnChanged(sender As Object, e As FocusedColumnChangedEventArgs) Handles grvwGrid.FocusedColumnChanged
|
|
' Dim result = SplitContainerMain.Collapsed
|
|
' If SplitContainerMain.Collapsed = False Then
|
|
' Cursor = Cursors.WaitCursor
|
|
' Column_Row_Handler("grvwGrid_FocusedColumnChanged")
|
|
' Me.Cursor = Cursors.Default
|
|
' End If
|
|
|
|
'End Sub
|
|
Private Sub GridView_FocusedRowChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles grvwGrid.FocusedRowChanged, grvwTiles.FocusedRowChanged, grvwCarousel.FocusedRowChanged
|
|
If SplitContainerMain.Collapsed = False Then
|
|
Me.Cursor = Cursors.WaitCursor
|
|
Column_Row_Handler("GridView_FocusedRowChanged")
|
|
Me.Cursor = Cursors.Default
|
|
End If
|
|
|
|
End Sub
|
|
Private Sub gridView1_CustomDrawRowIndicator(sender As Object, e As DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs)
|
|
If IsTopFirstRow Then
|
|
e.Info.ImageIndex = -1
|
|
End If
|
|
End Sub
|
|
Sub Column_Row_Handler(Calltype As String, Optional RECID As Integer = 0, Optional _navload As Boolean = False, Optional _refresh As Boolean = False)
|
|
Try
|
|
If _FormClosing = True Then 'Or SaveRoutine_Active = True
|
|
Exit Sub
|
|
End If
|
|
'Aussteigen, wenng erade die Entität gewechselt wird
|
|
If ENTITY_LOADING_PROCESS = False Then
|
|
Exit Sub
|
|
End If
|
|
If GRIDRightMouse_Clicked Then
|
|
Exit Sub
|
|
End If
|
|
If SELECTION_IN_ACTION = True Then
|
|
Exit Sub
|
|
End If
|
|
Dim sw As New SW("Column_Row_Handler1")
|
|
|
|
If RECID = 0 Then
|
|
|
|
If NODE_NAVIGATION = True Then
|
|
' Exit Sub
|
|
End If
|
|
' If NODE_NAVIGATION = False Then
|
|
Dim Grid_RecordID = Get_Focused_Row_Cell_Value("Record-ID")
|
|
If IsNothing(Grid_RecordID) Then
|
|
Console.WriteLine("No Record ID selectable")
|
|
Else
|
|
If Grid_RecordID = 0 Then
|
|
Console.WriteLine("Grid_RecordID = 0")
|
|
Else
|
|
RECID = Grid_RecordID
|
|
End If
|
|
End If
|
|
'End If
|
|
|
|
End If
|
|
CURRENT_RECORD_ID = RECID
|
|
CURRENT_SEARCH_TYPE = "RECORD"
|
|
|
|
If RECID = RECORD_ID And ENTITY_RECORD_COUNT > 1 And _refresh = False And ERROR_WHILE_SAVING = False Then
|
|
Exit Sub
|
|
End If
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> RowHandler: RID: " & RECID.ToString & " - " & Now, False)
|
|
'Hier jetzt erst das Anzeigen für einen selektierten Datensatz
|
|
If GRID_TYPE = GridType.Grid Then
|
|
If IsTopFirstRow Then
|
|
IsTopFirstRow = False
|
|
'grvwGrid.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus
|
|
'grvwGrid.OptionsBehavior.Editable = Not IsTopFirstRow
|
|
'grvwGrid.OptionsSelection.EnableAppearanceFocusedCell = Not IsTopFirstRow
|
|
'grvwGrid.OptionsSelection.EnableAppearanceFocusedRow = Not IsTopFirstRow
|
|
'grvwGrid.OptionsSelection.EnableAppearanceHideSelection = Not IsTopFirstRow
|
|
End If
|
|
ElseIf GRID_TYPE = GridType.Carousel Then
|
|
If IsTopFirstRow Then
|
|
IsTopFirstRow = False
|
|
grvwCarousel.OptionsBehavior.Editable = Not IsTopFirstRow
|
|
End If
|
|
ElseIf GRID_TYPE = GridType.Tiles Then
|
|
If IsTopFirstRow Then
|
|
IsTopFirstRow = False
|
|
grvwTiles.OptionsBehavior.Editable = Not IsTopFirstRow
|
|
End If
|
|
End If
|
|
|
|
'Wird jetzt bei BeforeRowChange überprüft
|
|
'Check_Record_Changed()
|
|
sw.Done()
|
|
DisableEditMode()
|
|
|
|
sw = New SW("Column_Row_Handler2")
|
|
' muss vor show selected record data kommen,
|
|
' sodass die datasource für die angehakten werte existiert (checked list box)
|
|
CtrlBuilder.WatchRecordChanges = False
|
|
|
|
ClassControlValues.LoadControlValuesListWithPlaceholders(ENTITY_ID, CURRENT_RECORD_ID, PARENT_RECORDID, CtrlBuilder.AllControls, ENTITY_ID)
|
|
CtrlBuilder.WatchRecordChanges = True
|
|
If CURRENT_RECORD_ID > 0 Then
|
|
Show_Selected_Record_Data(CURRENT_RECORD_ID, False)
|
|
End If
|
|
|
|
sw.Done()
|
|
ClassRightManagement.Check_Set_Rights(CURRENT_RECORD_ID, ENTITY_ID)
|
|
CONTROL_HANDLING()
|
|
|
|
|
|
|
|
If TCDetails.SelectedTabPage Is Nothing Then
|
|
Exit Sub
|
|
End If
|
|
If TabPos.PageVisible = True And TCDetails.SelectedTabPage.Name = "TabPos" Then
|
|
sw = New SW("POS-Handler in ColumnRowHandler")
|
|
Clear_GridPos_View()
|
|
Dim POS_GRID_RECORD = Get_Focused_Row_Cell_Value_pos("Record-ID")
|
|
Load_Pos_Data()
|
|
Load_POSGrid_Layout()
|
|
sw.Done()
|
|
End If
|
|
|
|
If CURRENT_RECORD_ID > 0 Then
|
|
If RIGHT_RECORD_AND_FILE_READ_ONLY = False And CtrlCommandUI.IsInsert = False Then
|
|
If DT_CONTROLS_ENTITY.Rows.Count = COUNT_RO_CONTROLS Then
|
|
tsButtonEdit.Enabled = False
|
|
tsButtonSave.Enabled = False
|
|
tsButtonDelete.Enabled = False
|
|
Else
|
|
' tsButtonEdit.Enabled = True
|
|
End If
|
|
|
|
End If
|
|
If RIGHT_RECORD_AND_FILE_READ_ONLY = True Or NODE_NAVIGATION = True Then
|
|
bbtniCopyRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
bbtniNewVariant2.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
bbtniParentLink.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
bbtniWFTask.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
Else
|
|
bbtniCopyRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
bbtniNewVariant2.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
bbtniParentLink.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
bbtniWFTask.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
End If
|
|
If NODE_NAVIGATION = False Then
|
|
Get_RecordCounts_Nodes()
|
|
Else
|
|
tsButtonAdd.Enabled = False
|
|
'MsgBox(SplitContainerFORM.Collapsed)
|
|
'MsgBox(SplitContainerMain.Collapsed)
|
|
'MsgBox(SplitContainerTop.Collapsed)
|
|
If SplitContainerMain.Collapsed = False Then
|
|
SELECTION_IN_ACTION = True
|
|
SearchNodeForRecord(TreeViewMain.Nodes, RECORD_ID)
|
|
End If
|
|
SELECTION_IN_ACTION = False
|
|
End If
|
|
|
|
End If
|
|
'Liste der geänderten Control Values leeren
|
|
CtrlBuilder.ControlsChanged.Clear()
|
|
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error:", ex.Message & vbNewLine & ex.StackTrace)
|
|
End Try
|
|
|
|
End Sub
|
|
Sub CONTROL_HANDLING()
|
|
Dim sw As New SW("CONTROL_HANDLING")
|
|
tsButtonSave.Enabled = True
|
|
If ADD_RECORDS_CONSTR = False Then
|
|
tsButtonAdd.Enabled = False
|
|
End If
|
|
|
|
tsButtonEdit.Enabled = True
|
|
tsButtonDelete.Enabled = True
|
|
docCM_PropertiesFile.Enabled = True
|
|
tslblLocked.Visible = False
|
|
tslblFileslocked.Visible = False
|
|
TabFollowUp.PageEnabled = True
|
|
'pnlPositions.Enabled = True
|
|
TabWindream.PageEnabled = True
|
|
tsbtnDoc_Refresh.Enabled = True
|
|
tsmientitySearch.Enabled = True
|
|
|
|
If SQL_RECORD_AND_FILE_READ_ONLY <> "" Or SQL_DOC_READ_ONLY <> "" Then
|
|
If RIGHT_RECORD_AND_FILE_READ_ONLY = True Then
|
|
|
|
tsButtonEdit.Enabled = False
|
|
tsButtonSave.Enabled = False
|
|
tsButtonDelete.Enabled = False
|
|
tslblLocked.Visible = True
|
|
TabFollowUp.PageEnabled = False
|
|
tsmiMassChanges.Enabled = False
|
|
'pnlPositions.Enabled = False
|
|
' tsButtonShowTaskOverview.Enabled = False
|
|
End If
|
|
If RIGHT_READ_ONLY_DOC = True Then
|
|
tslblFileslocked.Visible = True
|
|
Doc_ReadOnlyHandler(False)
|
|
End If
|
|
|
|
Else
|
|
If DT_RIGHTS_GROUP.Rows.Count > 0 Or DT_RIGHTS_USER.Rows.Count > 0 Then
|
|
'DATENSATZ-RECHTE
|
|
If RIGHT_ADD_R = False Then
|
|
tsButtonAdd.Enabled = False
|
|
|
|
End If
|
|
If RIGHT_EDIT_R = False Then
|
|
tslblLocked.Visible = True
|
|
tsButtonEdit.Enabled = False
|
|
tsButtonSave.Enabled = False
|
|
tsButtonDelete.Enabled = False
|
|
tsmiMassChanges.Enabled = False
|
|
If RIGHT_ADD_R = False Then
|
|
tsButtonSave.Enabled = False
|
|
End If
|
|
End If
|
|
If RIGHT_DELETE_R = False Then
|
|
tsButtonDelete.Enabled = False
|
|
End If
|
|
'DATEI-RECHTE
|
|
If RIGHT_READ_ONLY_DOC = True Then
|
|
tslblFileslocked.Visible = True
|
|
End If
|
|
End If
|
|
End If
|
|
sw.Done()
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region "TreeView"
|
|
|
|
Public Sub SetSelectedNodeStyle(tncoll As TreeNodeCollection)
|
|
If NODE_NAVIGATION = False Then
|
|
For Each node As TreeNode In tncoll
|
|
|
|
If node.IsSelected Then
|
|
node.NodeFont = New Font(TreeViewMain.Font.FontFamily, TreeViewMain.Font.Size, FontStyle.Bold)
|
|
node.Text = node.Text
|
|
Else
|
|
node.NodeFont = New Font(TreeViewMain.Font.FontFamily, TreeViewMain.Font.Size, FontStyle.Regular)
|
|
End If
|
|
|
|
If node.Nodes.Count > 0 Then
|
|
SetSelectedNodeStyle(node.Nodes)
|
|
End If
|
|
|
|
Next
|
|
End If
|
|
|
|
TreeViewMain.Refresh()
|
|
End Sub
|
|
Private Sub NodeRecursive(ByVal n As TreeNode, searchRecord As Integer)
|
|
Dim aNode As TreeNode
|
|
For Each aNode In n.Nodes
|
|
If Not IsNothing(aNode.Tag) Then
|
|
If aNode.Tag.ToString.Contains("RECORD-ID") Then
|
|
Dim Record = ClassNodeNavigation.Return_RECORD_forTag(aNode.Tag)
|
|
If IsNumeric(Record) And Record <> 0 And searchRecord = Record Then
|
|
TreeViewMain.SelectedNode = aNode
|
|
Exit Sub
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
NodeRecursive(aNode, searchRecord)
|
|
Next
|
|
End Sub
|
|
Public Sub SearchNodeForRecord(tncoll As TreeNodeCollection, searchRecord As Integer)
|
|
Try
|
|
Dim sw As New SW("SearchNodeForRecord: " & searchRecord.ToString)
|
|
Dim n As TreeNode
|
|
For Each n In TreeViewMain.Nodes
|
|
NodeRecursive(n, searchRecord)
|
|
Next
|
|
sw.Done()
|
|
Catch ex As Exception
|
|
ClassLogger.Add("Error in SearchNodeForRecord: " & ex.Message, True)
|
|
End Try
|
|
End Sub
|
|
Private Sub TreeViewMain_BeforeSelect(sender As Object, e As TreeViewCancelEventArgs) Handles TreeViewMain.BeforeSelect
|
|
If NODE_NAVIGATION = False Then
|
|
If grvwGrid.Columns.Count > 0 Then
|
|
Save_Grid_Layout()
|
|
End If
|
|
If DOC_SEARCH_TAB1 = True Then
|
|
Save_DocGrid_Layout()
|
|
End If
|
|
|
|
Else
|
|
If Not IsNothing(TreeViewMain.SelectedNode) Then
|
|
TreeViewMain.SelectedNode.NodeFont = New Font(TreeViewMain.Font.FontFamily, TreeViewMain.Font.Size, FontStyle.Regular)
|
|
End If
|
|
|
|
End If
|
|
End Sub
|
|
Private Sub TreeViewMain_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles TreeViewMain.AfterSelect
|
|
Dim sw As New SW("TreeViewMain_AfterSelect1")
|
|
Dim swAll As New SW("TreeViewMain_AfterSelect")
|
|
DisableEditMode()
|
|
If NODE_NAVIGATION = False Then
|
|
SetSelectedNodeStyle(TreeViewMain.Nodes)
|
|
Else
|
|
Dim sw1 As New SW("TreeViewSetSelectedNode")
|
|
ACT_EBENE_STRING = "NODE_NAVIGATION"
|
|
' Dim SelectedNode As TreeNode = e.Node 'TryCast(TreeViewMain.SelectedNode, TreeNode)
|
|
If e.Node IsNot Nothing Then
|
|
e.Node.NodeFont = New Font(TreeViewMain.Font.FontFamily, TreeViewMain.Font.Size, FontStyle.Bold)
|
|
End If
|
|
sw1.Done()
|
|
End If
|
|
Dim fl = FORM_LOADED
|
|
Dim firstORFOLLWOWIN
|
|
If FORM_SHOWN = False Then
|
|
firstORFOLLWOWIN = True
|
|
Else
|
|
firstORFOLLWOWIN = False
|
|
End If
|
|
sw.Done()
|
|
Load_Datafor_Entity(False)
|
|
|
|
sw = New SW("TreeViewMain_AfterSelect2")
|
|
|
|
If DOC_SEARCH_TAB1 = True Then
|
|
tsbtnPanel1Collapse.Visible = True
|
|
Else
|
|
tsbtnPanel1Collapse.Visible = False
|
|
End If
|
|
If NODE_NAVIGATION = True Then
|
|
Dim SelectedNode As TreeNode = TryCast(TreeViewMain.SelectedNode, TreeNode)
|
|
If SelectedNode IsNot Nothing Then
|
|
Update_Status_Label(True, SelectedNode.Tag)
|
|
|
|
ClassNodeNavigation.Check_NODE_CONFIG_ID(ENTITY_ID, SelectedNode)
|
|
|
|
If SelectedNode.Tag.ToString.Contains("RECORD-ID") Then
|
|
Dim Record = ClassNodeNavigation.Return_RECORD_forTag(SelectedNode.Tag)
|
|
If Record <> 0 Then
|
|
|
|
ToolStripEdit.Enabled = True
|
|
If Record <> CURRENT_RECORD_ID Then
|
|
Column_Row_Handler("TreeviewAfterSelect", Record, True)
|
|
SELECTION_IN_ACTION = True
|
|
If SplitContainerMain.Collapsed = False Then
|
|
LocateRecordinGridById(RECORD_ID)
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
End If
|
|
If pnlDetails.Enabled = False Then pnlDetails.Enabled = True
|
|
Else
|
|
If pnlDetails.Enabled = True Then pnlDetails.Enabled = False
|
|
ToolStripEdit.Enabled = False
|
|
End If
|
|
If RIGHT_READ_ONLY_DOC = False Then
|
|
If ACTIVATE_DOC_SEARCH_ON_EDIT = False Then
|
|
Doc_ReadOnlyHandler(False)
|
|
Else
|
|
Doc_ReadOnlyHandler(True)
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
sw.Done()
|
|
sw = New SW("TreeViewMain_AfterSelect3")
|
|
Load_DocGrid_Layout()
|
|
Load_Grid_Layout()
|
|
Load_Variants_Grid_Layout()
|
|
Load_Splitter_Layout()
|
|
SELECTION_IN_ACTION = False
|
|
sw.Done()
|
|
swAll.Done()
|
|
End Sub
|
|
Sub Doc_ReadOnlyHandler(state As Boolean)
|
|
Dim sw As New SW("Doc_ReadOnlyHandler")
|
|
If state = False Then
|
|
GridControlDocSearch.ContextMenuStrip = cmsResultFilesBasic
|
|
tslblDocViewLocked.Visible = True
|
|
ElseIf state = True Then
|
|
GridControlDocSearch.ContextMenuStrip = ContextMenuStripResultFiles
|
|
tslblDocViewLocked.Visible = False
|
|
End If
|
|
sw.Done()
|
|
End Sub
|
|
|
|
Sub Load_TreeView_Node_Navigation()
|
|
Try
|
|
MyTreeview = Nothing
|
|
|
|
'If DT_TREEVIEW_NODES.Rows.Count > 500 Then
|
|
' newTreeview = ClassNodeNavigation.CreateTreeViewNodes(DT_TREEVIEW_NODES, TREEVIEW_IMAGELIST)
|
|
'Else
|
|
Try
|
|
Dim async As New ClassAsyncNodeBuild(DT_TREEVIEW_NODES_ALL, TREEVIEW_IMAGELIST)
|
|
async.bw.RunWorkerAsync()
|
|
While async.bw.IsBusy
|
|
Application.DoEvents()
|
|
BarEditItem2.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
bsitmLoadEntity.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
bsitmLoadEntity.Caption = "Loading TreeView..."
|
|
End While
|
|
BarEditItem2.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
bsitmLoadEntity.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
MyTreeview = async.newTreeview
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Async NodeBuild", ex.Message & vbNewLine & "ADDI will try an alternative method!", ex.StackTrace)
|
|
MyTreeview = ClassNodeNavigation.CreateTreeViewNodes(DT_TREEVIEW_NODES_ALL, TREEVIEW_IMAGELIST)
|
|
End Try
|
|
|
|
|
|
'End If
|
|
Dim sw As New SW("ADD TV to Form")
|
|
If Not IsNothing(MyTreeview) Then
|
|
MyTreeview.BeginUpdate()
|
|
|
|
For Each node As TreeNode In MyTreeview.Nodes
|
|
TreeViewMain.Nodes.Add(node.Clone)
|
|
Next
|
|
MyTreeview.EndUpdate()
|
|
End If
|
|
|
|
' Start the asynchronous operation.
|
|
'backgroundWorkerTreeView.RunWorkerAsync()
|
|
|
|
|
|
sw.Done()
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Load_TreeView_Node_Navigation", ex.Message, ex.StackTrace)
|
|
End Try
|
|
|
|
'If CONSTRUCT_EXPAND = True Then
|
|
' TreeViewMain.ExpandAll()
|
|
'End If
|
|
End Sub
|
|
|
|
Sub Load_Tree_View()
|
|
Try
|
|
TreeViewMain.Nodes.Clear()
|
|
|
|
If NODE_NAVIGATION = True Then
|
|
Load_TreeView_Node_Navigation()
|
|
Try
|
|
For Each row As DataRow In DT_TREEVIEW_CONFIGURATION.Rows
|
|
Try
|
|
Dim bimage = row.Item("NODE_IMAGE")
|
|
If Not IsDBNull(bimage) Then
|
|
Dim Node_image = ByteArrayToBitmap(bimage)
|
|
ImageCollection1.AddImage(Node_image, row.Item("GUID")) 'row.Item("GUID").ToString & "#" & row.Item("ENTITY_ID")
|
|
End If
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
Next
|
|
Dim sw As New SW("Devexpress TreeView")
|
|
|
|
TreeList1.DataSource = DT_TREEVIEW_NODES_DEVEXPRESS
|
|
TreeList1.KeyFieldName = "GUID"
|
|
TreeList1.ParentFieldName = "PARENT_GUID"
|
|
Try
|
|
TreeList1.Columns.ColumnByName("colRECORD_ID").Visible = False
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
Try
|
|
TreeList1.Columns.ColumnByName("colNODE_CONFIG_ID").Visible = False
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
Try
|
|
TreeList1.Columns.ColumnByName("colBACK_COLOR").Visible = False
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
|
|
sw.Done()
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Devexpress TreeView Load", ex.Message, ex.StackTrace)
|
|
End Try
|
|
Else
|
|
Dim sw As New SW("Load_Tree_View")
|
|
' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
|
|
Dim query1 = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
|
|
Select form
|
|
Order By form.Item("SEQUENCE")
|
|
Where form.Item("PARENT_ID") = 0
|
|
|
|
Dim Rows1 = query1.ToList()
|
|
|
|
For Each LEVEL1ROW In Rows1
|
|
Dim LEVEL0_NODE As TreeNode
|
|
|
|
Dim LEVEL2_NODE As TreeNode
|
|
|
|
'################## LEVEL 1 wird geladen ###########################
|
|
Dim LEVEL1_TITLE = LEVEL1ROW.Item("CAPTION").ToString
|
|
Dim NODE1_ENTITY_ID = LEVEL1ROW.Item("FORM_ID").ToString
|
|
Dim ENTITY_ID = LEVEL1ROW.Item("FORM_ID")
|
|
|
|
' Rootnode erstellen und taggen
|
|
LEVEL0_NODE = New TreeNode(LEVEL1_TITLE)
|
|
LEVEL0_NODE.Tag = NODE1_ENTITY_ID
|
|
' TreeView Rootnode einfügen
|
|
TreeViewMain.Nodes.Add(LEVEL0_NODE)
|
|
|
|
'################## LEVEL 2 wird geladen #########
|
|
Dim LEVEL1_NODE As TreeNode
|
|
|
|
Dim query2 = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
|
|
Select form
|
|
Order By form.Item("SEQUENCE")
|
|
Where form.Item("PARENT_ID") = NODE1_ENTITY_ID
|
|
|
|
Dim Rows2 = query2.ToList()
|
|
For Each Row2 In Rows2
|
|
|
|
Dim LEVEL2_TITLE As String = Row2.Item("CAPTION").ToString
|
|
Dim LEVEL2_ID As Integer = Row2.Item("FORM_ID")
|
|
Dim LEVEL2_PARENT_ID As Integer = Row2.Item("PARENT_ID")
|
|
|
|
' Node erstellen..
|
|
LEVEL1_NODE = New TreeNode(LEVEL2_TITLE)
|
|
LEVEL1_NODE.Tag = LEVEL2_ID
|
|
' ..und einfügen
|
|
LEVEL0_NODE.Nodes.Add(LEVEL1_NODE)
|
|
'##### LEVEL 3 wird geladen #########
|
|
Dim query3 = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
|
|
Select form
|
|
Order By form.Item("SEQUENCE")
|
|
Where form.Item("PARENT_ID") = LEVEL2_ID
|
|
|
|
Dim Rows3 = query3.ToList()
|
|
|
|
For Each Row3 In Rows3
|
|
|
|
Dim LEVEL3_TITLE As String = Row3.Item("CAPTION")
|
|
Dim LEVEL3_ID As Integer = Row3.Item("FORM_ID")
|
|
|
|
' Node erstellen..
|
|
LEVEL2_NODE = New TreeNode(LEVEL3_TITLE)
|
|
LEVEL2_NODE.Tag = LEVEL3_ID
|
|
' ..und einfügen
|
|
LEVEL1_NODE.Nodes.Add(LEVEL2_NODE)
|
|
|
|
Next
|
|
Next
|
|
Next
|
|
sw.Done()
|
|
End If
|
|
|
|
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
Private Sub BW_LoadTreeView_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BW_LoadTreeView.RunWorkerCompleted
|
|
BarEditItem2.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
If NODE_NAVIGATION = False Then
|
|
TreeViewMain.ExpandAll()
|
|
End If
|
|
TreeViewMain.Nodes(0).EnsureVisible()
|
|
End Sub
|
|
|
|
Private Sub BW_Load_EntityData_DoWork(sender As Object, e As DoWorkEventArgs) Handles BW_LoadTreeView.DoWork
|
|
|
|
Load_Tree_View()
|
|
|
|
|
|
End Sub
|
|
Sub Create_variable_node()
|
|
|
|
End Sub
|
|
Sub Load_Datafor_Entity(pManually As Boolean)
|
|
'If ClassProxy.IS_PROXY_BUSY = True Then
|
|
' MsgBox("Proxy-Server is actually synchronizing! Please wait until synchronisation is finished!" & vbNewLine & "This might take up to 3 minutes!", MsgBoxStyle.Information)
|
|
' Exit Sub
|
|
'End If
|
|
Try
|
|
Dim SelectedNode As TreeNode = TryCast(TreeViewMain.SelectedNode, TreeNode)
|
|
If SelectedNode IsNot Nothing Then
|
|
Dim _TagENT_ID = ClassNodeNavigation.Return_ENTITY_FOR_TAG(SelectedNode.Tag)
|
|
If (_TagENT_ID <> 0 And _TagENT_ID <> ENTITY_ID) Or _TagENT_ID <> CURRENT_ENTITY_ID Then
|
|
ClassLogger.Add("Entity-Data needs to be reloaded...", False)
|
|
|
|
ENTITY_ID = _TagENT_ID
|
|
CURRENT_ENTITY_ID = ENTITY_ID
|
|
CURRENT_CONSTRUCTOR_ID = CONSTRUCTORID
|
|
|
|
Load_Adding_users()
|
|
Load_Configurable_Nodes()
|
|
Else
|
|
If pManually = False Then
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
'If NODE_NAVIGATION = True Then
|
|
' If NODE_NAVIGATION_LOADED = True Then
|
|
' Exit Sub
|
|
' Else
|
|
' NODE_NAVIGATION_LOADED = True
|
|
' End If
|
|
'End If
|
|
|
|
Dim sw As New SW("Load_Datafor_Entity")
|
|
|
|
|
|
If SelectedNode IsNot Nothing Then
|
|
ENTITY_LOADING_PROCESS = False
|
|
'If NODE_NAVIGATION = True Then
|
|
' ENTITY_ID = ClassNodeNavigation.Return_ENTITY_FOR_TAG(SelectedNode.Tag)
|
|
' CURRENT_ENTITY_ID = ENTITY_ID
|
|
'End If
|
|
|
|
Dim result = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
|
|
Select form
|
|
Where form.Item("FORM_ID") = ENTITY_ID).Single()
|
|
CONSTRUCTOR_DETAIL_ID = result.Item("GUID")
|
|
' CONSTRUCT_EXPAND = result.Item("EXPAND")
|
|
Dim FORM_DATE_FORMAT = result.Item("DATE_FORMAT")
|
|
If FORM_DATE_FORMAT <> USER_DATE_FORMAT Then
|
|
CURRENT_DATE_FORMAT = USER_DATE_FORMAT
|
|
Else
|
|
CURRENT_DATE_FORMAT = FORM_DATE_FORMAT
|
|
End If
|
|
LOCK_CONTROLS_BG_LOAD = result.Item("LOCK_CONTROLS_BG_LOAD")
|
|
If NODE_NAVIGATION = True Then
|
|
If SelectedNode.Tag.ToString.Contains("RECORD_ID") Then
|
|
Console.WriteLine("Record beinhaltet")
|
|
End If
|
|
Console.WriteLine("CONTROL Navigacion")
|
|
Else
|
|
Dim parentNode As TreeNode = TryCast(SelectedNode.Parent, TreeNode)
|
|
|
|
ACT_EBENE = 2
|
|
CURRENT_ACT_LEVEL = 2
|
|
If parentNode IsNot Nothing Then
|
|
Dim grandParentNode As TreeNode = TryCast(parentNode.Parent, TreeNode)
|
|
If grandParentNode IsNot Nothing Then
|
|
ACT_EBENE = 3
|
|
CURRENT_ACT_LEVEL = 3
|
|
End If
|
|
Else
|
|
ACT_EBENE = 1
|
|
CURRENT_ACT_LEVEL = 1
|
|
End If
|
|
|
|
End If
|
|
|
|
' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
|
|
Dim query2 = From form In DT_WORKFLOWS_MANUAL.AsEnumerable()
|
|
Select form Where form.Item("ENTITY_ID") = ENTITY_ID
|
|
Dim Rows = query2.ToList()
|
|
_MANUAL_WORKFLOW = False
|
|
For Each _row In Rows
|
|
_MANUAL_WORKFLOW = _row.Item("MANUALLY")
|
|
Next
|
|
FAU_AD_DOMAIN = ""
|
|
FAU_AD_SERVER = ""
|
|
FAU_AD_USER = ""
|
|
FAU_AD_USER_PW = ""
|
|
|
|
If DT_ADDING_USERS.Rows.Count > 0 Then
|
|
'Überprüfen ob für diese Entität ein spezifischer windream-User verwendet wird, wenn Dateien abgelegt werden?
|
|
Dim query1 = From _user In DT_ADDING_USERS.AsEnumerable()
|
|
Select _user Where _user.Item("ENTITY_ID") = ENTITY_ID
|
|
Dim Rows1 = query1.ToList()
|
|
For Each _row In Rows1
|
|
FAU_AD_DOMAIN = _row.Item("AD_DOMAIN").ToString()
|
|
FAU_AD_SERVER = _row.Item("AD_SERVER").ToString()
|
|
FAU_AD_USER = _row.Item("AD_USER").ToString()
|
|
Dim wrapper As New ClassEncryption("!35452didalog=")
|
|
Dim PWplainText As String
|
|
' DecryptData throws if the wrong password is used.
|
|
Try
|
|
PWplainText = wrapper.DecryptData(_row.Item("AD_USER_PW").ToString())
|
|
Catch ex As Exception
|
|
ClassLogger.Add("- the Password for FileAddingUser '" & FAU_AD_USER & "' could not be decrypted", False)
|
|
PWplainText = ""
|
|
End Try
|
|
FAU_AD_USER_PW = PWplainText
|
|
Next
|
|
End If
|
|
|
|
If NODE_NAVIGATION = True Then
|
|
If SelectedNode.Tag.ToString.Contains("RECORD_ID") Then
|
|
Console.WriteLine("Record beinhaltet")
|
|
End If
|
|
Console.WriteLine("CONTROL Navigacion")
|
|
Else
|
|
Get_RecordCounts_Nodes()
|
|
End If
|
|
sw.Done()
|
|
Load_Entity_Data_CONTROLS_RECORDS()
|
|
|
|
|
|
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Load_Datafor_Entity: " & ex.StackTrace)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Sub Get_RecordCounts_Nodes()
|
|
Try
|
|
If NODE_NAVIGATION = True Then
|
|
Exit Sub
|
|
End If
|
|
Dim sw As New SW("Get_RecordCounts_Nodes")
|
|
Dim selnode As TreeNode = TreeViewMain.SelectedNode
|
|
Dim a As Integer = 0
|
|
For Each childNodeLevel1 As TreeNode In selnode.Nodes
|
|
Dim PARENT_ID1 As Integer
|
|
Dim TYPE_ID1 As Integer
|
|
If a = 0 Then
|
|
Dim sql As String = "SELECT PARENT_ID, FORM_TYPE_ID FROM VWPMO_CONSTRUCTOR_FORMS WHERE CONSTRUCT_ID = " & CONSTRUCTORID & " AND FORM_ID = " & ClassNodeNavigation.Return_ENTITY_FOR_TAG(childNodeLevel1.Tag) & " AND SCREEN_ID = " & CURRENT_SCREEN_ID
|
|
Dim DT As DataTable = ClassDatabase.Return_Datatable(sql, True)
|
|
PARENT_ID1 = DT.Rows(0).Item(0)
|
|
TYPE_ID1 = DT.Rows(0).Item(1)
|
|
End If
|
|
If TYPE_ID1 <> 5 Then
|
|
If childNodeLevel1.Text = "Allgemein" Then
|
|
Console.WriteLine("Allgemein-Reiter")
|
|
End If
|
|
Dim result As Integer = ReturnAmountofRecords(ClassNodeNavigation.Return_ENTITY_FOR_TAG(childNodeLevel1.Tag))
|
|
If result <> 99999999 Then
|
|
Dim origtext As String = childNodeLevel1.Text
|
|
If origtext.Contains(" (") Then
|
|
Dim existingstring = origtext.Substring(0, origtext.IndexOf("(") - 1)
|
|
childNodeLevel1.Text = existingstring & " (" & result.ToString & ")"
|
|
Else
|
|
childNodeLevel1.Text = childNodeLevel1.Text & " (" & result.ToString & ")"
|
|
End If
|
|
End If
|
|
|
|
For Each childNodeLevel2 As TreeNode In childNodeLevel1.Nodes
|
|
Dim origtext As String = childNodeLevel2.Text
|
|
If origtext.Contains(" (") Then
|
|
Dim existingstring = origtext.Substring(0, origtext.IndexOf("(") - 1)
|
|
childNodeLevel2.Text = existingstring
|
|
End If
|
|
For Each childNodeLevel3 As TreeNode In childNodeLevel2.Nodes
|
|
Dim origtext1 As String = childNodeLevel3.Text
|
|
If origtext1.Contains(" (") Then
|
|
Dim existingstring = origtext1.Substring(0, origtext1.IndexOf("(") - 1)
|
|
childNodeLevel1.Text = existingstring
|
|
End If
|
|
Next
|
|
Next
|
|
a += 1
|
|
End If
|
|
|
|
Next
|
|
sw.Done()
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, "Load_Datafor_Entity: " & ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
Function ReturnAmountofRecords(EntityID As Integer)
|
|
' Statt eine Table zurückzugeben, können wir die anzahl der Zeilen auch in der Datenbank berechnen,
|
|
' dadurch wird die Abfrage um einiges schneller
|
|
Dim SQL As String = String.Format("SELECT COUNT(T.[Record-ID]) FROM VWPMO_ENTITY_TABLE{0} AS T,TBPMO_RECORD_CONNECT T1 WHERE T.[Record-ID] = T1.RECORD2_ID AND T1.RECORD1_ID = @RecordID", EntityID)
|
|
|
|
'Abhängig von der Entität dieAnzahl der Datensätze laden
|
|
Select Case ACT_EBENE
|
|
Case 1
|
|
If EBENE1_RECID = 0 Then
|
|
Return 99999999
|
|
End If
|
|
|
|
'_sql = _sql.Replace("@RecordID", EBENE1_RECID)
|
|
SQL = SQL.Replace("@RecordID", EBENE1_RECID)
|
|
Case 2
|
|
If EBENE2_RECID = 0 Then
|
|
Return 99999999
|
|
End If
|
|
If EBENE1_RECID = 0 Then
|
|
|
|
End If
|
|
'_sql = _sql.Replace("@RecordID", EBENE2_RECID)
|
|
SQL = SQL.Replace("@RecordID", EBENE2_RECID)
|
|
Case 3
|
|
If EBENE3_RECID = 0 Then
|
|
Return 99999999
|
|
End If
|
|
'_sql = _sql.Replace("@RecordID", EBENE2_RECID)
|
|
SQL = SQL.Replace("@RecordID", EBENE2_RECID)
|
|
|
|
End Select
|
|
|
|
'Dim DT2 As DataTable = ClassDatabase.Return_Datatable(_sql, "ReturnAmountofRecords 1")
|
|
Dim count As Integer = ClassDatabase.Execute_Scalar(SQL, True)
|
|
|
|
Return count
|
|
End Function
|
|
|
|
#End Region
|
|
|
|
#Region "Status Bar"
|
|
|
|
Public Sub Update_Status_Label(visible As Boolean, Optional text As String = "", Optional state As EditState = EditState.None)
|
|
bsitmState.Caption = text
|
|
If visible = True Then
|
|
bsitmState.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
Else
|
|
bsitmState.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
End If
|
|
|
|
|
|
Select Case state
|
|
Case EditState.Insert
|
|
bsitmState.ItemAppearance.Normal.BackColor = Color.Yellow
|
|
Case EditState.Update
|
|
bsitmState.ItemAppearance.Normal.BackColor = Color.LightBlue
|
|
Case Else
|
|
bsitmState.ItemAppearance.Normal.BackColor = Color.LightGray
|
|
End Select
|
|
End Sub
|
|
|
|
Public Sub Update_Record_Label(RecordId As Integer)
|
|
Try
|
|
Dim SQL As String = "SELECT ADDED_WHO, CONVERT(VARCHAR(16),ADDED_WHEN,20) AS ADDED_WHEN, COALESCE(CHANGED_WHO,'') AS CHANGED_WHO, COALESCE(CONVERT(VARCHAR(16),CHANGED_WHEN,20),'') AS CHANGED_WHEN FROM TBPMO_RECORD WHERE GUID = " & RecordId
|
|
Dim expression = "[Record-ID] = " & RecordId
|
|
Dim resultDT As DataTable
|
|
If CtrlCommandUI.IsInsert = True Then
|
|
resultDT = ClassDatabase.Return_Datatable(SQL)
|
|
Else
|
|
resultDT = ClassDatabase.Return_Datatable(SQL, True)
|
|
End If
|
|
|
|
|
|
If Not IsNothing(resultDT) Then
|
|
If resultDT.Rows.Count = 0 Then
|
|
Exit Sub
|
|
End If
|
|
bsitmRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
Dim CreateChangeString = String.Format("Added by '{0}', when: {1}", resultDT.Rows(0).Item(0), resultDT.Rows(0).Item(1))
|
|
If CtrlCommandUI.IsInsert = False Then
|
|
CreateChangeString = CreateChangeString + String.Format(" - Changed by '{0}', when: {1}", resultDT.Rows(0).Item(2), resultDT.Rows(0).Item(3))
|
|
End If
|
|
|
|
If FORM_TYPE = 5 Then
|
|
bsitmRecord.Caption = String.Format("Group-Record ({0}) - {1}", RecordId, CreateChangeString.ToString)
|
|
Else
|
|
If IS_SINGLE_RECORD = True Then
|
|
bsitmRecord.Caption = String.Format("Single-Record ({0}) - {1}", RecordId, CreateChangeString.ToString)
|
|
Else
|
|
bsitmRecord.Caption = String.Format("Record ({0}) - {1}", RecordId, CreateChangeString.ToString)
|
|
End If
|
|
|
|
End If
|
|
bsitmRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "Controls"
|
|
Sub Load_Controls(frmview_id As Integer)
|
|
Dim sw As New SW("Load_Controls")
|
|
FORMVIEW_ID = frmview_id
|
|
ENTITY_ID = DT_TBPMO_FORM_VIEW.Rows(0).Item("FORM_ID")
|
|
CURRENT_ENTITY_ID = ENTITY_ID
|
|
CtrlBuilder = New ClassControlBuilder(pnlDetails)
|
|
CtrlCommandUI = New ClassControlCommandsUI(CtrlBuilder,
|
|
ContextMenuDetails,
|
|
AddressOf NewEditAppointment)
|
|
|
|
CtrlCommandUI.LoadControls(ENTITY_ID)
|
|
Lock_RecordControls(True)
|
|
|
|
AddHandler CtrlBuilder.OnRecordChanged, AddressOf OnRecordChanged
|
|
AddHandler CtrlBuilder.OnMouseHover, AddressOf HandleToolTip
|
|
sw.Done()
|
|
End Sub
|
|
|
|
Private Sub HandleToolTip(sender As Object, e As EventArgs)
|
|
Dim control As Control = DirectCast(sender, Control)
|
|
Dim id As Integer = DirectCast(control.Tag, ClassControlMetadata).Id
|
|
|
|
Dim hint = ClassControlValueCache.LoadHint(id)
|
|
If Not IsNothing(hint) Then
|
|
'show hint
|
|
Console.WriteLine("Showing hint: " & hint)
|
|
ToolTipController.ShowHint(hint.ToString, ToolTipLocation.RightCenter)
|
|
Else
|
|
ToolTipController.HideHint()
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub OnRecordChanged(sender As Object, e As System.EventArgs)
|
|
If ENTITY_LOADING_PROCESS Then
|
|
RECORD_CHANGED = True
|
|
End If
|
|
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region "DetailView - Toolstrip"
|
|
|
|
Private Sub tsButtonAdd_Click(sender As Object, e As EventArgs) Handles tsButtonAdd.Click
|
|
If USER_PERSONIFIED_TEST = True Then
|
|
ClassHelper.MSGBOX_Handler("INFO", "Attention", "You are using ADDI in personified mode! Adding records is not allowed!")
|
|
Exit Sub
|
|
End If
|
|
'If ClassProxy.IS_PROXY_BUSY = True Then
|
|
' MsgBox("Proxy-Server is actually synchronizing! Please wait until synchronisation is finished!" & vbNewLine & "This might take up to 3 minutes!", MsgBoxStyle.Information)
|
|
' Exit Sub
|
|
'End If
|
|
' Vor dem Hinzufügen muss der EditMode auf jeden Fall ausgeschaltet werden!!
|
|
DisableEditMode()
|
|
tsButtonEdit.Enabled = False
|
|
|
|
' IsInsert muss true sein, damit wir wissen ob wir bei
|
|
' Abbruch den Record Wieder löschen können
|
|
CtrlCommandUI.IsInsert = True
|
|
INSERT_IN_ACTION = True
|
|
' Alle Tabs außer Detailansicht deaktivierne
|
|
' DeactivateTabs()
|
|
|
|
'Wenn es eine Parent_ID gibt aber kein PArent_Datensatz ausgewählt wurde muss dies nachgeholt werden
|
|
If PARENT_ENTITYID > 0 Then
|
|
If PARENT_SKIPPED = True And PARENT_RECORDID = 0 Then
|
|
Dim msg = "Achtung es wurde noch kein Parent-Datensatz ausgewählt! Bitte wählen Sie einen Datensatz aus!"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Attention: No parent-record was selected! Please choose a parent record!"
|
|
End If
|
|
MsgBox(msg, MsgBoxStyle.Exclamation)
|
|
Try
|
|
Dim sql
|
|
sql = "select * from VWPMO_ENTITY_TABLE" & PARENT_ENTITYID.ToString
|
|
CURRENT_PARENT_DT = ClassDatabase.Return_Datatable(sql, True)
|
|
frmChooseParentRecord.ShowDialog()
|
|
If CURRENT_PARENT_RECORD_ID = 0 Then
|
|
MsgBox("No Parent-Record selected. Adding will be terminated.", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
PARENT_RECORDID = CURRENT_PARENT_RECORD_ID
|
|
Select Case ACT_EBENE '#### Hier muss nun der Parent-Record gesetzt werden ####
|
|
Case 1
|
|
EBENE1_RECID = CURRENT_PARENT_RECORD_ID
|
|
Case 2
|
|
EBENE1_RECID = CURRENT_PARENT_RECORD_ID
|
|
Case 3
|
|
EBENE2_RECID = CURRENT_PARENT_RECORD_ID
|
|
End Select
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Adding Record", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End If
|
|
End If
|
|
Me.Cursor = Cursors.WaitCursor
|
|
Try
|
|
If TCDetails.SelectedTabPage.Text.StartsWith("Pos") = False Then
|
|
SELECTED_RECORD_ID = 0
|
|
' Lock_RecordControls(False)
|
|
|
|
CURRENT_PARENT_ENTITY_ID = PARENT_ENTITYID
|
|
' Den Record anlegen, damit wir eine RECORD_ID bekommen
|
|
|
|
Dim recordId = ClassRecordCommands.CreateRecordProcedure(ENTITY_ID)
|
|
|
|
If recordId > 0 Then
|
|
Lock_RecordControls(False)
|
|
tsButtonCancel.Visible = True
|
|
' Die RECORD_ID auslesen und setzen
|
|
NEW_RECORD_ID = recordId
|
|
CURRENT_RECORD_ID = NEW_RECORD_ID
|
|
RECORD_ID = NEW_RECORD_ID
|
|
SELECTED_RECORD_ID = NEW_RECORD_ID
|
|
ClassProxy.PRPROXY_RECORD_UPD_INS(ENTITY_ID, SELECTED_RECORD_ID)
|
|
If PARENT_ENTITYID > 0 And PARENT_RECORDID > 0 Then
|
|
If ClassRecordCommands.ConnectRecord(PARENT_RECORDID, CURRENT_RECORD_ID, "INSERT RECORD") = False Then
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "In Connecting Record - Check the log!")
|
|
Else
|
|
ClassProxy.PRPROXY_RECORD_CONNECT(PARENT_RECORDID, CURRENT_RECORD_ID)
|
|
End If
|
|
End If
|
|
|
|
ClassControlValues.LoadDefaultValues(ENTITY_ID, SELECTED_RECORD_ID, pnlDetails.Controls, CURRENT_PARENT_ENTITY_ID, ENTITY_ID)
|
|
ClassControlValues.Enable_Depending_Controls(ENTITY_ID, RECORD_ID, PARENT_RECORDID, CtrlBuilder.AllControls, ENTITY_ID)
|
|
' Das StatusLabel aktualisieren
|
|
Update_Record_Label(NEW_RECORD_ID)
|
|
Doc_ReadOnlyHandler(True)
|
|
RUN_WDSEARCH_GRID()
|
|
' Im gegensatz zu EnableEditMode muss hier nur der save button enabled werden
|
|
tsButtonSave.Enabled = True
|
|
' Muss aktiviert werden, sonst funktionieren die Combobox Abhängigkeits Events nicht
|
|
CURRENT_RECORD_ENABLED = True
|
|
' EDIT_STATE muss hier (immer?) Update sein, sonst wird beim Speichern noch ein Datensatz angelegt
|
|
EDIT_STATE = EditState.Update
|
|
RECORD_CHANGED = True
|
|
'tsslblRecord.Text = "Adding record ......"
|
|
RIGHT_RECORD_AND_FILE_READ_ONLY = False
|
|
tslblLocked.Visible = False
|
|
tslblFileslocked.Visible = False
|
|
tsButtonAdd.Enabled = False
|
|
Else
|
|
Me.Cursor = Cursors.Default
|
|
MsgBox("Could not create a new record. Please check the log for further informations!", MsgBoxStyle.Critical)
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error tsButtonAdd", ex.Message, ex.StackTrace)
|
|
Finally
|
|
Me.Cursor = Cursors.Default
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub tsButtonSave_Click(sender As Object, e As EventArgs) Handles tsButtonSave.Click
|
|
Save_Record()
|
|
If ERROR_WHILE_SAVING = True Then
|
|
Column_Row_Handler("tsButtonSave_Click")
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Sub Focus_Control(name As String)
|
|
Dim controls As Control.ControlCollection = pnlDetails.Controls
|
|
|
|
For Each c As Control In controls
|
|
|
|
Dim tag As Object = c.Tag
|
|
Dim controlName As String = DirectCast(tag, ClassControlMetadata).Name
|
|
If controlName = name Then
|
|
|
|
c.Focus()
|
|
Exit Sub
|
|
|
|
End If
|
|
|
|
Next
|
|
End Sub
|
|
Function Save_Record()
|
|
Try
|
|
Me.Cursor = Cursors.WaitCursor
|
|
SAVE_ROUTINE_ACTIVE = True
|
|
Save_Grid_Layout()
|
|
Dim RequiredControlsFilled As Boolean = TrySave_RequiredControlsFilled()
|
|
If RequiredControlsFilled = False Then
|
|
Return False
|
|
End If
|
|
If CtrlCommandUI.IsInsert Then
|
|
EDIT_STATE = EditState.Insert
|
|
Else
|
|
EDIT_STATE = EditState.Update
|
|
NEW_RECORD_ID = 0
|
|
If RECORD_CHANGED = False Then
|
|
Update_Status_Label(True, "NO CHANGES in Record.")
|
|
ActivateAllTabs()
|
|
DisableEditMode()
|
|
EDIT_STATE = EditState.None
|
|
Me.Cursor = Cursors.Default
|
|
Return True
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
|
|
If TrySave_User() = False Then
|
|
' Cursor zurücksetzen
|
|
Me.Cursor = Cursors.Default
|
|
Return False
|
|
Else
|
|
If RECORD_CHANGED = True Then
|
|
RECORD_CHANGED = False
|
|
End If
|
|
If CtrlCommandUI.IsInsert Then
|
|
ActivateAllTabs()
|
|
End If
|
|
|
|
ClassProxy.PRPROXY_RECORD_UPD_INS(CURRENT_ENTITY_ID, CURRENT_RECORD_ID)
|
|
End If
|
|
|
|
Dim recid As Integer
|
|
'If EDIT_STATE = EditState.Update Then
|
|
' recid = RECORD_ID
|
|
'Else
|
|
' recid = NEW_RECORD_ID
|
|
'End If
|
|
recid = CURRENT_RECORD_ID
|
|
|
|
SELECTED_RECORD_ID = recid
|
|
RECORD_ID = recid
|
|
CURRENT_RECORD_ID = RECORD_ID
|
|
If RECORD_ID = 0 Then
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Attention:", "No Current row selected")
|
|
Me.Cursor = Cursors.Default
|
|
Return False
|
|
End If
|
|
If EDIT_STATE = EditState.Insert Then
|
|
Select Case ACT_EBENE
|
|
Case 1
|
|
EBENE1_RECID = recid
|
|
For Each row As DataRow In CURRENT_DT_ENTITY_RECORDS.Rows
|
|
If row.Item("Record-ID") = SELECTED_RECORD_ID Then
|
|
EBENE1_GRID_RESULT = row.Item(EBENE1_COLUMNNAME)
|
|
End If
|
|
Next
|
|
Case 2
|
|
EBENE2_RECID = recid
|
|
For Each row As DataRow In CURRENT_DT_ENTITY_RECORDS.Rows
|
|
If row.Item("Record-ID") = SELECTED_RECORD_ID Then
|
|
EBENE2_GRID_RESULT = row.Item(EBENE2_COLUMNNAME)
|
|
End If
|
|
Next
|
|
If EBENE1_RECID = 0 Then
|
|
'Bis jetzt konnte noch keine Parent-ID angelegt werden!
|
|
ClassHelper.MSGBOX_Handler("INFO", "Attention", "No parent-link created!")
|
|
'Show_Verknuepfungen()
|
|
End If
|
|
End Select
|
|
'Dim exec = String.Format("EXEC PRPMO_CLIENT_AFTER_RECORD_INSERT {0}", CURRENT_RECORD_ID)
|
|
'ClassDatabase.Execute_non_Query_withConn(exec, 1)
|
|
ElseIf EDIT_STATE = EditState.Update Then
|
|
'Weil es ein Insert war müssen noch die Daten gespeichert/erneuert werden
|
|
Select Case ACT_EBENE
|
|
Case 1
|
|
EBENE1_RECID = recid
|
|
For Each row As DataRow In CURRENT_DT_ENTITY_RECORDS.Rows
|
|
If row.Item("Record-ID") = SELECTED_RECORD_ID Then
|
|
If EBENE1_COLUMNNAME = "" Then
|
|
EBENE1_GRID_RESULT = "No Column configured"
|
|
Else
|
|
EBENE1_GRID_RESULT = Get_GridResult(EBENE1_COLUMNNAME)
|
|
' EBENE1_GRID_RESULT = row.Item(EBENE1_COLUMNNAME)
|
|
End If
|
|
End If
|
|
Next
|
|
Case 2
|
|
EBENE2_RECID = recid
|
|
For Each row As DataRow In CURRENT_DT_ENTITY_RECORDS.Rows
|
|
If row.Item("Record-ID") = SELECTED_RECORD_ID Then
|
|
If EBENE2_COLUMNNAME = "" Then
|
|
EBENE2_GRID_RESULT = "No Column configured"
|
|
Else
|
|
EBENE2_GRID_RESULT = row.Item(EBENE2_COLUMNNAME)
|
|
End If
|
|
|
|
End If
|
|
Next
|
|
End Select
|
|
End If
|
|
CtrlCommandUI.IsInsert = False
|
|
CtrlCommandUI.IsEdit = False
|
|
INSERT_IN_ACTION = False
|
|
'Jetzt den Record nochmal laden
|
|
' Show_Selected_Record_Data(SELECTED_RECORD_ID)
|
|
Update_Status_Label(True, "Record saved - " & Now, EditState.Update)
|
|
Update_Record_Label(SELECTED_RECORD_ID)
|
|
|
|
If IS_SINGLE_RECORD = False Then
|
|
If FORM_TYPE <> 5 Then
|
|
Load_Entity_Data_Only()
|
|
LocateRecordinGridById(RECORD_ID)
|
|
If EDIT_STATE = EditState.Insert Then
|
|
'Die Daten neu laden
|
|
|
|
'Get_Grid_Row_Handle(NEW_RECORD_ID)
|
|
Else
|
|
'Die Daten neu laden
|
|
|
|
'Get_Grid_Row_Handle(RECORD_ID)
|
|
'Die Daten auf dem Panel laden
|
|
'ClassControlValues.LoadControlValues(RECORD_ID, ENTITY_ID, CtrlBuilder.AllControls)
|
|
' Laden der Daten bedeutet nicht dass Daten vom Benutzer geändert wurden!
|
|
RECORD_CHANGED = False
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error Saving Record", ex.Message, ex.StackTrace)
|
|
Return False
|
|
End Try
|
|
If ADD_RECORDS_CONSTR = False Then
|
|
tsButtonAdd.Enabled = False
|
|
Else
|
|
tsButtonAdd.Enabled = True
|
|
End If
|
|
|
|
tsButtonCancel.Visible = False
|
|
If CtrlCommandUI.IsInsert Then
|
|
tsButtonSave.Enabled = False
|
|
tsButtonCancel.Visible = False
|
|
End If
|
|
|
|
DisableEditMode()
|
|
|
|
CtrlCommandUI.IsInsert = False
|
|
INSERT_IN_ACTION = False
|
|
EDIT_STATE = EditState.None
|
|
RECORD_CHANGED = False
|
|
SAVE_ROUTINE_ACTIVE = False
|
|
Me.Cursor = Cursors.Default
|
|
Return True
|
|
End Function
|
|
Sub Delete_Record()
|
|
RECORD_ID = SELECTED_RECORD_ID
|
|
If USER_PERSONIFIED_TEST = True Then
|
|
ClassHelper.MSGBOX_Handler("INFO", "Attention", "You are using ADDI in personified mode! Deleting records is not allowed!")
|
|
Exit Sub
|
|
End If
|
|
'If ClassProxy.IS_PROXY_BUSY = True Then
|
|
' MsgBox("Proxy-Server is actually synchronizing! Please wait until synchronisation is finished!" & vbNewLine & "This might take up to 3 minutes!", MsgBoxStyle.Information)
|
|
' Exit Sub
|
|
'End If
|
|
Save_Grid_Layout()
|
|
Dim msg As String
|
|
If RIGHT_RECORD_AND_FILE_READ_ONLY = False Then
|
|
msg = "Sind Sie sicher, dass Sie diesen Record/Datensatz '" & SELECTED_RECORD_ID.ToString & "' löschen wollen?"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Are You sure You want to delete the selected record '" & SELECTED_RECORD_ID.ToString & "'?"
|
|
End If
|
|
Dim result As MsgBoxResult
|
|
result = MessageBox.Show(msg, "Confirmation:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result = MsgBoxResult.Yes Then
|
|
RECORD_ID = SELECTED_RECORD_ID
|
|
ClassRightManagement.Check_Set_Rights(RECORD_ID, ENTITY_ID)
|
|
CONTROL_HANDLING()
|
|
Dim sql = String.Format("select TRL.DOC_ID, TDRL.FULL_FILENAME FROM TBPMO_DOC_RECORD_LINK TRL, TBPMO_DOCRESULT_LIST TDRL WHERE TRL.DOC_ID = TDRL.DocID AND TRL.RECORD_ID = {0}", RECORD_ID)
|
|
|
|
Dim DT_DOC_RESULT As DataTable = DD_LIB_Standards.clsDatabase.Return_Datatable(sql, False)
|
|
|
|
If IsNothing(DT_DOC_RESULT) Then
|
|
ClassLogger.Add(">> DT_DOC_RESULT is nothing!", True)
|
|
End If
|
|
If ClassHelper.DeleteRecord(SELECTED_RECORD_ID, "DELETE_RECORD - UserDecidedYes") = True Then
|
|
RECORD_CHANGED = False
|
|
EDIT_STATE = EditState.None
|
|
CURRENT_RECORD_ENABLED = False
|
|
' Update_Record_Label(SELECTED_RECORD_ID)
|
|
ClassHelper.InsertEssential_Log(SELECTED_RECORD_ID, "RECORD-ID", "RECORD WAS DELETED MANUALLY by USER: " & USER_USERNAME)
|
|
msg = "Der Datensatz '" & SELECTED_RECORD_ID & "' und alle Abhängigkeiten wurden erfolgreich gelöscht - " & Now
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "The record and all dependencies for '" & SELECTED_RECORD_ID & "' were deleted - " & Now
|
|
End If
|
|
Update_Status_Label(True, msg, EditState.Update)
|
|
|
|
WD_DELETE_DOCS(DT_DOC_RESULT)
|
|
SELECTED_RECORD_ID = 0
|
|
RECORD_ID = 0
|
|
CURRENT_RECORD_ID = 0
|
|
RECORD_CHANGED = False
|
|
'Den derzeitigen Record Neuladen
|
|
DisableEditMode()
|
|
Load_Entity_Data_CONTROLS_RECORDS()
|
|
RECORD_CHANGED = False
|
|
End If
|
|
End If
|
|
Else
|
|
msg = "Sie dürfen diesen Datensatz nicht löschen! (Rechtekonzept)!"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Due to right-privileges You are not allowed to delete this record!"
|
|
End If
|
|
MessageBox.Show(msg, "Warning:", MessageBoxButtons.OK, MessageBoxIcon.Information)
|
|
End If
|
|
|
|
End Sub
|
|
Private Sub tsButtonDelete_Click(sender As Object, e As EventArgs) Handles tsButtonDelete.Click
|
|
Delete_Record()
|
|
End Sub
|
|
|
|
Private Sub tsButtonEditMode_Click(sender As Object, e As EventArgs) Handles tsButtonEdit.Click
|
|
ToggleEditMode()
|
|
End Sub
|
|
|
|
Sub ToggleEditMode()
|
|
|
|
If RECORD_ENABLED = False Then
|
|
EnableEditMode()
|
|
Else
|
|
|
|
If TrySave_Automatic() = True Then
|
|
DisableEditMode()
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Sub EnableEditMode()
|
|
Dim rec = RECORD_ID
|
|
Dim EditingUser = ClassRecordState.IsRecordLocked(SELECTED_RECORD_ID)
|
|
' Überprüfen, ob der Record gerade bearbeitet wird
|
|
If Not IsNothing(EditingUser) And EditingUser <> USER_USERNAME Then
|
|
If USER_IS_ADMIN = True Then
|
|
Dim msg = "Record is in work: " & vbNewLine & $"Dieser Datensatz wird gerade vom Benutzer '{EditingUser}' bearbeitet. Wollen Sie diesen entsperren?"
|
|
Dim msg1 = "Achtung"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Record is in work: " & vbNewLine & $"This Record is currently being edited by User '{EditingUser}'. Do You want to unlock the record?"
|
|
msg1 = "Attention"
|
|
End If
|
|
Dim result As DialogResult = MessageBox.Show(msg, msg1, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result = System.Windows.Forms.DialogResult.Yes Then
|
|
ClassRecordState.UnlockRecord(SELECTED_RECORD_ID)
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
Else
|
|
tslblLocked.Visible = True
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
ClassHelper.MSGBOX_Handler("INFO", "Achtung", "Record is in work: " & vbNewLine & String.Format("Dieser Datensatz wird gerade vom Benutzer '{0}' bearbeitet und kann nur lesend abgerufen werden.", EditingUser))
|
|
Else
|
|
ClassHelper.MSGBOX_Handler("INFO", "Attention", "Record is in work: " & vbNewLine & String.Format("This Record is currently being edited by User '{0}' and only available in Read-Only mode.", EditingUser))
|
|
End If
|
|
' Wenn Record bearbeitet wird, EnableEditMode abbrechen!
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
Else
|
|
'Wenn Record bearbeitet werden kann, IN_WORK auf 1 setzen, um Bearbeitung durch andere zu verhindern!
|
|
ClassRecordState.LockRecord(SELECTED_RECORD_ID)
|
|
End If
|
|
|
|
' Alle Tabs außer Detailsicht deaktivieren
|
|
'DeactivateTabs()
|
|
|
|
CURRENT_CHANGE_STEP += 1
|
|
Dim del = String.Format("DELETE FROM TBPMO_CONTROL_VALUE_CHANGE_HISTORY WHERE UPPER(ADDED_WHO) = '{0}'", USER_USERNAME.ToUpper)
|
|
ClassDatabase.Execute_non_Query(del)
|
|
Lock_RecordControls(False)
|
|
Me.tsButtonAdd.Enabled = False
|
|
Me.tsButtonSave.Enabled = True
|
|
tsbtnRedo.Visible = True
|
|
Dim stg As String
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
stg = "Bearbeiten beenden"
|
|
Else
|
|
stg = "End Working"
|
|
End If
|
|
Me.tsButtonEdit.Text = stg
|
|
If RIGHT_RECORD_AND_FILE_READ_ONLY = False Then
|
|
tsButtonDelete.Enabled = True
|
|
End If
|
|
|
|
CURRENT_RECORD_ID = RECORD_ID
|
|
CtrlCommandUI.IsEdit = True
|
|
' Abhängige Listen laden
|
|
CtrlBuilder.WatchRecordChanges = False
|
|
'ClassControlValues.LoadControlValuesListWithPlaceholders(ENTITY_ID, RECORD_ID, PARENT_ID, CtrlBuilder.AllControls, ENTITY_ID)
|
|
ClassControlValues.Enable_Depending_Controls(ENTITY_ID, RECORD_ID, PARENT_RECORDID, CtrlBuilder.AllControls, ENTITY_ID)
|
|
CtrlBuilder.WatchRecordChanges = True
|
|
|
|
RECORD_ENABLED = True
|
|
CURRENT_RECORD_ENABLED = True
|
|
If RIGHT_READ_ONLY_DOC = False Then
|
|
Doc_ReadOnlyHandler(True)
|
|
End If
|
|
pnlDetails.Focus()
|
|
'If RECORD_ENABLED = False Then
|
|
' ClassControlValues.LoadControlValuesList(SELECTED_RECORD_ID, ENTITY_ID, CtrlBuilder.AllControls)
|
|
'End If
|
|
End Sub
|
|
|
|
Sub DisableEditMode()
|
|
If RECORD_ID = 0 Then Exit Sub
|
|
|
|
Dim sw As New SW("DisableEditMode")
|
|
Dim REC = RECORD_ID
|
|
ClassRecordState.UnlockRecord(SELECTED_RECORD_ID)
|
|
Dim isinsert As Boolean
|
|
If IsNothing(CtrlCommandUI) Then
|
|
isinsert = 0
|
|
Else
|
|
isinsert = CtrlCommandUI.IsInsert
|
|
End If
|
|
ClassRecordCommands.CHECK_RECORD_FINAL(SELECTED_RECORD_ID, isinsert)
|
|
tsbtnRedo.Visible = False
|
|
Lock_RecordControls(True)
|
|
RECORD_ENABLED = False
|
|
POS_ENABLED = False
|
|
CURRENT_RECORD_ENABLED = False
|
|
|
|
Me.tsButtonDelete.Enabled = False
|
|
If ADD_RECORDS_CONSTR = False Then
|
|
tsButtonAdd.Enabled = False
|
|
Else
|
|
tsButtonAdd.Enabled = True
|
|
End If
|
|
Me.tsButtonSave.Enabled = False
|
|
Dim stg As String
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
stg = "Bearbeiten"
|
|
Else
|
|
stg = "Edit record"
|
|
End If
|
|
Me.tsButtonEdit.Text = stg
|
|
Me.tsButtonEdit.Text = stg
|
|
|
|
If Not IsNothing(CtrlCommandUI) Then
|
|
ActivateAllTabs()
|
|
End If
|
|
If RECORD_ENABLED = True Then
|
|
ClassControlValues.UnloadControlValuesList(SELECTED_RECORD_ID, RECORD_ID, CtrlBuilder.AllControls)
|
|
End If
|
|
If Not IsNothing(CtrlCommandUI) Then
|
|
'If CtrlCommandUI.IsInsert Then
|
|
' CtrlCommandUI.IsInsert = False
|
|
'End If
|
|
If CtrlCommandUI.IsEdit Then
|
|
CtrlCommandUI.IsEdit = False
|
|
End If
|
|
End If
|
|
If RIGHT_READ_ONLY_DOC = False Then
|
|
If ACTIVATE_DOC_SEARCH_ON_EDIT = False Then
|
|
Doc_ReadOnlyHandler(False)
|
|
Else
|
|
Doc_ReadOnlyHandler(True)
|
|
End If
|
|
|
|
End If
|
|
sw.Done()
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
#Region "Appointments"
|
|
Sub NewEditAppointment(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
|
|
Try
|
|
Dim ctrl As Control = sender
|
|
ClassFunctionCommandsUI.NewEditAppointment(ctrl.Name, ENTITY_ID, RECORD_ID, pnlDetails.Controls)
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
|
|
Sub EditAppointment(ByVal sender As Control, FormID As Integer)
|
|
Try
|
|
' Load All appointments first
|
|
frmCalendar.TBPMO_RESOURCESTableAdapter.Fill(frmCalendar.DD_DMSDataSetCalendar.TBPMO_RESOURCES)
|
|
frmCalendar.TBPMO_APPOINTMENTSTableAdapter.Fill(frmCalendar.DD_DMSDataSetCalendar.TBPMO_APPOINTMENTS)
|
|
|
|
Dim apt As Appointment = frmCalendar.SchedulerStorage1.Appointments.Items.Find(AddressOf FindAppointment)
|
|
If apt IsNot Nothing Then
|
|
frmCalendar.SchedulerControl1.ShowEditAppointmentForm(apt)
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Function FindAppointment(ByVal apt As Appointment) As Boolean
|
|
Return Convert.ToInt32(apt.CustomFields("RecordID")) = SELECTED_RECORD_ID
|
|
End Function
|
|
#End Region
|
|
|
|
|
|
Sub Load_Entity_Data_CONTROLS_RECORDS()
|
|
Try
|
|
If LogErrorsOnly = False Then ClassLogger.Add("START Load_Entity_Data", False)
|
|
Dim sw As New SW("Load_Entity_Data")
|
|
PARENT_SKIPPED = False
|
|
' Me.Cursor = Cursors.WaitCursor
|
|
RECORD_CHANGED = False
|
|
RECORD_ID = 0
|
|
Dim expression As String
|
|
Dim sql
|
|
'Dim sql = "SELECT CONTROL_ID, CONTROL_READ_ONLY FROM VWPMO_CONTROL_SCREEN WHERE CTRLTYPE_ID NOT IN (1) AND CONTROL_ENTITY_ID = " & ENTITY_ID
|
|
DT_CONTROLS_ENTITY = ClassHelper.FILTER_DATATABLE(DT_VWPMO_CONTROL_SCREEN, "CTRLTYPE_ID NOT IN (1) AND CONTROL_ENTITY_ID = " & ENTITY_ID, "")
|
|
'ClassDatabase.Return_Datatable(sql, True)
|
|
|
|
COUNT_RO_CONTROLS = 0
|
|
|
|
expression = "CONTROL_READ_ONLY = " & 1
|
|
Dim CONTROLS_ROW() As DataRow
|
|
CONTROLS_ROW = DT_CONTROLS_ENTITY.Select(expression)
|
|
Dim i As Integer
|
|
' Count the locked controls
|
|
For i = 0 To CONTROLS_ROW.GetUpperBound(0)
|
|
COUNT_RO_CONTROLS += 1
|
|
Next
|
|
If DT_CONTROLS_ENTITY.Rows.Count = COUNT_RO_CONTROLS Then
|
|
tsButtonEdit.Enabled = False
|
|
tsButtonSave.Enabled = False
|
|
tsButtonDelete.Enabled = False
|
|
Else
|
|
tsButtonEdit.Enabled = True
|
|
tsButtonSave.Enabled = True
|
|
tsButtonDelete.Enabled = True
|
|
End If
|
|
|
|
Dim resultDT_VWPMO_CONSTRUCTOR_FORMS = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
|
|
Select form
|
|
Where form.Item("FORM_ID") = ENTITY_ID).Single()
|
|
|
|
LOAD_DIRECT = resultDT_VWPMO_CONSTRUCTOR_FORMS.Item("LOAD_DIRECT")
|
|
CURRENT_CONSTRUCTOR_DETAIL_ID = resultDT_VWPMO_CONSTRUCTOR_FORMS.Item("GUID")
|
|
CONTROL_DOCTYPE_MATCH = resultDT_VWPMO_CONSTRUCTOR_FORMS.Item("CONTROL_DOCTYPE_MATCH")
|
|
SQL_RECORD_AND_FILE_READ_ONLY = resultDT_VWPMO_CONSTRUCTOR_FORMS.Item("SQL_RIGHT_READ_AND_VIEW_ONLY")
|
|
SQL_DOC_READ_ONLY = resultDT_VWPMO_CONSTRUCTOR_FORMS.Item("SQL_RIGHT_WINDREAM_VIEW")
|
|
DOC_SEARCH_TAB1 = resultDT_VWPMO_CONSTRUCTOR_FORMS.Item("DOC_SEARCH_TAB1")
|
|
If DOC_SEARCH_TAB1 = True Then
|
|
bsitmDocID.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
tslblDocIDTab1.Visible = True
|
|
Else
|
|
bsitmDocID.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
tslblDocIDTab1.Visible = False
|
|
End If
|
|
|
|
Dim GEODATA As Boolean = False
|
|
sql = String.Format("SELECT COUNT(*) FROM TBPMO_RECORD_GEODATA WHERE RECORD_ID IN (SELECT GUID FROM TBPMO_RECORD WHERE PARENT_RECORD = 0 AND FORM_ID = {0})", ENTITY_ID)
|
|
Dim count = ClassDatabase.Execute_Scalar(sql, True)
|
|
If count > 0 Then
|
|
GEODATA = True
|
|
Else
|
|
GEODATA = False
|
|
End If
|
|
If GEODATA = True Then
|
|
bbtniGeodaten.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
Else
|
|
bbtniGeodaten.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
End If
|
|
ACTIVATE_DOC_SEARCH_ON_EDIT = resultDT_VWPMO_CONSTRUCTOR_FORMS.Item("ACTIVATE_DOC_SEARCH_ON_EDIT")
|
|
Try
|
|
ADD_RECORDS_CONSTR = resultDT_VWPMO_CONSTRUCTOR_FORMS.Item("ADD_RECORDS")
|
|
Catch ex As Exception
|
|
ClassLogger.Add(ex.Message, True)
|
|
ADD_RECORDS_CONSTR = True
|
|
End Try
|
|
If ADD_RECORDS_CONSTR = False Then
|
|
ClassLogger.Add("ADDING RECORDS IS PROHIBITED FOR ENTITY: " & ENTITY_ID, False)
|
|
End If
|
|
|
|
expression = String.Format("ENTITY_ID = {0} AND LANGUAGE = '{1}'", ENTITY_ID, USER_LANGUAGE)
|
|
DT_WINDREAM_COLUMNS_GRID = ClassHelper.FILTER_DATATABLE(CURRENT_RESULTLIST_CONFIG, expression, "SEQUENCE") 'ClassDatabase.Return_Datatable(sql, True)
|
|
expression = String.Format("ENTITY_ID = {0} AND TYPE_ID = 3 AND LANGUAGE = '{1}'", ENTITY_ID, USER_LANGUAGE)
|
|
DT_DOCRESULT_DROPDOWN_ITEMS = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_DOCRESULT_DROPDOWN_ITEMS, expression, "SEQUENCE") 'ClassDatabase.Return_Datatable(sql, True)
|
|
|
|
DT_RESULTLIST_OPTIONS = ClassHelper.FILTER_DATATABLE(CURRENT_VARIABLE_CONTROLS, "ENTITY_ID = " & ENTITY_ID, "") ' ClassDatabase.Return_Datatable(sql, True)
|
|
expression = String.Format("ENTITY_ID = {0} AND LANGUAGE = '{1}' AND COLUMN_VIEW LIKE 'VALUE%'", ENTITY_ID, USER_LANGUAGE)
|
|
DT_RESULTLIST_VARIABLE_VALUE = ClassHelper.FILTER_DATATABLE(CURRENT_RESULTLIST_CONFIG, expression, "SEQUENCE") 'ClassDatabase.Return_Datatable(sql, True)
|
|
Dim ENTITY_ROW = (From form In DT_ENTITY_DATA.AsEnumerable()
|
|
Select form
|
|
Where form.Item("GUID") = ENTITY_ID).Single()
|
|
|
|
FORM_TYPE = ENTITY_ROW.Item("FORM_TYPE_ID")
|
|
IS_SINGLE_RECORD = ENTITY_ROW.Item("SINGLE_RECORD")
|
|
POS_ENTITY = ENTITY_ROW.Item("POS_ENTITY")
|
|
REDUNDANT_FORM = ENTITY_ROW.Item("REDUNDANT_ENTITY")
|
|
LOAD_ENTITY_SEARCH_AT_STARTUP = ENTITY_ROW.Item("LOAD_ENT_SEARCH_AT_SU")
|
|
If REDUNDANT_FORM <> 0 Then
|
|
CURRENT_ENTITY_REDUNDANT_ID = REDUNDANT_FORM
|
|
Else
|
|
CURRENT_ENTITY_REDUNDANT_ID = 0
|
|
End If
|
|
'sql = String.Format("select * from TBPMO_RIGHT_USER WHERE USER_ID = {0} AND ENTITY_ID = {1}", USER_GUID, ENTITY_ID)
|
|
DT_RIGHTS_USER = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_RIGHT_USER, "ENTITY_ID = " & ENTITY_ID, "") ' ClassDatabase.Return_Datatable(sql, True)
|
|
expression = String.Format("")
|
|
sql = String.Format("SELECT DISTINCT EDIT_REC,ADD_REC,DELETE_REC,ADD_DOC,VIEW_DOC,DELETE_DOC FROM TBPMO_RIGHT_GROUP WHERE ENTITY_ID = {0} AND GROUP_ID IN (SELECT GROUP_ID FROM TBDD_GROUPS_USER WHERE USER_ID = {1})", ENTITY_ID, USER_GUID)
|
|
DT_RIGHTS_GROUP = ClassDatabase.Return_Datatable(sql, True)
|
|
|
|
If VIEW_ID_RUNTIME <> -1 Then
|
|
GRID_TYPE_ID = VIEW_ID_RUNTIME
|
|
Else
|
|
sql = String.Format("SELECT VIEW_ID FROM TBPMO_USER_CONSTR_VIEW_TYPE WHERE CONSTRUCTOR_DETAIL_ID = {0} AND [ENTITY_ID] = {1} AND USER_ID = {2}", CURRENT_CONSTRUCTOR_DETAIL_ID, ENTITY_ID, USER_GUID)
|
|
Dim VIEW_ID = ClassDatabase.Execute_Scalar(sql, True)
|
|
If IsNothing(VIEW_ID) Then
|
|
ClassDatabase.Execute_non_Query("INSERT INTO TBPMO_USER_CONSTR_VIEW_TYPE ([USER_ID],CONSTRUCTOR_DETAIL_ID,[ENTITY_ID]) VALUES (" & USER_GUID & "," & CURRENT_CONSTRUCTOR_DETAIL_ID & "," & ENTITY_ID & ")")
|
|
VIEW_ID = 1
|
|
End If
|
|
GRID_TYPE_ID = VIEW_ID
|
|
End If
|
|
|
|
' Den GridType setzen: 1=TileView,2=Carousel,3=GridView
|
|
Select Case GRID_TYPE_ID
|
|
Case 1
|
|
GRID_TYPE = GridType.Tiles
|
|
GridControlMain.MainView = grvwTiles
|
|
Case 2
|
|
GRID_TYPE = GridType.Carousel
|
|
GridControlMain.MainView = grvwCarousel
|
|
Case 3
|
|
GRID_TYPE = GridType.Grid
|
|
GridControlMain.MainView = grvwGrid
|
|
End Select
|
|
SELECTED_RECORD_ID = 0
|
|
|
|
' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
|
|
Dim result1 = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
|
|
Select form
|
|
Where form.Item("FORM_ID") = ENTITY_ID).Single()
|
|
PARENT_ENTITYID = result1.Item("PARENT_ID")
|
|
CURRENT_PARENT_ENTITY_ID = PARENT_ENTITYID
|
|
|
|
|
|
' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
|
|
Dim query = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
|
|
Select form
|
|
Where form.Item("FORM_ID") = ENTITY_ID
|
|
|
|
Dim QuickViewSQL = query.Single().Item("SQL_QUICK_VIEW")
|
|
|
|
CURRENT_ENTITYSQL = Get_Grid_Sql(CONSTRUCTORID, ENTITY_ID, CURRENT_CONSTRUCTOR_DETAIL_ID, GRID_TYPE, USER_GUID, QuickViewSQL, IS_SINGLE_RECORD, FORM_TYPE, VIEW_ID, GridControlMain, grvwGrid)
|
|
' CURRENT_ENTITYSQL = GridSQL
|
|
'Anzahl der Datensätze
|
|
ENTITY_RECORD_COUNT = ClassDatabase.Execute_Scalar("SELECT COUNT(*) FROM TBPMO_RECORD where PARENT_RECORD = 0 AND FORM_ID = " & ENTITY_ID, True)
|
|
|
|
If CBool(LOAD_ENTITY_SEARCH_AT_STARTUP) = True Then
|
|
ClassDOC_SEARCH.Get_DOC_RESULTTABLE(DT_RESULTLIST_OPTIONS, DT_RESULTLIST_VARIABLE_VALUE, DT_WINDREAM_COLUMNS_GRID, ENTITY_ID, RECORD_ID, True, True)
|
|
End If
|
|
Select Case ACT_EBENE
|
|
Case 1
|
|
EBENE1_ENTITY = ""
|
|
EBENE1_RECID = 0
|
|
EBENE2_ENTITY = ""
|
|
EBENE2_RECID = 0
|
|
EBENE3_ENTITY = ""
|
|
EBENE3_RECID = 0
|
|
|
|
PARENT_RECORDID = 0
|
|
EBENE1_ENTITY = TreeViewMain.SelectedNode.Text
|
|
ACT_EBENE_STRING = EBENE1_ENTITY
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Level 1 selected in TreeView", False)
|
|
|
|
|
|
'tslblEntity2.Visible = False
|
|
'tslblEntity3.Visible = False
|
|
|
|
|
|
Dim result2 = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
|
|
Select form
|
|
Where form.Item("FORM_ID") = ENTITY_ID).Single()
|
|
|
|
EBENE1_COLUMNNAME = result2.Item("COLUMN_NAME1")
|
|
EBENE2_COLUMNNAME = ""
|
|
EBENE3_COLUMNNAME = ""
|
|
EBENE2_GRID_RESULT = Nothing
|
|
EBENE3_GRID_RESULT = Nothing
|
|
Case 2
|
|
EBENE2_ENTITY = TreeViewMain.SelectedNode.Text
|
|
ACT_EBENE_STRING = EBENE2_ENTITY
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Level 2 selected in TreeView", False)
|
|
EBENE3_ENTITY = ""
|
|
'Wenn bereits ein Record für Ebene 1 gewählt wurde dann einschränken
|
|
If EBENE1_RECID > 0 Then
|
|
PARENT_RECORDID = EBENE1_RECID
|
|
If GRID_TYPE = GridType.Grid Then
|
|
CURRENT_ENTITYSQL = "SELECT T.* FROM VWPMO_ENTITY_TABLE" & ENTITY_ID.ToString & " T, TBPMO_RECORD_CONNECT t1 where T.[Record-ID] = T1.RECORD2_ID AND T1.RECORD1_ID = " & PARENT_RECORDID
|
|
Else
|
|
CURRENT_ENTITYSQL = CURRENT_ENTITYSQL.Replace("@RecordID", EBENE2_RECID)
|
|
CURRENT_ENTITYSQL = CURRENT_ENTITYSQL.ToString.Replace("TBPMO_FORM T1", "TBPMO_FORM T1 ,TBPMO_RECORD_CONNECT T2")
|
|
CURRENT_ENTITYSQL = CURRENT_ENTITYSQL & " AND T.GUID = T2.RECORD2_ID AND T2.RECORD1_ID = @T2.RECORD1_ID"
|
|
CURRENT_ENTITYSQL = CURRENT_ENTITYSQL.ToString.Replace("@T2.RECORD1_ID", PARENT_RECORDID)
|
|
End If
|
|
Else
|
|
SELECTED_RECORD_ID = 0
|
|
PARENT_RECORDID = 0
|
|
'NavPane.Categories.Clear()
|
|
bsitmRecord.Caption = ""
|
|
Update_Status_Label(True, "Entity 1 skipped - All Records loaded", EditState.Update)
|
|
PARENT_SKIPPED = True
|
|
End If
|
|
|
|
Dim result3 = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
|
|
Select form
|
|
Where form.Item("FORM_ID") = ENTITY_ID).Single()
|
|
EBENE2_COLUMNNAME = result3.Item("COLUMN_NAME1")
|
|
|
|
EBENE3_COLUMNNAME = ""
|
|
EBENE2_GRID_RESULT = Nothing
|
|
EBENE3_GRID_RESULT = Nothing
|
|
|
|
Case 3
|
|
EBENE3_ENTITY = TreeViewMain.SelectedNode.Text
|
|
ACT_EBENE_STRING = EBENE3_ENTITY
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Level 3 selected in TreeView", False)
|
|
|
|
Dim result4 = (From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
|
|
Select form
|
|
Where form.Item("FORM_ID") = ENTITY_ID).Single()
|
|
|
|
EBENE3_COLUMNNAME = result4.Item("COLUMN_NAME1")
|
|
'Wenn bereits ein Record für Ebene 1 gewählt wurde dann eisnchränken
|
|
If EBENE2_RECID > 0 Then
|
|
'Parent-ID setzen
|
|
PARENT_RECORDID = EBENE2_RECID
|
|
Try
|
|
If GRID_TYPE = GridType.Grid Then
|
|
CURRENT_ENTITYSQL = "SELECT T.* FROM VWPMO_ENTITY_TABLE" & ENTITY_ID.ToString & " T, TBPMO_RECORD_CONNECT t1 where T.[Record-ID] = T1.RECORD2_ID AND T1.RECORD1_ID = " & PARENT_RECORDID
|
|
Else
|
|
CURRENT_ENTITYSQL = CURRENT_ENTITYSQL.Replace("@RecordID", EBENE2_RECID)
|
|
CURRENT_ENTITYSQL = CURRENT_ENTITYSQL.ToString.Replace("TBPMO_FORM T1", "TBPMO_FORM T1 ,TBPMO_RECORD_CONNECT T2")
|
|
CURRENT_ENTITYSQL = CURRENT_ENTITYSQL & " AND T.GUID = T2.RECORD2_ID AND T2.RECORD1_ID = @T2.RECORD1_ID"
|
|
CURRENT_ENTITYSQL = CURRENT_ENTITYSQL.ToString.Replace("@T2.RECORD1_ID", PARENT_RECORDID)
|
|
End If
|
|
Catch ex As Exception
|
|
ClassLogger.Add("Error in Replacing patterns in entity_sql: " & ex.Message)
|
|
End Try
|
|
Else
|
|
|
|
SELECTED_RECORD_ID = 0
|
|
PARENT_RECORDID = 0
|
|
'NavPane.Categories.Clear()
|
|
Update_Status_Label(True, "Entity 2 skipped - All Records loaded", EditState.Update)
|
|
bsitmRecord.Caption = ""
|
|
PARENT_SKIPPED = True
|
|
End If
|
|
'Select Case FORM_TYPE
|
|
' Case 5
|
|
' If GET_GROUP_OR_SINGLE_RECORD(PARENT_RECORDID) = True Then
|
|
' EBENE3_RECID = RECORD_ID
|
|
' End If
|
|
'End Select
|
|
EBENE3_GRID_RESULT = Nothing
|
|
End Select
|
|
|
|
_ENTITYSTRING = ACT_EBENE_STRING
|
|
CURRENT_PARENT_RECORD_ID = PARENT_RECORDID
|
|
|
|
|
|
DT_TBPMO_FORM_VIEW = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_FORM_VIEW, "FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID, "")
|
|
CURRENT_ENTITYSTRING = DT_TBPMO_FORM_VIEW.Rows(0).Item("FORM_TITLE")
|
|
'ClassDatabase.Return_Datatable("SELECT * FROM TBPMO_FORM_VIEW WHERE FORM_ID = " & ENTITY_ID & " AND SCREEN_ID = " & CURRENT_SCREEN_ID, True)
|
|
|
|
act_FormViewID = DT_TBPMO_FORM_VIEW.Rows(0).Item("GUID")
|
|
|
|
If EDIT_STATE = EditState.None Then
|
|
'Die Controls der Entität laden
|
|
Load_Controls(act_FormViewID)
|
|
If ADD_RECORDS_CONSTR = False Then
|
|
tsButtonAdd.Enabled = False
|
|
Else
|
|
tsButtonAdd.Enabled = True
|
|
End If
|
|
'set_pnlsize()
|
|
End If
|
|
'Überprüfen ob windream Dos angezeigt werden sollen?
|
|
Check_windream_Show(act_FormViewID)
|
|
|
|
If windream_Docshow = True Then
|
|
If TCDetails.SelectedTabPage.Name = "TabWindream" Or (TCDetails.SelectedTabPage.Name = "TabDetails" And DOC_SEARCH_TAB1 = True) Then
|
|
Me.GridControlDocSearch.DataSource = Nothing
|
|
Clear_Windream_ResultList()
|
|
GridControlDocSearch.Visible = True
|
|
End If
|
|
End If
|
|
|
|
If FORM_TYPE = 5 Or IS_SINGLE_RECORD = True Then
|
|
If GET_GROUP_OR_SINGLE_RECORD(PARENT_RECORDID, True) = True Then
|
|
' Laden der Daten bedeutet nicht dass Daten vom Benutzer geändert wurden!
|
|
If IS_SINGLE_RECORD Then
|
|
Show_Selected_Record_Data(RECORD_ID, True)
|
|
Else
|
|
'Refresh_Navpane()
|
|
Update_Record_Label(SELECTED_RECORD_ID)
|
|
End If
|
|
Get_RecordCounts_Nodes()
|
|
End If
|
|
|
|
' Hide_Grid_Columns()
|
|
If FORM_TYPE = 5 Then
|
|
TabDetails.PageVisible = False
|
|
Else
|
|
TabDetails.PageVisible = True
|
|
End If
|
|
|
|
Else
|
|
TabDetails.PageVisible = True
|
|
GridControlMain.Visible = True
|
|
|
|
BarEditItem2.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
bsitmLoadEntity.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
bsitmLoadEntity.Caption = "Loading record-data..."
|
|
If LOCK_CONTROLS_BG_LOAD = True Then
|
|
SplitContainerMain.Panel2.Enabled = False
|
|
End If
|
|
|
|
Try
|
|
Dim async As New ClassAsyncSQL(CURRENT_ENTITYSQL)
|
|
async.bw.RunWorkerAsync()
|
|
While async.bw.IsBusy
|
|
Application.DoEvents()
|
|
End While
|
|
CURRENT_DT_ENTITY_RECORDS = async.dt
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error Async EntitySQL", ex.Message, ex.StackTrace)
|
|
End Try
|
|
|
|
If LOCK_CONTROLS_BG_LOAD = True Then
|
|
SplitContainerMain.Panel2.Enabled = True
|
|
End If
|
|
|
|
BarEditItem2.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
bsitmLoadEntity.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
|
|
If IsNothing(CURRENT_DT_ENTITY_RECORDS) Then
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in getting Entity-Data - Check logfile")
|
|
Else
|
|
CURRENT_DT_ENTITY_RECORDS.TableName = "VWPMO_ENTITY_TABLE" & ENTITY_ID
|
|
' Dim SQL_AutoValues = "SELECT GUID AS CONTROL_ID, CONNECTION_ID_1 AS CONNECTION_ID, SQL_COMMAND_1 AS SQL_COMMAND FROM TBPMO_CONTROL WHERE CONNECTION_ID_1 <> '' AND SQL_COMMAND_1 <> '' AND FORM_ID = " & ENTITY_ID
|
|
|
|
Dim DT_AUTOVALUES = ClassHelper.FILTER_DATATABLE(CURRENT_TBPMO_CONTROL, "CONNECTION_ID_1 > 0 AND SQL_COMMAND_1 <> '' AND FORM_ID = " & ENTITY_ID, "")
|
|
|
|
'Dim DT_AUTOVALUES As DataTable = ClassDatabase.Return_Datatable(SQL_AutoValues, True)
|
|
CURRENT_SQL_AUTO_VALUES_DT = DT_AUTOVALUES
|
|
|
|
If USER_WAN = True Then
|
|
|
|
End If
|
|
Try
|
|
Dim primaryKey(1) As DataColumn
|
|
primaryKey(0) = CURRENT_DT_ENTITY_RECORDS.Columns("Record-ID")
|
|
CURRENT_DT_ENTITY_RECORDS.PrimaryKey = primaryKey
|
|
Catch ex As Exception
|
|
ClassLogger.Add("Could not set the primary Key(Record-ID): " & ex.Message, True)
|
|
End Try
|
|
|
|
|
|
LoadGrid_Records()
|
|
If GRID_TYPE = GridType.Grid Then
|
|
grvwGrid.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.None
|
|
grvwGrid.OptionsBehavior.Editable = False
|
|
grvwGrid.OptionsSelection.EnableAppearanceFocusedCell = False
|
|
grvwGrid.OptionsSelection.EnableAppearanceFocusedRow = False
|
|
grvwGrid.OptionsSelection.EnableAppearanceHideSelection = False
|
|
ElseIf GRID_TYPE = GridType.Carousel Then
|
|
grvwCarousel.OptionsBehavior.Editable = False
|
|
ElseIf GRID_TYPE = GridType.Tiles Then
|
|
grvwTiles.FocusedRowHandle = -1
|
|
grvwTiles.OptionsBehavior.Editable = False
|
|
grvwTiles.FocusedRowHandle = -1
|
|
grvwTiles.OptionsTiles.HighlightFocusedTileOnGridLoad = False
|
|
End If
|
|
Load_Grid_Layout()
|
|
HideColumns()
|
|
|
|
'Überprüfen ob es für diese Entität Wiedervorlagen gibt?
|
|
Check_FOLLOWUP_IsConfigured(ENTITY_ID)
|
|
SET_ROWCOUNT_STRING()
|
|
|
|
End If
|
|
If POS_ENTITY > 0 Then
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
TabDetails.Text = "Head-Data"
|
|
Else
|
|
TabDetails.Text = "Kopfdaten"
|
|
End If
|
|
|
|
TabPos.PageVisible = True
|
|
Else
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
TabDetails.Text = "Details"
|
|
Else
|
|
TabDetails.Text = "Detailansicht"
|
|
End If
|
|
|
|
TabPos.PageVisible = False
|
|
End If
|
|
'Load_Templates()
|
|
|
|
' Hinfällig, da hier die Record-ID nicht gebraucht wird
|
|
CtrlBuilder.WatchRecordChanges = False
|
|
ClassControlValues.LoadControlValuesList(ENTITY_ID, CtrlBuilder.MasterPanel.Controls)
|
|
CtrlBuilder.WatchRecordChanges = True
|
|
|
|
'Zurücksetzen
|
|
ENTITY_LOADING_PROCESS = True
|
|
Dim RecLoaded As Boolean = False
|
|
If LOAD_DIRECT = True Then
|
|
Load_Record_Direct()
|
|
RecLoaded = True
|
|
End If
|
|
If ENTITY_RECORD_COUNT = 1 Then
|
|
If RecLoaded = False Then
|
|
Load_Record_Direct()
|
|
End If
|
|
End If
|
|
If DOC_SEARCH_TAB1 = True Then
|
|
SplitContainerDetails.Collapsed = False
|
|
SplitContainerDetails.PanelVisibility = SplitPanelVisibility.Both
|
|
'ToolStripDokumente.Dock = DockStyle.None
|
|
pnlDocToolStrip.Controls.Add(ToolStripDokumente)
|
|
pnlDocFill.Controls.Add(GridControlDocSearch)
|
|
TabWindream.PageVisible = False
|
|
Load_DocGrid_Layout()
|
|
Else
|
|
SplitContainerDetails.PanelVisibility = SplitPanelVisibility.Panel1
|
|
SplitContainerDetails.Collapsed = True
|
|
'ToolStripDokumente.Dock = DockStyle.None
|
|
TabWindream.Controls.Add(ToolStripDokumente)
|
|
'ToolStripDokumente.Dock = DockStyle.Top
|
|
TabWindream.Controls.Add(GridControlDocSearch)
|
|
TabWindream.PageVisible = True
|
|
End If
|
|
If RIGHT_READ_ONLY_DOC = False Then
|
|
If ACTIVATE_DOC_SEARCH_ON_EDIT = False Then
|
|
Doc_ReadOnlyHandler(False)
|
|
Else
|
|
Doc_ReadOnlyHandler(True)
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
Load_Splitter_Layout()
|
|
sw.Done()
|
|
|
|
If ENTITY_RELOAD_AFT_CONTROL_LOAD = True Then
|
|
Reload_Entity_while_Control_Load()
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in Load_Entity_Data", ex.Message, ex.StackTrace)
|
|
Finally
|
|
'Me.Cursor = Cursors.Default
|
|
ENTITY_LOADING_PROCESS = True
|
|
End Try
|
|
|
|
|
|
End Sub
|
|
Sub Load_Record_Direct()
|
|
Try
|
|
grvwGrid.FocusedRowHandle = 0
|
|
Dim Grid_RecordID = Get_Focused_Row_Cell_Value("Record-ID")
|
|
If Not IsNothing(Grid_RecordID) Then
|
|
Select Case ACT_EBENE
|
|
Case 1
|
|
Column_Row_Handler("Load_Record_Direct")
|
|
'PARENT_RECORDID = Grid_RecordID
|
|
'CURRENT_RECORD_ID = PARENT_RECORDID
|
|
'SELECTED_RECORD_ID = Grid_RecordID
|
|
'RECORD_ID = Grid_RecordID
|
|
'ENTITY_RELOAD_AFT_CONTROL_LOAD = False
|
|
''Daten zu Record in jedem Fall laden
|
|
''ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, ENTITY_ID, CtrlBuilder.AllControls)
|
|
'CtrlBuilder.WatchRecordChanges = False
|
|
'ClassControlValues.LoadControlValuesListWithPlaceholders(ENTITY_ID, Grid_RecordID, PARENT_RECORDID, CtrlBuilder.AllControls, ENTITY_ID)
|
|
'ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, PARENT_RECORDID, ENTITY_ID, CtrlBuilder.AllControls, ENTITY_ID)
|
|
'CtrlBuilder.WatchRecordChanges = True
|
|
'' Laden der Daten bedeutet nicht dass Daten vom Benutzer geändert wurden!
|
|
'RECORD_CHANGED = False
|
|
'Update_Record_Label(Grid_RecordID)
|
|
'Check_Rights()
|
|
End Select
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
Sub Load_Entity_Data_Only()
|
|
Try
|
|
ENTITY_LOADING_PROCESS = False
|
|
Dim DTEntity As DataTable = ClassDatabase.Return_Datatable(CURRENT_ENTITYSQL, True)
|
|
Dim primaryKey(1) As DataColumn
|
|
primaryKey(0) = DTEntity.Columns("Record-ID")
|
|
DTEntity.PrimaryKey = primaryKey
|
|
CURRENT_DT_ENTITY_RECORDS = DTEntity
|
|
LoadGrid_Records()
|
|
Load_Grid_Layout()
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
ENTITY_LOADING_PROCESS = True
|
|
End Sub
|
|
|
|
Sub CreateTile()
|
|
Try
|
|
Dim ImageIndex As Integer = -1
|
|
Dim i As Integer = 0
|
|
Dim j As Integer = 0
|
|
Dim DT As DataTable = DirectCast(CURRENT_DT_ENTITY_RECORDS, DataTable)
|
|
If DT Is Nothing Then
|
|
MsgBox("Daten können nicht geladen werden - Datatable SELECTION is empty", MsgBoxStyle.Critical)
|
|
Exit Sub
|
|
End If
|
|
Dim PrimaryFont As New Font("Segoe UI", 12, FontStyle.Bold)
|
|
Dim SecondaryFont As New Font("Segoe UI", 10)
|
|
Dim WhiteBackground As Color = System.Drawing.Color.FromArgb(230, Color.White)
|
|
|
|
' Datatable laden
|
|
GridControlMain.DataSource = DT
|
|
|
|
grvwTiles.TileTemplate.Clear()
|
|
|
|
For Each Column As DataColumn In DT.Columns
|
|
Dim index As Integer = DT.Columns.IndexOf(Column)
|
|
Dim RECORDID_Column As TileViewItemElement
|
|
Dim ImageColumn As TileViewItemElement
|
|
Dim HeadlineColumn As TileViewItemElement
|
|
Dim TextColumn As TileViewItemElement
|
|
Dim TextHeaderColumn As TileViewItemElement
|
|
|
|
Select Case index
|
|
'Case 0
|
|
' ' RecordId
|
|
' RECORDID_Column = New TileViewItemElement()
|
|
' With RECORDID_Column
|
|
' .Column = grvwTiles.Columns(0)
|
|
' .Column.OptionsFilter.AllowFilter = True
|
|
' .TextAlignment = TileItemContentAlignment.TopLeft
|
|
' End With
|
|
' grvwTiles.TileTemplate.Add(RECORDID_Column)
|
|
Case 1
|
|
' Index 1 ist das Bild
|
|
If Column.DataType.ToString.Contains("Byte") Then
|
|
ImageColumn = New TileViewItemElement()
|
|
With ImageColumn
|
|
.Image = My.Resources.keinbild
|
|
.Column = grvwTiles.Columns(1)
|
|
'.ImageSize = New Size(186, 90)
|
|
.ImageSize = New Size(186, 118)
|
|
.ImageScaleMode = TileItemImageScaleMode.ZoomInside
|
|
.ImageAlignment = TileItemContentAlignment.Manual
|
|
.ImageLocation = New Point(-10, -10)
|
|
End With
|
|
grvwTiles.TileTemplate.Add(ImageColumn)
|
|
End If
|
|
Case 2
|
|
' Index 2 ist die Headline
|
|
HeadlineColumn = New TileViewItemElement()
|
|
With HeadlineColumn
|
|
.Column = grvwTiles.Columns(2)
|
|
.TextAlignment = TileItemContentAlignment.TopRight
|
|
.Appearance.Normal.Font = PrimaryFont
|
|
.Appearance.Normal.ForeColor = Color.DodgerBlue
|
|
.Column.OptionsFilter.AllowFilter = True
|
|
End With
|
|
grvwTiles.TileTemplate.Add(HeadlineColumn)
|
|
Case 3 To 4
|
|
' Indexe 3 und 4 sind normale Textzeilen
|
|
TextColumn = New TileViewItemElement()
|
|
TextHeaderColumn = New TileViewItemElement()
|
|
Dim OffsetIndex = index - 3
|
|
|
|
With TextHeaderColumn
|
|
.Text = Column.ColumnName
|
|
.TextAlignment = TileItemContentAlignment.Manual
|
|
.TextLocation = New Point(120, 20 + (OffsetIndex * 40))
|
|
.Appearance.Normal.Font = SecondaryFont
|
|
.Appearance.Normal.ForeColor = Color.DarkGray
|
|
.Appearance.Normal.BackColor = WhiteBackground
|
|
End With
|
|
|
|
With TextColumn
|
|
.Column = grvwTiles.Columns(index)
|
|
.TextAlignment = TileItemContentAlignment.Manual
|
|
.TextLocation = New Point(120, 20 + 18 + (OffsetIndex * 40))
|
|
.Appearance.Normal.Font = SecondaryFont
|
|
.Appearance.Normal.ForeColor = Color.Black
|
|
.Appearance.Normal.BackColor = WhiteBackground
|
|
End With
|
|
|
|
grvwTiles.TileTemplate.Add(TextHeaderColumn)
|
|
grvwTiles.TileTemplate.Add(TextColumn)
|
|
End Select
|
|
Next
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
End Try
|
|
|
|
|
|
End Sub
|
|
Sub Lock_RecordControls(state As Boolean)
|
|
Lock_Record_Controls_Recursive(state, pnlDetails.Controls)
|
|
End Sub
|
|
Private Function CHECK_CONTROL_CONFIGURED_RO(CONTROL_ID As Integer, state As Boolean)
|
|
Try
|
|
' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
|
|
Dim result1 = (From form In DT_CONTROLS_ENTITY.AsEnumerable()
|
|
Select form
|
|
Where form.Item("CONTROL_ID") = CONTROL_ID).Single()
|
|
Dim locked = result1.Item("CONTROL_READ_ONLY")
|
|
If state = False And locked = True Then
|
|
state = True
|
|
End If
|
|
Return state
|
|
Catch ex As Exception
|
|
Return state
|
|
End Try
|
|
End Function
|
|
Sub Lock_Record_Controls_Recursive(state As Boolean, controls As System.Windows.Forms.Control.ControlCollection)
|
|
For Each Control As System.Windows.Forms.Control In controls
|
|
Dim controlId As Integer = DirectCast(Control.Tag, ClassControlMetadata).Id
|
|
Select Case Control.GetType()
|
|
Case GetType(System.Windows.Forms.GroupBox)
|
|
Lock_Record_Controls_Recursive(state, DirectCast(Control, GroupBox).Controls)
|
|
Case GetType(System.Windows.Forms.TextBox)
|
|
Dim txt As TextBox = CType(Control, TextBox)
|
|
txt.ReadOnly = CHECK_CONTROL_CONFIGURED_RO(controlId, state)
|
|
Case Else
|
|
Control.Enabled = Not CHECK_CONTROL_CONFIGURED_RO(controlId, state) 'state
|
|
|
|
End Select
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub Check_Record_Changed()
|
|
If EDIT_STATE <> EditState.None Then
|
|
Update_Status_Label(False, "")
|
|
EDIT_STATE = EditState.None
|
|
End If
|
|
|
|
If RECORD_CHANGED = True Then
|
|
Dim msg = "Sie haben ungespeicherte Änderungen. Wollen Sie diese speichern?"
|
|
Dim msg1 = "Ungespeicherte Änderungen"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "There are unsaved changes. Would You like to save?"
|
|
msg1 = "Unsaved changes"
|
|
End If
|
|
Dim result As DialogResult = MessageBox.Show(msg, msg1, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result = System.Windows.Forms.DialogResult.Yes Then
|
|
If CtrlCommandUI.IsInsert = True Then
|
|
EDIT_STATE = EditState.None
|
|
Lock_RecordControls(True)
|
|
End If
|
|
Try
|
|
Dim ResultMessage = Update_Record_OnChange()
|
|
If ResultMessage <> "ERROR" Then
|
|
Update_Status_Label(True, ResultMessage)
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Save Record Changes: " & ex.Message, ex.StackTrace)
|
|
End Try
|
|
Else
|
|
If CtrlCommandUI.IsInsert = True Then ' Wenn nicht gespeichert werden soll, den Record wieder löschen
|
|
ClassHelper.DeleteRecord(SELECTED_RECORD_ID, "USER DECIDED NOT TO SAVE")
|
|
End If
|
|
If ADD_RECORDS_CONSTR = False Then
|
|
tsButtonAdd.Enabled = False
|
|
Else
|
|
tsButtonAdd.Enabled = True
|
|
End If
|
|
End If
|
|
CtrlCommandUI.IsEdit = False
|
|
CtrlCommandUI.IsInsert = False
|
|
INSERT_IN_ACTION = False
|
|
RECORD_CHANGED = False
|
|
End If
|
|
End Sub
|
|
Private Function GET_GROUP_OR_SINGLE_RECORD(PARENT_RECORD_ID As Integer, Entityload As Boolean)
|
|
'Dim sqlRecord As String = String.Format("SELECT T.RECORD2_ID FROM TBPMO_RECORD_CONNECT T, TBPMO_RECORD T1 WHERE T.RECORD2_ID = T1.GUID AND T.RECORD1_ID = {0} AND T1.ENTITY_ID = (SELECT PARENT_ID FROM TBPMO_FORM WHERE GUID = {1})", LINKED_RECORD, ENTITY_ID)
|
|
Dim sql As String = String.Format("SELECT T.RECORD2_ID FROM TBPMO_RECORD_CONNECT T, TBPMO_RECORD T1 WHERE T.RECORD2_ID = T1.GUID AND T.RECORD1_ID = {0} and T1.FORM_ID = {1}", PARENT_RECORD_ID, ENTITY_ID)
|
|
Dim GRP_SINGLE_REC = ClassDatabase.Execute_Scalar(sql, True)
|
|
If IsNothing(GRP_SINGLE_REC) Then
|
|
|
|
Dim recordId = ClassRecordCommands.CreateRecordProcedure(ENTITY_ID)
|
|
|
|
If recordId > 0 Then
|
|
GRP_SINGLE_REC = recordId
|
|
If Not IsNothing(GRP_SINGLE_REC) Then
|
|
'Die neue Record-ID setzen
|
|
RECORD_ID = GRP_SINGLE_REC
|
|
SELECTED_RECORD_ID = RECORD_ID
|
|
ClassProxy.PRPROXY_RECORD_UPD_INS(CURRENT_ENTITY_ID, SELECTED_RECORD_ID)
|
|
If ClassRecordCommands.ConnectRecord(PARENT_RECORD_ID, RECORD_ID, "PARENT_LINK (Group/Single-Record) for Entity " & ENTITY_ID.ToString) = False Then
|
|
MsgBox("Unexpected Error in Connecting Record. Check log", MsgBoxStyle.Critical)
|
|
Return False
|
|
Else
|
|
ClassProxy.PRPROXY_RECORD_CONNECT(PARENT_RECORDID, RECORD_ID)
|
|
End If
|
|
Else
|
|
Return False
|
|
End If
|
|
Else
|
|
Return False
|
|
End If
|
|
Else
|
|
Try
|
|
RECORD_ID = CInt(GRP_SINGLE_REC)
|
|
SELECTED_RECORD_ID = RECORD_ID
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in getting CURRENT_RECORDID FOR PARENT_ID: " & ex.Message, ex.StackTrace)
|
|
Return False
|
|
End Try
|
|
End If
|
|
|
|
Select Case ACT_EBENE '#### Hier muss nun der Parent-Record gesetzt werden ####
|
|
Case 1
|
|
EBENE1_RECID = RECORD_ID
|
|
Case 2
|
|
EBENE2_RECID = RECORD_ID
|
|
Case 3
|
|
EBENE3_RECID = RECORD_ID
|
|
End Select
|
|
Return True
|
|
End Function
|
|
|
|
Private Function GET_LINKED_RECORD(RECORDID As Integer, ENTITY_ID As Integer)
|
|
Try
|
|
Dim ENTITY_ROW = (From form In DT_ENTITY_DATA.AsEnumerable()
|
|
Select form
|
|
Where form.Item("GUID") = ENTITY_ID).Single()
|
|
|
|
'Je nach der Ebene muss evtl die übergeordnete Entität ausgelesen werden
|
|
Select Case ACT_EBENE
|
|
Case 2
|
|
Dim sql As String = String.Format("SELECT T.RECORD2_ID FROM TBPMO_RECORD_CONNECT T, TBPMO_RECORD T1 WHERE T.RECORD2_ID = T1.GUID AND T.RECORD1_ID = {0} and T1.FORM_ID = {1}", RECORDID, ENTITY_ID)
|
|
Dim PARENT_RECORD1 = ClassDatabase.Execute_Scalar(sql, True)
|
|
If IsNothing(PARENT_RECORD1) Then
|
|
Dim New_Record = ClassRecordCommands.GetLastRecord
|
|
If Not IsNothing(New_Record) Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Parent-Record Ebene 1 wird neu angelegt...", False)
|
|
'Die neue Record-ID setzen
|
|
ClassRecordCommands.ConnectRecord(New_Record, RECORDID, "PARENT-LINK FOR ENTITY " & ENTITY_ID & "")
|
|
Return New_Record
|
|
Else
|
|
Return 0
|
|
End If
|
|
Else
|
|
Return PARENT_RECORD1
|
|
End If
|
|
Case 3
|
|
Dim Parent_EntityID = ENTITY_ROW.Item("PARENT_ID") 'ClassDatabase.Execute_Scalar(sqlp, True)
|
|
Dim sql As String = String.Format("SELECT T.RECORD2_ID FROM TBPMO_RECORD_CONNECT T, TBPMO_RECORD T1 WHERE T.RECORD2_ID = T1.GUID AND T.RECORD1_ID = (SELECT T.RECORD2_ID FROM TBPMO_RECORD_CONNECT T, TBPMO_RECORD T1 WHERE " &
|
|
"T.RECORD2_ID = T1.GUID AND T.RECORD1_ID = {0} and T1.FORM_ID = {1}) and T1.FORM_ID = {2}", RECORDID, Parent_EntityID, ENTITY_ID)
|
|
Dim PARENT_RECORD2 = ClassDatabase.Execute_Scalar(sql, True)
|
|
If IsNothing(PARENT_RECORD2) Then
|
|
Dim New_Record = ClassRecordCommands.GetLastRecord
|
|
If Not IsNothing(New_Record) Then
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> Parent-Record Ebene 1 wird neu angelegt...", False)
|
|
'Die neue Record-ID setzen
|
|
ClassRecordCommands.ConnectRecord(New_Record, RECORDID, "PARENT-LINK FOR ENTITY " & ENTITY_ID & "")
|
|
Return New_Record
|
|
Else
|
|
Return 0
|
|
End If
|
|
Else
|
|
Return PARENT_RECORD2
|
|
End If
|
|
End Select
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", ex.Message, ex.StackTrace)
|
|
Return 0
|
|
End Try
|
|
End Function
|
|
Private Function LoadGrid_Records()
|
|
Try
|
|
If GRID_TYPE = GridType.Tiles Then
|
|
CreateTile()
|
|
Else
|
|
'Grid leeren
|
|
Clear_Grid_View()
|
|
|
|
Dim gridFormatter As New ClassGridFormatter.ConstructorView(CURRENT_DT_ENTITY_RECORDS, ENTITY_ID)
|
|
Dim DT_RESULT As DataTable = gridFormatter.FormatDatatable()
|
|
GridControlMain.DataSource = DT_RESULT
|
|
gridFormatter.FormatGridView(grvwGrid)
|
|
|
|
Try
|
|
grvwGrid.Columns("AddedWhen").DisplayFormat.FormatType = FormatType.DateTime
|
|
grvwGrid.Columns("AddedWhen").DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss"
|
|
grvwGrid.Columns("ChangedWhen").DisplayFormat.FormatType = FormatType.DateTime
|
|
grvwGrid.Columns("ChangedWhen").DisplayFormat.FormatString = CURRENT_DATE_FORMAT & " HH:MM:ss"
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
'Try
|
|
' Dim chkRep As New DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit
|
|
' grvwGrid.GridControl.RepositoryItems.Add(chkRep)
|
|
' grvwGrid.Columns("files?").ColumnEdit = chkRep
|
|
'Catch ex As Exception
|
|
' ClassLogger.Add(">> Attention: Column files? not existing in GridView?", False)
|
|
'End Try
|
|
'grvwGrid.Columns("Record-ID").OptionsColumn.AllowShowHide = False
|
|
End If
|
|
|
|
HideColumns()
|
|
If NODE_NAVIGATION = False Then
|
|
Dim selnode As TreeNode = TreeViewMain.SelectedNode
|
|
Dim origtext As String = selnode.Text
|
|
If origtext.Contains(" (") Then
|
|
Dim existingstring = origtext.Substring(0, origtext.IndexOf("(") - 1)
|
|
selnode.Text = String.Format("{0} ({1})", existingstring, Get_Grid_Row_Count())
|
|
Else
|
|
selnode.Text = String.Format("{0} ({1})", selnode.Text, Get_Grid_Row_Count())
|
|
End If
|
|
Dim msg = "Anzahl Datensätze: "
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "number of records: "
|
|
End If
|
|
bStaticItem1.Caption = msg & Get_Grid_Row_Count()
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error in LoadGrid_Records", ex.Message, ex.StackTrace)
|
|
Return False
|
|
End Try
|
|
|
|
Return True
|
|
End Function
|
|
Sub HideColumns()
|
|
Try
|
|
' Presuming the DataTable has a column named FORM_ID
|
|
Dim expression As String
|
|
expression = "FORM_ID = " & ENTITY_ID
|
|
Dim foundRowsLevel0() As DataRow
|
|
' Use the Select method to find all rows matching the filter.
|
|
foundRowsLevel0 = DT_CONTROL_SCREEN_SHOW_COL_0.Select(expression)
|
|
Dim i As Integer
|
|
|
|
' Dim DT As DataTable = ClassDatabase.Return_Datatable(SQL)
|
|
If GRID_TYPE = GridType.Grid Then
|
|
Dim cols As DevExpress.XtraGrid.Columns.GridColumnCollection = grvwGrid.Columns
|
|
|
|
'If DT.Rows.Count <> 0 Then
|
|
' ' Alle Spalten, die ausgeblendet werden sollten durchgehen und Visible = False
|
|
' For Each row As DataRow In DT.Rows
|
|
' Dim colname As String = row.Item("CONTROL_COL_NAME")
|
|
' Dim col As DevExpress.XtraGrid.Columns.GridColumn = grvwGrid.Columns.Item(colname)
|
|
' If Not IsNothing(col) Then
|
|
' col.Visible = False
|
|
' End If
|
|
' Next
|
|
'End If
|
|
' For each row create a Node
|
|
For i = 0 To foundRowsLevel0.GetUpperBound(0)
|
|
Dim colname As String = foundRowsLevel0(i)("CONTROL_COL_NAME")
|
|
Dim col As DevExpress.XtraGrid.Columns.GridColumn = grvwGrid.Columns.Item(colname)
|
|
If Not IsNothing(col) Then
|
|
col.Visible = False
|
|
End If
|
|
Next
|
|
' FormID und RecordID immer ausblenden
|
|
grvwGrid.Columns.Item("Record-ID").Visible = False
|
|
Try
|
|
grvwGrid.Columns.Item("Form-ID").Visible = False
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
grvwGrid.Columns.Item("ROW_COLOR").Visible = False
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in HideColumns: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
Sub HideColumns_Pos(EntityID As Integer)
|
|
Try
|
|
'Dim SQL As String = "SELECT CONTROL_ID, CONTROL_COL_NAME, CONTROL_SHOW_COLUMN FROM VWPMO_CONTROL_SCREEN WHERE CONTROL_SHOW_COLUMN = 0 AND FORM_ID = " & EntityID
|
|
Dim DT As DataTable = ClassHelper.FILTER_DATATABLE(DT_VWPMO_CONTROL_SCREEN, "CONTROL_SHOW_COLUMN = 0 AND FORM_ID = " & EntityID, "") 'ClassDatabase.Return_Datatable(SQL, True)
|
|
Dim cols As DevExpress.XtraGrid.Columns.GridColumnCollection = grvwGridPos.Columns
|
|
|
|
If DT.Rows.Count <> 0 Then
|
|
' Alle Spalten, die ausgeblendet werden sollten durchgehen und Visible = False
|
|
For Each row As DataRow In DT.Rows
|
|
Dim colname As String = row.Item("CONTROL_COL_NAME")
|
|
Dim col As DevExpress.XtraGrid.Columns.GridColumn = grvwGridPos.Columns.Item(colname)
|
|
|
|
If Not IsNothing(col) Then
|
|
col.Visible = False
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
' FormID und RecordID immer ausblenden
|
|
grvwGridPos.Columns.Item("Record-ID").Visible = False
|
|
grvwGridPos.Columns.Item("Form-ID").Visible = False
|
|
grvwGridPos.Columns.Item("ROW_COLOR").Visible = False
|
|
Try
|
|
grvwGridPos.Columns.Item("files?").Visible = False
|
|
grvwGridPos.Columns.Item("file count").Visible = False
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in HideColumns_Pos: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
Private Sub Show_Selected_Record_Data(Rec_ID As Integer, EntityLoad As Boolean)
|
|
Try
|
|
Dim ENTITY_ROW = (From form In DT_ENTITY_DATA.AsEnumerable()
|
|
Select form
|
|
Where form.Item("GUID") = ENTITY_ID).Single()
|
|
|
|
Update_Status_Label(False, "")
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> GRID_RECORD ID: " & Rec_ID.ToString, False)
|
|
'Me.pnlDetails.Visible = True
|
|
If FORM_TYPE = 5 And EntityLoad = False Or IS_SINGLE_RECORD = True And EntityLoad = False Then '#### Es sind untergeordnete Entitäten geöffnet####
|
|
Dim linkedRecord
|
|
' Dim pID As Integer
|
|
Select Case ACT_EBENE '#### Hier muss nun der Parent-Record gewählt werden ####
|
|
Case 3
|
|
linkedRecord = GET_LINKED_RECORD(Rec_ID, ENTITY_ID)
|
|
If linkedRecord > 0 Then
|
|
Dim Parent_EntityID = ENTITY_ROW.Item("PARENT_ID")
|
|
Dim sql As String = String.Format("SELECT T.RECORD2_ID FROM TBPMO_RECORD_CONNECT T, TBPMO_RECORD T1 WHERE T.RECORD2_ID = T1.GUID AND T.RECORD1_ID = {0} and T1.FORM_ID = {1}", RECORD_ID, Parent_EntityID)
|
|
Dim PARENT_RECORD1 = ClassDatabase.Execute_Scalar(sql, True)
|
|
|
|
EBENE2_RECID = PARENT_RECORD1
|
|
PARENT_RECORDID = PARENT_RECORD1
|
|
CURRENT_PARENT_RECORD_ID = PARENT_RECORDID
|
|
|
|
End If
|
|
Case 2
|
|
linkedRecord = GET_LINKED_RECORD(Rec_ID, ENTITY_ID)
|
|
If linkedRecord > 0 Then
|
|
EBENE1_RECID = Rec_ID
|
|
PARENT_RECORDID = EBENE1_RECID
|
|
CURRENT_PARENT_RECORD_ID = PARENT_RECORDID
|
|
End If
|
|
Case 1
|
|
PARENT_RECORDID = Rec_ID
|
|
EBENE1_RECID = PARENT_RECORDID
|
|
CURRENT_PARENT_RECORD_ID = PARENT_RECORDID
|
|
End Select
|
|
RECORD_ID = CInt(linkedRecord)
|
|
SELECTED_RECORD_ID = RECORD_ID
|
|
'#### Den Group or Single_Record holen/anlegen
|
|
' GET_GROUP_OR_SINGLE_RECORD(pID, False)
|
|
Else '#### Datensatz wird normal geladen ####
|
|
SELECTED_RECORD_ID = Rec_ID
|
|
RECORD_ID = SELECTED_RECORD_ID
|
|
'Die aktuelle Ebene überprüfen und den Datensatz übergeben, ebenso den PARENT-Record setzen
|
|
Select Case ACT_EBENE
|
|
Case 1
|
|
PARENT_RECORDID = RECORD_ID
|
|
EBENE1_RECID = PARENT_RECORDID
|
|
CURRENT_PARENT_RECORD_ID = PARENT_RECORDID
|
|
If Not EBENE1_COLUMNNAME Is Nothing Then
|
|
EBENE1_GRID_RESULT = Get_GridResult(EBENE1_COLUMNNAME)
|
|
End If
|
|
Case 2
|
|
EBENE2_RECID = SELECTED_RECORD_ID
|
|
If Not EBENE2_COLUMNNAME Is Nothing Then
|
|
EBENE2_GRID_RESULT = Get_GridResult(EBENE2_COLUMNNAME)
|
|
End If
|
|
If EBENE1_RECID > 0 Then
|
|
PARENT_RECORDID = EBENE1_RECID
|
|
CURRENT_PARENT_RECORD_ID = PARENT_RECORDID
|
|
Else
|
|
CURRENT_PARENT_RECORD_ID = PARENT_RECORDID
|
|
End If
|
|
Case 3
|
|
EBENE3_RECID = SELECTED_RECORD_ID
|
|
If Not EBENE3_COLUMNNAME Is Nothing Then
|
|
EBENE3_GRID_RESULT = Get_GridResult(EBENE3_COLUMNNAME)
|
|
End If
|
|
If EBENE2_RECID > 0 Then
|
|
PARENT_RECORDID = EBENE2_RECID
|
|
CURRENT_PARENT_RECORD_ID = PARENT_RECORDID
|
|
End If
|
|
End Select
|
|
End If
|
|
RIGHT_CONTROL_CHANGED = False
|
|
Select Case TCDetails.SelectedTabPage.Name
|
|
Case "TabDetails"
|
|
ENTITY_RELOAD_AFT_CONTROL_LOAD = False
|
|
CtrlBuilder.WatchRecordChanges = False
|
|
ClassControlValues.LoadControlValues(SELECTED_RECORD_ID, PARENT_RECORDID, ENTITY_ID, CtrlBuilder.AllControls, ENTITY_ID)
|
|
CtrlBuilder.WatchRecordChanges = True
|
|
|
|
If windream_Docshow = True Then
|
|
Dim stg As String = "Dateien"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
stg = "files"
|
|
End If
|
|
TabWindream.Text = stg
|
|
End If
|
|
Dim sel = String.Format("SELECT * FROM TBPMO_RECORD WHERE RECORD_ENTITY_ID = (SELECT RECORD_ENTITY_ID FROM TBPMO_RECORD WHERE GUID = {0}) AND FORM_ID = {1} AND GUID <> {2} AND DELETED = 0", SELECTED_RECORD_ID, ENTITY_ID, SELECTED_RECORD_ID)
|
|
Dim DT_VARIANT As DataTable = ClassDatabase.Return_Datatable(sel, True)
|
|
If DT_VARIANT.Rows.Count > 0 Then
|
|
TabPageVariant.PageVisible = True
|
|
Dim msg = "Vorgängervarianten"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Pre variants"
|
|
End If
|
|
|
|
TabPageVariant.Text = String.Format(msg & " ({0})", DT_VARIANT.Rows.Count)
|
|
Else
|
|
TabPageVariant.PageVisible = False
|
|
End If
|
|
If DOC_SEARCH_TAB1 = True Then
|
|
DocSearch_Decision()
|
|
End If
|
|
|
|
Case "TabWindream"
|
|
DocSearch_Decision()
|
|
Case "TabFollowUp"
|
|
tsButtonEdit.Enabled = False
|
|
Refresh_FollowUps()
|
|
dtpFollowUp.Enabled = False
|
|
lblWiedervorlage_Control.Text = "<< Waiting for Selection:"
|
|
'ListBoxUser2Profile.Items.Clear()
|
|
grpbxFU_Profile.Enabled = False
|
|
End Select
|
|
Dim sw As New SW("Show Selected RecordData 2")
|
|
' Laden der Daten bedeutet nicht dass Daten vom Benutzer geändert wurden!
|
|
RECORD_CHANGED = False
|
|
'Refresh_Navpane()
|
|
Update_Record_Label(SELECTED_RECORD_ID)
|
|
Show_act_WFTask()
|
|
|
|
RECORD_ID = SELECTED_RECORD_ID
|
|
sw.Done()
|
|
|
|
If ENTITY_RELOAD_AFT_CONTROL_LOAD = True Then
|
|
Reload_Entity_while_Control_Load()
|
|
End If
|
|
'tsstatus_Detail_show(False, "")
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in SelectedRecord_ShowData: ", ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
Sub DocSearch_Decision()
|
|
If RECORD_ID = 0 Then
|
|
'RUN_WD_SEARCH(WD_Suche, "ENTITY")
|
|
RUN_WDSEARCH_GRID()
|
|
Else
|
|
RUN_WDSEARCH_GRID()
|
|
' RUN_WD_SEARCH(WD_Suche, "RECORD")
|
|
End If
|
|
End Sub
|
|
Sub Reload_Entity_while_Control_Load()
|
|
Dim result As MsgBoxResult
|
|
Dim stg As String
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
stg = "Es gab ein unerwartetes Problem beim Laden der Control-Values! Wollen Sie versuchen die Daten erneut zu laden?" & vbNewLine & "'Nein' beendet die Sicht für einen manuellen Neustart!"
|
|
Else
|
|
stg = "ADDI encountered an unexpected error while loading the control values for the record! Do You want to try to relaod the entity data?" & vbNewLine & "No is terminating the entity-form to restart it manually!"
|
|
End If
|
|
result = MessageBox.Show(stg, "Confirmation needed:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result = MsgBoxResult.Yes Then
|
|
Load_Datafor_Entity(False)
|
|
Else
|
|
Me.Close()
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Sub Load_Pos_Data()
|
|
Try
|
|
If POS_ENTITY > 0 Then
|
|
Get_Pos_SQL(POS_ENTITY)
|
|
POS_SQL = POS_SQL.Replace("@PARENT_ID", PARENT_RECORDID)
|
|
Dim DT_POS As DataTable = ClassDatabase.Return_Datatable(POS_SQL, True)
|
|
|
|
Clear_GridPos_View()
|
|
If Not IsNothing(DT_POS) Then
|
|
GridControlPos.DataSource = DT_POS
|
|
Dim bs As New BindingSource
|
|
bs.DataSource = DT_POS
|
|
BindingNavigatorPOS.BindingSource = bs
|
|
' --- Editoren laden ---
|
|
ClassPosGrid.FormatColumns(grvwGridPos, POS_ENTITY)
|
|
'ClassPosGrid.CreateComboEditor(grvwGridPos, POS_ENTITY)
|
|
'HideColumns_Pos(PARENT_RECORDID)
|
|
End If
|
|
|
|
Load_POSGrid_Layout()
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Load_Pos_Data: ", ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
Function Get_GridResult(Columnname As String)
|
|
Dim result = Get_Focused_Row_Cell_Value(Columnname)
|
|
Dim str = String.Empty
|
|
|
|
If DT_VWPMO_CONSTRUCTOR_FORMS.Rows.Count >= 3 Then
|
|
str &= System.Text.RegularExpressions.Regex.Replace(ACT_EBENE_STRING, "\s\(\d+\)", "")
|
|
str &= " - "
|
|
End If
|
|
|
|
If IsDBNull(result) OrElse result = "" Then
|
|
str &= "No Column configured"
|
|
Else
|
|
str &= result
|
|
End If
|
|
|
|
Return str
|
|
End Function
|
|
|
|
Function GetSelected_RecordID()
|
|
Try
|
|
If Get_Grid_Column_Count() = 0 Then
|
|
Lock_RecordControls(True)
|
|
' Me.pnlDetails.Enabled = False
|
|
'Me.tsbtnshowWorkflowtasks.Enabled = False
|
|
'tsstatus_Detail_show(True, "Keine Columns in Grid")
|
|
Return Nothing
|
|
End If
|
|
'Überhaupt Rows in Grid?
|
|
If Get_Grid_Row_Count() > 0 Then
|
|
Dim Grid_RecordID = Get_Focused_Row_Cell_Value("Record-ID")
|
|
If Grid_RecordID Is Nothing = False Then
|
|
Return Grid_RecordID
|
|
Else
|
|
'tsstatus_Detail_show(True, "Grid_RecordID konnte nicht gewählt werden!")
|
|
'ClassLogger.Add(">> Grid_RecordID konnte nicht gewählt werden - SelectedRecord_ShowData", True)
|
|
Return Nothing
|
|
End If
|
|
Else
|
|
Return Nothing
|
|
End If
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End Function
|
|
Private Sub Refresh_FollowUp_TabHeader()
|
|
Try
|
|
DT_FU_Record = ClassDatabase.Return_Datatable("select * from VWPMO_FOLLOW_UP_EMAIL_ENTITY_RECORD where Record_ID = " & RECORD_ID)
|
|
Dim msg As String = "Wiedervorlage (Nicht Abrufbar)"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Follow Up - (Not accessable)"
|
|
End If
|
|
If IsNothing(DT_FU_Record) Then
|
|
TabFollowUp.Text = msg
|
|
Exit Sub
|
|
End If
|
|
If DT_FU_Record.Rows.Count = 0 Then
|
|
msg = "Wiedervorlage (Nicht aktiviert)"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Follow Up - (Not activated)"
|
|
End If
|
|
TabFollowUp.Text = msg
|
|
Else
|
|
msg = "Wiedervorlage (Aktive Profile)"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Follow Up - (active profiles)"
|
|
End If
|
|
TabFollowUp.Text = msg
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Refresh_FollowUp_TabHeader: ", ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Private Function Update_Record_OnChange() As String
|
|
' Überprüfen, ob alle "Required Felder ausgefüllt wurden"
|
|
|
|
Dim missingControlValues As List(Of String) = ClassControlValues.CheckRequiredControlValues(CtrlBuilder.MasterPanel.Controls)
|
|
If missingControlValues.Count > 0 Then
|
|
|
|
Dim nameString As String = String.Join(vbNewLine, missingControlValues)
|
|
Dim msg = String.Format("Die folgenden Steuerelemente müssen ausgefüllt sein: {0}{1}", vbNewLine, nameString)
|
|
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = String.Format("the following controls must be filled with values: {0}{1}", vbNewLine, nameString)
|
|
End If
|
|
Dim errorMessage As String = msg
|
|
|
|
' Das erste fehlende Control in den Fokus nehmen
|
|
Dim firstControlName = missingControlValues.First()
|
|
Focus_Control(firstControlName)
|
|
|
|
Throw New Exception(errorMessage)
|
|
End If
|
|
|
|
' Record Speichern
|
|
Dim ResultMessage = CtrlCommandUI.SaveRecord(SELECTED_RECORD_ID, ENTITY_ID, PARENT_RECORDID)
|
|
'Jetzt die für die Entität notwendigen Prroceduren ausführen
|
|
Customer_Run_Procedures()
|
|
|
|
RECORD_CHANGED = False
|
|
|
|
Return ResultMessage
|
|
End Function
|
|
|
|
Private Sub Customer_Run_Procedures()
|
|
Try
|
|
Dim DT As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBPMO_RUN_PROCEDURES WHERE FORM_ID = " & ENTITY_ID)
|
|
If Not DT Is Nothing Then
|
|
For Each row As DataRow In DT.Rows
|
|
Dim prsql As String = row.Item("EXECUTE_COMMAND")
|
|
prsql = prsql.ToUpper.Replace("@FORM_ID", ENTITY_ID)
|
|
prsql = prsql.ToUpper.Replace("@ENTITY_ID", ENTITY_ID)
|
|
prsql = prsql.ToUpper.Replace("@RECORD_ID", RECORD_ID)
|
|
ClassDatabase.Execute_non_Query(prsql)
|
|
Next
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Customer_Run_Procedures: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
#Region "WindreamSuche"
|
|
Private Sub Check_windream_Show(FORM_VIEW_ID As Integer)
|
|
Try
|
|
|
|
'Dim DTWD As DataTable = ClassDatabase.Return_Datatable(sql)
|
|
Dim wdsearch = DT_TBPMO_FORM_VIEW.Rows(0).Item("DOCUMENT_VIEW")
|
|
If CBool(wdsearch) = False Then
|
|
windream_Docshow = False
|
|
TabWindream.PageVisible = False
|
|
tsbtnDoc_Refresh.Enabled = False
|
|
tsmiFilesearch.Enabled = False
|
|
Exit Sub
|
|
Else
|
|
TabWindream.PageVisible = True
|
|
tsbtnDoc_Refresh.Enabled = True
|
|
tsmiFilesearch.Enabled = True
|
|
windream_Docshow = True
|
|
If windream_inited = False Then
|
|
Dim sw As New SW("Check_windream_Show")
|
|
|
|
Try
|
|
If clsWindream.Create_Session = True Then
|
|
windream_inited = True
|
|
End If
|
|
Catch ex As Exception
|
|
windream_inited = False
|
|
End Try
|
|
|
|
sw.Done()
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Check windream show: ", ex.Message)
|
|
windream_Docshow = False
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Private Sub WD_DELETE_DOCS(DT_RESULT As DataTable)
|
|
Dim sw As New SW("WD_DELETE_DOCS")
|
|
' Dim Basesearch As String
|
|
Try
|
|
If Not IsNothing(DT_RESULT) Then
|
|
|
|
|
|
If DT_RESULT.Rows.Count > 0 Then 'Es gibt Suchergebnisse
|
|
Dim msg As String
|
|
msg = "Wollen Sie die zugehörigen Dateien (" & DT_RESULT.Rows.Count.ToString & ") ebenfalls löschen?"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Do You want to delete the related files (" & DT_RESULT.Rows.Count.ToString & ")?"
|
|
End If
|
|
Dim result1 As MsgBoxResult
|
|
result1 = MessageBox.Show(msg, "Confirmation:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result1 = MsgBoxResult.Yes Then
|
|
For Each row As DataRow In DT_RESULT.Rows
|
|
Dim DOC_ID = row.Item(0)
|
|
Dim path
|
|
Try
|
|
path = row.Item(1)
|
|
Catch ex As Exception
|
|
path = row.Item(1)
|
|
End Try
|
|
If Not IsNothing(path) Then
|
|
Dim Count As Integer = ClassDatabase.Execute_Scalar("SELECT COUNT(GUID) FROM TBPMO_DOC_RECORD_LINK WHERE DOC_ID = " & DOC_ID, True)
|
|
If Count > 1 Then
|
|
msg = "Diese Datei ist noch mit anderen Datensätzen verknüpft! Lediglich die Verknüpfung zum aktuellen Datensatz wird gelöscht!"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "This file is also linked to other records! Only the link for this Record will be deleted!"
|
|
End If
|
|
MsgBox(msg, MsgBoxStyle.Information)
|
|
ClassFileResult.Delete_ResultFile(DOC_ID, RECORD_ID, 0)
|
|
Else
|
|
If ClassFileResult.Delete_ResultFile(DOC_ID, RECORD_ID, 1) = False Then
|
|
msg = String.Format("Die Datei {0} konnte nicht gelöscht werden! Prüfen Sie die logfile!", path)
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = String.Format("The file {0} could not be deleted! Check the logfile!", path)
|
|
End If
|
|
MsgBox(msg, MsgBoxStyle.Critical, "Attention:")
|
|
Else
|
|
If clsWD_SET.Delete_WDFile(path) Then
|
|
ClassHelper.InsertEssential_Log(DOC_ID, "DOC-ID", "FILE DELETED BY USER")
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
Next
|
|
End If
|
|
End If
|
|
Else
|
|
ClassLogger.Add(">> No files 2 delete - after deleting record!", False)
|
|
End If
|
|
Cursor = Cursors.Default
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in WD-Delete Docs: ", ex.Message)
|
|
End Try
|
|
sw.Done()
|
|
Cursor = Cursors.Default
|
|
End Sub
|
|
Private Sub RUN_ENTITY_DOC_SEARCH()
|
|
Dim sw As New SW("RUN_ENTITY_DOC_SEARCH")
|
|
Try
|
|
Dim oSQL = $"SELECT ENTITY_DOC_SEARCH FROM TBPMO_FORM WHERE GUID = {ENTITY_ID}"
|
|
CURRENT_DOCSEARCH_SQL = ClassDatabase.Execute_Scalar(oSQL, True)
|
|
Dim oText = $"Die Entität-weite Suche wird im Hintergrund ausgeführt und angezeigt sobald sie fertig ist."
|
|
If USER_LANGUAGE <> "de-De" Then
|
|
oText = $"The entity-wide search will be started in background. The result will be displayed when ready."
|
|
End If
|
|
MsgBox(oText, vbOKOnly, "Information")
|
|
|
|
|
|
If CURRENT_DOCSEARCH_SQL = "" Then
|
|
CURRENT_DOCSEARCH_SQL = String.Format("SELECT DISTINCT T.* " & vbNewLine &
|
|
"FROM " & vbNewLine &
|
|
"VWPMO_DOC_SEARCH T" & vbNewLine &
|
|
"WHERE T.DocID IN (select DISTINCT T.DOC_ID from TBPMO_DOC_RECORD_LINK T, TBPMO_RECORD T1 WHERE T.RECORD_ID = T1.GUID AND T1.FORM_ID = {0}) " & vbNewLine &
|
|
"AND T.DocID IN (SELECT dwObjectID FROM VWPMO_WD_OBJECT_RIGHTS WHERE dwUserOrGroupID = {2} AND dwObjectID = T.DocID)", ENTITY_ID, USER_LANGUAGE, USERID_FK_INT_ECM)
|
|
Else
|
|
CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@ENTITY_ID", ENTITY_ID)
|
|
CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@USER_LANGUAGE", USER_LANGUAGE)
|
|
CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@USER_ECM_ID", USERID_FK_INT_ECM)
|
|
CURRENT_DOCSEARCH_SQL = CURRENT_DOCSEARCH_SQL.Replace("@USER_ID", USER_GUID)
|
|
End If
|
|
|
|
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
CURRENT_DOCSEARCH_CAPTION = "Entity-wide search"
|
|
Else
|
|
CURRENT_DOCSEARCH_CAPTION = "Entitätssuche"
|
|
End If
|
|
Dim myformThread = New Thread(Sub()
|
|
Using frm As New frmDocSearchResult
|
|
Application.Run(frm)
|
|
|
|
End Using
|
|
End Sub)
|
|
myformThread.Start()
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error RUN_ENTITY_DOC_SEARCH", ex.Message, ex.StackTrace)
|
|
End Try
|
|
sw.Done()
|
|
End Sub
|
|
Private Sub RUN_WDSEARCH_GRID()
|
|
Me.Cursor = Cursors.WaitCursor
|
|
Dim sw As New SW("RUN_WDSEARCH_GRID")
|
|
Try
|
|
BarEditItem2.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
bsitmLoadEntity.Caption = "Documents loading..."
|
|
If CURRENT_SEARCH_TYPE = "NODE_DOWN" Then
|
|
Dim node As TreeNode = TreeViewMain.SelectedNode
|
|
Dim NODE_GUID = ClassNodeNavigation.Return_NODEID_forTag(node.Tag)
|
|
Dim sql = String.Format("DECLARE @return_value int " & vbNewLine &
|
|
"EXEC @return_value = [dbo].[PRPMO_NODES_GET_CHILD_RECORDS] @USER_ID = {0}, @NODE_ID = {1} " & vbNewLine &
|
|
"SELECT 'Return Value' = @return_value", USER_GUID, NODE_GUID)
|
|
Me.Cursor = Cursors.WaitCursor
|
|
Dim DT_ASYNC As DataTable
|
|
Try
|
|
Dim async As New ClassAsyncSQL(sql)
|
|
async.bw.RunWorkerAsync()
|
|
While async.bw.IsBusy
|
|
Application.DoEvents()
|
|
End While
|
|
DT_ASYNC = async.dt
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error Async DT_ASYNC", ex.Message, ex.StackTrace)
|
|
End Try
|
|
|
|
If Not IsNothing(DT_ASYNC) Then
|
|
Dim result = DT_ASYNC.Rows(0).Item(0)
|
|
If result <> 0 Then
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Getting SubNodes-Structure", "Check the logfile")
|
|
End If
|
|
End If
|
|
Me.Cursor = Cursors.Default
|
|
End If
|
|
Dim DT_RESULT As DataTable
|
|
DT_RESULT = ClassDOC_SEARCH.Get_DOC_RESULTTABLE(DT_RESULTLIST_OPTIONS, DT_RESULTLIST_VARIABLE_VALUE, DT_WINDREAM_COLUMNS_GRID, ENTITY_ID, RECORD_ID, CBool(LOAD_ENTITY_SEARCH_AT_STARTUP))
|
|
|
|
If IsNothing(DT_RESULT) Then
|
|
Dim msg = "wrong DocSearch-Configuration oer unexpected Error in Get_DOC_RESULTTABLE - Check logfile and contact Digital Data"
|
|
tslblWindreamView.Text = msg
|
|
Me.Cursor = Cursors.Default
|
|
Exit Sub
|
|
End If
|
|
If DT_RESULT.Rows.Count > 0 Then 'Es gibt Suchergebnisse
|
|
Dim selnode As TreeNode = TreeViewMain.SelectedNode
|
|
Dim NODE_TEXT As String = selnode.Text
|
|
|
|
Dim msg = "Dateien für Record: " & RECORD_ID
|
|
If CURRENT_SEARCH_TYPE = "ENTITY" Then
|
|
selnode = TreeViewMain.SelectedNode
|
|
Dim Entitystring
|
|
If selnode.Text.Contains(" (") Then
|
|
Entitystring = selnode.Text.Substring(0, selnode.Text.IndexOf("(") - 1)
|
|
Else
|
|
Entitystring = selnode.Text
|
|
End If
|
|
msg = "Dateien für Entität: " & Entitystring
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "files for entity: " & Entitystring
|
|
End If
|
|
msg &= " (" & DT_RESULT.Rows.Count.ToString & ")"
|
|
ElseIf CURRENT_SEARCH_TYPE = "RECORD" Then
|
|
If NODE_NAVIGATION Then
|
|
If NODE_TEXT.Contains(" (") Then
|
|
NODE_TEXT = NODE_TEXT.Substring(0, NODE_TEXT.IndexOf("(") - 1)
|
|
End If
|
|
msg = String.Format("Dateien für Objekt '{0}' ", NODE_TEXT)
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = String.Format("Files for Object '{0}'", NODE_TEXT)
|
|
End If
|
|
msg &= " (" & DT_RESULT.Rows.Count.ToString & ")"
|
|
Else
|
|
msg = String.Format("Dateien für Record '{0}' ", RECORD_ID)
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = String.Format("Files for record '{0}'", RECORD_ID)
|
|
End If
|
|
msg &= " (" & DT_RESULT.Rows.Count.ToString & ")"
|
|
End If
|
|
ElseIf CURRENT_SEARCH_TYPE = "NODE_DOWN" Then
|
|
selnode = TreeViewMain.SelectedNode
|
|
msg = "Dateien für Knotenunterstruktur"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "files found in Node-Substructure"
|
|
End If
|
|
msg &= " (" & DT_RESULT.Rows.Count.ToString & ")"
|
|
Else
|
|
msg = String.Format("Ergebnis der Volltextsuche")
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = String.Format("Result of Fulltext-Search")
|
|
End If
|
|
msg &= " (" & DT_RESULT.Rows.Count.ToString & ")"
|
|
End If
|
|
|
|
tslblWindreamView.Text = msg
|
|
|
|
If DT_RESULT.Rows.Count > 0 Then
|
|
If CURRENT_SEARCH_TYPE = "FULLTEXT" Then
|
|
If SplitContainerDetails.Collapsed = False And tsbtnPanel1Collapse.Visible = True Then
|
|
Collapse_Details()
|
|
End If
|
|
grvwGrid.ShowFindPanel()
|
|
grvwGrid.FindFilterText = CURRENT_FULLTEXT_PATTERN
|
|
End If
|
|
|
|
ClassWindreamDocGrid.FillColumns(
|
|
GridViewDoc_Search,
|
|
DT_RESULT,
|
|
DT_WINDREAM_COLUMNS_GRID,
|
|
DT_DOCRESULT_DROPDOWN_ITEMS,
|
|
AddressOf OnCBSelectedValueChanged,
|
|
AddressOf OnDateSelectedValueChanged,
|
|
AddressOf OnTextSelectedValueChanged,
|
|
AddressOf OnCheckboxValueChanged,
|
|
CURRENT_SEARCH_TYPE, RECORD_ID)
|
|
|
|
If DT_DOCRESULT_DROPDOWN_ITEMS.Rows.Count > 0 Then
|
|
Dim DT_VALUES_FOR_DOC
|
|
|
|
End If
|
|
End If
|
|
Else
|
|
Dim selnode As TreeNode = TreeViewMain.SelectedNode
|
|
Dim NODE_TEXT As String = selnode.Text
|
|
Dim msg = "Keine Dateien für '"
|
|
If CURRENT_SEARCH_TYPE = "ENTITY" Then
|
|
selnode = TreeViewMain.SelectedNode
|
|
Dim Entitystring
|
|
If selnode.Text.Contains(" (") Then
|
|
Entitystring = selnode.Text.Substring(0, selnode.Text.IndexOf("(") - 1)
|
|
Else
|
|
Entitystring = selnode.Text
|
|
End If
|
|
msg = "Keine Dateien für Entität: " & Entitystring & " gefunden"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "No files found for entity: " & Entitystring
|
|
End If
|
|
ElseIf CURRENT_SEARCH_TYPE = "RECORD" Then
|
|
If NODE_NAVIGATION Then
|
|
If NODE_TEXT.Contains(" (") Then
|
|
NODE_TEXT = NODE_TEXT.Substring(0, NODE_TEXT.IndexOf("(") - 1)
|
|
End If
|
|
msg &= NODE_TEXT & "' gefunden"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "No files found for object '" & NODE_TEXT & "'"
|
|
End If
|
|
Else
|
|
msg &= "Record '" & RECORD_ID & "' gefunden"
|
|
End If
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "No files found for record " & RECORD_ID
|
|
End If
|
|
ElseIf CURRENT_SEARCH_TYPE = "NODE_DOWN" Then
|
|
msg = "Keine Dateien für Knotenunterstruktur gefunden"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "No files found in Node-Substructure"
|
|
End If
|
|
Else
|
|
msg = "Keine Dateien für Volltextsuche (" & CURRENT_FULLTEXT_PATTERN & ") gefunden"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "No files found for fulltext-search (" & CURRENT_FULLTEXT_PATTERN & ")"
|
|
End If
|
|
End If
|
|
|
|
tslblWindreamView.Text = msg
|
|
GridControlDocSearch.DataSource = Nothing
|
|
'Clear_Windream_ResultList()
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Run WD-Search Database: ", ex.Message)
|
|
End Try
|
|
sw.Done()
|
|
BarEditItem2.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
bsitmLoadEntity.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
Cursor = Cursors.Default
|
|
End Sub
|
|
Private Sub OnCBSelectedValueChanged(sender As Object, e As EventArgs)
|
|
Try
|
|
Dim docId As Integer = ClassWindreamDocGrid.SELECTED_DOC_ID
|
|
If docId = 0 Then
|
|
MsgBox("Sorry no document was selected! Please try again!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim ComboBox As ComboBoxEdit = sender
|
|
'Dim ItemComboBox As RepositoryItemComboBox
|
|
'ItemComboBox = sender
|
|
Dim item As ClassWindreamDocGrid.WindreamDocGridComboboxItem = ComboBox.SelectedItem
|
|
Dim value As String = item.Value
|
|
If value.ToUpper = "Not displayable in Group-Search".ToUpper Then
|
|
Exit Sub
|
|
End If
|
|
Dim configId As Integer = item.ConfigID
|
|
|
|
Dim user As String = USER_USERNAME
|
|
|
|
Dim Sql As String = String.Format("EXEC PRPMO_DOC_VALUE_UPD_INS {0}, {1}, {2}, '{3}', '{4}'", docId, RECORD_ID, configId, value, user)
|
|
If ClassDatabase.Execute_non_Query(Sql) = False Then
|
|
MsgBox("The Update-Command was not successful! Check the log!",, MsgBoxStyle.Critical)
|
|
Else
|
|
ClassProxy.PRPROXY_DOC_VALUES_UPD(docId, RECORD_ID)
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in OnCBSelectedValueChanged: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub OnDateSelectedValueChanged(sender As Object, e As EventArgs)
|
|
Try
|
|
Dim DatePicker As DateEdit = sender
|
|
Dim value As DateTime = DatePicker.EditValue
|
|
|
|
Dim oldValue As Date
|
|
Dim validDate As Boolean = False
|
|
|
|
Try
|
|
validDate = Date.TryParse(DatePicker.OldEditValue, oldValue)
|
|
Catch ex As Exception
|
|
oldValue = Date.MinValue
|
|
End Try
|
|
|
|
If Not validDate Then
|
|
oldValue = Date.MinValue
|
|
End If
|
|
|
|
If oldValue = DatePicker.EditValue Then
|
|
Exit Sub
|
|
End If
|
|
'Dim colTitle = DirectCast(GridControlDocSearch.MainView, DevExpress.XtraGrid.Views.Grid.GridView).FocusedColumn.FieldName
|
|
'Dim configId As Integer = ClassWindreamDocGrid.RESULT_CONFIG_IDS.Item(colTitle)
|
|
' Config id über mainView -> detailView herausfinden
|
|
Dim mainView As GridView = GridControlDocSearch.MainView
|
|
Dim detailView As GridView = mainView.GetDetailView(mainView.FocusedRowHandle, mainView.GetRelationIndex(mainView.FocusedRowHandle, "docIdDetails"))
|
|
Dim detailRow As DataRowView = detailView.GetRow(detailView.FocusedRowHandle)
|
|
Dim configid = detailRow.Item("CONFIG_ID")
|
|
|
|
Dim docId As Integer = ClassWindreamDocGrid.SELECTED_DOC_ID
|
|
If docId = 0 Then
|
|
MsgBox("Sorry no document was selected! Please try again!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
Dim user As String = USER_USERNAME
|
|
Dim dateString = value.ToString("yyyy-MM-dd") 'hh:mm:ss.fff
|
|
Dim Sql As String = String.Format("EXEC PRPMO_DOC_VALUE_UPD_INS {0}, {1}, {2}, '{3}', '{4}'", docId, RECORD_ID, configid, dateString, user)
|
|
|
|
If ClassDatabase.Execute_non_Query(Sql) = False Then
|
|
ClassHelper.MSGBOX_Handler("ERROR", "UnexpectedError:", "Error updating doc-metadata (date): " & vbNewLine & "Check the log for further information!")
|
|
Else
|
|
ClassProxy.PRPROXY_DOC_VALUES_UPD(docId, RECORD_ID)
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in OnDateSelectedValueChanged: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub OnTextSelectedValueChanged(sender As Object, e As EventArgs)
|
|
Try
|
|
Dim TextBox As TextEdit = sender
|
|
Dim value = TextBox.EditValue
|
|
If value.ToUpper = "Not displayable in Group-Search".ToUpper Then
|
|
Exit Sub
|
|
End If
|
|
|
|
'Dim colTitle = DirectCast(GridControlDocSearch.MainView, DevExpress.XtraGrid.Views.Grid.GridView).FocusedColumn.FieldName
|
|
'Dim configId As Integer = ClassWindreamDocGrid.RESULT_CONFIG_IDS.Item(colTitle)
|
|
' Config id über mainView -> detailView herausfinden
|
|
Dim mainView As GridView = GridControlDocSearch.MainView
|
|
Dim detailView As GridView = mainView.GetDetailView(mainView.FocusedRowHandle, mainView.GetRelationIndex(mainView.FocusedRowHandle, "docIdDetails"))
|
|
Dim detailRow As DataRowView = detailView.GetRow(detailView.FocusedRowHandle)
|
|
Dim configid = detailRow.Item("CONFIG_ID")
|
|
|
|
Dim docId As Integer = ClassWindreamDocGrid.SELECTED_DOC_ID
|
|
If docId = 0 Then
|
|
MsgBox("Sorry no document was selected! Please try again!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
Dim user As String = USER_USERNAME
|
|
|
|
Dim Sql As String = String.Format("EXEC PRPMO_DOC_VALUE_UPD_INS {0}, {1}, {2},'{3}','{4}'", docId, RECORD_ID, configid, value, user)
|
|
If ClassDatabase.Execute_non_Query(Sql) = False Then
|
|
ClassHelper.MSGBOX_Handler("ERROR", "UnexpectedError:", "Error updating doc-metadata (textbox): " & vbNewLine & "Check the log for further information!")
|
|
Else
|
|
ClassProxy.PRPROXY_DOC_VALUES_UPD(docId, RECORD_ID)
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in OnTextSelectedValueChanged: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub OnCheckboxValueChanged(sender As Object, e As EventArgs)
|
|
'TODO Save Checkboxvalue
|
|
Try
|
|
Dim CheckBox As CheckEdit = sender
|
|
Dim value As Boolean = CheckBox.EditValue
|
|
|
|
'Config id über mainView -> detailView herausfinden
|
|
Dim mainView As GridView = GridControlDocSearch.MainView
|
|
Dim detailView As GridView = mainView.GetDetailView(mainView.FocusedRowHandle, mainView.GetRelationIndex(mainView.FocusedRowHandle, "docIdDetails"))
|
|
Dim detailRow As DataRowView = detailView.GetRow(detailView.FocusedRowHandle)
|
|
Dim configid = detailRow.Item("CONFIG_ID")
|
|
|
|
Dim docId As Integer = ClassWindreamDocGrid.SELECTED_DOC_ID
|
|
If docId = 0 Then
|
|
MsgBox("Sorry no document was selected! Please try again!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
Dim user As String = USER_USERNAME
|
|
|
|
Dim Sql As String = String.Format("EXEC PRPMO_DOC_VALUE_UPD_INS {0}, {1}, {2},'{3}','{4}'", docId, RECORD_ID, configid, value, user)
|
|
If ClassDatabase.Execute_non_Query(Sql) = False Then
|
|
ClassHelper.MSGBOX_Handler("ERROR", "UnexpectedError:", "Error updating doc-metadata (checkbox): " & vbNewLine & "Check the log for further information!")
|
|
Else
|
|
ClassProxy.PRPROXY_DOC_VALUES_UPD(docId, RECORD_ID)
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in OnCheckboxValueChanged: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
Public Class WDDoc_Combobox_Item
|
|
Implements IConvertible
|
|
|
|
Public ConfigID As Integer
|
|
Public Value As String
|
|
|
|
Public Overrides Function ToString() As String
|
|
Return Me.Value
|
|
End Function
|
|
|
|
Public Function GetTypeCode() As TypeCode Implements IConvertible.GetTypeCode
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToBoolean(provider As IFormatProvider) As Boolean Implements IConvertible.ToBoolean
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToByte(provider As IFormatProvider) As Byte Implements IConvertible.ToByte
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToChar(provider As IFormatProvider) As Char Implements IConvertible.ToChar
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToDateTime(provider As IFormatProvider) As Date Implements IConvertible.ToDateTime
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToDecimal(provider As IFormatProvider) As Decimal Implements IConvertible.ToDecimal
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToDouble(provider As IFormatProvider) As Double Implements IConvertible.ToDouble
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToInt16(provider As IFormatProvider) As Short Implements IConvertible.ToInt16
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToInt32(provider As IFormatProvider) As Integer Implements IConvertible.ToInt32
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToInt64(provider As IFormatProvider) As Long Implements IConvertible.ToInt64
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToSByte(provider As IFormatProvider) As SByte Implements IConvertible.ToSByte
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToSingle(provider As IFormatProvider) As Single Implements IConvertible.ToSingle
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToString1(provider As IFormatProvider) As String Implements IConvertible.ToString
|
|
Return Me.Value
|
|
End Function
|
|
|
|
Public Function ToType(conversionType As Type, provider As IFormatProvider) As Object Implements IConvertible.ToType
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToUInt16(provider As IFormatProvider) As UShort Implements IConvertible.ToUInt16
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToUInt32(provider As IFormatProvider) As UInteger Implements IConvertible.ToUInt32
|
|
Throw New NotImplementedException
|
|
End Function
|
|
|
|
Public Function ToUInt64(provider As IFormatProvider) As ULong Implements IConvertible.ToUInt64
|
|
Throw New NotImplementedException
|
|
End Function
|
|
End Class
|
|
|
|
Private Sub GridViewDropDown_ValueChanged(sender As Object, e As DragEventArgs) Handles TCDetails.DragDrop
|
|
Drag_Drop(e)
|
|
End Sub
|
|
Private Function Return_SearchPattern(ByVal content As String)
|
|
Select Case content.ToUpper
|
|
Case "@Record-ID".ToUpper
|
|
Return RECORD_ID
|
|
Case "@EntityID".ToUpper
|
|
Return ENTITY_ID
|
|
Case "@ParentID".ToUpper
|
|
Return PARENT_RECORDID
|
|
Case Else
|
|
MsgBox("Undefined pattern '" & content & "' in windream-Search Config. Please inform Your system-administrator.", MsgBoxStyle.Exclamation)
|
|
ClassLogger.Add(" >> Undefined Search-pattern in windream-search config: " & content, True)
|
|
End Select
|
|
End Function
|
|
'Private Sub AxObjectListControl_ItemClicked(sender As Object, e As EventArgs) Handles AxObjectListControl.ItemClicked
|
|
' CheckDocView()
|
|
'End Sub
|
|
|
|
Sub Clear_Windream_ResultList()
|
|
Try
|
|
Dim sw As New SW("Clear_Windream_ResultList")
|
|
|
|
'AxObjectListControl.RemoveAllColumnHeader()
|
|
'Me.AxObjectListControl.ClearResultList()
|
|
Dim stg As String = "Dateien"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
stg = "files"
|
|
End If
|
|
TabWindream.Text = stg
|
|
sw.Done()
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Clear Result List: ", ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
Sub CheckDocView()
|
|
'Dim _index = AxObjectListControl.GetFirstSelectedObject
|
|
'Dim path As String = AxObjectListControl.GetObjectPath(_index)
|
|
'path = path.Replace("?", vWLaufwerk)
|
|
'DocViewString = path
|
|
|
|
If WD_ShowDocs = True Then
|
|
CloseWDDocview()
|
|
ShowDocView()
|
|
End If
|
|
End Sub
|
|
Sub ShowDocView()
|
|
Try
|
|
CloseWDDocview()
|
|
DocView = Nothing
|
|
DocView = CreateObject("WMPViewXNG.Viewer")
|
|
' open the viewer
|
|
DocView.ViewFile(DocViewString)
|
|
OpenedFileString = DocViewString
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in ShowDocView: ", ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
Sub CloseWDDocview()
|
|
Try
|
|
If DocView Is Nothing = False Then
|
|
DocView.CloseView(OpenedFileString, 0)
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassLogger.Add(" ### Error in CloseDocView")
|
|
ClassLogger.Add("### " & ex.Message & " ###")
|
|
End Try
|
|
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region "GridViews"
|
|
Private Sub ButtonQuickViewCarousel_Click(sender As Object, e As EventArgs) Handles ButtonQuickViewCarousel.Click
|
|
GRID_TYPE = GridType.Carousel
|
|
VIEW_ID_RUNTIME = 2
|
|
GRID_TYPE_ID = 2
|
|
grvwCarousel.OptionsView.ViewMode = DevExpress.XtraGrid.Views.Layout.LayoutViewMode.Carousel
|
|
GridControlMain.MainView = grvwCarousel
|
|
|
|
Load_Datafor_Entity(True)
|
|
End Sub
|
|
|
|
Private Sub ButtonQuickViewTiles_Click(sender As Object, e As EventArgs) Handles ButtonQuickViewTiles.Click
|
|
GRID_TYPE = GridType.Tiles
|
|
VIEW_ID_RUNTIME = 1
|
|
GRID_TYPE_ID = 1
|
|
GridControlMain.MainView = grvwTiles
|
|
|
|
Load_Datafor_Entity(True)
|
|
End Sub
|
|
|
|
Private Sub ButtonDetailView_Click(sender As Object, e As EventArgs) Handles ButtonDetailView.Click
|
|
GRID_TYPE = GridType.Grid
|
|
VIEW_ID_RUNTIME = 3
|
|
GRID_TYPE_ID = 3
|
|
GridControlMain.MainView = grvwGrid
|
|
|
|
Load_Datafor_Entity(True)
|
|
End Sub
|
|
|
|
Private Sub ButtonSetViewAsDefault_Click(sender As Object, e As EventArgs) Handles ButtonSetViewAsDefault.Click
|
|
Dim VIEWTYPE_ID As Integer
|
|
|
|
Select Case GRID_TYPE
|
|
Case GridType.Tiles
|
|
VIEWTYPE_ID = 1
|
|
Case GridType.Carousel
|
|
VIEWTYPE_ID = 2
|
|
Case GridType.Grid
|
|
VIEWTYPE_ID = 3
|
|
|
|
End Select
|
|
Dim upd = String.Format("UPDATE TBPMO_USER_CONSTR_VIEW_TYPE SET VIEW_ID = {0} WHERE CONSTRUCTOR_DETAIL_ID = {1} AND [ENTITY_ID] = {2} AND USER_ID = {3}", VIEWTYPE_ID, CURRENT_CONSTRUCTOR_DETAIL_ID, ENTITY_ID, USER_GUID)
|
|
If ClassDatabase.Execute_non_Query(upd) = True Then
|
|
' VIEW_ID Override zurücksetzen!!
|
|
VIEW_ID_RUNTIME = -1
|
|
MsgBox("Standard-View was saved successfully!", MsgBoxStyle.Information)
|
|
End If
|
|
End Sub
|
|
Private Sub ButtonResetView_Click(sender As Object, e As EventArgs) Handles ButtonResetView.Click
|
|
Reset_View_layout
|
|
End Sub
|
|
Sub Reset_View_layout()
|
|
Try
|
|
Dim XMLPath = Get_DocGrid_Layout_Filename()
|
|
If File.Exists(XMLPath) Then
|
|
Me.Cursor = Cursors.WaitCursor
|
|
File.Delete(XMLPath)
|
|
GridControlDocSearch.DataSource = Nothing
|
|
GridViewDoc_Search.Columns.Clear()
|
|
|
|
RUN_WDSEARCH_GRID()
|
|
|
|
Else
|
|
MsgBox("Set back of Layout not successfull - File not existing!", MsgBoxStyle.Information)
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Reset Layout DocGrid: ", ex.Message)
|
|
End Try
|
|
Me.Cursor = Cursors.Default
|
|
End Sub
|
|
Private Sub AnsichtZurücksetzenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles docCM_ResetView.Click
|
|
' TODO: Ansicht zurücksetzen
|
|
Reset_View_layout()
|
|
End Sub
|
|
#End Region
|
|
|
|
Private Sub TCDetails_DragDrop(sender As Object, e As DragEventArgs) Handles TCDetails.DragDrop
|
|
Drag_Drop(e)
|
|
End Sub
|
|
|
|
Private Sub TCDetails_SelectedPageChanged(sender As Object, e As DevExpress.XtraTab.TabPageChangedEventArgs) Handles TCDetails.SelectedPageChanged
|
|
|
|
Update_Status_Label(False, "")
|
|
If TCDetails.SelectedTabPage.Name = "XtraTabPageVariant" Then
|
|
XtraTabPageVariant_Open()
|
|
End If
|
|
Select Case TCDetails.SelectedTabPage.Name
|
|
Case "TabDetails"
|
|
If NODE_NAVIGATION = False Then
|
|
Column_Row_Handler(RECORD_ID, False, True)
|
|
End If
|
|
|
|
'If RECORD_NEEDS_REFRESH = True Then
|
|
' ClassControlValues.LoadControlValues(RECORD_ID, ENTITY_ID, CtrlBuilder.AllControls)
|
|
' ' UpdRECORD_NEEDS_REFRESH(False)
|
|
'End If
|
|
|
|
'Refresh_CreatedChangedRecordByID(RECORD_ID)
|
|
' RECORD_CHANGED = False
|
|
If DOC_SEARCH_TAB1 = True Then
|
|
BACKGROUND_HELPER.PictureAlignment = ContentAlignment.BottomRight
|
|
End If
|
|
Case "TabWindream" 'Dateien
|
|
BACKGROUND_HELPER.PictureAlignment = ContentAlignment.BottomRight
|
|
If RECORD_ID = 0 Then
|
|
Exit Sub
|
|
Else
|
|
RUN_WDSEARCH_GRID()
|
|
End If
|
|
Load_DocGrid_Layout()
|
|
Case "TabFollowUp"
|
|
|
|
Refresh_FollowUps()
|
|
dtpFollowUp.Enabled = False
|
|
lblWiedervorlage_Control.Text = "<< Waiting for Selection:"
|
|
Case "TabPageVariant"
|
|
Load_Variants()
|
|
Case "TabPos"
|
|
Dim stg As String
|
|
|
|
If POS_ENABLED = True Then
|
|
tslblPoslocked.Visible = False
|
|
BindingNavigatorAddNewItem.Enabled = True
|
|
BindingNavigatorDeleteItem.Enabled = True
|
|
tsbtnWork.Enabled = True
|
|
grvwGridPos.OptionsBehavior.ReadOnly = False
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
stg = "Bearbeiten beenden"
|
|
Else
|
|
stg = "End Working"
|
|
End If
|
|
|
|
Else
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
stg = "Positionen bearbeiten"
|
|
Else
|
|
stg = "Edit positions"
|
|
End If
|
|
tslblPoslocked.Visible = True
|
|
BindingNavigatorAddNewItem.Enabled = False
|
|
BindingNavigatorDeleteItem.Enabled = False
|
|
tsbtnWork.Enabled = False
|
|
grvwGridPos.OptionsBehavior.ReadOnly = True
|
|
End If
|
|
Me.tsbtnWork.Text = stg
|
|
Load_Pos_Data()
|
|
Load_POSGrid_Layout()
|
|
End Select
|
|
End Sub
|
|
Sub XtraTabPageVariant_Open()
|
|
Try
|
|
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End Sub
|
|
Private Sub Refresh_FollowUps()
|
|
|
|
Try
|
|
If DT_FU_ENTITY.Rows.Count > 0 Then
|
|
grpbxFU_Profile.Enabled = True
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Refresh_FollowUps: ", ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
#Region "Dropping Files"
|
|
Sub Drag_Enter(e As DragEventArgs)
|
|
If act_FormViewID <> 0 Then
|
|
ClassDragDrop.Drag_enter(e)
|
|
End If
|
|
End Sub
|
|
Sub Drag_Drop(e As DragEventArgs)
|
|
Try
|
|
If ClassDragDrop.Drop_File(e) = False Then
|
|
Exit Sub
|
|
End If
|
|
If USER_PERSONIFIED_TEST = True Then
|
|
ClassHelper.MSGBOX_Handler("INFO", "Attention", "You are using ADDI in personified mode! Adding files is not allowed!")
|
|
Exit Sub
|
|
End If
|
|
If clsWindream.Create_Session = False Then
|
|
ClassHelper.MSGBOX_Handler("INFO", "Attention", "Check Your windream-connection and restart ADDI afterwards.", "Could not create a windream session!")
|
|
Exit Sub
|
|
End If
|
|
If act_FormViewID <> 0 And (RIGHT_READ_ONLY_DOC = False And GridControlDocSearch.ContextMenuStrip.Name = "ContextMenuStripResultFiles") Or RIGHT_ADD_DOC = True Then
|
|
Dim sql = "select count(*) from VWPMO_DOKUMENTTYPES where FORMVIEW_ID = " & FORMVIEW_ID
|
|
Dim count_DT = ClassDatabase.Execute_Scalar(sql, True)
|
|
If count_DT = 0 And CURRENT_ENTITY_REDUNDANT_ID = 0 Then
|
|
MsgBox("No documenttypes for this entity configured! Indexing is not possible!" & vbNewLine & "Please check the configuration!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
ElseIf count_DT = 0 And CURRENT_ENTITY_REDUNDANT_ID <> 0 Then
|
|
sql = "select count(*) from VWPMO_DOKUMENTTYPES where FORM_ID = " & CURRENT_ENTITY_REDUNDANT_ID
|
|
count_DT = ClassDatabase.Execute_Scalar(sql, True)
|
|
If count_DT = 0 Then
|
|
MsgBox("No documenttypes for this entity configured! Indexing is not possible!" & vbNewLine & "Please check the configuration!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
If RECORD_CHANGED = True Then
|
|
If Save_Record() = False Then
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
CURRENT_CONTROL_DOCTYPE_MATCH = 0
|
|
If CONTROL_DOCTYPE_MATCH <> 0 Then
|
|
Try
|
|
CURRENT_CONTROL_DOCTYPE_MATCH = ""
|
|
CURRENT_CONTROL_DOCTYPE_MATCH = ClassControlValues.GetControlValuesREC_CONTROL(RECORD_ID, CONTROL_DOCTYPE_MATCH)
|
|
Catch ex As Exception
|
|
CURRENT_CONTROL_DOCTYPE_MATCH = 0
|
|
CURRENT_CONTROL_DOCTYPE_MATCH = ""
|
|
End Try
|
|
|
|
End If
|
|
CURRENT_RECORD_ID = RECORD_ID
|
|
CURRENT_ENTITY_ID = ENTITY_ID
|
|
DROPPED_CHECKED = False
|
|
If e.Data.GetDataPresent(DataFormats.StringFormat) Then
|
|
Dim Wert As String = CType(e.Data.GetData(DataFormats.StringFormat), Object)
|
|
Console.WriteLine("DragDrop-Wert: " & Wert)
|
|
If Wert.Contains("SCAN") Then
|
|
Dim split() = Wert.Split(";")
|
|
If IsNumeric(split(1)) Then
|
|
CURRENT_FILEID = split(1)
|
|
CURRENT_PARENT_ENTITY_ID = PARENT_ENTITYID
|
|
CURRENT_FORMVIEW_ID = FORMVIEW_ID
|
|
ClassHelper.Create_USER_FILE_TABLE()
|
|
If Not IsNothing(CURRENT_TBPMO_FILES_USER) Then
|
|
If CURRENT_TBPMO_FILES_USER.Rows.Count > 0 Then
|
|
frmWM_IndexFile.ShowDialog()
|
|
End If
|
|
End If
|
|
|
|
'RUN_WD_SEARCH(WD_Suche, "RECORD")
|
|
End If
|
|
ElseIf (e.Data.GetDataPresent("FileGroupDescriptor")) AndAlso (e.Data.GetDataPresent("FileContents")) Then
|
|
If ClassDragDrop.Drop_File(e) = True Then
|
|
Check_Dropped_Files()
|
|
End If
|
|
ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then
|
|
If ClassDragDrop.Drop_File(e) = True Then
|
|
Check_Dropped_Files()
|
|
End If
|
|
End If
|
|
Else
|
|
If ClassDragDrop.Drop_File(e) = True Then
|
|
Check_Dropped_Files()
|
|
End If
|
|
|
|
End If
|
|
'Nur wenn neue Dateien abgelegt wurden muss die Prozedur zur aktualisierung der windream Dateien ausgeführt werden...ansonsten muss nichts passieren
|
|
If NEW_FILES_ADDED = True Then
|
|
Me.Cursor = Cursors.WaitCursor
|
|
RUN_WDSEARCH_GRID()
|
|
TimerClearResultfiles.Start()
|
|
Else
|
|
If LogErrorsOnly = False Then ClassLogger.Add(" >> No new files were added or windream tab is not focused!", False)
|
|
End If
|
|
Me.Cursor = Cursors.Default
|
|
Else
|
|
'If RIGHT_RECORD_AND_FILE_READ_ONLY = True Then
|
|
' ClassLogger.Add(">> RIGHT_RECORD_AND_FILE_READ_ONLY is set! No DragDrop allowed", False)
|
|
'End If
|
|
If RIGHT_READ_ONLY_DOC = True Then
|
|
ClassLogger.Add(">> RIGHT_WD_FORBIDDEN is set! No DragDrop allowed", False)
|
|
Else
|
|
ClassLogger.Add(">> No DragDrop allowed - ELSE", False)
|
|
End If
|
|
|
|
End If
|
|
Catch ex As Exception
|
|
ClassLogger.Add("Unexpected Error in Drag_Drop: " & ex.Message)
|
|
MsgBox("Unexpected Error in DragDrop - Please check the log for further information!", MsgBoxStyle.Exclamation)
|
|
Finally
|
|
|
|
End Try
|
|
End Sub
|
|
Private DROPPED_CHECKED As Boolean = False
|
|
Sub Check_Dropped_Files()
|
|
Try
|
|
NEW_FILES_ADDED = False
|
|
If RECORD_CHANGED = True Then
|
|
If Save_Record() = False Then
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
If RECORD_ID = 0 Then
|
|
ClassHelper.MSGBOX_Handler("INFO", "Attention", "Input missing: ", "Please choose a record.")
|
|
Exit Sub
|
|
End If
|
|
If DROPPED_CHECKED = False Then
|
|
For Each Str As Object In ClassDragDrop.files_dropped
|
|
If Not IsNothing(Str) Then
|
|
Dim DropType = Str.Substring(0, Str.LastIndexOf("@") + 1)
|
|
If DropType.ToString.Contains("SCAN") = False Then
|
|
ClassLogger.Add(">> Check_Dropped_Files:" & Str.ToString, False)
|
|
Dim CURRENT_WORKFILE = Str.Substring(Str.LastIndexOf("@") + 1)
|
|
If CURRENT_WORKFILE.ToString.Contains("@") Then
|
|
MsgBox("File contains invalid operator @!" & vbNewLine & "Please rename file and try again!", MsgBoxStyle.Exclamation)
|
|
Continue For
|
|
End If
|
|
If CURRENT_WORKFILE.ToString.Contains("'") Then
|
|
MsgBox("File contains invalid operator '!" & vbNewLine & "Please rename file and try again!", MsgBoxStyle.Exclamation)
|
|
Continue For
|
|
End If
|
|
ClassFolderWatcher.Insert_USER_File(CURRENT_WORKFILE, DropType)
|
|
End If
|
|
End If
|
|
Next
|
|
DROPPED_CHECKED = True
|
|
End If
|
|
|
|
Dim sql = "select count(*) from VWPMO_DOKUMENTTYPES where FORMVIEW_ID = " & FORMVIEW_ID
|
|
Dim count_DT = ClassDatabase.Execute_Scalar(sql, True)
|
|
If count_DT = 0 And CURRENT_ENTITY_REDUNDANT_ID = 0 Then
|
|
ClassHelper.MSGBOX_Handler("INFO", "Attention", "Configuration missing: ", "No documenttypes for this entity (" & FORMVIEW_ID.ToString & ") configured! Indexing is not possible! Please check the configuration.")
|
|
Exit Sub
|
|
ElseIf count_DT = 0 And CURRENT_ENTITY_REDUNDANT_ID <> 0 Then
|
|
sql = "select count(*) from VWPMO_DOKUMENTTYPES where FORM_ID = " & CURRENT_ENTITY_REDUNDANT_ID
|
|
count_DT = ClassDatabase.Execute_Scalar(sql, True)
|
|
If count_DT = 0 Then
|
|
ClassHelper.MSGBOX_Handler("INFO", "Attention", "Configuration missing: ", "No documenttypes for the redundant entity (" & CURRENT_ENTITY_REDUNDANT_ID.ToString & ") configured! Indexing is not possible! Please check the configuration.")
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
ClassHelper.Create_USER_FILE_TABLE()
|
|
If Not IsNothing(CURRENT_TBPMO_FILES_USER) Then
|
|
If CURRENT_TBPMO_FILES_USER.Rows.Count > 0 Then
|
|
For Each Filerow As DataRow In CURRENT_TBPMO_FILES_USER.Rows
|
|
If CBool(Filerow.Item("WORKED")) = False Then
|
|
'Dim datei = Str.ToString.Replace("@DROPFROMFSYSTEM@", "")
|
|
CURRENT_FILEID = Filerow.Item("GUID")
|
|
CURRENT_PARENT_ENTITY_ID = PARENT_ENTITYID
|
|
CURRENT_RECORD_ID = RECORD_ID
|
|
CURRENT_ENTITY_ID = ENTITY_ID
|
|
CURRENT_FORMVIEW_ID = FORMVIEW_ID
|
|
frmWM_IndexFile.ShowDialog()
|
|
'sql = String.Format("SELECT * FROM TBPMO_FILES_USER WHERE (UPPER(USER_WORK) = UPPER('{0}')) AND WORKED = 0", USER_USERNAME)
|
|
'CURRENT_TBPMO_FILES_USER = ClassDatabase.Return_Datatable(sql, True)
|
|
'If CURRENT_TBPMO_FILES_USER.Rows.Count > 0 Then
|
|
' Check_Dropped_Files()
|
|
'End If
|
|
Else
|
|
|
|
End If
|
|
Next
|
|
End If
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Check_Dropped_Files: ", ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
Private Sub GridControlMain_DragEnter(sender As Object, e As DragEventArgs) Handles GridControlMain.DragEnter
|
|
Drag_Enter(e)
|
|
End Sub
|
|
Private Sub pnlDetails_DragEnter(sender As Object, e As DragEventArgs) Handles pnlDetails.DragEnter
|
|
Drag_Enter(e)
|
|
End Sub
|
|
Private Sub GridControlMain_DragDrop(sender As Object, e As DragEventArgs) Handles GridControlMain.DragDrop
|
|
Drag_Drop(e)
|
|
End Sub
|
|
Private Sub pnlDetails_DragDrop(sender As Object, e As DragEventArgs) Handles pnlDetails.DragDrop
|
|
Drag_Drop(e)
|
|
End Sub
|
|
Private Sub TCDetails_DragEnter(sender As Object, e As DragEventArgs) Handles TCDetails.DragEnter
|
|
Drag_Enter(e)
|
|
End Sub
|
|
Private Sub GridControlDocSearch_DragEnter(sender As Object, e As DragEventArgs) Handles GridControlDocSearch.DragEnter
|
|
Drag_Enter(e)
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region "Follow Up"
|
|
Private Sub ListViewFollowUps_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListViewFollowUps.SelectedIndexChanged
|
|
If Me.ListViewFollowUps.SelectedItems.Count > 0 Then
|
|
dtpFollowUp.Enabled = False
|
|
FOLL_UP_ID = ListViewFollowUps.SelectedItems(0).Text
|
|
lblFollowUp_save.Visible = False
|
|
For Each DR As DataRow In DT_FU_ENTITY.Rows
|
|
If FOLL_UP_ID = DR.Item("GUID") Then
|
|
grpbxFU_Profile.Enabled = True
|
|
FOLL_UP_DATE_CTRL_ID = DR.Item("DEPENDENT_DATE_CTRL_ID")
|
|
Dim datevalue = ClassControlValues.Get_Control_Value_for_ID(DR.Item("DEPENDENT_DATE_CTRL_ID"), RECORD_ID)
|
|
If Not IsNothing(datevalue) Then
|
|
dtpFollowUp.Enabled = True
|
|
If datevalue = "00:00:00" Then
|
|
dtpFollowUp.Value = ClassHelper.Convert_Date(Now, CURRENT_DATE_FORMAT)
|
|
End If
|
|
FOLL_UP_RECORD_DEFINED = True
|
|
Try
|
|
dtpFollowUp.Value = ClassHelper.Convert_Date(datevalue, CURRENT_DATE_FORMAT)
|
|
Catch ex As Exception
|
|
dtpFollowUp.Value = ClassHelper.Convert_Date(Now, CURRENT_DATE_FORMAT)
|
|
End Try
|
|
|
|
Else
|
|
dtpFollowUp.Value = ClassHelper.Convert_Date(Now, CURRENT_DATE_FORMAT)
|
|
FOLL_UP_RECORD_DEFINED = False
|
|
End If
|
|
|
|
Dim caption = ClassDatabase.Execute_Scalar("SELECT COL_NAME FROM TBPMO_CONTROL WHERE GUID = " & DR.Item("DEPENDENT_DATE_CTRL_ID"), True)
|
|
If Not IsNothing(caption) Then
|
|
lblWiedervorlage_Control.Text = CStr(caption)
|
|
|
|
Else
|
|
lblWiedervorlage_Control.Text = "Wiedervorlage:"
|
|
End If
|
|
FOLL_UP_DONE_CTRL_ID = DR.Item("DEPENDENT_DONE_CTRL_ID")
|
|
Dim checkvalue = ClassControlValues.Get_Control_Value_for_ID(DR.Item("DEPENDENT_DONE_CTRL_ID"), RECORD_ID)
|
|
If Not IsNothing(checkvalue) Then
|
|
chkFollowUp.Checked = CBool(checkvalue)
|
|
Else
|
|
chkFollowUp.Checked = False
|
|
End If
|
|
Dim SQL = String.Format("SELECT GUID FROM TBPMO_CONTROL_SCREEN WHERE CONTROL_ID = {0} AND SCREEN_ID = {1}", DR.Item("DEPENDENT_DONE_CTRL_ID"), CURRENT_SCREEN_ID)
|
|
Dim ctrl_screen_id = ClassDatabase.Execute_Scalar(SQL, True)
|
|
If ctrl_screen_id > 0 Then
|
|
SQL = String.Format("SELECT CAPTION FROM TBPMO_CONTROL_LANGUAGE WHERE CONTROL_SCREEN_ID = {0} AND LANGUAGE_TYPE = '{1}'", ctrl_screen_id, USER_LANGUAGE)
|
|
Dim captionCheck = ClassDatabase.Execute_Scalar(SQL, True)
|
|
If Not IsNothing(captionCheck) Then
|
|
chkFollowUp.Text = CStr(captionCheck)
|
|
End If
|
|
End If
|
|
|
|
|
|
|
|
|
|
Load_FUUser(FOLL_UP_ID)
|
|
|
|
End If
|
|
Next
|
|
End If
|
|
End Sub
|
|
Sub Load_FUUser(ID As Integer)
|
|
Try
|
|
Dim sql = "SELECT T.GUID, T1.USERNAME FROM TBPMO_FOLLUPEMAIL_RECORD T, TBDD_USER T1 WHERE T.USER_ID = T1.GUID AND T.FOLLOW_UP_ID = " & ID & " AND T.RECORD_ID = " & RECORD_ID & " ORDER BY T1.USERNAME"
|
|
Dim DT As DataTable = ClassDatabase.Return_Datatable(sql)
|
|
ListBoxUser2Profile.DataSource = DT
|
|
ListBoxUser2Profile.DisplayMember = DT.Columns(1).ColumnName
|
|
ListBoxUser2Profile.ValueMember = DT.Columns(0).ColumnName
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Load Follow Up User: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
Private Sub dtpWV_ValueChanged(sender As Object, e As EventArgs) Handles dtpFollowUp.ValueChanged
|
|
If ENTITY_LOADING_PROCESS = False = False Then
|
|
Exit Sub
|
|
End If
|
|
If ClassControlCommandsUI.UpdateControlValue(FOLL_UP_DATE_CTRL_ID, RECORD_ID, dtpFollowUp.Value, CURRENT_ENTITY_ID) = True Then
|
|
lblFollowUp_save.Text = "Follow Up saved - " & Now.ToString
|
|
lblFollowUp_save.Visible = True
|
|
'UpdRECORD_NEEDS_REFRESH(True)
|
|
Else
|
|
lblFollowUp_save.Visible = False
|
|
'UpdRECORD_NEEDS_REFRESH(False)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub chkFollowUp_CheckedChanged(sender As Object, e As EventArgs) Handles chkFollowUp.CheckedChanged
|
|
If ENTITY_LOADING_PROCESS = False Then
|
|
Exit Sub
|
|
End If
|
|
If ClassControlCommandsUI.UpdateControlValue(FOLL_UP_DONE_CTRL_ID, RECORD_ID, chkFollowUp.Checked.ToString, CURRENT_ENTITY_ID) = True Then
|
|
lblFollowUp_save.Text = "Follow Up saved - " & Now.ToString
|
|
lblFollowUp_save.Visible = True
|
|
' UpdRECORD_NEEDS_REFRESH(True)
|
|
Else
|
|
lblFollowUp_save.Visible = False
|
|
'UpdRECORD_NEEDS_REFRESH(False)
|
|
End If
|
|
End Sub
|
|
|
|
Private Function Check_FOLLOWUP_IsConfigured(ENTITY_ID As Integer)
|
|
Try
|
|
Dim sw As New SW("Check_FOLLOWUP_IsConfigured")
|
|
|
|
Dim sql = "select * from TBPMO_FOLLOW_UP_EMAIL t where t.ACTIVE = 1 and t.DEPENDENT_DATE_CTRL_ID in (select guid from TBPMO_CONTROL where CONTROL_TYPE_ID = 4 and form_id = " & ENTITY_ID & ")"
|
|
DT_FU_ENTITY = ClassDatabase.Return_Datatable(sql)
|
|
If DT_FU_ENTITY.Rows.Count > 0 Then
|
|
'Die Userauswahl füllen
|
|
Dim DTUser As DataTable = ClassDatabase.Return_Datatable("select T.guid, T.username from TBDD_USER t INNER JOIN TBDD_USER_MODULES T1 ON T.GUID = T1.USER_ID INNER JOIN TBDD_MODULES T2 ON T1.MODULE_ID = T2.GUID
|
|
WHERE T2.SHORT_NAME = 'ADDI' AND T.EMAIL IS NOT NULL order by USERNAME")
|
|
cmbFollowUpUser.DataSource = DTUser
|
|
cmbFollowUpUser.DisplayMember = DTUser.Columns(1).ColumnName
|
|
cmbFollowUpUser.ValueMember = DTUser.Columns(0).ColumnName
|
|
TabFollowUp.PageVisible = True
|
|
FOLLOW_UPisActive = True
|
|
|
|
'Die Wiedervorlageprofile in den Listview laden
|
|
ListViewFollowUps.Items.Clear()
|
|
Dim anz As Integer = 0
|
|
For Each DR As DataRow In DT_FU_ENTITY.Rows
|
|
Dim name = DR.Item("NAME")
|
|
ListViewFollowUps.Items.Add(DR.Item("GUID"))
|
|
ListViewFollowUps.Items(anz).SubItems.Add(name)
|
|
anz += 1
|
|
Next
|
|
|
|
Else
|
|
FOLLOW_UPisActive = False
|
|
TabFollowUp.PageVisible = False
|
|
End If
|
|
sw.Done()
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Check Follow Up: ", ex.Message)
|
|
windream_Docshow = False
|
|
End Try
|
|
End Function
|
|
#End Region
|
|
#Region "Tasks"
|
|
'Private Sub tsButtonShowWorkflowTasks_Click(sender As Object, e As EventArgs) Handles tsButtonShowWorkflowTasks.Click
|
|
' If RECORD_ID > 0 Then
|
|
' CURRENT_RECORD_ID = RECORD_ID
|
|
' CURRENT_ENTITY_ID = ENTITY_ID
|
|
' frmTask_Editor.ShowDialog()
|
|
' Show_act_WFTask()
|
|
' Refresh_TaskOverview()
|
|
' End If
|
|
'End Sub
|
|
|
|
Private Sub tsButtonShowTaskOverview_Click(sender As Object, e As EventArgs) Handles tsButtonShowTaskOverview.Click
|
|
ClassJumpRecord.JumpToRecord(2, RECORD_ID)
|
|
JUMP_RECORD_ID = 0
|
|
End Sub
|
|
|
|
|
|
Sub Refresh_TaskOverview()
|
|
Dim frmCollection As New FormCollection()
|
|
frmCollection = Application.OpenForms()
|
|
If frmTask_Overview.IsHandleCreated Then
|
|
If Sett_TaskOverviewKeepInFront = True Then
|
|
frmTask_Overview.Refresh()
|
|
End If
|
|
'Else
|
|
' Console.WriteLine("frmTaskOverview NICHT geladen")
|
|
End If
|
|
End Sub
|
|
Sub Show_act_WFTask()
|
|
Try
|
|
Dim query = From table In CURRENT_VWPMO_WF_ACTIVE.AsEnumerable()
|
|
Select table Where table.Item("ENTITY_ID") = ENTITY_ID
|
|
Dim Entity_rows = query.ToList()
|
|
If Entity_rows.Count > 0 Then
|
|
If _MANUAL_WORKFLOW = True Then
|
|
bbtniWFTask.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
End If
|
|
bsitmWFState.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
|
|
Else
|
|
bbtniWFTask.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
bsitmWFState.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
End If
|
|
tsButtonShowTaskOverview.Visible = False
|
|
For Each _row In Entity_rows
|
|
If _row.Item("RECORD_ID") = RECORD_ID Then
|
|
tsButtonShowTaskOverview.Visible = True
|
|
CURRENT_TASK_ID = _row.Item("WF_TASK_ID")
|
|
Dim text = "Task: " & _row.Item("WF_TITLE")
|
|
text += " - " & _row.Item("STATE_TITLE")
|
|
text += " - " & _row.Item("DUE_DATE")
|
|
bsitmWFState.Caption = text
|
|
'Direkten Zugriff auf RecordView Workflow erlauben
|
|
|
|
Dim Colorstring = _row.Item("COLOR")
|
|
If IsDBNull(Colorstring) Then
|
|
Exit Sub
|
|
End If
|
|
If Colorstring <> "" Then
|
|
'grvwSelection.Appearance.FocusedRow.BackColor = ColorTranslator.FromWin32(CInt(Colorstring))
|
|
'grvwSelection.Appearance.FocusedRow.ForeColor = Color.Yellow
|
|
bsitmWFState.ItemAppearance.Normal.BackColor = ColorTranslator.FromWin32(CInt(Colorstring))
|
|
Select Case bsitmWFState.ItemAppearance.Normal.BackColor
|
|
Case Color.Red
|
|
bsitmWFState.ItemAppearance.Normal.ForeColor = Color.White
|
|
End Select
|
|
Else
|
|
bsitmWFState.ItemAppearance.Normal.BackColor = Color.Transparent
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Show act WFTask: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
#End Region
|
|
|
|
Private Sub ResetEbenenAuswahlToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ResetEbenenAuswahlToolStripMenuItem.Click
|
|
ACT_EBENE = 0
|
|
CURRENT_ACT_LEVEL = 0
|
|
ACT_EBENE_STRING = ""
|
|
EBENE1_ENTITY = ""
|
|
EBENE1_RECID = 0
|
|
EBENE2_ENTITY = ""
|
|
EBENE2_RECID = 0
|
|
EBENE3_ENTITY = ""
|
|
EBENE3_RECID = 0
|
|
'NavPane.Categories.Clear()
|
|
Load_Tree_View()
|
|
End Sub
|
|
|
|
Private Sub DateiimportEntitätToolStripMenuItem_Click(sender As Object, e As EventArgs)
|
|
If PARENT_ENTITYID = 0 Then
|
|
Exit Sub
|
|
End If
|
|
CURRENT_ENTITYSTRING = _ENTITYSTRING
|
|
CURRENT_ENTITY_ID = ENTITY_ID
|
|
frmWM_EntityImport.ShowDialog()
|
|
End Sub
|
|
Private Sub FormDesignerToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles FormDesignerToolStripMenuItem.Click
|
|
Try
|
|
Dim SelectedNode As TreeNode = TryCast(TreeViewMain.SelectedNode, TreeNode)
|
|
If SelectedNode IsNot Nothing Then
|
|
Dim FormId As Integer = ClassNodeNavigation.Return_ENTITY_FOR_TAG(SelectedNode.Tag)
|
|
If FormId > 0 Then
|
|
CURRENT_ENTITY_ID = FormId
|
|
OpenFormLevelDesigner()
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error inOpen Designer: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
Private Sub ButtonExportToExcel_Click(sender As Object, e As EventArgs) Handles ButtonExportToExcel.Click
|
|
Dim saveFileDialog1 As New SaveFileDialog
|
|
saveFileDialog1.Filter = "Excel File|*.xlsx"
|
|
saveFileDialog1.Title = "Export to Excel:"
|
|
saveFileDialog1.ShowDialog()
|
|
If saveFileDialog1.FileName <> "" Then
|
|
Cursor = Cursors.WaitCursor
|
|
GridControlMain.MainView.ExportToXlsx(saveFileDialog1.FileName)
|
|
Dim result As MsgBoxResult
|
|
Dim msg = String.Format("Datei wurde erstellt! Wollen Sie diese nun öffnen?")
|
|
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = String.Format("File was created. Do You want to open excel?")
|
|
End If
|
|
result = MessageBox.Show(msg, "Exporting result:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result = MsgBoxResult.Yes Then
|
|
Process.Start(saveFileDialog1.FileName)
|
|
End If
|
|
End If
|
|
Cursor = Cursors.Default
|
|
End Sub
|
|
|
|
|
|
Private Sub frmForm_Constructor_Main_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
|
If ERROR_FORM_LOAD = True Then
|
|
Me.Close()
|
|
End If
|
|
Dim sw As New SW("Form_Shown")
|
|
Me.BringToFront()
|
|
Load_Tree_View()
|
|
' LoadLayouts()
|
|
Jump_Record()
|
|
If NODE_NAVIGATION = False Then
|
|
Load_Level1()
|
|
End If
|
|
sw.Done()
|
|
If LogErrorsOnly = False Then ClassLogger.Add("", False)
|
|
|
|
FORM_SHOWN = True
|
|
End Sub
|
|
Sub Jump_Record()
|
|
Try
|
|
Dim sw As New SW("Jump_Record")
|
|
|
|
If JUMP_RECORD_ID > 0 Then
|
|
Dim sql = String.Format("SELECT FORM_ID FROM TBPMO_RECORD WHERE GUID = {0}", JUMP_RECORD_ID)
|
|
Dim FormID = ClassDatabase.Execute_Scalar(sql, True)
|
|
If FormID > 0 Then
|
|
Dim n As TreeNode
|
|
For Each n In TreeViewMain.Nodes
|
|
CheckNode(n, FormID)
|
|
Next
|
|
End If
|
|
End If
|
|
|
|
' wurde nicht zurückgesetzt, also
|
|
' wurde der record nicht gefunden
|
|
If JUMP_RECORD_ID <> 0 Then
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Jump Record: ", "Record-ID " & JUMP_RECORD_ID & " konnte nicht gefunden werden")
|
|
End If
|
|
sw.Done()
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Jump-Record: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
Private Sub CheckNode(ByVal n As TreeNode, FormID As Integer)
|
|
Dim aNode As TreeNode
|
|
|
|
If CInt(ClassNodeNavigation.Return_ENTITY_FOR_TAG(n.Tag)) = FormID Then
|
|
'Gefunden also selektieren
|
|
TreeViewMain.SelectedNode = n
|
|
TreeViewMain.SelectedNode.EnsureVisible()
|
|
TreeViewMain.Select()
|
|
|
|
'Für Grid filtern wir die Aktuelle Ansicht nach der Record-ID,
|
|
'für Carousel und Tiles markieren wir den Record
|
|
LocateRecordinGridById(JUMP_RECORD_ID)
|
|
|
|
' Jump Record-ID wieder zurücksetzen
|
|
JUMP_RECORD_ID = 0
|
|
Exit Sub
|
|
End If
|
|
|
|
For Each aNode In n.Nodes
|
|
If CInt(ClassNodeNavigation.Return_ENTITY_FOR_TAG(aNode.Tag)) = FormID Then
|
|
'Gefunden also selektieren
|
|
TreeViewMain.SelectedNode = aNode
|
|
TreeViewMain.SelectedNode.EnsureVisible()
|
|
TreeViewMain.Select()
|
|
|
|
'Für Grid filtern wir die Aktuelle Ansicht nach der Record-ID,
|
|
'für Carousel und Tiles markieren wir den Record
|
|
LocateRecordinGridById(JUMP_RECORD_ID)
|
|
|
|
' Jump Record-ID wieder zurücksetzen
|
|
JUMP_RECORD_ID = 0
|
|
Exit For
|
|
Exit Sub
|
|
End If
|
|
CheckNode(aNode, FormID)
|
|
Next
|
|
End Sub
|
|
|
|
Public Sub LocateRecordinGridById(RecordId As Integer)
|
|
Dim sw As New SW("LocateRecordinGridById")
|
|
If GRID_TYPE = GridType.Grid Then
|
|
Dim rowHandle = grvwGrid.LocateByValue(0, grvwGrid.Columns("Record-ID"), RecordId)
|
|
grvwGrid.FocusedRowHandle = rowHandle
|
|
ElseIf GRID_TYPE = GridType.Carousel Then
|
|
Dim rowHandle = grvwCarousel.LocateByValue(0, grvwCarousel.Columns("Record-ID"), RecordId)
|
|
grvwCarousel.FocusedRowHandle = rowHandle
|
|
ElseIf GRID_TYPE = GridType.Tiles Then
|
|
Dim rowHandle = grvwTiles.LocateByValue(0, grvwTiles.Columns("Record-ID"), RecordId)
|
|
grvwTiles.FocusedRowHandle = rowHandle
|
|
End If
|
|
sw.Done()
|
|
|
|
End Sub
|
|
|
|
|
|
'Sub Load_Templates()
|
|
' Try
|
|
' Dim sql As String = "SELECT * FROM VWPMO_TEMPLATE_ENTITY WHERE ENTITY_ID = " & ENTITY_ID & " ORDER BY TEMPLATE_NAME"
|
|
' Dim DT As DataTable = ClassDatabase.Return_Datatable(sql)
|
|
' If Not IsNothing(DT) Then
|
|
' If DT.Rows.Count > 0 Then
|
|
' OfficeVorlagentsmi.Enabled = True
|
|
' OfficeVorlagentsmi.DropDownItems.Clear()
|
|
' For Each row As DataRow In DT.Rows
|
|
' Dim item As ToolStripMenuItem = OfficeVorlagentsmi
|
|
' Dim newItem As ToolStripMenuItem = New ToolStripMenuItem(row.Item("TEMPLATE_NAME").ToString, Nothing, AddressOf TemplateItem_Click)
|
|
' newItem.Tag = row.Item("TEMPLATE_ID")
|
|
' item.DropDownItems.Add(newItem) ' subitem.DropDownItems.Add(newItem)
|
|
' Next
|
|
' Else
|
|
' OfficeVorlagentsmi.Enabled = False
|
|
' End If
|
|
' End If
|
|
' Catch ex As Exception
|
|
' ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Load_Templates: ", ex.Message)
|
|
' End Try
|
|
'End Sub
|
|
|
|
Private Sub TemplateItem_Click(sender As Object, e As EventArgs)
|
|
Dim item As ToolStripMenuItem = DirectCast(sender, ToolStripMenuItem)
|
|
Dim TemplateID As Integer = Integer.Parse(item.Tag)
|
|
If RECORD_ID > 0 Then
|
|
Dim SOLLENTITY_ID = ClassDatabase.Execute_Scalar("SELECT ENTITY_ID FROM VWPMO_TEMPLATE_ENTITY WHERE TEMPLATE_ID = " & TemplateID, True)
|
|
Dim REC_ENTITY_ID = ClassDatabase.Execute_Scalar("SELECT FORM_ID FROM TBPMO_RECORD WHERE GUID = " & RECORD_ID, True)
|
|
|
|
If Not IsNothing(SOLLENTITY_ID) Then
|
|
If CInt(SOLLENTITY_ID) = REC_ENTITY_ID Then
|
|
Cursor = Cursors.WaitCursor
|
|
If ClassOfficeTemplate.Open_Word_Template(TemplateID, RECORD_ID) = True Then
|
|
RUN_WDSEARCH_GRID()
|
|
' RUN_WD_SEARCH(WD_Suche, "RECORD")
|
|
Update_Status_Label(True, "Template file imported to windream", EditState.Insert)
|
|
End If
|
|
Cursor = Cursors.Default
|
|
Else
|
|
Dim msg = "Bitte wählen Sie nochmal einen Datensatz aus."
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Please choose a record again."
|
|
End If
|
|
MsgBox(msg, MsgBoxStyle.Exclamation)
|
|
End If
|
|
End If
|
|
Else
|
|
Dim msg = "Bitte wählen Sie zuerst einen Datensatz aus."
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Please choose a record first."
|
|
End If
|
|
MsgBox(msg, MsgBoxStyle.Exclamation)
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
Sub Load_Level1()
|
|
Try
|
|
Dim sw As New SW("Load_Level1.0")
|
|
' LINQ für Zugriff auf DT_VWPMO_CONSTRUCTOR_FORMS
|
|
Dim result = From form In DT_VWPMO_CONSTRUCTOR_FORMS.AsEnumerable()
|
|
Select form
|
|
Order By form.Item("SEQUENCE")
|
|
Where form.Item("PARENT_ID") = 0
|
|
sw.Done()
|
|
sw = New SW("Load_Level1.1")
|
|
If result.Count >= 1 Then
|
|
Dim tn As TreeNode = TreeViewMain.Nodes(0)
|
|
TreeViewMain.SelectedNode = tn
|
|
TreeViewMain.Select()
|
|
End If
|
|
sw.Done()
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Load_Level1: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
' Call the procedure using the top nodes of the treeview.
|
|
Private Sub CallRecursive(ByVal aTreeView As TreeView)
|
|
|
|
End Sub
|
|
|
|
|
|
Private Sub grvwGridPos_CellValueChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs) Handles grvwGridPos.CellValueChanged
|
|
Try
|
|
Dim column = e.Column.FieldName
|
|
Dim sql = String.Format("select guid from TBPMO_CONTROL where COL_NAME = '{0}' and FORM_ID = {1}", column, POS_ENTITY)
|
|
Dim controlid = ClassDatabase.Execute_Scalar(sql, True)
|
|
If Not IsNothing(controlid) Then
|
|
'Überprüfen ob schon value vorhanden
|
|
sql = String.Format("SELECT CONTROL_ID FROM VWPMO_VALUES WHERE CONTROL_ID = {0} AND FORM_ID = {1} AND CONTROL_COLUMN = '{2}' AND RECORD_ID = {3}", controlid, POS_ENTITY, column, POS_RECORD_ID)
|
|
Dim cId As Integer = ClassDatabase.Execute_Scalar(sql, True)
|
|
If IsNothing(POS_RECORD_ID) Or IsDBNull(POS_RECORD_ID) Then
|
|
Dim recordId = ClassRecordCommands.CreateRecordProcedure(POS_ENTITY)
|
|
|
|
If recordId > 0 Then
|
|
'Die neue Record-ID setzen
|
|
POS_RECORD_ID = recordId
|
|
ClassProxy.PRPROXY_RECORD_UPD_INS(POS_ENTITY, POS_RECORD_ID)
|
|
If ClassRecordCommands.ConnectRecord(PARENT_RECORDID, POS_RECORD_ID, "POS_LINK for Entity " & POS_ENTITY.ToString) = True Then
|
|
ClassProxy.PRPROXY_RECORD_CONNECT(PARENT_RECORDID, POS_RECORD_ID)
|
|
End If
|
|
Else
|
|
MsgBox("Unexpected Error in Creating POS", MsgBoxStyle.Exclamation)
|
|
End If
|
|
End If
|
|
' Wenn cId = 0, existiert noch kein wert für diese controlId/FormId Kombination
|
|
If cId = 0 Then
|
|
ClassControlCommandsUI.CreateControlProcedure(controlid, POS_RECORD_ID, e.Value, POS_ENTITY)
|
|
Update_Status_Label(True, "Value was added!", EditState.Insert)
|
|
Else
|
|
ClassControlCommandsUI.UpdateControlValue(controlid, POS_RECORD_ID, e.Value, POS_ENTITY)
|
|
Update_Status_Label(True, "Value was updated!", EditState.Update)
|
|
End If
|
|
Else
|
|
Update_Status_Label(False)
|
|
End If
|
|
Load_Pos_Data()
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in grvwGridPos_CellValueChanged: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub grvwGridPos_FocusedRowChanged(sender As Object, e As FocusedRowChangedEventArgs) Handles grvwGridPos.FocusedRowChanged
|
|
Pos_COLROW_Changer()
|
|
End Sub
|
|
Sub Pos_COLROW_Changer()
|
|
Try
|
|
If TCDetails.SelectedTabPage.Text.StartsWith("Pos") Then
|
|
Dim Grid_RecordID = Get_Focused_Row_Cell_Value_pos("Record-ID")
|
|
If Not IsNothing(Grid_RecordID) Then
|
|
POS_RECORD_ID = Grid_RecordID
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in grvwGridPos_FocusedRowChanged: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
Private Sub grvwGridPos_RowUpdated(sender As Object, e As RowObjectEventArgs) Handles grvwGridPos.RowUpdated
|
|
|
|
End Sub
|
|
|
|
Private Sub GridControlPos_Leave(sender As Object, e As EventArgs) Handles GridControlPos.Leave
|
|
Save_POSGrid_Layout()
|
|
End Sub
|
|
|
|
Private Sub grvwGridPos_RowStyle(sender As Object, e As DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs) Handles grvwGridPos.RowStyle
|
|
If e.RowHandle = -1 Then
|
|
Exit Sub
|
|
End If
|
|
If e.RowHandle = DevExpress.XtraGrid.GridControl.AutoFilterRowHandle Then
|
|
e.Appearance.BackColor = Color.Orange 'LemonChiffon
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Sub grvwGrid_RowStyle(sender As Object, e As DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs) Handles grvwGrid.RowStyle
|
|
If e.RowHandle = -1 Then
|
|
IsFilterMode = True
|
|
Exit Sub
|
|
End If
|
|
If e.RowHandle = DevExpress.XtraGrid.GridControl.AutoFilterRowHandle Then
|
|
IsFilterMode = True
|
|
e.Appearance.BackColor = Color.Orange
|
|
Else
|
|
If GRID_TYPE = GridType.Grid Then
|
|
IsFilterMode = False
|
|
Try
|
|
Dim rowCellValue = grvwGrid.GetRowCellValue(e.RowHandle, "ROW_COLOR")
|
|
If rowCellValue <> "" Then
|
|
Dim ColorRow As Color
|
|
Try
|
|
ColorRow = Color.FromName(rowCellValue)
|
|
If LogErrorsOnly = False Then ClassLogger.Add(">> RowBackColor '" & rowCellValue & "' will be used for record: " & Get_Focused_Row_Cell_Value("Record-ID"), False)
|
|
Catch ex As Exception
|
|
ClassLogger.Add(">> RowBackColor '" & rowCellValue & "'could not be converted from name!", False)
|
|
Exit Sub
|
|
End Try
|
|
'Dim c As Color = DirectCast(rowCellValue, Color)
|
|
e.Appearance.BackColor = ColorRow
|
|
e.HighPriority = True
|
|
End If
|
|
Catch ex As Exception
|
|
ClassLogger.Add(">> Unexpected Error in RowStyle: " & ex.Message, False)
|
|
End Try
|
|
End If
|
|
End If
|
|
End Sub
|
|
Private Sub grvwGrid_MouseDown(sender As Object, e As MouseEventArgs) Handles grvwGrid.MouseDown, grvwTiles.MouseDown, grvwCarousel.MouseDown
|
|
Try
|
|
Dim view As BaseView = CType(sender, BaseView)
|
|
|
|
If e.Button = System.Windows.Forms.MouseButtons.Right Then
|
|
GRIDRightMouse_Clicked = True
|
|
Else
|
|
GRIDRightMouse_Clicked = False
|
|
End If
|
|
Dim hitInfo As GridHitInfo = view.CalcHitInfo(New Point(e.X, e.Y))
|
|
If e.Button = System.Windows.Forms.MouseButtons.Left AndAlso hitInfo.InRow AndAlso hitInfo.HitTest <> GridHitTest.RowIndicator Then
|
|
GRIDdownHitInfo = hitInfo
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassLogger.Add(">> Unexpected Error in grvwGrid_MouseDown: " & ex.Message, False)
|
|
End Try
|
|
|
|
End Sub
|
|
Private Sub grvwGrid_MouseMove(sender As Object, e As MouseEventArgs) Handles grvwGrid.MouseMove, grvwTiles.MouseMove, grvwCarousel.MouseMove
|
|
Dim view As BaseView = CType(sender, BaseView)
|
|
|
|
If e.Button = MouseButtons.Left And Not GRIDdownHitInfo Is Nothing Then
|
|
Dim dragSize As Size = SystemInformation.DragSize
|
|
|
|
Dim dragRect As Rectangle = New Rectangle(New Point(GRIDdownHitInfo.HitPoint.X - dragSize.Width / 2, GRIDdownHitInfo.HitPoint.Y - dragSize.Height / 2), dragSize)
|
|
|
|
If Not dragRect.Contains(New Point(e.X, e.Y)) Then
|
|
|
|
view.GridControl.DoDragDrop(GetDragData(view), DragDropEffects.All)
|
|
|
|
GRIDdownHitInfo = Nothing
|
|
|
|
End If
|
|
|
|
End If
|
|
End Sub
|
|
Private Function GetDragData(ByVal view As GridView) As String()
|
|
Dim selection() As Integer = view.GetSelectedRows()
|
|
If selection Is Nothing Then
|
|
Return Nothing
|
|
End If
|
|
Dim count As Integer = selection.Length
|
|
Dim result(count - 1) As String
|
|
For i As Integer = 0 To count - 1
|
|
result(i) = view.GetRowCellDisplayText(selection(i), view.Columns("Record-ID"))
|
|
Next i
|
|
Return result
|
|
End Function
|
|
Private Sub btnAddUser_FollowUp_Click(sender As Object, e As EventArgs) Handles btnAddUser_FollowUp.Click
|
|
If cmbFollowUpUser.SelectedIndex <> -1 And FOLL_UP_ID > 0 Then
|
|
Try
|
|
Dim ins = "INSERT INTO TBPMO_FOLLUPEMAIL_RECORD (FOLLOW_UP_ID,USER_ID,RECORD_ID,ADDED_WHO) VALUES (" & FOLL_UP_ID & ", " & cmbFollowUpUser.SelectedValue & ", " & RECORD_ID & ", '" & USER_USERNAME & "')"
|
|
If ClassDatabase.Execute_non_Query(ins) = True Then
|
|
Load_FUUser(FOLL_UP_ID)
|
|
Update_Status_Label(True, "User added to Follow Up", EditState.Insert)
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Add User2FollowUp_Record: ", ex.Message)
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub btnRemoveUser_FollowUp_Click(sender As Object, e As EventArgs) Handles btnRemoveUser_FollowUp.Click
|
|
If ListBoxUser2Profile.SelectedIndex <> -1 Then
|
|
Try
|
|
Dim del = "DELETE FROM TBPMO_FOLLUPEMAIL_RECORD WHERE GUID = " & ListBoxUser2Profile.SelectedValue
|
|
If ClassDatabase.Execute_non_Query(del, False) = True Then
|
|
Update_Status_Label(True, "User removed from Follow Up", EditState.Update)
|
|
Load_FUUser(FOLL_UP_ID)
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Delete Userlink FollowUp: ", ex.Message)
|
|
End Try
|
|
End If
|
|
End Sub
|
|
Sub Show_Verknuepfungen()
|
|
Dim result As MsgBoxResult
|
|
Dim msg = "Möchten Sie den Parent-Datensatz für den aktuellen Datensatz wirklich aktualisieren?"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Would You like to change the parent-record?"
|
|
End If
|
|
result = MessageBox.Show(msg, "Change parent-record:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result <> MsgBoxResult.Yes Then
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
Dim sql
|
|
sql = "select * from VWPMO_ENTITY_TABLE" & PARENT_ENTITYID.ToString
|
|
CURRENT_PARENT_DT = ClassDatabase.Return_Datatable(sql, True)
|
|
frmChooseParentRecord.ShowDialog()
|
|
|
|
|
|
|
|
If CURRENT_PARENT_RECORD_ID = 0 Then
|
|
MsgBox("No Parent-Record selected. Changing Process will be terminated", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
Dim del = "DELETE FROM TBPMO_RECORD_CONNECT WHERE RECORD2_ID = " & RECORD_ID
|
|
If ClassDatabase.Execute_non_Query(del) = False Then
|
|
MsgBox("Error in deleting old Record-Link. Check the logfile", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
If ClassRecordCommands.ConnectRecord(CURRENT_PARENT_RECORD_ID, RECORD_ID, "ReLInk ENTITY " & ENTITY_ID.ToString) = True Then
|
|
'Save_GridViewParentEntityLayout()
|
|
msg = "Die Parent-Entität wurde erfolgreich aktualisiert!"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "The Parent-Record was changed successful!"
|
|
End If
|
|
MsgBox(msg, MsgBoxStyle.Information)
|
|
Load_Entity_Data_Only()
|
|
End If
|
|
End Sub
|
|
Private Sub DatenNeuLadenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DatenNeuLadenToolStripMenuItem.Click
|
|
Load_Datafor_Entity(True)
|
|
End Sub
|
|
Private Sub grvwGrid_ColumnFilterChanged(sender As Object, e As EventArgs) Handles grvwGrid.ColumnFilterChanged
|
|
SET_ROWCOUNT_STRING()
|
|
Save_Grid_Layout()
|
|
End Sub
|
|
|
|
Sub SET_ROWCOUNT_STRING()
|
|
Dim sw As New SW("SET_ROWCOUNT_STRING")
|
|
If NODE_NAVIGATION = False Then
|
|
Dim selnode As TreeNode = TreeViewMain.SelectedNode
|
|
Dim origtext As String = selnode.Text
|
|
If origtext.Contains(" (") Then
|
|
Dim existingstring = origtext.Substring(0, origtext.IndexOf("(") - 1)
|
|
selnode.Text = String.Format("{0} ({1})", existingstring, grvwGrid.RowCount)
|
|
Else
|
|
selnode.Text = String.Format("{0} ({1})", selnode.Text, grvwGrid.RowCount)
|
|
End If
|
|
End If
|
|
Dim msg = "Anzahl Datensätze: "
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "number of records: "
|
|
End If
|
|
bStaticItem1.Caption = msg & grvwGrid.RowCount
|
|
sw.Done()
|
|
End Sub
|
|
Public Sub New()
|
|
' Dieser Aufruf ist für den Designer erforderlich.
|
|
InitializeComponent()
|
|
|
|
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
|
|
End Sub
|
|
|
|
'Private Sub AxObjectListControl_CausesValidationChanged(sender As Object, e As EventArgs) Handles AxObjectListControl.CausesValidationChanged
|
|
' Console.WriteLine("CausesValidationChanged")
|
|
'End Sub
|
|
|
|
'Private Sub AxObjectListControl_SettingFlagChanged(sender As Object, e As EventArgs) Handles AxObjectListControl.SettingFlagChanged
|
|
' Console.WriteLine("SettingFlagChanged")
|
|
'End Sub
|
|
|
|
'Private Sub AxObjectListControl_Validated(sender As Object, e As EventArgs) Handles AxObjectListControl.Validated
|
|
' Console.WriteLine("Validated")
|
|
'End Sub
|
|
|
|
Private Sub tslblLocked_VisibleChanged(sender As Object, e As EventArgs) Handles tslblLocked.VisibleChanged
|
|
If tslblLocked.Visible = True Then
|
|
Dim msg = "Datensatz - Nur lesenden Zugriff"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Record is read only"
|
|
End If
|
|
tslblLocked.Text = msg
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub tsmi_RecordDelete_Click(sender As Object, e As EventArgs) Handles tsmi_RecordDelete.Click
|
|
Delete_Record()
|
|
End Sub
|
|
|
|
Private Sub KopierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles docCM_Copy.Click
|
|
If ClassWindreamDocGrid.SELECTED_DOC_PATH <> "" Then
|
|
Try
|
|
Dim selectedfile(0) As String
|
|
|
|
selectedfile(0) = ClassWindreamDocGrid.SELECTED_DOC_PATH
|
|
|
|
Dim dataobj As New DataObject
|
|
|
|
dataobj.SetData(DataFormats.FileDrop, True, selectedfile)
|
|
|
|
Clipboard.Clear()
|
|
Clipboard.SetDataObject(dataobj, True)
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Copy file:", ex.Message)
|
|
End Try
|
|
Cursor = Cursors.Default
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub GridViewDoc_Search_FocusedColumnChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedColumnChangedEventArgs) Handles GridViewDoc_Search.FocusedColumnChanged
|
|
|
|
ClassWindreamDocGrid.GetDocItems(GridViewDoc_Search)
|
|
Refresh_DocID()
|
|
End Sub
|
|
|
|
Private Sub GridViewDoc_Search_FocusedRowChanged(sender As Object, e As FocusedRowChangedEventArgs) Handles GridViewDoc_Search.FocusedRowChanged
|
|
|
|
ClassWindreamDocGrid.GetDocItems(GridViewDoc_Search)
|
|
Refresh_DocID()
|
|
End Sub
|
|
Sub Refresh_DocID()
|
|
If ClassWindreamDocGrid.SELECTED_DOC_ID <> 0 Then
|
|
Dim msg = "Doc-ID: " & ClassWindreamDocGrid.SELECTED_DOC_ID.ToString
|
|
bsitmDocID.Caption = msg
|
|
tslblDocIDTab1.Text = msg
|
|
Else
|
|
bsitmDocID.Caption = "DocRow not selected"
|
|
tslblDocIDTab1.Text = "DocRow not selected"
|
|
End If
|
|
End Sub
|
|
Private Sub GridViewDoc_Search_MasterRowExpanded(sender As Object, e As CustomMasterRowEventArgs) Handles GridViewDoc_Search.MasterRowExpanded
|
|
Refresh_DocID()
|
|
End Sub
|
|
Private Sub GridViewDoc_Search_MasterRowExpanding(sender As Object, e As MasterRowCanExpandEventArgs) Handles GridViewDoc_Search.MasterRowExpanding
|
|
Refresh_DocID()
|
|
End Sub
|
|
|
|
Private Sub LöschenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles docCM_RemoveLink.Click
|
|
If RECORD_ID = 0 Then
|
|
ClassHelper.MSGBOX_Handler("INFO", "Attention", "Missing Selection:", "Please select a record!")
|
|
Exit Sub
|
|
End If
|
|
If IsNothing(ClassWindreamDocGrid.DT_RESULTFILES) Then
|
|
Exit Sub
|
|
End If
|
|
If ClassWindreamDocGrid.DT_RESULTFILES.Rows.Count > 0 Then
|
|
Dim msg = "Wollen Sie die Verknüpfung der gewählten Datei/en wirklich entfernen?" & vbNewLine & "Datei/en bleibt/bleiben im DMS/Archiv/Explorer erhalten!"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Would You like to delete only the references?" & vbNewLine & "File(s) will stay in ECM/Archive/Explorer!"
|
|
End If
|
|
Dim result As MsgBoxResult
|
|
result = MessageBox.Show(msg, "Confirmation:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result = MsgBoxResult.Yes Then
|
|
Try
|
|
For Each row As DataRow In ClassWindreamDocGrid.DT_RESULTFILES.Rows
|
|
If ClassFileResult.Delete_ResultFile(row.Item("DOC_ID"), RECORD_ID, 0) = True Then
|
|
ClassHelper.InsertEssential_Log(row.Item("DOC_ID"), "DOC-ID", "RECORD LINK REMOVED FROM DOC-SEARCH")
|
|
Cursor = Cursors.WaitCursor
|
|
RUN_WDSEARCH_GRID()
|
|
End If
|
|
|
|
'Dim DT_INDICES As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBPMO_WD_OBJECTTYPE WHERE OBJECT_TYPE = '" & row.Item("OBJECTTYPE") & "'", True)
|
|
'If Not IsNothing(DT_INDICES) Then
|
|
' If DT_INDICES.Rows.Count = 1 Then
|
|
' 'Record-Links entfernen
|
|
' If clsWD_SET.REMOVE_VEKTOR_LINK(row.Item("DOC_PATH"), DT_INDICES.Rows(0).Item("IDXNAME_RECORDID"), RECORD_ID) = True Then
|
|
' 'ENTITY-Links entfernen
|
|
' If clsWD_SET.REMOVE_VEKTOR_LINK(row.Item("DOC_PATH"), DT_INDICES.Rows(0).Item("IDXNAME_ENTITYID"), ENTITY_ID) = True Then
|
|
|
|
' Else
|
|
' MsgBox("Could not remove Vektor-Link ENTITY! Check logfile.", MsgBoxStyle.Exclamation)
|
|
' End If
|
|
' Else
|
|
' MsgBox("Could not remove Vektor-Link RECORD! Check logfile.", MsgBoxStyle.Exclamation)
|
|
' End If
|
|
' End If
|
|
'End If
|
|
Next
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Removing links from file:", ex.Message)
|
|
End Try
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub EigenschaftenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles docCM_PropertiesFile.Click
|
|
Show_File_Properties()
|
|
End Sub
|
|
Sub Show_File_Properties()
|
|
If IsNothing(ClassWindreamDocGrid.DT_RESULTFILES) Then
|
|
MsgBox("Could not read File Parameters(4)!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
For Each row As DataRow In ClassWindreamDocGrid.DT_RESULTFILES.Rows
|
|
If row.Item("DOC_PATH") <> "" Then
|
|
Cursor = Cursors.WaitCursor
|
|
Dim sei As New SHELLEXECUTEINFO
|
|
sei.cbSize = Marshal.SizeOf(sei)
|
|
sei.lpVerb = "properties"
|
|
sei.lpFile = row.Item("DOC_PATH")
|
|
sei.nShow = SW_SHOW
|
|
sei.fMask = SEE_MASK_INVOKEIDLIST
|
|
If Not ShellExecuteEx(sei) Then
|
|
Dim ex As New System.ComponentModel.Win32Exception(System.Runtime.InteropServices.Marshal.GetLastWin32Error())
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Open file propertys:", ex.Message)
|
|
End If
|
|
End If
|
|
Cursor = Cursors.Default
|
|
Next
|
|
End Sub
|
|
Private Sub DateiÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles docCM_Open.Click
|
|
Open_File()
|
|
End Sub
|
|
Private Sub GridControlDocSearch_DoubleClick(sender As Object, e As EventArgs) Handles GridControlDocSearch.DoubleClick
|
|
Open_File()
|
|
End Sub
|
|
|
|
Private Sub TabWindream_Leave(sender As Object, e As EventArgs) Handles TabWindream.Leave
|
|
Save_DocGrid_Layout()
|
|
End Sub
|
|
|
|
Private Sub GridControlDocSearch_DragDrop(sender As Object, e As DragEventArgs) Handles GridControlDocSearch.DragDrop
|
|
Drag_Drop(e)
|
|
End Sub
|
|
|
|
Private Sub tslblFileslocked_VisibleChanged(sender As Object, e As EventArgs) Handles tslblFileslocked.VisibleChanged
|
|
If tslblFileslocked.Visible = True Then
|
|
Dim msg = "Dateizugriffsrechte eingeschränkt"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "File-accessrights limited"
|
|
End If
|
|
tslblFileslocked.Text = msg
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub tsButtonCancel_Click(sender As Object, e As EventArgs) Handles tsButtonCancel.Click
|
|
If CtrlCommandUI.IsInsert = True Then
|
|
If ClassHelper.DeleteRecord(SELECTED_RECORD_ID, "DELETE DURING INSERT(Hit Cancel)") = False Then
|
|
Dim msg = "Der Datensatz '" & SELECTED_RECORD_ID & "' konnte nicht gelöscht werden. Überprüfen Sie das log"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "The record '" & SELECTED_RECORD_ID & "' could not be deleted. Check the log"
|
|
End If
|
|
MsgBox(msg, MsgBoxStyle.Exclamation)
|
|
End If
|
|
End If
|
|
tsButtonCancel.Visible = False
|
|
If ADD_RECORDS_CONSTR = False Then
|
|
tsButtonAdd.Enabled = False
|
|
Else
|
|
tsButtonAdd.Enabled = True
|
|
End If
|
|
CtrlCommandUI.IsInsert = False
|
|
INSERT_IN_ACTION = False
|
|
RECORD_CHANGED = False
|
|
|
|
' Den derzeitigen Record Neuladen
|
|
Column_Row_Handler("tsButtonCancel_Click")
|
|
End Sub
|
|
|
|
Private Sub tsbtnRedo_Click(sender As Object, e As EventArgs) Handles tsbtnRedo.Click
|
|
Me.Cursor = Cursors.WaitCursor
|
|
Dim proc = String.Format("EXEC PRPMO_REDO_RECORD_CHANGES {0}", RECORD_ID)
|
|
If ClassDatabase.Execute_non_Query_withConn(proc, 1) = True Then
|
|
RECORD_ID = 0
|
|
Column_Row_Handler("tsbtnRedo_Click")
|
|
Me.Cursor = Cursors.Default
|
|
End If
|
|
|
|
End Sub
|
|
|
|
#Region "TrySave Funktionen"
|
|
Public Function TrySave_RequiredControlsFilled() As Boolean
|
|
Dim missingValues As New List(Of String)
|
|
missingValues = ClassControlValues.CheckRequiredControlValues(CtrlBuilder.MasterPanel.Controls)
|
|
|
|
If missingValues.Count > 0 Then
|
|
Dim RequiredControlNames = String.Join(vbNewLine, missingValues)
|
|
|
|
If (USER_LANGUAGE = "de-DE") Then
|
|
Dim message = String.Format("Die folgenden Steuerelemente müssen ausgefüllt sein: {0}{1}", vbNewLine, RequiredControlNames)
|
|
MessageBox.Show(message, "Muss-Felder ausfüllen", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
|
Else
|
|
Dim message = String.Format("The following controls must be filled with values: {0}{1}", vbNewLine, RequiredControlNames)
|
|
MessageBox.Show(message, "Fill Required Controls", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
|
End If
|
|
|
|
Focus_Control(missingValues.First())
|
|
|
|
' Muss-Felder sind noch nicht ausgefüllt worden
|
|
Return False
|
|
Else
|
|
' Muss-Felder sind alle ausgefüllt
|
|
Return True
|
|
End If
|
|
End Function
|
|
''' <summary>
|
|
''' Überprüft beim manuellen Speichern, ob Datensatz verändert wurde und
|
|
''' ob alle Muss-Felder ausgefüllt wurden
|
|
''' </summary>
|
|
''' <returns>
|
|
''' Gibt False zurück, wenn nicht alle Muss-Felder gefüllt wurde,
|
|
''' ansonsten True
|
|
''' </returns>
|
|
Public Function TrySave_User() As Boolean
|
|
Try
|
|
'EDIT_STATE = EditState.None
|
|
'Update_Status_Label(False)
|
|
Dim RequiredControlsFilled As Boolean = TrySave_RequiredControlsFilled()
|
|
|
|
If RECORD_CHANGED = False And RequiredControlsFilled = True Then
|
|
' Datensatz wurde nicht verändert
|
|
Return True
|
|
Else
|
|
If RequiredControlsFilled = False Then
|
|
Return False
|
|
End If
|
|
End If
|
|
|
|
If RequiredControlsFilled = True Then
|
|
TrySave_DoSave()
|
|
|
|
Return True
|
|
Else
|
|
Return False
|
|
End If
|
|
Catch ex As Exception
|
|
MessageBox.Show("Error in TrySave_User: " & vbNewLine & ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
Public Sub TrySave_DoSave()
|
|
ERROR_WHILE_SAVING = False
|
|
' Record Speichern
|
|
Dim ResultMessage = CtrlCommandUI.SaveRecord(SELECTED_RECORD_ID, ENTITY_ID, PARENT_RECORDID)
|
|
If ResultMessage <> "ERROR" Then
|
|
' Status anzeigen
|
|
Update_Status_Label(True, ResultMessage)
|
|
Else
|
|
ERROR_WHILE_SAVING = True
|
|
End If
|
|
'Jetzt die für die Entität notwendigen Prroceduren ausführen
|
|
Customer_Run_Procedures()
|
|
' RECORD_CHANGED zurücksetzen
|
|
RECORD_CHANGED = False
|
|
'Liste der geänderten Control Values leeren
|
|
CtrlBuilder.ControlsChanged.Clear()
|
|
End Sub
|
|
|
|
''' <summary>
|
|
''' Fragt den Benutzer beim Datensatzwechsel, ob Änderungen gespeichert werden sollen. Gibt False zurück, wenn Mussfelder ausgefüllt werden müssen, ansonsten True.
|
|
''' </summary>
|
|
Public Function TrySave_Automatic() As Boolean
|
|
Try
|
|
EDIT_STATE = EditState.None
|
|
'Update_Status_Label(False)
|
|
|
|
If RECORD_CHANGED = True Then
|
|
Dim ShouldSave As DialogResult
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
ShouldSave = MessageBox.Show("Sie haben ungespeicherte Änderungen. Wollen Sie diese speichern?", "Ungespeicherte Änderungen", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
Else
|
|
ShouldSave = MessageBox.Show("There are unsaved changes. Would You like to save?", "Unsaved changes", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
End If
|
|
|
|
' Änderungen sollen gespeichert werden
|
|
If ShouldSave = DialogResult.Yes Then
|
|
|
|
If CtrlCommandUI.IsInsert Then
|
|
EDIT_STATE = EditState.None
|
|
End If
|
|
|
|
Dim RequiredControlsFilled As Boolean = TrySave_RequiredControlsFilled()
|
|
|
|
If RequiredControlsFilled = True Then
|
|
' Änderungen sollen gespeichert werden,
|
|
' Muss-Felder sind alle ausgefüllt
|
|
TrySave_DoSave()
|
|
' Hinzufügen Button wieder aktivieren
|
|
If ADD_RECORDS_CONSTR = False Then
|
|
tsButtonAdd.Enabled = False
|
|
Else
|
|
tsButtonAdd.Enabled = True
|
|
End If
|
|
If CtrlCommandUI.IsInsert Then
|
|
Lock_RecordControls(True)
|
|
End If
|
|
Return True
|
|
Else
|
|
' Änderungen sollen gespeichert werden,
|
|
' aber Muss-Felder sind noch nicht ausgefüllt worden
|
|
Return False
|
|
End If
|
|
Else ' Änderungen sollen nicht gespeichert werden
|
|
' Angelegten Record löschen
|
|
If CtrlCommandUI.IsInsert Then
|
|
If ClassHelper.DeleteRecord(SELECTED_RECORD_ID, "TrySave - UserdecidedNotToSave - ENTITY-ID: " & CURRENT_ENTITY_ID) = True Then
|
|
CtrlCommandUI.IsInsert = False
|
|
INSERT_IN_ACTION = False
|
|
End If
|
|
End If
|
|
|
|
' Änderungen sollen nicht gespeichert werden
|
|
RECORD_CHANGED = False
|
|
tsButtonCancel.Visible = False
|
|
' Hinzufügen Button wieder aktivieren
|
|
If ADD_RECORDS_CONSTR = False Then
|
|
tsButtonAdd.Enabled = False
|
|
Else
|
|
tsButtonAdd.Enabled = True
|
|
End If
|
|
|
|
Return True
|
|
End If
|
|
Else
|
|
|
|
' Datensatz wurde nicht verändert
|
|
Return True
|
|
End If
|
|
Catch ex As Exception
|
|
MessageBox.Show("Error in TrySave_Automatic: " & vbNewLine & ex.Message)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
#End Region
|
|
|
|
Private Sub SucheAnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SucheAnzeigenToolStripMenuItem.Click
|
|
grvwGrid.ShowFindPanel()
|
|
grvwGrid.FindFilterText = ""
|
|
End Sub
|
|
|
|
Private Sub MassenänderungToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles tsmiMassChanges.Click
|
|
Try
|
|
Dim list As New ArrayList
|
|
Dim collist As New ArrayList
|
|
For i = 0 To grvwGrid.RowCount
|
|
Dim recid = grvwGrid.GetRowCellValue(i, "Record-ID")
|
|
If Not IsNothing(recid) Then
|
|
list.Add(recid)
|
|
End If
|
|
Next
|
|
For Each col As DevExpress.XtraGrid.Columns.GridColumn In grvwGrid.VisibleColumns
|
|
Dim name = col.Name
|
|
If name.StartsWith("col") Then
|
|
name = name.Substring(3)
|
|
End If
|
|
collist.Add(name)
|
|
Next
|
|
MASS_COLUMN_LIST = collist
|
|
MASS_RECORD_IDs2CHANGE = list
|
|
CURRENT_ENTITY_ID = ENTITY_ID
|
|
Save_Grid_Layout()
|
|
frmMass_Change.ShowDialog()
|
|
If SUCCESSFULL = True Then
|
|
Cursor = Cursors.WaitCursor
|
|
Load_Datafor_Entity(True)
|
|
Cursor = Cursors.Default
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in MassChange Collector:", ex.Message)
|
|
End Try
|
|
End Sub
|
|
Private Sub GridViewDoc_Search_ColumnWidthChanged(sender As Object, e As ColumnEventArgs) Handles GridViewDoc_Search.ColumnWidthChanged
|
|
Save_DocGrid_Layout()
|
|
End Sub
|
|
Private Sub UmbenennenToolStripMenuItem_MouseHover(sender As Object, e As EventArgs)
|
|
Display_Filename()
|
|
End Sub
|
|
Sub Display_Filename()
|
|
Try
|
|
Dim RENAME_DOC_PATH
|
|
Try
|
|
RENAME_DOC_PATH = GridViewDoc_Search.GetFocusedRowCellValue(GridViewDoc_Search.Columns("FULLPATH"))
|
|
Catch ex As Exception
|
|
ClassLogger.Add(">> Attention: Could not set DocVariable RENAME_DOC_PATH: " & ex.Message, False)
|
|
RENAME_DOC_PATH = Nothing
|
|
End Try
|
|
If IsNothing(ClassWindreamDocGrid.DT_RESULTFILES) Then
|
|
MsgBox("Could not read File Parameters!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
If RENAME_DOC_PATH <> "" Then
|
|
Dim FileToRename As String
|
|
FileToRename = Path.GetFileNameWithoutExtension(RENAME_DOC_PATH)
|
|
CMDoc_TextBoxRenameFile.Text = FileToRename
|
|
CMDoc_TextBoxRenameFile.Enabled = True
|
|
Else
|
|
CMDoc_TextBoxRenameFile.Enabled = False
|
|
End If
|
|
Catch ex As Exception
|
|
MsgBox("Unexpected Error in getting the filename: " & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub DateiMitDatensatzVerknüpfenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles docCM_linkRecord.Click
|
|
Try
|
|
ClassWindreamDocGrid.GetDocItems(GridViewDoc_Search)
|
|
If IsNothing(ClassWindreamDocGrid.DT_RESULTFILES) Then
|
|
MsgBox("Could not read File Parameters (LinkRecord)!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
Refresh_Selected_Table()
|
|
Dim frm As New frmDocRecordLink ' frmDocLink_Record_Entities() 'fileName, ClassWindreamDocGrid.RESULT_OBJECTTYPE)
|
|
frm.Show()
|
|
Catch ex As Exception
|
|
MsgBox("Unexpected Error in Linking Record: " & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub DetailAnsichtDatensatzToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DetailAnsichtDatensatzToolStripMenuItem.Click
|
|
ClassJumpRecord.JumpToRecord(0, RECORD_ID)
|
|
JUMP_RECORD_ID = 0
|
|
End Sub
|
|
Private Sub GridViewDoc_Search_RowStyle(sender As Object, e As Views.Grid.RowStyleEventArgs) Handles GridViewDoc_Search.RowStyle
|
|
If e.RowHandle = DevExpress.XtraGrid.GridControl.AutoFilterRowHandle Then
|
|
e.Appearance.BackColor = Color.Yellow
|
|
Else
|
|
If e.RowHandle = -1 Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Try
|
|
Dim rowCellValue = GridViewDoc_Search.GetRowCellValue(e.RowHandle, "in work?")
|
|
If Not IsNothing(rowCellValue) Then
|
|
Dim inwork = rowCellValue
|
|
If inwork = True Then
|
|
e.Appearance.BackColor = Color.Orchid
|
|
e.HighPriority = True
|
|
End If
|
|
End If
|
|
|
|
|
|
|
|
Catch ex As Exception
|
|
ClassLogger.Add(">> Unexpected Error in Checking Value In Work: " & ex.Message, False)
|
|
End Try
|
|
|
|
Try
|
|
Dim DROPDOWN_VALUE
|
|
If Not IsNothing(DT_DOCRESULT_DROPDOWN_ITEMS) Then
|
|
'Den ColumnTitle aus ConfigTableholen
|
|
If DT_DOCRESULT_DROPDOWN_ITEMS.Rows.Count > 0 Then
|
|
For Each confrow As DataRow In DT_DOCRESULT_DROPDOWN_ITEMS.Rows
|
|
Dim CAPTION = confrow.Item("HEADER_CAPTION")
|
|
DROPDOWN_VALUE = GridViewDoc_Search.GetRowCellValue(e.RowHandle, CAPTION)
|
|
If Not IsNothing(DROPDOWN_VALUE) Then
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
If Not IsNothing(DROPDOWN_VALUE) Then
|
|
Dim ColorRow As Color
|
|
Dim expression As String = String.Format("VALUE = '{0}'", DROPDOWN_VALUE)
|
|
Dim matchingRows() As DataRow = DT_DOCRESULT_DROPDOWN_ITEMS.Select(expression, "SEQUENCE")
|
|
Dim rowcolorname As String = ""
|
|
'Die Color für den value auswählen
|
|
For Each matchingRow As DataRow In matchingRows
|
|
rowcolorname = ""
|
|
If Not IsDBNull(matchingRow.Item("COLOR")) Then
|
|
rowcolorname = matchingRow.Item("COLOR")
|
|
End If
|
|
|
|
If rowcolorname <> "" Then
|
|
Exit For
|
|
End If
|
|
Next
|
|
If rowcolorname <> "" Then
|
|
ColorRow = Color.FromName(rowcolorname)
|
|
e.Appearance.BackColor = ColorRow
|
|
e.HighPriority = True
|
|
End If
|
|
|
|
|
|
'Dim c As Color = DirectCast(rowCellValue, Color)
|
|
|
|
End If
|
|
End If
|
|
|
|
|
|
End If
|
|
Catch ex As Exception
|
|
ClassLogger.Add(">> Unexpected Error in RowStyle-Color Dropdown: " & ex.Message, False)
|
|
End Try
|
|
|
|
End If
|
|
End Sub
|
|
Sub ContextMenu_Read()
|
|
docCM_Open.Enabled = True
|
|
docCM_Copy.Enabled = False
|
|
docCM_RenameMain.Enabled = False
|
|
docCM_InWork.Enabled = False
|
|
docCM_linkRecord.Enabled = False
|
|
docCM_Showlinks.Enabled = False
|
|
docCM_CheckRights.Enabled = False
|
|
docCM_DeleteFile.Enabled = False
|
|
docCM_RemoveLink.Enabled = False
|
|
WindreamToolStripMenuItem.Enabled = False
|
|
End Sub
|
|
Sub ContextMenu_Write()
|
|
docCM_Open.Enabled = True
|
|
docCM_Copy.Enabled = True
|
|
docCM_RenameMain.Enabled = True
|
|
docCM_InWork.Enabled = True
|
|
docCM_linkRecord.Enabled = True
|
|
docCM_Showlinks.Enabled = True
|
|
docCM_CheckRights.Enabled = True
|
|
docCM_DeleteFile.Enabled = True
|
|
docCM_RemoveLink.Enabled = True
|
|
WindreamToolStripMenuItem.Enabled = True
|
|
End Sub
|
|
Private Sub ContextMenuStripResultFiles_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles ContextMenuStripResultFiles.Opening
|
|
Try
|
|
If clsWindream.SESSION_CREATED = False Then
|
|
ClassHelper.MSGBOX_Handler("INFO", "Attention", "Check Your windream-connection and restart ADDI afterwards.", "Could not create a windream session!")
|
|
e.Cancel = True
|
|
End If
|
|
Me.Cursor = Cursors.WaitCursor
|
|
|
|
ClassWindreamDocGrid.GetDocItems(GridViewDoc_Search)
|
|
If IsNothing(ClassWindreamDocGrid.DT_RESULTFILES) Then
|
|
e.Cancel = True
|
|
End If
|
|
Refresh_DocID()
|
|
If ClassWindreamDocGrid.DT_RESULTFILES.Rows.Count = 1 Then
|
|
If ClassWindreamDocGrid.DT_RESULTFILES.Rows(0).Item("DOC_ID") = 0 Then
|
|
e.Cancel = True
|
|
End If
|
|
End If
|
|
File_in_Work()
|
|
Dim Result = ClassDOC_SEARCH.Get_File_Rights(ClassWindreamDocGrid.SELECTED_DOC_ID)
|
|
If Not IsNothing(Result) Then
|
|
ROW_READ_ONLY = False
|
|
Select Case Result.ToString
|
|
Case "R"
|
|
If USER_IS_ADMIN = False Then
|
|
ContextMenu_Read()
|
|
Else
|
|
ClassLogger.Add(">> FileRight is R but User is Admin!! - Check the configuration!", False)
|
|
End If
|
|
|
|
ROW_READ_ONLY = True
|
|
Case "RW"
|
|
ContextMenu_Write()
|
|
Case "RWA"
|
|
ContextMenu_Write()
|
|
Case ""
|
|
If USER_IS_ADMIN = False Then
|
|
ContextMenu_Read()
|
|
Else
|
|
ClassLogger.Add(">> FileRight is '' but User is Admin!! - Check the configuration!", False)
|
|
End If
|
|
ROW_READ_ONLY = True
|
|
End Select
|
|
Else
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Getting rights - check the log")
|
|
e.Cancel = True
|
|
End If
|
|
If ROW_READ_ONLY = False Then
|
|
If RIGHT_READ_ONLY_DOC = True Then
|
|
If USER_IS_ADMIN = False Then
|
|
ContextMenu_Read()
|
|
Else
|
|
ClassLogger.Add(">> RIGHT_READ_ONLY_DOC = True but User is Admin!! - Check the configuration!", False)
|
|
End If
|
|
End If
|
|
End If
|
|
If ClassWindreamDocGrid.DT_RESULTFILES.Rows.Count = 1 Then
|
|
If ClassWindreamDocGrid.DT_RESULTFILES.Rows(0).Item("DISPLAYNAME") <> "" Then
|
|
docCM_RenameMain.Visible = True
|
|
Set_Displayname()
|
|
Else
|
|
docCM_RenameMain.Visible = False
|
|
End If
|
|
Else
|
|
docCM_RenameMain.Visible = False
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Opening DocContextMenu: ", ex.Message)
|
|
e.Cancel = True
|
|
Finally
|
|
Me.Cursor = Cursors.Default
|
|
End Try
|
|
|
|
|
|
End Sub
|
|
Sub File_in_Work()
|
|
docCM_InWork.Enabled = True
|
|
Try
|
|
Dim expression As String
|
|
expression = "DocID = " & ClassWindreamDocGrid.SELECTED_DOC_ID
|
|
Dim foundRowsLevel0() As DataRow
|
|
' Use the Select method to find all rows matching the filter.
|
|
foundRowsLevel0 = CURRENT_DOC_RESULTS.Select(expression)
|
|
Try
|
|
IW_USER = foundRowsLevel0(0)("IN_WORK_USER")
|
|
IW_COMMENT = foundRowsLevel0(0)("IN_WORK_COMMENT")
|
|
Catch ex As Exception
|
|
IW_USER = ""
|
|
IW_COMMENT = ""
|
|
End Try
|
|
Dim displ As String
|
|
If CBool(ClassWindreamDocGrid.SELECTED_INWORK) = True Then
|
|
If IW_USER.ToUpper = USER_USERNAME.ToUpper Or USER_IS_ADMIN Then
|
|
displ = "Datei wieder freigeben"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
displ = "Set file free"
|
|
End If
|
|
Else
|
|
displ = "Datei in Bearbeitung (zeige Info)"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
displ = "File is in work (show details)"
|
|
End If
|
|
End If
|
|
Else
|
|
displ = "Datei in Bearbeitung nehmen"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
displ = "Lock file for working"
|
|
End If
|
|
End If
|
|
docCM_InWork.Text = displ
|
|
Catch ex As Exception
|
|
ClassLogger.Add(">> Unexpected Error in File-Work Info: " & ex.Message, False)
|
|
docCM_InWork.Enabled = False
|
|
End Try
|
|
End Sub
|
|
Private Sub TSMI_inWork_Click(sender As Object, e As EventArgs) Handles docCM_InWork.Click
|
|
If IsNothing(ClassWindreamDocGrid.DT_RESULTFILES) Then
|
|
MsgBox("Could not read File Parameters (3)!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
ClassFileResult.DocID = ClassWindreamDocGrid.SELECTED_DOC_ID
|
|
If ClassWindreamDocGrid.SELECTED_INWORK = True Then ' Datei ist in Bearbeitung
|
|
Dim msglbl As String
|
|
Dim msg1 As String
|
|
If IW_USER.ToUpper = USER_USERNAME.ToUpper Or USER_IS_ADMIN Then
|
|
If ClassFileResult.Set_InWork(0, "") = True Then
|
|
RUN_WDSEARCH_GRID()
|
|
End If
|
|
Else
|
|
msglbl = "In Bearbeitung durch User '" & IW_USER & "' - Kommentar:"
|
|
msg1 = IW_COMMENT
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msglbl = "File in Work through User '" & IW_USER & "' - Comment:"
|
|
End If
|
|
ClassHelper.MSGBOX_Handler("INFO", "Information file", msglbl, msg1)
|
|
End If
|
|
Else
|
|
frmFileInWork.ShowDialog()
|
|
ClassWindreamDocGrid.SELECTED_INWORK = ClassFileResult.InWork
|
|
RUN_WDSEARCH_GRID()
|
|
End If
|
|
End Sub
|
|
|
|
Sub Set_Displayname()
|
|
Try
|
|
If ClassWindreamDocGrid.DT_RESULTFILES.Rows.Count = 1 Then
|
|
If ClassWindreamDocGrid.DT_RESULTFILES.Rows(0).Item("DISPLAYNAME") <> "" Then
|
|
CMDoc_TextBoxRenameDisplay.Text = ClassWindreamDocGrid.DT_RESULTFILES.Rows(0).Item("DISPLAYNAME")
|
|
CMDoc_TextBoxRenameDisplay.Enabled = True
|
|
End If
|
|
Else
|
|
CMDoc_TextBoxRenameDisplay.Enabled = False
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Unexpected Error in getting the Displayname: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
Private Sub TestToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles docCM_CheckRights.Click
|
|
Dim msg = "Die Rechte wurden erfolgreich überprüft und aktualisiert!"
|
|
CURRENT_RECORD_ID = RECORD_ID
|
|
If IsNothing(ClassWindreamDocGrid.DT_RESULTFILES) Then
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Could not read file Parameters: ", "Could not read file Parameters (6)")
|
|
Exit Sub
|
|
End If
|
|
Dim err As Boolean = False
|
|
Cursor = Cursors.WaitCursor
|
|
For Each row As DataRow In ClassWindreamDocGrid.DT_RESULTFILES.Rows
|
|
If ClassDOC_SEARCH.SET_WD_RIGHTS(row.Item("DOC_ID"), row.Item("DOC_PATH")) = True Then
|
|
|
|
Else
|
|
err = True
|
|
msg = String.Format("Datei '" & vbNewLine & "{0}'" & vbNewLine & "Bitte prüfen Sie die Logdatei!", row.Item("DOC_PATH"))
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = String.Format("file '" & vbNewLine & "{0}'" & vbNewLine & "Please check the logfile!", row.Item("DOC_PATH"))
|
|
End If
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error Rights module", "Error while setting rights: (Scroll down) ", msg)
|
|
End If
|
|
'Create Session um Fehler bei windows Session icht zu erzeugen
|
|
FAU_AD_USER = ""
|
|
clsWindream.Create_Session()
|
|
Next
|
|
Cursor = Cursors.Default
|
|
If err = False Then
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "The rights were successfully renewed!"
|
|
End If
|
|
MsgBox(msg, MsgBoxStyle.Information)
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Sub ActivateAllTabs()
|
|
' Alle Tabs aktivieren
|
|
For Each tab As DevExpress.XtraTab.XtraTabPage In TCDetails.TabPages
|
|
If (tab.Name <> "TabDetails") Then
|
|
tab.PageEnabled = True
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Public Sub DeactivateTabs()
|
|
' Alle Tab Pages außer Detailansicht deaktivieren
|
|
' Zur Detailansicht springen
|
|
For Each tab As DevExpress.XtraTab.XtraTabPage In TCDetails.TabPages
|
|
If (tab.Name <> "TabDetails") And tab.Name <> "TabWindream" And tab.Name <> "TabPos" Then
|
|
tab.PageEnabled = False
|
|
Else
|
|
TCDetails.SelectedTabPage = tab
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub TCDetails_SelectedPageChanging(sender As Object, e As DevExpress.XtraTab.TabPageChangingEventArgs) Handles TCDetails.SelectedPageChanging
|
|
If EDIT_STATE = EditState.Insert Or EDIT_STATE = EditState.Update Then
|
|
If Save_Record() = False Then
|
|
e.Cancel = True
|
|
End If
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub ToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles docCM_DeleteFile.Click
|
|
If RECORD_ID = 0 And CURRENT_SEARCH_TYPE <> "ENTITY" Then
|
|
MsgBox("Please select a record!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
If IsNothing(ClassWindreamDocGrid.DT_RESULTFILES) Then
|
|
MsgBox("Could not read File Parameters (DELETE FILES)!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
If ClassWindreamDocGrid.DT_RESULTFILES.Rows.Count = 0 Then
|
|
MsgBox("Please choose a file!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
Dim msg = "Sind Sie sicher, dass Sie die Datei(en) endgültig löschen wollen?"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Are You sure You want to permanently delete this file(s)?"
|
|
End If
|
|
Dim result1 As MsgBoxResult
|
|
result1 = MessageBox.Show(msg, "Confirmation:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result1 = MsgBoxResult.Yes Then
|
|
For Each row As DataRow In ClassWindreamDocGrid.DT_RESULTFILES.Rows
|
|
If row.Item("DOC_PATH") <> "" Then
|
|
Try
|
|
If Not IsNothing(row.Item("DOC_ID")) Then
|
|
Dim Count As Integer = ClassDatabase.Execute_Scalar("SELECT COUNT(GUID) FROM TBPMO_DOC_RECORD_LINK WHERE DOC_ID = " & row.Item("DOC_ID"), True)
|
|
If Count > 1 And CURRENT_SEARCH_TYPE = "RECORD" Then
|
|
msg = "Diese Datei ist noch mit anderen Datensätzen verknüpft! Lediglich die Verknüpfung zum aktuellen Datensatz wird gelöscht!"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "This file is also linked to other records! Only the link for this Record will be deleted!"
|
|
End If
|
|
MsgBox(msg, MsgBoxStyle.Information)
|
|
If ClassFileResult.Delete_ResultFile(row.Item("DOC_ID"), RECORD_ID, 0) = True Then
|
|
ClassHelper.InsertEssential_Log(row.Item("DOC_ID"), "DOC-ID", "FILE LINK DELETED BY USER")
|
|
End If
|
|
Else
|
|
If CURRENT_SEARCH_TYPE = "FULLTEXT" Or CURRENT_SEARCH_TYPE = "ENTITY" Then
|
|
RECORD_ID = 0
|
|
End If
|
|
If ClassFileResult.Delete_ResultFile(row.Item("DOC_ID"), RECORD_ID, 1) = True Then
|
|
If clsWD_SET.Delete_WDFile(row.Item("DOC_PATH")) = True Then
|
|
ClassHelper.InsertEssential_Log(row.Item("DOC_ID"), "DOC-ID", "FILE DELETED BY USER")
|
|
End If
|
|
|
|
Else
|
|
msg = String.Format("Die Datei {0} konnte nicht gelöscht werden! Prüfen Sie die logfile!", row.Item("DOC_PATH"))
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = String.Format("The file {0} could not be deleted! Check the logfile!", row.Item("DOC_PATH"))
|
|
End If
|
|
MsgBox(msg, MsgBoxStyle.Critical, "Attention:")
|
|
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
If LICENSE_PROXY = True And DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED Then
|
|
Dim proc = String.Format("EXEC PRPROXY_DOC_CHECK_DELETE {0}", row.Item("DOC_ID"))
|
|
ClassDatabase.Execute_non_Query(proc, True)
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in delete file: ", ex.Message)
|
|
End Try
|
|
|
|
End If
|
|
Next
|
|
If CURRENT_SEARCH_TYPE = "ENTITY" Then
|
|
CURRENT_DT_DOC_ENTITY_SEARCH = Nothing
|
|
End If
|
|
RUN_WDSEARCH_GRID()
|
|
End If
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
Private Sub TreeViewMain_DragDrop(sender As Object, e As DragEventArgs) Handles TreeViewMain.DragDrop
|
|
Try
|
|
|
|
If Not IsNothing(e.Data) Then
|
|
Me.Cursor = Cursors.WaitCursor
|
|
Dim pt As Point
|
|
Dim DestinationNode As TreeNode
|
|
pt = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))
|
|
DestinationNode = CType(sender, TreeView).GetNodeAt(pt)
|
|
Dim node_tag
|
|
Dim ENTITY_STRING
|
|
Dim sql
|
|
If Not IsNothing(DestinationNode) Then
|
|
node_tag = DestinationNode.Tag
|
|
If Not IsNumeric(node_tag) Then
|
|
MsgBox("Could not get a valid Entity!", MsgBoxStyle.Exclamation)
|
|
Me.Cursor = Cursors.Default
|
|
Exit Sub
|
|
End If
|
|
sql = String.Format("SELECT [dbo].[FNPMO_GETOBJECTCAPTION]('{0}','FORMVIEW_TITLE' + CONVERT(VARCHAR(5), FORM_VIEW_ID), {1}) AS 'CAPTION' " &
|
|
"FROM VWPMO_CONSTRUCTOR_FORMS WHERE FORM_ID = {2}", USER_LANGUAGE, CURRENT_SCREEN_ID, node_tag.ToString)
|
|
ENTITY_STRING = ClassDatabase.Execute_Scalar(sql, True)
|
|
sql = String.Format("select count(guid) from TBPMO_CONTROL_ENTITY_LINK where ORIGIN_CTRL_ID in (SELECT GUID FROM TBPMO_CONTROL where FORM_ID = {0}) " &
|
|
"AND LINKED_CTRL_ID IN (SELECT GUID FROM TBPMO_CONTROL where FORM_ID = {1})", ENTITY_ID, node_tag)
|
|
Dim count = ClassDatabase.Execute_Scalar(sql, True)
|
|
If Not IsNothing(count) Then
|
|
If count = 0 Then
|
|
MsgBox("No configuration for changing entity-link!" & vbNewLine & "Please inform Your ADDi-Admin", MsgBoxStyle.Exclamation)
|
|
Me.Cursor = Cursors.Default
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
Dim msg As String = String.Format("Wollen Sie die ausgewählten Zeilen wirklich der Entität '{0}' zuordnen?", ENTITY_STRING.ToString)
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = String.Format("Do You really want to change the entity-link of the selected record to '{0}'?", ENTITY_STRING.ToString)
|
|
End If
|
|
Dim result As MsgBoxResult
|
|
result = MessageBox.Show(msg, "Confirmation:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result = MsgBoxResult.Yes Then
|
|
Save_Grid_Layout()
|
|
|
|
For Each _RECORD As String In e.Data.GetData(GetType(String()))
|
|
'hh
|
|
ClassRightManagement.Check_Set_Rights(_RECORD, ENTITY_ID)
|
|
If RIGHT_EDIT_R = False Then
|
|
msg = String.Format("USER {0} WANTED TO CHANGE ENTITY OF RECORD {1} to {2} but was rejected due to rights", USER_USERNAME, _RECORD, ENTITY_STRING)
|
|
ClassHelper.InsertEssential_Log(_RECORD, "RECORD-ID", msg)
|
|
Continue For
|
|
End If
|
|
Dim sql1 = String.Format("SELECT [dbo].[FNPMO_CUST_ALLOW_ENTITY_RELINK] ({0},{1})", _RECORD, USER_GUID)
|
|
If ClassDatabase.Execute_Scalar(sql1, True) = 0 Then
|
|
msg = String.Format("Verschieben von Datensatz {0} nicht möglich. Kriterien nicht erfüllt!", _RECORD.ToString)
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = String.Format("Changing of entity-link for record {0}not possible - Criteria is invalid!", _RECORD.ToString)
|
|
End If
|
|
MsgBox(msg, MsgBoxStyle.Information)
|
|
Continue For
|
|
End If
|
|
ClassLogger.Add(String.Format("Relinking entity of record '{0}' to entity '{1}'?", _RECORD, ENTITY_STRING.ToString), False)
|
|
|
|
Dim upd = String.Format("UPDATE TBPMO_RECORD SET FORM_ID = {0} where GUID = {1}", node_tag, _RECORD)
|
|
If ClassDatabase.Execute_non_Query(upd) = True Then
|
|
If DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED = True Then
|
|
ClassDatabase.Execute_non_Query(upd, True)
|
|
Dim del = String.Format("DELETE FROM TBPMO_ENTITY_TABLE{1} WHERE [Record-ID] = {0}", _RECORD, ENTITY_ID)
|
|
ClassDatabase.Execute_non_Query(del, True)
|
|
|
|
End If
|
|
msg = String.Format("ENTITY WAS CHANGED TO {0}-{1} by User: {2}", ENTITY_STRING, node_tag, USER_USERNAME)
|
|
ClassHelper.InsertEssential_Log(_RECORD, "RECORD-ID", msg)
|
|
sql = "SELECT T.* FROM VWPMO_DOC_SEARCH T, TBPMO_DOC_RECORD_LINK T1 WHERE T.DocID = T1.DOC_ID AND T1.RECORD_ID = " & _RECORD
|
|
Dim DT_DOCS As DataTable = ClassDatabase.Return_Datatable(sql, True)
|
|
'For Each doc As DataRow In DT_DOCS.Rows
|
|
' Dim DT_INDICES As DataTable = ClassDatabase.Return_Datatable("SELECT * FROM TBPMO_WD_OBJECTTYPE WHERE OBJECT_TYPE = '" & doc.Item("OBJECTTYPE") & "'", True)
|
|
' clsWD_SET.REMOVE_VEKTOR_LINK(doc.Item("FULL_FILENAME"), DT_INDICES.Rows(0).Item("IDXNAME_ENTITYID"), ENTITY_ID)
|
|
'Next
|
|
|
|
sql = String.Format("select ORIGIN_CTRL_ID,LINKED_CTRL_ID from TBPMO_CONTROL_ENTITY_LINK where ORIGIN_CTRL_ID in (SELECT GUID FROM TBPMO_CONTROL where FORM_ID = {0}) " &
|
|
"AND LINKED_CTRL_ID IN (SELECT GUID FROM TBPMO_CONTROL where FORM_ID = {1})", ENTITY_ID, node_tag)
|
|
Dim DT_CHANGE_CTR As DataTable = ClassDatabase.Return_Datatable(sql)
|
|
For Each row As DataRow In DT_CHANGE_CTR.Rows
|
|
upd = String.Format("UPDATE TBPMO_CONTROL_VALUE SET CONTROL_ID = {0}, CHANGED_WHO = '{3}' WHERE CONTROL_ID = {1} AND RECORD_ID = {2}", row.Item("LINKED_CTRL_ID"), row.Item("ORIGIN_CTRL_ID"), _RECORD, USER_USERNAME)
|
|
ClassDatabase.Execute_non_Query(upd)
|
|
If DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED = True Then
|
|
ClassDatabase.Execute_non_Query(upd, True)
|
|
End If
|
|
Next
|
|
Dim execsql = String.Format("EXEC PRPMO_DELETE_RECORD_PMO_TABLE {0},{1}", ENTITY_ID, _RECORD)
|
|
If ClassDatabase.Execute_non_Query(execsql) = True Then
|
|
If DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED = True Then
|
|
ClassDatabase.Execute_non_Query(execsql, True)
|
|
End If
|
|
End If
|
|
execsql = String.Format("EXEC PRPMO_ENTITY_TABLE_RENEW_RECORD {0},{1}", node_tag, _RECORD)
|
|
If ClassDatabase.Execute_non_Query(execsql) = True Then
|
|
ClassDatabase.Execute_non_Query(execsql, True)
|
|
End If
|
|
|
|
End If
|
|
Next
|
|
msg = String.Format("Datensatz/-sätze erfolgreich auf die Entität {0} verlinked (wenn Kriterien erfüllt)!", ENTITY_STRING.ToString)
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = String.Format("The record/s was/were successfully relinked with entity {0} (if criteria matched)", ENTITY_STRING.ToString)
|
|
End If
|
|
MsgBox(msg, MsgBoxStyle.Information)
|
|
If DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED = True Then
|
|
msg = "Sie benutzen einen Proxyserver. Die Daten des neu verlinkten Datensatzes werden Sie evtl. erst nach vollständiger Proxysynchronisation einsehen können!"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = String.Format("You are using a proxy-Server. The new linked record in entity '{0}' might only be displayed after a full synchronisation!", ENTITY_STRING)
|
|
End If
|
|
MsgBox(msg, MessageBoxIcon.Information)
|
|
End If
|
|
Load_Datafor_Entity(True)
|
|
End If
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in DragDrop TreeView: ", ex.Message)
|
|
End Try
|
|
Me.Cursor = Cursors.Default
|
|
End Sub
|
|
|
|
Private Sub TreeViewMain_DragOver(sender As Object, e As DragEventArgs) Handles TreeViewMain.DragOver
|
|
e.Effect = DragDropEffects.Copy
|
|
End Sub
|
|
|
|
Private Sub AuswertungAnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AuswertungAnzeigenToolStripMenuItem.Click
|
|
Dim frm As New frmDiagrams()
|
|
Me.Cursor = Cursors.WaitCursor
|
|
'frm.MdiParent = MAIN_FORM
|
|
frm.Show()
|
|
Me.Cursor = Cursors.Default
|
|
End Sub
|
|
|
|
Private Sub SucheAnzeigenToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles docCM_showGridSearch.Click
|
|
GridViewDoc_Search.ShowFindPanel()
|
|
End Sub
|
|
Private Sub GridViewDoc_Search_ColumnFilterChanged(sender As Object, e As EventArgs) Handles GridViewDoc_Search.ColumnFilterChanged
|
|
Try
|
|
Dim origtext As String = tslblWindreamView.Text
|
|
If origtext.Contains(" (") Then
|
|
Dim existingstring = origtext.Substring(0, origtext.IndexOf("(") - 1)
|
|
tslblWindreamView.Text = String.Format("{0} ({1})", existingstring, GridViewDoc_Search.RowCount)
|
|
Else
|
|
tslblWindreamView.Text = String.Format("{0} ({1})", tslblWindreamView.Text, GridViewDoc_Search.RowCount)
|
|
End If
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End Sub
|
|
Private Sub DateirechteFürUserToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles docCM_GetRights.Click
|
|
Dim result = ClassDOC_SEARCH.Get_File_Rights(ClassWindreamDocGrid.SELECTED_DOC_ID)
|
|
If Not IsNothing(result) Then
|
|
Dim msg = "Das aktuelle Recht für Sie (" & USER_USERNAME & ") ist: "
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Your (" & USER_USERNAME & ") current right is: "
|
|
End If
|
|
msg = msg & result.ToString
|
|
msg = msg & vbNewLine & vbNewLine & "R:" & vbTab & "Read" & vbNewLine & "W:" & vbTab & "Write" & vbNewLine & "A:" & vbTab & "Admin"
|
|
MsgBox(msg, MsgBoxStyle.Information)
|
|
Else
|
|
MsgBox("Could not read the rights for selected file! Check the log for further infomation!", MsgBoxStyle.Exclamation)
|
|
End If
|
|
End Sub
|
|
Private Sub OfficeVorlagenToolStripMenuItem_Click(sender As Object, e As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Private Sub NewVarianttsmi_Click(sender As Object, e As EventArgs)
|
|
|
|
End Sub
|
|
Private Sub RecordDeleteToolStripMenuItem_Click(sender As Object, e As EventArgs)
|
|
Delete_Record()
|
|
End Sub
|
|
Private Sub docCMEntityWideSearch_Click(sender As Object, e As EventArgs) Handles docCMEntityWideSearch.Click
|
|
CURRENT_SEARCH_TYPE = "ENTITY"
|
|
RUN_ENTITY_DOC_SEARCH()
|
|
End Sub
|
|
|
|
Private Sub tsbtnDoc_Refresh_Click(sender As Object, e As EventArgs) Handles tsbtnDoc_Refresh.Click
|
|
RUN_WDSEARCH_GRID()
|
|
End Sub
|
|
|
|
Private Sub Load_Variants()
|
|
Try
|
|
If LICENSE_PROXY = True And DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED Then
|
|
Me.TBPMO_RECORD_VARIANTTableAdapter.Connection.ConnectionString = ClassProxy.MyPROXYConnectionString
|
|
Else
|
|
Me.TBPMO_RECORD_VARIANTTableAdapter.Connection.ConnectionString = MyConnectionString
|
|
End If
|
|
Me.TBPMO_RECORD_VARIANTTableAdapter.Fill(Me.DD_DMSDataSet.TBPMO_RECORD_VARIANT, ENTITY_ID, RECORD_ID)
|
|
Catch ex As System.Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error while loading variants: ", ex.Message)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
|
|
Load_Variants()
|
|
End Sub
|
|
|
|
Private Sub tsbtnVariantDetailView_Click(sender As Object, e As EventArgs) Handles tsbtnVariantDetailView.Click
|
|
|
|
Load_Variant_Record()
|
|
End Sub
|
|
Sub Load_Variant_Record()
|
|
Try
|
|
Dim RECORD_ID = GridViewVariants.GetFocusedRowCellValue(GridViewVariants.Columns("RECORD_ID"))
|
|
If Not IsNothing(RECORD_ID) Then
|
|
ClassJumpRecord.JumpToRecord(0, RECORD_ID)
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Show_Detail_Record: ", ex.Message)
|
|
End Try
|
|
JUMP_RECORD_ID = 0
|
|
End Sub
|
|
|
|
|
|
Private Sub GridControl1_DoubleClick(sender As Object, e As EventArgs) Handles GridControl1.DoubleClick
|
|
Load_Variant_Record()
|
|
End Sub
|
|
|
|
Private Sub ChangeHidepanelToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ChangeHidepanelToolStripMenuItem.Click
|
|
If SplitContainerDetails.CollapsePanel = SplitCollapsePanel.Panel1 Then
|
|
SplitContainerDetails.CollapsePanel = SplitCollapsePanel.Panel2
|
|
Else
|
|
SplitContainerDetails.CollapsePanel = SplitCollapsePanel.Panel1
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub tsbtnPanel1Collapse_Click(sender As Object, e As EventArgs) Handles tsbtnPanel1Collapse.Click
|
|
Collapse_Details()
|
|
End Sub
|
|
Sub Collapse_Details()
|
|
If SplitContainerDetails.Collapsed = False Then
|
|
SplitContainerDetails.CollapsePanel = SplitCollapsePanel.Panel1
|
|
SplitContainerDetails.Collapsed = True
|
|
Dim msg = "Detailbereich 'ausklappen'"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Maximize details"
|
|
End If
|
|
tsbtnPanel1Collapse.Text = msg
|
|
tsbtnPanel1Collapse.Image = My.Resources.arrow_Forward_16xLG
|
|
Else
|
|
SplitContainerDetails.CollapsePanel = SplitCollapsePanel.Panel2
|
|
SplitContainerDetails.Collapsed = False
|
|
Dim msg = "Detailbereich 'einklappen'"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Collapse details"
|
|
End If
|
|
tsbtnPanel1Collapse.Text = msg
|
|
tsbtnPanel1Collapse.Image = My.Resources.arrow_left
|
|
End If
|
|
End Sub
|
|
Private Sub cmsTreeView_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles cmsTreeView.Opening
|
|
tsmiNodeDelete.Visible = False
|
|
Dim control = Me.ActiveControl
|
|
If Not IsNothing(control) Then
|
|
If control.Name <> TreeViewMain.Name Then
|
|
e.Cancel = True
|
|
End If
|
|
If CURRENT_NODE_CONFIGURABLE_ID <> 0 Then
|
|
tsmiNodeNew.Visible = True
|
|
Else
|
|
tsmiNodeNew.Visible = False
|
|
End If
|
|
If Not IsNothing(TreeViewMain.SelectedNode) Then
|
|
Dim oNODE_GUID = ClassNodeNavigation.Return_NODEID_forTag(TreeViewMain.SelectedNode.Tag.ToString)
|
|
|
|
Try
|
|
Dim oExpression As String
|
|
oExpression = "GUID = " & oNODE_GUID
|
|
Dim oRowNode() As DataRow = DT_TREEVIEW_NODES_ALL.Select(oExpression)
|
|
If oRowNode.Length = 1 Then
|
|
Dim oAllowRenameNode = oRowNode(0)("BOOL1")
|
|
If oAllowRenameNode = True Then
|
|
Me.tsmiNodeRename.Visible = True
|
|
Else
|
|
Me.tsmiNodeRename.Visible = False
|
|
End If
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
|
|
If TreeViewMain.SelectedNode.Tag.ToString.StartsWith("CONFIG_NODE") Then
|
|
tsmiNodeDelete.Visible = True
|
|
End If
|
|
End If
|
|
End If
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
Me.tstxtboxSearchNode.Text = "Search Node"
|
|
Else
|
|
Me.tstxtboxSearchNode.Text = "Suche Knoten"
|
|
End If
|
|
End Sub
|
|
Private Function FindFocussedControl(ByVal ctr As Control) As Control
|
|
Dim container As ContainerControl = TryCast(ctr, ContainerControl)
|
|
Do While (container IsNot Nothing)
|
|
ctr = container.ActiveControl
|
|
container = TryCast(ctr, ContainerControl)
|
|
Loop
|
|
Return ctr
|
|
End Function
|
|
|
|
Private Sub DateiVersionierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiVersionierenToolStripMenuItem.Click
|
|
Refresh_Selected_Table()
|
|
frmWM_CreateVersion.ShowDialog()
|
|
RUN_WDSEARCH_GRID()
|
|
End Sub
|
|
Sub Refresh_Selected_Table()
|
|
Dim table As New DataTable
|
|
table.TableName = "SelectedFiles"
|
|
|
|
' Create two columns, ID and Name.
|
|
Dim idColumn As DataColumn = table.Columns.Add("ID", GetType(System.Int32))
|
|
idColumn.AutoIncrement = True
|
|
idColumn.AutoIncrementSeed = 0
|
|
idColumn.AutoIncrementStep = 1
|
|
table.PrimaryKey = New DataColumn() {idColumn}
|
|
table.Columns.Add("FILEPATH", GetType(System.String))
|
|
table.Columns.Add("DOC_ID", GetType(System.Int32))
|
|
table.Columns.Add("OBJECTTYPE", GetType(System.String))
|
|
For Each row As DataRow In ClassWindreamDocGrid.DT_RESULTFILES.Rows
|
|
If row.Item("DOC_PATH") <> String.Empty Then
|
|
'Set the ID column as the primary key column.
|
|
Dim newRow As DataRow = table.NewRow()
|
|
newRow("FILEPATH") = row.Item("DOC_PATH")
|
|
newRow("DOC_ID") = row.Item("DOC_ID")
|
|
newRow("OBJECTTYPE") = row.Item("OBJECTTYPE")
|
|
table.Rows.Add(newRow)
|
|
End If
|
|
Next
|
|
table.AcceptChanges()
|
|
CURRENT_DT_SELECTED_FILES = table
|
|
End Sub
|
|
Private Sub DokumentartÄndernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DokumentartÄndernToolStripMenuItem.Click
|
|
CURRENT_FORMVIEW_ID = FORMVIEW_ID
|
|
Refresh_Selected_Table()
|
|
frmWM_ChangeDoctype.ShowDialog()
|
|
RUN_WDSEARCH_GRID()
|
|
End Sub
|
|
Private Sub NeuToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeuToolStripMenuItem.Click
|
|
Display_Filename()
|
|
End Sub
|
|
|
|
Private Sub NeuToolStripMenuItem_MouseHover(sender As Object, e As EventArgs) Handles NeuToolStripMenuItem.MouseHover
|
|
Display_Filename()
|
|
End Sub
|
|
|
|
Private Sub CMDoc_TextBoxRenameFile_KeyUp(sender As Object, e As KeyEventArgs) Handles CMDoc_TextBoxRenameFile.KeyUp
|
|
If e.KeyCode = Keys.Return Then
|
|
Try
|
|
If CMDoc_TextBoxRenameFile.Text <> "" Then
|
|
Dim OldName, NewName, OnlyFilename As String
|
|
OldName = ClassWindreamDocGrid.SELECTED_DOC_PATH
|
|
' Define file names.
|
|
NewName = CMDoc_TextBoxRenameFile.Text
|
|
OnlyFilename = NewName
|
|
Dim name1 = Path.Combine(Path.GetDirectoryName(ClassWindreamDocGrid.SELECTED_DOC_PATH), NewName)
|
|
NewName = NewName & Path.GetExtension(ClassWindreamDocGrid.SELECTED_DOC_PATH)
|
|
OnlyFilename &= Path.GetExtension(ClassWindreamDocGrid.SELECTED_DOC_PATH)
|
|
' Rename file.
|
|
My.Computer.FileSystem.RenameFile(OldName, NewName)
|
|
Cursor = Cursors.WaitCursor
|
|
Dim upd = String.Format("UPDATE TBPMO_DOCRESULT_LIST SET Change_DateTime = GETDATE(), Filename = '{0}', FULL_FILENAME = '{1}', CHANGED_WHO = '{2}', CHANGED_WHEN = GETDATE() WHERE DocID = {3}",
|
|
OnlyFilename, NewName, USER_USERNAME, ClassWindreamDocGrid.SELECTED_DOC_ID)
|
|
If DD_LIB_Standards.clsDatabase.Execute_non_Query(upd) Then
|
|
If LICENSE_PROXY = True And DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED Then
|
|
ClassDatabase.Execute_non_Query(upd, True)
|
|
End If
|
|
End If
|
|
Cursor = Cursors.Default
|
|
RUN_WDSEARCH_GRID()
|
|
ContextMenuStripResultFiles.Close()
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Renaming files:", ex.Message)
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub DisplaynameUmbenennenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DisplaynameUmbenennenToolStripMenuItem.Click
|
|
Set_Displayname()
|
|
End Sub
|
|
|
|
Private Sub DisplaynameUmbenennenToolStripMenuItem_MouseHover(sender As Object, e As EventArgs) Handles DisplaynameUmbenennenToolStripMenuItem.MouseHover
|
|
Set_Displayname()
|
|
End Sub
|
|
|
|
Private Sub SToolStripMenuItem_KeyUp(sender As Object, e As KeyEventArgs) Handles CMDoc_TextBoxRenameDisplay.KeyUp
|
|
If e.KeyCode = Keys.Return Then
|
|
Try
|
|
ClassFileResult.DocID = ClassWindreamDocGrid.SELECTED_DOC_ID
|
|
If CMDoc_TextBoxRenameDisplay.Text <> "" Then
|
|
If ClassFileResult.Set_Displayname(CMDoc_TextBoxRenameDisplay.Text) Then
|
|
Cursor = Cursors.WaitCursor
|
|
RUN_WDSEARCH_GRID()
|
|
ContextMenuStripResultFiles.Close()
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Unexpected Error in Setting Displayname Click: ", ex.Message)
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub DateienDiesemUndToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles tsmiNodedownSearch.Click
|
|
CURRENT_SEARCH_TYPE = "NODE_DOWN"
|
|
RUN_WDSEARCH_GRID()
|
|
End Sub
|
|
|
|
Private Sub EnitätssucheToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles tsmientitySearch.Click
|
|
CURRENT_SEARCH_TYPE = "ENTITY"
|
|
RUN_ENTITY_DOC_SEARCH()
|
|
End Sub
|
|
|
|
Private Sub OberhalbToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OberhalbToolStripMenuItem.Click
|
|
ADD_NODE("HERE")
|
|
End Sub
|
|
|
|
Private Sub ADD_NODE(where As String)
|
|
Try
|
|
If tsmINewText.Text = String.Empty Then
|
|
MsgBox("Please type a nodetext!", MsgBoxStyle.Critical)
|
|
tsmINewText.BackColor = Color.Red
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim PARENT_ID
|
|
|
|
Dim expression As String
|
|
expression = "ENTITY_ID = " & ENTITY_ID & " AND GUID = " & CURRENT_NODE_CONFIGURABLE_ID
|
|
Dim foundRowsLevel0() As DataRow
|
|
' Use the Select method to find all rows matching the filter.
|
|
foundRowsLevel0 = NODE_CONFIGURABLE_NODES_DT.Select(expression)
|
|
Dim i As Integer
|
|
Dim RECORD_CREATE As Boolean
|
|
' For each row create a Node
|
|
For i = 0 To foundRowsLevel0.GetUpperBound(0)
|
|
RECORD_CREATE = foundRowsLevel0(i)("CREATE_RECORD")
|
|
Next
|
|
If where = "HERE" Then
|
|
PARENT_ID = ClassNodeNavigation.Return_NODEID_forTag(TreeViewMain.SelectedNode.Parent.Tag)
|
|
ElseIf where = "BELOW" Then
|
|
PARENT_ID = ClassNodeNavigation.Return_NODEID_forTag(TreeViewMain.SelectedNode.Tag)
|
|
End If
|
|
Dim NEWRECORD As Integer
|
|
If RECORD_CREATE = True Then
|
|
Dim recordId = ClassRecordCommands.CreateRecordProcedure(ENTITY_ID)
|
|
If recordId = 0 Then
|
|
ClassLogger.Add("Error in ADD_NODE: Could not create Record", True)
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Error in ADD_NODE", "Could not create Record")
|
|
Exit Sub
|
|
Else
|
|
NEWRECORD = recordId
|
|
End If
|
|
End If
|
|
'Dim NEWRECORD As Integer = ClassControlCommandsUI.GetLastRecord(ENTITY_ID)
|
|
Dim NEWNODE = New TreeNode(tsmINewText.Text)
|
|
If Not IsNothing(NEWRECORD) Then
|
|
ClassProxy.PRPROXY_RECORD_UPD_INS(ENTITY_ID, NEWRECORD)
|
|
|
|
If Not IsNothing(CURRENT_NODE_CONFIGURABLE_ID) And CURRENT_NODE_CONFIGURABLE_ID > 0 Then
|
|
Dim index As Integer = 0
|
|
For Each img As String In TREEVIEW_IMAGELIST.Images.Keys
|
|
If img = CURRENT_NODE_CONFIGURABLE_ID.ToString Then 'CURRENT_NODE_CONFIGURABLE_ID.ToString & "#" & ENTITY_ID
|
|
Exit For
|
|
End If
|
|
index += 1
|
|
Next
|
|
NEWNODE.ImageIndex = index
|
|
NEWNODE.SelectedImageIndex = index
|
|
End If
|
|
'Dim ins
|
|
'If RECORD_CREATE Then
|
|
|
|
' sdd
|
|
' ins = String.Format("INSERT INTO TBPMO_STRUCTURE_NODES (RECORD_ID,NODE_CONFIG_ID, NODE_CAPTION, ID1, PARENT_GUID, ADDED_WHO) VALUES (" &
|
|
' "{0},{1},'{2}','{3}','{4}','{5}')", NEWRECORD, CURRENT_NODE_CONFIGURABLE_ID, tsmINewText.Text, "CONFIG " & NEWRECORD & "-" & CURRENT_NODE_CONFIGURABLE_ID, PARENT_ID, USER_USERNAME)
|
|
'Else
|
|
' ins = String.Format("INSERT INTO TBPMO_STRUCTURE_NODES (NODE_CONFIG_ID, NODE_CAPTION, ID1, PARENT_GUID, ADDED_WHO) VALUES (" &
|
|
' "{0},'{1}','{2}','{3}','{4}')", CURRENT_NODE_CONFIGURABLE_ID, tsmINewText.Text, "CONFIG " & NEWRECORD & "-" & CURRENT_NODE_CONFIGURABLE_ID, PARENT_ID, USER_USERNAME)
|
|
'End If
|
|
'If ClassDatabase.Execute_non_Query(ins) Then
|
|
|
|
Dim NEW_GUID = ClassNodeNavigation.CreateNodeProcedure(NEWRECORD, CURRENT_NODE_CONFIGURABLE_ID, tsmINewText.Text, "CONFIG " & NEWRECORD & "-" & CURRENT_NODE_CONFIGURABLE_ID, PARENT_ID, USER_USERNAME)
|
|
If NEW_GUID > 0 Then
|
|
ClassNodeNavigation.Check_NODE_CONFIG_ID(ENTITY_ID, Nothing)
|
|
NEWNODE.Tag = ClassNodeNavigation.CreateNODE_TAG(ENTITY_ID, NEW_GUID, NEWRECORD, CURRENT_NODE_CONFIGURABLE_ID)
|
|
|
|
If where = "HERE" Then
|
|
TreeViewMain.SelectedNode.Parent.Nodes.Add(NEWNODE)
|
|
TreeViewMain.SelectedNode.Parent.Expand()
|
|
Else
|
|
TreeViewMain.SelectedNode.Nodes.Add(NEWNODE)
|
|
TreeViewMain.SelectedNode.Expand()
|
|
End If
|
|
' End If
|
|
End If
|
|
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Unexpected Error in Adding ConfigNode: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
Private Sub tsmiNodeDelete_Click(sender As Object, e As EventArgs) Handles tsmiNodeDelete.Click
|
|
Try
|
|
Dim _tag = TreeViewMain.SelectedNode.Tag
|
|
Dim REC_Exists As Boolean = False
|
|
If _tag.ToString.ToString.Contains("RECORD-ID") Then
|
|
REC_Exists = True
|
|
End If
|
|
Dim NODE_GUID = ClassNodeNavigation.Return_NODEID_forTag(_tag)
|
|
If IsNumeric(NODE_GUID) Then
|
|
Dim msg = "Sind Sie sicher, dass Sie den Knoten '" & TreeViewMain.SelectedNode.Text & "' löschen wollen?"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Are You sure You want to delete the node'" & TreeViewMain.SelectedNode.Text & "'?"
|
|
End If
|
|
Dim result As MsgBoxResult
|
|
result = MessageBox.Show(msg, "Confirmation:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result = MsgBoxResult.Yes Then
|
|
Dim oDelete = String.Format("EXEC PRPMO_DELETE_NODE {0},'{1}'", NODE_GUID, USER_USERNAME)
|
|
If ClassDatabase.Execute_non_Query(oDelete) Then
|
|
TreeViewMain.Nodes.Remove(TreeViewMain.SelectedNode)
|
|
Refresh_Entity_Data(True)
|
|
End If
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Unexpected Error in Deleting ConfigNode: ", ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub UnterhalbToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UnterhalbToolStripMenuItem.Click
|
|
ADD_NODE("BELOW")
|
|
End Sub
|
|
|
|
Private Sub cmDoc1FileOpen_Click(sender As Object, e As EventArgs) Handles cmDoc1FileOpen.Click
|
|
Open_File()
|
|
End Sub
|
|
Sub Open_File()
|
|
Me.Cursor = Cursors.WaitCursor
|
|
Dim allow_Open As Boolean = False
|
|
ClassWindreamDocGrid.GetDocItems(GridViewDoc_Search)
|
|
Dim Result = ClassDOC_SEARCH.Get_File_Rights(ClassWindreamDocGrid.SELECTED_DOC_ID)
|
|
If Not IsNothing(Result) Then
|
|
Select Case Result.ToString
|
|
Case "R"
|
|
If USER_IS_ADMIN = False Then
|
|
ContextMenu_Read()
|
|
Else
|
|
ClassLogger.Add(">> OpenFile.FileRight is R but User is Admin!! - Check the configuration!", False)
|
|
End If
|
|
allow_Open = True
|
|
Case "RW"
|
|
allow_Open = True
|
|
Case "RWA"
|
|
allow_Open = True
|
|
End Select
|
|
End If
|
|
If allow_Open = True Then
|
|
If IsNothing(ClassWindreamDocGrid.DT_RESULTFILES) Then
|
|
MsgBox("Could not read File Parameters(5)!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
For Each row As DataRow In ClassWindreamDocGrid.DT_RESULTFILES.Rows
|
|
If ClassHelper.File_open(row.Item("DOC_PATH"), row.Item("DOC_ID")) = True Then
|
|
TimerFileHandle.Enabled = True
|
|
End If
|
|
|
|
|
|
Next
|
|
Else
|
|
If clsWD_GET.WDFile_exists(ClassWindreamDocGrid.SELECTED_DOC_PATH, DD_LIB_Standards.clsDatabase.DB_PROXY_INITIALIZED, ClassProxy.MyLinkedServer, True) = True Then
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Right-Management", "File is existing, but you do not have the rights to open this file! " & vbNewLine & "Please contact your admin!" & vbNewLine & "DOC-ID: " & ClassWindreamDocGrid.SELECTED_DOC_ID.ToString)
|
|
Else
|
|
ClassHelper.MSGBOX_Handler("ERROR", "", "File does not exist! Please contact your admin!")
|
|
End If
|
|
End If
|
|
Me.Cursor = Cursors.Default
|
|
End Sub
|
|
Private Sub cmDoc1FileProperties_Click(sender As Object, e As EventArgs) Handles cmDoc1FileProperties.Click
|
|
Show_File_Properties()
|
|
End Sub
|
|
|
|
Private Sub tsbtnWork_Click(sender As Object, e As EventArgs) Handles tsbtnWork.Click
|
|
Dim stg
|
|
If POS_ENABLED = False Then
|
|
POS_ENABLED = True
|
|
tslblPoslocked.Visible = False
|
|
BindingNavigatorAddNewItem.Enabled = True
|
|
BindingNavigatorDeleteItem.Enabled = True
|
|
grvwGridPos.OptionsBehavior.ReadOnly = False
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
stg = "Bearbeiten beenden"
|
|
Else
|
|
stg = "End Working"
|
|
End If
|
|
Me.tsbtnWork.Text = stg
|
|
Else
|
|
POS_ENABLED = False
|
|
tslblPoslocked.Visible = True
|
|
BindingNavigatorAddNewItem.Enabled = False
|
|
BindingNavigatorDeleteItem.Enabled = False
|
|
grvwGridPos.OptionsBehavior.ReadOnly = True
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
stg = "Positionen bearbeiten"
|
|
Else
|
|
stg = "Edit positions"
|
|
End If
|
|
Me.tsbtnWork.Text = stg
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub BindingNavigatorDeleteItem_Click(sender As Object, e As EventArgs) Handles BindingNavigatorDeleteItem.Click
|
|
Try
|
|
If POS_RECORD_ID > 0 Then
|
|
Dim msg = "Sind Sie sicher, dass Sie diese Position löschen wollen?"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Are You sure You want to delete this position?"
|
|
End If
|
|
Dim result As MsgBoxResult
|
|
result = MessageBox.Show(msg, "Confirmation:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result = MsgBoxResult.Yes Then
|
|
If ClassHelper.DeleteRecord(POS_RECORD_ID) = True Then
|
|
Load_Pos_Data()
|
|
Else
|
|
|
|
End If
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
Private Sub grvwGridPos_FocusedColumnChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedColumnChangedEventArgs) Handles grvwGridPos.FocusedColumnChanged
|
|
Pos_COLROW_Changer()
|
|
End Sub
|
|
|
|
Private Sub tsbtnStartFulltext_Click(sender As Object, e As EventArgs) Handles tsbtnStartFulltext.Click
|
|
Open_FulltextSearch()
|
|
End Sub
|
|
|
|
Private Sub tsmiFulltext_Click(sender As Object, e As EventArgs) Handles tsmiFulltext.Click
|
|
Open_FulltextSearch()
|
|
End Sub
|
|
Sub Open_FulltextSearch()
|
|
CURRENT_SELECTED_NODE = Nothing
|
|
If NODE_NAVIGATION = True Then
|
|
If IsNothing(TreeViewMain.SelectedNode) Then
|
|
MsgBox("Please select a node!", MsgBoxStyle.Critical)
|
|
Exit Sub
|
|
End If
|
|
CURRENT_NAVIGATION_TYPE = "NODE"
|
|
CURRENT_SELECTED_NODE = TreeViewMain.SelectedNode
|
|
Else
|
|
CURRENT_NAVIGATION_TYPE = "DEFAULT"
|
|
End If
|
|
frmWM_FulltextChoice.ShowDialog()
|
|
If CURRENT_FULLTEXT_PATTERN <> "" Then
|
|
RUN_WDSEARCH_GRID()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub cmsResultFilesBasic_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles cmsResultFilesBasic.Opening
|
|
Try
|
|
If clsWindream.SESSION_CREATED = False Then
|
|
ClassHelper.MSGBOX_Handler("INFO", "Attention", "Check Your windream-connection and restart ADDI afterwards.", "Could not create a windream session!")
|
|
e.Cancel = True
|
|
End If
|
|
Me.Cursor = Cursors.WaitCursor
|
|
Dim Result = ClassDOC_SEARCH.Get_File_Rights(ClassWindreamDocGrid.SELECTED_DOC_ID)
|
|
If Not IsNothing(Result) Then
|
|
Select Case Result.ToString
|
|
Case "R"
|
|
If USER_IS_ADMIN = False Then
|
|
ContextMenu_Read()
|
|
Else
|
|
ClassLogger.Add(">>cmsRFB_O.FileRight is R but User is Admin!! - Check the configuration!", False)
|
|
End If
|
|
Case Else
|
|
ContextMenu_Write()
|
|
End Select
|
|
Else
|
|
'cmDoc1FileProperties.Enabled = True
|
|
End If
|
|
Catch ex As Exception
|
|
e.Cancel = True
|
|
Finally
|
|
Me.Cursor = Cursors.Default
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Private Sub OrdnerÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OrdnerÖffnenToolStripMenuItem.Click
|
|
If IsNothing(ClassWindreamDocGrid.DT_RESULTFILES) Then
|
|
MsgBox("Could not read File Parameters(5)!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
For Each row As DataRow In ClassWindreamDocGrid.DT_RESULTFILES.Rows
|
|
ClassHelper.Open_Folder(row.Item("DOC_PATH"), row.Item("DOC_ID"))
|
|
Next
|
|
End Sub
|
|
Private Sub ToolStripDropDownButton3_DropDownOpening(sender As Object, e As EventArgs)
|
|
Try
|
|
Me.Cursor = Cursors.WaitCursor
|
|
Dim Record_Changes As String = "SELECT count(GUID) FROM VWPMO_RECORD_CHANGES WHERE RECORD_ID = " & RECORD_ID
|
|
Dim RC = ClassDatabase.Execute_Scalar(Record_Changes, True)
|
|
bbtniReclog.Enabled = False
|
|
If Not RC Is Nothing Then
|
|
If RC > 0 Then
|
|
bbtniReclog.Enabled = True
|
|
End If
|
|
End If
|
|
If RIGHT_RECORD_AND_FILE_READ_ONLY = True Or NODE_NAVIGATION = True Then
|
|
bbtniCopyRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
bbtniNewVariant2.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
bbtniParentLink.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
bbtniWFTask.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
Else
|
|
bbtniCopyRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
bbtniNewVariant2.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
bbtniParentLink.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
bbtniWFTask.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
End If
|
|
Catch ex As Exception
|
|
Finally
|
|
Me.Cursor = Cursors.Default
|
|
End Try
|
|
|
|
End Sub
|
|
Private Sub TimerClearResultfiles_Tick(sender As Object, e As EventArgs) Handles TimerClearResultfiles.Tick
|
|
Try
|
|
For Each row As DataRow In CURRENT_TBPMO_FILES_USER.Rows
|
|
If row.Item("WORKED") = True Then
|
|
If row.Item("DELETE_FILE") = True Then
|
|
If File.Exists(row.Item("FILENAME2WORK")) Then
|
|
File.Delete(row.Item("FILENAME2WORK"))
|
|
ClassHelper.DELETE_PMO_FILE_USER(row.Item("GUID"))
|
|
row.Delete()
|
|
End If
|
|
Else
|
|
ClassHelper.DELETE_PMO_FILE_USER(row.Item("GUID"))
|
|
row.Delete()
|
|
End If
|
|
End If
|
|
Next
|
|
CURRENT_TBPMO_FILES_USER.AcceptChanges()
|
|
ClassFolderWatcher.Check_Scan_Files()
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "", "Unexpected Error in clearing User-Files: " & ex.Message, ex.StackTrace)
|
|
Finally
|
|
TimerClearResultfiles.Stop()
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub tsbtnPos_Refresh_Click(sender As Object, e As EventArgs) Handles tsbtnPos_Refresh.Click
|
|
Load_Pos_Data()
|
|
End Sub
|
|
|
|
Private Sub frmConstructor_Main_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
|
|
If e.KeyCode = Keys.Control And e.KeyCode = Keys.R Then
|
|
Refresh_Entity_Data(True)
|
|
ElseIf e.KeyCode = Keys.Control And e.KeyCode = Keys.S Then
|
|
Save_Record()
|
|
If ERROR_WHILE_SAVING = True Then
|
|
Column_Row_Handler("StrgS")
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub tstxtboxSearchNode_KeyUp(sender As Object, e As KeyEventArgs) Handles tstxtboxSearchNode.KeyUp
|
|
If e.KeyCode = Keys.Return Then
|
|
Dim Result As List(Of TreeNode) = SearchTheTreeView(TreeViewMain, tstxtboxSearchNode.Text)
|
|
|
|
|
|
If Result Is Nothing Then
|
|
MessageBox.Show("No Match Found")
|
|
Else
|
|
If Result.Count = 1 Then
|
|
TreeViewMain.SelectedNode = Result.First()
|
|
Else
|
|
Dim resultForm As New frmTreeSearchResult()
|
|
resultForm.searchResultNodes = Result
|
|
resultForm.constructorForm = Me
|
|
resultForm.Show()
|
|
End If
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub SetSelectedTreeViewNode(node As TreeNode)
|
|
TreeViewMain.SelectedNode = node
|
|
End Sub
|
|
|
|
Private Sub tstxtboxSearchNode_Click(sender As Object, e As EventArgs) Handles tstxtboxSearchNode.Click, tstxtboxSearchNode.Enter
|
|
tstxtboxSearchNode.Text = ""
|
|
End Sub
|
|
|
|
Private Sub frmConstructor_Main_HandleDestroyed(sender As Object, e As EventArgs) Handles Me.HandleDestroyed
|
|
|
|
End Sub
|
|
|
|
Private Sub tslblPoslocked_VisibleChanged(sender As Object, e As EventArgs) Handles tslblPoslocked.VisibleChanged
|
|
If tslblPoslocked.Visible = True Then
|
|
Dim msg = "Nur lesenden Zugriff"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Positions are read only"
|
|
End If
|
|
tslblPoslocked.Text = msg
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub TreeViewMain_BeforeExpand(sender As Object, e As TreeViewCancelEventArgs) Handles TreeViewMain.BeforeExpand
|
|
|
|
End Sub
|
|
|
|
Private Sub TreeList1_GetStateImage(sender As Object, e As DevExpress.XtraTreeList.GetStateImageEventArgs) Handles TreeList1.GetStateImage
|
|
Dim Column_Config_ID As DevExpress.XtraTreeList.Columns.TreeListColumn = TreeList1.Columns("NODE_CONFIG_ID")
|
|
Dim configid = e.Node.GetDisplayText(Column_Config_ID)
|
|
|
|
e.Node.StateImageIndex = ImageCollection1.Images.Keys.IndexOf(configid)
|
|
|
|
End Sub
|
|
|
|
Private Sub TreeList1_ColumnFilterChanged(sender As Object, e As EventArgs) Handles TreeList1.ColumnFilterChanged
|
|
Dim tree As TreeList = TryCast(sender, TreeList)
|
|
Dim filteredColumns As List(Of TreeListColumn) = tree.Columns.Cast(Of TreeListColumn)().Where(Function(c) c.FilterInfo.AutoFilterRowValue IsNot Nothing).ToList()
|
|
If filteredColumns.Count = 0 Then
|
|
tree.CollapseAll()
|
|
Return
|
|
End If
|
|
|
|
tree.BeginUpdate()
|
|
For Each col As TreeListColumn In filteredColumns
|
|
Dim op As New CollapseChildrenOperation(col.FilterInfo.AutoFilterRowValue.ToString(), col)
|
|
tree.NodesIterator.DoOperation(op)
|
|
Next col
|
|
tree.EndUpdate()
|
|
End Sub
|
|
Public Class CollapseChildrenOperation
|
|
Inherits TreeListOperation
|
|
|
|
Private filterValue As String
|
|
Private column As TreeListColumn
|
|
|
|
Public Sub New(ByVal filter As String, ByVal col As TreeListColumn)
|
|
filterValue = filter
|
|
column = col
|
|
End Sub
|
|
|
|
Private Function IsNodeMatchFilter(ByVal node As TreeListNode, ByVal column As TreeListColumn) As Boolean
|
|
Return node.GetDisplayText(column).Contains(filterValue)
|
|
End Function
|
|
Public Overrides Sub Execute(ByVal node As TreeListNode)
|
|
If IsNodeMatchFilter(node, column) Then
|
|
node.TreeList.MakeNodeVisible(node)
|
|
CollapseChildren(node)
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub CollapseChildren(ByVal node As TreeListNode)
|
|
'node.Visible = true;
|
|
For Each childNode As TreeListNode In node.Nodes
|
|
CollapseChildren(childNode)
|
|
Next childNode
|
|
node.Expanded = False
|
|
End Sub
|
|
End Class
|
|
|
|
Private Sub AusDieserEntitätToolStripMenuItem_Click(sender As Object, e As EventArgs)
|
|
|
|
End Sub
|
|
Private Sub tstxtRenameNode_KeyUp(sender As Object, e As KeyEventArgs) Handles tstxtRenameNode.KeyUp
|
|
If e.KeyCode = Keys.Return Then
|
|
Try
|
|
Dim oTag = TreeViewMain.SelectedNode.Tag
|
|
Dim oRecExists As Boolean = False
|
|
If oTag.ToString.ToString.Contains("RECORD-ID") Then
|
|
oRecExists = True
|
|
End If
|
|
Dim NODE_GUID = ClassNodeNavigation.Return_NODEID_forTag(oTag)
|
|
If IsNumeric(NODE_GUID) Then
|
|
Dim OMsg = "Sind Sie sicher, dass Sie den Knoten '" & TreeViewMain.SelectedNode.Text & "' umbenennen wollen?"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
OMsg = "Are You sure You want to rename the node'" & TreeViewMain.SelectedNode.Text & "'?"
|
|
End If
|
|
Dim oResult As MsgBoxResult
|
|
oResult = MessageBox.Show(OMsg, "Confirmation:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If oResult = MsgBoxResult.Yes Then
|
|
Dim oUpdate = String.Format("UPDATE TBPMO_STRUCTURE_NODES SET NODE_CAPTION = '{0}', CHANGED_WHO = '{1}' WHERE GUID = {2}", Me.tstxtRenameNode.Text, USER_USERNAME, NODE_GUID)
|
|
If ClassDatabase.Execute_non_Query(oUpdate) Then
|
|
TreeViewMain.SelectedNode.Text = Me.tstxtRenameNode.Text
|
|
End If
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Unexpected Error in Renaming ConfigNode: ", ex.Message)
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub tsmiNodeRename_MouseHover(sender As Object, e As EventArgs) Handles tsmiNodeRename.MouseHover
|
|
If Not IsNothing(TreeViewMain.SelectedNode) Then
|
|
Me.tstxtRenameNode.Text = TreeViewMain.SelectedNode.Text
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ToolStripMenuItem1_Click_1(sender As Object, e As EventArgs) Handles ToolStripMenuItem1.Click
|
|
Save_DocGrid_Layout()
|
|
End Sub
|
|
|
|
Private Sub TimerFileHandle_Tick(sender As Object, e As EventArgs) Handles TimerFileHandle.Tick
|
|
Try
|
|
Dim oSql = $"SELECT GUID FROM TBPMO_DOC_USER_REFRESH_VIEW WHERE USER_ID = {USER_GUID} AND REFRESHED_WHEN IS NULL"
|
|
Dim oDTGUID As DataTable = ClassDatabase.Return_Datatable(oSql)
|
|
If oDTGUID.Rows.Count = 1 Then
|
|
Dim oupd = $"UPDATE TBPMO_DOC_USER_REFRESH_VIEW SET REFRESHED_WHEN = GETDATE() WHERE GUID = {oDTGUID.Rows(0).Item(0)}"
|
|
If ClassDatabase.Execute_non_Query(oupd, False) = True Then
|
|
MsgBox("Attention: The docID of one document changed! The DocSearch will be refreshed!", MsgBoxStyle.Information)
|
|
RUN_WDSEARCH_GRID()
|
|
End If
|
|
End If
|
|
|
|
''oDT_ProcessDoc.Columns.Add("STATE", Type.GetType("System.String"))
|
|
''oDT_ProcessDoc.AcceptChanges()
|
|
|
|
''For Each oDatarow As DataRow In oDT_ProcessDoc.Rows
|
|
'' Dim exists As Boolean = False
|
|
'' For Each oProcess As Process In Process.GetProcesses()
|
|
'' If oProcess.Id = oDatarow.Item("PROCESS_ID") Then
|
|
'' 'process found so it's running so return true
|
|
'' If LogErrorsOnly = False Then ClassLogger.Add($"Process {oProcess.ProcessName} still running - {oProcess.Id.ToString}", False)
|
|
'' exists = True
|
|
'' End If
|
|
'' Next
|
|
'' If exists = False Then
|
|
'' oDatarow.Item("STATE") = "NOT RUNNING"
|
|
'' End If
|
|
''Next
|
|
''oDT_ProcessDoc.AcceptChanges()
|
|
'For Each oRow_Check As DataRow In oDT_ProcessDoc.Rows
|
|
' 'If IsDBNull(oRow_Check.Item("STATE")) Then
|
|
' ' Continue For
|
|
' 'End If
|
|
' 'If oRow_Check.Item("STATE") = "NOT RUNNING" Then
|
|
' Dim oGUID = oRow_Check.Item("GUID")
|
|
' Dim oDocID = oRow_Check.Item("OLD_DOC_ID")
|
|
' Dim oVersionID = oRow_Check.Item("VERSION_ID")
|
|
' Dim oDocPath = oRow_Check.Item("DOC_PATH")
|
|
|
|
' oSql = $"SELECT Count(DocID) FROM VWPMO_DOC_SYNC WHERE DocID = {oDocID}"
|
|
' Dim oFileExists = ClassDatabase.Execute_Scalar(oSql, False)
|
|
' If oFileExists = 0 Then
|
|
' CURRENT_OFFICE_FILE_CHANGED = True
|
|
' ClassLogger.Add($"The docId [{oDocID}] of handled file {oDocPath} changed during editing mode!", False)
|
|
' oSql = $"SELECT MAX(dwDocID) FROM windream60.dbo.BaseAttributes WHERE dwVersionID = {oVersionID}"
|
|
' Dim oNEW_DOC As DataTable = ClassDatabase.Return_Datatable(oSql, False)
|
|
' If oNEW_DOC.Rows.Count = 1 And Not IsDBNull(oNEW_DOC.Rows(0).Item(0)) Then
|
|
' Dim oNEWDocID = oNEW_DOC.Rows(0).Item(0)
|
|
' ClassLogger.Add($"New DocID is: {oNEWDocID}!!", False)
|
|
' oSql = $"EXEC PRPMO_DOC_CHANGE_DOCID {oDocID},{oNEWDocID},'{USER_USERNAME}'"
|
|
' If LogErrorsOnly = False Then ClassLogger.Add(oSql, False)
|
|
' If ClassDatabase.Execute_non_Query(oSql, False) = False Then
|
|
' ClassLogger.Add($"Could not relink the DocID!!", False)
|
|
' Else
|
|
' oSql = $"UPDATE TBPMO_DOC_ID_CHANGED SET NEW_DOC_ID = {oNEWDocID}, CHANGED_WHEN = GETDATE() WHERE GUID = {oGUID}"
|
|
' ClassDatabase.Execute_non_Query(oSql, False)
|
|
' End If
|
|
' Else
|
|
' ClassLogger.Add($"Could not get the new DOCID [{oSql}]!!", False)
|
|
' End If
|
|
' End If
|
|
' 'End If
|
|
'Next
|
|
Catch ex As Exception
|
|
ClassLogger.Add($"Unexpected error in TimerFileHandleTick [{ex.Message}]!!", True)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub VerknüpfungenAnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles docCM_Showlinks.Click
|
|
Try
|
|
ClassWindreamDocGrid.GetDocItems(GridViewDoc_Search)
|
|
If IsNothing(ClassWindreamDocGrid.DT_RESULTFILES) Then
|
|
MsgBox("Could not read File Parameters (LinkRecord)!", MsgBoxStyle.Exclamation)
|
|
Exit Sub
|
|
End If
|
|
Refresh_Selected_Table()
|
|
Dim frm As New frmDoc_Links
|
|
frm.Show()
|
|
frm.BringToFront()
|
|
Catch ex As Exception
|
|
MsgBox("Unexpected Error in Showing DocLinks: " & ex.Message, MsgBoxStyle.Critical)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub tsmiNodeNew_Click(sender As Object, e As EventArgs) Handles tsmiNodeNew.Click
|
|
|
|
End Sub
|
|
|
|
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniRefresh.ItemClick
|
|
Refresh_Entity_Data(True)
|
|
End Sub
|
|
|
|
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniGeodaten.ItemClick
|
|
'ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Show_Detail_Record: ", "dsdfsdfdsfdsf")
|
|
Dim frm As New frmGeodataNavigation(GridControlMain, CURRENT_ENTITY_ID)
|
|
frm.Show()
|
|
End Sub
|
|
|
|
Private Sub BarButtonItem1_ItemClick_1(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniCopyRecord.ItemClick
|
|
Dim msg As String
|
|
If RIGHT_RECORD_AND_FILE_READ_ONLY = False Then
|
|
Dim result As MsgBoxResult
|
|
msg = "Möchten Sie den Datensatz wirklich kopieren?"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Would You like to copy the record?"
|
|
End If
|
|
result = MessageBox.Show(msg, "Copy Record:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result = MsgBoxResult.Yes Then
|
|
Dim SQL = String.Format("EXEC PRPMO_COPY_RECORD {0}, '{1}'", RECORD_ID, USER_USERNAME)
|
|
If ClassDatabase.Execute_non_Query_withConn(SQL, 1) = True Then
|
|
Load_Entity_Data_CONTROLS_RECORDS()
|
|
End If
|
|
End If
|
|
Else
|
|
msg = "Sie dürfen diesen Datensatz nicht löschen! (Rechtekonzept)!"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Due to right-privileges You are not allowed to delete this record!"
|
|
End If
|
|
MessageBox.Show(msg, "Warning:", MessageBoxButtons.OK, MessageBoxIcon.Information)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub bbtniNewVariant_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs)
|
|
|
|
End Sub
|
|
|
|
Private Sub bbtniWFTask_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniWFTask.ItemClick
|
|
Dim result As MsgBoxResult
|
|
Dim stg, caption As String
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
stg = "Wollen Sie die Workflowtasks für diesen Datensatz erzeugen? Alte Workflows werden gelöscht!"
|
|
caption = "Bestätigung erforderlich:"
|
|
Else
|
|
stg = "Do You really want to create workflowtasks for this record? Existing workflows will be deleted!"
|
|
caption = "Confirmation needed:"
|
|
End If
|
|
result = MessageBox.Show(stg, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result = MsgBoxResult.Yes Then
|
|
Try
|
|
CURRENT_ENTITY_ID = ENTITY_ID
|
|
Dim sql = "EXEC PRPMO_CREATE_WF_TASKS " & CURRENT_ENTITY_ID & ", " & RECORD_ID
|
|
If ClassDatabase.Execute_non_Query(sql) = True Then
|
|
ClassWorkflow.Refresh_Workflows_Entity()
|
|
Show_act_WFTask()
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
stg = "Workflows erzeugt! Wollen Sie die Workflowübersicht nun anzeigen?"
|
|
caption = "Erfolgreich:"
|
|
Else
|
|
stg = "Workflows created! Would You like to show the Workflow-Overview?"
|
|
caption = "Success:"
|
|
End If
|
|
result = MessageBox.Show(stg, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result = MsgBoxResult.Yes Then
|
|
ClassJumpRecord.JumpToRecord(2, RECORD_ID)
|
|
ClassWorkflow.Refresh_Workflows_Entity()
|
|
JUMP_RECORD_ID = 0
|
|
End If
|
|
Else
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
stg = "Die Workflows konnten nicht erzeugt werden. Bitte prüfen Sie die Log-Datei!"
|
|
Else
|
|
stg = "Error in Creating Workflow-Tasks. Please check the logfile!"
|
|
End If
|
|
MsgBox(stg, MsgBoxStyle.Exclamation)
|
|
End If
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error inCreate Workflowtasks Record: ", ex.Message)
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub bbtniclearCache_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniclearCache.ItemClick
|
|
Dim result As MsgBoxResult
|
|
Dim msg = "Möchten Sie den Anwendungscache wirklich leeren?" & vbNewLine & "Die Entität wird dann automatisch neugeladen!"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Would You like to clear the applications-cache?" & vbNewLine & "All data will be loaded new!"
|
|
End If
|
|
result = MessageBox.Show(msg, "Clear cache:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
|
|
If result = MsgBoxResult.Yes Then
|
|
Try
|
|
Cursor = Cursors.WaitCursor
|
|
CURRENT_ENTITY_ID = ENTITY_ID
|
|
ClassControlValueCache.ClearCache()
|
|
DisableEditMode()
|
|
Load_Entity_Data_CONTROLS_RECORDS()
|
|
RECORD_CHANGED = False
|
|
Catch ex As Exception
|
|
ClassHelper.MSGBOX_Handler("ERROR", "Unexpected Error", "Error in Clear Cache: ", ex.Message)
|
|
Finally
|
|
Cursor = Cursors.Default
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub BarButtonItem2_ItemClick_1(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniNewVariant2.ItemClick
|
|
Dim msg As String
|
|
If RIGHT_RECORD_AND_FILE_READ_ONLY = False Then
|
|
CURRENT_ENTITY_ID = ENTITY_ID
|
|
CURRENT_RECORD_ID = RECORD_ID
|
|
Dim recid = CURRENT_RECORD_ID
|
|
frmNewVariant.ShowDialog()
|
|
If recid <> CURRENT_RECORD_ID Then
|
|
Me.Cursor = Cursors.WaitCursor
|
|
ClassProxy.PRPROXY_SYNC_DETAIL_OBJECT("TBPMO_RECORD_VARIANT")
|
|
ClassProxy.PRPROXY_SYNC_DETAIL_OBJECT("TBPMO_RECORD")
|
|
Me.Cursor = Cursors.Default
|
|
Load_Datafor_Entity(True)
|
|
LocateRecordinGridById(CURRENT_RECORD_ID)
|
|
End If
|
|
Else
|
|
msg = "Sie dürfen diesen Datensatz nicht löschen! (Rechtekonzept)!"
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
msg = "Due to right-privileges You are not allowed to delete this record!"
|
|
End If
|
|
MessageBox.Show(msg, "Warning:", MessageBoxButtons.OK, MessageBoxIcon.Information)
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub bbtniParentLink_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniParentLink.ItemClick
|
|
Show_Verknuepfungen()
|
|
End Sub
|
|
|
|
Private Sub bbtniReclog_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniReclog.ItemClick
|
|
CURRENT_RECORD_ID = RECORD_ID
|
|
frmRecord_Changes.ShowDialog()
|
|
End Sub
|
|
|
|
Private Sub OfficeVorlagentsmi_Click(sender As Object, e As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Private Sub BarEditItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarEditItem2.ItemClick
|
|
|
|
End Sub
|
|
End Class |