Imports System.Data.SqlClient Imports SB Imports System.Windows.Input Imports C1.Win Imports C1.Win.C1TrueDBGrid Imports C1.Win.C1TrueDBGrid.BaseGrid Imports Gnostice.Documents Imports Syncfusion.Windows.Forms.Edit.Utils.Serializers Imports Syncfusion.Windows.Forms.Tools Public Class LeistungDruck Dim db As New clsDB Dim onload As Boolean = False Dim m_behandlungnr As Integer Property Behandlungnr As Integer Get Return m_behandlungnr End Get Set(value As Integer) m_behandlungnr = value Me.onload = True Me.C1Produktzusatz.DataSource = Nothing load_data() Me.onload = False End Set End Property Dim m_dentotar As Boolean = False Property Dentotar As Boolean Get Return m_dentotar End Get Set(value As Boolean) If Globals.LeistungenLoaded = True Then Exit Property m_dentotar = value load_data() Globals.LeistungenLoaded = True End Set End Property Dim m_Behandlungsstatus As Integer Property Behandlungsstatus As Integer Get Return m_Behandlungsstatus End Get Set(value As Integer) m_Behandlungsstatus = value Select Case value Case 1, 4 Me.grpLeistungsdetails.Enabled = True Me.GrpTarif.Enabled = True Me.BearbeitenToolStripMenuItem.Enabled = True Me.LöschenToolStripMenuItem.Enabled = True enable_disable_fields() Case Else Me.grpLeistungsdetails.Enabled = False Me.GrpTarif.Enabled = False Me.BearbeitenToolStripMenuItem.Enabled = False Me.LöschenToolStripMenuItem.Enabled = False enable_disable_fields() End Select If Globals.Applicationtype = Applicationtype.Projektabrechnung Then Me.TabPage1.Text = "Artikel" Me.GrpTarif.Text = "Artikel" End If End Set End Property Enum Taxpunkttyp Privat = 1 Suva = 2 Minmal = 3 Maximal = 4 Dentotar = 5 End Enum Dim m_taxpunkte As Taxpunkttyp Property TaxPunkte As Taxpunkttyp Get Return m_taxpunkte End Get Set(value As Taxpunkttyp) m_taxpunkte = value End Set End Property Dim intSort As Integer = 0 Dim m_frankenwert As Double Property Frankenwert As Double Get Return m_frankenwert End Get Set(value As Double) m_frankenwert = value Me.diwert.Value = value End Set End Property Dim m_behandler As Integer Property behandler As Integer Get Return m_behandler End Get Set(value As Integer) m_behandler = value End Set End Property Dim Kalkulationsmenge As Integer = 0 Dim Zuschlag_Rabatt As Double = 0 Dim WithEvents evh As Generic_Event_Handler = Globals.EVH Sub load_data() If Globals.DruckBranche = False Then Exit Sub Try If Globals.LeistungenLoaded = True Then Exit Sub If Globals.Applicationtype = ApplicationTypes.Projektabrechnung Then 'GrpTarif.Width = 550 'GrpLeistungen.Left = GrpTarif.Left + GrpTarif.Width + 4 grpLeistungsdetails.Left = GrpTarif.Left + GrpTarif.Width + 4 Me.lblbehandler.Text = "Erbringer" lblPosition.Left = lbldatum.Left lblPosition.Top = lbldatum.Top + lbldatum.Height + 6 txtPosition.Top = lblPosition.Top Me.lblBeschreibung.Top = Me.lblPosition.Top + Me.lblPosition.Height + 8 Me.txtBezD.Left = lblBeschreibung.Left Me.txtBezD.Top = lblBeschreibung.Top + lblBeschreibung.Height + 2 Me.txtBezD.Width = 320 Me.txtBezD.Height = 58 Me.Label2.Visible = False Me.txtErgänzung.Visible = False Me.lblMenge.Top = Me.txtBezD.Top + Me.txtBezD.Height + 7 Me.DIMenge.Top = Me.lblMenge.Top - 2 Me.DIMenge.Left = Me.lblMenge.Left + Me.lblMenge.Width + 5 Me.lblTaxpunkte.Top = Me.lblMenge.Top Me.lblTaxpunkte.Left = Me.DIMenge.Left + Me.DIMenge.Width + 10 Me.DIPunkte.Top = Me.DIMenge.Top Me.DIPunkte.Left = Me.lblTaxpunkte.Left + Me.lblTaxpunkte.Width + 5 'Me.DIPunkte.Top = Me.DIPunkte.Top Me.lblWert.Top = Me.lblMenge.Top Me.lblWert.Left = Me.DIPunkte.Left + Me.DIPunkte.Width + 5 Me.diwert.Top = Me.DIMenge.Top Me.diwert.Left = Me.lblWert.Left + Me.lblWert.Width + 5 Me.txtBezD.Width = Me.lblMenge.Left + Me.diwert.Left + Me.diwert.Width End If db.Get_Tarife() Me.TreeTarifGruppen.Nodes.Clear() If Dentotar = True Then For Each r As DataRow In IntTables.Inttables.Tables("Tarife").Rows Select Case True Case Trim(r("Bezeichnung")).Contains("UV_MV_IV") Or Trim(r("Bezeichnung")).Contains("Dentotar") Dim tn As New DevComponents.AdvTree.Node tn.DataKey = 222 tn.Text = r("Bezeichnung") Me.TreeTarifGruppen.Nodes.Add(tn) Dim sortstring As String = "KapitelNrNeu" Dim dv As New DataView(IntTables.Inttables.Tables("dentotar"), "Level=1 and KapitelNrNeu<>'00' and KapitelNrNeu<>'000' ", sortstring, DataViewRowState.CurrentRows) For Each rowView As DataRowView In dv Dim r2 As DataRow = rowView.Row Dim tn1 As New DevComponents.AdvTree.Node tn1.Text = r2("Leistungd") tn1.DataKey = r2("KapitelnrNeu") tn1.Tag = r2("KapitelLeistung") tn.Nodes.Add(tn1) Next Case Trim(r("Bezeichnung")).Contains("Zahntechnik (VZLS)") Dim tn As New DevComponents.AdvTree.Node tn.Text = r("Bezeichnung") tn.DataKey = 223 Me.TreeTarifGruppen.Nodes.Add(tn) Dim sortstring As String = "KapitelNrNeu" Dim dv As New DataView(IntTables.Inttables.Tables("dentotar_223"), "Level=1 and KapitelNrNeu<>'00' and KapitelNrNeu<>'000' ", sortstring, DataViewRowState.CurrentRows) For Each rowView As DataRowView In dv Dim r2 As DataRow = rowView.Row Dim tn1 As New DevComponents.AdvTree.Node tn1.Text = r2("Leistungd") tn1.DataKey = r2("KapitelnrNeu") tn1.Tag = r2("KapitelLeistung") tn.Nodes.Add(tn1) Next Case Trim(r("Bezeichnung")).Contains("SSO") Case Else If UCase(r("bezeichnung")).ToString.IndexOf("DH") < 0 And UCase(r("bezeichnung")).ToString.IndexOf("9000") < 0 Then Dim tn As New DevComponents.AdvTree.Node tn.Text = r("bezeichnung") tn.DataKey = r("nummervon") tn.Tag = r("nummerbis") 'tn.Tag = r("nummervon") Me.TreeTarifGruppen.Nodes.Add(tn) For Each r1 As DataRow In IntTables.Inttables.Tables("tarifgrp").Rows If r1("tarifvon").ToString >= tn.DataKey.ToString And r1("tarifbis").ToString <= tn.Tag.ToString Then Dim tn1 As New DevComponents.AdvTree.Node tn1.Text = r1("tarifgruppe") tn1.DataKey = r1("tarifvon") tn1.Tag = r1("tarifbis") tn.Nodes.Add(tn1) End If Next End If End Select Next Me.lbPakete.Items.Clear() Me.lbPakete.DataSource = IntTables.Inttables.Tables("Tarpaket") Me.lbPakete.DisplayMember = "Paketbezeichnung" Me.lbPakete.ValueMember = "nrpaket" Me.lbPakete.SelectedIndex = 0 Me.TreeTarifGruppen.SelectedNode = Me.TreeTarifGruppen.Nodes(0) Me.cbboxnrbehandler.Dataselection = db.Get_SQL(2) Me.cbboxnrbehandler.TableAlias = "Behandler_BH" Me.cbboxnrbehandler.Table = "Behandler" Me.cbboxnrbehandler.Displaymember = "Name" Me.cbboxnrbehandler.Valuemember = "nrprivat" Load_Tarif() Exit Sub End If For Each r As DataRow In IntTables.Inttables.Tables("Tarife").Rows If r("Bezeichnung").ToString.IndexOf("Dentotar") < 0 And r("Bezeichnung").ToString.IndexOf("UV_MV_IV") < 0 Then Dim tn As New DevComponents.AdvTree.Node tn.Text = r("bezeichnung") tn.DataKey = r("nummervon") tn.Tag = r("nummerbis") 'tn.Tag = r("nummervon") Me.TreeTarifGruppen.Nodes.Add(tn) For Each r1 As DataRow In IntTables.Inttables.Tables("tarifgrp").Rows If r1("tarifvon").ToString >= tn.DataKey.ToString And r1("tarifbis").ToString <= tn.Tag.ToString Then Dim tn1 As New DevComponents.AdvTree.Node tn1.Text = r1("tarifgruppe") tn1.DataKey = r1("tarifvon") tn1.Tag = r1("tarifbis") tn.Nodes.Add(tn1) End If Next End If Next Me.lbPakete.Items.Clear() Me.lbPakete.DataSource = IntTables.Inttables.Tables("Tarpaket") Me.lbPakete.DisplayMember = "Paketbezeichnung" Me.lbPakete.ValueMember = "nrpaket" Me.lbPakete.SelectedIndex = 0 Me.TreeTarifGruppen.SelectedNode = Me.TreeTarifGruppen.Nodes(0) Me.cbboxnrbehandler.Dataselection = db.Get_SQL(2) Me.cbboxnrbehandler.TableAlias = "Behandler_BH" Me.cbboxnrbehandler.Table = "Behandler" Me.cbboxnrbehandler.Displaymember = "Name" Me.cbboxnrbehandler.Valuemember = "nrprivat" Load_Tarif() Try Me.cbboxnrbehandler.SelectedValue = Me.behandler Catch ex As Exception End Try Catch ex As Exception MsgBox(ex.Message) End Try Globals.LeistungenLoaded = True End Sub Sub Load_Tarif() Dim isdentotar As Boolean = False Dim isZahntechnik As Boolean = False Dim dv As DataView Dim dv1 As DataView If Dentotar = True And Me.TreeTarifGruppen.SelectedNode.DataKey = 222 Then isdentotar = True End If If Dentotar = True And Len(TreeTarifGruppen.SelectedNode.DataKeyString < 3) Then Try If TreeTarifGruppen.SelectedNode.Parent.DataKey = 222 Then isdentotar = True End If Catch End Try End If If isdentotar Then Try Dim Wherestring As String Dim db As New DataView(IntTables.Inttables.Tables("Dentotar")) Dim sortstring As String = "leistungnrneu, leistungd" If Me.TreeTarifGruppen.SelectedNode.DataKeyString = "222" Then Wherestring = "Kapitelleistung='Lei' and KapitelNrNeu like '" + "" + "%'" Else Wherestring = "Kapitelleistung='Lei' and KapitelNrNeu like '" + Me.TreeTarifGruppen.SelectedNode.DataKeyString + "%'" End If dv = New DataView(IntTables.Inttables.Tables("dentotar"), Wherestring, sortstring, DataViewRowState.CurrentRows) Me.lbtarif1.DataSource = Nothing Me.lbtarif1.DataSource = dv Me.lbtarif1.DisplayMember = "nr_bez" Me.lbtarif1.ValueMember = "LeistungNrNeu" Exit Sub Catch ex As Exception MsgBox(ex.Message) End Try End If If Dentotar = True And Me.TreeTarifGruppen.SelectedNode.DataKey = 223 Then isZahntechnik = True End If If Dentotar = True And Len(TreeTarifGruppen.SelectedNode.DataKeyString < 3) Then Try If TreeTarifGruppen.SelectedNode.Parent.DataKey = 223 Then isZahntechnik = True End If Catch End Try End If If isZahntechnik Then Try Dim wherestring As String Dim db As New DataView(IntTables.Inttables.Tables("Dentotar_223")) Dim sortstring As String = "leistungnrneu, leistungd" If Me.TreeTarifGruppen.SelectedNode.DataKeyString = "223" Then wherestring = "Kapitelleistung='Lei' and KapitelNrNeu like '" + "" + "%'" Else wherestring = "Kapitelleistung='Lei' and KapitelNrNeu like '" + Me.TreeTarifGruppen.SelectedNode.DataKeyString + "%'" End If dv = New DataView(IntTables.Inttables.Tables("dentotar_223"), wherestring, sortstring, DataViewRowState.CurrentRows) Me.lbtarif1.DataSource = Nothing Me.lbtarif1.DataSource = dv Me.lbtarif1.DisplayMember = "nr_bez" Me.lbtarif1.ValueMember = "LeistungNrNeu" Exit Sub Catch ex As Exception MsgBox(ex.Message) End Try End If db.Get_Tarif() Try Dim SortString As String = "" If intSort = 0 Then SortString = "Nr_Bez asc" Else SortString = "Nr_Bez desc" End If dv1 = New DataView(IntTables.Inttables.Tables("Tarif"), "SSO_Nummer >='" + Me.TreeTarifGruppen.SelectedNode.DataKeyString + "' and SSO_Nummer <='" + Me.TreeTarifGruppen.SelectedNode.TagString + "'", SortString, DataViewRowState.CurrentRows) lbtarif1.DataSource = Nothing lbtarif1.DataSource = dv1 lbtarif1.DisplayMember = "nr_Bez" lbtarif1.ValueMember = "nrtarif" Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub lbtarif_SelectedIndexChanged(sender As Object, e As EventArgs) Load_Tarif() End Sub Private Sub tsUp_Click(sender As Object, e As EventArgs) Handles tsUp.Click intSort = 0 Load_Tarif() End Sub Private Sub tsDown_Click(sender As Object, e As EventArgs) Handles tsDown.Click intSort = 1 Load_Tarif() End Sub Private Sub txtfilter_KeyDown(sender As Object, e As KeyEventArgs) Handles txtfilter.KeyDown If e.KeyCode <> Keys.Enter Then End If End Sub Private Sub txtfilter_KeyUp(sender As Object, e As KeyEventArgs) Handles txtfilter.KeyUp Dim T As New DataTable T.Columns.Add("NR") T.Columns.Add("NR_BEZ") Dim SortString As String = "" If Dentotar = True Then Dim dv1 As New DataView(IntTables.Inttables.Tables("Dentotar"), "", "leistungnrneu", DataViewRowState.CurrentRows) dv1.RowFilter = "nr_bez like '%" + Me.txtfilter.Text + "%'" For Each rowView As DataRowView In dv1 Dim row As DataRow = rowView.Row Dim nr As DataRow = T.NewRow nr.Item(0) = row.Item("leistungnrneu") nr.Item(1) = row.Item("nr_bez") T.Rows.Add(nr) Next If intSort = 0 Then SortString = "Nr_Bez asc" Else SortString = "Nr_Bez desc" End If Dim dv2 As New DataView(IntTables.Inttables.Tables("Tarif"), "", SortString, DataViewRowState.CurrentRows) dv2.RowFilter = "NR_BEZ like '%" + Me.txtfilter.Text + "%'" For Each rowView As DataRowView In dv2 Dim row As DataRow = rowView.Row If row.Item("sso_nummer").ToString > "4999" Then Dim nr As DataRow = T.NewRow nr.Item(0) = row.Item("nrtarif") nr.Item(1) = row.Item("nr_bez") T.Rows.Add(nr) End If Next Else Dim dv2 As New DataView(IntTables.Inttables.Tables("Tarif"), "", SortString, DataViewRowState.CurrentRows) dv2.RowFilter = "NR_BEZ like '%" + Me.txtfilter.Text + "%'" For Each rowView As DataRowView In dv2 Dim row As DataRow = rowView.Row Dim nr As DataRow = T.NewRow nr.Item(0) = row.Item("nrtarif") nr.Item(1) = row.Item("nr_bez") T.Rows.Add(nr) Next End If Me.lbtarif1.DataSource = Nothing Me.lbtarif1.DataSource = T Me.lbtarif1.DisplayMember = "nr_bez" Me.lbtarif1.ValueMember = "nr" Exit Sub If Dentotar = True And Len(Me.TreeTarifGruppen.SelectedNode.DataKeyString) < 3 Then If e.KeyCode <> Keys.Enter Then Me.lbtarif1.DataSource = Nothing 'Dim sortstring As String Dim wherestring As String Dim db As New DataView(IntTables.Inttables.Tables("Dentotar"), "", "leistungnrneu", DataViewRowState.CurrentRows) db.RowFilter = "nr_bez like '%" + Me.txtfilter.Text + "%'" Me.lbtarif1.DataSource = db Me.lbtarif1.DisplayMember = "nr_bez" Me.lbtarif1.ValueMember = "LeistungNrNeu" Me.lbtarif1.DataSource = Nothing If intSort = 0 Then SortString = "Nr_Bez asc" Else SortString = "Nr_Bez desc" End If Exit Sub 'Dim dv As New DataView(IntTables.Inttables.Tables("Tarif"), "nrtarifgruppe=" + Me.lbtarife.SelectedValue.ToString, SortString, DataViewRowState.CurrentRows) 'Dim dv As New DataView(IntTables.Inttables.Tables("Tarif"), "SSO_Nummer >=" + Me.TreeTarifGruppen.SelectedNode.DataKeyString + " and SSO_Nummer <=" + Me.TreeTarifGruppen.SelectedNode.TagString, SortString, DataViewRowState.CurrentRows) Dim dv As New DataView(IntTables.Inttables.Tables("Tarif"), "", SortString, DataViewRowState.CurrentRows) dv.RowFilter = "NR_BEZ like '%" + Me.txtfilter.Text + "%'" Me.lbtarif1.DataSource = dv Me.lbtarif1.DisplayMember = "nr_Bez" Me.lbtarif1.ValueMember = "nrtarif" End If Exit Sub End If If e.KeyCode <> Keys.Enter Then Me.lbtarif1.DataSource = Nothing ' Dim SortString As String = "" If intSort = 0 Then SortString = "Nr_Bez asc" Else SortString = "Nr_Bez desc" End If 'Dim dv As New DataView(IntTables.Inttables.Tables("Tarif"), "nrtarifgruppe=" + Me.lbtarife.SelectedValue.ToString, SortString, DataViewRowState.CurrentRows) 'Dim dv As New DataView(IntTables.Inttables.Tables("Tarif"), "SSO_Nummer >=" + Me.TreeTarifGruppen.SelectedNode.DataKeyString + " and SSO_Nummer <=" + Me.TreeTarifGruppen.SelectedNode.TagString, SortString, DataViewRowState.CurrentRows) Dim dv As New DataView(IntTables.Inttables.Tables("Tarif"), "", SortString, DataViewRowState.CurrentRows) dv.RowFilter = "NR_BEZ like '%" + Me.txtfilter.Text + "%'" Me.lbtarif1.DataSource = dv Me.lbtarif1.DisplayMember = "nr_Bez" Me.lbtarif1.ValueMember = "nrtarif" Else Try If Me.lbtarif1.SelectedItems.Count = 1 Then Me.lbtarif1_ItemClick(sender, e) Me.lbtarif1_ItemDoubleClick(sender, e) Me.txtfilter.SelectAll() End If Catch ex As Exception Me.txtfilter.SelectAll() End Try End If End Sub Private Function Get_Tarifposition(ByVal value As String) As String Dim wherestring As String = "" Dim sortstring As String = "" Try wherestring = "Leistungnrneu='" + value + "'" Dim db As New DataView(IntTables.Inttables.Tables("Dentotar"), wherestring, sortstring, DataViewRowState.CurrentRows) If db.Count > 0 Then For Each drv As DataRowView In db Return drv.Item("Leistungnrneu").ToString Next Exit Function End If Catch End Try Try Dim db223 As New DataView(IntTables.Inttables.Tables("Dentotar_223"), wherestring, sortstring, DataViewRowState.CurrentRows) If db223.Count > 0 Then For Each drv As DataRowView In db223 Return drv.Item("Leistungnrneu").ToString Next Exit Function End If Catch End Try Dim dv As New DataView(IntTables.Inttables.Tables("Tarif"), "nrtarif=" + value, "", DataViewRowState.CurrentRows) For Each drv As DataRowView In dv Return drv.Item("sso_nummer").ToString Next End Function Private Sub lbtarif1_ItemClick(sender As Object, e As EventArgs) Handles lbtarif1.ItemClick Me.txtPosition.Text = Get_Tarifposition(Me.lbtarif1.SelectedValue.ToString) txtPosition_TextChanged(sender, e) Exit Sub If Dentotar = True And Len(Me.TreeTarifGruppen.SelectedNode.DataKeyString) < 3 Then Dim sortstring As String = "" Dim wherestring As String = "Leistungnrneu='" + Me.lbtarif1.SelectedValue.ToString + "'" Dim db As New DataView(IntTables.Inttables.Tables("Dentotar"), wherestring, sortstring, DataViewRowState.CurrentRows) 'Me.txtPosition.Text = db.Item("Leistungnrneu").ToString Me.txtPosition.Text = Me.lbtarif1.SelectedValue.ToString txtPosition_TextChanged(sender, e) Exit Sub End If Dim dv As New DataView(IntTables.Inttables.Tables("Tarif"), "nrtarif=" + Me.lbtarif1.SelectedValue.ToString, "", DataViewRowState.CurrentRows) For Each drv As DataRowView In dv Me.txtPosition.Text = drv.Item("sso_nummer").ToString txtPosition_TextChanged(sender, e) Exit Sub Next End Sub Private Sub lbtarif1_ItemDoubleClick(sender As Object, e As EventArgs) Handles lbtarif1.ItemDoubleClick If Dentotar = True Then If Me.txtPosition.Text.Substring(0, 1) = 4 Then Dim dv1 As New DataView(IntTables.Inttables.Tables("Dentotar"), "Leistungnrneu='" + Me.lbtarif1.SelectedValue.ToString + "'", "", DataViewRowState.CurrentRows) For Each drv As DataRowView In dv1 Me.txtPosition.Text = drv.Item("Leistungnrneu").ToString txtPosition_TextChanged(sender, e) Me.BtnInsertLeistung_Click(sender, e) Exit Sub Next Exit Sub Else Dim dv1 As New DataView(IntTables.Inttables.Tables("Dentotar_223"), "Leistungnrneu='" + Me.lbtarif1.SelectedValue.ToString + "'", "", DataViewRowState.CurrentRows) For Each drv As DataRowView In dv1 Me.txtPosition.Text = drv.Item("Leistungnrneu").ToString txtPosition_TextChanged(sender, e) Me.BtnInsertLeistung_Click(sender, e) Exit Sub Next Exit Sub End If End If Dim found As Integer Try For Each t As DataTable In IntTables.Inttables.Tables If t.TableName = "Tarif" Then found = True End If If Not found Then Dim xdb As New clsDB db.Get_Tarif() xdb.Dispose() End If Next Catch ex As Exception End Try Dim dv As New DataView(IntTables.Inttables.Tables("Tarif"), "nrtarif=" + Me.lbtarif1.SelectedValue.ToString, "", DataViewRowState.CurrentRows) For Each drv As DataRowView In dv Me.txtPosition.Text = drv.Item("sso_nummer").ToString txtPosition_TextChanged(sender, e) Me.BtnInsertLeistung_Click(sender, e) Exit Sub Next End Sub Sub update_lagerbesatnd() If Globals.User_Lagerbestand Then Me.lblLagerbewtand.Visible = True Me.lblLageranzahl.Visible = True Dim db As New clsDB Try db.Get_Tabledata("Lager", "", "Select isnull(lagerbestand,0) as lagerbestand from tarif where sso_nummer='" + Me.txtPosition.Text.ToString + "'") Me.lblLageranzahl.Text = db.dsDaten.Tables(0).Rows(0).Item(0) Catch Finally db.Dispose() End Try Else Me.lblLagerbewtand.Visible = False Me.lblLageranzahl.Visible = False End If End Sub Dim interror As Integer = 0 Private Sub txtPosition_TextChanged(sender As Object, e As EventArgs) Handles txtPosition.Leave If Me.dtdatum.Value = "00:00:00" Then Me.dtdatum.Value = Now Try If cbboxnrbehandler.SelectedValue < 1 Then Me.cbboxnrbehandler.SelectedValue = Me.behandler Catch ex As Exception Me.cbboxnrbehandler.SelectedValue = Me.behandler End Try 'Me.cbboxnrbehandler.SelectedValue = Me.behandler If Me.Dentotar = True And Me.txtPosition.Text.Substring(0, 1) = "4" Then Dim s As String = Me.txtPosition.Text If s.IndexOf(".") = -1 Then s = s.Substring(0, 1) + "." + s.Substring(1, Len(s) - 1) If Len(s) < 6 Then While Len(s) < 6 s = s + "0" End While End If Me.txtPosition.Text = s End If Dim sortstring As String = "" Dim wherestring As String = "LeistungnrNeu='" + Me.txtPosition.Text + "'" Dim dv1 As New DataView(IntTables.Inttables.Tables("Dentotar"), wherestring, sortstring, DataViewRowState.CurrentRows) If dv1.Count > 0 Then Dim dr As DataRowView Try dr = dv1(0) If dr.Item("Abrechnungseinheit") = "TP" Then Select Case Me.TaxPunkte Case Taxpunkttyp.Maximal Me.DIPunkte.Value = dr.Item("pp_max") Case Taxpunkttyp.Minmal Me.DIPunkte.Value = dr.Item("pp_min") Case Taxpunkttyp.Privat Me.DIPunkte.Value = dr.Item("pp_privat") Case Taxpunkttyp.Suva Me.DIPunkte.Value = dr.Item("Taxpunkte_UV_MV_IV") Case Taxpunkttyp.Dentotar Me.DIPunkte.Value = dr.Item("Taxpunkte_UV_MV_IV") Case Else End Select Me.diwert.Text = Me.Frankenwert Me.DIPunkte.Enabled = True Else Me.diwert.Text = dr.Item("betraginchf") Me.DIPunkte.Enabled = False End If Me.DIMenge.Text = 1 Me.txtBezD.Text = dr.Item("LeistungD") Exit Sub Catch interror = 1 MsgBox("Eingegebene Position ist nicht vorhanden.", vbExclamation) Me.txtPosition.Focus() Me.txtPosition.SelectAll() Exit Sub End Try Exit Sub End If update_lagerbesatnd() Dim dv As New DataView(IntTables.Inttables.Tables("Tarif"), "sso_nummer='" + Me.txtPosition.Text.ToString + "'", "", DataViewRowState.CurrentRows) If dv.Count > 0 Then For Each drv As DataRowView In dv If drv.Item("Frankenbetrag") < 0.1 Then Select Case Me.TaxPunkte Case Taxpunkttyp.Maximal Me.DIPunkte.Value = drv.Item("maximaltarif") Case Taxpunkttyp.Minmal Me.DIPunkte.Value = drv.Item("minimaltarif") Case Taxpunkttyp.Privat Me.DIPunkte.Value = drv.Item("privattarif") Case Taxpunkttyp.Suva Me.DIPunkte.Value = drv.Item("suvatarif") Case Taxpunkttyp.Dentotar Me.DIPunkte.Value = drv.Item("Taxpunkte_UV_MV_IV") Case Else End Select Me.DIMenge.Text = 1 Me.diwert.Text = Me.Frankenwert Me.DIPunkte.Enabled = True Me.txtBezD.Text = drv.Item("BezD") Else Me.DIPunkte.Value = 0 Me.DIPunkte.Enabled = False Me.DIMenge.Value = 1 Dim b As Double b = drv.Item("Frankenbetrag") Me.diwert.Value = b If Globals.DruckBranche = True Then If drv.Item("variabel") = True And Me.Kalkulationsmenge > 0 Then Me.diwert.Value = Globals.Round5(Me.diwert.Value / 1000 * Me.Kalkulationsmenge) End If Me.txtBezD.Text = drv.Item("BezD") End If Try If drv.Item("Frankenbetrag") = 0 And drv.Item("maximaltarif") = 0 And +drv.Item("minimaltarif") = 0 And drv.Item("privattarif") = 0 And drv.Item("suvatarif") = 0 Then diwert.Text = 0 End If Catch End Try Exit Sub Next End If sortstring = "" wherestring = "LeistungnrNeu='" + Me.txtPosition.Text + "'" Dim dvx As New DataView(IntTables.Inttables.Tables("Dentotar_223"), wherestring, sortstring, DataViewRowState.CurrentRows) If dvx.Count > 0 Then Dim dr As DataRowView Try dr = dvx(0) If dr.Item("Abrechnungseinheit") = "TP" Then Select Case Me.TaxPunkte Case Taxpunkttyp.Maximal Me.DIPunkte.Value = dr.Item("TP_Vertrag_mit_MwSt") Case Taxpunkttyp.Minmal Me.DIPunkte.Value = dr.Item("TP_Vertrag_mit_MwSt") Case Taxpunkttyp.Privat Me.DIPunkte.Value = dr.Item("TP_Vertrag_mit_MwSt") Case Taxpunkttyp.Suva Me.DIPunkte.Value = dr.Item("TP_Vertrag_mit_MwSt") Case Taxpunkttyp.Dentotar Me.DIPunkte.Value = dr.Item("TP_Vertrag_mit_MwSt") Case Else End Select End If Me.DIMenge.Text = 1 Me.diwert.Text = Me.Frankenwert Me.DIPunkte.Enabled = True Me.txtBezD.Text = dr.Item("LeistungD") Exit Sub Catch interror = 1 MsgBox("Eingegebene Position ist nicht vorhanden.", vbExclamation) Me.txtPosition.Focus() Me.txtPosition.SelectAll() Exit Sub End Try Exit Sub End If End Sub Private Sub DIPunkte_ValueChanged(sender As Object, e As EventArgs) Handles DIPunkte.ValueChanged, DIMenge.ValueChanged, diwert.ValueChanged Try Dim total As Double If DIPunkte.Value > 0 Then total = DIPunkte.Value * DIMenge.Value * diwert.Value Me.txtTotal.Text = total.ToString("N2") Else total = DIMenge.Value * diwert.Value Me.txtTotal.Text = total.ToString("N2") End If Catch End Try End Sub Private Sub BtnInsertLeistung_Click(sender As Object, e As EventArgs) Handles BtnInsertLeistung.Click Leistung_Einfuegen() update_lagerbesatnd() End Sub Private Sub diwert_KeyDown(sender As Object, e As KeyEventArgs) Handles txtPosition.KeyDown, txtBezD.KeyDown, diwert.KeyDown, DIPunkte.KeyDown, DIMenge.KeyDown If Globals.Applicationtype = ApplicationTypes.Projektabrechnung Then Exit Sub If e.KeyCode = Keys.Enter Then If sender.name = "txtPosition" Then Me.txtPosition_TextChanged(sender, e) Leistung_Einfuegen() update_lagerbesatnd() Me.txtPosition.Focus() Me.txtPosition.SelectAll() End If End Sub Sub Leistung_Einfuegen_Dentotar(ByVal SSONummer As String, ByVal anzahl As Integer, Optional DentotarNr As String = "") Dim LeistungOverwrite As Boolean = False Dim dv As DataView Dim isdentotar As Boolean = False Dim iszahntechik As Boolean = False Dim nrtarifgruppe As Integer Dim sortstring As String = "" Dim wherestring As String = "LeistungNrNeu='" + Me.txtPosition.Text.ToString + "'" If DentotarNr <> "" Then wherestring = "LeistungNrNeu='" + DentotarNr + "'" End If If SSONummer = "" Then dv = New DataView(IntTables.Inttables.Tables("Dentotar"), wherestring, sortstring, DataViewRowState.CurrentRows) If dv.Count < 1 Then dv = New DataView(IntTables.Inttables.Tables("Dentotar_223"), wherestring, sortstring, DataViewRowState.CurrentRows) iszahntechik = True Else isdentotar = True End If Else wherestring = SSONummer dv = New DataView(IntTables.Inttables.Tables("Dentotar"), wherestring, sortstring, DataViewRowState.CurrentRows) If dv.Count < 1 Then dv = New DataView(IntTables.Inttables.Tables("Dentotar_223"), wherestring, sortstring, DataViewRowState.CurrentRows) iszahntechik = True Else isdentotar = True End If End If Dim drv As DataRowView Try drv = dv(0) Catch Dim f As New frmPosition f.TextBox1.Text = Me.txtPosition.Text.ToString f.TextBox2.Text = Me.txtBezD.Text.ToString f.TextBox3.Text = Me.txtErgänzung.Text.ToString f.ShowDialog() If f.DialogResult <> DialogResult.OK Then Exit Sub If f.DialogResult = DialogResult.OK Then Me.txtPosition.Text = f.TextBox1.Text Me.txtBezD.Text = f.TextBox2.Text Me.txtErgänzung.Text = f.TextBox3.Text LeistungOverwrite = True isdentotar = True Else MsgBox("Leistungsposition nicht vorhanden.") Exit Sub End If End Try Dim db As New clsDB Dim newkey As Integer = db.Get_DBKey("Leistung") db.Get_Tabledata("Leistung", " where nrleistung=0") Dim r As DataRow r = db.dsDaten.Tables(0).NewRow r.Item(0) = newkey r.Item("Erstellt_am") = Now r.Item("mutiert_am") = Now r.Item("mutierer") = Globals.ActUser r.Item("aktiv") = True r.Item("Datum") = Me.dtdatum.Value r.Item("nrbehandlung") = Me.Behandlungnr r.Item("mandant") = 1 r.Item("nrtarifgruppe") = 0 If isdentotar Then r.Item("nrtarif") = 5 Else If iszahntechik Then r.Item("nrtarif") = 7 End If If LeistungOverwrite Then r.Item("sso_nummer") = Me.txtPosition.Text.ToString Else r.Item("sso_nummer") = drv("LeistungNrNeu") End If If SSONummer = "" Then r.Item("bezd") = Me.txtBezD.Text + " " + Me.txtErgänzung.Text Else r.Item("bezd") = drv("Leistungd") + " " + Me.txtErgänzung.Text End If Dim betraginchf As Decimal Try If drv.Item("BetraginCHF") < 0.1 Then betraginchf = 0 Else betraginchf = drv.Item("BetraginCHF") End If Catch betraginchf = 0 End Try If SSONummer = "" And DentotarNr = "" Then r.Item("taxpunkte") = Me.DIPunkte.Value Else Try If betraginchf = 0 Then If isdentotar Then Select Case Me.TaxPunkte Case Taxpunkttyp.Maximal r.Item("taxpunkte") = drv.Item("pp_amx") Case Taxpunkttyp.Minmal r.Item("taxpunkte") = drv.Item("pp_min") Case Taxpunkttyp.Privat r.Item("taxpunkte") = drv.Item("pp_privat") Case Taxpunkttyp.Suva r.Item("taxpunkte") = drv.Item("Taxpunkte_UV_MV_IV") Case Taxpunkttyp.Dentotar Me.DIPunkte.Value = drv.Item("Taxpunkte_UV_MV_IV") Case Else End Select Else Select Case Me.TaxPunkte Case Taxpunkttyp.Maximal r.Item("taxpunkte") = drv.Item("TP_Vertrag_mit_MwSt") Case Taxpunkttyp.Minmal r.Item("taxpunkte") = drv.Item("TP_Vertrag_mit_MwSt") Case Taxpunkttyp.Privat r.Item("taxpunkte") = drv.Item("TP_Vertrag_mit_MwSt") Case Taxpunkttyp.Suva r.Item("taxpunkte") = drv.Item("TP_Vertrag_mit_MwSt") Case Taxpunkttyp.Dentotar Me.DIPunkte.Value = drv.Item("TP_Vertrag_mit_MwSt") Case Else End Select End If End If Catch End Try End If If SSONummer = "" And DentotarNr = "" Then r.Item("menge") = Me.DIMenge.Value Else r.Item("menge") = anzahl End If If SSONummer = "" And DentotarNr = "" Then r.Item("frankenprotaxpunkt") = Me.diwert.Value Else r.Item("frankenprotaxpunkt") = Frankenwert End If If SSONummer = "" And DentotarNr = "" Then r.Item("total") = Me.txtTotal.Text Else Dim total As Double If betraginchf = 0 Then total = r.Item("taxpunkte") * anzahl * 1 r.Item("total") = total.ToString("N2") Else total = anzahl * 1 r.Item("total") = total.ToString("N2") End If End If If DIPunkte.Enabled = False Then r.Item("absolut") = 1 Else r.Item("absolut") = 0 r.Item("nrbehandler") = Me.cbboxnrbehandler.SelectedValue db.dsDaten.Tables(0).Rows.Add(r) db.Update_Data() db.Dispose() refresh_leistungen() End Sub Sub Leistung_Einfuegen(Optional ssonummer As String = "", Optional anzahl As Integer = 1, Optional VonPaket As Boolean = False) ' If ssonummer = "" Then Exit Sub 'If ssonummer = "7006" Then ' MsgBox("Hallo") 'End If If interror > 0 Then interror = 0 Exit Sub End If If Dentotar = True Then If Me.txtPosition.Text.Substring(0, 1) = "4" Or Me.txtPosition.Text.Substring(0, 1) = "0" Or Me.txtPosition.Text.Substring(0, 1) = "1" Or Me.txtPosition.Text.Substring(0, 1) = "2" Or Me.txtPosition.Text.Substring(0, 1) = "3" Then Leistung_Einfuegen_Dentotar(ssonummer, anzahl) Exit Sub End If End If Dim dv As DataView If ssonummer = "" Then 'IntTables.Inttables.Tables("tarif").WriteXml("o:\tarif.xml") dv = New DataView(IntTables.Inttables.Tables("Tarif"), "sso_nummer='" + Me.txtPosition.Text.ToString + "'", "", DataViewRowState.CurrentRows) Else dv = New DataView(IntTables.Inttables.Tables("Tarif"), "sso_nummer='" + ssonummer.ToString + "'", "", DataViewRowState.CurrentRows) End If Dim drv As DataRowView = dv(0) Dim db As New clsDB Dim newkey As Integer = db.Get_DBKey("Leistung") db.Get_Tabledata("Leistung", " where nrleistung=0") Dim r As DataRow r = db.dsDaten.Tables(0).NewRow Dim leistungkey As Integer = newkey r.Item(0) = newkey r.Item("Erstellt_am") = Now r.Item("mutiert_am") = Now r.Item("mutierer") = Globals.ActUser r.Item("aktiv") = True r.Item("Datum") = Me.dtdatum.Value r.Item("nrbehandlung") = Me.Behandlungnr r.Item("mandant") = 1 r.Item("nrtarifgruppe") = drv("NrTarifgruppe") r.Item("nrtarif") = drv("Nrtarif") r.Item("sso_nummer") = drv("SSO_Nummer") If ssonummer = "" Then r.Item("bezd") = Me.txtBezD.Text + " " + Me.txtErgänzung.Text Else r.Item("bezd") = drv("bezd") + " " + Me.txtErgänzung.Text End If Try If My.Settings.SoftwareType = "PADM" Then r.Item("bezf") = drv("bezf") Catch ex As Exception End Try If ssonummer = "" Then r.Item("taxpunkte") = Me.DIPunkte.Value Else If drv.Item("Frankenbetrag") < 0.1 Then Select Case Me.TaxPunkte Case Taxpunkttyp.Maximal r.Item("taxpunkte") = drv.Item("maximaltarif") Case Taxpunkttyp.Minmal r.Item("taxpunkte") = drv.Item("minimaltarif") Case Taxpunkttyp.Privat r.Item("taxpunkte") = drv.Item("privattarif") Case Taxpunkttyp.Suva r.Item("taxpunkte") = drv.Item("suvatarif") Case Taxpunkttyp.Dentotar Me.DIPunkte.Value = drv.Item("Taxpunkte_UV_MV_IV") Case Else End Select End If End If If ssonummer = "" Then r.Item("menge") = Me.DIMenge.Value Else r.Item("menge") = anzahl End If Dim leistungsbetrag As Double If VonPaket = True Then r.Item("frankenprotaxpunkt") = drv.Item("frankenbetrag") Else If ssonummer = "" Then r.Item("frankenprotaxpunkt") = Me.diwert.Value leistungsbetrag = Me.diwert.Value Else r.Item("frankenprotaxpunkt") = Frankenwert leistungsbetrag = Frankenwert End If End If If ssonummer = "" Then r.Item("total") = Me.txtTotal.Text Else Dim total As Double If drv.Item("frankenbetrag") < 0.1 Then total = r.Item("taxpunkte") * anzahl * leistungsbetrag r.Item("total") = total.ToString("N2") Else total = anzahl * drv.Item("frankenbetrag") r.Item("total") = total.ToString("N2") End If End If If DIPunkte.Enabled = False Then r.Item("absolut") = 1 Else r.Item("absolut") = 0 r.Item("nrbehandler") = Me.cbboxnrbehandler.SelectedValue db.dsDaten.Tables(0).Rows.Add(r) db.Update_Data() If db.Get_Option(70010) = "True" Then Try db.Update_Lager(Me.Behandlungnr, drv("Nrtarif"), anzahl, 1) Catch End Try End If db.Dispose() Dim db1 As New clsDB Dim r11 As DataRow newkey = db1.Get_DBKey("Produkt_Kalkulation") db1.dsDaten.Tables.Clear() db1.Get_Tabledata("Produkt_Kalkulation", " where ID=0") r11 = db1.dsDaten.Tables(0).NewRow r11.Item(0) = newkey r11.Item("Erstellt_am") = Now r11.Item("mutiert_am") = Now r11.Item("mutierer") = Globals.ActUser r11.Item("aktiv") = True r11.Item("produktid") = Me.C1Produkte.Columns("ID").Value r11.Item("nrleistung") = leistungkey db1.dsDaten.Tables(0).Rows.Add(r11) db1.Update_Data() refresh_leistungen() End Sub Dim ldb As New clsDB Dim pdb As New clsDB Dim pzdb As New clsDB Dim spalten As New Tabellenspalte Sub update_Produkte() Me.C1Produkte.UpdateData() pdb.Update_Data() End Sub Sub refresh_produkte() Me.C1Produkte.Enabled = False Me.C1Produkte.DataSource = Nothing pdb.dsDaten.Tables.Clear() pdb.Get_Tabledata("Produkt_Behandlung", "", "Select * from produkt_behandlung where behandlungnr=" + Me.Behandlungnr.ToString) Dim aktiv As Boolean = False For Each r As DataRow In pdb.dsDaten.Tables(0).Rows If r("aktiv") = True Then aktiv = True Next Me.C1Produkte.DataSource = pdb.dsDaten.Tables(0) Me.C1Produkte.DataMember = pdb.dsDaten.Tables(0).TableName spalten.Spaltentitel_aktualisieren(Me.C1Produkte, pdb.dsDaten.Tables(0).TableName, pdb.dsDaten.Tables(0)) If aktiv = False Then Me.GrpTarif.Enabled = False Me.GrpLeistungen.Enabled = False Me.GroupBox2.Enabled = False Me.TabTarife.Enabled = False Me.grpLeistungsdetails.Enabled = False Else Me.GrpTarif.Enabled = True Me.GrpLeistungen.Enabled = True Me.GroupBox2.Enabled = True Me.TabTarife.Enabled = True Me.grpLeistungsdetails.Enabled = True End If Me.C1Produkte.Enabled = True enable_disable_fields() End Sub Sub Refresh_Produktzusatz() Me.C1Produktzusatz.Enabled = False Me.C1Produktzusatz.DataSource = Nothing pzdb.dsDaten.Tables.Clear() pzdb.Get_Tabledata("View_Produktzusatz", "", "Select * from view_produktzusatz where aktiv=1 and produktid=" + C1Produkte.Columns(0).Value.ToString) Me.C1Produktzusatz.DataSource = pzdb.dsDaten.Tables(0) Me.C1Produktzusatz.DataMember = pzdb.dsDaten.Tables(0).TableName spalten.Spaltentitel_aktualisieren(Me.C1Produktzusatz, pzdb.dsDaten.Tables(0).TableName, pzdb.dsDaten.Tables(0)) Me.C1Produktzusatz.Enabled = True End Sub Sub refresh_leistungen() Me.C1Leistungen.DataSource = Nothing ldb.dsDaten.Tables.Clear() ldb.Get_Tabledata("Leistung") If Me.C1Produkte.Splits(0).Rows.Count < 1 Then ldb.Get_Tabledata("Leistung", "", "Select * from leistung where aktiv=1 and nrleistung in (select nrleistung from produkt_kalkulation where aktiv=1 and ProduktID=-1) order by datum desc, nrtarif asc, sso_nummer asc") Else ldb.Get_Tabledata("Leistung", "", "Select * from leistung where aktiv=1 and nrleistung in (select nrleistung from produkt_kalkulation where aktiv=1 and ProduktID=" + Me.C1Produkte.Columns(0).Value.ToString + ") order by datum desc, nrtarif asc, sso_nummer asc") End If Me.C1Leistungen.DataSource = ldb.dsDaten.Tables(0) Me.C1Leistungen.DataMember = ldb.dsDaten.Tables(0).TableName spalten.Spaltentitel_aktualisieren(Me.C1Leistungen, ldb.dsDaten.Tables(0).TableName, ldb.dsDaten.Tables(0)) evh.Fire_Leistung_Changed(Me.Behandlungnr, calc_Leistungstotal) End Sub Private Sub BearbeitenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BearbeitenToolStripMenuItem.Click Me.C1Leistungen_DoubleClick(sender, e) End Sub Private Sub LöschenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LöschenToolStripMenuItem.Click Try If MsgBox("Leistung wirklich löschen?", vbYesNo + vbQuestion) = MsgBoxResult.Yes Then If Me.C1Leistungen.SelectedRows.Count < 2 Then ldb.delete_leistung(Me.C1Leistungen.Columns("nrleistung").Value) refresh_leistungen() update_lagerbesatnd() Exit Sub End If If Me.C1Leistungen.SelectedRows.Count > 1 Then Dim colRows As C1.Win.C1TrueDBGrid.SelectedRowCollection Dim cl As New Collection colRows = Me.C1Leistungen.SelectedRows For ic = 0 To colRows.Count - 1 cl.Add(Me.C1Leistungen.Columns(0).CellValue(colRows(ic))) Next ic For i = 1 To cl.Count ldb.delete_leistung(cl(i)) Next refresh_leistungen() update_lagerbesatnd() End If End If Catch ex As Exception End Try End Sub Private Sub TreeTarifGruppen_NodeClick(sender As Object, e As DevComponents.AdvTree.TreeNodeMouseEventArgs) Handles TreeTarifGruppen.NodeClick Load_Tarif() update_lagerbesatnd() End Sub Private Sub btnPaketeinfuegen_Click(sender As Object, e As EventArgs) Handles btnPaketeinfuegen.Click If Me.dtdatum.Value = "00:00:00" Then Me.dtdatum.Value = Now Try If cbboxnrbehandler.SelectedValue < 1 Then Me.cbboxnrbehandler.SelectedValue = Me.behandler Catch ex As Exception Me.cbboxnrbehandler.SelectedValue = Me.behandler End Try Me.cbboxnrbehandler.SelectedValue = Me.behandler If Me.Dentotar = True Then Dim dv As New DataView(IntTables.Inttables.Tables("paketpos"), "aktiv=1 and nrpaket=" + Me.lbPakete.SelectedValue.ToString, "", DataViewRowState.CurrentRows) Dim dvt As DataView For Each drv As DataRowView In dv If drv.Item("Dentotar") = True Then Dim s As String = drv.Item("nrtarif") s = s.Substring(0, 1) + "." + s.Substring(1, 4) ' dvt = New DataView(IntTables.Inttables.Tables("Dentotar"), "Leistungnrneu=" + drv.Item("nrtarif").ToString, "", DataViewRowState.CurrentRows) Leistung_Einfuegen_Dentotar("", Me.intAnzahl.Value, s) Else dvt = New DataView(IntTables.Inttables.Tables("Tarif"), "aktiv=1 and nrtarif=" + drv.Item("nrtarif").ToString, "", DataViewRowState.CurrentRows) For Each dvtr As DataRowView In dvt Dim s As String = dvtr("SSO_Nummer").ToString s = s.Substring(0, 1) + "." + s.Substring(1, 3) + "0" If s.Substring(0, 1) = "4" Then Leistung_Einfuegen_Dentotar("", Me.intAnzahl.Value, s) Else Leistung_Einfuegen(dvtr("SSO_Nummer").ToString, Me.intAnzahl.Value) End If Next End If Next Else Dim dv As New DataView(IntTables.Inttables.Tables("paketpos"), "aktiv=1 and nrpaket=" + Me.lbPakete.SelectedValue.ToString, "", DataViewRowState.CurrentRows) For Each drv As DataRowView In dv Dim dvt As DataView If drv.Item("Dentotar") = False Then dvt = New DataView(IntTables.Inttables.Tables("Tarif"), "nrtarif=" + drv.Item("nrtarif").ToString, "", DataViewRowState.CurrentRows) For Each dvtr As DataRowView In dvt Leistung_Einfuegen(dvtr("SSO_Nummer").ToString, Me.intAnzahl.Value, True) Next End If Next End If End Sub Public Function calc_Leistungstotal() As Double Dim kalkulation As Decimal = 0 Dim zusatzleistung As Decimal = 0 Dim total As Double For Each r As DataRow In ldb.dsDaten.Tables(0).Rows If r("aktiv") = True Then If r("sso_nummer") > 8999 Then zusatzleistung = zusatzleistung + r("Total") Else kalkulation = Globals.Round5(kalkulation + r("Total")) End If total = total + Globals.Round5(r("Total")) End If Next Me.C1Produkte.Columns("Kalkulation").Value = kalkulation If Me.C1Produkte.Columns("Zuschlag_Rabatt").Value <> 0 Then Dim w As Double = Globals.Round5((kalkulation / 100 * Me.C1Produkte.Columns("Zuschlag_Rabatt").Value) + kalkulation) Me.C1Produkte.Columns("Kalkulation").Value = w End If Me.C1Produkte.Columns("Zusatzpositionen").Value = zusatzleistung update_Produkte() Return total End Function Public Function Recalc_Leistungen(Optional pid As Integer = 0) Dim pd As New clsDB If pid = 0 Then pd.Get_Tabledata("Produte", "", "Select id from Produkt_Behandlung where behandlungnr=" + Me.Behandlungnr.ToString + " and aktiv=1") Else pd.Get_Tabledata("Produte", "", "Select id from Produkt_Behandlung where ID=" + pid.ToString + " and aktiv=1") End If For Each p As DataRow In pd.dsDaten.Tables(0).Rows ldb.Get_Tabledata("Leistung", "", "Select * from leistung where aktiv=1 and nrleistung in (select nrleistung from produkt_kalkulation where aktiv=1 and ProduktID=" + p("id").ToString + ") order by datum desc, nrtarif asc, sso_nummer asc") '' ldb.Get_Tabledata("Leistung", " where aktiv=1 And nrbehandlung=" + Me.Behandlungnr.ToString + " And aktiv=1") For Each r As DataRow In ldb.dsDaten.Tables(0).Rows If r("absolut") = 0 Then r("frankenprotaxpunkt") = Me.Frankenwert r("total") = Globals.Round5(r("Menge") * r("Taxpunkte") * r("frankenprotaxpunkt")) End If Next For Each r As DataRow In ldb.dsDaten.Tables(0).Rows Dim dv As New DataView(IntTables.Inttables.Tables("Tarif"), "sso_nummer='" + r("sso_nummer") + "'", "", DataViewRowState.CurrentRows) For Each rowView As DataRowView In dv Dim r2 As DataRow = rowView.Row If r2("Variabel") = True Then r("Total") = Globals.Round5(r("Menge") * r2("frankenbetrag") / 1000 * Me.Kalkulationsmenge) r("frankenprotaxpunkt") = Globals.Round5(r("Total")) End If Next Next Next ldb.Update_Data() refresh_leistungen() End Function Private Sub lbPakete_DoubleClick(sender As Object, e As EventArgs) Handles lbPakete.DoubleClick btnPaketeinfuegen_Click(sender, e) End Sub Private Sub evh_Total_Berechnet(behandlungsnummer As Integer, Total As Double) Handles evh.Total_Berechnet 'If Me.Behandlungnr = behandlungsnummer Then Me.tslabelbhtotal.Text = "Leistungstotal: " + Total.ToString("N2") End Sub Private Sub C1Leistungen_DoubleClick(sender As Object, e As EventArgs) Handles C1Leistungen.DoubleClick Try If My.Settings.SoftwareType = "PADM" Then Dim f1 As New frmLeistungDetailPADM f1.cbboxnrbehandler.Dataselection = db.Get_SQL(2) f1.cbboxnrbehandler.TableAlias = "Behandler_BH" f1.cbboxnrbehandler.Table = "Behandler" f1.cbboxnrbehandler.Displaymember = "Name" f1.cbboxnrbehandler.Valuemember = "nrprivat" f1.Leistungsnummer = C1Leistungen.Columns(0).Value.ToString If Me.grpLeistungsdetails.Enabled = False Then f1.IsReadonly = True Else f1.IsReadonly = False f1.ShowDialog() Me.refresh_leistungen() update_lagerbesatnd() Exit Sub End If Dim f As New frmLeistungDetail f.cbboxnrbehandler.Dataselection = db.Get_SQL(2) f.cbboxnrbehandler.TableAlias = "Behandler_BH" f.cbboxnrbehandler.Table = "Behandler" f.cbboxnrbehandler.Displaymember = "Name" f.cbboxnrbehandler.Valuemember = "nrprivat" f.Leistungsnummer = C1Leistungen.Columns(0).Value If Me.grpLeistungsdetails.Enabled = False Then f.IsReadonly = True Else f.IsReadonly = False f.ShowDialog() Me.refresh_leistungen() update_lagerbesatnd() Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub AnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AnzeigenToolStripMenuItem.Click Dim f As New frmLeistungDetail f.cbboxnrbehandler.Dataselection = db.Get_SQL(2) f.cbboxnrbehandler.TableAlias = "Behandler_BH" f.cbboxnrbehandler.Table = "Behandler" f.cbboxnrbehandler.Displaymember = "Name" f.cbboxnrbehandler.Valuemember = "nrprivat" f.Leistungsnummer = C1Leistungen.Columns(0).Value f.IsReadonly = True f.ShowDialog() End Sub Private Sub GrpTarif_Enter(sender As Object, e As EventArgs) Handles GrpTarif.Enter End Sub Private Sub ToolStrip1_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) End Sub Private Sub dtdatum_Click(sender As Object, e As EventArgs) Handles dtdatum.Click End Sub Private Sub dtdatum_KeyDown(sender As Object, e As KeyEventArgs) Handles dtdatum.KeyDown If e.KeyCode = Keys.Escape Then delete_date(sender) If e.KeyCode = Keys.Decimal Then SendKeys.SendWait("{TAB}") If e.KeyCode = 190 Then SendKeys.SendWait("{TAB}") End Sub Sub delete_date(sender) sender.value = Nothing End Sub Private Sub ContextMenuStrip1_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles ContextMenuStrip1.Opening If Dentotar = True Then Me.TarifdetailsToolStripMenuItem.Enabled = True Else Me.TarifdetailsToolStripMenuItem.Enabled = False End Sub Private Sub TarifdetailsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TarifdetailsToolStripMenuItem.Click Dim f As New frmDentotarDetails f.Show() f.Update_Data(Me.lbtarif1.SelectedValue.ToString) End Sub Private Sub txtfilter_Click(sender As Object, e As EventArgs) Handles txtfilter.Click End Sub Private Sub LeistungsdatumÄndernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LeistungsdatumÄndernToolStripMenuItem.Click Dim f As New frmKalender f.ShowDialog() If Me.C1Leistungen.SelectedRows.Count > 0 Then Dim colRows As C1.Win.C1TrueDBGrid.SelectedRowCollection colRows = Me.C1Leistungen.SelectedRows Dim db As New clsDB For i As Integer = 0 To colRows.Count - 1 Try db.Get_Tabledata("Leistung", "where nrleistung=" + Me.C1Leistungen.Columns("nrleistung").CellValue(colRows(i)).ToString) db.dsDaten.Tables(0).Rows(0).Item("Datum") = f.MaskedTextBox1.Text db.Update_Data() Catch ex As Exception MsgBox(ex.Message) End Try Next db.Dispose() refresh_leistungen() Else Dim db As New clsDB db.Get_Tabledata("Leistung", "where nrleistung=" + Me.C1Leistungen.Columns("nrleistung").Value.ToString) db.dsDaten.Tables(0).Rows(0).Item("Datum") = f.MaskedTextBox1.Text db.Update_Data() Me.C1Leistungen.Columns("datum").Value = f.MaskedTextBox1.Text db.Dispose() update_lagerbesatnd() End If End Sub Private Sub lbtarif1_DoubleClick(sender As Object, e As EventArgs) Handles lbtarif1.DoubleClick ' Leistung_Einfuegen() End Sub Private Sub C1Leistungen_AfterColUpdate(sender As Object, e As ColEventArgs) Handles C1Leistungen.AfterColUpdate 'ldb.dsDaten.AcceptChanges() Dim i As Integer Try i = Me.C1Leistungen.Bookmark Me.C1Leistungen.Bookmark = -1 Me.C1Leistungen.Bookmark = i Me.C1Leistungen.Columns("Total").Value = Globals.Round5(Me.C1Leistungen.Columns("Menge").Value * Me.C1Leistungen.Columns("Frankenprotaxpunkt").Value) Catch ex As Exception End Try Me.C1Leistungen.UpdateData() ldb.Update_Data() Me.refresh_leistungen() update_lagerbesatnd() 'ldb.Update_Tabeldata() End Sub Private Sub txtTotal_TextChanged(sender As Object, e As EventArgs) Handles txtTotal.TextChanged Try Me.txtTotal.Text = Globals.SwissCommercialRound(txtTotal.Text).ToString("N2") Catch End Try End Sub Private Sub C1Leistungen_MouseDown(sender As Object, e As MouseEventArgs) Handles C1Leistungen.MouseDown Try If e.Button = MouseButtons.Right Then Me.C1Leistungen.Bookmark = Me.C1Leistungen.RowContaining(e.Y) End If Catch ex As Exception End Try End Sub Private Sub C1Produkte_MouseDown(sender As Object, e As MouseEventArgs) Handles C1Produkte.MouseDown Try Me.C1Produkte.Bookmark = Me.C1Produkte.RowContaining(e.Y) Catch ex As Exception End Try End Sub Private Sub C1Produkte_RowColChange(sender As Object, e As RowColChangeEventArgs) Handles C1Produkte.RowColChange If Me.onload Then Exit Sub Try Try Me.Kalkulationsmenge = Me.C1Produkte.Columns("AnzKalkulation").Value Catch Me.Kalkulationsmenge = 0 End Try Try Catch ex As Exception End Try refresh_leistungen() Refresh_Produktzusatz() Catch End Try End Sub Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click Dim f As New frmprodukt f.produktnr = 0 f.Load_Data() f.ShowDialog() If f.DialogResult = DialogResult.OK Then Dim pbh As New clsDB Dim newkey As Integer pbh.Get_Tabledata("NewKey", "", "Select top 1 id from produkt_behandlung order by id desc") newkey = pbh.dsDaten.Tables(0).Rows(0).Item(0) + 1 pbh.Get_Tabledata("Produkt_Behandlung", " where id=0") Dim r As DataRow = pbh.dsDaten.Tables(0).NewRow r.Item("ID") = newkey r.Item("Behandlungnr") = Me.Behandlungnr r.Item("produktnr") = f.ComboBoxEx1.SelectedValue r.Item("Erstellt_am") = Now r.Item("mutiert_am") = Now r.Item("mutierer") = Globals.ActUser r.Item("aktiv") = True If f.TextBox2.Text = "" Then r.Item("Bezeichnung") = f.ComboBoxEx1.Text Else r.Item("Bezeichnung") = f.TextBox2.Text End If r.Item("Anzahl") = 0 r.Item("Kalkulation") = 0 r.Item("Zusatzpositionen") = 0 r.Item("verrechnen") = 1 r.Item("Zuschlag_Rabatt") = 0 pbh.dsDaten.Tables(0).Rows.Add(r) pbh.Update_Data() Dim pkey As Integer = newkey For i = 0 To f.C1Produkte.Splits(0).Rows.Count - 1 pbh.Get_Tabledata("NewKey", "", "Select top 1 id from Produkt_Zusatz order by id desc") newkey = pbh.dsDaten.Tables(0).Rows(0).Item(0) + 1 pbh.Get_Tabledata("Produkt_Zusatz", " where id=0") r = pbh.dsDaten.Tables(0).NewRow r.Item(0) = newkey r.Item(1) = pkey r.Item(2) = f.C1Produkte.Columns("Nr").CellValue(i).ToString r.Item(3) = f.C1Produkte.Columns("Beschreibung").CellValue(i).ToString r.Item("Erstellt_am") = Now r.Item("mutiert_am") = Now r.Item("mutierer") = Globals.ActUser r.Item("aktiv") = True pbh.dsDaten.Tables(0).Rows.Add(r) pbh.Update_Data() Next refresh_produkte() Refresh_Produktzusatz() End If End Sub Private Sub C1Produktzusatz_AfterUpdate(sender As Object, e As EventArgs) Handles C1Produktzusatz.AfterUpdate End Sub Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton2.Click C1Produktzusatz.UpdateData() Dim zdb As New clsDB For i = 0 To C1Produktzusatz.Splits(0).Rows.Count - 1 Dim id As Integer = C1Produktzusatz.Columns("id").CellValue(i) Dim bezeichnung As String = C1Produktzusatz.Columns("bezeichnung").CellValue(i) Dim detail As String = C1Produktzusatz.Columns("detail").CellValue(i) Dim aktiv As Integer = C1Produktzusatz.Columns("aktiv").CellValue(i) Dim sql As String = "Update produkt_zusatz set detail='" + detail + "', mutiert_am=getdate(), mutierer=" + Globals.ActUser.ToString + " where id=" + id.ToString zdb.Exec_SQL(sql) Next zdb.Dispose() Globals.ToastInfo.ShowSaveMesasge(Me.ParentForm) End Sub Private Sub ToolStripButton3_Click(sender As Object, e As EventArgs) Handles ToolStripButton3.Click C1Produkte.Update() pdb.Update_Data() Globals.ToastInfo.ShowSaveMesasge(Me.ParentForm) End Sub Private Sub ToolStripButton4_Click(sender As Object, e As EventArgs) Handles ToolStripButton4.Click C1Produkte.Columns("aktiv").Value = 0 ToolStripButton3_Click(sender, e) Dim i As Integer Try i = Me.C1Produkte.Bookmark Me.C1Produkte.Bookmark = -1 Me.C1Produkte.Bookmark = i Catch ex As Exception End Try End Sub Private Sub ToolStripButton5_Click(sender As Object, e As EventArgs) Handles ToolStripButton5.Click Dim scmCmdToExecute As SqlCommand = New SqlCommand() scmCmdToExecute.CommandText = "dbo.[sp_copy_druck]" Dim conn As New SqlConnection(My.Settings.ConnectionString) scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn Try scmCmdToExecute.Parameters.Add(New SqlParameter("@behandlungsnr", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 0, 0, "", DataRowVersion.Proposed, Me.Behandlungnr)) scmCmdToExecute.Parameters.Add(New SqlParameter("@typ", SqlDbType.Int, 4, ParameterDirection.Input, True, 0, 0, "", DataRowVersion.Proposed, Me.C1Produkte.Columns("id").Value)) scmCmdToExecute.Connection.Open() scmCmdToExecute.ExecuteNonQuery() refresh_produkte() Return Catch ex As Exception MsgBox(ex.Message) Finally scmCmdToExecute.Connection.Close() End Try End Sub Private Sub C1Produkte_AfterColEdit(sender As Object, e As ColEventArgs) Handles C1Produkte.AfterColEdit Try If C1Produkte.DataChanged Then 'C1Produkte.UpdateData() C1Produkte.Update() pdb.Update_Data() Exit Sub End If ' Dim bm As Integer = C1Produkte.Bookmark ' C1Produkte.Bookmark = 0 ' C1Produkte.Update() ' C1Produkte.Bookmark = bm ' pdb.Update_Data() Catch End Try End Sub Private Sub C1Produkte_AfterColUpdate(sender As Object, e As ColEventArgs) Handles C1Produkte.AfterColUpdate If e.Column.Name = "Anz.Kalkulation" Then Dim pid As Integer = 0 ToolStripButton3_Click(sender, e) Try Me.Kalkulationsmenge = Me.C1Produkte.Columns("AnzKalkulation").Value Catch Me.Kalkulationsmenge = 0 End Try Recalc_Leistungen(Me.C1Produkte.Columns("id").Value) End If End Sub Private Sub Panel3_Resize(sender As Object, e As EventArgs) Handles Panel3.Resize GrpProdukte.Height = Panel3.Height / 4 ' GrpTarif.Height = Panel3.Height / 4 GroupBox1.Width = Panel3.Width / 2 GroupBox2.Width = Panel3.Width / 2 End Sub Private Sub ToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem1.Click Try Dim f As New frmDetailbeschreibung f.TextBox1.Text = Me.C1Produktzusatz.Columns("detail").Value f.ShowDialog() If f.DialogResult = DialogResult.OK Then Me.C1Produktzusatz.Columns("detail").Value = f.TextBox1.Text End If f.Dispose() Dim i As Integer i = Me.C1Produktzusatz.Bookmark Me.C1Produktzusatz.Bookmark = -1 Me.C1Produktzusatz.Bookmark = i Catch ex As Exception End Try End Sub Private Sub GroupBox2_Resize(sender As Object, e As EventArgs) Handles GroupBox2.Resize Try Me.C1Produktzusatz.Splits(0).DisplayColumns("detail").Width = Me.C1Produktzusatz.Width - (20 + Me.C1Produktzusatz.Splits(0).DisplayColumns("bezeichnung").Width + Me.C1Produktzusatz.Splits(0).DisplayColumns("aktiv").Width) Catch End Try End Sub Private Sub C1Produktzusatz_FetchRowStyle(sender As Object, e As FetchRowStyleEventArgs) Handles C1Produktzusatz.FetchRowStyle GroupBox2_Resize(sender, e) 'For Each row As ViewRow In C1Produktzusatz.Splits(0).Rows ' row.AutoSize() ' row.Height = row.Height * 2 'Next End Sub Private Sub C1Produkte_Resize(sender As Object, e As EventArgs) Handles C1Produkte.Resize Try 'Dim w As Integer = 20 'For i As Integer = 0 To Me.C1Produkte.Splits(0).DisplayColumns.Count - 1 ' If Me.C1Produkte.Splits(0).DisplayColumns(i).Visible = True Then w = w + Me.C1Produkte.Splits(0).DisplayColumns(i).Width 'Next 'Me.C1Produkte.Splits(0).DisplayColumns("Bezeichnung").Width = Me.C1Produkte.Width - w Catch End Try End Sub Private Sub ToolStripButton6_Click(sender As Object, e As EventArgs) Handles ToolStripButton6.Click Dim f As New frmprodukt f.produktbehanldungid = C1Produkte.Columns(0).Value f.Load_Data() f.TextBox2.Text = Me.C1Produkte.Columns("Bezeichnung").Value.ToString f.ComboBoxEx1.SelectedValue = Me.C1Produkte.Columns("PRODUKTNR").Value f.ShowDialog() If f.DialogResult = DialogResult.OK Then For i = 0 To f.C1Produkte.Splits(0).Rows.Count - 1 db.Exec_SQL("Update produkt_zusatz set detail='" + f.C1Produkte.Columns(2).CellValue(i).ToString + "',mutiert_am = getdate(),mutierer=" + Globals.ActUser.ToString + " where id=" + f.C1Produkte.Columns(3).CellValue(i).ToString) Next If f.TextBox2.Text <> C1Produkte.Columns("Bezeichnung").Value.ToString Then db.Exec_SQL("Update Produkt_Behandlung set bezeichnung='" + f.TextBox2.Text + "' where id=" + Me.C1Produkte.Columns("ID").Value.ToString) End If Dim ib As Integer Try ib = C1Produkte.Bookmark C1Produkte.Bookmark = -1 Catch ex As Exception End Try refresh_produkte() Refresh_Produktzusatz() Try C1Produkte.Bookmark = ib Catch ex As Exception End Try End If End Sub Private Sub NeuesProduktToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeuesProduktToolStripMenuItem.Click ToolStripButton1_Click(sender, e) End Sub Private Sub ProduktBearbeitenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProduktBearbeitenToolStripMenuItem.Click ToolStripButton6_Click(sender, e) End Sub Private Sub ProduktLöschenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProduktLöschenToolStripMenuItem.Click ToolStripButton4_Click(sender, e) End Sub Private Sub SpeichernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SpeichernToolStripMenuItem.Click ToolStripButton3_Click(sender, e) End Sub Private Sub ProduktKopierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ProduktKopierenToolStripMenuItem.Click ToolStripButton5_Click(sender, e) End Sub Private Sub ToolStripButton7_Click(sender As Object, e As EventArgs) Handles ToolStripButton7.Click ToolStripMenuItem1_Click(sender, e) End Sub Private Sub enable_disable_fields(Optional enable As Boolean = False) Select Case Me.Behandlungsstatus Case 1, 4 enable = True Case Else enable = False End Select Me.GroupBox1.Enabled = enable Me.GroupBox2.Enabled = enable Me.GrpTarif.Enabled = enable Me.grpLeistungsdetails.Enabled = enable Me.GrpLeistungen.Enabled = enable End Sub Private Sub C1Produkte_BeforeRowColChange(sender As Object, e As CancelEventArgs) Handles C1Produkte.BeforeRowColChange Dim i As Integer = 1 If Me.C1Produkte.DataChanged Then C1Produkte.Update() End If End Sub End Class