Imports System.Data.SqlClient Imports System.Reflection Imports jdk.nashorn.internal.ir Public Class cOfferteList Property KundenNr As Object = Nothing ' Property OffertenNr As Object = Nothing Public LIST As New List(Of cOfferte) Dim SQL As New SQL 'Dim listTodelete As New List(Of cOfferte) Sub New(KundenNr, loadPos) Me.KundenNr = KundenNr ' Me.OffertenNr = OffertenNr LOAD_LIST(Me.KundenNr, loadPos) End Sub Public Sub CLEAR() LIST.Clear() End Sub Public Sub ADD(eb_EMail As String, Optional cc As Boolean = False, Optional bcc As Boolean = False) ' Dim l As New cOfferte 'l.eb_bcc = bcc 'LIST.Add(l) End Sub Public Sub LOAD_LIST(KundenNr, loadPos) Try LIST.Clear() Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM Offerten WHERE KundenNr=@KundenNr ", conn) cmd.Parameters.AddWithValue("@KundenNr", KundenNr) ' cmd.Parameters.AddWithValue("@OffertenNr", OffertenNr) Dim dr = cmd.ExecuteReader() While dr.Read Dim l As New cOfferte For Each i In l.getParameterList() Dim propInfo As PropertyInfo = l.GetType.GetProperty(i.Scalarvariable) If dr.Item(i.Text) Is DBNull.Value Then propInfo.SetValue(l, Nothing) Else propInfo.SetValue(l, dr.Item(i.Text)) End If Next If loadPos Then l.LOAD_POSITIONEN() LIST.Add(l) End While dr.Close() End Using End Using Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub 'Function SAVE() ' If SQL.doSQLVarList("DELETE FROM tblEmailBenachrichtigung WHERE eb_KundenNr=" & Me.eb_KundenNr & " and eb_ebartId=" & Me.eb_ebartId & " ", "FMZOLL") Then ' For Each l In LIST ' If Not l.INSERT() Then Return False ' Next ' Return True ' Else ' Return False ' End If 'End Function End Class Public Class cOfferte Property KundenNr As Object = Nothing Property OffertenNr As Object = Nothing Property FilialenNr As Object = Nothing Property Pauschalpreis As Object = Nothing Property Standardofferte As Object = Nothing Property Besonderheiten As Object = Nothing Property Eingegeben_am As Object = Nothing Property Geändert_am As Object = Nothing Property Sachbearbeiter As Object = Nothing Property Gesperrt As Object = Nothing Property Gesperrt_Datum As Object = Nothing Property Gesperrt_Grund As Object = Nothing Property SSMA_TimeStamp As Object = Nothing Property Art As Object = Nothing Property POSITIONEN As New List(Of cOffertPosition) '= Nothing Dim SQL As New SQL Sub New() End Sub Sub New(KundenNr, OffertenNr, loadPos) Me.KundenNr = KundenNr Me.OffertenNr = OffertenNr LOAD(KundenNr, OffertenNr, loadPos) End Sub Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KundenNr", KundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OffertenNr", OffertenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("FilialenNr", FilialenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Pauschalpreis", Pauschalpreis)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Standardofferte", Standardofferte)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Besonderheiten", Besonderheiten)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Eingegeben am", Eingegeben_am, "Eingegeben_am")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Geändert am", Geändert_am, "Geändert_am")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachbearbeiter", Sachbearbeiter)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesperrt", Gesperrt)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesperrt_Datum", Gesperrt_Datum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesperrt_Grund", Gesperrt_Grund)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Art", Art)) Return list End Function Public Sub LOAD(KundenNr, OffertenNr, loadPos) Try POSITIONEN.Clear() Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM Offerten WHERE KundenNr=@KundenNr AND OffertenNr=@OffertenNr ", conn) cmd.Parameters.AddWithValue("@KundenNr", KundenNr) cmd.Parameters.AddWithValue("@OffertenNr", OffertenNr) Dim dr = cmd.ExecuteReader() If dr.Read Then 'Dim l As New cOfferte For Each i In getParameterList() Dim propInfo As PropertyInfo = Me.GetType.GetProperty(i.Scalarvariable) If dr.Item(i.Text) Is DBNull.Value Then propInfo.SetValue(Me, Nothing) Else propInfo.SetValue(Me, dr.Item(i.Text)) End If Next If loadPos Then LOAD_POSITIONEN() End If dr.Close() End Using End Using Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub Public Sub LOAD_POSITIONEN() Try POSITIONEN.Clear() Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM Offertenpositionen WHERE KundenNr=@KundenNr and OffertenNr=@OffertenNr ", conn) cmd.Parameters.AddWithValue("@KundenNr", Me.KundenNr) cmd.Parameters.AddWithValue("@OffertenNr", Me.OffertenNr) Dim dr = cmd.ExecuteReader() While dr.Read Dim l As New cOffertPosition For Each i In l.getParameterList() Dim propInfo As PropertyInfo = l.GetType.GetProperty(i.Scalarvariable) If dr.Item(i.Text) Is DBNull.Value Then propInfo.SetValue(l, Nothing) Else propInfo.SetValue(l, dr.Item(i.Text)) End If Next POSITIONEN.Add(l) End While dr.Close() End Using End Using Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub Public Function INSERT() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Return SQL.doSQLVarList(getInsertCmd, "FMZOLL", , list) End Function Public Function SAVE() As Boolean Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM Offerten WITH(updlock,serializable) WHERE KundenNr=@KundenNr and OffertenNr=@OffertenNr ) " & " BEGIN " & getUpdateCmd() & " END " & " Else " & " BEGIN " & getInsertCmd() & " END " & " commit tran " Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list) End Function Public Function getInsertCmd() As String Try Me.Eingegeben_am = Now Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO Offerten (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function Public Function getUpdateCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' Return (" UPDATE [Offerten] SET " & str & " WHERE KundenNr=@KundenNr and OffertenNr=@OffertenNr ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function Function RESET_STANDARTOFFERTEN(Sachbearbeiter As String, Optional Sprache As String = "DE") As Boolean 'Zuserst alle OffertenPos von dem Offert löschen If SQL.doSQL("DELETE FROM [Offertenpositionen] WHERE KundenNr=" & Me.KundenNr & " and OffertenNr=" & Me.OffertenNr, "FMZOLL") Then 'jetzt die Standartofferten einfügen For Each r In SQL.loadDgvBySql("SELECT * FROM [Standardofferten] WHERE [OffertenNr]=" & Me.OffertenNr, "FMZOLL").Rows Dim P As New cOffertPosition() Dim Leistung As New cLeistungen(r("LeistungsNr")) P.KundenNr = Me.KundenNr P.OffertenNr = Me.OffertenNr P.LeistungsNr = r("LeistungsNr") Dim leistBez As String = "" Select Case Sprache Case "EN" : leistBez = IIf(Not IsDBNull(r("LeistungsBez_EN")), r("LeistungsBez_EN"), "") Case "RO" : leistBez = IIf(Not IsDBNull(r("LeistungsBez_RO")), r("LeistungsBez_RO"), "") Case "TR" : leistBez = IIf(Not IsDBNull(r("LeistungsBez_TR")), r("LeistungsBez_TR"), "") Case Else P.LeistungsBez = r("LeistungsBez") End Select If leistBez.Length > 30 Then P.LeistungsBez = leistBez.Substring(0, 30) Else P.LeistungsBez = leistBez End If If IsDBNull(P.LeistungsBez) OrElse P.LeistungsBez = "" Then P.LeistungsBez = r("LeistungsBez") P.BerechnungsartNr = Leistung.BerechnungsartNr P.Preis = r("Preis") P.Anzahl = r("Anzahl") P.BGebLeistungsNr = r("BGebLeistungsNr") P.BGebProzent = r("BGebProzent") P.BGebMinBetrag = r("BGebMinBetrag") P.Eingegeben_am = Now 'P.Geändert_am = XXXXXXXXX If r("BerechnungsartPosInkludiert") IsNot DBNull.Value Then P.BerechnungsartPosInkludiert = r("BerechnungsartPosInkludiert") If r("BerechnungsartNr") IsNot DBNull.Value Then P.BerechnungsartNr = r("BerechnungsartNr") 'Falls hier, dann übernommen, sonst von Leistung P.Sachbearbeiter = Sachbearbeiter 'P.Preisänderung = XXXXXXXXX 'P.PreisänderungProzent = XXXXXXXXX 'P.PreisAlt = XXXXXXXXX P.Land = setLand(P.OffertenNr, P.LeistungsNr, P.LeistungsBez) P.VZ = setVZ(P.OffertenNr, P.LeistungsNr, P.LeistungsBez) If Not P.INSERT() Then Return False End If Next Else Return False End If Return True End Function Public Function RESET_STANDARTOFFERTEN_FIRMA(Sachbearbeiter As String, Firma As String, Optional Sprache As String = "DE") As Boolean If Firma = "" Or Firma = "VERAG" Then Return RESET_STANDARTOFFERTEN(Sachbearbeiter, Sprache) Else 'Zuserst alle OffertenPos von dem Offert löschen If SQL.doSQL("DELETE FROM [Offertenpositionen] WHERE KundenNr=" & Me.KundenNr & " and OffertenNr=" & Me.OffertenNr, "FMZOLL") Then 'jetzt die Standartofferten einfügen For Each r In SQL.loadDgvBySql("SELECT * FROM [StandardoffertenFirma] WHERE Firma='" & Firma & "' AND [OffertenNr]=" & Me.OffertenNr, "FMZOLL").Rows Dim P As New cOffertPosition() Dim Leistung As New cLeistungen(r("LeistungsNr")) P.KundenNr = Me.KundenNr P.OffertenNr = Me.OffertenNr P.LeistungsNr = r("LeistungsNr") Dim leistBez As String = "" Select Case Sprache Case "EN" : leistBez = r("LeistungsBez_EN") Case "RO" : leistBez = r("LeistungsBez_RO") Case "TR" : leistBez = r("LeistungsBez_TR") Case Else P.LeistungsBez = r("LeistungsBez") End Select If leistBez.Length > 30 Then P.LeistungsBez = leistBez.Substring(0, 30) Else P.LeistungsBez = leistBez End If If IsDBNull(P.LeistungsBez) OrElse P.LeistungsBez = "" Then P.LeistungsBez = r("LeistungsBez") P.BerechnungsartNr = Leistung.BerechnungsartNr P.Preis = r("Preis") P.Anzahl = r("Anzahl") P.BGebLeistungsNr = r("BGebLeistungsNr") P.BGebProzent = r("BGebProzent") P.BGebMinBetrag = r("BGebMinBetrag") P.Eingegeben_am = Now 'P.Geändert_am = XXXXXXXXX P.Sachbearbeiter = Sachbearbeiter If r("BerechnungsartPosInkludiert") IsNot DBNull.Value Then P.BerechnungsartPosInkludiert = r("BerechnungsartPosInkludiert") If r("BerechnungsartNr") IsNot DBNull.Value Then P.BerechnungsartNr = r("BerechnungsartNr") 'Falls hier, dann übernommen, sonst von Leistung 'P.Preisänderung = XXXXXXXXX 'P.PreisänderungProzent = XXXXXXXXX 'P.PreisAlt = XXXXXXXXX P.Land = setLand(P.OffertenNr, P.LeistungsNr, P.LeistungsBez) P.VZ = setVZ(P.OffertenNr, P.LeistungsNr, P.LeistungsBez) If Not P.INSERT() Then Return False End If Next Else Return False End If Return True End If End Function Private Function setLand(OffertenNr As Integer, LeistungsNr As Integer, LeistungsBez As String) As String Dim LandISO As String = "" Select Case OffertenNr Case 31, 15, 14 If (LeistungsNr = 124 Or LeistungsNr = 125 Or LeistungsNr = 126) Then LandISO = LeistungsBez.ToString.Substring(LeistungsBez.ToString.Length - 2, 2) End If If (LeistungsNr = 117 Or LeistungsNr = 118 Or LeistungsNr = 119) Then LandISO = LeistungsBez.ToString.Substring(LeistungsBez.ToString.Length - 2, 2) End If End Select If LandISO <> "" AndAlso LandISO.All(Function(c) Char.IsUpper(c)) Then If LandISO <> "EU" And LandISO <> "RG" Then Return LandISO Else Return LandISO End If End If Return LandISO End Function Private Function setVZ(OffertenNr As Integer, LeistungsNr As Integer, LeistungsBez As String) As Boolean Select Case OffertenNr Case 31, 15, 14 If (LeistungsNr = 117 Or LeistungsNr = 118 Or LeistungsNr = 119) Then If LeistungsBez.ToString.Contains("ZV") Then Return True Else Return False End If End If If (LeistungsNr = 124 Or LeistungsNr = 125 Or LeistungsNr = 126) Then If LeistungsBez.ToString.Contains("ZV") Then Return True Else Return False End If End If End Select End Function End Class Public Class cOffertPosition Property KundenNr As Object = Nothing Property OffertenNr As Object = Nothing Property LeistungsNr As Object = Nothing Property LeistungsBez As Object = Nothing Property BerechnungsartNr As Object = Nothing Property Preis As Object = Nothing Property Anzahl As Object = Nothing Property BGebLeistungsNr As Object = Nothing Property BGebProzent As Object = Nothing Property BGebMinBetrag As Object = Nothing Property Eingegeben_am As Object = Nothing Property Geändert_am As Object = Nothing Property Sachbearbeiter As Object = Nothing Property Preisänderung As Object = Nothing Property PreisänderungProzent As Object = Nothing Property PreisAlt As Object = Nothing Property BerechnungsartPosInkludiert As Object = Nothing Property SSMA_TimeStamp As Object = Nothing Property Land As Object = Nothing Property VZ As Object = Nothing Property RMC As Object = Nothing Property Fremd As Object = Nothing Dim SQL As New SQL Sub New() End Sub Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KundenNr", KundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OffertenNr", OffertenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsNr", LeistungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsBez", LeistungsBez)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BerechnungsartNr", BerechnungsartNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Preis", Preis)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Anzahl", Anzahl)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebLeistungsNr", BGebLeistungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebProzent", BGebProzent)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebMinBetrag", BGebMinBetrag)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Eingegeben am", Eingegeben_am, "Eingegeben_am")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Geändert am", Geändert_am, "Geändert_am")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachbearbeiter", Sachbearbeiter)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Preisänderung", Preisänderung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PreisänderungProzent", PreisänderungProzent)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PreisAlt", PreisAlt)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BerechnungsartPosInkludiert", BerechnungsartPosInkludiert)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Land", Land)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VZ", VZ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RMC", RMC)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Fremd", Fremd)) Return list End Function Public Function INSERT() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Return SQL.doSQLVarList(getInsertCmd, "FMZOLL", , list) End Function Public Function getInsertCmd() As String Try Me.Eingegeben_am = Now Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO Offertenpositionen (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function End Class Public Class cOfferteArchiv Property OfID As Integer Property KundenNr As Object = Nothing Property OffertenNr As Object = Nothing Property FilialenNr As Object = Nothing Property Pauschalpreis As Object = Nothing Property Standardofferte As Object = Nothing Property Besonderheiten As Object = Nothing Property Eingegeben_am As Object = Nothing Property Geändert_am As Object = Nothing Property Sachbearbeiter As Object = Nothing Property Gesperrt As Object = Nothing Property Gesperrt_Datum As Object = Nothing Property Gesperrt_Grund As Object = Nothing Property SSMA_TimeStamp As Object = Nothing Property Art As Object = Nothing Property POSITIONEN As New List(Of cOffertPosition) '= Nothing Dim SQL As New SQL Sub New() End Sub Sub New(KundenNr, OffertenNr, loadPos) Me.KundenNr = KundenNr Me.OffertenNr = OffertenNr LOAD(KundenNr, OffertenNr, loadPos) End Sub Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OfID", OfID, , True)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KundenNr", KundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OffertenNr", OffertenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("FilialenNr", FilialenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Pauschalpreis", Pauschalpreis)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Standardofferte", Standardofferte)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Besonderheiten", Besonderheiten)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Eingegeben am", Eingegeben_am, "Eingegeben_am")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Geändert am", Geändert_am, "Geändert_am")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachbearbeiter", Sachbearbeiter)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesperrt", Gesperrt)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesperrt_Datum", Gesperrt_Datum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesperrt_Grund", Gesperrt_Grund)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SSMA_TimeStamp", SSMA_TimeStamp)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Art", Art)) Return list End Function Public Function UPDATE() As Boolean Dim sqlstr = " BEGIN " & getUpdateCmd() & " End " Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() OfID = SQL.doSQLVarListID(OfID, sqlstr, "FMZOLL", , list) Return OfID End Function Public Function SAVERETURNID() As Integer Dim sqlstr = " BEGIN " & getInsertCmd() & " End " Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() OfID = SQL.doSQLVarListID(OfID, sqlstr, "FMZOLL", , list) Return OfID End Function Public Sub LOAD(KundenNr, OffertenNr, loadPos) Try POSITIONEN.Clear() Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("Select * FROM tblOffertenArchiv WHERE KundenNr=@KundenNr And OffertenNr=@OffertenNr ", conn) cmd.Parameters.AddWithValue("@KundenNr", KundenNr) cmd.Parameters.AddWithValue("@OffertenNr", OffertenNr) Dim dr = cmd.ExecuteReader() If dr.Read Then 'Dim l As New cOfferte For Each i In getParameterList() Dim propInfo As PropertyInfo = Me.GetType.GetProperty(i.Scalarvariable) If dr.Item(i.Text) Is DBNull.Value Then propInfo.SetValue(Me, Nothing) Else propInfo.SetValue(Me, dr.Item(i.Text)) End If Next If loadPos Then LOAD_POSITIONEN() End If dr.Close() End Using End Using Catch ex As Exception MsgBox("Fehler In der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub Public Sub LOAD_POSITIONEN() Try POSITIONEN.Clear() Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() 'Using cmd As New SqlCommand("SELECT * FROM OffertenpositionenArchiv WHERE KundenNr=@KundenNr and OffertenNr=@OffertenNr ", conn) Using cmd As New SqlCommand("SELECT * FROM tblOffertenpositionenArchiv WHERE OfID=@OfID ", conn) cmd.Parameters.AddWithValue("@OfId", Me.OfID) Dim dr = cmd.ExecuteReader() While dr.Read Dim l As New cOffertPosition For Each i In l.getParameterList() Dim propInfo As PropertyInfo = l.GetType.GetProperty(i.Scalarvariable) If dr.Item(i.Text) Is DBNull.Value Then propInfo.SetValue(l, Nothing) Else propInfo.SetValue(l, dr.Item(i.Text)) End If Next POSITIONEN.Add(l) End While dr.Close() End Using End Using Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub Public Function INSERT() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Return SQL.doSQLVarList(getInsertCmd, "FMZOLL", , list) End Function 'Public Function SAVE() As Boolean ' Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM OffertenArchiv WITH(updlock,serializable) WHERE KundenNr=@KundenNr and OffertenNr=@OffertenNr ) " & ' " BEGIN " & getUpdateCmd() & " END " & ' " Else " & ' " BEGIN " & getInsertCmd() & " END " & ' " commit tran " ' Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() ' Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list) 'End Function Public Function getInsertCmd() As String Try Me.Eingegeben_am = Now Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO tblOffertenArchiv (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function Public Function getUpdateCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' Return (" UPDATE [OffertenArchiv] SET " & str & " WHERE IfID=@OfID ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function 'Function RESET_STANDARTOFFERTEN(Sachbearbeiter) As Boolean ' 'Zuserst alle OffertenPos von dem Offert löschen ' If SQL.doSQL("DELETE FROM [OffertenpositionenArchiv] WHERE KundenNr=" & Me.KundenNr & " and OffertenNr=" & Me.OffertenNr, "FMZOLL") Then ' 'jetzt die Standartofferten einfügen ' For Each r In SQL.loadDgvBySql("SELECT * FROM [Standardofferten] WHERE [OffertenNr]=" & Me.OffertenNr, "FMZOLL").Rows ' Dim P As New cOffertPosition() ' Dim Leistung As New cLeistungen(r("LeistungsNr")) ' P.KundenNr = Me.KundenNr ' P.OffertenNr = Me.OffertenNr ' P.LeistungsNr = r("LeistungsNr") ' P.LeistungsBez = r("LeistungsBez") ' P.BerechnungsartNr = Leistung.BerechnungsartNr ' P.Preis = r("Preis") ' P.Anzahl = r("Anzahl") ' P.BGebLeistungsNr = r("BGebLeistungsNr") ' P.BGebProzent = r("BGebProzent") ' P.BGebMinBetrag = r("BGebMinBetrag") ' P.Eingegeben_am = Now ' 'P.Geändert_am = XXXXXXXXX ' If r("BerechnungsartPosInkludiert") IsNot DBNull.Value Then P.BerechnungsartPosInkludiert = r("BerechnungsartPosInkludiert") ' If r("BerechnungsartNr") IsNot DBNull.Value Then P.BerechnungsartNr = r("BerechnungsartNr") 'Falls hier, dann übernommen, sonst von Leistung ' P.Sachbearbeiter = Sachbearbeiter ' 'P.Preisänderung = XXXXXXXXX ' 'P.PreisänderungProzent = XXXXXXXXX ' 'P.PreisAlt = XXXXXXXXX ' If Not P.INSERT() Then ' Return False ' End If ' Next ' Else ' Return False ' End If ' Return True 'End Function 'Public Function RESET_STANDARTOFFERTEN_FIRMA(Sachbearbeiter, Firma) As Boolean ' If Firma = "" Or Firma = "VERAG" Then ' Return RESET_STANDARTOFFERTEN(Sachbearbeiter) ' Else ' 'Zuserst alle OffertenPos von dem Offert löschen ' If SQL.doSQL("DELETE FROM [Offertenpositionen] WHERE KundenNr=" & Me.KundenNr & " and OffertenNr=" & Me.OffertenNr, "FMZOLL") Then ' 'jetzt die Standartofferten einfügen ' For Each r In SQL.loadDgvBySql("SELECT * FROM [StandardoffertenFirma] WHERE Firma='" & Firma & "' AND [OffertenNr]=" & Me.OffertenNr, "FMZOLL").Rows ' Dim P As New cOffertPosition() ' Dim Leistung As New cLeistungen(r("LeistungsNr")) ' P.KundenNr = Me.KundenNr ' P.OffertenNr = Me.OffertenNr ' P.LeistungsNr = r("LeistungsNr") ' P.LeistungsBez = r("LeistungsBez") ' P.BerechnungsartNr = Leistung.BerechnungsartNr ' P.Preis = r("Preis") ' P.Anzahl = r("Anzahl") ' P.BGebLeistungsNr = r("BGebLeistungsNr") ' P.BGebProzent = r("BGebProzent") ' P.BGebMinBetrag = r("BGebMinBetrag") ' P.Eingegeben_am = Now ' 'P.Geändert_am = XXXXXXXXX ' P.Sachbearbeiter = Sachbearbeiter ' If r("BerechnungsartPosInkludiert") IsNot DBNull.Value Then P.BerechnungsartPosInkludiert = r("BerechnungsartPosInkludiert") ' If r("BerechnungsartNr") IsNot DBNull.Value Then P.BerechnungsartNr = r("BerechnungsartNr") 'Falls hier, dann übernommen, sonst von Leistung ' 'P.Preisänderung = XXXXXXXXX ' 'P.PreisänderungProzent = XXXXXXXXX ' 'P.PreisAlt = XXXXXXXXX ' If Not P.INSERT() Then ' Return False ' End If ' Next ' Else ' Return False ' End If ' Return True ' End If 'End Function End Class Public Class cOffertPositionArchiv Property OfID As Integer Property KundenNr As Object = Nothing Property OffertenNr As Object = Nothing Property LeistungsNr As Object = Nothing Property LeistungsBez As Object = Nothing Property BerechnungsartNr As Object = Nothing Property Preis As Object = Nothing Property Anzahl As Object = Nothing Property BGebLeistungsNr As Object = Nothing Property BGebProzent As Object = Nothing Property BGebMinBetrag As Object = Nothing Property Eingegeben_am As Object = Nothing Property Geändert_am As Object = Nothing Property Sachbearbeiter As Object = Nothing Property Preisänderung As Object = Nothing Property PreisänderungProzent As Object = Nothing Property PreisAlt As Object = Nothing Property BerechnungsartPosInkludiert As Object = Nothing Property SSMA_TimeStamp As Object = Nothing Dim SQL As New SQL Sub New() End Sub Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OfID", OfID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KundenNr", KundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OffertenNr", OffertenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsNr", LeistungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsBez", LeistungsBez)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BerechnungsartNr", BerechnungsartNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Preis", Preis)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Anzahl", Anzahl)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebLeistungsNr", BGebLeistungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebProzent", BGebProzent)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebMinBetrag", BGebMinBetrag)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Eingegeben am", Eingegeben_am, "Eingegeben_am")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Geändert am", Geändert_am, "Geändert_am")) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachbearbeiter", Sachbearbeiter)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Preisänderung", Preisänderung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PreisänderungProzent", PreisänderungProzent)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PreisAlt", PreisAlt)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BerechnungsartPosInkludiert", BerechnungsartPosInkludiert)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SSMA_TimeStamp", SSMA_TimeStamp)) Return list End Function Public Function INSERT() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Return SQL.doSQLVarList(getInsertCmd, "FMZOLL", , list) End Function Public Function getInsertCmd() As String Try Me.Eingegeben_am = Now Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO tblOffertenpositionenArchiv (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function End Class Public Class cStandardofferten Property OffertenNr As Integer Property Währungscode As Object = Nothing Property LeistungsNr As Integer Property LeistungsBez As Object = Nothing Property Preis As Object = Nothing Property Anzahl As Object = Nothing Property BGebLeistungsNr As Object = Nothing Property BGebProzent As Object = Nothing Property BGebMinBetrag As Object = Nothing Property BerechnungsartPosInkludiert As Object = Nothing Property BerechnungsartNr As Object = Nothing Property LeistungsBez_EN As Object = Nothing Property LeistungsBez_RO As Object = Nothing Property LeistungsBez_TR As Object = Nothing Public hasEntry = False Dim SQL As New SQL Sub New(OffertenNr, Währungscode, LeistungsNr, LeistungsBez) Me.OffertenNr = OffertenNr Me.Währungscode = Währungscode Me.LeistungsNr = LeistungsNr Me.LeistungsBez = LeistungsBez LOAD() End Sub Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OffertenNr", OffertenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Währungscode", Währungscode)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsNr", LeistungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsBez", LeistungsBez)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Preis", Preis)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Anzahl", Anzahl)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebLeistungsNr", BGebLeistungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebProzent", BGebProzent)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebMinBetrag", BGebMinBetrag)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BerechnungsartPosInkludiert", BerechnungsartPosInkludiert)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BerechnungsartNr", BerechnungsartNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsBez_EN", LeistungsBez_EN)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsBez_RO", LeistungsBez_RO)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsBez_TR", LeistungsBez_TR)) Return list End Function Public Function SAVE() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM Standardofferten WHERE OffertenNr=@OffertenNr AND Währungscode=@Währungscode AND LeistungsNr=@LeistungsNr AND LeistungsBez=@LeistungsBez) " & " BEGIN " & getUpdateCmd() & " END " & " Else " & " BEGIN " & getInsertCmd() & " END " & " commit tran " Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list) End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM Standardofferten WHERE OffertenNr=@OffertenNr AND Währungscode=@Währungscode AND LeistungsNr=@LeistungsNr AND LeistungsBez=@LeistungsBez ", conn) cmd.Parameters.AddWithValue("@OffertenNr", OffertenNr) cmd.Parameters.AddWithValue("@Währungscode", Währungscode) cmd.Parameters.AddWithValue("@LeistungsNr", LeistungsNr) cmd.Parameters.AddWithValue("@LeistungsBez", LeistungsBez) Dim dr = cmd.ExecuteReader() If dr.Read Then For Each li In getParameterList() Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then propInfo.SetValue(Me, Nothing) Else propInfo.SetValue(Me, dr.Item(li.Text)) End If Next hasEntry = True End If dr.Close() End Using End Using Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Public Function getUpdateCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' Return (" UPDATE [Standardofferten] SET " & str & " WHERE OffertenNr=@OffertenNr AND Währungscode=@Währungscode AND LeistungsNr=@LeistungsNr AND LeistungsBez=@LeistungsBez ") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return "" End Function Public Function getInsertCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO Standardofferten (" & str & ") VALUES(" & values & ") ") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return "" End Function End Class