Kundensicherheiten, CBAM-Rechner, etc.
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.Reflection
|
||||
Imports System.Runtime.InteropServices.ComTypes
|
||||
Imports System.Windows.Forms
|
||||
Imports com.sun.tools.javac.util
|
||||
Imports java.lang.ProcessBuilder
|
||||
Imports Org.BouncyCastle.Crypto.Agreement
|
||||
Imports sun.util.resources.cldr.aa
|
||||
Imports VERAG_PROG_ALLGEMEIN.TESTJSON
|
||||
|
||||
@@ -518,6 +520,9 @@ Public Class cVERAG_CustomsDeclarations
|
||||
End Function
|
||||
|
||||
Public Sub checkfreshCBAMWarning()
|
||||
|
||||
'TODO: die CBAM-Kosten pro Quartal berechnen und als "Bankgarantie" in die tblKundenSicherheiten schreiben/aktualisieren (wird aktuell noch händisch gemacht, Fehleranfällig und
|
||||
|
||||
Try
|
||||
Dim CBAM_ITEMS As New List(Of cVERAG_CustomsDeclarations_Item)
|
||||
|
||||
@@ -597,6 +602,10 @@ Public Class cVERAG_CustomsDeclarations
|
||||
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
|
||||
|
||||
Dim quarter As Integer = Math.Ceiling(dateCBAM.Month / 3.0)
|
||||
Dim Country As String = If(CBAM_ITEMS.FirstOrDefault()?.zaItem_OriginCountry, "")
|
||||
createOrUpdateKundenSicherheitseintrag(KD_IND, Country, vertretenerEORI, quarter, dateCBAM.Year)
|
||||
|
||||
|
||||
'Prüft, ob Vertrag vorliegt:
|
||||
Dim hasValidVertrag_CBAM As Boolean =
|
||||
@@ -679,6 +688,10 @@ Public Class cVERAG_CustomsDeclarations
|
||||
|
||||
Dim dateCBAM = If(If(za_ReleaseDate, za_DeclarationDate), Now)
|
||||
|
||||
Dim Country As String = If(CBAM_ITEMS.FirstOrDefault()?.zaItem_OriginCountry, "")
|
||||
Dim quarter As Integer = Math.Ceiling(dateCBAM.Month / 3.0)
|
||||
createOrUpdateKundenSicherheitseintrag(KD, Country, importerEORI, quarter, dateCBAM.Year)
|
||||
|
||||
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)) / 1000
|
||||
|
||||
@@ -807,6 +820,95 @@ Public Class cVERAG_CustomsDeclarations
|
||||
Return String.Join(", ", result)
|
||||
End Function
|
||||
|
||||
Private Function createOrUpdateKundenSicherheitseintrag(KUNDE As cKunde, ImportCountry As String, EORI As String, cbamQquarter As Integer, cbamYear As Integer)
|
||||
|
||||
Dim von As Date
|
||||
Dim bis As Date
|
||||
Dim CBAMZertifikatKosten As Double = 0
|
||||
|
||||
If ImportCountry = "" Then Return False
|
||||
|
||||
Select Case cbamQquarter
|
||||
Case "1"
|
||||
von = New Date(cbamYear, 1, 1)
|
||||
bis = New Date(cbamYear, 3, 31)
|
||||
CBAMZertifikatKosten = 75.36
|
||||
|
||||
Case "2"
|
||||
von = New Date(cbamYear, 4, 1)
|
||||
bis = New Date(cbamYear, 6, 30)
|
||||
CBAMZertifikatKosten = 75.28
|
||||
Case "3"
|
||||
von = New Date(cbamYear, 7, 1)
|
||||
bis = New Date(cbamYear, 9, 30)
|
||||
CBAMZertifikatKosten = 82.32
|
||||
|
||||
Case "4"
|
||||
von = New Date(cbamYear, 10, 1)
|
||||
bis = New Date(cbamYear, 12, 31)
|
||||
CBAMZertifikatKosten = 0
|
||||
End Select
|
||||
|
||||
Dim EORI_ = {EORI}
|
||||
|
||||
Dim LIST As List(Of VERAG_PROG_ALLGEMEIN.cVERAG_CustomsDeclarations) = VERAG_PROG_ALLGEMEIN.cVERAG_CustomsDeclarations.LOAD_List_CBAM(EORI_, ImportCountry, von, bis,, True)
|
||||
|
||||
|
||||
Dim grouped = From za In LIST
|
||||
Where za.Items IsNot Nothing
|
||||
From it In za.Items
|
||||
Let tarif = If(it.zaItem_HSCode IsNot Nothing AndAlso it.zaItem_HSCode.Length >= 8,
|
||||
it.zaItem_HSCode.Substring(0, 8),
|
||||
it.zaItem_HSCode)
|
||||
Let country = it.zaItem_OriginCountry
|
||||
Group By tarif, country
|
||||
Into grp = Group
|
||||
Select New With {
|
||||
.Tarif = tarif,
|
||||
.Country = country,
|
||||
.Eigenmasse = grp.Sum(Function(x) If(x.it.zaItem_NetMass, 0D)),
|
||||
.Rohmasse = grp.Sum(Function(x) If(x.it.zaItem_GrossMass, 0D)),
|
||||
.RechnungswertEUR = grp.Sum(Function(x) If(x.it.zaItem_InvoiceValueEUR, 0D))
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Dim gesamtBetrag As Double = 0
|
||||
Dim cost As Double = 0
|
||||
Dim emission As Double = 0
|
||||
Dim benchmark As Double = 0
|
||||
|
||||
|
||||
For Each r In grouped
|
||||
cATEZ_Greenpulse_CBAM_CostCalculation.calcCBAM_ByCertificatePrice(r.Tarif, r.Rohmasse, r.Country, CBAMZertifikatKosten, cbamYear, cost, emission, benchmark)
|
||||
gesamtBetrag += cost
|
||||
Next
|
||||
|
||||
|
||||
|
||||
Dim Kunde_Sicherheit As New cKundenSicherheiten(KUNDE.KundenNr, cbamQquarter, cbamYear)
|
||||
If Kunde_Sicherheit.hasEntry Then
|
||||
|
||||
Kunde_Sicherheit.sc_Betrag = gesamtBetrag
|
||||
KUNDE.SAVE()
|
||||
Else
|
||||
Kunde_Sicherheit.sc_Bemerkung = "EUR"
|
||||
Kunde_Sicherheit.sc_Bemerkung = "CBAM Kosten Q" & cbamQquarter & " " & cbamYear
|
||||
Kunde_Sicherheit.sc_Art = "BANKGARANTIE"
|
||||
Kunde_Sicherheit.sc_Betrag = gesamtBetrag
|
||||
Kunde_Sicherheit.sc_datum = Today()
|
||||
Kunde_Sicherheit.sc_Mitarbeiter = "AUTO"
|
||||
KUNDE.SAVE()
|
||||
End If
|
||||
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user