Kundebeabeit, MDMDatenverarb., Fakt, Syska-Einarbeitung, Offerten, etc.

This commit is contained in:
2025-08-08 10:47:22 +02:00
parent 58fb8e2cea
commit 59f19c2f9f
11 changed files with 448 additions and 201 deletions

View File

@@ -225,7 +225,7 @@ Public Class cOfferte
End Function
Function RESET_STANDARTOFFERTEN(Sachbearbeiter) As Boolean
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
@@ -233,12 +233,28 @@ Public Class cOfferte
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")
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")
@@ -253,6 +269,23 @@ Public Class cOfferte
'P.Preisänderung = XXXXXXXXX
'P.PreisänderungProzent = XXXXXXXXX
'P.PreisAlt = XXXXXXXXX
Dim LandISO As String = ""
Select Case P.OffertenNr
Case 31, 15, 14
If (P.LeistungsNr = 124 Or P.LeistungsNr = 125 Or P.LeistungsNr = 126) Then
LandISO = P.LeistungsBez.ToString.Substring(P.LeistungsBez.ToString.Length - 2, 2)
End If
End Select
If LandISO <> "" AndAlso LandISO.All(Function(c) Char.IsUpper(c)) Then
P.Land = LandISO
End If
If Not P.INSERT() Then
Return False
End If
@@ -262,9 +295,9 @@ Public Class cOfferte
End If
Return True
End Function
Public Function RESET_STANDARTOFFERTEN_FIRMA(Sachbearbeiter, Firma) As Boolean
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)
Return RESET_STANDARTOFFERTEN(Sachbearbeiter, Sprache)
Else
'Zuserst alle OffertenPos von dem Offert löschen
@@ -279,7 +312,25 @@ Public Class cOfferte
P.OffertenNr = Me.OffertenNr
P.LeistungsNr = r("LeistungsNr")
P.LeistungsBez = r("LeistungsBez")
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")
@@ -294,6 +345,20 @@ Public Class cOfferte
'P.Preisänderung = XXXXXXXXX
'P.PreisänderungProzent = XXXXXXXXX
'P.PreisAlt = XXXXXXXXX
Dim LandISO As String = ""
Select Case P.OffertenNr
Case 31, 15, 14
LandISO = P.LeistungsBez.ToString.Substring(P.LeistungsBez.ToString.Length - 2, 2)
End Select
If LandISO <> "" AndAlso LandISO.All(Function(c) Char.IsUpper(c)) Then
P.Land = LandISO
End If
If Not P.INSERT() Then
Return False
End If
@@ -328,6 +393,10 @@ Public Class cOffertPosition
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
@@ -355,6 +424,11 @@ Public Class cOffertPosition
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
@@ -735,3 +809,143 @@ Public Class cOffertPositionArchiv
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