This commit is contained in:
2026-01-13 15:29:00 +01:00
parent 84e9e86a4d
commit 283ba40d9c
5 changed files with 94 additions and 39 deletions

View File

@@ -285,7 +285,9 @@ Public Class cATEZ_Greenpulse_CBAM_CostCalculation
End Function
Public Shared Function calcCBAM_ByCertificatePrice(cn_code As String, weight As Object, country_code As String, certificate_price As Object, year As Object, Optional ByRef CBAM_COST As Decimal = -1, Optional ByRef CBAM_EMISSION As Decimal = -1) As String
Public Shared Function calcCBAM_ByCertificatePrice(cn_code As String, weight As Object, country_code As String, certificate_price As Object, year As Object, Optional ByRef CBAM_COST As Decimal = -1, Optional ByRef CBAM_EMISSION As Decimal = -1, Optional ByRef CBAM_BENCHMARK As Decimal = -1, Optional ByRef CBAM_Faktor As Decimal = -1) As String
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
' ------------------------------------------------------------
' Validierung
@@ -316,6 +318,7 @@ Public Class cATEZ_Greenpulse_CBAM_CostCalculation
' ------------------------------------------------------------
Dim api As New cATEZ_Greenpulse_CBAM_CostCalculation()
Dim see_total As Decimal
Dim benchmark As Decimal
Try
Dim defResp = api.GetCnCodeDefaults(
@@ -333,6 +336,7 @@ Public Class cATEZ_Greenpulse_CBAM_CostCalculation
End If
see_total = defResp.data.default_emission
benchmark = defResp.data.benchmark
Catch ex As Exception
Return "Technischer Fehler beim Laden der CN-Code Defaults: " & ex.Message
@@ -344,25 +348,52 @@ Public Class cATEZ_Greenpulse_CBAM_CostCalculation
Dim w As Decimal = CDec(weight)
Dim price As Decimal = CDec(certificate_price)
Dim cbamEmission As Decimal = w * see_total
Dim cbamCost As Decimal = cbamEmission * price
' ------------------------------------------------------------
' Ausgabe
' ------------------------------------------------------------
' --- Faktoren als echte Faktoren (nicht Prozent) ---
Dim cbamf As Decimal = 0D
Select Case CInt(year)
Case 2026 : cbamf = 0.975D
Case 2027 : cbamf = 0.95D
Case 2028 : cbamf = 0.9D
Case 2029 : cbamf = 0.775D
Case 2030 : cbamf = 0.515D
Case 2031 : cbamf = 0.39D
Case 2032 : cbamf = 0.265D
Case 2033 : cbamf = 0.14D
Case Else : cbamf = 0D
End Select
' SEFA = Benchmark * CBAMF * CSCF
Dim sefa As Decimal = benchmark * cbamf
' Zertifikatspflicht je Tonne Ware
Dim certPerTon As Decimal = see_total - sefa
If certPerTon < 0D Then certPerTon = 0D
' Gesamte Zertifikatspflicht (t CO2e)
Dim certTotal As Decimal = certPerTon * w
' Kosten
Dim cbamCost As Decimal = certTotal * price
' --- Ausgabe ---
Dim s As String = ""
s &= "CBAM Kostenberechnung (ohne Benchmark)" & vbCrLf
s &= "CBAM Kostenberechnung (Default EE mit SEFA-Abzug)" & vbCrLf
s &= "-----------------------------------------------------------" & vbCrLf
s &= $"CN-Code: {cn_code}" & vbCrLf
s &= $"Ursprungsland: {country_code.ToUpperInvariant()}" & vbCrLf
s &= $"Jahr: {year}" & vbCrLf
s &= $"Gewicht: {w:N2} t" & vbCrLf
s &= $"SEE total (Default): {see_total:N5}" & vbCrLf
s &= $"CBAM Emission: {cbamEmission:N5} t CO₂" & vbCrLf
s &= $"Zertifikatspreis: {price:N2} EUR/t" & vbCrLf
s &= vbCrLf
s &= $"CBAM Kosten: {cbamCost:N2} EUR" & vbCrLf
s &= $"EE / SEE total (Default): {see_total:N6} t CO₂e/t" & vbCrLf
s &= $"Benchmark BMg: {benchmark:N6} t CO₂e/t" & vbCrLf
s &= $"CBAMF: {cbamf:N3}"
Console.WriteLine(s)
CBAM_COST = cbamCost
CBAM_EMISSION = see_total
CBAM_BENCHMARK = benchmark
CBAM_Faktor = cbamf
Return s