DHF Artikelstamm

This commit is contained in:
2025-08-05 21:39:06 +02:00
parent 0f98cbcc8b
commit 2760a44ed7
13 changed files with 841 additions and 86 deletions

View File

@@ -1,4 +1,6 @@
Imports System.Data.SqlClient
Imports System.Reflection
Imports com.sun.org.apache.xml.internal.security.transforms
Imports DocumentFormat.OpenXml.Bibliography
Public Class SQL
@@ -545,6 +547,54 @@ Public Class SQL
Return Nothing
End Function
Public Function GetNewOpenConnection(conn_art) As SqlConnection
Dim conn As New SqlConnection
Select Case conn_art
Case "SDL" : conn = GetNewOpenConnectionSDL()
Case "FMZOLL" : conn = GetNewOpenConnectionFMZOLL()
Case "ADMIN" : conn = GetNewOpenConnectionADMIN()
Case "ASFINAG" : conn = GetNewOpenConnectionAsfinag()
Case "DISPO" : conn = GetNewOpenConnectionDISPO()
Case "ATLAS" : conn = GetNewOpenConnectionATLAS()
Case "ATLAS_SBG" : conn = GetNewOpenConnectionATLAS_SBG()
Case "EZOLL" : conn = GetNewOpenConnectionEZOLL()
Case "EZOLL_UNISPED" : conn = GetNewOpenConnectionEZOLL_UNISPED()
Case "AVISO" : conn = GetNewOpenConnectionAVISO()
Case "VERAG" : conn = GetNewOpenConnectionFMZOLL()
Case "FD" : conn = GetNewOpenConnectionFD()
Case "WEB" : conn = GetNewOpenConnectionWEB()
Case "FIBU", "SYSKA" : conn = GetNewOpenConnectionSYSKA()
Case "PARKZEIT" : conn = GetNewOpenConnectionPARKZEIT()
Case "AVISO_ATILLA"
conn.ConnectionString = "Data Source=172.16.0.98;Initial Catalog=AVISO_ATILLA;Integrated Security=false;User ID=sa;Password=BmWr501956;Pooling=true;Min Pool Size=5;Max Pool Size=200"
conn.Open()
End Select
Return conn
End Function
Public Function GetScalarValue(sql As String, conn_art As String, params As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)) As Integer
Try
Using conn As SqlConnection = GetNewOpenConnection(conn_art)
Using cmd As New SqlCommand(sql, conn)
For Each p In params
cmd.Parameters.AddWithValue("@" & p.Scalarvariable, If(p.Value, DBNull.Value))
Next
Dim result = cmd.ExecuteScalar()
If result Is Nothing OrElse result Is DBNull.Value Then
Return 0
Else
Return Convert.ToInt32(result)
End If
End Using
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Fehler in GetScalarValue: " & ex.Message, ex.StackTrace, MethodBase.GetCurrentMethod().Name)
Return 0
End Try
End Function
Public Function loadDgvBySql(ByVal sql As String, Optional conn_art As String = "SDL", Optional timeout As Integer = 0, Optional showerror As Boolean = True) As DataTable
Try
Dim myTable = New DataTable()
@@ -867,10 +917,27 @@ Public Class SQL
Case "PARKZEIT" : conn = GetNewOpenConnectionPARKZEIT()
End Select
Try
' MsgBox(sql)
Using cmd As New SqlCommand(sql, conn)
If list IsNot Nothing Then
For Each i In list
If String.IsNullOrWhiteSpace(i.Scalarvariable) Then
Throw New Exception("❌ Leerer Parametername in SQLVariable!")
End If
If i.Scalarvariable.ToLower = "errno" Then
Throw New Exception("❌ Ungültiger Parametername 'errno' bitte umbenennen.")
End If
If Not System.Text.RegularExpressions.Regex.IsMatch(i.Scalarvariable, "^[a-zA-Z0-9_]+$") Then
Throw New Exception("❌ Ungültiger SQL-Parametername (Regex): '" & i.Scalarvariable & "'")
End If
'MsgBox(i.Text.trim & " " & IIf(i.Value Is Nothing, DBNull.Value, i.Value))
cmd.Parameters.AddWithValue("@" & i.Scalarvariable.trim, IIf(i.Value Is Nothing, DBNull.Value, i.Value))
Next
@@ -881,7 +948,13 @@ Public Class SQL
Return True
Catch ex As Exception
' MsgBox("ERR!")
If showErr Then VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name, , , , , sql)
If ex.Message.Contains("Falsche Syntax in der Nähe von '@errno'") Then
' Spezielle Behandlung für den Fehler mit dem Parameter 'errno'
'VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("❌ Ungültiger SQL-Parametername 'errno' bitte umbenennen.", ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name, , , , , sql)
ElseIf ex.Message.Contains("Leerer Parametername") Then
If showErr Then VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name, , , , , sql)
End If
End Try
Return False
End Function

View File

@@ -61,7 +61,96 @@ Public Class MyListItem2
End Class
'Public Class SQLVariable
' Private ReadOnly TextSQLName As String
' Private ReadOnly ValueSQLVALUE As Object
' Private ReadOnly ScalarvariablenameIntern As String
' Private ReadOnly primaryParam As Boolean
' Private ReadOnly onlyForLoad As Boolean
' Private ReadOnly onlyForSave As Boolean
' ''' <summary>
' ''' Erstellt eine neue SQLVariable für Parameterübergaben an SQL-Befehle.
' ''' </summary>
' ''' <param name="Text">Spaltenname in der Datenbank</param>
' ''' <param name="Value">Wert, der gespeichert oder gelesen werden soll</param>
' ''' <param name="Scalarvariablename">Parametername für SQL-Bindung (optional, sonst = Text)</param>
' ''' <param name="primaryParam">Kennzeichnet Primärschlüssel für WHERE-Klausel</param>
' ''' <param name="onlyForLoad">Wird nur beim Laden verwendet</param>
' ''' <param name="onlyForSave">Wird nur beim Speichern verwendet</param>
' Public Sub New(ByVal Text As String,
' ByVal Value As Object,
' Optional Scalarvariablename As String = "",
' Optional primaryParam As Boolean = False,
' Optional onlyForLoad As Boolean = False,
' Optional onlyForSave As Boolean = False)
' If String.IsNullOrWhiteSpace(Text) Then
' Throw New ArgumentException("❌ SQLVariable: Text darf nicht leer sein!")
' End If
' Me.TextSQLName = Text
' Me.ValueSQLVALUE = Value
' Me.primaryParam = primaryParam
' Me.onlyForLoad = onlyForLoad
' Me.onlyForSave = onlyForSave
' Me.ScalarvariablenameIntern = If(String.IsNullOrWhiteSpace(Scalarvariablename), Text, Scalarvariablename)
' End Sub
' ''' <summary>
' ''' Name der SQL-Spalte
' ''' </summary>
' Public ReadOnly Property Text() As String
' Get
' Return TextSQLName
' End Get
' End Property
' ''' <summary>
' ''' Wert der SQL-Spalte
' ''' </summary>
' Public ReadOnly Property Value() As Object
' Get
' Return ValueSQLVALUE
' End Get
' End Property
' ''' <summary>
' ''' Parametername für die SQL-Zuweisung (z.B. @Bezeichnung)
' ''' </summary>
' Public ReadOnly Property Scalarvariable() As String
' Get
' Return ScalarvariablenameIntern
' End Get
' End Property
' ''' <summary>
' ''' True, wenn es sich um einen Primärschlüssel handelt
' ''' </summary>
' Public ReadOnly Property isPrimaryParam() As Boolean
' Get
' Return primaryParam
' End Get
' End Property
' ''' <summary>
' ''' True, wenn nur für Lade-Operationen verwenden
' ''' </summary>
' Public ReadOnly Property isOnlyForLoad() As Boolean
' Get
' Return onlyForLoad
' End Get
' End Property
' ''' <summary>
' ''' True, wenn nur für Speicher-Operationen verwenden
' ''' </summary>
' Public ReadOnly Property isOnlyForSave() As Boolean
' Get
' Return onlyForSave
' End Get
' End Property
'End Class
Public Class SQLVariable
Private TextSQLName As String

View File

@@ -24,6 +24,7 @@ Public Class cZollArtikel
Property zollArt_Besondere_Maßeinheit_Qualifikator As Object = Nothing
Property zollArt_Gewicht As Object = Nothing
Property zollArt_Menge As Object = Nothing
Property zollArt_Ursprungsland As Object = Nothing
Property Erfassungsdatum As Object = Nothing
Property Aenderungsdatum As Object = Nothing
Property Sachbearbeiter As Object = Nothing
@@ -67,6 +68,7 @@ Public Class cZollArtikel
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Besondere_Maßeinheit_Qualifikator", zollArt_Besondere_Maßeinheit_Qualifikator))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Gewicht", zollArt_Gewicht))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Menge", zollArt_Menge))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zollArt_Ursprungsland", zollArt_Ursprungsland))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Erfassungsdatum", Erfassungsdatum))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Aenderungsdatum", Aenderungsdatum))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachbearbeiter", Sachbearbeiter))
@@ -81,7 +83,7 @@ Public Class cZollArtikel
Public Function SAVE(Optional errHinweis = "") As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblZollArtikel WHERE zollArt_id=@zollArt_id) " &
Dim sqlstr = " BEGIN TRAN If EXISTS(Select * FROM tblZollArtikel WHERE zollArt_id=@zollArt_id) " &
" BEGIN " & getUpdateCmd() & " End " &
" Else " &
" BEGIN " & getInsertCmd() & " End " &
@@ -170,4 +172,32 @@ Public Class cZollArtikel
Dim sqlstr = " DELETE FROM tblZollArtikel WHERE zollArt_id=" & id
Return SQL.doSQL(sqlstr, "FMZOLL")
End Function
Public Shared Function GetListByKundenNr(kdnr As Integer) As List(Of cZollArtikel)
Dim result As New List(Of cZollArtikel)
Dim SQL As New SQL
Try
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblZollArtikel WHERE KundenNr = @kdnr", conn)
cmd.Parameters.AddWithValue("@kdnr", kdnr)
Using dr = cmd.ExecuteReader()
While dr.Read()
Dim item As New cZollArtikel()
For Each prop In GetType(cZollArtikel).GetProperties()
prop.SetValue(item, dr(prop.Name))
Next
item.hasEntry = True
result.Add(item)
End While
End Using
End Using
End Using
Catch ex As Exception
MsgBox("Fehler in der Funktion '" & MethodBase.GetCurrentMethod.Name & "'" & vbNewLine &
ex.Message & vbNewLine & ex.StackTrace)
End Try
Return result
End Function
End Class

View File

@@ -0,0 +1,299 @@
Imports System.Reflection
Imports System.Data.SqlClient
' ========================
' 📦 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())
For Each tarif In ArtikelTarife
tarif.LizenzNr = LizenzNr
tarif.FremdAdressID = FremdAdressID
tarif.FremdKennung = FremdKennung
tarif.ArtikelCode = ArtikelCode
tarif.Save()
Next
Return result
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(KdNr As String) As Boolean
Dim db As New DHF_DBHelper
db.DeleteByFremdAdressID("imArtikelTarifZucodes", KdNr)
db.DeleteByFremdAdressID("imArtikelTarif", KdNr)
Return db.DeleteByFremdAdressID("imArtikel", KdNr)
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 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 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) As Boolean
Dim sqlstr = "DELETE FROM [" & tableName & "] WHERE [FremdAdressID]=@FID"
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) From {
New VERAG_PROG_ALLGEMEIN.SQLVariable("FID", fremdAdressID)
}
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)
MsgBox("del")
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

View File

@@ -374,6 +374,7 @@
<Compile Include="Schnittstellen\BZST\cBZST_UID_XML.vb" />
<Compile Include="Schnittstellen\BZST\cBZST_UID.vb" />
<Compile Include="Schnittstellen\cHMRC.vb" />
<Compile Include="Schnittstellen\DHF\cDHF_Artikel.vb" />
<Compile Include="Schnittstellen\TELOTEC\cTelotecAPI.vb" />
<Compile Include="Schnittstellen\HMRC\cHMRCToken.vb" />
<Compile Include="Classes\cKundenAufschubkonten.vb" />