You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ITSM/.svn/pristine/12/1263bf41fd9e78017f90ca1d910...

570 lines
21 KiB

Imports C1.Win.C1TrueDBGrid
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Public Class frmVertragskontakt
#Region "Deklarationen"
Dim Kontaktperson As New TKB.VV.Vertrag.clsKontakt
Dim Vertragspartner As New TKB.VV.Vertrag.clsVertragspartner
Dim Person As New TKB.VV.DB.clsPerson
Dim sec As New TKB.VV.Utils.MySecurity
Dim msg As New TKB.VV.Utils.MyMessage
Dim FormReadonly As Boolean = False
Dim FormDataChanged As Boolean = False
Dim SpaltenTitel As New TKB.VV.Utils.Tabellenspalte
Private VertragspartnerNr As Integer
Private KontaktNr As Integer
Private Vertragskontaktnr As Integer
Private Vertragselementnr As Integer
Dim Neuer_Datensatz As Boolean = False
#End Region
#Region "Eventhandler ChangeEreignisse"
''' <summary>
''' Allg Eventhandler für Chanage-Ereignise festlegen
''' </summary>
''' <param name="Container"></param>
''' <remarks></remarks>
Private Sub AddChanges(ByVal Container As Control)
Dim l As New List(Of Control)
Me.GetControl(Me, "*", l)
Dim evh As EventHandler = AddressOf ChangesMade
For Each c As Control In l
If TypeOf c Is TextBox Then
Dim ctl As TextBox = c
AddHandler ctl.TextChanged, evh
End If
If TypeOf c Is MaskedTextBox Then
Dim ctl As MaskedTextBox = c
AddHandler ctl.TextChanged, evh
End If
If TypeOf c Is ComboBox Then
Dim ctl As ComboBox = c
AddHandler ctl.SelectedValueChanged, evh
End If
If TypeOf c Is CheckBox Then
Dim ctl As CheckBox = c
AddHandler ctl.CheckedChanged, evh
End If
If TypeOf c Is ListBox Then
Dim ctl As ListBox = c
AddHandler ctl.SelectedValueChanged, evh
End If
Next
End Sub
''' <summary>
''' Envent-Handler für Change-Ereignisse
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub ChangesMade(ByVal sender As Object, ByVal e As System.EventArgs)
Me.FormDataChanged = True
End Sub
''' <summary>
''' Sucht in den Base-Controls sämtliche Controls mit dem Namen in "Key" (Wildcards * möglich) und listet
''' die gefundnen Controls in der Liste L zur weiteren Bearbeitung
''' </summary>
''' <param name="BaseControl">Base-Contrlo (z.B. aktuelles Formular</param>
''' <param name="Key">Schlüssel welcher gesucht werden soll</param>
''' <param name="L">Liste der gefundenen Objekte</param>
''' <returns>True wenn eines oder mehr Controls gefunden wurden, false wenn kein Control gefunden wurde.
''' </returns>
''' <remarks></remarks>
Private Function GetControl(ByVal BaseControl As Control, ByVal Key As String, ByRef L As List(Of Control), Optional ByVal ReturnAtFirstElement As Boolean = False) As Boolean
If L Is Nothing Then L = New List(Of Control)
Dim Gut As Boolean
Dim ReturnFlag As Boolean = False
If Key IsNot Nothing Then Key = Key.ToLower
If BaseControl.HasChildren = True Then
For Each ctl As Control In BaseControl.Controls
Gut = False
If Key Is Nothing Then
Gut = True
Else
If ctl.Name.Length >= Key.Length Then
Key = Key.ToLower
If Key.StartsWith("*") Then
If Key.Substring(1) = ctl.Name.ToLower.Substring(ctl.Name.Length - (Key.Length - 1), Key.Length - 1) Then Gut = True
ElseIf Key.EndsWith("*") Then
If Key.Substring(0, Key.Length - 1) = ctl.Name.ToLower.Substring(0, Key.Length - 1) Then Gut = True
Else
If Key = ctl.Name.ToLower Then Gut = True
End If
End If
End If
If Gut = True Then
L.Add(ctl)
If ReturnAtFirstElement = True Then ReturnFlag = True
End If
If ReturnFlag = False Then
Call GetControl(ctl, Key, L)
End If
Next
End If
If L.Count - 1 > -1 Then
Return True
Else
Return False
End If
End Function
#End Region
#Region "Closing / Check_Changes"
''' <summary>
''' Schliessen des Formulars
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub FormularClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If Me.FormReadonly = True Then Exit Sub
If Check_Changes() = False Then
e.Cancel = True
Else
If Me.Kontaktperson.Neuer_Datensatz = True Then Me.Kontaktperson.Delete(Me.Kontaktperson.iVertragsKontaktNr.Value)
Globals.MyEventHanlder.Kontakte_Closed()
Me.Dispose()
End If
End Sub
''' <summary>
''' Prüfung, ob Datenänderungen vorgenommen wurden.
''' </summary>
''' <remarks></remarks>
Private Function Check_Changes() As Boolean
If Me.FormReadonly Then Exit Function
Dim msgres As MsgBoxResult
If Me.FormDataChanged Then
msgres = msg.Show_MessageYesNoCancel(3)
Select Case msgres
Case MsgBoxResult.Yes
Save_Data()
Return True
Case MsgBoxResult.Cancel
Return False
Case MsgBoxResult.No
Return True
End Select
Else
Return True
End If
End Function
#End Region
#Region "Formular"
Sub New()
InitializeComponent()
End Sub
Sub New(ByVal Vertragskontaktnr As Integer, ByVal Vertragspartnernr As Integer, ByVal Vertragselementnr As Integer, Optional ByVal CreateNew As Boolean = False, Optional ByVal FormReadOnly As Boolean = False)
Me.FormReadonly = FormReadOnly
InitializeComponent()
If CreateNew = True Then
Me.Vertragskontaktnr = Me.Kontaktperson.Add_New(Vertragselementnr)
Me.Neuer_Datensatz = True
Else
Me.Vertragskontaktnr = Vertragskontaktnr
End If
Me.VertragspartnerNr = Vertragspartnernr
Me.Vertragselementnr = Vertragselementnr
End Sub
Private Sub frmVertragskontakt_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
sec.Set_Form_Security(Me)
If Me.FormReadonly = True Then Me.TSBtnSave.Enabled = False
If Me.TSBtnSave.Enabled = False Or Me.TSBtnSave.Visible = False Then
Me.FormReadonly = True
Me.TSBtnCopy.Enabled = False
Me.TSBtnNew.Enabled = False
Me.TSBtnDelete.Enabled = False
Else
Me.FormReadonly = False
End If
Load_Securitylevel()
Load_Rollen()
Get_Data(Me.Vertragskontaktnr)
If Me.Neuer_Datensatz = True Then
Me.Kontaktperson.Neuer_Datensatz = True
Me.Neuer_Datensatz = False
End If
Me.AddChanges(Me)
If Me.FormReadonly = True Then sec.Set_Form_Readonly(Me)
End Sub
#End Region
#Region "Buttons/Menu"
''' <summary>
''' Formular schliessen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click
Me.Close()
End Sub
''' <summary>
''' Sicherungs-Button betätigt
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click
Me.Save_Data()
Me.txtMutiert_am.Text = Me.Kontaktperson.daMutiert_am.ToString
Me.FormDataChanged = False
End Sub
''' <summary>
''' Datensatz kopieren
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnCopy.Click
If Me.Check_Changes = False Then Exit Sub
Me.Get_Data(Kontaktperson.Create_Copy(Me.Kontaktperson.iVertragsKontaktNr.Value))
Me.Kontaktperson.Neuer_Datensatz = True
End Sub
''' <summary>
''' Neuer Datensatz erstellen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnNew.Click
If Me.Check_Changes = False Then Exit Sub
Me.Get_Data(Me.Kontaktperson.Add_New(Me.Vertragselementnr))
Me.Kontaktperson.Neuer_Datensatz = True
End Sub
''' <summary>
''' Aktueller Datensatz inaktivieren
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnDelete.Click
If msg.Show_MessageYesNo(250) = MsgBoxResult.Yes Then
Me.Kontaktperson.Delete_Vertragskontakt(Me.Kontaktperson.iVertragsKontaktNr.Value)
Me.Close()
End If
End Sub
''' <summary>
''' Menu Beenden
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
Me.TSBtnQuit_Click(sender, e)
End Sub
''' <summary>
''' Vertragspartner suchen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub btnVertragspartnersuche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVertragspartnersuche.Click
Dim f As New frmVertragspartnerSuche
f.ShowDialog()
If f.Vertragspartnernr <> -1 Then
Me.VertragspartnerNr = f.Vertragspartnernr
f.Dispose()
Me.Get_Vertragspartner()
End If
End Sub
#End Region
#Region "Security"
''' <summary>
''' Laden der Securitylevel-Daten in die Combobox
''' </summary>
''' <remarks></remarks>
Private Sub Load_Securitylevel()
Dim seclevel As New TKB.VV.DB.clsSecurityLevel
Dim secleveldata As New DataTable
seclevel.cpMainConnectionProvider = Globals.conn
Globals.conn.OpenConnection()
secleveldata = seclevel.SelectAll
Globals.conn.CloseConnection(True)
Me.cboxSecurityLevel.DataSource = secleveldata
Me.cboxSecurityLevel.DisplayMember = "Bezeichnung"
Me.cboxSecurityLevel.ValueMember = "SecurityLevelNr"
seclevel.Dispose()
End Sub
#End Region
#Region "Daten"
''' <summary>
''' Person laden und präsentieren
''' </summary>
''' <param name="Nr"></param>
''' <remarks></remarks>
Private Sub Get_Data(ByVal Nr As Integer)
Me.Kontaktperson.Get_Vertragskontakt(Nr)
Me.lbRolle.SelectedValue = Me.Kontaktperson.iKontakttypNr.Value
Me.cbIntern.Checked = Me.Kontaktperson.bIntern.Value = True
Me.txtErstellt_am.Text = Me.Kontaktperson.daErstellt_am.ToString
Me.txtMutiert_am.Text = Me.Kontaktperson.daMutiert_am.ToString
Me.txtBemerkung.Text = Me.Kontaktperson.sBemerkung.ToString
Me.txtMutierer.Text = Me.Kontaktperson.iMutierer.Value
Me.cbaktiv.Checked = Me.Kontaktperson.bAktiv.Value = True
Me.cboxSecurityLevel.SelectedValue = Me.Kontaktperson.iSecurityLevelNr.Value
If Me.Kontaktperson.iPersonNr.Value <> 0 Then
Try
Person.cpMainConnectionProvider = Globals.conn
Person.iPersonNr = New SqlInt32(CType(Me.Kontaktperson.iPersonNr.Value, Int32))
Person.SelectOne()
Me.VertragspartnerNr = Person.iVertragspartnernr.Value
Catch
End Try
End If
Me.Get_Vertragspartner()
Dim i As Integer = 0
If Me.Kontaktperson.iPersonNr.Value = 0 Then
Me.C1Kontaktpersonen.Bookmark = -1
Else
For i = 0 To Me.C1Kontaktpersonen.Splits(0).Rows.Count - 1
Me.C1Kontaktpersonen.Bookmark = i
Try
If Me.C1Kontaktpersonen.Columns("PersonNr").CellText(i) = Me.Kontaktperson.iPersonNr.Value Then Exit For
Catch
End Try
Next
End If
Me.FormDataChanged = False
End Sub
''' <summary>
''' Daten sichern, sofern Änderungen vorgenommen worden sind
''' </summary>
''' <remarks></remarks>
Private Sub Save_Data()
If Me.FormDataChanged Then
Me.Kontaktperson.iKontakttypNr = New SqlInt32(CType(Me.lbRolle.SelectedValue, Int32))
Me.Kontaktperson.iPersonNr = New SqlInt32(CType(Me.C1Kontaktpersonen.Columns("PersonNr").Value, Int32))
Me.Kontaktperson.bIntern = New SqlBoolean(CType(Me.cbIntern.Checked, Boolean))
Me.Kontaktperson.bAktiv = New SqlBoolean(CType(Me.cbaktiv.Checked, Boolean))
Me.Kontaktperson.sBemerkung = New SqlString(CType(Me.txtBemerkung.Text, String))
Me.Kontaktperson.iSecurityLevelNr = New SqlInt32(CType(Me.cboxSecurityLevel.SelectedValue, Int32))
Get_Data(Me.Kontaktperson.Save_Data)
Me.FormDataChanged = False
End If
End Sub
Private Function Get_Vertragspartner()
Me.txtVertragspartner.Text = Me.Vertragspartner.Get_Vertragspartnername(Me.VertragspartnerNr)
Get_Vertragspartner_Kontakte()
End Function
Private Function Get_Vertragspartner_Kontakte()
Try
'If Check_Changes() = False Then Exit Function
Catch ex As Exception
End Try
Me.C1Kontaktpersonen.Enabled = False
Me.Vertragspartner.Get_Kontaktpersonen(Me.C1Kontaktpersonen)
Me.SpaltenTitel.Spaltentitel_aktualisieren(Me.C1Kontaktpersonen, "Person", Me.Vertragspartner.Kontaktpersonen.Tabledata)
sec.Set_Form_Security(Me)
Me.C1Kontaktpersonen.Enabled = True
End Function
Private Function Load_Rollen()
Dim rollen As New TKB.VV.DB.clsKontakttyp
Dim rollendata As New DataTable
rollen.cpMainConnectionProvider = Globals.conn
rollendata = rollen.SelectAll()
Dim rv As New DataView(rollendata, "ApplikationsbereichNr=1 and aktiv=1", "", DataViewRowState.CurrentRows)
Me.lbRolle.DataSource = rv
Me.lbRolle.ValueMember = "KontakttypNr"
Me.lbRolle.DisplayMember = "Bezeichnung"
End Function
#End Region
#Region "Kontextmenu C1Kontaktperson"
''' <summary>
''' C1Kontaktperson Details anzeigen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub DetailsKontaktpersonToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DetailsKontaktpersonToolStripMenuItem.Click
Try
Dim f As New frmPerson(Me.C1Kontaktpersonen.Columns("PersonNr").Value, Me.VertragspartnerNr, Me.FormReadonly)
f.ShowDialog()
f.Dispose()
Catch
End Try
End Sub
''' <summary>
''' C1Kontaktperson neue Person erfassen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub NeuKontaktpersonToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NeuKontaktpersonToolStripMenuItem.Click
Dim i As Integer = Me.Vertragspartner.Kontaktperson.Add_New(Me.VertragspartnerNr)
Dim f As New frmPerson(i, Me.VertragspartnerNr, Me.FormReadonly)
f.ShowDialog()
f.Dispose()
Me.Get_Vertragspartner_Kontakte()
Dim r As Integer = 0
For r = 0 To Me.C1Kontaktpersonen.Splits(0).Rows.Count - 1
Me.C1Kontaktpersonen.Bookmark = r
If Me.C1Kontaktpersonen.Columns("PersonNr").CellText(r) = i Then Exit For
Next
End Sub
''' <summary>
''' C1Kontaktperson Mousedown
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub C1Kontaktpersonen_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles C1Kontaktpersonen.MouseDown
Me.C1Kontaktpersonen.Bookmark = Me.C1Kontaktpersonen.RowContaining(e.Y)
End Sub
#End Region
#Region "KontextMenu Vertragspartner"
''' <summary>
''' Vertragspartner anzeigen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub DetailsVertragspartnerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DetailsVertragspartnerToolStripMenuItem.Click
Dim f As New frmVertragspartner(Me.VertragspartnerNr, Me.FormReadonly)
f.ShowDialog()
f.dispose()
Me.Get_Vertragspartner()
End Sub
''' <summary>
''' Neuer Vertragspartner eröffnen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub NeuVertragspartnerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NeuVertragspartnerToolStripMenuItem.Click
Dim i As Integer = Me.Vertragspartner.Add_New
Dim f As New frmVertragspartner(i, Me.FormReadonly)
f.ShowDialog()
f.dispose()
Me.VertragspartnerNr = i
Me.Get_Vertragspartner()
End Sub
''' <summary>
''' Vertragspartner suchen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub SuchenVertragspartnerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SuchenVertragspartnerToolStripMenuItem.Click
Me.btnVertragspartnersuche_Click(sender, e)
End Sub
#End Region
Private Sub C1Kontaktpersonen_FetchRowStyle(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FetchRowStyleEventArgs) Handles C1Kontaktpersonen.FetchRowStyle
Try
If Me.C1Kontaktpersonen.Columns("aktiv").CellValue(e.Row) = False Then
Dim FNT As Font = e.CellStyle.Font
e.CellStyle.Font = New Font(FNT, FontStyle.Strikeout)
e.CellStyle.ForeColor = Color.Gray
End If
Catch
End Try
End Sub
Private Sub KontaktpersonMenuStrip_Opening(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles KontaktpersonMenuStrip.Opening
Me.Disable_Enable_Menu(sender, Me.C1Kontaktpersonen)
End Sub
''' <summary>
''' Enabling bzw. Disabling der Menu-Einträge aufgrund der angezeigten Rows im Truedbgrind
''' </summary>
''' <param name="menu">Zu bearbeitendes Menu</param>
''' <param name="c1data">Betroffenes Grid</param>
''' <returns></returns>
''' <remarks>Nach dem Setzen der Submenus wird sec.form_Security durchlaufen, damit allfällig standardmössig aktivierte Menueinträge
''' aufgrund der Security-Einstellung wieder deaktiviert werden</remarks>
Private Function Disable_Enable_Menu(ByRef menu As ContextMenuStrip, ByRef c1data As C1TrueDBGrid)
If Me.FormReadonly Then
For Each obj As Object In menu.Items
Dim objtype As System.Type = obj.GetType
If LCase(objtype.Name) = "toolstripmenuitem" Then
Dim mnu As ToolStripMenuItem = obj
If (mnu.Text.IndexOf("Anzeigen") > 0 Or mnu.Text.IndexOf("anzeigen") > 0 Or mnu.Text.IndexOf("Details") > 0) And c1data.Splits(0).Rows.Count > 0 Then
mnu.Enabled = True
Else
mnu.Enabled = False
End If
End If
Next
sec.Set_Form_Security(Me)
Exit Function
End If
If c1data.Splits(0).Rows.Count = 0 Then
For Each obj As Object In menu.Items
Dim objtype As System.Type = obj.GetType
If LCase(objtype.Name) = "toolstripmenuitem" Then
Dim mnu As ToolStripMenuItem = obj
If mnu.Text.IndexOf("Neu") > 0 Then
mnu.Enabled = True
Else
mnu.Enabled = False
End If
End If
Next
Else
For Each obj As Object In menu.Items
Dim objtype As System.Type = obj.GetType
If LCase(objtype.Name) = "toolstripmenuitem" Then
Dim mnu As ToolStripMenuItem = obj
mnu.Enabled = True
End If
Next
End If
sec.Set_Form_Security(Me)
End Function
End Class