CBAM kafka, NCTS Fremd(Tobb), realyhub
This commit is contained in:
@@ -61,6 +61,7 @@ Partial Class usrCntlATLAS_EZA
|
||||
Me.VERAGIMPORTFormatToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.ToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.EZAIDToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.VERAGFormatÖffnen2025V1ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
|
||||
CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SplitContainer.Panel1.SuspendLayout()
|
||||
Me.SplitContainer.SuspendLayout()
|
||||
@@ -447,7 +448,7 @@ Partial Class usrCntlATLAS_EZA
|
||||
'
|
||||
'DateiimportToolStripMenuItem
|
||||
'
|
||||
Me.DateiimportToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.DynamicAutomotiveXLSToolStripMenuItem, Me.GEZEXLSXToolStripMenuItem, Me.MEYLEXLSXToolStripMenuItem, Me.FressnapToolStripMenuItem, Me.VERAGIMPORTFormatToolStripMenuItem})
|
||||
Me.DateiimportToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.DynamicAutomotiveXLSToolStripMenuItem, Me.GEZEXLSXToolStripMenuItem, Me.MEYLEXLSXToolStripMenuItem, Me.FressnapToolStripMenuItem, Me.VERAGIMPORTFormatToolStripMenuItem, Me.VERAGFormatÖffnen2025V1ToolStripMenuItem})
|
||||
Me.DateiimportToolStripMenuItem.Name = "DateiimportToolStripMenuItem"
|
||||
Me.DateiimportToolStripMenuItem.Size = New System.Drawing.Size(87, 20)
|
||||
Me.DateiimportToolStripMenuItem.Text = "Datei-Import"
|
||||
@@ -455,31 +456,31 @@ Partial Class usrCntlATLAS_EZA
|
||||
'DynamicAutomotiveXLSToolStripMenuItem
|
||||
'
|
||||
Me.DynamicAutomotiveXLSToolStripMenuItem.Name = "DynamicAutomotiveXLSToolStripMenuItem"
|
||||
Me.DynamicAutomotiveXLSToolStripMenuItem.Size = New System.Drawing.Size(238, 22)
|
||||
Me.DynamicAutomotiveXLSToolStripMenuItem.Size = New System.Drawing.Size(244, 22)
|
||||
Me.DynamicAutomotiveXLSToolStripMenuItem.Text = "Dynamic Automotive (XLSX)"
|
||||
'
|
||||
'GEZEXLSXToolStripMenuItem
|
||||
'
|
||||
Me.GEZEXLSXToolStripMenuItem.Name = "GEZEXLSXToolStripMenuItem"
|
||||
Me.GEZEXLSXToolStripMenuItem.Size = New System.Drawing.Size(238, 22)
|
||||
Me.GEZEXLSXToolStripMenuItem.Size = New System.Drawing.Size(244, 22)
|
||||
Me.GEZEXLSXToolStripMenuItem.Text = "GEZE (XLSX)"
|
||||
'
|
||||
'MEYLEXLSXToolStripMenuItem
|
||||
'
|
||||
Me.MEYLEXLSXToolStripMenuItem.Name = "MEYLEXLSXToolStripMenuItem"
|
||||
Me.MEYLEXLSXToolStripMenuItem.Size = New System.Drawing.Size(238, 22)
|
||||
Me.MEYLEXLSXToolStripMenuItem.Size = New System.Drawing.Size(244, 22)
|
||||
Me.MEYLEXLSXToolStripMenuItem.Text = "MEYLE (XLSX)"
|
||||
'
|
||||
'FressnapToolStripMenuItem
|
||||
'
|
||||
Me.FressnapToolStripMenuItem.Name = "FressnapToolStripMenuItem"
|
||||
Me.FressnapToolStripMenuItem.Size = New System.Drawing.Size(238, 22)
|
||||
Me.FressnapToolStripMenuItem.Size = New System.Drawing.Size(244, 22)
|
||||
Me.FressnapToolStripMenuItem.Text = "Fressnapf (XLSX)"
|
||||
'
|
||||
'VERAGIMPORTFormatToolStripMenuItem
|
||||
'
|
||||
Me.VERAGIMPORTFormatToolStripMenuItem.Name = "VERAGIMPORTFormatToolStripMenuItem"
|
||||
Me.VERAGIMPORTFormatToolStripMenuItem.Size = New System.Drawing.Size(238, 22)
|
||||
Me.VERAGIMPORTFormatToolStripMenuItem.Size = New System.Drawing.Size(244, 22)
|
||||
Me.VERAGIMPORTFormatToolStripMenuItem.Text = "VERAG-IMPORT-Format (XLSX)"
|
||||
'
|
||||
'ToolStripMenuItem1
|
||||
@@ -495,6 +496,12 @@ Partial Class usrCntlATLAS_EZA
|
||||
Me.EZAIDToolStripMenuItem.Size = New System.Drawing.Size(109, 22)
|
||||
Me.EZAIDToolStripMenuItem.Text = "EZA ID"
|
||||
'
|
||||
'VERAGFormatÖffnen2025V1ToolStripMenuItem
|
||||
'
|
||||
Me.VERAGFormatÖffnen2025V1ToolStripMenuItem.Name = "VERAGFormatÖffnen2025V1ToolStripMenuItem"
|
||||
Me.VERAGFormatÖffnen2025V1ToolStripMenuItem.Size = New System.Drawing.Size(244, 22)
|
||||
Me.VERAGFormatÖffnen2025V1ToolStripMenuItem.Text = "VERAG-Format öffnen (2025-V1)"
|
||||
'
|
||||
'usrCntlATLAS_EZA
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
@@ -556,4 +563,5 @@ Partial Class usrCntlATLAS_EZA
|
||||
Friend WithEvents MEYLEXLSXToolStripMenuItem As ToolStripMenuItem
|
||||
Friend WithEvents FressnapToolStripMenuItem As ToolStripMenuItem
|
||||
Friend WithEvents VERAGIMPORTFormatToolStripMenuItem As ToolStripMenuItem
|
||||
Friend WithEvents VERAGFormatÖffnen2025V1ToolStripMenuItem As ToolStripMenuItem
|
||||
End Class
|
||||
|
||||
@@ -1773,7 +1773,395 @@ Public Class usrCntlATLAS_EZA
|
||||
End Function
|
||||
|
||||
Private Sub VERAGIMPORTFormatToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles VERAGIMPORTFormatToolStripMenuItem.Click
|
||||
|
||||
ImportExcel_CustomsTemplate_V1()
|
||||
End Sub
|
||||
|
||||
'================================================================================================================================
|
||||
'================================================================================================================================
|
||||
'================================================================================================================================
|
||||
Public Function ImportExcel_CustomsTemplate_V1() As Boolean
|
||||
' --- Dateiauswahl wie gehabt ---
|
||||
Dim f As New frmImportFromAVISOAnhaenge(AVISO, SENDUNG)
|
||||
f.ShowDialog(Me)
|
||||
If f.DialogResult <> DialogResult.OK Then Return False
|
||||
If f.LIST_FILES Is Nothing OrElse f.LIST_FILES.Count = 0 Then Return False
|
||||
|
||||
' --- ggf. vorhandene Positionen leeren ---
|
||||
If EZA.eza_WARENPOS.Count > 0 Then
|
||||
If vbYes = MsgBox("Sollen vorhandene Positionen gelöscht werden?", vbYesNo) Then
|
||||
EZA.eza_WARENPOS.Clear()
|
||||
End If
|
||||
End If
|
||||
|
||||
Me.Cursor = Cursors.WaitCursor
|
||||
Dim cnt As Integer = 0
|
||||
|
||||
For Each filePath As String In f.LIST_FILES
|
||||
If Not (filePath.EndsWith(".xlsx", StringComparison.OrdinalIgnoreCase) OrElse filePath.EndsWith(".xls", StringComparison.OrdinalIgnoreCase)) Then
|
||||
Continue For
|
||||
End If
|
||||
|
||||
Dim xlApp As Excel.Application = Nothing
|
||||
Dim wb As Excel.Workbook = Nothing
|
||||
Dim ws As Excel.Worksheet = Nothing
|
||||
|
||||
Try
|
||||
xlApp = New Excel.Application()
|
||||
xlApp.DisplayAlerts = False
|
||||
xlApp.CutCopyMode = False
|
||||
|
||||
wb = xlApp.Workbooks.Open(filePath)
|
||||
ws = CType(wb.Worksheets(1), Excel.Worksheet)
|
||||
wb.Activate()
|
||||
|
||||
' Falls Autofilter aktiv: ShowAllData() versuchen (optional)
|
||||
Try
|
||||
ws.ShowAllData()
|
||||
Catch
|
||||
End Try
|
||||
|
||||
' ---------- VERSIONSPRÜFUNG ----------
|
||||
Dim versionTag As String = GetCellStr(ws, 2, 8) ' H2
|
||||
If Not String.Equals(versionTag, "2025-V1", StringComparison.OrdinalIgnoreCase) Then
|
||||
Throw New ApplicationException("Version nicht unterstützt (gefunden: '" & versionTag & "', erwartet: '2025-V1').")
|
||||
End If
|
||||
|
||||
' ---------- 1) HEADER KEY/VALUE (A/B) ----------
|
||||
Dim header As New Dictionary(Of String, String)(StringComparer.OrdinalIgnoreCase)
|
||||
Dim usedRows As Integer = ws.UsedRange.Rows.Count
|
||||
Dim r As Integer
|
||||
|
||||
For r = 3 To Math.Min(80, usedRows + 5)
|
||||
Dim k As String = GetCellStr(ws, r, 1)
|
||||
Dim v As String = GetCellStr(ws, r, 2)
|
||||
If Not String.IsNullOrWhiteSpace(k) Then header(k) = v
|
||||
Next
|
||||
|
||||
' ein paar Kopfwerte ins EZA (alle optional)
|
||||
Dim HandelsRgNr As String = ""
|
||||
If header.ContainsKey("Invoice No.") Then HandelsRgNr = header("Invoice No.")
|
||||
If header.ContainsKey("Currency") Then EZA.eza_Rechnungswaehrung = header("Currency")
|
||||
If header.ContainsKey("Delivery Terms (Incoterms)") Then EZA.eza_LieferbedingungCode = header("Delivery Terms (Incoterms)")
|
||||
If header.ContainsKey("Total Gross Weight (kg)") Then EZA.eza_GesamtRohmasse = ToDoubleSafeVERAGTmpl(header("Total Gross Weight (kg)"))
|
||||
If header.ContainsKey("Truck Plate (Tractor)") Then EZA.eza_KennzeichenNameBefoerderungsmittelAnkunft = header("Truck Plate (Tractor)")
|
||||
|
||||
' ---------- 2) CONSIGNOR / CONSIGNEE ----------
|
||||
Dim rowCons As Integer = -1
|
||||
Dim rowCee As Integer = -1
|
||||
For r = 3 To Math.Min(80, usedRows + 5)
|
||||
Dim aVal As String = GetCellStr(ws, r, 1)
|
||||
If rowCons < 0 AndAlso String.Equals(aVal, "Consignor / Exporter", StringComparison.OrdinalIgnoreCase) Then rowCons = r
|
||||
If rowCee < 0 AndAlso String.Equals(aVal, "Consignee / Importer", StringComparison.OrdinalIgnoreCase) Then rowCee = r
|
||||
If rowCons > 0 AndAlso rowCee > 0 Then Exit For
|
||||
Next
|
||||
|
||||
' Kundennummern nur ermitteln, wenn die Blöcke auch existieren
|
||||
Dim kdnrImp As String = If(rowCee > 0, GetCellStr(ws, rowCee + 1, 6), "")
|
||||
Dim kdnrCons As String = If(rowCons > 0, GetCellStr(ws, rowCons + 1, 6), "")
|
||||
|
||||
If rowCons > 0 Then
|
||||
'Prüfen, ob Adresse schon vorhanden:
|
||||
If Not EZA.eza_ADRESSEN.Any(Function(a) a.ezaAd_AdressTyp IsNot Nothing AndAlso a.ezaAd_AdressTyp.ToString().ToUpper() = "CZ") Then
|
||||
Dim rr As Integer = rowCons + 1
|
||||
Dim adrC As New cDakosy_EZA_Adressen()
|
||||
adrC.ezaAd_AdressTyp = "CZ"
|
||||
|
||||
If Not String.IsNullOrWhiteSpace(kdnrCons) Then
|
||||
' --- Daten aus Datenbank (cAdressen) laden ---
|
||||
Dim AD As New cAdressen(kdnrCons)
|
||||
Dim KD As New cKunde(kdnrCons)
|
||||
adrC.ezaAd_NameFirma1 = AD.Name_1
|
||||
adrC.ezaAd_LandCode = cProgramFunctions.getISO2Land(AD.LandKz)
|
||||
adrC.ezaAd_PLZ = AD.PLZ
|
||||
adrC.ezaAd_Ort = AD.Ort
|
||||
adrC.ezaAd_StrasseHausNr1 = AD.Straße
|
||||
If Not String.IsNullOrWhiteSpace(KD.EORITIN) Then adrC.ezaAd_TeilnehmerEORI = KD.EORITIN
|
||||
Else
|
||||
' --- Excel-Werte (alle optional) ---
|
||||
Dim consCompany As String = GetCellStr(ws, rr, 1)
|
||||
Dim consCountry As String = GetCellStr(ws, rr, 2).ToUpperInvariant()
|
||||
Dim consZIP As String = GetCellStr(ws, rr, 3)
|
||||
Dim consCity As String = GetCellStr(ws, rr, 4)
|
||||
Dim consStreet As String = GetCellStr(ws, rr, 5)
|
||||
If consCompany <> "" Then adrC.ezaAd_NameFirma1 = consCompany
|
||||
If consCountry <> "" Then adrC.ezaAd_LandCode = consCountry
|
||||
If consZIP <> "" Then adrC.ezaAd_PLZ = consZIP
|
||||
If consCity <> "" Then adrC.ezaAd_Ort = consCity
|
||||
If consStreet <> "" Then adrC.ezaAd_StrasseHausNr1 = consStreet
|
||||
End If
|
||||
|
||||
EZA.eza_ADRESSEN.Add(adrC)
|
||||
End If
|
||||
End If
|
||||
|
||||
If rowCee > 0 Then
|
||||
'Prüfen, ob Adresse schon vorhanden:
|
||||
If Not EZA.eza_ADRESSEN.Any(Function(a) a.ezaAd_AdressTyp IsNot Nothing AndAlso a.ezaAd_AdressTyp.ToString().ToUpper() = "CN") Then
|
||||
Dim rr As Integer = rowCee + 1
|
||||
Dim adrE As New cDakosy_EZA_Adressen()
|
||||
adrE.ezaAd_AdressTyp = "CN"
|
||||
|
||||
If Not String.IsNullOrWhiteSpace(kdnrImp) Then
|
||||
' --- Daten aus Datenbank (cAdressen) laden ---
|
||||
Dim AD As New cAdressen(kdnrImp)
|
||||
Dim KD As New cKunde(kdnrImp)
|
||||
adrE.ezaAd_NameFirma1 = AD.Name_1
|
||||
adrE.ezaAd_LandCode = cProgramFunctions.getISO2Land(AD.LandKz)
|
||||
adrE.ezaAd_PLZ = AD.PLZ
|
||||
adrE.ezaAd_Ort = AD.Ort
|
||||
adrE.ezaAd_StrasseHausNr1 = AD.Straße
|
||||
If Not String.IsNullOrWhiteSpace(KD.EORITIN) Then adrE.ezaAd_TeilnehmerEORI = KD.EORITIN
|
||||
Else
|
||||
' --- Excel-Werte (alle optional) ---
|
||||
Dim ceeCompany As String = GetCellStr(ws, rr, 1)
|
||||
Dim ceeCountry As String = GetCellStr(ws, rr, 2).ToUpperInvariant()
|
||||
Dim ceeZIP As String = GetCellStr(ws, rr, 3)
|
||||
Dim ceeCity As String = GetCellStr(ws, rr, 4)
|
||||
Dim ceeStreet As String = GetCellStr(ws, rr, 5)
|
||||
If ceeCompany <> "" Then adrE.ezaAd_NameFirma1 = ceeCompany
|
||||
If ceeCountry <> "" Then adrE.ezaAd_LandCode = ceeCountry
|
||||
If ceeZIP <> "" Then adrE.ezaAd_PLZ = ceeZIP
|
||||
If ceeCity <> "" Then adrE.ezaAd_Ort = ceeCity
|
||||
If ceeStreet <> "" Then adrE.ezaAd_StrasseHausNr1 = ceeStreet
|
||||
End If
|
||||
|
||||
EZA.eza_ADRESSEN.Add(adrE)
|
||||
End If
|
||||
End If
|
||||
|
||||
' ---------- 3) ITEM-TABELLE (optional) ----------
|
||||
' Finde Titelzeile "Item Lines (add as many as needed)" in Spalte A
|
||||
Dim rowItemsTitle As Integer = -1
|
||||
For r = 10 To Math.Min(200, usedRows + 10)
|
||||
If String.Equals(GetCellStr(ws, r, 1), "Item Lines (add as many as needed)", StringComparison.OrdinalIgnoreCase) Then
|
||||
rowItemsTitle = r
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
|
||||
If rowItemsTitle > 0 Then
|
||||
Dim rowHdr As Integer = rowItemsTitle + 1
|
||||
Dim usedCols As Integer = ws.UsedRange.Columns.Count
|
||||
|
||||
' Header-Indices (alle optional)
|
||||
Dim cLine As Integer = -1, cArticle As Integer = -1, cDesc As Integer = -1, cShortDesc As Integer = -1
|
||||
Dim cHs As Integer = -1, cOrigin As Integer = -1, cPkgs As Integer = -1, cPkgType As Integer = -1
|
||||
Dim cGross As Integer = -1, cNet As Integer = -1, cUnit As Integer = -1, cTotal As Integer = -1, cCurr As Integer = -1
|
||||
|
||||
Dim c As Integer
|
||||
For c = 1 To usedCols
|
||||
Dim h As String = GetCellStr(ws, rowHdr, c).ToLowerInvariant()
|
||||
Select Case h
|
||||
Case "line no.", "line no" : cLine = c
|
||||
Case "article no.", "article no" : cArticle = c
|
||||
Case "goods description" : cDesc = c
|
||||
Case "short description" : cShortDesc = c
|
||||
Case "hs code" : cHs = c
|
||||
Case "origin country" : cOrigin = c
|
||||
Case "packages" : cPkgs = c
|
||||
Case "package type" : cPkgType = c
|
||||
Case "gross weight (kg)" : cGross = c
|
||||
Case "net weight (kg)" : cNet = c
|
||||
Case "unit price" : cUnit = c
|
||||
Case "total value" : cTotal = c
|
||||
Case "currency" : cCurr = c
|
||||
End Select
|
||||
Next
|
||||
|
||||
' Datenzeilen lesen: ab rowHdr+1 bis zur ersten komplett leeren Zeile
|
||||
Dim rData As Integer = rowHdr + 1
|
||||
Dim lastRow As Integer = ws.UsedRange.Rows.Count + 5
|
||||
|
||||
While rData <= lastRow
|
||||
Dim anyVal As Boolean = False
|
||||
For c = 1 To usedCols
|
||||
If GetCellStr(ws, rData, c) <> "" Then
|
||||
anyVal = True
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
If Not anyVal Then Exit While
|
||||
|
||||
' Werte nur holen, wenn es die Spalten gibt
|
||||
Dim descTxt As String = If(cDesc > 0, GetCellStr(ws, rData, cDesc), "")
|
||||
Dim hs As String = If(cHs > 0, GetCellStr(ws, rData, cHs), "")
|
||||
|
||||
' Wenn gar nichts Sinnvolles da ist, Zeile überspringen
|
||||
If descTxt = "" AndAlso hs = "" AndAlso (cArticle <= 0 OrElse GetCellStr(ws, rData, cArticle) = "") Then
|
||||
rData += 1
|
||||
Continue While
|
||||
End If
|
||||
|
||||
Dim pos As New cDakosy_EZA_Warenposition()
|
||||
|
||||
If cLine > 0 Then pos.ezaWP_PositionsNummer = GetCellStr(ws, rData, cLine)
|
||||
If cArticle > 0 Then pos.ezaWP_Artikelnummer = GetCellStr(ws, rData, cArticle)
|
||||
|
||||
Dim shortTxt As String = If(cShortDesc > 0, GetCellStr(ws, rData, cShortDesc), "")
|
||||
If shortTxt <> "" Then
|
||||
pos.ezaWP_Warenbezeichnung = shortTxt
|
||||
ElseIf descTxt <> "" Then
|
||||
pos.ezaWP_Warenbezeichnung = descTxt
|
||||
End If
|
||||
If hs <> "" Then pos.ezaWP_WarennummerEZT = hs
|
||||
|
||||
' Optional: Zollartikel-Stammdaten überschreiben, wenn Kundennummer vorhanden
|
||||
Dim Kdnr As String = If(Not String.IsNullOrWhiteSpace(kdnrImp), kdnrImp, If(Not String.IsNullOrWhiteSpace(kdnrCons), kdnrCons, ""))
|
||||
If Kdnr <> "" Then
|
||||
Try
|
||||
Dim ZAL = cZollArtikel.GetListByKundenNr(Kdnr) ' Annahme: Methode vorhanden
|
||||
' Artikelnummer als Schlüssel: nur wenn vorhanden
|
||||
Dim artKey As String = If(cArticle > 0, GetCellStr(ws, rData, cArticle), "")
|
||||
If Not String.IsNullOrWhiteSpace(artKey) AndAlso ZAL IsNot Nothing Then
|
||||
Dim Artikel = cZollArtikel.FindZollArtikelByNummer(ZAL, artKey)
|
||||
If Artikel IsNot Nothing Then
|
||||
If Artikel.zollArt_Warenbeschreibung IsNot Nothing AndAlso Artikel.zollArt_Warenbeschreibung.ToString() <> "" Then
|
||||
pos.ezaWP_Warenbezeichnung = Artikel.zollArt_Warenbeschreibung.ToString()
|
||||
End If
|
||||
If Artikel.zollArt_Warencodenummer IsNot Nothing AndAlso Artikel.zollArt_Warencodenummer.ToString() <> "" Then
|
||||
pos.ezaWP_WarennummerEZT = Artikel.zollArt_Warencodenummer.ToString()
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Catch
|
||||
' Stammdaten-Lookup ist optional; Fehler hier nicht fatal
|
||||
End Try
|
||||
End If
|
||||
|
||||
Dim origin As String = If(cOrigin > 0, GetCellStr(ws, rData, cOrigin).ToUpperInvariant(), "")
|
||||
If origin.Length >= 2 Then pos.ezaWP_UrsprungslandCode = origin.Substring(0, 2)
|
||||
|
||||
If cPkgs > 0 Then
|
||||
Dim pk As String = GetCellStr(ws, rData, cPkgs)
|
||||
If pk <> "" Then pos.ezaWP_PackstueckAnzahl = pk
|
||||
End If
|
||||
If cPkgType > 0 Then
|
||||
Dim pt As String = GetCellStr(ws, rData, cPkgType)
|
||||
If pt <> "" Then pos.ezaWP_PackstueckArt = pt
|
||||
End If
|
||||
|
||||
If cGross > 0 Then
|
||||
Dim g As Double = ToDoubleSafeVERAGTmpl(GetCellStr(ws, rData, cGross))
|
||||
If g > 0 Then pos.ezaWP_Rohmasse = g
|
||||
End If
|
||||
If cNet > 0 Then
|
||||
Dim n As Double = ToDoubleSafeVERAGTmpl(GetCellStr(ws, rData, cNet))
|
||||
If n > 0 Then pos.ezaWP_Eigenmasse = n
|
||||
End If
|
||||
|
||||
If cTotal > 0 Then
|
||||
Dim totalVal As Double = ToDoubleSafeVERAGTmpl(GetCellStr(ws, rData, cTotal))
|
||||
pos.ezaWP_Artikelpreis = totalVal
|
||||
End If
|
||||
|
||||
Dim curr As String = If(cCurr > 0, GetCellStr(ws, rData, cCurr).ToUpperInvariant(), "")
|
||||
If curr = "" Then
|
||||
If header.ContainsKey("Currency") Then
|
||||
pos.ezaWP_ArtikelpreisWaehrung = header("Currency").ToUpperInvariant()
|
||||
Else
|
||||
pos.ezaWP_ArtikelpreisWaehrung = "EUR"
|
||||
End If
|
||||
Else
|
||||
pos.ezaWP_ArtikelpreisWaehrung = curr
|
||||
End If
|
||||
|
||||
If HandelsRgNr <> "" Then
|
||||
Try
|
||||
pos.ezaWP_UNTERLAGEN.Add(New DAKOSY_Worker.cDakosy_EZA_WarenpositionVorgelegteUnterlagen With {
|
||||
.ezaWpUl_Art = "N380",
|
||||
.ezaWpUl_Bereich = "4",
|
||||
.ezaWpUl_VorlageKz = "J",
|
||||
.ezaWpUl_Nummer = HandelsRgNr,
|
||||
.ezaWpUl_DatumAusstellung = Nothing
|
||||
})
|
||||
Catch
|
||||
End Try
|
||||
End If
|
||||
|
||||
EZA.eza_WARENPOS.Add(pos)
|
||||
cnt += 1
|
||||
rData += 1
|
||||
End While
|
||||
End If ' rowItemsTitle > 0 (wenn nicht gefunden: Items optional – Abschnitt wird einfach übersprungen)
|
||||
|
||||
Catch ex As Exception
|
||||
MsgBox("FEHLER beim Einlesen (" & filePath & "):" & vbCrLf & ex.Message, vbCritical)
|
||||
Finally
|
||||
' --- COM sauber freigeben ---
|
||||
Try
|
||||
If wb IsNot Nothing Then wb.Close(False)
|
||||
Catch
|
||||
End Try
|
||||
Try
|
||||
If xlApp IsNot Nothing Then xlApp.Quit()
|
||||
Catch
|
||||
End Try
|
||||
Try
|
||||
If ws IsNot Nothing Then System.Runtime.InteropServices.Marshal.FinalReleaseComObject(ws)
|
||||
Catch
|
||||
End Try
|
||||
Try
|
||||
If wb IsNot Nothing Then System.Runtime.InteropServices.Marshal.FinalReleaseComObject(wb)
|
||||
Catch
|
||||
End Try
|
||||
Try
|
||||
If xlApp IsNot Nothing Then System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlApp)
|
||||
Catch
|
||||
End Try
|
||||
ws = Nothing : wb = Nothing : xlApp = Nothing
|
||||
GC.Collect()
|
||||
GC.WaitForPendingFinalizers()
|
||||
End Try
|
||||
Next
|
||||
|
||||
' --- UI Refresh wie gehabt ---
|
||||
Me.FindForm.SuspendLayout()
|
||||
POSITIONEN.setValues(EZA, True)
|
||||
btnPositionen.PerformClick()
|
||||
Me.FindForm.ResumeLayout()
|
||||
|
||||
MsgBox(cnt & " Datensätze wurden eingelesen.")
|
||||
Me.Cursor = Cursors.Default
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Function GetCellStr(ws As Excel.Worksheet, r As Integer, c As Integer) As String
|
||||
Try
|
||||
Dim v = ws.Cells(r, c).Value
|
||||
Return If(v IsNot Nothing, v.ToString().Trim(), "")
|
||||
Catch
|
||||
Return ""
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function ToDoubleSafeVERAGTmpl(v As Object) As Double
|
||||
If v Is Nothing Then Return 0
|
||||
Dim s As String = v.ToString().Trim().Replace(",", ".")
|
||||
Dim d As Double
|
||||
If Double.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, d) Then
|
||||
Return d
|
||||
End If
|
||||
Return 0
|
||||
End Function
|
||||
|
||||
Private Sub VERAGFormatÖffnen2025V1ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles VERAGFormatÖffnen2025V1ToolStripMenuItem.Click
|
||||
Try
|
||||
' Zielpfad im Temp-Ordner festlegen
|
||||
Dim tempFile As String = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "Customs_Clearance_Template_2025V1.xlsx")
|
||||
|
||||
' Ressource (als Binärdatei eingebunden) schreiben
|
||||
System.IO.File.WriteAllBytes(tempFile, My.Resources.Customs_Clearance_Template)
|
||||
|
||||
' Datei mit dem Standardprogramm öffnen (z. B. Excel)
|
||||
Process.Start(New ProcessStartInfo(tempFile) With {.UseShellExecute = True})
|
||||
|
||||
Catch ex As Exception
|
||||
MsgBox("Fehler beim Öffnen der Vorlage: " & ex.Message, vbCritical)
|
||||
End Try
|
||||
End Sub
|
||||
'================================================================================================================================
|
||||
'================================================================================================================================
|
||||
'================================================================================================================================
|
||||
|
||||
End Class
|
||||
|
||||
|
||||
Reference in New Issue
Block a user