This commit is contained in:
2026-03-31 10:21:44 +02:00
parent 6017b7190d
commit 673862286f
8 changed files with 969 additions and 3 deletions

View File

@@ -2631,6 +2631,16 @@ Namespace My.Resources
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ System.Byte[].
'''</summary>
Friend ReadOnly Property VERAG_CBAM_Report_Template() As Byte()
Get
Dim obj As Object = ResourceManager.GetObject("VERAG_CBAM_Report_Template", resourceCulture)
Return CType(obj,Byte())
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
'''</summary>

View File

@@ -973,4 +973,7 @@
<data name="ambar_boarder_new" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ambar_boarder_new.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="VERAG_CBAM_Report_Template" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\VERAG_CBAM_Report_Template.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

Binary file not shown.

View File

@@ -4956,6 +4956,7 @@
</None>
<None Include="Resources\SR_EVOLOG.xlsx" />
<None Include="Resources\SR_TransFerry360.xlsx" />
<None Include="Resources\VERAG_CBAM_Report_Template.xlsx" />
<None Include="Resources\Zoll\EORI_UID.dotx">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>

View File

@@ -2249,7 +2249,8 @@ Public Class usrCntlCBAM
doVERAG_SUM(LIST, EORI(0))
doVERAG_DETAIL(LIST, EORI(0))
doVERAG_DETAIL_OLD(LIST, EORI(0))
'doVERAG_DETAIL(LIST, EORI(0))
If cbxVERAG_GPXLS.Checked Then doVERAG_GREENPULSE_XLS(LIST, EORI(0))
@@ -2410,7 +2411,342 @@ Public Class usrCntlCBAM
End Try
End Sub
Sub doVERAG_DETAIL(LIST As List(Of VERAG_PROG_ALLGEMEIN.cVERAG_CustomsDeclarations), EORI As String)
Public Sub doVERAG_DETAIL(LIST As List(Of VERAG_PROG_ALLGEMEIN.cVERAG_CustomsDeclarations), EORI As String)
btnCBAM_DS_VERAG_Detail.Enabled = False
btnCBAM_DS_VERAG_Detail.Tag = ""
Try
' =========================================================
' Daten holen
' =========================================================
Dim details =
From za In LIST
From it In za.Items
Let importer = za.Parties.
FirstOrDefault(Function(p) cVERAG_CustomsDeclarations.IMPORTER_ROLES.Contains(p.zaParty_Role))
Let exporter = za.Parties.
FirstOrDefault(Function(p) cVERAG_CustomsDeclarations.EXPORTER_ROLES.Contains(p.zaParty_Role))
Let declarant = za.Parties.
FirstOrDefault(Function(p) cVERAG_CustomsDeclarations.DECLARANT_ROLES.Contains(p.zaParty_Role))
Let cbamDeclarantTmp = za.Parties.
FirstOrDefault(Function(p) p.zaParty_Role = "CBAM")
Let cbamDeclarant = If(cbamDeclarantTmp, declarant)
Let invoice =
it.Documents.FirstOrDefault(Function(d) d.zaDoc_Code = "N380" OrElse d.zaDoc_Code = "N325")
Let anmeldedatum = If(za.za_ReleaseDate, za.za_DeclarationDate)
Order By anmeldedatum
Select New With {
.MRN = If(za.za_MRN, ""),
.SendungsId = za.za_SendungsId,
.PositionsNummer = it.zaItem_PosNo,
.Anmeldedatum = anmeldedatum,
.BezugsNr = If(za.za_LRN, ""),
.VertretungsVerhaeltnis = If(za.za_RepresentationCode, ""),
.Tarifnummer = If(LeftStr(it.zaItem_HSCode, 8), ""),
.Eigenmasse = it.zaItem_NetMass,
.Rohmasse = it.zaItem_GrossMass,
.Ursprungsland = If(it.zaItem_OriginCountry, ""),
.VersendungsLand = If(za.za_CountryDispatch, ""),
.BestimmungsLand = If(za.za_CountryDestination, ""),
.Rechnungspreis = If(it.zaItem_InvoiceValueEUR, it.zaItem_StatisticalValueEUR),
.Rechnungswaehrung = If(it.zaItem_InvoiceCurrency, ""),
.EmpfaengerEORI = If(importer IsNot Nothing, If(importer.zaParty_EORI, ""), ""),
.Empfaenger = If(importer IsNot Nothing, If(importer.zaParty_Name, ""), ""),
.AbsenderEORI = If(exporter IsNot Nothing, If(exporter.zaParty_EORI, ""), ""),
.Absender = If(exporter IsNot Nothing, If(exporter.zaParty_Name, ""), ""),
.DeclarantEORI = If(declarant IsNot Nothing, If(declarant.zaParty_EORI, ""), ""),
.DeclarantName = If(declarant IsNot Nothing, If(declarant.zaParty_Name, ""), ""),
.CBAMDeclarantEORI = If(cbamDeclarant IsNot Nothing, If(cbamDeclarant.zaParty_EORI, ""), ""),
.CBAMDeclarantName = If(cbamDeclarant IsNot Nothing, If(cbamDeclarant.zaParty_Name, ""), ""),
.Rechnungsnummer = If(invoice IsNot Nothing, If(invoice.zaDoc_Reference, ""), ""),
.Rechnungsdatum = If(invoice IsNot Nothing, ParseDateSafe(invoice.zaDoc_Date), Nothing),
.RequestedProcedure = If(za.za_MainProcedure, ""),
.PreviousProcedure = If(it.zaItem_PrevProcedure, ""),
.MeasurementUnit = If(it.zaItem_SuppUnitCode, "")
}
' =========================================================
' DataTable exakt nach Excel-Template
' =========================================================
Dim dt As New DataTable
dt.Columns.Add("MRN")
dt.Columns.Add("position_no")
dt.Columns.Add("declaration_date")
dt.Columns.Add("reference_no")
dt.Columns.Add("customer_reference")
dt.Columns.Add("representation_type")
dt.Columns.Add("tariff_code")
dt.Columns.Add("net_mass_kg")
dt.Columns.Add("gross_mass_kg")
dt.Columns.Add("origin_country")
dt.Columns.Add("dispatch_country")
dt.Columns.Add("destination_country")
dt.Columns.Add("invoice_number")
dt.Columns.Add("invoice_date")
dt.Columns.Add("invoice_amount")
dt.Columns.Add("invoice_currency")
dt.Columns.Add("sender_eori")
dt.Columns.Add("sender_name")
dt.Columns.Add("sender_address")
dt.Columns.Add("sender_country")
dt.Columns.Add("recipient_eori")
dt.Columns.Add("recipient_name")
dt.Columns.Add("recipient_address")
dt.Columns.Add("recipient_country")
dt.Columns.Add("importer_eori")
dt.Columns.Add("importer_name")
dt.Columns.Add("importer_address")
dt.Columns.Add("importer_country")
dt.Columns.Add("importer_email")
dt.Columns.Add("importer_phone")
dt.Columns.Add("declarant_eori")
dt.Columns.Add("declarant_name")
dt.Columns.Add("declarant_address")
dt.Columns.Add("declarant_country")
dt.Columns.Add("requested_procedure")
dt.Columns.Add("previous_procedure")
dt.Columns.Add("measurement_unit")
dt.Columns.Add("member_state_authorisation")
dt.Columns.Add("discharge_bill_waiver")
dt.Columns.Add("authorisation")
dt.Columns.Add("inward_processing_start")
dt.Columns.Add("inward_processing_end")
dt.Columns.Add("inward_processing_deadline")
dt.Columns.Add("Benchmark (Default)")
dt.Columns.Add("Emission (Default)")
dt.Columns.Add("Factor")
dt.Columns.Add("Estimated Cost")
' =========================================================
' Befüllen
' =========================================================
For Each r In details
Dim KdAtrNr As String = ""
If cbxKdAtrNr.Checked AndAlso r.SendungsId IsNot Nothing Then
Dim Snd = New VERAG_PROG_ALLGEMEIN.cSendungen(r.SendungsId)
If Snd IsNot Nothing Then
KdAtrNr = Snd.getKdAtrNr("AUFTRAGGEBER")
If KdAtrNr = "" Then
KdAtrNr = Snd.getKdAtrNr("EMPFAENGER")
End If
End If
If EORI = "DE4991397" AndAlso KdAtrNr.Contains("/") Then
KdAtrNr = KdAtrNr.Split("/"c)(0)
End If
End If
Dim benchmark As Object = Nothing
Dim emission As Object = Nothing
Dim faktor As Object = Nothing
Dim weight = r.Eigenmasse
Dim year = If(txtBis._value <> "", CDate(txtBis._value).Year, Now.Year)
Dim cost As String = "0"
If cbxKosten.Checked Then
Dim benchmarkObj As Object = Nothing
Dim emissionObj As Object = Nothing
Dim faktorObj As Object = Nothing
Dim costObj As String = "0"
' Dim weight = 0D
If IsNumeric(r.Eigenmasse) Then weight = CDbl(r.Eigenmasse)
'Dim year = If(txtBis._value <> "", CDate(txtBis._value).Year, Now.Year)
If IsNumeric(txtVERA_ZertPreis._value) Then
cATEZ_Greenpulse_CBAM_CostCalculation.calcCBAM_ByCertificatePrice(
cn_code:=Convert.ToString(r.Tarifnummer),
weight:=weight / 1000,
country_code:=Convert.ToString(r.Ursprungsland),
certificate_price:=CDbl(txtVERA_ZertPreis._value),
year:=year,
costObj,
emissionObj,
benchmarkObj,
faktorObj
)
Else
cATEZ_Greenpulse_CBAM_CostCalculation.calcCBAM(
cn_code:=Convert.ToString(r.Tarifnummer),
weight:=weight / 1000,
country_code:=Convert.ToString(r.Ursprungsland),
Nothing,
year:=year,
Nothing,
costObj,
emissionObj,
benchmarkObj,
faktorObj
)
End If
benchmark = If(benchmarkObj Is Nothing, "", Convert.ToString(benchmarkObj))
emission = If(emissionObj Is Nothing, "", Convert.ToString(emissionObj))
faktor = If(faktorObj Is Nothing, "", Convert.ToString(faktorObj))
If IsNumeric(costObj) Then
If CDbl(costObj) >= 0 Then
cost = Convert.ToString(costObj)
Else
cost = ""
End If
Else
cost = ""
End If
End If
Dim row = dt.NewRow()
row("MRN") = If(r.MRN, "")
row("position_no") = r.PositionsNummer
row("declaration_date") = If(r.Anmeldedatum Is Nothing, "", CDate(r.Anmeldedatum).ToString("yyyy-MM-dd"))
row("reference_no") = If(r.BezugsNr, "")
row("customer_reference") = If(KdAtrNr, "")
row("representation_type") = If(r.VertretungsVerhaeltnis, "")
row("tariff_code") = If(r.Tarifnummer, "")
row("net_mass_kg") = If(r.Eigenmasse Is Nothing, "", Convert.ToString(r.Eigenmasse))
row("gross_mass_kg") = If(r.Rohmasse Is Nothing, "", Convert.ToString(r.Rohmasse))
row("origin_country") = If(r.Ursprungsland, "")
row("dispatch_country") = If(r.VersendungsLand, "")
row("destination_country") = If(r.BestimmungsLand, "")
row("invoice_number") = If(r.Rechnungsnummer, "")
row("invoice_date") = If(r.Rechnungsdatum Is Nothing, "", CDate(r.Rechnungsdatum).ToString("yyyy-MM-dd"))
row("invoice_amount") = If(r.Rechnungspreis Is Nothing, "", Convert.ToString(r.Rechnungspreis))
row("invoice_currency") = If(r.Rechnungswaehrung, "")
row("sender_eori") = If(r.AbsenderEORI, "")
row("sender_name") = If(r.Absender, "")
row("sender_address") = ""
row("sender_country") = ""
row("recipient_eori") = If(r.EmpfaengerEORI, "")
row("recipient_name") = If(r.Empfaenger, "")
row("recipient_address") = ""
row("recipient_country") = ""
row("importer_eori") = If(r.EmpfaengerEORI, "")
row("importer_name") = If(r.Empfaenger, "")
row("importer_address") = ""
row("importer_country") = ""
row("importer_email") = ""
row("importer_phone") = ""
row("declarant_eori") = If(r.DeclarantEORI, "")
row("declarant_name") = If(r.DeclarantName, "")
row("declarant_address") = ""
row("declarant_country") = ""
row("requested_procedure") = If(r.RequestedProcedure, "")
row("previous_procedure") = If(r.PreviousProcedure, "")
row("measurement_unit") = If(r.MeasurementUnit, "")
row("member_state_authorisation") = ""
row("discharge_bill_waiver") = ""
row("authorisation") = ""
row("inward_processing_start") = ""
row("inward_processing_end") = ""
row("inward_processing_deadline") = ""
row("Benchmark (Default)") = benchmark
row("Emission (Default)") = emission
row("Factor") = faktor
row("Estimated Cost") = cost
dt.Rows.Add(row)
Next
' =========================================================
' Datei vorbereiten
' =========================================================
Dim Path_DETAIL As String = ""
Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\CBAM_REPORT_DETAIL\"
If Not My.Computer.FileSystem.DirectoryExists(sPath) Then
My.Computer.FileSystem.CreateDirectory(sPath)
End If
Path_DETAIL = sPath & EORI & "_CBAM_Detail_" & txtVon._value & "-" & txtBis._value & ".xlsx"
While System.IO.File.Exists(Path_DETAIL)
Path_DETAIL = sPath & EORI & "_CBAM_Detail_" & txtVon._value & "-" & txtBis._value & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx"
End While
My.Computer.FileSystem.WriteAllBytes(Path_DETAIL, My.Resources.VERAG_CBAM_Report_Template, False)
' =========================================================
' Excel schreiben
' =========================================================
Dim wb = New ClosedXML.Excel.XLWorkbook(Path_DETAIL)
Dim ws = wb.Worksheet("CBAM_Report")
' Header
ws.Cell("A3").Value = txtVon._value
ws.Cell("C3").Value = txtBis._value
' CBAM Declarant
ws.Cell("A6").Value = "VERAG"
ws.Cell("B6").Value = ""
ws.Cell("C6").Value = ""
ws.Cell("D6").Value = ""
ws.Cell("E6").Value = ""
ws.Cell("F6").Value = EORI
' Declarant
ws.Cell("A8").Value = "VERAG"
ws.Cell("B8").Value = ""
ws.Cell("C8").Value = ""
ws.Cell("D8").Value = ""
ws.Cell("E8").Value = ""
ws.Cell("F8").Value = EORI
' Importer (Default) - aus Parameter / erster Datensatz
Dim firstImporterName As String = ""
If dt.Rows.Count > 0 Then
firstImporterName = Convert.ToString(dt.Rows(0)("importer_name"))
End If
ws.Cell("A10").Value = firstImporterName
ws.Cell("B10").Value = ""
ws.Cell("C10").Value = ""
ws.Cell("D10").Value = ""
ws.Cell("E10").Value = ""
ws.Cell("F10").Value = EORI
' Alte Detaildatenbereich-Inhalte leeren
Dim startRow As Integer = 14
'For r As Integer = startRow To Math.max(ws.LastRowUsed().RowNumber(), startRow + 5000)
' For c As Integer = 1 To 47
' ws.Cell(r, c).Clear(XLCellClearOptions.Contents)
' Next
'Next
' Detaildaten schreiben
For i As Integer = 0 To dt.Rows.Count - 1
For j As Integer = 0 To dt.Columns.Count - 1
ws.Cell(startRow + i, j + 1).Value = If(dt.Rows(i)(j), "")
Next
Next
wb.SaveAs(Path_DETAIL)
If dt.Rows.Count > 0 Then
btnCBAM_DS_VERAG_Detail.Tag = Path_DETAIL
btnCBAM_DS_VERAG_Detail.Enabled = True
btnCBAM_DS_VERAG_Copy.Enabled = True
End If
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
Sub doVERAG_DETAIL_OLD(LIST As List(Of VERAG_PROG_ALLGEMEIN.cVERAG_CustomsDeclarations), EORI As String)
btnCBAM_DS_VERAG_Detail.Enabled = False
btnCBAM_DS_VERAG_Detail.Tag = ""