356 lines
14 KiB
VB.net
356 lines
14 KiB
VB.net
Imports System.Data.SqlClient
|
|
Imports System.Reflection
|
|
Imports com.sun.org.apache.xml.internal.security.transforms
|
|
|
|
' ========================
|
|
' 📦 Hauptklasse: DHF_Artikel
|
|
' ========================
|
|
Public Class DHF_Artikel
|
|
Public LizenzNr As String = "S01122"
|
|
Public FremdAdressID As String
|
|
Public FremdKennung As String = "EXT"
|
|
Public ArtikelCode As String
|
|
Public AdressID As Integer?
|
|
Public Bezeichnung As String
|
|
Public Eigenmasse As Double?
|
|
Public MengenEH As String
|
|
Public GueltigAb As Date?
|
|
Public Ursprungsland As String
|
|
Public AusfVerfCode As String
|
|
Public AusfVerfZusatzcode As String
|
|
Public EinfVerfCode As String
|
|
Public EinfVerfZusatzcode As String
|
|
Public IndEAH As Byte?
|
|
Public GeaendertVon As Integer = 1
|
|
Public GeaendertAm As Date = Now
|
|
|
|
Public ArtikelTarife As New List(Of DHF_ArtikelTarif)
|
|
Private db As New DHF_DBHelper
|
|
|
|
Public Function Save() As Boolean
|
|
Dim result = db.Save("imArtikel", GetParameterList())
|
|
If result = False Then
|
|
Return False ' Fehler beim Speichern der Hauptdaten
|
|
Else
|
|
|
|
For Each tarif In ArtikelTarife
|
|
tarif.LizenzNr = LizenzNr
|
|
tarif.FremdAdressID = FremdAdressID
|
|
tarif.FremdKennung = FremdKennung
|
|
tarif.ArtikelCode = ArtikelCode
|
|
tarif.Save()
|
|
Next
|
|
'DatenKomplete setzten -> Das Triggert die Verarbeitung der ArtikelTarife in Zolaris
|
|
db.UpdateDatenKomplett("imArtikel", GetParameterList())
|
|
|
|
Return result
|
|
End If
|
|
End Function
|
|
|
|
Public Function Delete() As Boolean
|
|
For Each tarif In ArtikelTarife
|
|
tarif.Delete()
|
|
Next
|
|
Return db.Delete("imArtikel", GetParameterList())
|
|
End Function
|
|
|
|
Public Shared Function Delete_KD(FremdAdressID As String, Optional LizenzNr As String = "S01122") As Boolean ' FremdAdressID= VERAG KdNr
|
|
' Dim AdressID_DHF As Integer = -1
|
|
Dim db As New DHF_DBHelper
|
|
' AdressID_DHF = (New VERAG_PROG_ALLGEMEIN.SQL).DLookup("AdressID", "zzAdressen", "FremdAdressID='" & KdNr & "' ", "EZOLL", -1)
|
|
|
|
If FremdAdressID <> "" Then
|
|
db.DeleteByFremdAdressID("imArtikelTarifZucodes", FremdAdressID, LizenzNr)
|
|
db.DeleteByFremdAdressID("imArtikelTarif", FremdAdressID, LizenzNr)
|
|
Return db.DeleteByFremdAdressID("imArtikel", FremdAdressID, LizenzNr)
|
|
Else
|
|
Return False
|
|
End If
|
|
|
|
End Function
|
|
|
|
Public Shared Function Delete_KDLiveDate(FremdAdressID As String, Optional LizenzNr As String = "S01122") As Boolean ' FremdAdressID= VERAG KdNr
|
|
Dim AdressID_DHF As Integer = -1
|
|
Dim db As New DHF_DBHelper
|
|
AdressID_DHF = (New VERAG_PROG_ALLGEMEIN.SQL).DLookup("AdressID", "zzAdressen", "FremdAdressID='" & FremdAdressID & "' AND LizenzNr='" & LizenzNr & "'", "EZOLL", -1)
|
|
Console.WriteLine(AdressID_DHF)
|
|
If AdressID_DHF > 0 Then
|
|
db.DeleteByAdressID("zzArtikelTarifZucodes", AdressID_DHF, LizenzNr)
|
|
db.DeleteByAdressID("zzArtikelTarif", AdressID_DHF, LizenzNr)
|
|
Return db.DeleteByAdressID("zzArtikel", AdressID_DHF, LizenzNr)
|
|
Else
|
|
Return False
|
|
End If
|
|
End Function
|
|
|
|
|
|
Private Function GetParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
|
|
Return New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) From {
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("LizenzNr", LizenzNr, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("FremdAdressID", FremdAdressID, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("FremdKennung", FremdKennung, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("ArtikelCode", ArtikelCode, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("AdressID", AdressID),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("Bezeichnung", Bezeichnung),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("Eigenmasse", Eigenmasse),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("MengenEH", MengenEH),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("GueltigAb", GueltigAb),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("Ursprungsland", Ursprungsland),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("AusfVerfCode", AusfVerfCode),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("AusfVerfZusatzcode", AusfVerfZusatzcode),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("EinfVerfCode", EinfVerfCode),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("EinfVerfZusatzcode", EinfVerfZusatzcode),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("IndEAH", IndEAH),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("GeaendertVon", GeaendertVon),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("GeaendertAm", GeaendertAm)
|
|
}
|
|
End Function
|
|
End Class
|
|
|
|
' ========================
|
|
' 💶 Unterklasse: DHF_ArtikelTarif
|
|
' ========================
|
|
Public Class DHF_ArtikelTarif
|
|
Public LizenzNr As String
|
|
Public FremdAdressID As String
|
|
Public FremdKennung As String
|
|
Public ArtikelCode As String
|
|
Public GueltigAb As Date?
|
|
Public TarifNr As String
|
|
|
|
Public TarifZucodes As New List(Of DHF_ArtikelTarifZucode)
|
|
Private db As New DHF_DBHelper
|
|
|
|
Public Function Save() As Boolean
|
|
Dim result = db.Save("imArtikelTarif", GetParameterList())
|
|
For Each zuc In TarifZucodes
|
|
zuc.LizenzNr = LizenzNr
|
|
zuc.FremdAdressID = FremdAdressID
|
|
zuc.FremdKennung = FremdKennung
|
|
zuc.ArtikelCode = ArtikelCode
|
|
zuc.GueltigAb = GueltigAb
|
|
zuc.Save()
|
|
Next
|
|
Return result
|
|
End Function
|
|
|
|
Public Function Delete() As Boolean
|
|
For Each zuc In TarifZucodes
|
|
zuc.Delete()
|
|
Next
|
|
Return db.Delete("imArtikelTarif", GetParameterList())
|
|
End Function
|
|
|
|
Private Function GetParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
|
|
Return New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) From {
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("LizenzNr", LizenzNr, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("FremdAdressID", FremdAdressID, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("FremdKennung", FremdKennung, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("ArtikelCode", ArtikelCode, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("GueltigAb", GueltigAb, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("TarifNr", TarifNr)
|
|
}
|
|
End Function
|
|
End Class
|
|
|
|
' ========================
|
|
' 🧩 Unterklasse: DHF_ArtikelTarifZucode
|
|
' ========================
|
|
Public Class DHF_ArtikelTarifZucode
|
|
Public LizenzNr As String
|
|
Public FremdAdressID As String
|
|
Public FremdKennung As String
|
|
Public ArtikelCode As String
|
|
Public GueltigAb As Date?
|
|
Public TarifNrZusatzcode As String
|
|
|
|
Private db As New DHF_DBHelper
|
|
|
|
|
|
Public Function Save() As Boolean
|
|
Return db.Save("imArtikelTarifZucodes", GetParameterList())
|
|
End Function
|
|
|
|
Public Function Delete() As Boolean
|
|
Return db.Delete("imArtikelTarifZucodes", GetParameterList())
|
|
End Function
|
|
|
|
Private Function GetParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
|
|
Return New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) From {
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("LizenzNr", LizenzNr, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("FremdAdressID", FremdAdressID, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("FremdKennung", FremdKennung, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("ArtikelCode", ArtikelCode, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("GueltigAb", GueltigAb, , True),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("TarifNrZusatzcode", TarifNrZusatzcode)
|
|
}
|
|
End Function
|
|
End Class
|
|
|
|
|
|
|
|
|
|
' ========================
|
|
' 🧰 Datenbank-Hilfsklasse
|
|
' ========================
|
|
Public Class DHF_DBHelper
|
|
Private SQL As New SQL
|
|
|
|
Public Function SaveandDatenKomplete(tableName As String, params As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)) As Boolean
|
|
If Save(tableName, params) Then
|
|
UpdateDatenKomplett(tableName, params)
|
|
Return True
|
|
End If
|
|
Return False
|
|
End Function
|
|
|
|
Public Function Save(tableName As String, params As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)) As Boolean
|
|
Dim whereClause = GetPrimaryKeyWhere(params)
|
|
Dim existsSQL = "SELECT COUNT(*) FROM [" & tableName & "] WHERE " & whereClause
|
|
|
|
For Each p In params
|
|
If String.IsNullOrWhiteSpace(p.Scalarvariable) OrElse String.IsNullOrWhiteSpace(p.Text) Then
|
|
Throw New Exception("❌ Ungültiger Parameter in SQLVariable! Text='" & p.Text & "', Scalarvariable='" & p.Scalarvariable & "'")
|
|
End If
|
|
Next
|
|
|
|
' Prüfen, ob Eintrag existiert
|
|
Dim count = SQL.GetScalarValue(existsSQL, "EZOLL", params)
|
|
Dim sqlCmd As String
|
|
|
|
If count > 0 Then
|
|
sqlCmd = GetUpdateCmd(tableName, params)
|
|
Else
|
|
sqlCmd = GetInsertCmd(tableName, params)
|
|
End If
|
|
|
|
|
|
Return SQL.doSQLVarList(sqlCmd, "EZOLL", , params)
|
|
End Function
|
|
|
|
Public Function UpdateDatenKomplett(tableName As String, params As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)) As Boolean
|
|
Return SQL.doSQLVarList("update [" & tableName & "] set [DatenKomplett]=1 where
|
|
lizenzNr=@LizenzNr AND FremdAdressID=@FremdAdressID AND FremdKennung=@FremdKennung
|
|
and ArtikelCode=@ArtikelCode", "EZOLL", , params)
|
|
End Function
|
|
|
|
Public Function Delete(tableName As String, params As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)) As Boolean
|
|
Dim whereClause = GetPrimaryKeyWhere(params)
|
|
Dim sqlstr = "DELETE FROM [" & tableName & "] WHERE " & whereClause
|
|
Return SQL.doSQLVarList(sqlstr, "EZOLL", , params)
|
|
End Function
|
|
|
|
Public Function DeleteByFremdAdressID(tableName As String, fremdAdressID As String, Optional LizenzNr As String = "S01122") As Boolean
|
|
Dim sqlstr = "DELETE FROM [" & tableName & "] WHERE [FremdAdressID]=@FID AND LizenzNr=@LizenzNr "
|
|
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) From {
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("FID", fremdAdressID),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("LizenzNr", LizenzNr)
|
|
}
|
|
Return SQL.doSQLVarList(sqlstr, "EZOLL", , list)
|
|
End Function
|
|
|
|
|
|
Public Function DeleteByAdressID(tableName As String, AdressID As String, Optional LizenzNr As String = "S01122") As Boolean
|
|
Dim sqlstr = "DELETE FROM [" & tableName & "] WHERE [AdressID]=@FID AND LizenzNr=@LizenzNr "
|
|
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) From {
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("FID", AdressID),
|
|
New VERAG_PROG_ALLGEMEIN.SQLVariable("LizenzNr", LizenzNr)
|
|
}
|
|
Return SQL.doSQLVarList(sqlstr, "EZOLL", , list)
|
|
End Function
|
|
|
|
Private Function GetPrimaryKeyWhere(params As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)) As String
|
|
Return String.Join(" AND ", params.Where(Function(p) p.isPrimaryParam).Select(Function(p) "[" & p.Text & "]=@" & p.Scalarvariable))
|
|
End Function
|
|
|
|
Private Function GetUpdateCmd(tableName As String, params As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)) As String
|
|
' Primärschlüssel-Felder NICHT in SET verwenden
|
|
Dim setCmd = String.Join(",",
|
|
params.Where(Function(p) p.isPrimaryParam <> True).
|
|
Select(Function(p) "[" & p.Text & "]=@" & p.Scalarvariable))
|
|
|
|
Return "UPDATE [" & tableName & "] SET " & setCmd & " WHERE " & GetPrimaryKeyWhere(params)
|
|
End Function
|
|
|
|
Private Function GetInsertCmd(tableName As String, params As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)) As String
|
|
Dim fields = String.Join(",", params.Select(Function(p) "[" & p.Text & "]"))
|
|
Dim values = String.Join(",", params.Select(Function(p) "@" & p.Scalarvariable))
|
|
Return "INSERT INTO [" & tableName & "] (" & fields & ") VALUES (" & values & ")"
|
|
End Function
|
|
End Class
|
|
|
|
Public Class DHF_ArtikelBeispiel
|
|
|
|
Public Shared Sub Beispiel_TestSave()
|
|
|
|
|
|
Dim KdNr = "123456"
|
|
|
|
DHF_Artikel.Delete_KD(KdNr)
|
|
|
|
|
|
Dim artikel As New DHF_Artikel With {
|
|
.LizenzNr = "S01122",
|
|
.FremdAdressID = KdNr,
|
|
.FremdKennung = "EXT",
|
|
.ArtikelCode = "ART1001",
|
|
.Bezeichnung = "Testartikel223",
|
|
.Eigenmasse = 12.5,
|
|
.MengenEH = "kg",
|
|
.GueltigAb = Date.Today,
|
|
.Ursprungsland = "AT",
|
|
.AusfVerfCode = "1000",
|
|
.EinfVerfCode = "4000",
|
|
.IndEAH = 0
|
|
}
|
|
|
|
Dim tarif1 As New DHF_ArtikelTarif With {
|
|
.GueltigAb = Date.Today,
|
|
.TarifNr = "85011000"
|
|
}
|
|
tarif1.TarifZucodes.Add(New DHF_ArtikelTarifZucode With {
|
|
.TarifNrZusatzcode = "V001"
|
|
})
|
|
tarif1.TarifZucodes.Add(New DHF_ArtikelTarifZucode With {
|
|
.TarifNrZusatzcode = "V002"
|
|
})
|
|
|
|
artikel.ArtikelTarife.Add(tarif1)
|
|
|
|
Dim tarif2 As New DHF_ArtikelTarif With {
|
|
.GueltigAb = Date.Today.AddDays(30),
|
|
.TarifNr = "85012000"
|
|
}
|
|
|
|
artikel.ArtikelTarife.Add(tarif2)
|
|
|
|
If artikel.Save() Then
|
|
Console.WriteLine("Artikel erfolgreich gespeichert.")
|
|
Else
|
|
Console.WriteLine("Fehler beim Speichern.")
|
|
End If
|
|
End Sub
|
|
|
|
Public Shared Sub Beispiel_TestDelete()
|
|
Dim artikel As New DHF_Artikel With {
|
|
.LizenzNr = "S00001",
|
|
.FremdAdressID = "K12345",
|
|
.FremdKennung = "EXT",
|
|
.ArtikelCode = "ART100"
|
|
}
|
|
|
|
If artikel.Delete() Then
|
|
Console.WriteLine("Artikel erfolgreich gelöscht.")
|
|
Else
|
|
Console.WriteLine("Fehler beim Löschen.")
|
|
End If
|
|
End Sub
|
|
|
|
Public Shared Sub Beispiel_DeleteAlleFuerKunde()
|
|
If DHF_Artikel.Delete_KD("K12345") Then
|
|
Console.WriteLine("Alle Artikel für Kunde gelöscht.")
|
|
Else
|
|
Console.WriteLine("Fehler beim Kundendaten-Löschen.")
|
|
End If
|
|
End Sub
|
|
End Class |