VK CBAM
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user