From c8d81b07d82426cf0183f03db4dbbc4cde252d0b Mon Sep 17 00:00:00 2001 From: Andreas Luxbauer Date: Tue, 7 Apr 2026 10:10:12 +0200 Subject: [PATCH] KVI,NCTS Fremd --- SDL/My Project/Resources.Designer.vb | 20 + SDL/My Project/Resources.resx | 6 + SDL/Resources/KVI_report.xlsx | Bin 0 -> 10373 bytes SDL/Resources/KVI_report_general.xlsx | Bin 0 -> 10280 bytes SDL/Resources/RG_ZF_NEW.xlsx | Bin 10318 -> 10354 bytes SDL/SDL.vbproj | 2 + .../usrCntlSpeditionsBuchSuche.Designer.vb | 49 +- .../usrCntlSpeditionsBuchSuche.resx | 83 +++ .../usrCntlSpeditionsBuchSuche.vb | 288 +++++++++ .../ATEZ/NCTS_API/NCTS-P5/cNCTS_FREMD.vb | 2 + .../Modaltrans/cModalTransNCTS.vb | 561 +++++++++++++++++- 11 files changed, 965 insertions(+), 46 deletions(-) create mode 100644 SDL/Resources/KVI_report.xlsx create mode 100644 SDL/Resources/KVI_report_general.xlsx diff --git a/SDL/My Project/Resources.Designer.vb b/SDL/My Project/Resources.Designer.vb index 9e3c7974..11b8f540 100644 --- a/SDL/My Project/Resources.Designer.vb +++ b/SDL/My Project/Resources.Designer.vb @@ -1134,6 +1134,26 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + ''' + Friend ReadOnly Property KVI_report() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("KVI_report", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + ''' + Friend ReadOnly Property KVI_report_general() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("KVI_report_general", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + ''' ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. ''' diff --git a/SDL/My Project/Resources.resx b/SDL/My Project/Resources.resx index 4593efdf..dbff307c 100644 --- a/SDL/My Project/Resources.resx +++ b/SDL/My Project/Resources.resx @@ -976,4 +976,10 @@ ..\Resources\VERAG_CBAM_Report_Template.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\KVI_report.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\KVI_report_general.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/SDL/Resources/KVI_report.xlsx b/SDL/Resources/KVI_report.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4dfb7447b87bd650461d96f34a00fbc077f0201b GIT binary patch literal 10373 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 Uut^SWEDIPLCkvh^+duUG0ct0{{{R30 delta 4052 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 bCQ!|MidbH#Gd?3MC6qRp3!j?jAHaVBQKg=1 diff --git a/SDL/SDL.vbproj b/SDL/SDL.vbproj index 51bd034f..4b147e14 100644 --- a/SDL/SDL.vbproj +++ b/SDL/SDL.vbproj @@ -4971,6 +4971,8 @@ + + Always diff --git a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.Designer.vb b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.Designer.vb index d70292d7..41baef2e 100644 --- a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.Designer.vb +++ b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.Designer.vb @@ -64,6 +64,7 @@ Partial Class usrCntlSpeditionsBuchSuche Me.dgvLKW = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components) Me.pnlOpt = New System.Windows.Forms.Panel() Me.Panel3 = New System.Windows.Forms.Panel() + Me.Button2 = New System.Windows.Forms.Button() Me.cbxSpedBerichtBar = New System.Windows.Forms.CheckBox() Me.Label31 = New System.Windows.Forms.Label() Me.Button8 = New System.Windows.Forms.Button() @@ -93,6 +94,7 @@ Partial Class usrCntlSpeditionsBuchSuche Me.cboHandlingssatz = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.MenuStrip1 = New System.Windows.Forms.MenuStrip() Me.KundenauswertungenToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripMenuItem() Me.ZFFriedrichshafenAGZeitraumAuswählenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ZFSteyrZeitraumAuswählenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ZFThyrnauZeitraumAuswählenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -209,7 +211,6 @@ Partial Class usrCntlSpeditionsBuchSuche Me.Label45 = New System.Windows.Forms.Label() Me.cboFilialeHandling = New VERAG_PROG_ALLGEMEIN.MyComboBox() Me.SplitContainer = New System.Windows.Forms.SplitContainer() - Me.Button2 = New System.Windows.Forms.Button() Me.cntxtCntxtSpeditionsbuch.SuspendLayout() Me.pnlRechts.SuspendLayout() CType(Me.DataGridView, System.ComponentModel.ISupportInitialize).BeginInit() @@ -802,6 +803,19 @@ Partial Class usrCntlSpeditionsBuchSuche Me.Panel3.Size = New System.Drawing.Size(386, 186) Me.Panel3.TabIndex = 95 ' + 'Button2 + ' + Me.Button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Button2.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.Button2.Location = New System.Drawing.Point(308, 159) + Me.Button2.Margin = New System.Windows.Forms.Padding(0) + Me.Button2.Name = "Button2" + Me.Button2.Size = New System.Drawing.Size(62, 25) + Me.Button2.TabIndex = 93 + Me.Button2.Text = "Jahr" + Me.Button2.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.Button2.UseVisualStyleBackColor = True + ' 'cbxSpedBerichtBar ' Me.cbxSpedBerichtBar.AutoSize = True @@ -1172,25 +1186,32 @@ Partial Class usrCntlSpeditionsBuchSuche Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.KundenauswertungenToolStripMenuItem1}) Me.MenuStrip1.Location = New System.Drawing.Point(322, 156) Me.MenuStrip1.Name = "MenuStrip1" - Me.MenuStrip1.Size = New System.Drawing.Size(163, 27) + Me.MenuStrip1.Size = New System.Drawing.Size(283, 27) Me.MenuStrip1.TabIndex = 89 Me.MenuStrip1.Text = "Kundenauswertungen" ' 'KundenauswertungenToolStripMenuItem1 ' Me.KundenauswertungenToolStripMenuItem1.BackColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer)) - Me.KundenauswertungenToolStripMenuItem1.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ZFFriedrichshafenAGZeitraumAuswählenToolStripMenuItem, Me.ZFSteyrZeitraumAuswählenToolStripMenuItem, Me.ZFThyrnauZeitraumAuswählenToolStripMenuItem, Me.AuswertungDiversZeitraumAuswählenToolStripMenuItem}) + Me.KundenauswertungenToolStripMenuItem1.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripMenuItem2, Me.ZFFriedrichshafenAGZeitraumAuswählenToolStripMenuItem, Me.ZFSteyrZeitraumAuswählenToolStripMenuItem, Me.ZFThyrnauZeitraumAuswählenToolStripMenuItem, Me.AuswertungDiversZeitraumAuswählenToolStripMenuItem}) Me.KundenauswertungenToolStripMenuItem1.Font = New System.Drawing.Font("Segoe UI", 10.0!) Me.KundenauswertungenToolStripMenuItem1.ForeColor = System.Drawing.Color.White Me.KundenauswertungenToolStripMenuItem1.Name = "KundenauswertungenToolStripMenuItem1" Me.KundenauswertungenToolStripMenuItem1.Size = New System.Drawing.Size(155, 23) Me.KundenauswertungenToolStripMenuItem1.Text = "Kundenauswertungen" ' + 'ToolStripMenuItem2 + ' + Me.ToolStripMenuItem2.Image = CType(resources.GetObject("ToolStripMenuItem2.Image"), System.Drawing.Image) + Me.ToolStripMenuItem2.Name = "ToolStripMenuItem2" + Me.ToolStripMenuItem2.Size = New System.Drawing.Size(316, 30) + Me.ToolStripMenuItem2.Text = "Kanadevia (Zeitraum auswählen)" + ' 'ZFFriedrichshafenAGZeitraumAuswählenToolStripMenuItem ' Me.ZFFriedrichshafenAGZeitraumAuswählenToolStripMenuItem.Image = CType(resources.GetObject("ZFFriedrichshafenAGZeitraumAuswählenToolStripMenuItem.Image"), System.Drawing.Image) Me.ZFFriedrichshafenAGZeitraumAuswählenToolStripMenuItem.Name = "ZFFriedrichshafenAGZeitraumAuswählenToolStripMenuItem" - Me.ZFFriedrichshafenAGZeitraumAuswählenToolStripMenuItem.Size = New System.Drawing.Size(308, 24) + Me.ZFFriedrichshafenAGZeitraumAuswählenToolStripMenuItem.Size = New System.Drawing.Size(316, 30) Me.ZFFriedrichshafenAGZeitraumAuswählenToolStripMenuItem.Text = "ZF Passau (Zeitraum auswählen)" Me.ZFFriedrichshafenAGZeitraumAuswählenToolStripMenuItem.Visible = False ' @@ -1198,14 +1219,14 @@ Partial Class usrCntlSpeditionsBuchSuche ' Me.ZFSteyrZeitraumAuswählenToolStripMenuItem.Image = Global.SDL.My.Resources.Resources.Excel_logo Me.ZFSteyrZeitraumAuswählenToolStripMenuItem.Name = "ZFSteyrZeitraumAuswählenToolStripMenuItem" - Me.ZFSteyrZeitraumAuswählenToolStripMenuItem.Size = New System.Drawing.Size(308, 24) + Me.ZFSteyrZeitraumAuswählenToolStripMenuItem.Size = New System.Drawing.Size(316, 30) Me.ZFSteyrZeitraumAuswählenToolStripMenuItem.Text = "ZF Steyr (Zeitraum auswählen)" ' 'ZFThyrnauZeitraumAuswählenToolStripMenuItem ' Me.ZFThyrnauZeitraumAuswählenToolStripMenuItem.Image = Global.SDL.My.Resources.Resources.Excel_logo Me.ZFThyrnauZeitraumAuswählenToolStripMenuItem.Name = "ZFThyrnauZeitraumAuswählenToolStripMenuItem" - Me.ZFThyrnauZeitraumAuswählenToolStripMenuItem.Size = New System.Drawing.Size(308, 24) + Me.ZFThyrnauZeitraumAuswählenToolStripMenuItem.Size = New System.Drawing.Size(316, 30) Me.ZFThyrnauZeitraumAuswählenToolStripMenuItem.Text = "ZF Thyrnau (Zeitraum auswählen)" Me.ZFThyrnauZeitraumAuswählenToolStripMenuItem.Visible = False ' @@ -1213,7 +1234,7 @@ Partial Class usrCntlSpeditionsBuchSuche ' Me.AuswertungDiversZeitraumAuswählenToolStripMenuItem.Image = Global.SDL.My.Resources.Resources.Excel_logo Me.AuswertungDiversZeitraumAuswählenToolStripMenuItem.Name = "AuswertungDiversZeitraumAuswählenToolStripMenuItem" - Me.AuswertungDiversZeitraumAuswählenToolStripMenuItem.Size = New System.Drawing.Size(308, 24) + Me.AuswertungDiversZeitraumAuswählenToolStripMenuItem.Size = New System.Drawing.Size(316, 30) Me.AuswertungDiversZeitraumAuswählenToolStripMenuItem.Text = "Flender Bocholt (Zeitraum auswählen)" Me.AuswertungDiversZeitraumAuswählenToolStripMenuItem.Visible = False ' @@ -2902,19 +2923,6 @@ Partial Class usrCntlSpeditionsBuchSuche Me.SplitContainer.SplitterWidth = 2 Me.SplitContainer.TabIndex = 3 ' - 'Button2 - ' - Me.Button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.Button2.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.Button2.Location = New System.Drawing.Point(308, 159) - Me.Button2.Margin = New System.Windows.Forms.Padding(0) - Me.Button2.Name = "Button2" - Me.Button2.Size = New System.Drawing.Size(62, 25) - Me.Button2.TabIndex = 93 - Me.Button2.Text = "Jahr" - Me.Button2.TextAlign = System.Drawing.ContentAlignment.MiddleRight - Me.Button2.UseVisualStyleBackColor = True - ' 'usrCntlSpeditionsBuchSuche ' Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None @@ -3143,4 +3151,5 @@ Partial Class usrCntlSpeditionsBuchSuche Friend WithEvents ToolStripMenuItem19 As ToolStripMenuItem Friend WithEvents ToolStripMenuItem1 As ToolStripMenuItem Friend WithEvents Button2 As Button + Friend WithEvents ToolStripMenuItem2 As ToolStripMenuItem End Class diff --git a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.resx b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.resx index 565489a3..34a80e24 100644 --- a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.resx +++ b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.resx @@ -127,6 +127,89 @@ 431, 17 + + + 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 + AElFTkSuQmCC + + iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH diff --git a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb index d02e6ce2..a17f5f67 100644 --- a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb +++ b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb @@ -3174,5 +3174,293 @@ Public Class usrCntlSpeditionsBuchSuche Me.Cursor = Cursors.Default End Sub + Private Sub ToolStripMenuItem2_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem2.Click + lblKdAusFortschritt.Text = "lädt..." + Me.Cursor = Cursors.WaitCursor + Try + Dim kdnrsrch = 770931 + + + Dim dt As DataTable = SQL.loadDgvBySql("SELECT CAST([FilialenNr] as varchar) + '/' + CAST([AbfertigungsNr] as varchar) Abfertigungsnummer + ,cast([Abfertigungsdatum] as date)Abfertigungsdatum + ,Absender,Empfänger + ,Rechnungsbetrag Betrag + ,BelegNr + ,[FilialenNr],[AbfertigungsNr],Speditionsbuch.Abfertigungsart,Abfertigungsbezeichnung,Speditionsbuch.Zollsystem_Land,isnull(KdAuftragsNr,'')KdAuftragsNr + FROM Speditionsbuch INNER JOIN [Abfertigungsarten] ON Speditionsbuch.Abfertigungsart=Abfertigungsarten.Abfertigungsart + where (EmpfängerKundenNr IN (" & kdnrsrch & ") OR VermittlerKundenNr IN (" & kdnrsrch & ")) and Abfertigungsdatum BETWEEN '" & txtAbfertDat.Text & "' AND '" & txtAbfertDatBis.Text & "' And isAbfertigung =1 ", "FMZOLL") 'Speditionsbuch.Abfertigungsart IN (1,3,29,38,66,46,47,37,39) + + Dim Path = "" + If dt IsNot Nothing And dt.Rows.Count > 0 Then + + + Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SR\" + If Not My.Computer.FileSystem.DirectoryExists(sPath) Then + My.Computer.FileSystem.CreateDirectory(sPath) + End If + + + Dim exclApp As Object 'as Application + Dim Datei As Object 'as WorkBook + Dim Blatt As Object 'Microsoft.Office.Interop.Excel.Worksheet 'As Object 'as Worksheet + exclApp = CreateObject("Excel.Application") + + If cbxDetailbericht.Checked Then + + With exclApp + .Visible = False + + Try + Path = sPath & "KVI_" & txtAbfertDat.Text & "-" & txtAbfertDatBis.Text & "" & " .xlsx" + While System.IO.File.Exists(Path) + Path = sPath & "KVI_" & txtAbfertDat.Text & "-" & txtAbfertDatBis.Text & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx" + End While + My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.KVI_report, False) + Catch ex As System.Exception + ' MsgBox(ex.Message) + MsgBox("ERROR 01: " & ex.Message & vbNewLine & ex.StackTrace) + Me.Cursor = Cursors.Default + + Exit Sub + End Try + + Datei = .Workbooks.Open(Path) 'Anpassen + Blatt = Datei.Worksheets(1) 'Anpassen + + 'Blatt.Range("I1").Value = txtAbfertDat.Text & "-" & txtAbfertDatBis.Text + + + Dim cnt = 2 + For Each r In dt.Rows + Dim ZOLLANMELDUNG As New DAKOSY_Worker.cZollsysteme_Aktenbeschriftung + Try + Dim zS = If(r("Zollsystem_Land") IsNot DBNull.Value, r("Zollsystem_Land").ToString(), "") + If ZOLLANMELDUNG.getDataByBezugsnummer(r("FilialenNr") & "/" & r("AbfertigungsNr"), r("Abfertigungsart"), "", False, zS) Then + + If ZOLLANMELDUNG.dtWARENPOS.Rows.Count > 0 Then + + Dim rowcounter As Integer = 0 + + For Each row As DataRow In ZOLLANMELDUNG.dtWARENPOS.Rows + + Dim ZollInProzent As Double = 0 + If If(ZOLLANMELDUNG.RechnungspreisohneWahrung, "") <> "" Then + ZollInProzent = ZOLLANMELDUNG.ABGABEN_ZOLL / ZOLLANMELDUNG.RechnungspreisohneWahrung * 100 + End If + + Dim KdAtrNr = r("KDAuftragsNr") + If kdnrsrch = 770931 Then ' Sonderfall Kanadevia + If KdAtrNr.ToString.Contains("/") Then + KdAtrNr = KdAtrNr.ToString.Split("/")(0) 'nur vorderer Teil nehmen + End If + End If + + Blatt.Range("A" & cnt).Value = cnt - 1 + Blatt.Range("B" & cnt).Value = r("Abfertigungsdatum") + Blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr")) + Blatt.Range("D" & cnt).Value = ZOLLANMELDUNG.Empfaenger + Blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") + Blatt.Range("F" & cnt).Value = KdAtrNr + Blatt.Range("G" & cnt).Value = r("BelegNr") + Blatt.Range("H" & cnt).Value = row.Item("PosNr") + Blatt.Range("I" & cnt).Value = row.Item("WarenNr") + Blatt.Range("J" & cnt).Value = "-" + Blatt.Range("K" & cnt).Value = row.Item("WarenBez") + Blatt.Range("L" & cnt).Value = "" + Blatt.Range("M" & cnt).Value = ZOLLANMELDUNG.Waehrungscode + Blatt.Range("N" & cnt).Value = ZOLLANMELDUNG.Geschaeftsart + Blatt.Range("O" & cnt).Value = ZOLLANMELDUNG.Zollstelle_Eingang + Blatt.Range("P" & cnt).Value = "" + Blatt.Range("Q" & cnt).Value = row.Item("Netto") + Blatt.Range("R" & cnt).Value = row.Item("PosWert") + Blatt.Range("S" & cnt).Value = IIf(rowcounter = 0, ZOLLANMELDUNG.ABGABEN_EUST, "") + Blatt.Range("T" & cnt).Value = IIf(rowcounter = 0, ZOLLANMELDUNG.ABGABEN_ZOLL, "") + Blatt.Range("U" & cnt).Value = IIf(rowcounter = 0, ZollInProzent.ToString("N2") & " %", "") + Blatt.Range("V" & cnt).Value = IIf(ZOLLANMELDUNG.VerBestLandZst.ToString.Count > 1, ZOLLANMELDUNG.VerBestLandZst.ToString.Substring(0, 2), "") + Blatt.Range("W" & cnt).Value = ZOLLANMELDUNG.Absender + Blatt.Range("X" & cnt).Value = row.Item("Herkunft") + Blatt.Range("Y" & cnt).Value = ZOLLANMELDUNG.Incoterms + Blatt.Range("Z" & cnt).Value = row.Item("Verfahren") + Blatt.Range("AA" & cnt).Value = row.Item("Preferenz") + Blatt.Range("AB" & cnt).Value = IIf(row.Item("isCBAM"), "Y", "N") + + If If(ZOLLANMELDUNG.ATCMRN, "") <> "" AndAlso Blatt.Range("G" & cnt).Value = "" Then + Blatt.Range("G" & cnt).Value = ZOLLANMELDUNG.ATCMRN + End If + + cnt += 1 + rowcounter += 1 + Next + Else + Dim ZollInProzent As Double = 0 + If If(ZOLLANMELDUNG.RechnungspreisohneWahrung, "") <> "" Then + ZollInProzent = ZOLLANMELDUNG.ABGABEN_ZOLL / ZOLLANMELDUNG.RechnungspreisohneWahrung * 100 + End If + + + + Dim KdAtrNr = r("KDAuftragsNr") + If kdnrsrch = 770931 Then ' Sonderfall Kanadevia + If KdAtrNr.ToString.Contains("/") Then + KdAtrNr = KdAtrNr.ToString.Split("/")(0) 'nur vorderer Teil nehmen + End If + End If + + + Blatt.Range("A" & cnt).Value = cnt - 1 + Blatt.Range("B" & cnt).Value = r("Abfertigungsdatum") + Blatt.Range("C" & cnt).Value = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale(r("FilialenNr")) + Blatt.Range("D" & cnt).Value = ZOLLANMELDUNG.Empfaenger + Blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") + Blatt.Range("F" & cnt).Value = KdAtrNr + Blatt.Range("G" & cnt).Value = r("BelegNr") + Blatt.Range("H" & cnt).Value = "" + Blatt.Range("I" & cnt).Value = "" + Blatt.Range("J" & cnt).Value = "-" + Blatt.Range("K" & cnt).Value = "" + Blatt.Range("L" & cnt).Value = "" + Blatt.Range("M" & cnt).Value = ZOLLANMELDUNG.Waehrungscode + Blatt.Range("N" & cnt).Value = ZOLLANMELDUNG.Geschaeftsart + Blatt.Range("O" & cnt).Value = ZOLLANMELDUNG.Zollstelle_Eingang + Blatt.Range("P" & cnt).Value = "" + Blatt.Range("Q" & cnt).Value = "" + Blatt.Range("R" & cnt).Value = "" + Blatt.Range("S" & cnt).Value = ZOLLANMELDUNG.ABGABEN_EUST + Blatt.Range("T" & cnt).Value = ZOLLANMELDUNG.ABGABEN_ZOLL + Blatt.Range("U" & cnt).Value = ZollInProzent.ToString("N2") & " %" + Blatt.Range("V" & cnt).Value = IIf(ZOLLANMELDUNG.VerBestLandZst.ToString.Count > 1, ZOLLANMELDUNG.VerBestLandZst.ToString.Substring(0, 2), "") + Blatt.Range("W" & cnt).Value = ZOLLANMELDUNG.Absender + Blatt.Range("X" & cnt).Value = "" + Blatt.Range("Y" & cnt).Value = ZOLLANMELDUNG.Incoterms + Blatt.Range("Z" & cnt).Value = "" + Blatt.Range("AA" & cnt).Value = "" + Blatt.Range("AB" & cnt).Value = "" + + + If If(ZOLLANMELDUNG.ATCMRN, "") <> "" AndAlso Blatt.Range("G" & cnt).Value = "" Then + Blatt.Range("G" & cnt).Value = ZOLLANMELDUNG.ATCMRN + End If + cnt += 1 + End If + End If + + + + Catch ex As Exception + MsgBox(ex.Message & ex.StackTrace) + End Try + lblKdAusFortschritt.Text = (cnt - 2) & "/" & dt.Rows.Count + Me.Refresh() + + Next + Datei.Save + + If False Then + Blatt.PrintOutEx() + Else + 'Process.Start(Path) + .Visible = True + + End If + End With + + Else + + + With exclApp + .Visible = False + + Try + Path = sPath & "KVI_" & txtAbfertDat.Text & "-" & txtAbfertDatBis.Text & "" & " .xlsx" + While System.IO.File.Exists(Path) + Path = sPath & "KVI_" & txtAbfertDat.Text & "-" & txtAbfertDatBis.Text & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx" + End While + My.Computer.FileSystem.WriteAllBytes(Path, My.Resources.KVI_report_general, False) + Catch ex As System.Exception + ' MsgBox(ex.Message) + MsgBox("ERROR 01: " & ex.Message & vbNewLine & ex.StackTrace) + Me.Cursor = Cursors.Default + + Exit Sub + End Try + + Datei = .Workbooks.Open(Path) 'Anpassen + Blatt = Datei.Worksheets(1) 'Anpassen + + Blatt.Range("I1").Value = txtAbfertDat.Text & "-" & txtAbfertDatBis.Text + + Dim cnt = 3 + For Each r In dt.Rows + Blatt.Range("A" & cnt).Value = cnt - 2 + Blatt.Range("B" & cnt).Value = r("Abfertigungsnummer") + ' Blatt.Range("C" & cnt).Value = r("RechnungsNr") + Blatt.Range("C" & cnt).Value = r("Abfertigungsdatum") + Blatt.Range("D" & cnt).Value = r("Abfertigungsbezeichnung") + Blatt.Range("E" & cnt).Value = r("Absender") + Blatt.Range("F" & cnt).Value = r("Empfänger") + Blatt.Range("H" & cnt).Value = "" 'r("Betrag") + + + Dim KdAtrNr = r("KDAuftragsNr") + If kdnrsrch = 770931 Then ' Sonderfall Kanadevia + If KdAtrNr.ToString.Contains("/") Then + KdAtrNr = KdAtrNr.ToString.Split("/")(0) 'nur vorderer Teil nehmen + End If + End If + + + Blatt.Range("G" & cnt).Value = KdAtrNr + + Dim ZOLLANMELDUNG As New DAKOSY_Worker.cZollsysteme_Aktenbeschriftung + Try + Dim zS = If(r("Zollsystem_Land") IsNot DBNull.Value, r("Zollsystem_Land").ToString(), "") + If ZOLLANMELDUNG.getDataByBezugsnummer(r("FilialenNr") & "/" & r("AbfertigungsNr"), r("Abfertigungsart"), "", False, zS) Then + Blatt.Range("H" & cnt).Value = ZOLLANMELDUNG.RechnungspreisohneWahrung + Blatt.Range("I" & cnt).Value = ZOLLANMELDUNG.Handelsrechnung.Replace(", ", "," & vbNewLine) + Blatt.Range("K" & cnt).Value = ZOLLANMELDUNG.ABGABEN_ZOLL + Blatt.Range("L" & cnt).Value = ZOLLANMELDUNG.ANZ_POS + + + '----------------------------------NEW + + Blatt.Range("M" & cnt).Value = ZOLLANMELDUNG.Anmelder + Blatt.Range("N" & cnt).Value = ZOLLANMELDUNG.Warenbezeichung + Blatt.Range("O" & cnt).Value = ZOLLANMELDUNG.VerBestLandZst + '---------------------------------- + + + If If(ZOLLANMELDUNG.ATCMRN, "") <> "" Then + Blatt.Range("J" & cnt).Value = ZOLLANMELDUNG.ATCMRN + End If + End If + + Catch ex As Exception + MsgBox(ex.Message & ex.StackTrace) + End Try + lblKdAusFortschritt.Text = (cnt - 2) & "/" & dt.Rows.Count + Me.Refresh() + cnt += 1 + Next + Datei.Save + + If False Then + Blatt.PrintOutEx() + Else + 'Process.Start(Path) + .Visible = True + + End If + End With + + End If + + End If + lblKdAusFortschritt.Text = "fertig" + Catch ex As Exception + MsgBox(ex.Message & ex.StackTrace) + lblKdAusFortschritt.Text = "Fehler" + End Try + Me.Cursor = Cursors.Default + End Sub End Class diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/ATEZ/NCTS_API/NCTS-P5/cNCTS_FREMD.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/ATEZ/NCTS_API/NCTS-P5/cNCTS_FREMD.vb index 92d3716b..ba8e66df 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/ATEZ/NCTS_API/NCTS-P5/cNCTS_FREMD.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/ATEZ/NCTS_API/NCTS-P5/cNCTS_FREMD.vb @@ -345,6 +345,7 @@ Public Class cNCTS_FREMD Property ncts_Eroeffnung As Object = Nothing Property ncts_Ankunft As Object = Nothing Property ncts_Erledigung As Object = Nothing + Property ncts_statusFremd As Object = Nothing Property ncts_GUARANTEE As New List(Of cNCTS_FREMD_Guarantee) @@ -708,6 +709,7 @@ Public Class cNCTS_FREMD list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ncts_Eroeffnung", ncts_Eroeffnung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ncts_Ankunft", ncts_Ankunft)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ncts_Erledigung", ncts_Erledigung)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ncts_statusFremd", ncts_statusFremd)) diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Modaltrans/cModalTransNCTS.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Modaltrans/cModalTransNCTS.vb index a4f5d47c..701c93e6 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Modaltrans/cModalTransNCTS.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Modaltrans/cModalTransNCTS.vb @@ -1,4 +1,5 @@ -Imports Newtonsoft.Json +Imports com.sun.tools.javac.code.Symbol +Imports Newtonsoft.Json Imports Newtonsoft.Json.Linq Public Class cModalTransNCTS @@ -154,6 +155,166 @@ Public Class cModalTransNCTS End Class + + + Public Class cMT_NCTS_GET_DeclarationResponse + Public Property transaction_id As Integer? + Public Property reference As String + Public Property doc_type As String + Public Property doc_date As String + Public Property vehicle_code As String + Public Property vehicle_coun As String + Public Property trailer_code As String + Public Property trailer_coun As String + Public Property border_cross_vehicle As String + Public Property container As String + Public Property seal_info As String + Public Property security As Boolean? + Public Property tanker As Boolean? + Public Property is_aeo As Boolean? + Public Property aeo_location As String + Public Property transit_date As String + Public Property departure_custom_code As String + Public Property dispatch_country_id As String + Public Property load_place As String + Public Property goods_location As String + Public Property arrival_custom_code As String + Public Property destination_country_id As String + Public Property unload_place As String + Public Property border_custom_code As String + Public Property transit_customs_codes As String + Public Property transit_countries_codes As String + Public Property carrier_name As String + Public Property carrier_address As String + Public Property carrier_postcode As String + Public Property carrier_city As String + Public Property carrier_country_id As String + Public Property carrier_taxno As String + Public Property carrier_eori_code As String + Public Property custom_line As String + Public Property custom_staff_name As String + Public Property trans_method As String + Public Property roro_operator_code As String + Public Property guarantee_price As Decimal? + Public Property guarantee_curr As String + Public Property status As String + Public Property lrn_no As String + Public Property lrn As String + Public Property mrn As String + Public Property mrn_no As String + Public Property lrn_url As String + Public Property manifesto_price As Decimal? + Public Property manifesto_curr As String + Public Property position_no As String + Public Property remote_ref As String + Public Property notes As String + Public Property letter_grn As String + Public Property guarantor_name As String + Public Property guarantor_city As String + Public Property guarantor_taxno As String + Public Property guarantor_address As String + Public Property guarantor_postcode As String + Public Property guarantor_eori_code As String + Public Property guarantor_country_id As String + Public Property mrn_date As String + Public Property stamp_duty As String + Public Property ncts5_checker As Boolean? + Public Property released_at As String + Public Property goods_attributes As List(Of cMT_NCTS_GoodsAttribute) + + Public Class cMT_NCTS_GoodsAttribute + Public Property line_no As Integer? + Public Property gtip_code As String + Public Property commodity As String + Public Property brut_wg As Decimal? + Public Property net_wg As Decimal? + Public Property invoice_amount As Decimal? + Public Property invoice_curr As String + Public Property exp_customs_type As String + Public Property exp_customs_partial As Boolean? + Public Property exp_customs_no As String + Public Property manifesto_type As String + Public Property dep_country_id As String + Public Property arv_country_id As String + Public Property sender_taxno As String + Public Property sender_name As String + Public Property sender_address As String + Public Property sender_postcode As String + Public Property sender_city As String + Public Property sender_country_id As String + Public Property sender_eori_code As String + Public Property consignee_taxno As String + Public Property consignee_name As String + Public Property consignee_address As String + Public Property consignee_postcode As String + Public Property consignee_city As String + Public Property consignee_country_id As String + Public Property consignee_eori_code As String + Public Property packs_attributes As List(Of cMT_NCTS_PackAttribute) + Public Property documents_attributes As List(Of cMT_NCTS_DocumentAttribute) + Public Property produced_documents_attributes As List(Of cMT_NCTS_ProducedDocumentAttribute) + End Class + + Public Class cMT_NCTS_PackAttribute + Public Property pack_type As String + Public Property pack_count As Integer? + Public Property notes As String + End Class + + Public Class cMT_NCTS_DocumentAttribute + Public Property doc_type As String + Public Property doc_no As String + Public Property pre_post As String + End Class + + Public Class cMT_NCTS_ProducedDocumentAttribute + Public Property code As String + Public Property reference As String + Public Property status As String + Public Property reason As String + Public Property quantity As Decimal? + End Class + + End Class + + + + Public Class cMT_NCTS_GET_TimelineResponse + Public Property transaction_id As Integer? + Public Property reference As String + Public Property doc_type As String + Public Property doc_date As String + Public Property transit_date As String + Public Property status As String + Public Property lrn As String + Public Property mrn As String + Public Property manifesto_price As Decimal? + Public Property manifesto_curr As String + Public Property guarantee_price As Decimal? + Public Property guarantee_diff As Decimal? + Public Property guarantee_curr As String + Public Property seal_no As String + Public Property lrn_date As String + Public Property mrn_date As String + Public Property manifesto_closed_date As String + Public Property vahicle_arrived_date As String + Public Property custom_staff_name As String + Public Property custom_line As String + Public Property timelines As List(Of cMT_NCTS_GET_TimelineItem) + Public Class cMT_NCTS_GET_TimelineItem + Public Property timeline_id As String + Public Property status_date As String + Public Property status_code As String + Public Property notes As String + Public Property source As String + Public Property country_id As String + End Class + End Class + + + + + Public Class cMT_NCTS_ApiClient Private http As New Chilkat.Http() Private authToken As String @@ -389,31 +550,28 @@ Public Class cModalTransNCTS Return result End Function - ' GET Declaration by ID / MRN / LRN / Ref - Public Function GetNCTSDeclaration(identifier As String) As cMT_NCTS_DeclarationRequest + + Public Function GetNCTSDeclarationByMRN(mrn As String) As cMT_NCTS_GET_DeclarationResponse If Not cModalTransBase.Authenticate(authToken) Then Console.WriteLine("❌ Authentifizierung fehlgeschlagen.") Return Nothing End If http.SetRequestHeader("Authorization", "Bearer " & authToken) - - Dim url = $"{cModalTransBase.baseUrl}/api/v1/ncts_declarations/{identifier}" + Dim url = $"{cModalTransBase.baseUrl}/api/v1/ncts_declarations/{mrn}" Dim resp = http.QuickGetObj(url) - If resp Is Nothing Then Console.WriteLine("❌ Keine Verbindung: " & http.LastErrorText) Return Nothing End If - Select Case resp.StatusCode Case 200 Try - Dim json = JsonConvert.DeserializeObject(Of JObject)(resp.BodyStr) - Dim data = json.SelectToken("declaration_data") - Console.WriteLine("✅ NCTS-Anmeldung erfolgreich abgerufen.") - Return data.ToObject(Of cMT_NCTS_DeclarationRequest)() + Dim result = JsonConvert.DeserializeObject(Of cMT_NCTS_GET_DeclarationResponse)(resp.BodyStr) + Console.WriteLine("✅ NCTS-Anmeldung erfolgreich abgerufen (MRN).") + Return result Catch ex As Exception Console.WriteLine("❌ Fehler beim Parsen: " & ex.Message) + Console.WriteLine(resp.BodyStr) End Try Case 401 Console.WriteLine("❌ Zugriff verweigert (401)") @@ -422,12 +580,160 @@ Public Class cModalTransNCTS Case Else Console.WriteLine($"❌ Fehler ({resp.StatusCode}): {resp.BodyStr}") End Select - Return Nothing End Function + Public Function ConvertModaltransToNCTSFremd(nctsTmp As cMT_NCTS_GET_DeclarationResponse, + Optional OverrideNCTSFin As Boolean = False, + Optional PartnerSystem As String = "MODALTRANS") As VERAG_PROG_ALLGEMEIN.cNCTS_FREMD + If nctsTmp Is Nothing Then Return Nothing + If String.IsNullOrWhiteSpace(If(nctsTmp.mrn, "")) Then Return Nothing + + Dim nctsFremd As VERAG_PROG_ALLGEMEIN.cNCTS_FREMD = VERAG_PROG_ALLGEMEIN.cNCTS_FREMD.LOADByMRN(nctsTmp.mrn, True) + If nctsFremd Is Nothing Then nctsFremd = New VERAG_PROG_ALLGEMEIN.cNCTS_FREMD + + If Not OverrideNCTSFin Then + If If(nctsFremd.ncts_Status, 0) = 60 Then + Return nctsFremd + End If + End If + + nctsFremd.ncts_Partnersystem = PartnerSystem + nctsFremd.ncts_MRN = nctsTmp.mrn + nctsFremd.ncts_ObjectName = If(If(nctsTmp.lrn, "") <> "", nctsTmp.lrn, nctsTmp.reference) + nctsFremd.ncts_Trans_Referenz = nctsTmp.reference + nctsFremd.ncts_Declarationtype = nctsTmp.doc_type + nctsFremd.ncts_TransitDeclarationType = nctsTmp.doc_type + nctsFremd.ncts_statusFremd = nctsTmp.status + + + nctsFremd.ncts_CustomsOfficeOfDeparture = nctsTmp.departure_custom_code + nctsFremd.ncts_CustomsOfficeOfDestinationDeclared = nctsTmp.arrival_custom_code + nctsFremd.ncts_CustomsOfficeOfExitForTransitDeclared = nctsTmp.border_custom_code + nctsFremd.ncts_CountryOfDispatch = nctsTmp.dispatch_country_id + + nctsFremd.ncts_CountryOfDestination = nctsTmp.destination_country_id + + nctsFremd.ncts_PlaceOfLoading_Location = nctsTmp.load_place + nctsFremd.ncts_PlaceOfUnLoading_Location = nctsTmp.unload_place + nctsFremd.ncts_LocationOfGoods_AdditionalIdentifier = nctsTmp.goods_location + ' nctsFremd.ncts_ModeOfTransportAtTheBorder = nctsTmp.trans_method + ' nctsFremd.ncts_InlandModeOfTransport = nctsTmp.trans_method + 'nctsFremd.ncts_GrossMass = nctsTmp. + + ''' + nctsFremd.ncts_Consignor_Name = nctsTmp.carrier_name + nctsFremd.ncts_Carrier_AdressCode = Nothing + nctsFremd.ncts_Carrier_IdentificationNumber = nctsTmp.carrier_eori_code + nctsFremd.ncts_Carrier_ContactPerson_Name = nctsTmp.custom_staff_name + nctsFremd.ncts_Carrier_ContactPerson_EMailAddress = Nothing + nctsFremd.ncts_Carrier_ContactPerson_PhoneNumber = Nothing + nctsFremd.ncts_Consignee_Name = Nothing + + nctsFremd.ncts_ActiveBorderTransportMeans_1_IdentificationNumber = nctsTmp.trailer_code + nctsFremd.ncts_ActiveBorderTransportMeans_1_Nationality = nctsTmp.trailer_coun + nctsFremd.ncts_DepartureTransportMeans_1_IdentificationNumber = nctsTmp.vehicle_code + nctsFremd.ncts_DepartureTransportMeans_1_Nationality = nctsTmp.vehicle_coun + nctsFremd.ncts_ContainerIndicator = nctsTmp.container + nctsFremd.ncts_Security = nctsTmp.security + nctsFremd.ncts_NachrichtenSenderTIN = Nothing + nctsFremd.ncts_NachrichtenSenderNLNR = Nothing + nctsFremd.ncts_NachrichtenempfaengerDST = Nothing + nctsFremd.ncts_Trans_DatumZeit = If(IsDate(nctsTmp.doc_date), CDate(nctsTmp.doc_date), Now) + + If IsDate(nctsTmp.transit_date) Then + nctsFremd.ncts_Eroeffnung = CDate(nctsTmp.transit_date) + 'If If(nctsFremd.ncts_LimitDate, "").ToString = "" Then + ' nctsFremd.ncts_LimitDate = CDate(nctsTmp.limi).AddDays(10) + 'End If + ElseIf IsDate(nctsTmp.doc_date) Then + nctsFremd.ncts_Eroeffnung = CDate(nctsTmp.doc_date) + If If(nctsFremd.ncts_LimitDate, "").ToString = "" Then + nctsFremd.ncts_LimitDate = CDate(nctsTmp.doc_date).AddDays(10) + End If + End If + + + Dim statusNeu As Integer = 0 + + Select Case UCase(If(nctsTmp.status, "")) + Case "DRAFT", "SENT" + statusNeu = 10 + Case "IN_USE", "MRN", "REL_TRA", "MRN_ALL", "MRN_NOTIFIED", "GUAINF", "CTR_DEC", "CTRINFDEP", "WRT_NOT", "MRN_OK", "TRUCK_RELEASED", "TRUCK_IS_READY" + statusNeu = 50 + Case "ARR_ADV", "AT_ARRIVAL_POINT" + statusNeu = 53 + If If(nctsFremd.ncts_Ankunft, "").ToString = "" Then + + End If + Case "TRANSIT_CLOSE", "RELEASED", "COMPLETED" + statusNeu = 60 + If If(nctsFremd.ncts_Ankunft, "").ToString = "" Then + + End If + If If(nctsFremd.ncts_Erledigung, "").ToString = "" Then + + End If + Case "CANCELLED" + statusNeu = 90 + + Case Else + statusNeu = If(IsNumeric(nctsFremd.ncts_Status), CInt(nctsFremd.ncts_Status), 0) + If statusNeu = 0 Then statusNeu = 50 + End Select + + + + nctsFremd.ncts_Status = statusNeu + nctsFremd.ncts_Status_KEWILL_Equivalent = statusNeu + + nctsFremd.LOAD_Guarantee() + nctsFremd.ncts_GUARANTEE.Clear() + + If nctsTmp.guarantee_price.HasValue AndAlso nctsTmp.guarantee_price.Value > 0 AndAlso If(nctsTmp.letter_grn, "") <> "" Then + Dim grt As New VERAG_PROG_ALLGEMEIN.cNCTS_FREMD_Guarantee + grt.nctsGRT_Type = Nothing + grt.nctsGRT_AccessCode = Nothing + grt.nctsGRT_GRN = nctsTmp.letter_grn + grt.nctsGRT_AmountToBeCoveredFremdWaehrung = nctsTmp.guarantee_price.Value + grt.nctsGRT_Currency = nctsTmp.guarantee_curr + + Console.WriteLine("guarantee_curr:" & nctsTmp.guarantee_curr) + + + + If grt.nctsGRT_AmountToBeCoveredFremdWaehrung IsNot Nothing Then + If If(grt.nctsGRT_Currency, "") <> "" AndAlso If(grt.nctsGRT_Currency, "") <> "EUR" Then + Dim betragEUR = VERAG_PROG_ALLGEMEIN.cEZB_Waehrungskurse.EXCHANGE_CURTOEUR( + grt.nctsGRT_AmountToBeCoveredFremdWaehrung, + grt.nctsGRT_Currency, + nctsFremd.ncts_Trans_DatumZeit.ToShortDateString + ) + grt.nctsGRT_AmountToBeCovered = If(betragEUR > 0, betragEUR, grt.nctsGRT_AmountToBeCoveredFremdWaehrung) + Else + grt.nctsGRT_AmountToBeCovered = grt.nctsGRT_AmountToBeCoveredFremdWaehrung + End If + End If + + nctsFremd.ncts_GUARANTEE.Add(grt) + End If + + + 'Status updaten: + If UpdateNCTSFremdStatusFromTimelines(nctsFremd.ncts_MRN, nctsFremd, False) Then + nctsFremd.SAVE_ALL() + End If + + + + + + Return nctsFremd + End Function + + ' LIST all declarations - Public Function GetNCTSDeclarations(Optional page As Integer = 1) As List(Of cMT_NCTS_DeclarationResponse) + Public Function GetNCTSDeclarations(fromDate As DateTime, Optional page As Integer = 1) As List(Of cMT_NCTS_DeclarationResponse) Dim list As New List(Of cMT_NCTS_DeclarationResponse)() If Not cModalTransBase.Authenticate(authToken) Then @@ -436,38 +742,239 @@ Public Class cModalTransNCTS End If http.SetRequestHeader("Authorization", "Bearer " & authToken) - Dim url = $"{cModalTransBase.baseUrl}/api/v1/ncts_declarations?page={page}" - Dim resp = http.QuickGetObj(url) + Dim fromDateStr As String = fromDate.ToString("yyyy-MM-dd") + Dim url As String = cModalTransBase.baseUrl & "/api/v1/ncts_declarations?from_date=" & fromDateStr & "&page=" & page.ToString() + + http.SetRequestHeader("Authorization", "Bearer " & authToken) + Dim resp As Chilkat.HttpResponse = http.QuickGetObj(url) If resp Is Nothing Then Console.WriteLine("❌ Keine Verbindung: " & http.LastErrorText) Return list End If + + If resp Is Nothing Then + Console.WriteLine("❌ Keine Verbindung: " & http.LastErrorText) + Return list + End If Select Case resp.StatusCode Case 200 Try - Dim json = JsonConvert.DeserializeObject(Of JObject)(resp.BodyStr) - Dim data = json.SelectToken("data") - If data IsNot Nothing Then - list = data.ToObject(Of List(Of cMT_NCTS_DeclarationResponse))() - Console.WriteLine("✅ Liste der NCTS-Anmeldungen erfolgreich abgerufen.") + Dim token As JToken = JToken.Parse(resp.BodyStr) + If TypeOf token Is JArray Then + list = token.ToObject(Of List(Of cMT_NCTS_DeclarationResponse))() + ElseIf TypeOf token Is JObject Then + Dim obj As JObject = CType(token, JObject) + Dim dataToken As JToken = obj.SelectToken("data") + If dataToken IsNot Nothing AndAlso TypeOf dataToken Is JArray Then + list = dataToken.ToObject(Of List(Of cMT_NCTS_DeclarationResponse))() + Else + Console.WriteLine("⚠️ Antwort ist ein Objekt, aber kein Array unter 'data' gefunden.") + End If + Else + Console.WriteLine("⚠️ Unbekanntes JSON-Format in der Listenantwort.") End If Catch ex As Exception Console.WriteLine("❌ Fehler beim Parsen der Liste: " & ex.Message) + Console.WriteLine(resp.BodyStr) End Try Case 401 - Console.WriteLine("❌ Zugriff verweigert (401)") + Console.WriteLine("❌ Zugriff verweigert – bitte Authentifizierung prüfen.") Case Else - Console.WriteLine($"❌ Fehler ({resp.StatusCode}): {resp.BodyStr}") + Console.WriteLine("❌ Fehler (" & resp.StatusCode.ToString() & "): " & resp.BodyStr) End Select - Return list End Function + + Public Function GetAllNCTSDeclarations(fromDate As DateTime) As List(Of cMT_NCTS_DeclarationResponse) + Dim allItems As New List(Of cMT_NCTS_DeclarationResponse)() + Dim currentPage As Integer = 1 + Do + Dim pageItems As List(Of cMT_NCTS_DeclarationResponse) = GetNCTSDeclarations(fromDate, currentPage) + If pageItems Is Nothing OrElse pageItems.Count = 0 Then + Exit Do + End If + allItems.AddRange(pageItems) + Console.WriteLine("Seite " & currentPage.ToString() & ": " & pageItems.Count.ToString() & " Einträge geladen.") + currentPage += 1 + Loop + Console.WriteLine("Gesamt geladen: " & allItems.Count.ToString() & " Einträge.") + Return allItems + End Function + + + + + + + Public Function GetNCTSDeclarationTimelinesByMRN(mrn As String) As cMT_NCTS_GET_TimelineResponse + If Not cModalTransBase.Authenticate(authToken) Then + Console.WriteLine("❌ Authentifizierung fehlgeschlagen.") + Return Nothing + End If + http.SetRequestHeader("Authorization", "Bearer " & authToken) + Dim url = $"{cModalTransBase.baseUrl}/api/v1/ncts_declarations/{mrn}/timelines" + Dim resp = http.QuickGetObj(url) + If resp Is Nothing Then + Console.WriteLine("❌ Keine Verbindung: " & http.LastErrorText) + Return Nothing + End If + Select Case resp.StatusCode + Case 200 + Try + Dim result = JsonConvert.DeserializeObject(Of cMT_NCTS_GET_TimelineResponse)(resp.BodyStr) + Console.WriteLine("✅ NCTS-Timelines erfolgreich abgerufen.") + Return result + Catch ex As Exception + Console.WriteLine("❌ Fehler beim Parsen der Timeline-Antwort: " & ex.Message) + Console.WriteLine(resp.BodyStr) + End Try + Case 400 + Console.WriteLine("⚠️ Ungültige Anfrage (400): " & resp.BodyStr) + Case 403 + Console.WriteLine("❌ Zugriff verweigert (403): " & resp.BodyStr) + Case 404 + Console.WriteLine("⚠️ Anmeldung nicht gefunden (404): " & resp.BodyStr) + Case Else + Console.WriteLine("❌ Fehler (" & resp.StatusCode.ToString() & "): " & resp.BodyStr) + End Select + Return Nothing + End Function + + + Public Function UpdateNCTSFremdStatusFromTimelines(mrn As String, + ByRef nctsFremd As VERAG_PROG_ALLGEMEIN.cNCTS_FREMD, + Optional OverrideNCTSFin As Boolean = False) As Boolean + + Try + + If String.IsNullOrWhiteSpace(mrn) Then Return False + If nctsFremd Is Nothing Then Return False + Console.WriteLine("Status Update before:" & If(nctsFremd.ncts_Status, "")) + + If Not OverrideNCTSFin Then + If IsNumeric(nctsFremd.ncts_Status) AndAlso (CInt(nctsFremd.ncts_Status) = 60 Or CInt(nctsFremd.ncts_Status) = 90) Then + Return True + End If + End If + + Dim tl = GetNCTSDeclarationTimelinesByMRN(mrn) + If tl Is Nothing Then Return False + + nctsFremd.ncts_MRN = mrn + + Dim dtMrn As DateTime? + Dim dtLrn As DateTime? + Dim dtArrived As DateTime? + Dim dtClosed As DateTime? + + If IsDate(tl.mrn_date) Then dtMrn = CDate(tl.mrn_date) + If IsDate(tl.lrn_date) Then dtLrn = CDate(tl.lrn_date) + If IsDate(tl.vahicle_arrived_date) Then dtArrived = CDate(tl.vahicle_arrived_date) + If IsDate(tl.manifesto_closed_date) Then dtClosed = CDate(tl.manifesto_closed_date) + + If dtMrn.HasValue Then + nctsFremd.ncts_Eroeffnung = dtMrn.Value + If If(nctsFremd.ncts_LimitDate, "").ToString() = "" Then + nctsFremd.ncts_LimitDate = dtMrn.Value.AddDays(10) + End If + ElseIf dtLrn.HasValue Then + If If(nctsFremd.ncts_Eroeffnung, "").ToString() = "" Then nctsFremd.ncts_Eroeffnung = dtLrn.Value + If If(nctsFremd.ncts_LimitDate, "").ToString() = "" Then + nctsFremd.ncts_LimitDate = dtLrn.Value.AddDays(10) + End If + End If + + Dim statusNeu As Integer = If(IsNumeric(nctsFremd.ncts_Status), CInt(nctsFremd.ncts_Status), 0) + + Select Case UCase(If(tl.status, "")) + Case "IN_USE", "MRN_NOTIFIED", "WRT_NOT", "GUAINF", "CTR_DEC", "CTRINFDEP", "MRN_ALL", "REL_TRA" + statusNeu = 50 + If dtMrn.HasValue Then nctsFremd.ncts_Eroeffnung = dtMrn.Value + + Case "ARR_ADV", "ARRIVED" + statusNeu = 53 + If If(nctsFremd.ncts_Ankunft, "").ToString() = "" Then + If dtArrived.HasValue Then + nctsFremd.ncts_Ankunft = dtArrived.Value + ElseIf dtMrn.HasValue Then + nctsFremd.ncts_Ankunft = dtMrn.Value + End If + End If + + Case "TRANSIT_CLOSE", "RELEASED" + statusNeu = 60 + If If(nctsFremd.ncts_Ankunft, "").ToString() = "" Then + If dtArrived.HasValue Then + nctsFremd.ncts_Ankunft = dtArrived.Value + ElseIf dtMrn.HasValue Then + nctsFremd.ncts_Ankunft = dtMrn.Value + End If + End If + If If(nctsFremd.ncts_Erledigung, "").ToString() = "" Then + If dtClosed.HasValue Then + nctsFremd.ncts_Erledigung = dtClosed.Value + ElseIf dtArrived.HasValue Then + nctsFremd.ncts_Erledigung = dtArrived.Value + ElseIf dtMrn.HasValue Then + nctsFremd.ncts_Erledigung = dtMrn.Value + End If + End If + + Case "CANCELLED" + statusNeu = 90 + End Select + + If tl.timelines IsNot Nothing Then + For Each t In tl.timelines.OrderBy(Function(x) If(IsDate(x.status_date), CDate(x.status_date), Date.MinValue)) + Select Case UCase(If(t.status_code, "")) + + Case "TRUCK_IS_READY", "MRN" + If If(nctsFremd.ncts_Eroeffnung, "").ToString() = "" AndAlso IsDate(t.status_date) Then + nctsFremd.ncts_Eroeffnung = CDate(t.status_date) + End If + If statusNeu < 50 Then statusNeu = 50 + Case "ARR_ADV", "AT_ARRIVAL_POINT", "ARRIVED" + If If(nctsFremd.ncts_Ankunft, "").ToString() = "" AndAlso IsDate(t.status_date) Then + nctsFremd.ncts_Ankunft = CDate(t.status_date) + End If + If statusNeu < 53 Then statusNeu = 53 + + Case "TRANSIT_CLOSE", "RELEASED", "COMPLETED" + If If(nctsFremd.ncts_Ankunft, "").ToString() = "" AndAlso IsDate(t.status_date) Then + nctsFremd.ncts_Ankunft = CDate(t.status_date) + End If + If If(nctsFremd.ncts_Erledigung, "").ToString() = "" AndAlso IsDate(t.status_date) Then + nctsFremd.ncts_Erledigung = CDate(t.status_date) + End If + statusNeu = 60 + + Case "CANCELLED" + statusNeu = 90 + End Select + Next + End If + + If statusNeu > 0 Then + nctsFremd.ncts_Status = statusNeu + nctsFremd.ncts_Status_KEWILL_Equivalent = statusNeu + End If + + Console.WriteLine("Status Update after:" & If(nctsFremd.ncts_Status, "")) + Return True + + + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL) + + End Try + Return False + End Function + + + End Class - - - Public Shared Function ceateAndSend_NCTS_FromSENDUNG(LRN As String, SND As cSendungen) As Boolean If SND.tblSnd_AvisoID <= 0 Then Return False Dim AVISO As cAviso = (New cAvisoDAL).LesenAviso(SND.tblSnd_AvisoID, "") @@ -686,4 +1193,6 @@ Public Class cModalTransNCTS Console.WriteLine("❌ Keine Antwort erhalten.") End If End Sub + + End Class \ No newline at end of file