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.

620 lines
23 KiB

Imports System.ComponentModel
Imports DPM2016.MyCombobox
Public Class frmFirma
Dim m_haschanges As Boolean
Property HasChanges As Boolean
Get
Return m_haschanges
End Get
Set(value As Boolean)
m_haschanges = value
End Set
End Property
Dim m_firmanr As Integer = 0
Property Firmanr As Integer
Get
Return m_firmanr
End Get
Set(value As Integer)
m_firmanr = value
Fill_Stammdaten()
Get_Data()
AddChanges(Me)
Me.txtName1.Select()
Me.Finanzen1.Patientnr = value
Me.HasChanges = False
Me.ClsDokumente1.Patientnr = Me.Firmanr
End Set
End Property
#Region "Deklarationen"
Dim DB As New clsDB
Dim FormReadonly As Boolean = False
Dim log As New clsLog
Dim WithEvents evh As Generic_Event_Handler = Globals.EVH
Dim spalten As New Tabellenspalte
Dim Firmaap As New DataTable
#End Region
#Region "Closing / Check_Changes"
''' <summary>
''' Prüfung, ob Datenänderungen vorgenommen wurden.
''' </summary>
''' <remarks></remarks>
Private Function Check_Changes() As Boolean
If Me.FormReadonly Then
Return True
Exit Function
End If
Dim msgres As MsgBoxResult
If Me.HasChanges Then
msgres = MsgBox("Daten wurden verändert. Wollen Sie die Änderungen speichern", vbYesNo + vbQuestion)
Select Case msgres
Case MsgBoxResult.Yes
Save_Data()
Return True
Case MsgBoxResult.Cancel
Return False
Case MsgBoxResult.No
Me.HasChanges = False
Return True
End Select
Else
Return True
End If
End Function
#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 RichTextBox Then
Dim ctl As RichTextBox = c
AddHandler ctl.TextChanged, evh
End If
If TypeOf c Is CheckBox Then
If c.Name <> "cboxNurAktive" Then
Dim ctl As CheckBox = c
AddHandler ctl.CheckedChanged, evh
End If
End If
If TypeOf c Is DateTimePicker Then
Dim ctl As DateTimePicker = c
AddHandler ctl.ValueChanged, evh
End If
If TypeOf c Is CheckedListBox Then
Dim ctl As CheckedListBox = c
AddHandler ctl.ItemCheck, AddressOf ChecketListBoxChange
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.HasChanges = True
Dim objtype As System.Type = sender.GetType
If objtype.Name = "MaskedTextBox" Then
Dim o As MaskedTextBox = sender
If o.Text = "01.01.1900" Then o.Text = " . . "
End If
End Sub
Private Sub ChecketListBoxChange(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs)
Me.HasChanges = 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 "Daten_Laden"
Public Sub Fill_Stammdaten()
log.Writelog("PartnerDetails: Fill_Stammdaten", clsLog.Logtype.Information)
Me.cbboxSprache.Table = "Sprache"
Me.cbboxSprache.Displaymember = "Sprachbezeichnung"
Me.cbboxSprache.Valuemember = "Sprachcode"
Me.cbboxStatus.Table = "Status"
Me.cbboxStatus.Displaymember = "Status"
Me.cbboxStatus.Valuemember = "nrstatus"
log.Writelog("PartnerDetails: Fill_Stammdaten Ende", clsLog.Logtype.Information)
End Sub
Private Sub frmFirma_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Select Case Globals.Funktionsstufe
Case 2
Me.Finanzen.Visible = False
End Select
If Globals.License.DMS = False Then
Me.SuperTabControl1.Tabs("Dokumente").Visible = False
End If
Dim db As New clsDB
If Firmanr = 0 Then
db.Get_Tabledata("Firma", "Select * from firma order by name1, ort", "", "", False)
Me.Firmanr = db.dsDaten.Tables(0).Rows(0).Item(0)
End If
Get_Data()
Select Case Globals.Funktionsstufe
Case 2
Me.tsbtnFinanzen.Visible = False
End Select
End Sub
Sub Get_Data()
Dim ctlname As String
Dim colname As String
Try
DB.Get_Tabledata("firma", " where nrfirma=" + Me.Firmanr.ToString)
Dim r As DataRow = DB.dsDaten.Tables(0).Rows(0)
For Each c As DataColumn In DB.dsDaten.Tables(0).Columns
colname = c.ColumnName
For Each Ctl As Control In Me.Panel1.Controls ' Me.Controls
'Dim objtype As System.Type = Ctl.GetType
'If objtype.Name = "Label" Then
' Exit For
'End If
ctlname = Ctl.Name
log.Writelog("Firmadetails: Get_Data: " + Ctl.Name, clsLog.Logtype.Information)
If UCase(Ctl.Name) = "TXT" + UCase(c.ColumnName) Then
log.Writelog("--Firmadetails: Get_Data: " + Ctl.Name + " " + c.ColumnName, clsLog.Logtype.Information)
Ctl.Text = r(c.ColumnName).ToString
Exit For
End If
If UCase(Ctl.Name) = "CBBOX" + UCase(c.ColumnName) Then
log.Writelog("--Firmadetails: Get_Data: " + Ctl.Name + " " + c.ColumnName, clsLog.Logtype.Information)
Dim ct As MyCombobox
Dim o As Object = Ctl
Try
o.SelectedValue = r(c.ColumnName)
Catch
o.SelectedValue = -1
End Try
Exit For
End If
If UCase(Ctl.Name) = "CBTXTBOX" + UCase(c.ColumnName) Then
log.Writelog("--Partnerdtails: Get_Data: " + Ctl.Name + " " + c.ColumnName, clsLog.Logtype.Information)
Dim ct As ComboBox
Dim o As Object = Ctl
Try
o.text = r(c.ColumnName)
Catch
o.Text = ""
End Try
Exit For
End If
If UCase(Ctl.Name) = "DT" + UCase(c.ColumnName) Then
log.Writelog("--Firmadetails: Get_Data: " + Ctl.Name + " " + c.ColumnName, clsLog.Logtype.Information)
Dim dt As DateTimePicker
dt = Ctl
Try
dt.Value = r(c.ColumnName)
dt.Format = DateTimePickerFormat.Short
Catch
dt.CustomFormat = " " 'An empty SPACE
dt.Format = DateTimePickerFormat.Custom
End Try
Exit For
End If
If UCase(Ctl.Name) = "CHK" + UCase(c.ColumnName) Then
Dim cb As CheckBox
cb = Ctl
Try
cb.Checked = r(c.ColumnName)
Catch ex As Exception
End Try
Exit For
End If
Next
Select Case UCase(c.ColumnName)
Case "AG"
Set_Adresstype("Arbeitgeber", r(c.ColumnName).ToString)
log.Writelog("--Firmendetails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "VS"
Set_Adresstype("Versicherung", r(c.ColumnName).ToString)
log.Writelog("--Firmendetails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "KK"
Set_Adresstype("Krankenkasse", r(c.ColumnName).ToString)
log.Writelog("--Firmendetails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "IV"
Set_Adresstype("IV", r(c.ColumnName).ToString)
log.Writelog("--Firmendetails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "FS"
Set_Adresstype("Fürsorge", r(c.ColumnName).ToString)
log.Writelog("--Firmendetails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
Case "Garant"
Set_Adresstype("Garant", r(c.ColumnName).ToString)
log.Writelog("--Firmendetails: Get_Data Set_Adresstyp: " + c.ColumnName, clsLog.Logtype.Information)
End Select
Next
Refresh_AP()
Catch ex As Exception
log.Writelog("Privatdetails: Get_Data: " + ctlname + " / " + colname + " " + ex.Message, clsLog.Logtype.ApplError)
End Try
End Sub
Sub Refresh_AP()
DB.Get_Tabledata("Firmaap", "where aktiv=1 and nrfirma=" + Firmanr.ToString)
Me.Firmaap.Rows.Clear()
Me.Firmaap = DB.dsDaten.Tables(0).Copy
Me.c1daten.DataSource = Firmaap
spalten.Spaltentitel_aktualisieren(Me.c1daten, DB.dsDaten.Tables(0).TableName, DB.dsDaten.Tables(0))
End Sub
Private Sub Set_Adresstype(ByVal feldname, value)
Dim i As Integer
For i = 0 To Me.chklbAdresstyp.Items.Count - 1
If UCase(chklbAdresstyp.Items(i).ToString) = UCase(feldname) Then
Try
If value <> False Then chklbAdresstyp.SetItemCheckState(i, CheckState.Checked) Else chklbAdresstyp.SetItemCheckState(i, CheckState.Unchecked)
Catch ex As Exception
chklbAdresstyp.SetItemCheckState(i, CheckState.Unchecked)
End Try
End If
Next
End Sub
#End Region
#Region "Daten speichern"
Private Sub dtgueltigab_ValueChanged(sender As Object, e As EventArgs) Handles dtgueltigab.ValueChanged, dtgueltigbis.ValueChanged
Dim dt As DateTimePicker
dt = sender
dt.CustomFormat = ""
dt.Format = DateTimePickerFormat.Short
End Sub
Private Sub btndeldatetimeab_Click(sender As Object, e As EventArgs) Handles btndeldatetimeab.Click
dtgueltigab.CustomFormat = " " 'An empty SPACE
dtgueltigab.Format = DateTimePickerFormat.Custom
End Sub
Private Sub btndeldatetimebis_Click(sender As Object, e As EventArgs) Handles btndeldatetimebis.Click
dtgueltigbis.CustomFormat = " " 'An empty SPACE
dtgueltigbis.Format = DateTimePickerFormat.Custom
End Sub
#End Region
#Region "Daten speichern"
Public Sub Save_Data()
DB.Get_Tabledata("firma", " where nrfirma=" + Me.Firmanr.ToString)
Dim r As DataRow = DB.dsDaten.Tables(0).Rows(0)
For Each c As DataColumn In DB.dsDaten.Tables(0).Columns
For Each Ctl As Control In Me.Panel1.Controls 'Me.Controls
If UCase(Ctl.Name) = "TXT" + UCase(c.ColumnName) Then
If UCase(Ctl.Name) <> "TXTMUTIERT_AM" And UCase(Ctl.Name) <> "TXTERSTLLT_AM" Then
r(c.ColumnName) = Ctl.Text
Exit For
End If
End If
If UCase(Ctl.Name) = "CBBOX" + UCase(c.ColumnName) Then
Dim ct As MyCombobox
Dim o As Object = Ctl
Try
r(c.ColumnName) = o.selectedvalue
Catch ex As Exception
r(c.ColumnName) = 0
End Try
Exit For
End If
If UCase(Ctl.Name) = "CBTXTBOX" + UCase(c.ColumnName) Then
Dim ct As MyCombobox
Dim o As Object = Ctl
Try
r(c.ColumnName) = o.text
Catch ex As Exception
r(c.ColumnName) = ""
End Try
Exit For
End If
If UCase(Ctl.Name) = "DT" + UCase(c.ColumnName) Then
Dim dt As DateTimePicker
dt = Ctl
If dt.CustomFormat = " " Then
r(c.ColumnName) = System.DBNull.Value
Else
r(c.ColumnName) = dt.Value
End If
Exit For
End If
If UCase(Ctl.Name) = "CHK" + UCase(c.ColumnName) Then
Dim cb As CheckBox
cb = Ctl
r(c.ColumnName) = cb.Checked
Exit For
End If
Next
Select Case UCase(c.ColumnName)
Case "AG"
r(c.ColumnName) = Get_Adresstype("Arbeitgeber", r(c.ColumnName))
Case "VS"
r(c.ColumnName) = Get_Adresstype("Versicherung", r(c.ColumnName))
Case "KK"
r(c.ColumnName) = Get_Adresstype("Krankenkasse", r(c.ColumnName))
Case "IV"
r(c.ColumnName) = Get_Adresstype("IV", r(c.ColumnName))
Case "FS"
r(c.ColumnName) = Get_Adresstype("Fürsorge", r(c.ColumnName))
Case "GARANT"
r(c.ColumnName) = Get_Adresstype("GARANT", r(c.ColumnName))
End Select
Next
r("Mutiert_am") = Now
r("mutierer") = Globals.ActUser
DB.Update_Data()
Me.HasChanges = False
End Sub
Private Function Get_Adresstype(ByVal feldname, value) As Integer
Try
Dim i As Integer
For i = 0 To Me.chklbAdresstyp.Items.Count - 1
If UCase(chklbAdresstyp.Items(i).ToString) = UCase(feldname) Then
Return chklbAdresstyp.GetItemChecked(i)
End If
Next
Catch
Return -1
End Try
End Function
Private Sub tsbtnSave_Click(sender As Object, e As EventArgs) Handles tsbtnSave.Click
Save_Data()
End Sub
#End Region
#Region "Scroll"
Private Sub tsbtnfirst_Click(sender As Object, e As EventArgs) Handles tsbtnfirst.Click
If Me.Check_Changes = False Then Exit Sub
Dim db As New clsDB
db.Get_Tabledata("Firma", "", db.Get_SQL(24))
Me.Firmanr = db.dsDaten.Tables(0).Rows(0).Item(0)
db.Dispose()
End Sub
Private Sub tsbtnlast_Click(sender As Object, e As EventArgs) Handles tsbtnlast.Click
If Me.Check_Changes = False Then Exit Sub
Dim db As New clsDB
db.Get_Tabledata("Firma", "", db.Get_SQL(25))
Me.Firmanr = db.dsDaten.Tables(0).Rows(0).Item(0)
db.Dispose()
End Sub
Private Sub tsbtnnext_Click(sender As Object, e As EventArgs) Handles tsbtnnext.Click
If Me.Check_Changes = False Then Exit Sub
Dim db As New clsDB
Try
db.Get_Tabledata("Firma", "", db.Get_SQL(26), "'" + Me.txtName1.Text + "'")
Me.Firmanr = db.dsDaten.Tables(0).Rows(0).Item(0)
Catch
Me.Firmanr = Me.Firmanr
End Try
db.Dispose()
End Sub
Private Sub tsbtprev_Click(sender As Object, e As EventArgs) Handles tsbtprev.Click
If Me.Check_Changes = False Then Exit Sub
Dim db As New clsDB
Try
db.Get_Tabledata("firma", "", db.Get_SQL(27), "'" + Me.txtName1.Text + "'")
Me.Firmanr = db.dsDaten.Tables(0).Rows(0).Item(0)
Catch
Me.Firmanr = Me.Firmanr
End Try
db.Dispose()
End Sub
Private Sub ToolStripButton7_Click(sender As Object, e As EventArgs) Handles ToolStripButton7.Click
Try
Dim f As New frmFirmaAP
f.nrfirmaap = Me.c1daten.Columns("nrfirmaap").Value
f.firmanr = Me.c1daten.Columns("nrfirma").Value
f.ShowDialog()
Refresh_AP()
Catch ex As Exception
End Try
End Sub
Private Sub ToolStripButton8_Click(sender As Object, e As EventArgs) Handles ToolStripButton8.Click
If MsgBox("Ansprechpartner wirklich löschen?", vbYesNo + vbQuestion) = vbYes Then
Dim f As New frmFirmaAP
f.nrfirmaap = Me.c1daten.Columns("nrfirmaap").Value
f.firmanr = Me.c1daten.Columns("nrfirma").Value
f.Visible = False
f.Show()
f.Delete_ap()
f.Close()
Refresh_AP()
End If
End Sub
Private Sub ToolStripButton6_Click(sender As Object, e As EventArgs) Handles ToolStripButton6.Click
Dim f As New frmFirmaAP
f.nrfirmaap = 0
f.firmanr = Me.Firmanr
f.ShowDialog()
Refresh_AP()
End Sub
Private Sub tsbtnquit_Click(sender As Object, e As EventArgs) Handles tsbtnquit.Click
Me.Close()
End Sub
Private Sub tsbtnnew_Click(sender As Object, e As EventArgs) Handles tsbtnnew.Click
Dim db As New clsDB
Dim newkey As Integer = db.Get_DBKey("Firma")
db.Get_Tabledata("Firma", " where nrfirma=500000")
Dim r As DataRow
r = db.dsDaten.Tables(0).NewRow
For Each c As DataColumn In db.dsDaten.Tables(0).Columns
r.Item(c) = db.dsDaten.Tables(0).Rows(0).Item(c)
Next
db.dsDaten.Tables(0).Rows(0).Item(0) = newkey
db.dsDaten.Tables(0).Rows(0).Item("Erstellt_am") = Now
db.dsDaten.Tables(0).Rows(0).Item("mutiert_am") = Now
db.dsDaten.Tables(0).Rows(0).Item("mutierer") = Globals.ActUser
db.dsDaten.Tables(0).Rows(0).Item("aktiv") = True
db.dsDaten.Tables(0).Rows(0).Item("Gueltigab") = Now
db.dsDaten.Tables(0).Rows.Add(r)
db.Update_Data()
Me.Firmanr = newkey
db.Dispose()
End Sub
Private Sub tstxtsuche_KeyDown(sender As Object, e As KeyEventArgs) Handles tstxtsuche.KeyDown
If e.KeyCode = Keys.Enter Then
Dim db As New clsDB
Dim nrfirma As Integer = db.Search("Firma", Me.tstxtsuche.Text)
If nrfirma <> -1 Then Me.Firmanr = nrfirma
If Me.SuperTabControl1.SelectedTab.Name = "Dokumente" Then
Me.ClsDokumente1.Patientnr = Me.Firmanr
Me.ClsDokumente1.Refresh_Grid()
End If
db.Dispose()
db.Dispose()
End If
End Sub
Private Sub txtPLZ_Leave(sender As Object, e As EventArgs) Handles txtPlz.Leave
If Me.txtOrt.Text = "" Then IntTables.Get_Ort_Kantton(Me.txtPlz.Text, Me.txtOrt, Me.cbtxtboxKanton)
End Sub
Private Sub frmFirma_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
If Me.Check_Changes = False Then e.Cancel = True
End Sub
Private Sub tsbtnFinanzen_Click(sender As Object, e As EventArgs) Handles tsbtnFinanzen.Click
If Me.Finanzen1.Visible = False Then Me.Finanzen1.Visible = True Else Me.Finanzen1.Visible = False
End Sub
Private Sub txtName1_TextChanged(sender As Object, e As EventArgs) Handles txtName1.TextChanged, txtName2.TextChanged, txtOrt.TextChanged, txtPlz.TextChanged
Me.Text = Me.txtnrfirma.Text + " " + Me.txtName1.Text + " " + Me.txtName2.Text + ", " + Me.txtPlz.Text + " " + Me.txtOrt.Text
End Sub
Private Sub tstxtsuche_Click(sender As Object, e As EventArgs) Handles tstxtsuche.Click
End Sub
Private Sub SuperTabControl1_SelectedTabChanged(sender As Object, e As DevComponents.DotNetBar.SuperTabStripSelectedTabChangedEventArgs) Handles SuperTabControl1.SelectedTabChanged
If SuperTabControl1.SelectedTab.Name = "Dokumente" Then
Me.ClsDokumente1.Patientnr = Me.Firmanr
Me.ClsDokumente1.refreshdata()
End If
End Sub
#End Region
End Class