Files
DPM2016/DPM2016/Behandlung/Behandlung.vb
2018-09-08 22:54:55 +02:00

920 lines
38 KiB
VB.net

Imports System.ComponentModel
Imports DevComponents.AdvTree
Imports Syncfusion.Pdf
Imports Syncfusion.Pdf.Parsing
Public Class Behandlung
#Region "Properties"
Dim m_patientnr As Integer
Property PatientNr As Integer
Get
Return m_patientnr
End Get
Set(value As Integer)
Try
If value = 0 Then Exit Property
m_patientnr = value
Get_Behandlungen()
Catch ex As Exception
log.Writelog("Behandlung: PatientNr Set: " + ex.Message, clsLog.Logtype.ApplError)
Dim a As Integer = 1
End Try
End Set
End Property
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
#End Region
#Region "Deklarationen"
Dim DB As New clsDB
Dim log As New clsLog
Dim FormReadonly As Boolean = False
Dim WithEvents evh As Generic_Event_Handler = Globals.EVH
#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"
Sub Get_Behandlungen()
DB.Get_Tabledata("Behandlu", " where aktiv=1 and nrpatient=" + Me.PatientNr.ToString + " order by status, behandlungsbeginn desc")
Me.treebehandlungen.Nodes.Clear()
Dim BH As New DevComponents.AdvTree.Node
Dim BHoffen As New DevComponents.AdvTree.Node
Dim BHabgeshlossen As New DevComponents.AdvTree.Node
Dim BHFakturiert As New DevComponents.AdvTree.Node
Dim kv As New DevComponents.AdvTree.Node
Dim kvoffen As New DevComponents.AdvTree.Node
Dim kvabgeschlossen As New DevComponents.AdvTree.Node
BH.Text = "Behandlungen"
BH.Tag = -1
BH.ImageIndex = 0
BHoffen.Text = "Offen"
BHoffen.Tag = -11
BHoffen.ImageIndex = 0
BHabgeshlossen.Text = "Abgeschlossen"
BHabgeshlossen.Tag = -12
BHabgeshlossen.ImageIndex = 0
BHFakturiert.Text = "Fakturiert"
BHFakturiert.Tag = -13
BHFakturiert.ImageIndex = 0
BH.Nodes.Add(BHoffen)
BH.Nodes.Add(BHabgeshlossen)
BH.Nodes.Add(BHFakturiert)
kv.Text = "Kostenvoranschlag"
kv.Tag = -2
kv.ImageIndex = 1
kvoffen.Text = "Offen"
kvoffen.Tag = -22
kvoffen.ImageIndex = 1
kvabgeschlossen.Text = "Abgeschlossen"
kvabgeschlossen.Tag = -23
kvabgeschlossen.ImageIndex = 1
Me.treebehandlungen.Nodes.Add(BH)
Me.treebehandlungen.Nodes.Add(kv)
kv.Nodes.Add(kvoffen)
kv.Nodes.Add(kvabgeschlossen)
Dim firstnode_tag As Integer = 0
For Each r As DataRow In DB.dsDaten.Tables(0).Rows
If firstnode_tag = 0 Then firstnode_tag = r("nrbehandlung")
Dim tn As New DevComponents.AdvTree.Node
tn.Tag = r("nrbehandlung")
Dim total As Double = r("Total")
tn.Text = r("behandlungsbeginn") + " / " + total.ToString("N2")
Select Case r("status")
Case 1
tn.ImageIndex = 2
BHoffen.Nodes.Add(tn)
Case 2
tn.ImageIndex = 3
BHabgeshlossen.Nodes.Add(tn)
Case 3
tn.ImageIndex = 4
BHFakturiert.Nodes.Add(tn)
Case 4
tn.ImageIndex = 2
kvoffen.Nodes.Add(tn)
Case 5
tn.ImageIndex = 3
kvabgeschlossen.Nodes.Add(tn)
End Select
Next
Me.treebehandlungen.ExpandAll()
enable_disable_tabs(False)
Me.treebehandlungen.SelectedNode = Globals.FindNode(Me.treebehandlungen.Nodes, firstnode_tag, firstnode_tag)
If firstnode_tag <> 0 Then nodeselected()
End Sub
#End Region
Private Sub treebehandlungen_Click(sender As Object, e As EventArgs) Handles treebehandlungen.Click
nodeselected()
End Sub
Sub nodeselected()
Try
If Me.Behandungdetail1.HasChanges Then
Me.Behandungdetail1.Check_Changes()
End If
Globals.OnLoad = True
If Me.treebehandlungen.SelectedNode.Tag > 0 Then
Me.Behandungdetail1.Patientnr = Me.PatientNr
Me.Behandungdetail1.Behandlungsnr = Me.treebehandlungen.SelectedNode.Tag
Me.Leistungen1.Behandlungnr = Me.treebehandlungen.SelectedNode.Tag
Me.Leistungen1.Behandlungsstatus = Behandungdetail1.Behandlungsstatus
Me.Leistungen1.Dentotar = Behandungdetail1.cbboxNrAbrechnungstyp.Text.Substring(0, 8) = "Dentotar"
Try
Leistungen1.cbboxnrbehandler.SelectedValue = Behandungdetail1.cbboxnrbehandler.SelectedValue
Catch
End Try
enable_disable_tabs(True)
refresh_tabs()
Else
enable_disable_tabs(False)
End If
Catch ex As Exception
enable_disable_tabs(False)
Finally
Globals.OnLoad = False
End Try
End Sub
Sub enable_disable_tabs(ByVal enable As Boolean)
Me.SuperTabControl1.Tabs(1).Enabled = enable
Me.SuperTabControl1.Tabs(0).Enabled = enable
Me.SuperTabControl1.Visible = enable
End Sub
Private Sub DDTBehandlungsbeginn_DoubleClick(sender As Object, e As EventArgs)
sender.value = Now
End Sub
Private Sub SuperTabControl1_SelectedTabChanged(sender As Object, e As DevComponents.DotNetBar.SuperTabStripSelectedTabChangedEventArgs) Handles SuperTabControl1.SelectedTabChanged
Try
refresh_tabs()
Catch
End Try
End Sub
Sub refresh_tabs()
Me.Leistungen1.TaxPunkte = Me.Behandungdetail1.cbboxNrtaxpunkt.SelectedValue
Me.Leistungen1.Frankenwert = Me.Behandungdetail1.mtxtTaxpunktwert.Text
Me.Leistungen1.behandler = Me.Behandungdetail1.cbboxnrbehandler.SelectedValue
Me.Leistungen1.Behandlungnr = Me.Behandungdetail1.Behandlungsnr
Me.Leistungen1.Dentotar = Me.Behandungdetail1.cbboxNrAbrechnungstyp.Text.Substring(0, 8) = "Dentotar"
Me.Leistungen1.dtdatum.Value = Me.Behandungdetail1.DDTBehandlungsbeginn.Value
Me.Leistungen1.txtErgänzung.Text = ""
Me.Leistungen1.refresh_leistungen()
End Sub
Private Sub LöschenToolStripMenuItem_Click(sender As Object, e As EventArgs)
End Sub
Private Sub Benhandungdetail1_Load(sender As Object, e As EventArgs) Handles Behandungdetail1.Load
End Sub
Private Sub tsbtnnewbehandlung_Click(sender As Object, e As EventArgs) Handles tsbtnnewbehandlung.Click
If Me.NeueBehandlungToolStripMenuItem1.Text = "Neuer Kostenvoranschlag" Then
Neue_Behandlung(4)
Else
Neue_Behandlung(1)
End If
End Sub
Sub Neue_Behandlung(ByVal Status As Integer)
Dim db As New clsDB
Dim pat As New clsDB
pat.Get_Tabledata("Privat", "where nrprivat=" + Me.PatientNr.ToString)
Dim newkey As Integer = db.Get_DBKey("Behandlung")
db.Get_Tabledata("Behandlu", " where nrbehandlung=0")
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
r.Item("nrestyp") = pat.dsDaten.Tables(0).Rows(0).Item("estyp")
If Status = 4 Then
Dim db1 As New clsDB
db1.Get_Tabledata("ESTYP", "where default_bei_kv=1")
If db1.dsDaten.Tables(0).Rows.Count > 0 Then
r.Item("nrestyp") = db1.dsDaten.Tables(0).Rows(0).Item("nrestyp")
End If
db1.Dispose()
Else
Dim db1 As New clsDB
db1.Get_Tabledata("ESTYP", "where default_bei_rg=1")
If db1.dsDaten.Tables(0).Rows.Count > 0 Then
r.Item("nrestyp") = db1.dsDaten.Tables(0).Rows(0).Item("nrestyp")
End If
db1.Dispose()
End If
r.Item("nrbehandlung") = newkey
r.Item("nrpatient") = Me.PatientNr
r.Item("nrbehandler") = 1
r.Item("nrrgtyp") = pat.dsDaten.Tables(0).Rows(0).Item("nrrgtyp")
r.Item("rabatt") = pat.dsDaten.Tables(0).Rows(0).Item("rabatt")
Try
If pat.dsDaten.Tables(0).Rows(0).Item("nrgarant") > 0 Then r.Item("nrgarant") = pat.dsDaten.Tables(0).Rows(0).Item("nrgarant")
Catch
End Try
Try
If pat.dsDaten.Tables(0).Rows(0).Item("nrgesvertreter") > 0 Then r.Item("nrgarant") = pat.dsDaten.Tables(0).Rows(0).Item("nrgesvertreter")
Catch
End Try
Try
If pat.dsDaten.Tables(0).Rows(0).Item("nrvs") > 0 Then r.Item("nrgarant") = pat.dsDaten.Tables(0).Rows(0).Item("nrvs")
Catch
End Try
Try
If pat.dsDaten.Tables(0).Rows(0).Item("nrkk") > 0 Then r.Item("nrgarant") = pat.dsDaten.Tables(0).Rows(0).Item("nrkk")
Catch
End Try
Try
If pat.dsDaten.Tables(0).Rows(0).Item("nrfs") > 0 Then r.Item("nrgarant") = pat.dsDaten.Tables(0).Rows(0).Item("nrfs")
Catch
End Try
Try
If pat.dsDaten.Tables(0).Rows(0).Item("nriv") > 0 Then r.Item("nrgarant") = pat.dsDaten.Tables(0).Rows(0).Item("nriv")
Catch
End Try
'If pat.dsDaten.Tables(0).Rows(0).Item("nrgesvertrater") > 0 Then r.Item("nrgarant") = pat.dsDaten.Tables(0).Rows(0).Item("nrgesvertreter")
r.Item("behandlungsbeginn") = Now
r.Item("Behandlungsende") = Now
r.Item("status") = Status
r.Item("statusdatum") = Now
r.Item("erstellt_am") = Now
r.Item("mutiert_am") = Now
r.Item("mutierer") = Globals.ActUser
r.Item("aktiv") = True
r.Item("nrgesetz") = 0
r.Item("nrbehandlungsart") = 0
db.dsDaten.Tables(0).Rows.Add(r)
db.Update_Data()
pat.Dispose()
db.Dispose()
Me.Get_Behandlungen()
Try
Me.treebehandlungen.SelectedNode = Globals.FindNode(Me.treebehandlungen.Nodes, newkey, newkey)
Me.nodeselected()
Catch ex As Exception
End Try
End Sub
Private Sub tsbtndeletebehandlung_Click(sender As Object, e As EventArgs) Handles tsbtndeletebehandlung.Click
If MsgBox("Datensatz wirklich löschen?", vbYesNo + vbQuestion, "Behandlung löschen") = MsgBoxResult.Yes Then
Dim db As New clsDB
db.Get_Tabledata("Behandlu", "where nrbehandlung=" + Me.treebehandlungen.SelectedNode.Tag.ToString)
db.dsDaten.Tables(0).Rows(0).Item("aktiv") = 0
db.dsDaten.Tables(0).Rows(0).Item("Status") = 9
db.dsDaten.Tables(0).Rows(0).Item("mutiert_am") = Now
db.dsDaten.Tables(0).Rows(0).Item("mutierer") = Globals.ActUser
db.Update_Data()
db.Dispose()
Me.Get_Behandlungen()
End If
End Sub
Private Sub BehandlungAbschliessenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BehandlungAbschliessenToolStripMenuItem.Click
End Sub
Private Sub NeueBehandlungToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles NeueBehandlungToolStripMenuItem1.Click
Me.tsbtnnewbehandlung_Click(sender, e)
End Sub
Private Sub BehandlungLöschenToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles BehandlungLöschenToolStripMenuItem1.Click
Me.tsbtndeletebehandlung_Click(sender, e)
End Sub
Private Sub BehandlungabschliessenToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles BehandlungabschliessenToolStripMenuItem1.Click
' If MsgBox("Behandlung/KV abschliessen?", vbYesNo + vbQuestion) = vbYes Then
Behandlung_Abschliessen(Me.treebehandlungen.SelectedNode.Tag.ToString)
'End If
End Sub
Private Sub BehandlunKopierenToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles BehandlungKopierenToolStripMenuItem.Click
If BehandlungKopierenToolStripMenuItem.Text = "Kostenvoranschlag kopieren" Then
Dim dl As MsgBoxResult = MsgBox("Als Kostenvoranschlag kopieren (Ja) oder als neue Behandlung kopieren (Nein)?", vbYesNoCancel + vbQuestion)
If dl = vbYes Then
Dim db As New clsDB
db.Copy_Behandlung(Me.treebehandlungen.SelectedNode.Tag.ToString.ToString, 1)
End If
If dl = vbNo Then
Dim db As New clsDB
db.Copy_Behandlung(Me.treebehandlungen.SelectedNode.Tag.ToString, 2)
End If
Else
Dim dl As MsgBoxResult = MsgBox("Als Behandlung kopieren (Ja) oder als neuer KV kopieren (Nein)?", vbYesNoCancel + vbQuestion)
If dl = vbYes Then
Dim db As New clsDB
db.Copy_Behandlung(Me.treebehandlungen.SelectedNode.Tag.ToString, 3)
End If
If dl = vbNo Then
Dim db As New clsDB
db.Copy_Behandlung(Me.treebehandlungen.SelectedNode.Tag.ToString, 4)
End If
End If
Get_Behandlungen()
End Sub
Private Sub tsbtndelete_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles tsbtndelete.ItemClicked
End Sub
Private Sub ctxmenubehandlung_Opening(sender As Object, e As CancelEventArgs) Handles ctxmenubehandlung.Opening
Try
Dim i As Integer
Try
i = Me.treebehandlungen.SelectedNode.Parent.Tag
Catch
i = Me.treebehandlungen.SelectedNode.Tag
End Try
Me.NeueBehandlungToolStripMenuItem.Enabled = True
Me.BehandlungAbschliessenToolStripMenuItem.Enabled = True
Me.BehandlungZurücksetzenToolStripMenuItem.Enabled = True
Me.BehandlungKopierenToolStripMenuItem.Enabled = True
Me.SofortRechnungDruckenToolStripMenuItem.Enabled = True
Me.KopieErstellenToolStripMenuItem.Enabled = True
Me.BehandlungKopierenToolStripMenuItem.Enabled = True
Me.NeueBehandlungToolStripMenuItem.Visible = True
Me.BehandlungAbschliessenToolStripMenuItem.Visible = True
Me.BehandlungZurücksetzenToolStripMenuItem.Visible = True
Me.BehandlungKopierenToolStripMenuItem.Visible = True
Me.SofortRechnungDruckenToolStripMenuItem.Visible = True
Me.KopieErstellenToolStripMenuItem.Visible = True
Me.BehandlungKopierenToolStripMenuItem.Visible = True
Me.SofortRechnungDruckenToolStripMenuItem.Text = "Sofort-Rechnung drucken"
' Me.ctxmenubehandlung.Enabled = True
Select Case i
Case -11
Me.BehandlungZurücksetzenToolStripMenuItem.Enabled = False
Me.BehandlungabschliessenToolStripMenuItem1.Enabled = True
Me.KopieErstellenToolStripMenuItem.Enabled = False
Me.SofortRechnungDruckenToolStripMenuItem.Enabled = False
Case -12
Me.BehandlungZurücksetzenToolStripMenuItem.Enabled = True
Me.BehandlungabschliessenToolStripMenuItem1.Enabled = False
Me.SofortRechnungDruckenToolStripMenuItem.Enabled = True
KopieErstellenToolStripMenuItem.Enabled = False
Case -13
Me.BehandlungZurücksetzenToolStripMenuItem.Enabled = True
Me.BehandlungabschliessenToolStripMenuItem1.Enabled = False
Me.SofortRechnungDruckenToolStripMenuItem.Enabled = False
Me.KopieErstellenToolStripMenuItem.Enabled = True
End Select
Select Case i
Case -23
Me.BehandlungabschliessenToolStripMenuItem1.Text = "Kostenvoranschlag abschliessen"
BehandlungabschliessenToolStripMenuItem1.Enabled = False
Me.NeueBehandlungToolStripMenuItem1.Text = "Neuer Kostenvoranschlag"
Me.BehandlungZurücksetzenToolStripMenuItem.Text = "Kostenvoranschlag zurücksetzen"
Me.BehandlungZurücksetzenToolStripMenuItem.Visible = True
Me.BehandlungLöschenToolStripMenuItem1.Text = "Kostenvoranschlag löschen"
Me.BehandlungKopierenToolStripMenuItem.Text = "Kostenvoranschlag kopieren"
Me.SofortRechnungDruckenToolStripMenuItem.Enabled = False
Me.KopieErstellenToolStripMenuItem.Enabled = False
Me.SofortRechnungDruckenToolStripMenuItem.Text = "Kostenvoranschlag drucken"
Me.SofortRechnungDruckenToolStripMenuItem.Enabled = True
Case -2
Me.BehandlungabschliessenToolStripMenuItem1.Text = "Kostenvoranschlag abschliessen"
Me.BehandlungabschliessenToolStripMenuItem1.Enabled = False
BehandlungabschliessenToolStripMenuItem1.Enabled = False
Me.NeueBehandlungToolStripMenuItem1.Text = "Neuer Kostenvoranschlag"
Me.BehandlungZurücksetzenToolStripMenuItem.Text = "Kostenvoranschlag zurücksetzen"
Me.BehandlungZurücksetzenToolStripMenuItem.Enabled = False
Me.BehandlungLöschenToolStripMenuItem1.Text = "Kostenvoranschlag löschen"
Me.BehandlungLöschenToolStripMenuItem1.Enabled = False
Me.BehandlungKopierenToolStripMenuItem.Text = "Kostenvoranschlag kopieren"
Case > -20
Me.BehandlungabschliessenToolStripMenuItem1.Text = "Behandlung abschliessen"
Me.NeueBehandlungToolStripMenuItem1.Text = "Neue Behandlung"
Me.BehandlungZurücksetzenToolStripMenuItem.Text = "Behandlung zurücksetzen"
Me.BehandlungZurücksetzenToolStripMenuItem.Visible = True
Me.BehandlungLöschenToolStripMenuItem1.Text = "Behandlung löschen"
Me.BehandlungKopierenToolStripMenuItem.Text = "Behandlung kopieren"
Case < -20 And
Me.BehandlungabschliessenToolStripMenuItem1.Text = "Kostenvoranschlag abschliessen"
BehandlungabschliessenToolStripMenuItem1.Enabled = True
Me.BehandlungabschliessenToolStripMenuItem1.Text = "Kostenvoranschlag abschliessen"
Me.NeueBehandlungToolStripMenuItem1.Text = "Neuer Kostenvoranschlag"
Me.BehandlungZurücksetzenToolStripMenuItem.Text = "Kostenvoranschlag zurücksetzen"
Me.BehandlungZurücksetzenToolStripMenuItem.Visible = False
Me.BehandlungLöschenToolStripMenuItem1.Text = "Kostenvoranschlag löschen"
Me.BehandlungKopierenToolStripMenuItem.Text = "Kostenvoranschlag kopieren"
Me.SofortRechnungDruckenToolStripMenuItem.Enabled = False
Me.KopieErstellenToolStripMenuItem.Enabled = False
End Select
Catch ex As Exception
MsgBox(ex.Message)
Me.ctxmenubehandlung.Enabled = False
End Try
End Sub
Private Sub BehandlungZurücksetzenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BehandlungZurücksetzenToolStripMenuItem.Click
Dim db As New clsDB
Dim Messagetext As String
Dim key As Integer = Me.treebehandlungen.SelectedNode.Tag
db.Get_Tabledata("Behandlu", "where nrbehandlung=" + key.ToString)
If db.dsDaten.Tables(0).Rows(0).Item("Status") = 2 Or db.dsDaten.Tables(0).Rows(0).Item("Status") = 3 Then
Messagetext = "Behandlung "
Else
Messagetext = "Kostenvoranschlag"
End If
Dim fakt As New clsFakturierung
Dim Result = fakt.Verrechnet(Me.treebehandlungen.SelectedNode.Tag)
Select Case Result
Case 0
If MsgBox(Messagetext + " zurücksetzen?", vbYesNo + vbQuestion, Messagetext + " zurücksetzen") = MsgBoxResult.Yes Then
Behandlung_Zurücksetzen(Me.treebehandlungen.SelectedNode.Tag.ToString)
End If
Case 1
If MsgBox("Rechnung stornieren und Behandlung zurücksetzen?", vbYesNo + vbQuestion) = vbYes Then
fakt.Storno(Me.treebehandlungen.SelectedNode.Tag)
Behandlung_Zurücksetzen(Me.treebehandlungen.SelectedNode.Tag.ToString)
End If
Case 2
MsgBox("Behandlung kann nicht zurückgesetzt werden, da bereits Zahlung für die Rechnung eingegangen sind.", vbExclamation)
End Select
End Sub
Private Sub Behandlung_Zurücksetzen(ByVal nrbehandlung As Integer)
Dim key As Integer = Me.treebehandlungen.SelectedNode.Tag
Dim db As New clsDB
Dim result As String
result = db.Get_Datavalue(db.Get_SQL(29), nrbehandlung)
If result <> 0 Then
MsgBox("Behandlung kann nicht zurückgesetzt werden, da Zahlungen vorhanden sind.", vbExclamation)
Exit Sub
End If
db.Get_Tabledata("Behandlu", "where nrbehandlung=" + nrbehandlung.ToString)
db.dsDaten.Tables(0).Rows(0).Item("aktiv") = 1
If db.dsDaten.Tables(0).Rows(0).Item("Status") > 3 Then
db.dsDaten.Tables(0).Rows(0).Item("Status") = 4
Else
db.dsDaten.Tables(0).Rows(0).Item("Status") = 1
End If
db.dsDaten.Tables(0).Rows(0).Item("mutiert_am") = Now
db.dsDaten.Tables(0).Rows(0).Item("mutierer") = Globals.ActUser
db.Update_Data()
db.Dispose()
Me.Get_Behandlungen()
Me.treebehandlungen.SelectedNode = Globals.FindNode(Me.treebehandlungen.Nodes, key, key)
Me.nodeselected()
End Sub
Sub Behandlung_Abschliessen(ByVal nrbehandlung)
Dim istKV As Boolean = False
Dim db As New clsDB
Dim Messagetext As String
Dim key As Integer = Me.treebehandlungen.SelectedNode.Tag
db.Get_Tabledata("Behandlu", "where nrbehandlung=" + nrbehandlung.ToString)
If db.dsDaten.Tables(0).Rows(0).Item("Status") = 1 Then
Messagetext = "Behandlung "
Else
istKV = True
Messagetext = "Kostenvoranschlag"
End If
If MsgBox(Messagetext + " abschliessen?", vbYesNo + vbQuestion) = vbYes Then
Me.Behandungdetail1.Save_Data()
db.Get_Tabledata("Behandlu", "where nrbehandlung=" + nrbehandlung.ToString)
If db.dsDaten.Tables(0).Rows(0).Item("Status") = 1 Then
db.dsDaten.Tables(0).Rows(0).Item("Status") = 2
Messagetext = "Behandlung "
Else
db.dsDaten.Tables(0).Rows(0).Item("Status") = 5
istKV = True
Messagetext = "Kostenvoranschlag"
End If
If db.dsDaten.Tables(0).Rows(0).Item("Behandlungsende").ToString = "" Then
db.dsDaten.Tables(0).Rows(0).Item("Behandlungsende") = db.dsDaten.Tables(0).Rows(0).Item("Behandlungsbeginn")
End If
db.dsDaten.Tables(0).Rows(0).Item("mutiert_am") = Now
db.dsDaten.Tables(0).Rows(0).Item("mutierer") = Globals.ActUser
db.Update_Data()
db.Dispose()
Me.Get_Behandlungen()
Me.treebehandlungen.SelectedNode = Globals.FindNode(Me.treebehandlungen.Nodes, key, key)
Me.nodeselected()
If istKV Then Exit Sub
Dim pat As New clsDB
pat.Get_Tabledata("Privat", "where nrprivat=" + Me.PatientNr.ToString)
Try
If pat.dsDaten.Tables(0).Rows(0).Item("ZAZRecall") > 0 Then
Dim Newdate As DateTime
Newdate = DateAdd(DateInterval.Month, pat.dsDaten.Tables(0).Rows(0).Item("ZAZRecall"), Now)
evh.Fire_Recall_Anzeigen(Newdate, Me.PatientNr, 1)
End If
Catch ex As Exception
End Try
End If
End Sub
#Region "EVH"
Private Sub evh_Behandlung_changed(behandlungsnummer As Integer, patientnr As Integer) Handles evh.Behandlung_changed
If Me.PatientNr = patientnr and patientnr <> 0 Then
Dim tn As DevComponents.AdvTree.Node
tn = Globals.FindNode(Me.treebehandlungen.Nodes, behandlungsnummer, behandlungsnummer)
Try
tn.Text = Me.Behandungdetail1.DDTBehandlungsbeginn.Text + " / " + Me.Behandungdetail1.txtcTotal.Text
Catch
End Try
End If
End Sub
Private Sub evh_Behandlung_Inserted(Patientnr As Integer, Behandlungsnummer As Integer) Handles evh.Behandlung_Inserted
If Me.PatientNr = Patientnr Then
Get_Behandlungen()
Me.treebehandlungen.SelectedNode = Globals.FindNode(Me.treebehandlungen.Nodes, Behandlungsnummer, Behandlungsnummer)
End If
End Sub
Private Sub evh_Taxpunktwert_changed(behandlungsnummer As Integer, patientnr As Integer, taxpunktwert As Double) Handles evh.Taxpunktwert_changed
Try
If Me.treebehandlungen.SelectedNode.Tag = behandlungsnummer Then
Leistungen1.Frankenwert = taxpunktwert
Leistungen1.Recalc_Leistungen()
End If
Catch ex As Exception
End Try
End Sub
Private Sub evh_Behandlung_Zurücksetzen(behandlungsnummer As Integer, patient As Integer) Handles evh.Behandlung_Zurücksetzen
Behandlung_Zurücksetzen(behandlungsnummer)
End Sub
Private Sub evh_Behandlung_Abschliessen(behandlungsnummer As Integer, patient As Integer) Handles evh.Behandlung_Abschliessen
Behandlung_Abschliessen(behandlungsnummer)
End Sub
Private Sub NeuerKostenvoranschalgToolStripMenuItem_Click(sender As Object, e As EventArgs)
Neue_Behandlung(4)
End Sub
Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton2.Click
Get_Behandlungen()
End Sub
Private Sub KopieErstellenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles KopieErstellenToolStripMenuItem.Click
Globals.Rg_Funktionen.Rechnungskopie(Me.treebehandlungen.SelectedNode.Tag.ToString)
Exit Sub
Globals.RGCollection.Clear()
Dim anzahlraten As Integer = 0
DB.Get_Tabledata("Behandlu", "where nrbehandlung=" + Me.treebehandlungen.SelectedNode.Tag.ToString)
Dim behandlungsnr As Integer = DB.dsDaten.Tables(0).Rows(0).Item("nrbehandlung")
anzahlraten = DB.dsDaten.Tables(0).Rows(0).Item("Anzahlraten")
If anzahlraten = 0 Then anzahlraten = 1
DB.Get_Tabledata("estyp", "where nrestyp=" + DB.dsDaten.Tables(0).Rows(0).Item("nrestyp").ToString)
Dim reportnr As Integer
reportnr = DB.Get_ReportNr(DB.dsDaten.Tables(0).Rows(0).Item("estyp"))
Dim fakturanr As Integer
Try
DB.Get_Tabledata("Faktura", "", "Select top 1 nrfaktura from faktura where nrbehandlung=" + behandlungsnr.ToString + " and status <> 9 order by erstellt_am asc ")
fakturanr = DB.dsDaten.Tables(0).Rows(0).Item(0)
Catch
fakturanr = 0
End Try
Globals.FakturaNr = fakturanr
Dim Folgeauswertung As Integer
Dim Separater_Druckjob As Boolean
Dim doloop As Boolean = True
DB.Get_Tabledata("Auswertung", "where auswertungnr=" + reportnr.ToString)
Folgeauswertung = DB.dsDaten.Tables(0).Rows(0).Item("Folge_Report")
Separater_Druckjob = DB.dsDaten.Tables(0).Rows(0).Item("Folgereport_Sep_Druckjob")
Dim hauptfaktura As Integer
While doloop = True
For i As Integer = 1 To anzahlraten
Dim f As New frmReportView(reportnr, False, "Vorschau Rechung", " where nrbehandlung = " + behandlungsnr.ToString, behandlungsnr.ToString)
f.Show()
If fakturanr = 0 Then
f.Fakturierung(reportnr, behandlungsnr, "", i, 1, fakturanr)
Else
f.Fakturierung(reportnr, behandlungsnr, "", i, 1, fakturanr)
End If
'f.Print_Rechnung(False, False, i)
f.Close()
'If i = 1 Then
' Dim fakt As New clsFakturierung
' fakt.Verbuchen(Me.Behandlungsnr, 1)
' hauptfaktura = fakt.fakturanr
'Else
' Dim fakt As New clsFakturierung
' fakt.Verbuchen(Me.Behandlungsnr, i, hauptfaktura)
'End If
Next i
If Folgeauswertung > 0 Then
reportnr = Folgeauswertung
DB.Get_Tabledata("Auswertung", "where auswertungnr=" + Folgeauswertung.ToString)
Folgeauswertung = DB.dsDaten.Tables(0).Rows(0).Item("Folge_Report")
Separater_Druckjob = DB.dsDaten.Tables(0).Rows(0).Item("Folgereport_Sep_Druckjob")
Else
doloop = False
End If
End While
If Globals.RGCollection.Count > 1 Then
Dim document As New PdfDocument()
document.EnableMemoryOptimization = True
Dim i As Integer = 0
Dim fn As String = ""
For Each inputDocument As String In Globals.RGCollection
i = i + 1
If i = 1 Then fn = inputDocument
Dim loadedDocument As New PdfLoadedDocument(inputDocument)
loadedDocument.EnableMemoryOptimization = True
document.ImportPageRange(loadedDocument, 0, loadedDocument.Pages.Count - 1)
loadedDocument.Close(True)
Next
document.Save(fn + ".copy.pdf")
document.Close()
End If
End Sub
Private Sub SofortRechnungDruckenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SofortRechnungDruckenToolStripMenuItem.Click
Behandungdetail1.ToolStripDropDownButton1_Click(sender, e)
End Sub
Private Sub VorschauToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles VorschauToolStripMenuItem.Click
Behandungdetail1.VorschaRechnungToolStripMenuItem_Click(sender, e)
End Sub
Private Sub EntwurfToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EntwurfToolStripMenuItem.Click
Behandungdetail1.DesignRechnungToolStripMenuItem_Click(sender, e)
End Sub
Private Sub RechungKVVorschauToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RechungKVVorschauToolStripMenuItem.Click
Behandungdetail1.VorschaRechnungToolStripMenuItem_Click(sender, e)
End Sub
Private Sub RechnungKVEntwurfToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RechnungKVEntwurfToolStripMenuItem.Click
Behandungdetail1.DesignRechnungToolStripMenuItem_Click(sender, e)
End Sub
Private Sub treebehandlungen_AfterNodeSelect(sender As Object, e As AdvTreeNodeEventArgs) Handles treebehandlungen.AfterNodeSelect
Me.treebehandlungen_Click(sender, e)
End Sub
Private Sub evh_Refresh_Behandlung(behandlungsnr As Integer, patientnr As Integer) Handles evh.Refresh_Behandlung
If Me.PatientNr = patientnr Then
Me.Get_Behandlungen()
Me.treebehandlungen.SelectedNode = Globals.FindNode(Me.treebehandlungen.Nodes, behandlungsnr, behandlungsnr)
Me.nodeselected()
End If
End Sub
Private Sub AlsPDFToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AlsPDFToolStripMenuItem.Click
Globals.Rg_Funktionen.Rechnungskopie(Me.treebehandlungen.SelectedNode.Tag.ToString, False, True)
End Sub
Private Sub ÜberDruckerToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ÜberDruckerToolStripMenuItem.Click
Globals.Rg_Funktionen.Rechnungskopie(Me.treebehandlungen.SelectedNode.Tag.ToString)
Exit Sub
End Sub
Private Sub evh_Total_Berechnet(behandlungsnummer As Integer, Total As Double) Handles evh.Total_Berechnet
Try
If Me.treebehandlungen.SelectedNode.Tag = behandlungsnummer Then
Dim s As String
s = treebehandlungen.SelectedNode.Text
Dim i As Integer
i = s.IndexOf(" /")
If i > 0 Then
s = s.Substring(0, i)
s = s + " / " + Total.ToString("N2")
treebehandlungen.SelectedNode.Text = s
End If
End If
Catch ex As Exception
End Try
End Sub
#End Region
End Class