This commit is contained in:
2026-01-15 10:49:28 +01:00
committed by d.breimaier
parent 0e3299e219
commit f7206e90b9
12 changed files with 793 additions and 398 deletions

View File

@@ -52,6 +52,38 @@ Public Class cKundenVertraege
Public Shared Function LOAD_LIST(KundenNr As Integer) As DataTable
Return (New SQL).loadDgvBySql("SELECT [kv_Id],[kv_KundenNr],[kv_erhalten_Datum],[kv_vertragArtId],kva_Bezeichnung,[kv_Info],[kv_datenarchivId],[kv_datenarchivId_mail],[kv_gueltig],kv_gueltigBis_Datum FROM tblKundenVertraege INNER JOIN tblKundenVertraegeArten ON kv_vertragArtId=kva_id WHERE kv_KundenNr=" & KundenNr, "FMZOLL")
End Function
Public Shared Function LOAD_LISTOF(KundenNr As Integer) As List(Of cKundenVertraege)
Dim LIST As New List(Of cKundenVertraege)
Try
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("Select * FROM tblKundenVertraege WHERE kv_KundenNr=@KundenNr ", conn)
cmd.Parameters.AddWithValue("@KundenNr", KundenNr)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
Dim VERTR As New cKundenVertraege
For Each li In VERTR.getParameterList()
Dim propInfo As PropertyInfo = VERTR.GetType.GetProperty(li.Scalarvariable)
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(VERTR, Nothing)
Else
propInfo.SetValue(VERTR, dr.Item(li.Text))
End If
Next
VERTR.hasEntry = True
LIST.Add(VERTR)
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
Return List
End Function
Public Shared Function ENTRY_Exists(KundenNr As Integer, kv_vertragArtId As Integer) As Boolean
Return (CInt((New SQL).getValueTxtBySql("SELECT count(*) FROM tblKundenVertraege WHERE kv_KundenNr=" & KundenNr & " AND kv_vertragArtId='" & kv_vertragArtId & "'", "FMZOLL")) > 0)

View File

@@ -84,6 +84,9 @@ Public Class cVERAG_CustomsDeclarations
Public Property hasEntry As Boolean = False
Public Shared IMPORTER_ROLES As String() = {"CN", "IM", "IMP", "IMPORTER", "CONSIGNEE"}
Public Shared EXPORTER_ROLES As String() = {"CZ", "EX", "EXP", "EXPORTER", "CONSIGNOR"}
Public Shared DECLARANT_ROLES As String() = {"CB", "DT", "ANM", "DEC", "VERTRETER", "DEKLARANT", "DECLARANT"}
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
@@ -368,12 +371,12 @@ Public Class cVERAG_CustomsDeclarations
If hasCBAM(CBAM_ITEMS) Then
Dim vertreterEORI As String = Me.Parties.Where(Function(p) {"CB", "DT", "VERTRETER", "DEKLARANT", "DECLARANT"}.Contains(p.zaParty_Role)).Select(Function(p) p.zaParty_EORI).FirstOrDefault()
Dim vertretenerEORI As String = Nothing 'Me.Parties.Where(Function(p) {"CN", "IM", "IMP", "IMPORTER"}.Contains(p.zaParty_Role)).Select(Function(p) p.zaParty_EORI).FirstOrDefault()
Dim importerEORI As String = Me.Parties.Where(Function(p) {"CN", "IM", "IMP", "IMPORTER", "CONSIGNEE"}.Contains(p.zaParty_Role)).Select(Function(p) p.zaParty_EORI).FirstOrDefault()
Dim ImporterString As String = Me.Parties.Where(Function(p) {"CN", "IM", "IMP", "IMPORTER", "CONSIGNEE"}.Contains(p.zaParty_Role)).Select(Function(p) p.zaParty_Name).FirstOrDefault()
Dim ExporterEORI As String = Me.Parties.Where(Function(p) {"CZ", "EX", "EXP", "EXPORTER", "CONSIGNOR"}.Contains(p.zaParty_Role)).Select(Function(p) p.zaParty_EORI).FirstOrDefault()
Dim ExporterString As String = Me.Parties.Where(Function(p) {"CZ", "EX", "EXP", "EXPORTER", "CONSIGNOR"}.Contains(p.zaParty_Role)).Select(Function(p) p.zaParty_Name).FirstOrDefault()
Dim vertreterEORI As String = Me.Parties.Where(Function(p) DECLARANT_ROLES.Contains(p.zaParty_Role)).Select(Function(p) p.zaParty_EORI).FirstOrDefault()
Dim vertreterString As String = Me.Parties.Where(Function(p) DECLARANT_ROLES.Contains(p.zaParty_Role)).Select(Function(p) p.zaParty_Name).FirstOrDefault()
Dim importerEORI As String = Me.Parties.Where(Function(p) IMPORTER_ROLES.Contains(p.zaParty_Role)).Select(Function(p) p.zaParty_EORI).FirstOrDefault()
Dim ImporterString As String = Me.Parties.Where(Function(p) IMPORTER_ROLES.Contains(p.zaParty_Role)).Select(Function(p) p.zaParty_Name).FirstOrDefault()
Dim ExporterEORI As String = Me.Parties.Where(Function(p) EXPORTER_ROLES.Contains(p.zaParty_Role)).Select(Function(p) p.zaParty_EORI).FirstOrDefault()
Dim ExporterString As String = Me.Parties.Where(Function(p) EXPORTER_ROLES.Contains(p.zaParty_Role)).Select(Function(p) p.zaParty_Name).FirstOrDefault()
Dim KD As cKunde = Nothing
Dim AD As cAdressen = Nothing
@@ -403,7 +406,32 @@ Public Class cVERAG_CustomsDeclarations
If isIndirect() Then
Dim EORI_IND = If(vertretenerEORI IsNot Nothing, vertretenerEORI, If(importerEORI IsNot Nothing, importerEORI, ExporterEORI))
Dim vertretenerEORI = ""
Dim vertretenerString = ""
If importerEORI IsNot Nothing Then
vertretenerEORI = importerEORI
vertretenerString = ImporterString
Else
vertretenerEORI = ExporterEORI
vertretenerString = ExporterString
End If
Dim KD_IND As cKunde = Nothing
Dim AD_IND As cAdressen = Nothing
Dim ERW_IND As cKundenErweitert = Nothing
Dim VERTR_IND As List(Of cKundenVertraege) = Nothing
If If(ExporterEORI, "") <> "" Then
KD_IND = cKunde.LOAD_ByEORI(ExporterEORI, If(za_Firma, ""))
If KD_IND Is Nothing Then KD_IND = cKunde.LOAD_ByEORI(ExporterEORI) 'Wenn kein Kunde mit Firma gefunden wurde, nur nach EORI suchen (default VERAG)
AD_IND = New cAdressen(KD_IND.KundenNr)
End If
If AD_IND IsNot Nothing Then
vertretenerString = AD_IND.Name_1 & " " & If(AD_IND.Name_2, "") & "<br/>" & If(AD_IND.LandKz, "") & " " & If(AD_IND.PLZ, "") & " " & If(AD_IND.Ort, "")
ERW_IND = New cKundenErweitert(AD.AdressenNr)
VERTR_IND = cKundenVertraege.LOAD_LISTOF(AD.AdressenNr)
End If
'==================>> INDIRECT <<=========================
Dim itemsHtml As String =
@@ -414,6 +442,27 @@ Public Class cVERAG_CustomsDeclarations
"</tr>"
))
Dim dateCBAM = If(If(za_ReleaseDate, za_DeclarationDate), Now)
Dim eigenmasseSumme_YEAR As Decimal = getCBAM_KG(vertretenerEORI, CDate("01.01." & dateCBAM.Year), CDate("31.12." & dateCBAM.Year), za_MRN) / 1000
'Prüft, ob Vertrag vorliegt:
Dim hasValidVertrag_CBAM As Boolean =
VERTR_IND.Any(Function(v) _
v.kv_vertragArtId = 8 AndAlso
v.kv_gueltig AndAlso
(Not v.kv_gueltigBis_Datum.HasValue OrElse
v.kv_gueltigBis_Datum.Value.Date <= dateCBAM)
)
Dim vertragHinweisHtml As String =
If(Not hasValidVertrag_CBAM,
"<div style='margin:15px 0; padding:12px; border:2px solid #b00020; " &
"background-color:#fdeaea; color:#b00020; font-weight:bold; font-size:13pt'>" &
"⚠️ ACHTUNG: Es liegt kein gültiger CBAM-Vertrag vor!" &
"</div>",
"")
Dim bodyHtml As String =
"<html><body style='font-family:Segoe UI, Arial, sans-serif; font-size:12pt; color:#222'>" &
"<h2 style='color:#b00020'>CBAM-Warnmeldung bei Zollanmeldung " & Me.za_MRN & "</h2>" &
@@ -421,6 +470,7 @@ Public Class cVERAG_CustomsDeclarations
"Bei der Zollanmeldung mit der MRN <b>" & Me.za_MRN & "</b> wurden CBAM-relevante Warenpositionen erkannt.<br/>" &
"Bitte prüfen Sie diese Anmeldung im Hinblick auf die CBAM-Meldepflicht." &
"</p>" &
vertragHinweisHtml & ' <<< HIER die Einblendung abhängig von vertrag99
"<h3>Erkannte CBAM-Positionen</h3>" &
"<table cellpadding='6' cellspacing='0' border='1' style='border-collapse:collapse; width:100%'>" &
"<tr style='background-color:#f0f0f0'>" &
@@ -430,15 +480,21 @@ Public Class cVERAG_CustomsDeclarations
"</tr>" &
itemsHtml &
"</table>" &
"<p>" &
"<p>" &
"<b>Ind.Vertreter:</b><br/>" &
If(vertreterEORI, "") & "<br>" & If(vertreterString, "") &
"</p>" &
"<p>" &
"<b>Kunde:</b><br/>" &
If(vertretenerEORI, "") & "<br>" & If(vertretenerString, "") &
"</p>" &
"<p>" &
"<b>Importeur:</b><br/>" &
If(importerEORI, "") & "<br>" & If(ImporterString, "") &
"</p>" &
"<p>" &
"<p>" &
"<b>Exporteur:</b><br/>" &
If(ExporterEORI, "") & " " & vbNewLine &
If(AD_EX Is Nothing, ExporterString, AD_EX.Name_1 & " " & If(AD_EX.Name_2, "") & "<br/>" &
If(AD_EX.LandKz, "") & " " & If(AD_EX.PLZ, "") & " " & If(AD_EX.Ort, "")) &
If(ExporterEORI, "") & "<br>" & If(ExporterString, "") &
"</p>" &
"<br/><p><b>VERAG CBAM Compliance Services</b></p>" &
"</body></html>"
@@ -466,7 +522,7 @@ Public Class cVERAG_CustomsDeclarations
Dim dateCBAM = If(If(za_ReleaseDate, za_DeclarationDate), Now)
Dim eigenmasseSumme_Shipment As Decimal = CBAM_ITEMS.Sum(Function(i) If(i.zaItem_NetMass, 0D)) / 1000
Dim eigenmasseSumme_YEAR As Decimal = getCBAM_KG(importerEORI, CDate("01.01." & dateCBAM.Year), CDate("31.12." & dateCBAM.Year), za_MRN) / 1000
Dim eigenmasseSumme_YEAR As Decimal = getCBAM_KG(importerEORI, CDate("01.01." & dateCBAM.Year), CDate("31.12." & dateCBAM.Year)) / 1000
Dim WarnLevel As String = ""
Dim Schwellenwert As Decimal = 0
@@ -572,8 +628,9 @@ Public Class cVERAG_CustomsDeclarations
End Sub
Public Function getCBAM_KG(EORI As String, von As Date, bis As Date, Optional without_MRN As String = "") As Decimal
Public Function getCBAM_KG(EORI As String, von As Date, bis As Date, Optional without_MRN As String = "", Optional isDeclarant As Boolean = False) As Decimal
Try
If EORI = "" Then Return 0
Dim sqlstr = "SELECT SUM(i.zaItem_NetMass) AS CBAM_Eigenmasse_kg
FROM VERAG.dbo.tblVERAG_CustomsDeclarations_Items i
JOIN VERAG.dbo.tblVERAG_CustomsDeclarations z
@@ -582,7 +639,9 @@ Public Class cVERAG_CustomsDeclarations
JOIN VERAG.dbo.tblVERAG_CustomsDeclarations_Parties p
ON p.zaParty_zaId = z.za_Id
AND p.zaParty_EORI = '" & EORI & "'
AND p.zaParty_Role IN ('CN','IM','IMP','IMPORTER')
" & If(isDeclarant, "AND (p.zaParty_Role IN ('CB','DT','DEKLARANT','DECLARANT') ",
" AND (p.zaParty_Role IN ('CN','IM','IMP','IMPORTER','CONSIGNEE') OR
p.zaParty_Role IN ('CZ','EX','EXP','EXPORTER','CONSIGNOR'))") & "
WHERE z.za_ReleaseDate BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "'
AND EXISTS (