CBAM, VERAG CustomsDec

This commit is contained in:
2026-01-01 11:12:58 +01:00
parent ddb99e931d
commit 2187035214
6 changed files with 1051 additions and 892 deletions

View File

@@ -0,0 +1,230 @@
Imports System.Data.SqlClient
Imports System.Reflection
Public Class cGreendeal_CBAM_Trn
' =====================================================
' Properties = Spalten tblGreendeal_CBAM_Trn
' =====================================================
Public Property cbam_Id As Integer
Public Property trnPattern As String
Public Property ware As String
Public Property sektor As String
Public Property hinweis As String
Public Property is_exclusion As Boolean?
Public Property is_active As Boolean?
Public Property start_date As Date?
Public Property end_date As Date?
Public Property hasEntry As Boolean = False
Private SQL As New SQL
' =====================================================
' Konstruktor
' =====================================================
Sub New()
End Sub
Sub New(cbam_Id As Integer)
Me.cbam_Id = cbam_Id
LOAD()
End Sub
' =====================================================
' Parameterliste (Mapping Property <-> SQL)
' =====================================================
Public 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("cbam_Id", cbam_Id,, True))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("trnPattern", trnPattern))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ware", ware))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sektor", sektor))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("hinweis", hinweis))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("is_exclusion", is_exclusion))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("is_active", is_active))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("start_date", start_date))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("end_date", end_date))
Return list
End Function
' =====================================================
' SAVE (Insert / Update)
' =====================================================
Public Function SAVE() As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr As String =
" BEGIN TRAN " &
" IF EXISTS (SELECT 1 FROM tblGreendeal_CBAM_Trn WHERE cbam_Id=@cbam_Id) " &
" BEGIN " & getUpdateCmd() & " END " &
" ELSE " &
" BEGIN " & getInsertCmd() & " END " &
" COMMIT TRAN "
Return SQL.doSQLVarList(sqlstr, "VERAG", , list)
End Function
' =====================================================
' LOAD
' =====================================================
Public Sub LOAD()
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand(
"SELECT * FROM tblGreendeal_CBAM_Trn WHERE cbam_Id=@cbam_Id", conn)
cmd.Parameters.AddWithValue("@cbam_Id", cbam_Id)
Using dr = cmd.ExecuteReader()
If dr.Read Then
For Each li In getParameterList()
Dim pi As PropertyInfo =
Me.GetType.GetProperty(li.Scalarvariable)
If pi IsNot Nothing Then
If dr.Item(li.Text) Is DBNull.Value Then
pi.SetValue(Me, Nothing)
Else
pi.SetValue(Me, dr.Item(li.Text))
End If
End If
Next
hasEntry = True
End If
End Using
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
' =====================================================
' UPDATE Command
' =====================================================
Private Function getUpdateCmd() As String
Try
Dim list = getParameterList()
Dim str As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "] = @" & i.Scalarvariable & ","
End If
Next
str = str.Substring(0, str.Length - 1)
Return " UPDATE tblGreendeal_CBAM_Trn SET " & str &
" WHERE cbam_Id=@cbam_Id "
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(
ex.Message,
ex.StackTrace,
System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
' =====================================================
' INSERT Command
' =====================================================
Private Function getInsertCmd() As String
Try
Dim list = getParameterList()
Dim cols As String = ""
Dim vals As String = ""
For Each i In list
If Not i.isPrimaryParam Then
cols &= "[" & i.Text & "],"
vals &= "@" & i.Scalarvariable & ","
End If
Next
cols = cols.Substring(0, cols.Length - 1)
vals = vals.Substring(0, vals.Length - 1)
Return " INSERT INTO tblGreendeal_CBAM_Trn (" & cols & ") VALUES (" & vals & ") "
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(
ex.Message,
ex.StackTrace,
System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
Public Shared Function BuildCBAMPatternWhereClause(columnName As String, Optional onlyActive As Boolean = True, Optional includeExclusions As Boolean = False) As String
Dim sql As String =
"SELECT trnPattern " &
" FROM VERAG.dbo.tblGreendeal_CBAM_Trn " &
" WHERE trnPattern IS NOT NULL " &
" AND LTRIM(RTRIM(trnPattern)) <> '' "
If onlyActive Then
sql &= " AND is_active = 1 " &
" AND (start_date IS NULL OR start_date <= GETDATE()) " &
" AND (end_date IS NULL OR end_date >= GETDATE()) "
End If
If Not includeExclusions Then
sql &= " AND ISNULL(is_exclusion,0) = 0 "
End If
Dim dt As DataTable = (New VERAG_PROG_ALLGEMEIN.SQL).loadDgvBySql(sql, "FMZOLL")
If dt Is Nothing OrElse dt.Rows.Count = 0 Then
Return "1=0" ' bewusst: keine Patterns → kein Treffer
End If
Dim conditions As New List(Of String)
For Each r As DataRow In dt.Rows
Dim pattern As String = r("trnPattern").ToString().Trim()
' einfache SQL-Escaping-Sicherheit
pattern = pattern.Replace("'", "''")
conditions.Add($"{columnName} LIKE '{pattern}'")
Next
Return "(" & String.Join(" OR ", conditions) & ")"
End Function
Public Shared Function DELETE_ALL() As Boolean
Try
Dim sqlstr As String = " DELETE FROM tblGreendeal_CBAM_Trn "
Return (New VERAG_PROG_ALLGEMEIN.SQL).doSQL(sqlstr, "VERAG", , Nothing)
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(
ex.Message,
ex.StackTrace,
System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return False
End Function
End Class