From d7e32e516c04f592a9857c937aa4b52af40a7898 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 6 Oct 2026 10:19:37 +0200 Subject: [PATCH] =?UTF-8?q?div=20=C3=84nderungen=20(Mailsender,=20MDM-Eina?= =?UTF-8?q?rbeitung,=20USTVA,=20Aufschubkonen,etc.)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SDL/My Project/AssemblyInfo.vb | 4 +- .../usrCntlSpeditionsBuchSuche.vb | 1343 +--------------- SDL/USTV/frmMDM_USTVAntrag.vb | 91 +- SDL/UsrCntlEssensbestellungen.vb | 10 + SDL/mdm/frmMDMDatenverarbetiung.vb | 9 +- ...wertungenAufschub_AbgabenKontrolleTRIER.vb | 62 +- VERAG_PROG_ALLGEMEIN/Classes/cRMC.vb | 49 +- .../My Project/Resources.Designer.vb | 20 + .../My Project/Resources.resx | 8 +- .../Resources/KVI_report.xlsx | Bin 0 -> 10500 bytes .../Resources/KVI_report_general.xlsx | Bin 0 -> 10318 bytes .../VERAG_PROG_ALLGEMEIN.vbproj | 2 + VERAG_PROG_ALLGEMEIN/cAllgemein.vb | 1348 ++++++++++++++++- 13 files changed, 1546 insertions(+), 1400 deletions(-) create mode 100644 VERAG_PROG_ALLGEMEIN/Resources/KVI_report.xlsx create mode 100644 VERAG_PROG_ALLGEMEIN/Resources/KVI_report_general.xlsx diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index 691b2733..dbd93fec 100644 --- a/SDL/My Project/AssemblyInfo.vb +++ b/SDL/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb index 0bffba57..08f68bc5 100644 --- a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb +++ b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb @@ -3674,7 +3674,7 @@ Public Class usrCntlSpeditionsBuchSuche kdNr = 770931 'KANADEVIA End If Me.Cursor = Cursors.WaitCursor - Dim RPT As New cSpeditionsbuchReport + Dim RPT As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuchReport If CheckBox4.Checked Then @@ -4056,1344 +4056,3 @@ PIVOT End Sub End Class -Class cSpeditionsbuchReport - - Public Function RunReport_VERAG_ZA_DETAIL(KDNR As Integer, - AbfVon As Date, - AbfBis As Date, - Optional whereStr As String = "", - Optional Open As Boolean = True, Optional list As List(Of SQLVariable) = Nothing) As String - Try - Dim dt As DataTable = LoadSpeditionsbuchData(KDNR, AbfVon, AbfBis, whereStr, list) - If dt Is Nothing OrElse dt.Rows.Count = 0 Then - Return "" - End If - - Dim path As String = CreateTargetPath(AbfVon, AbfBis, "VERAG_RPT_DETAIL_") - Dim templateBytes() As Byte = My.Resources.KVI_report ', My.Resources.KVI_report_general) - My.Computer.FileSystem.WriteAllBytes(path, templateBytes, False) - - Dim exclApp As Object = Nothing - Dim datei As Object = Nothing - Dim blatt As Object = Nothing - - Try - exclApp = CreateObject("Excel.Application") - exclApp.Visible = False - - datei = exclApp.Workbooks.Open(path) - blatt = datei.Worksheets(1) - - Dim errorTmp = "" - CreateDetailReport(blatt, dt, KDNR, errorTmp) - ' CreateGeneralReport(blatt, dt, KDNR, AbfVon, AbfBis) - - If errorTmp <> "" Then - MsgBox("Fehlende Datensätze des Detailberichtes (SpedBuch vorhanden): " & vbCrLf & errorTmp.Trim) - End If - - datei.Save() - - If Open Then - exclApp.Visible = True - Else - datei.Close(True) - exclApp.Quit() - End If - - Catch ex As Exception - Try - If datei IsNot Nothing Then datei.Close(False) - Catch - End Try - - Try - If exclApp IsNot Nothing Then exclApp.Quit() - Catch - End Try - - MsgBox(ex.Message & vbCrLf & ex.StackTrace) - Return "" - End Try - - Return path - - Catch ex As Exception - MsgBox(ex.Message & vbCrLf & ex.StackTrace) - Return "" - End Try - End Function - - Public Function RunReport_VERAG_ZA_GENERAL(KDNR As Integer, - AbfVon As Date, - AbfBis As Date, - Optional whereStr As String = "", - Optional Open As Boolean = True, - Optional DL_Kosten As Boolean = False, Optional list As List(Of SQLVariable) = Nothing) As String - Try - Dim dt As DataTable = LoadSpeditionsbuchData(KDNR, AbfVon, AbfBis, whereStr, list) - If dt Is Nothing OrElse dt.Rows.Count = 0 Then - Return "" - End If - - Dim path As String = CreateTargetPath(AbfVon, AbfBis, "VERAG_RPT_GENERAL") - Dim templateBytes() As Byte = My.Resources.KVI_report_general - My.Computer.FileSystem.WriteAllBytes(path, templateBytes, False) - - Dim exclApp As Object = Nothing - Dim datei As Object = Nothing - Dim blatt As Object = Nothing - - Try - exclApp = CreateObject("Excel.Application") - exclApp.Visible = False - - datei = exclApp.Workbooks.Open(path) - blatt = datei.Worksheets(1) - - - CreateGeneralReport(blatt, dt, KDNR, AbfVon, AbfBis, DL_Kosten) - - - datei.Save() - - If Open Then - exclApp.Visible = True - Else - datei.Close(True) - exclApp.Quit() - End If - - Catch ex As Exception - Try - If datei IsNot Nothing Then datei.Close(False) - Catch - End Try - - Try - If exclApp IsNot Nothing Then exclApp.Quit() - Catch - End Try - - MsgBox(ex.Message & vbCrLf & ex.StackTrace) - Return "" - End Try - - Return path - - Catch ex As Exception - MsgBox(ex.Message & vbCrLf & ex.StackTrace) - Return "" - End Try - End Function - - - - Private Function LoadSpeditionsbuchData(KDNR As Integer, - AbfVon As Date, - AbfBis As Date, - Optional whereStr As String = "", Optional list As List(Of SQLVariable) = Nothing) As DataTable - Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL - - Dim sqlText As String = - "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, " & - " SendungID " & - "FROM Speditionsbuch " & - "INNER JOIN [Abfertigungsarten] " & - " ON Speditionsbuch.Abfertigungsart = Abfertigungsarten.Abfertigungsart " & - "WHERE 1=1 AND" & If(KDNR > 0, " (EmpfängerKundenNr IN (" & KDNR & ") OR VermittlerKundenNr IN (" & KDNR & ")) AND ", "") & - " Abfertigungsdatum BETWEEN '" & AbfVon.ToShortDateString & "' AND '" & AbfBis.ToShortDateString & "' " & - " AND isAbfertigung = 1 " - - Return SQL.loadDgvBySql_Param(sqlText & " " & whereStr, "FMZOLL",, list) - End Function - - Private Function CreateTargetPath(AbfVon As Date, AbfBis As Date, prefix As String) As String - 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 path As String = sPath & prefix & AbfVon.ToString("yyyy-MM-dd") & "-" & AbfBis.ToString("yyyy-MM-dd") & ".xlsx" - - While System.IO.File.Exists(path) - path = sPath & prefix & AbfVon.ToString("yyyy-MM-dd") & "-" & AbfBis.ToString("yyyy-MM-dd") & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx" - End While - - Return path - End Function - - Private Function LoadCustomsDeclaration(r As DataRow) As cVERAG_CustomsDeclarations - Dim cd As cVERAG_CustomsDeclarations = Nothing - - Dim belegNr As String = If(r("BelegNr"), "").ToString().Trim() - If belegNr <> "" Then - cd = cVERAG_CustomsDeclarations.loadByMRN(belegNr, True) - End If - - If cd Is Nothing OrElse Not cd.hasEntry Then - Dim sendungsId As String = If(r("SendungID"), "").ToString().Trim() - If sendungsId <> "" Then - cd = cVERAG_CustomsDeclarations.loadBySendungsID(sendungsId, True) - End If - End If - - If cd Is Nothing Then cd = New cVERAG_CustomsDeclarations - - Return cd - End Function - - Private Sub CreateDetailReport(blatt As Object, dt As DataTable, kdnr As Integer, ByRef errorTmp As String) - Dim cnt As Integer = 2 - - For Each r As DataRow In dt.Rows - Try - Dim cd As cVERAG_CustomsDeclarations = LoadCustomsDeclaration(r) - - If Not cd.hasEntry Then - errorTmp &= If(r("BelegNr"), "").ToString() & " " & - If(r("FilialenNr"), "").ToString() & "/" & - If(r("AbfertigungsNr"), "").ToString() & vbNewLine - Else 'Durch else wird nur Zeile geschrieben, wenn auch eine Zolldeklaration gefunden wurde. Sonst wird nur eine Fehlermeldung ausgegeben. - - WriteDetailReportRow(blatt, r, cd, cnt, kdnr) - - End If - Catch ex As Exception - MsgBox(ex.Message & vbCrLf & ex.StackTrace) - End Try - Next - End Sub - - Private Sub CreateGeneralReport(blatt As Object, - dt As DataTable, - kdnr As Integer, - AbfVon As Date, - AbfBis As Date, Optional DL_Kosten As Boolean = False) - blatt.Range("I1").Value = AbfVon.ToShortDateString & "-" & AbfBis.ToShortDateString - - Dim cnt As Integer = 3 - - For Each r As DataRow In dt.Rows - Try - Dim cd As cVERAG_CustomsDeclarations = LoadCustomsDeclaration(r) - - If Not cd.hasEntry Then - MsgBox("ERROR: Nicht gefunden: " & - If(r("BelegNr"), "").ToString() & " " & - If(r("FilialenNr"), "").ToString() & "/" & - If(r("AbfertigungsNr"), "").ToString()) - End If - - WriteGeneralReportRow(blatt, r, cd, cnt, kdnr, DL_Kosten) - - Catch ex As Exception - MsgBox(ex.Message & vbCrLf & ex.StackTrace) - End Try - Next - End Sub - - Private Sub WriteDetailReportRow(blatt As Object, - r As DataRow, - cd As cVERAG_CustomsDeclarations, - ByRef cnt As Integer, - kdnrsrch As Integer) - - Dim kdAtrNr As String = NormalizeKdAuftragsNr(r("KdAuftragsNr"), kdnrsrch) - - - - - If cd IsNot Nothing AndAlso cd.hasEntry Then - - Dim empfaenger As String = GetPartyName(cd, cVERAG_CustomsDeclarations.IMPORTER_ROLES, "") - Dim absender As String = GetPartyName(cd, cVERAG_CustomsDeclarations.EXPORTER_ROLES, "") - - If cd.Items IsNot Nothing AndAlso cd.Items.Count > 0 Then - - For Each item As cVERAG_CustomsDeclarations_Item In cd.Items - - ' Abgaben kommen jetzt von der Position - Dim eustBetrag As Decimal = GetDutyAmount(item, {"B%", "B00", "EUST", "VAT"}) - Dim zollBetrag As Decimal = GetDutyAmountExcluding(item, {"B%", "B00", "EUST", "VAT"}) - - Dim itemInvoiceAmount As Decimal = - If(item.zaItem_InvoiceValueForeign, item.zaItem_InvoiceValueEUR) - - Dim zollInProzent As Double = 0 - - If itemInvoiceAmount <> 0 Then - zollInProzent = CDbl(zollBetrag / itemInvoiceAmount * 100D) - 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 = empfaenger - blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") - blatt.Range("F" & cnt).Value = kdAtrNr - blatt.Range("G" & cnt).Value = - If(Not String.IsNullOrWhiteSpace(If(r("BelegNr"), "").ToString()), - r("BelegNr"), - cd.za_MRN) - - blatt.Range("H" & cnt).Value = item.zaItem_PosNo - blatt.Range("I" & cnt).Value = item.zaItem_HSCode - blatt.Range("J" & cnt).Value = "-" - blatt.Range("K" & cnt).Value = item.zaItem_Description - blatt.Range("L" & cnt).Value = "" - - blatt.Range("M" & cnt).Value = - If(Not String.IsNullOrWhiteSpace(If(item.zaItem_InvoiceCurrency, "")), - item.zaItem_InvoiceCurrency, - cd.za_InvoiceCurrency) - - blatt.Range("N" & cnt).Value = item.zaItem_MainProcedure - blatt.Range("O" & cnt).Value = cd.za_EntryCustomsOffice - blatt.Range("P" & cnt).Value = If(item.zaItem_PosNo = 1, cd.za_TotGrossMass, "") - blatt.Range("Q" & cnt).Value = item.zaItem_NetMass - blatt.Range("R" & cnt).Value = itemInvoiceAmount - blatt.Range("S" & cnt).Value = eustBetrag - blatt.Range("T" & cnt).Value = zollBetrag - blatt.Range("U" & cnt).Value = zollInProzent.ToString("N2") & " %" - blatt.Range("V" & cnt).Value = cd.za_CountryDispatch - blatt.Range("W" & cnt).Value = absender - blatt.Range("X" & cnt).Value = item.zaItem_OriginCountry - blatt.Range("Y" & cnt).Value = cd.za_CountryDestination - blatt.Range("Z" & cnt).Value = cd.za_Incoterms - blatt.Range("AA" & cnt).Value = cd.za_IncotermsPlace - - blatt.Range("AB" & cnt).Value = - item.zaItem_MainProcedure & - If(Not String.IsNullOrWhiteSpace(item.zaItem_AdditionalProc), - "/" & item.zaItem_AdditionalProc, - "") - - blatt.Range("AC" & cnt).Value = item.zaItem_PreferenceCode - blatt.Range("AD" & cnt).Value = If(IsItemCBAM(item), "Y", "N") - blatt.Range("AE" & cnt).Value = item.GetInvoiceListString() - - - cnt += 1 - - Next - - Else - - 'Fallback: wenn keine Positionen vorhanden sind, - 'weiterhin Header-Duties verwenden - - Dim eustBetrag As Decimal = - GetDutyAmount(cd, {"B%", "B00", "EUST", "VAT"}) - - Dim zollBetrag As Decimal = - GetDutyAmountExcluding(cd, {"B%", "B00", "EUST", "VAT"}) - - Dim invoiceAmount As Decimal = If(cd.za_InvoiceAmount, 0D) - - Dim zollInProzent As Double = 0 - - If invoiceAmount <> 0 Then - zollInProzent = CDbl(zollBetrag / invoiceAmount * 100D) - 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 = empfaenger - blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") - blatt.Range("F" & cnt).Value = kdAtrNr - - blatt.Range("G" & cnt).Value = - If(Not String.IsNullOrWhiteSpace(If(r("BelegNr"), "").ToString()), - r("BelegNr"), - cd.za_MRN) - - 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 = cd.za_InvoiceCurrency - blatt.Range("N" & cnt).Value = cd.za_MainProcedure - blatt.Range("O" & cnt).Value = cd.za_EntryCustomsOffice - blatt.Range("P" & cnt).Value = cd.za_TotGrossMass - blatt.Range("Q" & cnt).Value = "" - blatt.Range("R" & cnt).Value = cd.za_InvoiceAmount - blatt.Range("S" & cnt).Value = eustBetrag - blatt.Range("T" & cnt).Value = zollBetrag - blatt.Range("U" & cnt).Value = zollInProzent.ToString("N2") & " %" - blatt.Range("V" & cnt).Value = cd.za_CountryDispatch - blatt.Range("W" & cnt).Value = absender - blatt.Range("X" & cnt).Value = "" - blatt.Range("Y" & cnt).Value = cd.za_CountryDestination - blatt.Range("Z" & cnt).Value = cd.za_Incoterms - blatt.Range("AA" & cnt).Value = cd.za_IncotermsPlace - blatt.Range("AB" & cnt).Value = "" - blatt.Range("AC" & cnt).Value = "" - blatt.Range("AD" & cnt).Value = "" - blatt.Range("AE" & cnt).Value = "" - - cnt += 1 - - End If - - Else - - 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 = r("Empfänger") - blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") - blatt.Range("F" & cnt).Value = kdAtrNr - blatt.Range("G" & cnt).Value = r("BelegNr") - - - - cnt += 1 - - End If - - End Sub - - Private Function GetDienstleistungskosten(r As DataRow, kdnrsrch As Integer) As Decimal - Try - Dim sqlstr As String = - "SELECT ISNULL(SUM(pos.SteuerfreierBetrag + pos.SteuerpflichtigerBetrag), 0) " & - "FROM Rechnungsausgang RK " & - "INNER JOIN RechnungsausgangPositionen POS ON RK.RK_ID = POS.RK_ID " & - "INNER JOIN Leistungen ON POS.LeistungsNr = Leistungen.LeistungsNr " & - "WHERE RK.FilialenNr = " & CInt(r("FilialenNr")) & " " & - "AND RK.AbfertigungsNr = " & CInt(r("AbfertigungsNr")) & " " & - "AND Leistungen.Abfertigungskosten = 1 " & - "AND Leistungen.abzugsfaehigInZZ = 0 " & - "AND RK.RechnungsKundenNr = " & kdnrsrch - Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL - - Return SQL.getValueTxtBySql(sqlstr, "FMZOLL",,, 0) - - Catch - Return 0D - End Try - End Function - Private Sub WriteDetailReportRow_OLD(blatt As Object, - r As DataRow, - cd As cVERAG_CustomsDeclarations, - ByRef cnt As Integer, - kdnrsrch As Integer) - - Dim kdAtrNr As String = NormalizeKdAuftragsNr(r("KdAuftragsNr"), kdnrsrch) - - If cd IsNot Nothing AndAlso cd.hasEntry Then - Dim empfaenger As String = GetPartyName(cd, cVERAG_CustomsDeclarations.IMPORTER_ROLES, "") - Dim absender As String = GetPartyName(cd, cVERAG_CustomsDeclarations.EXPORTER_ROLES, "") - - Dim eustBetrag As Decimal = GetDutyAmount(cd, {"B%", "B00", "EUST", "VAT"}) - Dim zollBetrag As Decimal = GetDutyAmountExcluding(cd, {"B%", "B00", "EUST", "VAT"}) - - Dim invoiceAmount As Decimal = If(cd.za_InvoiceAmount, 0D) - Dim zollInProzent As Double = 0 - - If invoiceAmount <> 0 Then - zollInProzent = CDbl(zollBetrag / invoiceAmount * 100D) - End If - - If cd.Items IsNot Nothing AndAlso cd.Items.Count > 0 Then - Dim rowcounter As Integer = 0 - - For Each item As cVERAG_CustomsDeclarations_Item In cd.Items - 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 = empfaenger - blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") - blatt.Range("F" & cnt).Value = kdAtrNr - blatt.Range("G" & cnt).Value = If(Not String.IsNullOrWhiteSpace(If(r("BelegNr"), "").ToString()), r("BelegNr"), cd.za_MRN) - blatt.Range("H" & cnt).Value = item.zaItem_PosNo - blatt.Range("I" & cnt).Value = item.zaItem_HSCode - blatt.Range("J" & cnt).Value = "-" - blatt.Range("K" & cnt).Value = item.zaItem_Description - blatt.Range("L" & cnt).Value = "" - blatt.Range("M" & cnt).Value = cd.za_InvoiceCurrency - blatt.Range("N" & cnt).Value = item.zaItem_MainProcedure 'cd.za_MainProcedure - blatt.Range("O" & cnt).Value = cd.za_EntryCustomsOffice - blatt.Range("P" & cnt).Value = If(item.zaItem_PosNo = 1, cd.za_TotGrossMass, "") - blatt.Range("Q" & cnt).Value = item.zaItem_NetMass - blatt.Range("R" & cnt).Value = If(item.zaItem_InvoiceValueForeign, item.zaItem_InvoiceValueEUR) - blatt.Range("S" & cnt).Value = If(rowcounter = 0, eustBetrag, "") - blatt.Range("T" & cnt).Value = If(rowcounter = 0, zollBetrag, "") - blatt.Range("U" & cnt).Value = If(rowcounter = 0, zollInProzent.ToString("N2") & " %", "") - blatt.Range("V" & cnt).Value = cd.za_CountryDispatch - blatt.Range("W" & cnt).Value = absender - blatt.Range("X" & cnt).Value = item.zaItem_OriginCountry - blatt.Range("Y" & cnt).Value = cd.za_CountryDestination - blatt.Range("Z" & cnt).Value = cd.za_Incoterms - blatt.Range("AA" & cnt).Value = cd.za_IncotermsPlace - blatt.Range("AB" & cnt).Value = item.zaItem_MainProcedure & If(Not String.IsNullOrWhiteSpace(item.zaItem_AdditionalProc), "/" & item.zaItem_AdditionalProc, "") - blatt.Range("AC" & cnt).Value = item.zaItem_PreferenceCode - blatt.Range("AD" & cnt).Value = If(IsItemCBAM(item), "Y", "N") - blatt.Range("AE" & cnt).Value = item.GetInvoiceListString() - - cnt += 1 - rowcounter += 1 - Next - Else - 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 = empfaenger - blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") - blatt.Range("F" & cnt).Value = kdAtrNr - blatt.Range("G" & cnt).Value = If(Not String.IsNullOrWhiteSpace(If(r("BelegNr"), "").ToString()), r("BelegNr"), cd.za_MRN) - 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 = cd.za_InvoiceCurrency - blatt.Range("N" & cnt).Value = cd.za_MainProcedure - blatt.Range("O" & cnt).Value = cd.za_EntryCustomsOffice - blatt.Range("P" & cnt).Value = "" - blatt.Range("Q" & cnt).Value = "" - blatt.Range("R" & cnt).Value = "" - blatt.Range("S" & cnt).Value = eustBetrag - blatt.Range("T" & cnt).Value = zollBetrag - blatt.Range("U" & cnt).Value = zollInProzent.ToString("N2") & " %" - blatt.Range("V" & cnt).Value = cd.za_CountryDispatch - blatt.Range("W" & cnt).Value = absender - blatt.Range("X" & cnt).Value = "" - blatt.Range("Y" & cnt).Value = cd.za_CountryDestination - blatt.Range("Z" & cnt).Value = cd.za_Incoterms - blatt.Range("AA" & cnt).Value = cd.za_IncotermsPlace - blatt.Range("AB" & cnt).Value = "" - blatt.Range("AC" & cnt).Value = "" - blatt.Range("AD" & cnt).Value = "" - - - cnt += 1 - End If - Else - 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 = r("Empfänger") - blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") - blatt.Range("F" & cnt).Value = kdAtrNr - blatt.Range("G" & cnt).Value = r("BelegNr") - - cnt += 1 - End If - End Sub - - Private Sub WriteGeneralReportRow(blatt As Object, - r As DataRow, - cd As cVERAG_CustomsDeclarations, - ByRef cnt As Integer, - kdnrsrch As Integer, - Optional DL_Kosten As Boolean = False) - - Dim dienstleistungsKosten As Decimal = 0D - - If DL_Kosten Then - blatt.Range("P2").Value = "Service Costs" - dienstleistungsKosten = GetDienstleistungskosten(r, kdnrsrch) - End If - - Dim kdAtrNr As String = NormalizeKdAuftragsNr(r("KdAuftragsNr"), kdnrsrch) - - - blatt.Range("A" & cnt).Value = cnt - 2 - blatt.Range("B" & cnt).Value = r("Abfertigungsnummer") - 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("G" & cnt).Value = kdAtrNr - blatt.Range("H" & cnt).Value = "" - - If cd IsNot Nothing AndAlso cd.hasEntry Then - Dim zollBetrag As Decimal = GetDutyAmountExcluding(cd, {"B%", "B00", "EUST", "VAT"}) - - blatt.Range("H" & cnt).Value = cd.za_InvoiceAmount - blatt.Range("I" & cnt).Value = GetInvoiceReferences(cd) - blatt.Range("J" & cnt).Value = cd.za_MRN - blatt.Range("K" & cnt).Value = zollBetrag - blatt.Range("L" & cnt).Value = If(cd.Items IsNot Nothing, cd.Items.Count, 0) - blatt.Range("M" & cnt).Value = GetPartyName(cd, cVERAG_CustomsDeclarations.DECLARANT_ROLES, "") - blatt.Range("N" & cnt).Value = GetItemsDescription(cd) - blatt.Range("O" & cnt).Value = cd.za_CountryDispatch & " --> " & cd.za_CountryDestination - - - If DL_Kosten Then - blatt.Range("P" & cnt).Value = dienstleistungsKosten - End If - - Else - If DL_Kosten Then - blatt.Range("I" & cnt).Value = dienstleistungsKosten - End If - End If - - - cnt += 1 - End Sub - - Private Function GetPartyName(cd As cVERAG_CustomsDeclarations, - roles As String(), - Optional fallback As String = "") As String - If cd Is Nothing OrElse cd.Parties Is Nothing Then Return fallback - - Dim p = cd.Parties.FirstOrDefault(Function(x) roles.Contains(If(x.zaParty_Role, "").Trim().ToUpper())) - If p Is Nothing Then Return fallback - - Return If(p.zaParty_Name, fallback) - End Function - - Private Function GetDutyAmount(cd As cVERAG_CustomsDeclarations, dutyTypes As String()) As Decimal - If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D - - Return cd.Duties. - Where(Function(d) DutyTypeMatches(If(d.zaDuty_DutyType, ""), dutyTypes)). - Sum(Function(d) If(d.zaDuty_AmountEUR, 0D)) - End Function - - Private Function GetDutyAmountExcluding(cd As cVERAG_CustomsDeclarations, excludedDutyTypes As String()) As Decimal - If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D - - Return cd.Duties. - Where(Function(d) Not DutyTypeMatches(If(d.zaDuty_DutyType, ""), excludedDutyTypes)). - Sum(Function(d) If(d.zaDuty_AmountEUR, 0D)) - End Function - - Private Function GetDutyAmount(cd As cVERAG_CustomsDeclarations_Item, dutyTypes As String()) As Decimal - If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D - - Return cd.Duties. - Where(Function(d) DutyTypeMatches(If(d.zaDuty_DutyType, ""), dutyTypes)). - Sum(Function(d) If(d.zaDuty_AmountEUR, 0D)) - End Function - - Private Function GetDutyAmountExcluding(cd As cVERAG_CustomsDeclarations_Item, excludedDutyTypes As String()) As Decimal - If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D - - Return cd.Duties. - Where(Function(d) Not DutyTypeMatches(If(d.zaDuty_DutyType, ""), excludedDutyTypes)). - Sum(Function(d) If(d.zaDuty_AmountEUR, 0D)) - End Function - - Private Function DutyTypeMatches(dutyType As String, patterns As String()) As Boolean - Dim value As String = If(dutyType, "").Trim().ToUpper() - If value = "" OrElse patterns Is Nothing Then Return False - - For Each p In patterns - Dim pattern As String = If(p, "").Trim().ToUpper() - If pattern = "" Then Continue For - - If pattern.Contains("%") Then - Dim regexPattern As String = - "^" & System.Text.RegularExpressions.Regex.Escape(pattern).Replace("%", ".*") & "$" - - If System.Text.RegularExpressions.Regex.IsMatch(value, regexPattern) Then - Return True - End If - Else - If value = pattern Then - Return True - End If - End If - Next - - Return False - End Function - - Private Function GetInvoiceReferences(cd As cVERAG_CustomsDeclarations) As String - If cd Is Nothing OrElse cd.Documents Is Nothing OrElse cd.Documents.Count = 0 Then Return "" - - Return String.Join(vbNewLine, - cd.Documents. - Where(Function(d) Not String.IsNullOrWhiteSpace(If(d.zaDoc_Reference, ""))). - Select(Function(d) d.zaDoc_Reference). - Distinct()) - End Function - - Private Function GetItemsDescription(cd As cVERAG_CustomsDeclarations) As String - If cd Is Nothing OrElse cd.Items Is Nothing OrElse cd.Items.Count = 0 Then Return "" - - Return String.Join(" | ", - cd.Items. - Where(Function(i) Not String.IsNullOrWhiteSpace(If(i.zaItem_Description, ""))). - Select(Function(i) i.zaItem_Description). - Distinct()) - End Function - - Private Function IsItemCBAM_TNR(item As cVERAG_CustomsDeclarations_Item) As Boolean - Try - If item Is Nothing Then Return False - - If VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST Is Nothing Then VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST = cGreendeal_CBAM_Trn.LoadCBAMTariffNumbers - - Dim cbamList = VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST ' VERAG_PROG_ALLGEMEIN.cGreendeal_CBAM_Trn.LoadCBAMTariffNumbers() - Dim hs = If(item.zaItem_HSCode, "").Trim() - - If hs = "" OrElse cbamList Is Nothing Then Return False - - For Each p In cbamList - If hs.StartsWith(If(p, "").Trim()) Then Return True - Next - Catch - End Try - - Return False - End Function - Private Function IsItemCBAM(item As cVERAG_CustomsDeclarations_Item) As Boolean - - Try - - If item Is Nothing Then Return False - - ' Ursprungsland prüfen (nicht CBAM-pflichtige Länder ausschließen) - Dim originCountry = If(item.zaItem_OriginCountry, "").Trim().ToUpper() - - Select Case originCountry - ' EU-27 - Case "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", - "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", - "PL", "PT", "RO", "SK", "SI", "ES", "SE", ' Ausnahmen - "CH", ' Schweiz - "NO", ' Norwegen - "IS", ' Island - "LI", ' Liechtenstein - "XI" ' Nordirland - - Return False - End Select - - - If VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST Is Nothing Then VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST = cGreendeal_CBAM_Trn.LoadCBAMTariffNumbers - - Dim cbamList = VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST ' VERAG_PROG_ALLGEMEIN.cGreendeal_CBAM_Trn.LoadCBAMTariffNumbers() - - Dim hs = If(item.zaItem_HSCode, "").Trim() - - If hs = "" OrElse cbamList Is Nothing Then Return False - - For Each p In cbamList - - If hs.StartsWith(If(p, "").Trim()) Then Return True - - Next - - Catch - End Try - - Return False - - End Function - - Private Function NormalizeKdAuftragsNr(value As Object, kdnrsrch As Integer) As String - Dim kdAtrNr As String = If(value, "").ToString() - - If kdnrsrch = 770931 AndAlso kdAtrNr.Contains("/") Then - kdAtrNr = kdAtrNr.Split("/"c)(0) - End If - - Return kdAtrNr - End Function - - Private Function LeftSafe(value As String, length As Integer) As String - value = If(value, "") - If value.Length < length Then Return value - Return value.Substring(0, length) - End Function - - Private Function RightSafe(value As String, length As Integer) As String - value = If(value, "") - If value.Length < length Then Return value - Return value.Substring(value.Length - length, length) - End Function - - Public Function RunReport_VERAG_ZA_DETAIL_FULL(KDNR As Integer, - AbfVon As Date, - AbfBis As Date, - Optional whereStr As String = "", - Optional Open As Boolean = True, Optional list As List(Of SQLVariable) = Nothing) As String - Try - Dim dt As DataTable = LoadSpeditionsbuchData(KDNR, AbfVon, AbfBis, whereStr) - If dt Is Nothing OrElse dt.Rows.Count = 0 Then - Return "" - End If - - Dim path As String = CreateTargetPathCsv(AbfVon, AbfBis, "KVI_DETAIL_FULL_") - - Using sw As New System.IO.StreamWriter(path, False, System.Text.Encoding.UTF8) - - sw.WriteLine(String.Join(";", { - CsvField("Speditionsbuch_Abfertigungsnummer"), - CsvField("Speditionsbuch_Abfertigungsdatum"), - CsvField("Speditionsbuch_Absender"), - CsvField("Speditionsbuch_Empfaenger"), - CsvField("Speditionsbuch_BelegNr"), - CsvField("Speditionsbuch_KdAuftragsNr"), - CsvField("Speditionsbuch_FilialenNr"), - CsvField("Speditionsbuch_AbfertigungsNr"), - CsvField("Speditionsbuch_Abfertigungsart"), - CsvField("Speditionsbuch_Abfertigungsbezeichnung"), - CsvField("Speditionsbuch_Zollsystem_Land"), - CsvField("Speditionsbuch_SendungID"), - CsvField("za_Id"), - CsvField("za_System"), - CsvField("za_CustomsSystem"), - CsvField("za_CustomsSystemCountry"), - CsvField("za_IsExternalSystem"), - CsvField("za_IsFinalDeclaration"), - CsvField("za_UCR"), - CsvField("za_Mandant_ID"), - CsvField("za_Bereich_ID"), - CsvField("za_Firma"), - CsvField("za_Niederlassung"), - CsvField("za_MRN"), - CsvField("za_LRN"), - CsvField("za_DeclarationNo"), - CsvField("za_ReferenceCustomer"), - CsvField("za_REGIME"), - CsvField("za_RegistrationType"), - CsvField("za_MainProcedure"), - CsvField("za_AdditionalProcedure"), - CsvField("za_DeclarationDate"), - CsvField("za_ReleaseDate"), - CsvField("za_AcceptanceDate"), - CsvField("za_CustomsOffice"), - CsvField("za_EntryCustomsOffice"), - CsvField("za_RepresentationCode"), - CsvField("za_TransportModeInland"), - CsvField("za_TransportModeBorder"), - CsvField("za_MeansOfTransport_Vehicle"), - CsvField("za_MeansOfTransport_Type"), - CsvField("za_MeansOfTransport_Nationality"), - CsvField("za_ContainerNr1"), - CsvField("za_ContainerNr2"), - CsvField("za_ContainerNr3"), - CsvField("za_ContainerNr4"), - CsvField("za_ContainerNr5"), - CsvField("za_ContainerNr6"), - CsvField("za_ContainerNr7"), - CsvField("za_ContainerNr8"), - CsvField("za_ContainerNr9"), - CsvField("za_CountryDispatch"), - CsvField("za_CountryDestination"), - CsvField("za_CountryDestinationState"), - CsvField("za_CountryImport"), - CsvField("za_WarehouseCode"), - CsvField("za_Incoterms"), - CsvField("za_IncotermsPlace"), - CsvField("za_InvoiceAmount"), - CsvField("za_InvoiceCurrency"), - CsvField("za_FiscalRepFlag"), - CsvField("za_TaxDeduction"), - CsvField("za_ApplicantTaxOffice"), - CsvField("za_ApplicantVATNo"), - CsvField("za_DV1Flag"), - CsvField("za_PrevDocument_Type"), - CsvField("za_PrevDocument_No"), - CsvField("za_AvisoId"), - CsvField("za_SendungsId"), - CsvField("za_Remarks"), - CsvField("za_Sachbearbeiter"), - CsvField("za_SachbearbeiterId"), - CsvField("za_TotGrossMass"), - CsvField("Parties_All"), - CsvField("Importer_Name"), - CsvField("Importer_EORI"), - CsvField("Exporter_Name"), - CsvField("Exporter_EORI"), - CsvField("Declarant_Name"), - CsvField("Declarant_EORI"), - CsvField("Duties_All"), - CsvField("Duty_Total"), - CsvField("Duty_EUST"), - CsvField("Duty_Excluding_EUST"), - CsvField("Header_Documents_All"), - CsvField("Item_Documents_All"), - CsvField("All_Documents_Merged"), - CsvField("Item_PosNo"), - CsvField("Item_ArticleCode"), - CsvField("Item_HSCode"), - CsvField("Item_HSAddition1"), - CsvField("Item_HSAddition2"), - CsvField("Item_HSAddCodes1"), - CsvField("Item_HSAddCodes2"), - CsvField("Item_HSAddCodes3"), - CsvField("Item_HSAddCodes4"), - CsvField("Item_HSAddCodes5"), - CsvField("Item_HSAddCodes6"), - CsvField("Item_HSAddCodes7"), - CsvField("Item_HSAddCodes8"), - CsvField("Item_HSAddCodes9"), - CsvField("Item_HSAddCodes10"), - CsvField("Item_Description"), - CsvField("Item_PackageColli"), - CsvField("Item_PackageType"), - CsvField("Item_PackageMark"), - CsvField("Item_OriginCountry"), - CsvField("Item_PreferentialCountry"), - CsvField("Item_PreferenceCode"), - CsvField("Item_QuotaNo"), - CsvField("Item_MainProcedure"), - CsvField("Item_AdditionalProc"), - CsvField("Item_PrevProcedure"), - CsvField("Item_GrossMass"), - CsvField("Item_NetMass"), - CsvField("Item_SuppUnitCode"), - CsvField("Item_SuppQuantity"), - CsvField("Item_StatisticalValueEUR"), - CsvField("Item_CustomsValueEUR"), - CsvField("Item_InvoiceCurrency"), - CsvField("Item_InvoiceValueForeign"), - CsvField("Item_InvoiceValueEUR"), - CsvField("Item_BeguenstigungCode"), - CsvField("Item_DV1Flag"), - CsvField("Item_PosAddition"), - CsvField("Item_Remarks"), - CsvField("Item_isCBAM") - })) - - For Each r As DataRow In dt.Rows - Try - Dim cd As cVERAG_CustomsDeclarations = LoadCustomsDeclaration(r) - - Dim kdAtrNr As String = NormalizeKdAuftragsNr(r("KdAuftragsNr"), KDNR) - - Dim importer = GetParty(cd, cVERAG_CustomsDeclarations.IMPORTER_ROLES) - Dim exporter = GetParty(cd, cVERAG_CustomsDeclarations.EXPORTER_ROLES) - Dim declarant = GetParty(cd, cVERAG_CustomsDeclarations.DECLARANT_ROLES) - - Dim allParties As String = JoinParties(cd) - Dim allDuties As String = JoinDuties(cd) - Dim headerDocs As String = JoinDocuments(cd.Documents) - - Dim dutyTotal As Decimal = GetDutyAmountTotal(cd) - Dim dutyEust As Decimal = GetDutyAmount(cd, {"B%", "B00", "EUST", "VAT"}) - Dim dutyExcludingEust As Decimal = GetDutyAmountExcluding(cd, {"B%", "B00", "EUST", "VAT"}) - - If cd IsNot Nothing AndAlso cd.hasEntry AndAlso cd.Items IsNot Nothing AndAlso cd.Items.Count > 0 Then - For Each item As cVERAG_CustomsDeclarations_Item In cd.Items - Dim itemDocs As String = JoinDocuments(item.Documents) - Dim allDocsMerged As String = MergeDocumentStrings(headerDocs, itemDocs) - - sw.WriteLine(String.Join(";", { - CsvField(If(r("Abfertigungsnummer"), "")), - CsvField(FormatDateForCsv(r("Abfertigungsdatum"))), - CsvField(If(r("Absender"), "")), - CsvField(If(r("Empfänger"), "")), - CsvField(If(r("BelegNr"), "")), - CsvField(kdAtrNr), - CsvField(If(r("FilialenNr"), "")), - CsvField(If(r("AbfertigungsNr"), "")), - CsvField(If(r("Abfertigungsart"), "")), - CsvField(If(r("Abfertigungsbezeichnung"), "")), - CsvField(If(r("Zollsystem_Land"), "")), - CsvField(If(r("SendungID"), "")), - CsvField(cd.za_Id), - CsvField(cd.za_System), - CsvField(cd.za_CustomsSystem), - CsvField(cd.za_CustomsSystemCountry), - CsvField(FormatBoolForCsv(cd.za_IsExternalSystem)), - CsvField(FormatBoolForCsv(cd.za_IsFinalDeclaration)), - CsvField(cd.za_UCR), - CsvField(cd.za_Mandant_ID), - CsvField(cd.za_Bereich_ID), - CsvField(cd.za_Firma), - CsvField(cd.za_Niederlassung), - CsvField(cd.za_MRN), - CsvField(cd.za_LRN), - CsvField(cd.za_DeclarationNo), - CsvField(cd.za_ReferenceCustomer), - CsvField(cd.za_REGIME), - CsvField(cd.za_RegistrationType), - CsvField(cd.za_MainProcedure), - CsvField(cd.za_AdditionalProcedure), - CsvField(FormatDateForCsv(cd.za_DeclarationDate)), - CsvField(FormatDateForCsv(cd.za_ReleaseDate)), - CsvField(FormatDateForCsv(cd.za_AcceptanceDate)), - CsvField(cd.za_CustomsOffice), - CsvField(cd.za_EntryCustomsOffice), - CsvField(cd.za_RepresentationCode), - CsvField(cd.za_TransportModeInland), - CsvField(cd.za_TransportModeBorder), - CsvField(cd.za_MeansOfTransport_Vehicle), - CsvField(cd.za_MeansOfTransport_Type), - CsvField(cd.za_MeansOfTransport_Nationality), - CsvField(cd.za_ContainerNr1), - CsvField(cd.za_ContainerNr2), - CsvField(cd.za_ContainerNr3), - CsvField(cd.za_ContainerNr4), - CsvField(cd.za_ContainerNr5), - CsvField(cd.za_ContainerNr6), - CsvField(cd.za_ContainerNr7), - CsvField(cd.za_ContainerNr8), - CsvField(cd.za_ContainerNr9), - CsvField(cd.za_CountryDispatch), - CsvField(cd.za_CountryDestination), - CsvField(cd.za_CountryDestinationState), - CsvField(cd.za_CountryImport), - CsvField(cd.za_WarehouseCode), - CsvField(cd.za_Incoterms), - CsvField(cd.za_IncotermsPlace), - CsvField(FormatDecimalForCsv(cd.za_InvoiceAmount)), - CsvField(cd.za_InvoiceCurrency), - CsvField(FormatNullableBoolForCsv(cd.za_FiscalRepFlag)), - CsvField(FormatNullableBoolForCsv(cd.za_TaxDeduction)), - CsvField(cd.za_ApplicantTaxOffice), - CsvField(cd.za_ApplicantVATNo), - CsvField(FormatNullableBoolForCsv(cd.za_DV1Flag)), - CsvField(cd.za_PrevDocument_Type), - CsvField(cd.za_PrevDocument_No), - CsvField(If(cd.za_AvisoId.HasValue, cd.za_AvisoId.Value.ToString(), "")), - CsvField(If(cd.za_SendungsId.HasValue, cd.za_SendungsId.Value.ToString(), "")), - CsvField(cd.za_Remarks), - CsvField(cd.za_Sachbearbeiter), - CsvField(cd.za_SachbearbeiterId), - CsvField(FormatDecimalForCsv(cd.za_TotGrossMass)), - CsvField(allParties), - CsvField(If(importer Is Nothing, "", importer.zaParty_Name)), - CsvField(If(importer Is Nothing, "", importer.zaParty_EORI)), - CsvField(If(exporter Is Nothing, "", exporter.zaParty_Name)), - CsvField(If(exporter Is Nothing, "", exporter.zaParty_EORI)), - CsvField(If(declarant Is Nothing, "", declarant.zaParty_Name)), - CsvField(If(declarant Is Nothing, "", declarant.zaParty_EORI)), - CsvField(allDuties), - CsvField(FormatDecimalForCsv(dutyTotal)), - CsvField(FormatDecimalForCsv(dutyEust)), - CsvField(FormatDecimalForCsv(dutyExcludingEust)), - CsvField(headerDocs), - CsvField(itemDocs), - CsvField(allDocsMerged), - CsvField(item.zaItem_PosNo), - CsvField(item.zaItem_ArticleCode), - CsvField(item.zaItem_HSCode), - CsvField(item.zaItem_HSAddition1), - CsvField(item.zaItem_HSAddition2), - CsvField(item.zaItem_HSAddCodes1), - CsvField(item.zaItem_HSAddCodes2), - CsvField(item.zaItem_HSAddCodes3), - CsvField(item.zaItem_HSAddCodes4), - CsvField(item.zaItem_HSAddCodes5), - CsvField(item.zaItem_HSAddCodes6), - CsvField(item.zaItem_HSAddCodes7), - CsvField(item.zaItem_HSAddCodes8), - CsvField(item.zaItem_HSAddCodes9), - CsvField(item.zaItem_HSAddCodes10), - CsvField(item.zaItem_Description), - CsvField(item.zaItem_PackageColli), - CsvField(item.zaItem_PackageType), - CsvField(item.zaItem_PackageMark), - CsvField(item.zaItem_OriginCountry), - CsvField(item.zaItem_PreferentialCountry), - CsvField(item.zaItem_PreferenceCode), - CsvField(item.zaItem_QuotaNo), - CsvField(item.zaItem_MainProcedure), - CsvField(item.zaItem_AdditionalProc), - CsvField(item.zaItem_PrevProcedure), - CsvField(FormatDecimalForCsv(item.zaItem_GrossMass)), - CsvField(FormatDecimalForCsv(item.zaItem_NetMass)), - CsvField(item.zaItem_SuppUnitCode), - CsvField(FormatDecimalForCsv(item.zaItem_SuppQuantity)), - CsvField(FormatDecimalForCsv(item.zaItem_StatisticalValueEUR)), - CsvField(FormatDecimalForCsv(item.zaItem_CustomsValueEUR)), - CsvField(item.zaItem_InvoiceCurrency), - CsvField(FormatDecimalForCsv(item.zaItem_InvoiceValueForeign)), - CsvField(FormatDecimalForCsv(item.zaItem_InvoiceValueEUR)), - CsvField(item.zaItem_BeguenstigungCode), - CsvField(FormatNullableBoolForCsv(item.zaItem_DV1Flag)), - CsvField(item.zaItem_PosAddition), - CsvField(item.zaItem_Remarks), - CsvField(If(IsItemCBAM(item), "Y", "N")) - })) - Next - Else - sw.WriteLine(String.Join(";", { - CsvField(If(r("Abfertigungsnummer"), "")), - CsvField(FormatDateForCsv(r("Abfertigungsdatum"))), - CsvField(If(r("Absender"), "")), - CsvField(If(r("Empfänger"), "")), - CsvField(If(r("BelegNr"), "")), - CsvField(kdAtrNr), - CsvField(If(r("FilialenNr"), "")), - CsvField(If(r("AbfertigungsNr"), "")), - CsvField(If(r("Abfertigungsart"), "")), - CsvField(If(r("Abfertigungsbezeichnung"), "")), - CsvField(If(r("Zollsystem_Land"), "")), - CsvField(If(r("SendungID"), "")), - CsvField(If(cd Is Nothing, "", cd.za_Id.ToString())), - CsvField(If(cd Is Nothing, "", cd.za_System)), - CsvField(If(cd Is Nothing, "", cd.za_CustomsSystem)), - CsvField(If(cd Is Nothing, "", cd.za_CustomsSystemCountry)), - CsvField(If(cd Is Nothing, "", FormatBoolForCsv(cd.za_IsExternalSystem))), - CsvField(If(cd Is Nothing, "", FormatBoolForCsv(cd.za_IsFinalDeclaration))), - CsvField(If(cd Is Nothing, "", cd.za_UCR)), - CsvField(If(cd Is Nothing, "", cd.za_Mandant_ID)), - CsvField(If(cd Is Nothing, "", cd.za_Bereich_ID)), - CsvField(If(cd Is Nothing, "", cd.za_Firma)), - CsvField(If(cd Is Nothing, "", cd.za_Niederlassung)), - CsvField(If(cd Is Nothing, "", cd.za_MRN)), - CsvField(If(cd Is Nothing, "", cd.za_LRN)), - CsvField(If(cd Is Nothing, "", cd.za_DeclarationNo)), - CsvField(If(cd Is Nothing, "", cd.za_ReferenceCustomer)), - CsvField(If(cd Is Nothing, "", cd.za_REGIME)), - CsvField(If(cd Is Nothing, "", cd.za_RegistrationType)), - CsvField(If(cd Is Nothing, "", cd.za_MainProcedure)), - CsvField(If(cd Is Nothing, "", cd.za_AdditionalProcedure)), - CsvField(If(cd Is Nothing, "", FormatDateForCsv(cd.za_DeclarationDate))), - CsvField(If(cd Is Nothing, "", FormatDateForCsv(cd.za_ReleaseDate))), - CsvField(If(cd Is Nothing, "", FormatDateForCsv(cd.za_AcceptanceDate))), - CsvField(If(cd Is Nothing, "", cd.za_CustomsOffice)), - CsvField(If(cd Is Nothing, "", cd.za_EntryCustomsOffice)), - CsvField(If(cd Is Nothing, "", cd.za_RepresentationCode)), - CsvField(If(cd Is Nothing, "", cd.za_TransportModeInland)), - CsvField(If(cd Is Nothing, "", cd.za_TransportModeBorder)), - CsvField(If(cd Is Nothing, "", cd.za_MeansOfTransport_Vehicle)), - CsvField(If(cd Is Nothing, "", cd.za_MeansOfTransport_Type)), - CsvField(If(cd Is Nothing, "", cd.za_MeansOfTransport_Nationality)), - CsvField(If(cd Is Nothing, "", cd.za_ContainerNr1)), - CsvField(If(cd Is Nothing, "", cd.za_ContainerNr2)), - CsvField(If(cd Is Nothing, "", cd.za_ContainerNr3)), - CsvField(If(cd Is Nothing, "", cd.za_ContainerNr4)), - CsvField(If(cd Is Nothing, "", cd.za_ContainerNr5)), - CsvField(If(cd Is Nothing, "", cd.za_ContainerNr6)), - CsvField(If(cd Is Nothing, "", cd.za_ContainerNr7)), - CsvField(If(cd Is Nothing, "", cd.za_ContainerNr8)), - CsvField(If(cd Is Nothing, "", cd.za_ContainerNr9)), - CsvField(If(cd Is Nothing, "", cd.za_CountryDispatch)), - CsvField(If(cd Is Nothing, "", cd.za_CountryDestination)), - CsvField(If(cd Is Nothing, "", cd.za_CountryDestinationState)), - CsvField(If(cd Is Nothing, "", cd.za_CountryImport)), - CsvField(If(cd Is Nothing, "", cd.za_WarehouseCode)), - CsvField(If(cd Is Nothing, "", cd.za_Incoterms)), - CsvField(If(cd Is Nothing, "", cd.za_IncotermsPlace)), - CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(cd.za_InvoiceAmount))), - CsvField(If(cd Is Nothing, "", cd.za_InvoiceCurrency)), - CsvField(If(cd Is Nothing, "", FormatNullableBoolForCsv(cd.za_FiscalRepFlag))), - CsvField(If(cd Is Nothing, "", FormatNullableBoolForCsv(cd.za_TaxDeduction))), - CsvField(If(cd Is Nothing, "", cd.za_ApplicantTaxOffice)), - CsvField(If(cd Is Nothing, "", cd.za_ApplicantVATNo)), - CsvField(If(cd Is Nothing, "", FormatNullableBoolForCsv(cd.za_DV1Flag))), - CsvField(If(cd Is Nothing, "", cd.za_PrevDocument_Type)), - CsvField(If(cd Is Nothing, "", cd.za_PrevDocument_No)), - CsvField(If(cd Is Nothing OrElse Not cd.za_AvisoId.HasValue, "", cd.za_AvisoId.Value.ToString())), - CsvField(If(cd Is Nothing OrElse Not cd.za_SendungsId.HasValue, "", cd.za_SendungsId.Value.ToString())), - CsvField(If(cd Is Nothing, "", cd.za_Remarks)), - CsvField(If(cd Is Nothing, "", cd.za_Sachbearbeiter)), - CsvField(If(cd Is Nothing, "", cd.za_SachbearbeiterId)), - CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(cd.za_TotGrossMass))), - CsvField(If(cd Is Nothing, "", allParties)), - CsvField(If(importer Is Nothing, "", importer.zaParty_Name)), - CsvField(If(importer Is Nothing, "", importer.zaParty_EORI)), - CsvField(If(exporter Is Nothing, "", exporter.zaParty_Name)), - CsvField(If(exporter Is Nothing, "", exporter.zaParty_EORI)), - CsvField(If(declarant Is Nothing, "", declarant.zaParty_Name)), - CsvField(If(declarant Is Nothing, "", declarant.zaParty_EORI)), - CsvField(If(cd Is Nothing, "", allDuties)), - CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(dutyTotal))), - CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(dutyEust))), - CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(dutyExcludingEust))), - CsvField(If(cd Is Nothing, "", headerDocs)), - CsvField(""), - CsvField(If(cd Is Nothing, "", headerDocs)), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField(""), - CsvField("") - })) - End If - - Catch ex As Exception - MsgBox(ex.Message & vbCrLf & ex.StackTrace) - End Try - Next - End Using - - If Open Then - Process.Start(path) - End If - - Return path - - Catch ex As Exception - MsgBox(ex.Message & vbCrLf & ex.StackTrace) - Return "" - End Try - End Function - - Private Function CreateTargetPathCsv(AbfVon As Date, AbfBis As Date, prefix As String) As String - 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 path As String = sPath & prefix & AbfVon.ToString("yyyy-MM-dd") & "-" & AbfBis.ToString("yyyy-MM-dd") & ".csv" - - While System.IO.File.Exists(path) - path = sPath & prefix & AbfVon.ToString("yyyy-MM-dd") & "-" & AbfBis.ToString("yyyy-MM-dd") & "_" & Now.ToString("ddMMyyyyHHmmss") & ".csv" - End While - - Return path - End Function - - Private Function CsvField(value As Object) As String - Dim s As String = If(value, "").ToString() - s = s.Replace("""", """""") - Return """" & s & """" - End Function - - Private Function FormatDateForCsv(value As Object) As String - If value Is Nothing OrElse value Is DBNull.Value Then Return "" - If IsDate(value) Then Return CDate(value).ToString("yyyy-MM-dd") - Return value.ToString() - End Function - - Private Function FormatDecimalForCsv(value As Object) As String - If value Is Nothing OrElse value Is DBNull.Value Then Return "" - If IsNumeric(value) Then Return Convert.ToDecimal(value).ToString(System.Globalization.CultureInfo.InvariantCulture) - Return value.ToString() - End Function - - Private Function FormatBoolForCsv(value As Boolean) As String - Return If(value, "1", "0") - End Function - - Private Function FormatNullableBoolForCsv(value As Boolean?) As String - If Not value.HasValue Then Return "" - Return If(value.Value, "1", "0") - End Function - - Private Function GetDutyAmountTotal(cd As cVERAG_CustomsDeclarations) As Decimal - If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D - Return cd.Duties.Sum(Function(d) If(d.zaDuty_AmountEUR, 0D)) - End Function - - Private Function GetParty(cd As cVERAG_CustomsDeclarations, roles As String()) As cVERAG_CustomsDeclarations_Parties - If cd Is Nothing OrElse cd.Parties Is Nothing Then Return Nothing - - Return cd.Parties.FirstOrDefault( - Function(x) roles.Contains(If(x.zaParty_Role, "").Trim().ToUpper()) - ) - End Function - - Private Function JoinParties(cd As cVERAG_CustomsDeclarations) As String - If cd Is Nothing OrElse cd.Parties Is Nothing OrElse cd.Parties.Count = 0 Then Return "" - - Return String.Join(" || ", - cd.Parties.Select(Function(p) - Return String.Join(" | ", { - "Role=" & If(p.zaParty_Role, ""), - "Name=" & If(p.zaParty_Name, ""), - "EORI=" & If(p.zaParty_EORI, ""), - "EORI_NL=" & If(p.zaParty_EORI_NL, ""), - "Street=" & If(p.zaParty_Street, ""), - "PostalCode=" & If(p.zaParty_PostalCode, ""), - "City=" & If(p.zaParty_City, ""), - "Country=" & If(p.zaParty_Country, ""), - "TIN=" & If(p.zaParty_TIN, ""), - "VAT=" & If(p.zaParty_VATNumber, ""), - "TaxOffice=" & If(p.zaParty_TaxOffice, ""), - "Contact=" & If(p.zaParty_ContactName, ""), - "Phone=" & If(p.zaParty_Phone, ""), - "Email=" & If(p.zaParty_Email, "") - }) - End Function)) - End Function - - Private Function JoinDuties(cd As cVERAG_CustomsDeclarations) As String - If cd Is Nothing OrElse cd.Duties Is Nothing OrElse cd.Duties.Count = 0 Then Return "" - - Return String.Join(" || ", - cd.Duties.Select(Function(d) - Return String.Join(" | ", { - "DutyType=" & If(d.zaDuty_DutyType, ""), - "AmountEUR=" & FormatDecimalForCsv(d.zaDuty_AmountEUR), - "AmountForeign=" & FormatDecimalForCsv(d.zaDuty_AmountForeign), - "Currency=" & If(d.zaDuty_Currency, ""), - "BIN=" & If(d.zaDuty_BIN, ""), - "AccountType=" & If(d.zaDuty_AccountType, ""), - "AccountHeadCustoms=" & If(d.zaDuty_AccountHeadCustoms, ""), - "ApplicationType=" & If(d.zaDuty_ApplicationType, ""), - "AccountNo=" & If(d.zaDuty_AccountNo, ""), - "AccountEORI=" & If(d.zaDuty_AccountEORI, ""), - "AccountHolderName=" & If(d.zaDuty_AccountHolderName, ""), - "LimitDate=" & FormatDateForCsv(d.zaDuty_LimitDate) - }) - End Function)) - End Function - - Private Function JoinDocuments(docs As List(Of cVERAG_CustomsDeclarations_Document)) As String - If docs Is Nothing OrElse docs.Count = 0 Then Return "" - - Return String.Join(" || ", - docs.Select(Function(d) - Return String.Join(" | ", { - "Date=" & If(d.zaDoc_Date, ""), - "Section=" & If(d.zaDoc_Section, ""), - "Code=" & If(d.zaDoc_Code, ""), - "Reference=" & If(d.zaDoc_Reference, ""), - "Presentation=" & If(d.zaDoc_Presentation, ""), - "DepAmount=" & If(d.zaDoc_DepreciationAmount, ""), - "DepUnit=" & If(d.zaDoc_DepreciationUnitmeasurement, ""), - "DepQual=" & If(d.zaDoc_DepreciationUnitmeasurementQualifier, ""), - "Description=" & If(d.zaDoc_Description, "") - }) - End Function)) - End Function - - Private Function MergeDocumentStrings(headerDocs As String, itemDocs As String) As String - If headerDocs = "" Then Return itemDocs - If itemDocs = "" Then Return headerDocs - Return headerDocs & " || " & itemDocs - End Function - - -End Class \ No newline at end of file diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index 6ae60e2e..d143ffa3 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -761,7 +761,6 @@ Public Class frmMDM_USTVAntrag loadUSTVFrom_PLOSE(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked, IIf(item.Name = "ploseneu", True, False)) init() ElseIf item.Name = "rmc" Then - VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False loadUSTVFrom_RMC(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked) init() ElseIf item.Name = "mse" Then @@ -1219,13 +1218,23 @@ Public Class frmMDM_USTVAntrag USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_POS.UStVPo_Zeitstempel = Now() - If Not IsDBNull(r.Item("rmc_daId_InvAtt")) AndAlso IsNumeric(r.Item("rmc_daId_InvAtt")) AndAlso r.Item("rmc_daId_InvAtt") > 0 Then - Dim DS_ATT_ID As Integer = r.Item("rmc_daId_InvAtt") + Dim isBTO As Boolean = False - If IsNumeric(USTV_POS.UStVPo_daId) AndAlso USTV_POS.UStVPo_daId > 0 Then + + + If Not IsNothing(r.Item("rmc_isBTO")) AndAlso r.Item("rmc_isBTO") Then + isBTO = True + End If + + If Not IsDBNull(r.Item("rmc_daId_InvAtt")) AndAlso IsNumeric(r.Item("rmc_daId_InvAtt")) AndAlso r.Item("rmc_daId_InvAtt") > 0 Then + Dim DS_ATT_ID As Integer = r.Item("rmc_daId_InvAtt") + + If IsNumeric(USTV_POS.UStVPo_daId) AndAlso USTV_POS.UStVPo_daId > 0 Then 'merge current daId and invatt-daid - Dim DS_NEW As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "MDM_DATEN", "RMC_MERGED", Now.Year, Now.ToString("yyyyMMdd"), USTV_POS.UStVPo_ReNr & "_INVOICE_RMC_ATT.pdf", kdNr, True) + + + Dim DS_NEW As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "MDM_DATEN", "RMC_MERGED", Now.Year, Now.ToString("yyyyMMdd"), USTV_POS.UStVPo_ReNr & "_INVOICE_RMC_ATT" & IIf(isBTO, "_BTO", "_NTO") & ".pdf", kdNr, True) Dim DS_ATT = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(DS_ATT_ID) Dim DS_ORG = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(USTV_POS.UStVPo_daId) @@ -1234,49 +1243,49 @@ Public Class frmMDM_USTVAntrag If DS_ATT_PATH <> "" AndAlso DS_ORG_PATH <> "" Then - If DS_NEW.uploadDataToDATENSERVER(DS_ORG_PATH) AndAlso DS_NEW.uploadDataToDATENSERVER(DS_ATT_PATH) Then - USTV_POS.UStVPo_daId = DS_NEW.da_id - USTV_POS.UStVPo_daId_loeschbar = True 'nach merge wird nicht mehr orig.ID verwendet und daher ist löschbar!!! + If DS_NEW.uploadDataToDATENSERVER(DS_ORG_PATH) AndAlso DS_NEW.uploadDataToDATENSERVER(DS_ATT_PATH) Then + USTV_POS.UStVPo_daId = DS_NEW.da_id + USTV_POS.UStVPo_daId_loeschbar = True 'nach merge wird nicht mehr orig.ID verwendet und daher ist löschbar!!! + End If End If + + End If + End If + + + ' Berechnungen + 'von RMC bekommen wir Fremdwährung und EUR, d.b. wir können und den Umrechnungskurs selbst berechnen! + 'EasyTrip können wir nicht auslesen, deshalb geben wir immer 0,1 als Betrag mit! + + Dim umrechKurs As Double = 1 + If (CDbl(r.Item("rmc_betragBrutto")) <> 0 AndAlso CDbl(r.Item("rmc_euroBrutto")) <> 0) Then + + Dim Brutto_EUR As Double = CDbl(r.Item("rmc_euroBrutto")) + Dim Brutto_org As Double = CDbl(r.Item("rmc_betragBrutto")) + + 'umrechKurs = frmdw / eur + + umrechKurs = Math.Floor((Brutto_org / Brutto_EUR * 100 + 0.5)) / 100 + + End If + + If CDbl(r.Item("rmc_betragMWST")) <> 0 Then + USTV_POS.UStVPo_USteuerbetragEUR = Math.Round((r.Item("rmc_betragMWST") / umrechKurs), 2) + USTV_POS.UStVPo_Umrechnungskurs = umrechKurs + USTV_POS.UStVPo_USteuerbetrag = r.Item("rmc_betragMWST") + + If USTV_POS.UStVPo_NettobetragEUR Is Nothing Then + USTV_POS.UStVPo_NettobetragEUR = Math.Round((r.Item("rmc_betragNetto") / umrechKurs), 2) End If End If - End If - - ' Berechnungen - 'von RMC bekommen wir Fremdwährung und EUR, d.b. wir können und den Umrechnungskurs selbst berechnen! - 'EasyTrip können wir nicht auslesen, deshalb geben wir immer 0,1 als Betrag mit! - - Dim umrechKurs As Double = 1 - If (CDbl(r.Item("rmc_betragBrutto")) <> 0 AndAlso CDbl(r.Item("rmc_euroBrutto")) <> 0) Then - - Dim Brutto_EUR As Double = CDbl(r.Item("rmc_euroBrutto")) - Dim Brutto_org As Double = CDbl(r.Item("rmc_betragBrutto")) - - 'umrechKurs = frmdw / eur - - umrechKurs = Math.Floor((Brutto_org / Brutto_EUR * 100 + 0.5)) / 100 - - End If - - If CDbl(r.Item("rmc_betragMWST")) <> 0 Then - USTV_POS.UStVPo_USteuerbetragEUR = Math.Round((r.Item("rmc_betragMWST") / umrechKurs), 2) - USTV_POS.UStVPo_Umrechnungskurs = umrechKurs - USTV_POS.UStVPo_USteuerbetrag = r.Item("rmc_betragMWST") - - If USTV_POS.UStVPo_NettobetragEUR Is Nothing Then - USTV_POS.UStVPo_NettobetragEUR = Math.Round((r.Item("rmc_betragNetto") / umrechKurs), 2) + If USTV_POS.INSERT() Then + cRMC.UPDATE_ARCHIV(USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_ReNr.ToString, kdNr, USTV_POS.UStVAn_ID) End If - End If - - If USTV_POS.INSERT() Then - cRMC.UPDATE_ARCHIV(USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_ReNr.ToString, kdNr, USTV_POS.UStVAn_ID) - End If - - ElseIf USTVA_Nettobetragchanged Then - updateNettobetrag(USTV_POS.UStVPo_ReNr, USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_SchnittstellenNr, USTV_POS) + ElseIf USTVA_Nettobetragchanged Then + updateNettobetrag(USTV_POS.UStVPo_ReNr, USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_SchnittstellenNr, USTV_POS) End If diff --git a/SDL/UsrCntlEssensbestellungen.vb b/SDL/UsrCntlEssensbestellungen.vb index 9667c26b..e71bb788 100644 --- a/SDL/UsrCntlEssensbestellungen.vb +++ b/SDL/UsrCntlEssensbestellungen.vb @@ -408,16 +408,26 @@ Public Class UsrCntlessensbestellungen If CheckBox1.Checked = False Then essen.eb_abgerechnet = False essen.eb_abgerechnet_am = DBNull.Value + Else + essen.eb_abgerechnet = True + If IsDBNull(essen.eb_abgerechnet_am) OrElse IsNothing(essen.eb_abgerechnet_am) Then essen.eb_abgerechnet_am = Now() End If If CheckBox2.Checked = False Then essen.eb_storniert = False essen.eb_storniert_am = DBNull.Value + Else + essen.eb_storniert = True + essen.eb_storniert_am = Now() + If IsDBNull(essen.eb_storniert_am) OrElse IsNothing(essen.eb_storniert_am) Then essen.eb_storniert_am = Now() End If If CheckBox3.Checked = False Then essen.eb_gesendet = False essen.eb_gesendet_am = DBNull.Value + Else + essen.eb_gesendet = True + If IsDBNull(essen.eb_gesendet_am) OrElse IsNothing(essen.eb_gesendet_am) Then essen.eb_gesendet_am = Now() End If essen.eb_MenuID = MenuID diff --git a/SDL/mdm/frmMDMDatenverarbetiung.vb b/SDL/mdm/frmMDMDatenverarbetiung.vb index 61fc1262..d4599490 100644 --- a/SDL/mdm/frmMDMDatenverarbetiung.vb +++ b/SDL/mdm/frmMDMDatenverarbetiung.vb @@ -1675,7 +1675,7 @@ Public Class frmMDMDatenverarbetiung Dim top = "" Dim sqlWhere = "" Select Case art - Case "IDS" : sqlWhere = " AND tblIDSTransactionsNew.OutletCountryCode<>740543" + Case "IDS" : sqlWhere = " AND tblIDSTransactionsNew.OutletCountryCode<>740543 and Adressen.AdressenNr = 402022 " Case "IDS_AT" : sqlWhere = " AND tblIDSTransactionsNew.OutletCountryCode=740543" Case Else MsgBox("falscher Typ!") : Return False @@ -1731,7 +1731,10 @@ Public Class frmMDMDatenverarbetiung Dim SPEDBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch = Nothing Dim verarbOK = IIf(test, False, True) - Dim RECHNUNG As cRechnungsausgang = Nothing + 'Dim RECHNUNG As cRechnungsausgang = Nothing + + Dim integerTem = 3051176 + Dim RECHNUNG As New cRechnungsausgang(integerTem) If Not gen_SPEDBUCH_ByKdNr(IDS("KdNrVERAG"), SPEDBUCH, art,,,, datPloseAnhang.Value) Then verarbOK = False If Not gen_RECHNUNG_BySPEDBUCH(IDS("KdNrVERAG"), SPEDBUCH, art,,,, RECHNUNG) Then verarbOK = False @@ -3224,7 +3227,7 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land rpt.txtKunde.Text &= " " & SQL.isDbnullEmpty(rpt.Fields.Item("Name 1").Value, "") Dim Station As String = "" - If Gruppierung_nach_Ort Then + If Gruppierung_nach_Ort And art <> "IDS" Then Station = SQL.isDbnullEmpty(rpt.Fields.Item("OutletOrt").Value, "") If Station <> "" Then Station = " (" & Station & ")" diff --git a/SDL/zoll/usrCntlAuswertungenAufschub_AbgabenKontrolleTRIER.vb b/SDL/zoll/usrCntlAuswertungenAufschub_AbgabenKontrolleTRIER.vb index 458f614a..21e71281 100644 --- a/SDL/zoll/usrCntlAuswertungenAufschub_AbgabenKontrolleTRIER.vb +++ b/SDL/zoll/usrCntlAuswertungenAufschub_AbgabenKontrolleTRIER.vb @@ -55,6 +55,8 @@ Public Class usrCntlAuswertungenAufschub_AbgabenKontrolleTRIER dt.Columns.Add("Betrag") dt.Columns.Add("Fakturiert") dt.Columns.Add("Differenz") + dt.Columns.Add("BezugsNr") + dt.Columns.Add("BelegNr") ' Dim fileReader() = System.IO.File.ReadAllLines(fd.FileName, System.Text.Encoding.UTF32) Dim cnt = 1 @@ -112,10 +114,13 @@ Public Class usrCntlAuswertungenAufschub_AbgabenKontrolleTRIER For Each r As DataRow In dt_Dateneinlesung.Rows Dim SQLWHere = "" + Dim SQLWHereSPEDBUCH = "" If r.Item("ATC") <> "" Then - SQLWHere = "[Status]<>0 and DruckDatumZeit is not null and (left([RechnungsausgangPositionen].Belegdaten,21)='" & r.Item("ATC") & "' or [RechnungsausgangPositionen].[Weitere_Reg_Nr] ='" & r.Item("ATC").value & "' ) AND [AufschubkontoNr]='" & AKTO & "'" + SQLWHere = "[Status]<>0 and DruckDatumZeit is not null and (left([RechnungsausgangPositionen].Belegdaten,21)='" & r.Item("ATC") & "' or [RechnungsausgangPositionen].[Weitere_Reg_Nr] ='" & r.Item("ATC").value & "' ) AND [AufschubkontoNr]='" & AKTO & "'" + SQLWHereSPEDBUCH = "WHERE BelegNr = '" & r.Item("ATC") & "'" ElseIf r.Item("MRN") <> "" Then - SQLWHere = "[Status]<>0 and DruckDatumZeit is not null and left([RechnungsausgangPositionen].Belegdaten,21)='" & r.Item("MRN") & "' AND [AufschubkontoNr]='" & AKTO & "'" + SQLWHere = "[Status]<>0 and DruckDatumZeit is not null and left([RechnungsausgangPositionen].Belegdaten,21)='" & r.Item("MRN") & "' AND [AufschubkontoNr]='" & AKTO & "'" + SQLWHereSPEDBUCH = "WHERE BelegNr = '" & r.Item("MRN") & "'" End If Dim fakturiert = CDbl(SQL.DLookup("sum(Preis)", "Rechnungsausgang inner join [RechnungsausgangPositionen] On Rechnungsausgang.RK_ID=[RechnungsausgangPositionen].RK_ID", SQLWHere, "FMZOLL", "0")) @@ -123,11 +128,58 @@ Public Class usrCntlAuswertungenAufschub_AbgabenKontrolleTRIER Dim differenz = fakturiert - r.Item("betrag") If Not cbx.Checked OrElse differenz <> 0 Then + Dim BezugsNr As String = "" + Dim BelegNr As String = "" + + If fakturiert = 0 Then 'dann keine existierende Rechnung... + + Dim dt_SPED_entry As DataTable = SQL.loadDgvBySql("select FilialenNr, AbfertigungsNr from Speditionsbuch " & SQLWHereSPEDBUCH, "FMZOLL") + + For Each SPEDBUCH_row As DataRow In dt_SPED_entry.Rows + + BezugsNr &= SPEDBUCH_row.Item("FilialenNr") & "/" & SPEDBUCH_row.Item("AbfertigungsNr") & ", " + + Next + + If BezugsNr.Trim() <> "" AndAlso BezugsNr.Trim.EndsWith(",") Then + BezugsNr = BezugsNr.Trim().TrimEnd(","c) + End If + + erg &= r.Item("Zollamt") & " - " & IIf(r.Item("ATC") <> "", r.Item("ATC"), r.Item("MRN")) & ": " & r.Item("Betrag") & " | " & differenz & vbNewLine + dt.Rows.Add({AKTO, Faelligkeit, IIf(r.Item("ATC") <> "", r.Item("ATC"), r.Item("MRN")), r.Item("Datum"), r.Item("Zollamt"), r.Item("Betrag"), fakturiert, differenz, BezugsNr, BelegNr}) + + Else + + Dim dtFakturiert As DataTable = SQL.loadDgvBySql("select max(RechnungsNr) as RechnungsNr ,max(FilialenNr) as FilialenNr , max(AbfertigungsNr) as AbfertigungsNr from Rechnungsausgang inner join [RechnungsausgangPositionen] On Rechnungsausgang.RK_ID=[RechnungsausgangPositionen].RK_ID WHERE " & SQLWHere & " group by RechnungsNr", "FMZOLL") + + If dtFakturiert.Rows.Count > 0 Then + + For Each rechnungs_row In dtFakturiert.Rows + + BezugsNr &= rechnungs_row.Item("FilialenNr") & "/" & rechnungs_row.Item("AbfertigungsNr") & ", " + BelegNr &= rechnungs_row.Item("RechnungsNr") & ", " + + Next + + If BelegNr.Trim() <> "" AndAlso BelegNr.Trim.EndsWith(",") Then + BelegNr = BelegNr.Trim().TrimEnd(","c) + End If + If BezugsNr.Trim() <> "" AndAlso BezugsNr.Trim.EndsWith(",") Then + BezugsNr = BezugsNr.Trim().TrimEnd(","c) + End If + + + End If + + erg &= r.Item("Zollamt") & " - " & IIf(r.Item("ATC") <> "", r.Item("ATC"), r.Item("MRN")) & ": " & r.Item("Betrag") & " | " & differenz & vbNewLine + dt.Rows.Add({AKTO, Faelligkeit, IIf(r.Item("ATC") <> "", r.Item("ATC"), r.Item("MRN")), r.Item("Datum"), r.Item("Zollamt"), r.Item("Betrag"), fakturiert, differenz, BezugsNr, BelegNr}) + + End If + + - erg &= r.Item("Zollamt") & " - " & IIf(r.Item("ATC") <> "", r.Item("ATC"), r.Item("MRN")) & ": " & r.Item("Betrag") & " | " & differenz & vbNewLine - dt.Rows.Add({AKTO, Faelligkeit, IIf(r.Item("ATC") <> "", r.Item("ATC"), r.Item("MRN")), r.Item("Datum"), r.Item("Zollamt"), r.Item("Betrag"), fakturiert, differenz}) End If - cnt += 1 + cnt += 1 lnlCnt.Text = cnt '& "/" & Flines.Count Me.Refresh() Next diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cRMC.vb b/VERAG_PROG_ALLGEMEIN/Classes/cRMC.vb index f1152937..b2bde650 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cRMC.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cRMC.vb @@ -28,6 +28,7 @@ Public Class cRMC Property rmc_sammelReNr As Object = Nothing Property UStVAn_ID As Object = Nothing Property rmc_daId_InvAtt As Object = Nothing + Property rmc_isBTO As Boolean = False Public hasEntry = False @@ -37,19 +38,27 @@ Public Class cRMC End Sub - Sub New(rmc_kdNr, rmc_reNr) + Sub New(rmc_kdNr As String, rmc_reNr As String) Me.rmc_kdNr = rmc_kdNr Me.rmc_reNr = rmc_reNr LOAD() End Sub - Sub New(rmc_kdNr, rmc_reNr, rmc_reDatum) + Sub New(rmc_kdNr As String, rmc_reNr As String, rmc_reDatum As String) Me.rmc_kdNr = rmc_kdNr Me.rmc_reNr = rmc_reNr Me.rmc_reDatum = rmc_reDatum LOAD() End Sub + + Sub New(rmc_kdNr As String, rmc_reDatum As String, rmc_landKZ As String, rmc_isBTO As Boolean) + Me.rmc_kdNr = rmc_kdNr + Me.rmc_landKZ = rmc_landKZ + Me.rmc_reDatum = rmc_reDatum + Me.rmc_isBTO = rmc_isBTO + LOADCountry() + End Sub Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) 'list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_id", rmc_id)) @@ -77,6 +86,7 @@ Public Class cRMC list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_betragMWST", rmc_betragMWST)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVAn_ID", UStVAn_ID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_daId_InvAtt", rmc_daId_InvAtt)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_isBTO", rmc_isBTO)) Return list @@ -126,6 +136,37 @@ Public Class cRMC End Try End Sub + Public Sub LOADCountry() + Try + hasEntry = False + Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() + Using cmd As New SqlCommand("SELECT * FROM tblRMCImport WHERE rmc_kdNr=@rmc_kdNr AND rmc_landKZ = @rmc_landKZ and rmc_reDatum = @rmc_reDatum and rmc_isBTO = @rmc_isBTO ", conn) + cmd.Parameters.AddWithValue("@rmc_kdNr", rmc_kdNr) + cmd.Parameters.AddWithValue("@rmc_landKZ", rmc_landKZ) + cmd.Parameters.AddWithValue("@rmc_reDatum", rmc_reDatum) + cmd.Parameters.AddWithValue("@rmc_isBTO", rmc_isBTO) + Dim dr = cmd.ExecuteReader() + If dr.Read Then + For Each li In getParameterList() + Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable) + + If dr.Item(li.Text) Is DBNull.Value Then + propInfo.SetValue(Me, Nothing) + Else + propInfo.SetValue(Me, dr.Item(li.Text)) + End If + + Next + hasEntry = True + End If + dr.Close() + End Using + End Using + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) + End Try + End Sub + Public Function getUpdateCmd() As String @@ -175,11 +216,11 @@ Public Class cRMC Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() - Using cmd As New SqlCommand(" SELECT rmc_reDatum,rmc_kdNr,[rmc_reNr],sum([rmc_betragNetto])[rmc_betragNetto],sum([rmc_betragMWST])[rmc_betragMWST] ,sum([rmc_betragBrutto] )[rmc_betragBrutto], [rmc_waehrung], sum([rmc_euroBrutto])[rmc_euroBrutto], rmc_daId, isnull(rmc_daId_InvAtt,0) as rmc_daId_InvAtt FROM [tblRMCImport] + Using cmd As New SqlCommand(" SELECT rmc_reDatum,rmc_kdNr,[rmc_reNr],sum([rmc_betragNetto])[rmc_betragNetto],sum([rmc_betragMWST])[rmc_betragMWST] ,sum([rmc_betragBrutto] )[rmc_betragBrutto], [rmc_waehrung], sum([rmc_euroBrutto])[rmc_euroBrutto], rmc_daId, isnull(rmc_daId_InvAtt,0) as rmc_daId_InvAtt, isnull(rmc_isBTO,0) as rmc_isBTO FROM [tblRMCImport] INNER JOIN Adressen as adr on rmc_kdNr=adr.[WölflKundenNr] or rmc_kdNr=adr.[weitereWölflKundenNr] where cast(rmc_reDatum as date) between @von and @bis and AdressenNr=@AdressenNr AND rmc_landKZ ='" & LandKZ & "'" & IIf(Not Archiv, " And rmc_archiv = 0 ", "") & " - group by rmc_reDatum,rmc_kdNr,[rmc_reNr],[rmc_waehrung], rmc_daId, isnull(rmc_daId_InvAtt,0) + group by rmc_reDatum,rmc_kdNr,[rmc_reNr],[rmc_waehrung], rmc_daId, isnull(rmc_daId_InvAtt,0), isnull(rmc_isBTO,0) having sum([rmc_betragMWST])<>0 order by rmc_reDatum", conn) diff --git a/VERAG_PROG_ALLGEMEIN/My Project/Resources.Designer.vb b/VERAG_PROG_ALLGEMEIN/My Project/Resources.Designer.vb index bf2021ae..1f3e7c2d 100644 --- a/VERAG_PROG_ALLGEMEIN/My Project/Resources.Designer.vb +++ b/VERAG_PROG_ALLGEMEIN/My Project/Resources.Designer.vb @@ -240,6 +240,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/VERAG_PROG_ALLGEMEIN/My Project/Resources.resx b/VERAG_PROG_ALLGEMEIN/My Project/Resources.resx index df13acb0..7e656d94 100644 --- a/VERAG_PROG_ALLGEMEIN/My Project/Resources.resx +++ b/VERAG_PROG_ALLGEMEIN/My Project/Resources.resx @@ -202,7 +202,7 @@ XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALDQAACw0B7QfALAAA9UFJREFUeF7s/QmUbOtB + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALDAAACwwBP0AiyAAA9UFJREFUeF7s/QmUbOtB nge3dDWjCQlL14CExBXCBsEFMwsEBptrScw4xsZJcBzMIn8wSWyWcRziBNvEg8BDYjm//5g4eMBmMJiL BzAIIdlEuqfneaiqruquqWueusaurtr/eoveV32+3eec7uoavm/X86z1rHPOd3qorl171/f0npY8z1tC REREREREHNfAACIiIiIiIuJdDAwgIiIiIiIi3sXAACIiIiIiIuJdDAwgIiIiIiIi3sXAACIiIiIiIuJd @@ -2029,4 +2029,10 @@ ..\Resources\sRGB2014.icc;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/VERAG_PROG_ALLGEMEIN/Resources/KVI_report.xlsx b/VERAG_PROG_ALLGEMEIN/Resources/KVI_report.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..50716592ecbde3dec14903aefb7f0d20dfd71021 GIT binary patch literal 10500 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 literal 0 HcmV?d00001 diff --git a/VERAG_PROG_ALLGEMEIN/Resources/KVI_report_general.xlsx b/VERAG_PROG_ALLGEMEIN/Resources/KVI_report_general.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..160e9f010a9ebdb4fa49cff815acc66fb215afa9 GIT binary patch literal 10318 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 literal 0 HcmV?d00001 diff --git a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj index 0d211557..5390ae19 100644 --- a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj +++ b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj @@ -973,6 +973,8 @@ PreserveNewest + + diff --git a/VERAG_PROG_ALLGEMEIN/cAllgemein.vb b/VERAG_PROG_ALLGEMEIN/cAllgemein.vb index 0cd73530..a04d9d27 100644 --- a/VERAG_PROG_ALLGEMEIN/cAllgemein.vb +++ b/VERAG_PROG_ALLGEMEIN/cAllgemein.vb @@ -1,6 +1,5 @@ Imports System.Data.SqlClient Imports System.IO - Public Class cAllgemein Public Shared FIRMA As String Public Shared NIEDERLASSUNG As String 'SUB, WAI, ... @@ -153,7 +152,7 @@ Public Class cAllgemein Try 'DRUCKER LADEN Dim sPrinters As New ArrayList For Each sPrinter As String In System.Drawing.Printing.PrinterSettings.InstalledPrinters - sPrinters.Add(sPrinter) + sPrinters.add(sPrinter) Next VERAG_PROG_ALLGEMEIN.cAllgemein.PRINTER_LIST = sPrinters Catch ex As Exception @@ -686,4 +685,1349 @@ Public Class cNCTS_GUARANTEES +End Class + +Public Class cSpeditionsbuchReport + + Public Function RunReport_VERAG_ZA_DETAIL(KDNR As Integer, + AbfVon As Date, + AbfBis As Date, + Optional whereStr As String = "", + Optional Open As Boolean = True, Optional list As List(Of SQLVariable) = Nothing, + Optional showMessage As Boolean = True) As String + Try + Dim dt As DataTable = LoadSpeditionsbuchData(KDNR, AbfVon, AbfBis, whereStr, list) + If dt Is Nothing OrElse dt.Rows.Count = 0 Then + Return "" + End If + + Dim path As String = CreateTargetPath(AbfVon, AbfBis, "VERAG_RPT_DETAIL_") + Dim templateBytes() As Byte = My.Resources.KVI_report ', My.Resources.KVI_report_general) + My.Computer.FileSystem.WriteAllBytes(path, templateBytes, False) + + Dim exclApp As Object = Nothing + Dim datei As Object = Nothing + Dim blatt As Object = Nothing + + Try + exclApp = CreateObject("Excel.Application") + exclApp.Visible = False + + datei = exclApp.Workbooks.Open(path) + blatt = datei.Worksheets(1) + + Dim errorTmp = "" + CreateDetailReport(blatt, dt, KDNR, errorTmp) + ' CreateGeneralReport(blatt, dt, KDNR, AbfVon, AbfBis) + + If errorTmp <> "" AndAlso showMessage Then + MsgBox("Fehlende Datensätze des Detailberichtes (SpedBuch vorhanden): " & vbCrLf & errorTmp.Trim) + End If + + datei.Save() + + If Open Then + exclApp.Visible = True + Else + datei.Close(True) + exclApp.Quit() + End If + + Catch ex As Exception + Try + If datei IsNot Nothing Then datei.Close(False) + Catch + End Try + + Try + If exclApp IsNot Nothing Then exclApp.Quit() + Catch + End Try + + MsgBox(ex.Message & vbCrLf & ex.StackTrace) + Return "" + End Try + + Return path + + Catch ex As Exception + MsgBox(ex.Message & vbCrLf & ex.StackTrace) + Return "" + End Try + End Function + + Public Function RunReport_VERAG_ZA_GENERAL(KDNR As Integer, + AbfVon As Date, + AbfBis As Date, + Optional whereStr As String = "", + Optional Open As Boolean = True, + Optional DL_Kosten As Boolean = False, + Optional list As List(Of SQLVariable) = Nothing, + Optional showMessage As Boolean = True) As String + Try + Dim dt As DataTable = LoadSpeditionsbuchData(KDNR, AbfVon, AbfBis, whereStr, list) + If dt Is Nothing OrElse dt.Rows.Count = 0 Then + Return "" + End If + + Dim path As String = CreateTargetPath(AbfVon, AbfBis, "VERAG_RPT_GENERAL") + Dim templateBytes() As Byte = My.Resources.KVI_report_general + My.Computer.FileSystem.WriteAllBytes(path, templateBytes, False) + + Dim exclApp As Object = Nothing + Dim datei As Object = Nothing + Dim blatt As Object = Nothing + + Try + exclApp = CreateObject("Excel.Application") + exclApp.Visible = False + + datei = exclApp.Workbooks.Open(path) + blatt = datei.Worksheets(1) + + + CreateGeneralReport(blatt, dt, KDNR, AbfVon, AbfBis, DL_Kosten, showMessage) + + + datei.Save() + + If Open Then + exclApp.Visible = True + Else + datei.Close(True) + exclApp.Quit() + End If + + Catch ex As Exception + Try + If datei IsNot Nothing Then datei.Close(False) + Catch + End Try + + Try + If exclApp IsNot Nothing Then exclApp.Quit() + Catch + End Try + + MsgBox(ex.Message & vbCrLf & ex.StackTrace) + Return "" + End Try + + Return path + + Catch ex As Exception + MsgBox(ex.Message & vbCrLf & ex.StackTrace) + Return "" + End Try + End Function + + + + Private Function LoadSpeditionsbuchData(KDNR As Integer, + AbfVon As Date, + AbfBis As Date, + Optional whereStr As String = "", Optional list As List(Of SQLVariable) = Nothing) As DataTable + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + + Dim sqlText As String = + "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, " & + " SendungID " & + "FROM Speditionsbuch " & + "INNER JOIN [Abfertigungsarten] " & + " ON Speditionsbuch.Abfertigungsart = Abfertigungsarten.Abfertigungsart " & + "WHERE 1=1 AND" & If(KDNR > 0, " (EmpfängerKundenNr IN (" & KDNR & ") OR VermittlerKundenNr IN (" & KDNR & ")) AND ", "") & + " Abfertigungsdatum BETWEEN '" & AbfVon.ToShortDateString & "' AND '" & AbfBis.ToShortDateString & "' " & + " AND isAbfertigung = 1 " + + Return SQL.loadDgvBySql_Param(sqlText & " " & whereStr, "FMZOLL",, list) + End Function + + Private Function CreateTargetPath(AbfVon As Date, AbfBis As Date, prefix As String) As String + 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 path As String = sPath & prefix & AbfVon.ToString("yyyy-MM-dd") & "-" & AbfBis.ToString("yyyy-MM-dd") & ".xlsx" + + While System.IO.File.Exists(path) + path = sPath & prefix & AbfVon.ToString("yyyy-MM-dd") & "-" & AbfBis.ToString("yyyy-MM-dd") & "_" & Now.ToString("ddMMyyyyHHmmss") & ".xlsx" + End While + + Return path + End Function + + Private Function LoadCustomsDeclaration(r As DataRow) As cVERAG_CustomsDeclarations + Dim cd As cVERAG_CustomsDeclarations = Nothing + + Dim belegNr As String = If(r("BelegNr"), "").ToString().Trim() + If belegNr <> "" Then + cd = cVERAG_CustomsDeclarations.loadByMRN(belegNr, True) + End If + + If cd Is Nothing OrElse Not cd.hasEntry Then + Dim sendungsId As String = If(r("SendungID"), "").ToString().Trim() + If sendungsId <> "" Then + cd = cVERAG_CustomsDeclarations.loadBySendungsID(sendungsId, True) + End If + End If + + If cd Is Nothing Then cd = New cVERAG_CustomsDeclarations + + Return cd + End Function + + Private Sub CreateDetailReport(blatt As Object, dt As DataTable, kdnr As Integer, ByRef errorTmp As String) + Dim cnt As Integer = 2 + + For Each r As DataRow In dt.Rows + Try + Dim cd As cVERAG_CustomsDeclarations = LoadCustomsDeclaration(r) + + If Not cd.hasEntry Then + errorTmp &= If(r("BelegNr"), "").ToString() & " " & + If(r("FilialenNr"), "").ToString() & "/" & + If(r("AbfertigungsNr"), "").ToString() & vbNewLine + Else 'Durch else wird nur Zeile geschrieben, wenn auch eine Zolldeklaration gefunden wurde. Sonst wird nur eine Fehlermeldung ausgegeben. + + WriteDetailReportRow(blatt, r, cd, cnt, kdnr) + + End If + Catch ex As Exception + MsgBox(ex.Message & vbCrLf & ex.StackTrace) + End Try + Next + End Sub + + Private Sub CreateGeneralReport(blatt As Object, + dt As DataTable, + kdnr As Integer, + AbfVon As Date, + AbfBis As Date, Optional DL_Kosten As Boolean = False, Optional ShowMessage As Boolean = True) + blatt.Range("I1").Value = AbfVon.ToShortDateString & "-" & AbfBis.ToShortDateString + + Dim cnt As Integer = 3 + + For Each r As DataRow In dt.Rows + Try + Dim cd As cVERAG_CustomsDeclarations = LoadCustomsDeclaration(r) + + If Not cd.hasEntry AndAlso ShowMessage Then + MsgBox("ERROR: Nicht gefunden: " & + If(r("BelegNr"), "").ToString() & " " & + If(r("FilialenNr"), "").ToString() & "/" & + If(r("AbfertigungsNr"), "").ToString()) + End If + + WriteGeneralReportRow(blatt, r, cd, cnt, kdnr, DL_Kosten) + + Catch ex As Exception + MsgBox(ex.Message & vbCrLf & ex.StackTrace) + End Try + Next + End Sub + + Private Sub WriteDetailReportRow(blatt As Object, + r As DataRow, + cd As cVERAG_CustomsDeclarations, + ByRef cnt As Integer, + kdnrsrch As Integer) + + Dim kdAtrNr As String = NormalizeKdAuftragsNr(r("KdAuftragsNr"), kdnrsrch) + + + + + If cd IsNot Nothing AndAlso cd.hasEntry Then + + Dim empfaenger As String = GetPartyName(cd, cVERAG_CustomsDeclarations.IMPORTER_ROLES, "") + Dim absender As String = GetPartyName(cd, cVERAG_CustomsDeclarations.EXPORTER_ROLES, "") + + If cd.Items IsNot Nothing AndAlso cd.Items.Count > 0 Then + + For Each item As cVERAG_CustomsDeclarations_Item In cd.Items + + ' Abgaben kommen jetzt von der Position + Dim eustBetrag As Decimal = GetDutyAmount(item, {"B%", "B00", "EUST", "VAT"}) + Dim zollBetrag As Decimal = GetDutyAmountExcluding(item, {"B%", "B00", "EUST", "VAT"}) + + Dim itemInvoiceAmount As Decimal = + If(item.zaItem_InvoiceValueForeign, item.zaItem_InvoiceValueEUR) + + Dim zollInProzent As Double = 0 + + If itemInvoiceAmount <> 0 Then + zollInProzent = CDbl(zollBetrag / itemInvoiceAmount * 100D) + 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 = empfaenger + blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") + blatt.Range("F" & cnt).Value = kdAtrNr + blatt.Range("G" & cnt).Value = + If(Not String.IsNullOrWhiteSpace(If(r("BelegNr"), "").ToString()), + r("BelegNr"), + cd.za_MRN) + + blatt.Range("H" & cnt).Value = item.zaItem_PosNo + blatt.Range("I" & cnt).Value = item.zaItem_HSCode + blatt.Range("J" & cnt).Value = "-" + blatt.Range("K" & cnt).Value = item.zaItem_Description + blatt.Range("L" & cnt).Value = "" + + blatt.Range("M" & cnt).Value = + If(Not String.IsNullOrWhiteSpace(If(item.zaItem_InvoiceCurrency, "")), + item.zaItem_InvoiceCurrency, + cd.za_InvoiceCurrency) + + blatt.Range("N" & cnt).Value = item.zaItem_MainProcedure + blatt.Range("O" & cnt).Value = cd.za_EntryCustomsOffice + blatt.Range("P" & cnt).Value = If(item.zaItem_PosNo = 1, cd.za_TotGrossMass, "") + blatt.Range("Q" & cnt).Value = item.zaItem_NetMass + blatt.Range("R" & cnt).Value = itemInvoiceAmount + blatt.Range("S" & cnt).Value = eustBetrag + blatt.Range("T" & cnt).Value = zollBetrag + blatt.Range("U" & cnt).Value = zollInProzent.ToString("N2") & " %" + blatt.Range("V" & cnt).Value = cd.za_CountryDispatch + blatt.Range("W" & cnt).Value = absender + blatt.Range("X" & cnt).Value = item.zaItem_OriginCountry + blatt.Range("Y" & cnt).Value = cd.za_CountryDestination + blatt.Range("Z" & cnt).Value = cd.za_Incoterms + blatt.Range("AA" & cnt).Value = cd.za_IncotermsPlace + + blatt.Range("AB" & cnt).Value = + item.zaItem_MainProcedure & + If(Not String.IsNullOrWhiteSpace(item.zaItem_AdditionalProc), + "/" & item.zaItem_AdditionalProc, + "") + + blatt.Range("AC" & cnt).Value = item.zaItem_PreferenceCode + blatt.Range("AD" & cnt).Value = If(IsItemCBAM(item), "Y", "N") + blatt.Range("AE" & cnt).Value = item.GetInvoiceListString() + + + cnt += 1 + + Next + + Else + + 'Fallback: wenn keine Positionen vorhanden sind, + 'weiterhin Header-Duties verwenden + + Dim eustBetrag As Decimal = + GetDutyAmount(cd, {"B%", "B00", "EUST", "VAT"}) + + Dim zollBetrag As Decimal = + GetDutyAmountExcluding(cd, {"B%", "B00", "EUST", "VAT"}) + + Dim invoiceAmount As Decimal = If(cd.za_InvoiceAmount, 0D) + + Dim zollInProzent As Double = 0 + + If invoiceAmount <> 0 Then + zollInProzent = CDbl(zollBetrag / invoiceAmount * 100D) + 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 = empfaenger + blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") + blatt.Range("F" & cnt).Value = kdAtrNr + + blatt.Range("G" & cnt).Value = + If(Not String.IsNullOrWhiteSpace(If(r("BelegNr"), "").ToString()), + r("BelegNr"), + cd.za_MRN) + + 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 = cd.za_InvoiceCurrency + blatt.Range("N" & cnt).Value = cd.za_MainProcedure + blatt.Range("O" & cnt).Value = cd.za_EntryCustomsOffice + blatt.Range("P" & cnt).Value = cd.za_TotGrossMass + blatt.Range("Q" & cnt).Value = "" + blatt.Range("R" & cnt).Value = cd.za_InvoiceAmount + blatt.Range("S" & cnt).Value = eustBetrag + blatt.Range("T" & cnt).Value = zollBetrag + blatt.Range("U" & cnt).Value = zollInProzent.ToString("N2") & " %" + blatt.Range("V" & cnt).Value = cd.za_CountryDispatch + blatt.Range("W" & cnt).Value = absender + blatt.Range("X" & cnt).Value = "" + blatt.Range("Y" & cnt).Value = cd.za_CountryDestination + blatt.Range("Z" & cnt).Value = cd.za_Incoterms + blatt.Range("AA" & cnt).Value = cd.za_IncotermsPlace + blatt.Range("AB" & cnt).Value = "" + blatt.Range("AC" & cnt).Value = "" + blatt.Range("AD" & cnt).Value = "" + blatt.Range("AE" & cnt).Value = "" + + cnt += 1 + + End If + + Else + + 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 = r("Empfänger") + blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") + blatt.Range("F" & cnt).Value = kdAtrNr + blatt.Range("G" & cnt).Value = r("BelegNr") + + + + cnt += 1 + + End If + + End Sub + + Private Function GetDienstleistungskosten(r As DataRow, kdnrsrch As Integer) As Decimal + Try + Dim sqlstr As String = + "SELECT ISNULL(SUM(pos.SteuerfreierBetrag + pos.SteuerpflichtigerBetrag), 0) " & + "FROM Rechnungsausgang RK " & + "INNER JOIN RechnungsausgangPositionen POS ON RK.RK_ID = POS.RK_ID " & + "INNER JOIN Leistungen ON POS.LeistungsNr = Leistungen.LeistungsNr " & + "WHERE RK.FilialenNr = " & CInt(r("FilialenNr")) & " " & + "AND RK.AbfertigungsNr = " & CInt(r("AbfertigungsNr")) & " " & + "AND Leistungen.Abfertigungskosten = 1 " & + "AND Leistungen.abzugsfaehigInZZ = 0 " & + "AND RK.RechnungsKundenNr = " & kdnrsrch + Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL + + Return SQL.getValueTxtBySql(sqlstr, "FMZOLL",,, 0) + + Catch + Return 0D + End Try + End Function + Private Sub WriteDetailReportRow_OLD(blatt As Object, + r As DataRow, + cd As cVERAG_CustomsDeclarations, + ByRef cnt As Integer, + kdnrsrch As Integer) + + Dim kdAtrNr As String = NormalizeKdAuftragsNr(r("KdAuftragsNr"), kdnrsrch) + + If cd IsNot Nothing AndAlso cd.hasEntry Then + Dim empfaenger As String = GetPartyName(cd, cVERAG_CustomsDeclarations.IMPORTER_ROLES, "") + Dim absender As String = GetPartyName(cd, cVERAG_CustomsDeclarations.EXPORTER_ROLES, "") + + Dim eustBetrag As Decimal = GetDutyAmount(cd, {"B%", "B00", "EUST", "VAT"}) + Dim zollBetrag As Decimal = GetDutyAmountExcluding(cd, {"B%", "B00", "EUST", "VAT"}) + + Dim invoiceAmount As Decimal = If(cd.za_InvoiceAmount, 0D) + Dim zollInProzent As Double = 0 + + If invoiceAmount <> 0 Then + zollInProzent = CDbl(zollBetrag / invoiceAmount * 100D) + End If + + If cd.Items IsNot Nothing AndAlso cd.Items.Count > 0 Then + Dim rowcounter As Integer = 0 + + For Each item As cVERAG_CustomsDeclarations_Item In cd.Items + 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 = empfaenger + blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") + blatt.Range("F" & cnt).Value = kdAtrNr + blatt.Range("G" & cnt).Value = If(Not String.IsNullOrWhiteSpace(If(r("BelegNr"), "").ToString()), r("BelegNr"), cd.za_MRN) + blatt.Range("H" & cnt).Value = item.zaItem_PosNo + blatt.Range("I" & cnt).Value = item.zaItem_HSCode + blatt.Range("J" & cnt).Value = "-" + blatt.Range("K" & cnt).Value = item.zaItem_Description + blatt.Range("L" & cnt).Value = "" + blatt.Range("M" & cnt).Value = cd.za_InvoiceCurrency + blatt.Range("N" & cnt).Value = item.zaItem_MainProcedure 'cd.za_MainProcedure + blatt.Range("O" & cnt).Value = cd.za_EntryCustomsOffice + blatt.Range("P" & cnt).Value = If(item.zaItem_PosNo = 1, cd.za_TotGrossMass, "") + blatt.Range("Q" & cnt).Value = item.zaItem_NetMass + blatt.Range("R" & cnt).Value = If(item.zaItem_InvoiceValueForeign, item.zaItem_InvoiceValueEUR) + blatt.Range("S" & cnt).Value = If(rowcounter = 0, eustBetrag, "") + blatt.Range("T" & cnt).Value = If(rowcounter = 0, zollBetrag, "") + blatt.Range("U" & cnt).Value = If(rowcounter = 0, zollInProzent.ToString("N2") & " %", "") + blatt.Range("V" & cnt).Value = cd.za_CountryDispatch + blatt.Range("W" & cnt).Value = absender + blatt.Range("X" & cnt).Value = item.zaItem_OriginCountry + blatt.Range("Y" & cnt).Value = cd.za_CountryDestination + blatt.Range("Z" & cnt).Value = cd.za_Incoterms + blatt.Range("AA" & cnt).Value = cd.za_IncotermsPlace + blatt.Range("AB" & cnt).Value = item.zaItem_MainProcedure & If(Not String.IsNullOrWhiteSpace(item.zaItem_AdditionalProc), "/" & item.zaItem_AdditionalProc, "") + blatt.Range("AC" & cnt).Value = item.zaItem_PreferenceCode + blatt.Range("AD" & cnt).Value = If(IsItemCBAM(item), "Y", "N") + blatt.Range("AE" & cnt).Value = item.GetInvoiceListString() + + cnt += 1 + rowcounter += 1 + Next + Else + 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 = empfaenger + blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") + blatt.Range("F" & cnt).Value = kdAtrNr + blatt.Range("G" & cnt).Value = If(Not String.IsNullOrWhiteSpace(If(r("BelegNr"), "").ToString()), r("BelegNr"), cd.za_MRN) + 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 = cd.za_InvoiceCurrency + blatt.Range("N" & cnt).Value = cd.za_MainProcedure + blatt.Range("O" & cnt).Value = cd.za_EntryCustomsOffice + blatt.Range("P" & cnt).Value = "" + blatt.Range("Q" & cnt).Value = "" + blatt.Range("R" & cnt).Value = "" + blatt.Range("S" & cnt).Value = eustBetrag + blatt.Range("T" & cnt).Value = zollBetrag + blatt.Range("U" & cnt).Value = zollInProzent.ToString("N2") & " %" + blatt.Range("V" & cnt).Value = cd.za_CountryDispatch + blatt.Range("W" & cnt).Value = absender + blatt.Range("X" & cnt).Value = "" + blatt.Range("Y" & cnt).Value = cd.za_CountryDestination + blatt.Range("Z" & cnt).Value = cd.za_Incoterms + blatt.Range("AA" & cnt).Value = cd.za_IncotermsPlace + blatt.Range("AB" & cnt).Value = "" + blatt.Range("AC" & cnt).Value = "" + blatt.Range("AD" & cnt).Value = "" + + + cnt += 1 + End If + Else + 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 = r("Empfänger") + blatt.Range("E" & cnt).Value = r("FilialenNr") & "/" & r("AbfertigungsNr") + blatt.Range("F" & cnt).Value = kdAtrNr + blatt.Range("G" & cnt).Value = r("BelegNr") + + cnt += 1 + End If + End Sub + + Private Sub WriteGeneralReportRow(blatt As Object, + r As DataRow, + cd As cVERAG_CustomsDeclarations, + ByRef cnt As Integer, + kdnrsrch As Integer, + Optional DL_Kosten As Boolean = False) + + Dim dienstleistungsKosten As Decimal = 0D + + If DL_Kosten Then + blatt.Range("P2").Value = "Service Costs" + dienstleistungsKosten = GetDienstleistungskosten(r, kdnrsrch) + End If + + Dim kdAtrNr As String = NormalizeKdAuftragsNr(r("KdAuftragsNr"), kdnrsrch) + + + blatt.Range("A" & cnt).Value = cnt - 2 + blatt.Range("B" & cnt).Value = r("Abfertigungsnummer") + 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("G" & cnt).Value = kdAtrNr + blatt.Range("H" & cnt).Value = "" + + If cd IsNot Nothing AndAlso cd.hasEntry Then + Dim zollBetrag As Decimal = GetDutyAmountExcluding(cd, {"B%", "B00", "EUST", "VAT"}) + + blatt.Range("H" & cnt).Value = cd.za_InvoiceAmount + blatt.Range("I" & cnt).Value = GetInvoiceReferences(cd) + blatt.Range("J" & cnt).Value = cd.za_MRN + blatt.Range("K" & cnt).Value = zollBetrag + blatt.Range("L" & cnt).Value = If(cd.Items IsNot Nothing, cd.Items.Count, 0) + blatt.Range("M" & cnt).Value = GetPartyName(cd, cVERAG_CustomsDeclarations.DECLARANT_ROLES, "") + blatt.Range("N" & cnt).Value = GetItemsDescription(cd) + blatt.Range("O" & cnt).Value = cd.za_CountryDispatch & " --> " & cd.za_CountryDestination + + + If DL_Kosten Then + blatt.Range("P" & cnt).Value = dienstleistungsKosten + End If + + Else + If DL_Kosten Then + blatt.Range("I" & cnt).Value = dienstleistungsKosten + End If + End If + + + cnt += 1 + End Sub + + Private Function GetPartyName(cd As cVERAG_CustomsDeclarations, + roles As String(), + Optional fallback As String = "") As String + If cd Is Nothing OrElse cd.Parties Is Nothing Then Return fallback + + Dim p = cd.Parties.FirstOrDefault(Function(x) roles.Contains(If(x.zaParty_Role, "").Trim().ToUpper())) + If p Is Nothing Then Return fallback + + Return If(p.zaParty_Name, fallback) + End Function + + Private Function GetDutyAmount(cd As cVERAG_CustomsDeclarations, dutyTypes As String()) As Decimal + If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D + + Return cd.Duties. + Where(Function(d) DutyTypeMatches(If(d.zaDuty_DutyType, ""), dutyTypes)). + Sum(Function(d) If(d.zaDuty_AmountEUR, 0D)) + End Function + + Private Function GetDutyAmountExcluding(cd As cVERAG_CustomsDeclarations, excludedDutyTypes As String()) As Decimal + If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D + + Return cd.Duties. + Where(Function(d) Not DutyTypeMatches(If(d.zaDuty_DutyType, ""), excludedDutyTypes)). + Sum(Function(d) If(d.zaDuty_AmountEUR, 0D)) + End Function + + Private Function GetDutyAmount(cd As cVERAG_CustomsDeclarations_Item, dutyTypes As String()) As Decimal + If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D + + Return cd.Duties. + Where(Function(d) DutyTypeMatches(If(d.zaDuty_DutyType, ""), dutyTypes)). + Sum(Function(d) If(d.zaDuty_AmountEUR, 0D)) + End Function + + Private Function GetDutyAmountExcluding(cd As cVERAG_CustomsDeclarations_Item, excludedDutyTypes As String()) As Decimal + If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D + + Return cd.Duties. + Where(Function(d) Not DutyTypeMatches(If(d.zaDuty_DutyType, ""), excludedDutyTypes)). + Sum(Function(d) If(d.zaDuty_AmountEUR, 0D)) + End Function + + Private Function DutyTypeMatches(dutyType As String, patterns As String()) As Boolean + Dim value As String = If(dutyType, "").Trim().ToUpper() + If value = "" OrElse patterns Is Nothing Then Return False + + For Each p In patterns + Dim pattern As String = If(p, "").Trim().ToUpper() + If pattern = "" Then Continue For + + If pattern.Contains("%") Then + Dim regexPattern As String = + "^" & System.Text.RegularExpressions.Regex.Escape(pattern).Replace("%", ".*") & "$" + + If System.Text.RegularExpressions.Regex.IsMatch(value, regexPattern) Then + Return True + End If + Else + If value = pattern Then + Return True + End If + End If + Next + + Return False + End Function + + Private Function GetInvoiceReferences(cd As cVERAG_CustomsDeclarations) As String + If cd Is Nothing OrElse cd.Documents Is Nothing OrElse cd.Documents.Count = 0 Then Return "" + + Return String.Join(vbNewLine, + cd.Documents. + Where(Function(d) Not String.IsNullOrWhiteSpace(If(d.zaDoc_Reference, ""))). + Select(Function(d) d.zaDoc_Reference). + Distinct()) + End Function + + Private Function GetItemsDescription(cd As cVERAG_CustomsDeclarations) As String + If cd Is Nothing OrElse cd.Items Is Nothing OrElse cd.Items.Count = 0 Then Return "" + + Return String.Join(" | ", + cd.Items. + Where(Function(i) Not String.IsNullOrWhiteSpace(If(i.zaItem_Description, ""))). + Select(Function(i) i.zaItem_Description). + Distinct()) + End Function + + Private Function IsItemCBAM_TNR(item As cVERAG_CustomsDeclarations_Item) As Boolean + Try + If item Is Nothing Then Return False + + If VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST Is Nothing Then VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST = cGreendeal_CBAM_Trn.LoadCBAMTariffNumbers + + Dim cbamList = VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST ' VERAG_PROG_ALLGEMEIN.cGreendeal_CBAM_Trn.LoadCBAMTariffNumbers() + Dim hs = If(item.zaItem_HSCode, "").Trim() + + If hs = "" OrElse cbamList Is Nothing Then Return False + + For Each p In cbamList + If hs.StartsWith(If(p, "").Trim()) Then Return True + Next + Catch + End Try + + Return False + End Function + Private Function IsItemCBAM(item As cVERAG_CustomsDeclarations_Item) As Boolean + + Try + + If item Is Nothing Then Return False + + ' Ursprungsland prüfen (nicht CBAM-pflichtige Länder ausschließen) + Dim originCountry = If(item.zaItem_OriginCountry, "").Trim().ToUpper() + + Select Case originCountry + ' EU-27 + Case "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", + "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", + "PL", "PT", "RO", "SK", "SI", "ES", "SE", ' Ausnahmen + "CH", ' Schweiz + "NO", ' Norwegen + "IS", ' Island + "LI", ' Liechtenstein + "XI" ' Nordirland + + Return False + End Select + + + If VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST Is Nothing Then VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST = cGreendeal_CBAM_Trn.LoadCBAMTariffNumbers + + Dim cbamList = VERAG_PROG_ALLGEMEIN.cAllgemein.CBAM_LIST ' VERAG_PROG_ALLGEMEIN.cGreendeal_CBAM_Trn.LoadCBAMTariffNumbers() + + Dim hs = If(item.zaItem_HSCode, "").Trim() + + If hs = "" OrElse cbamList Is Nothing Then Return False + + For Each p In cbamList + + If hs.StartsWith(If(p, "").Trim()) Then Return True + + Next + + Catch + End Try + + Return False + + End Function + + Private Function NormalizeKdAuftragsNr(value As Object, kdnrsrch As Integer) As String + Dim kdAtrNr As String = If(value, "").ToString() + + If kdnrsrch = 770931 AndAlso kdAtrNr.Contains("/") Then + kdAtrNr = kdAtrNr.Split("/"c)(0) + End If + + Return kdAtrNr + End Function + + Private Function LeftSafe(value As String, length As Integer) As String + value = If(value, "") + If value.Length < length Then Return value + Return value.Substring(0, length) + End Function + + Private Function RightSafe(value As String, length As Integer) As String + value = If(value, "") + If value.Length < length Then Return value + Return value.Substring(value.Length - length, length) + End Function + + Public Function RunReport_VERAG_ZA_DETAIL_FULL(KDNR As Integer, + AbfVon As Date, + AbfBis As Date, + Optional whereStr As String = "", + Optional Open As Boolean = True, Optional list As List(Of SQLVariable) = Nothing) As String + Try + Dim dt As DataTable = LoadSpeditionsbuchData(KDNR, AbfVon, AbfBis, whereStr) + If dt Is Nothing OrElse dt.Rows.Count = 0 Then + Return "" + End If + + Dim path As String = CreateTargetPathCsv(AbfVon, AbfBis, "KVI_DETAIL_FULL_") + + Using sw As New System.IO.StreamWriter(path, False, System.Text.Encoding.UTF8) + + sw.WriteLine(String.Join(";", { + CsvField("Speditionsbuch_Abfertigungsnummer"), + CsvField("Speditionsbuch_Abfertigungsdatum"), + CsvField("Speditionsbuch_Absender"), + CsvField("Speditionsbuch_Empfaenger"), + CsvField("Speditionsbuch_BelegNr"), + CsvField("Speditionsbuch_KdAuftragsNr"), + CsvField("Speditionsbuch_FilialenNr"), + CsvField("Speditionsbuch_AbfertigungsNr"), + CsvField("Speditionsbuch_Abfertigungsart"), + CsvField("Speditionsbuch_Abfertigungsbezeichnung"), + CsvField("Speditionsbuch_Zollsystem_Land"), + CsvField("Speditionsbuch_SendungID"), + CsvField("za_Id"), + CsvField("za_System"), + CsvField("za_CustomsSystem"), + CsvField("za_CustomsSystemCountry"), + CsvField("za_IsExternalSystem"), + CsvField("za_IsFinalDeclaration"), + CsvField("za_UCR"), + CsvField("za_Mandant_ID"), + CsvField("za_Bereich_ID"), + CsvField("za_Firma"), + CsvField("za_Niederlassung"), + CsvField("za_MRN"), + CsvField("za_LRN"), + CsvField("za_DeclarationNo"), + CsvField("za_ReferenceCustomer"), + CsvField("za_REGIME"), + CsvField("za_RegistrationType"), + CsvField("za_MainProcedure"), + CsvField("za_AdditionalProcedure"), + CsvField("za_DeclarationDate"), + CsvField("za_ReleaseDate"), + CsvField("za_AcceptanceDate"), + CsvField("za_CustomsOffice"), + CsvField("za_EntryCustomsOffice"), + CsvField("za_RepresentationCode"), + CsvField("za_TransportModeInland"), + CsvField("za_TransportModeBorder"), + CsvField("za_MeansOfTransport_Vehicle"), + CsvField("za_MeansOfTransport_Type"), + CsvField("za_MeansOfTransport_Nationality"), + CsvField("za_ContainerNr1"), + CsvField("za_ContainerNr2"), + CsvField("za_ContainerNr3"), + CsvField("za_ContainerNr4"), + CsvField("za_ContainerNr5"), + CsvField("za_ContainerNr6"), + CsvField("za_ContainerNr7"), + CsvField("za_ContainerNr8"), + CsvField("za_ContainerNr9"), + CsvField("za_CountryDispatch"), + CsvField("za_CountryDestination"), + CsvField("za_CountryDestinationState"), + CsvField("za_CountryImport"), + CsvField("za_WarehouseCode"), + CsvField("za_Incoterms"), + CsvField("za_IncotermsPlace"), + CsvField("za_InvoiceAmount"), + CsvField("za_InvoiceCurrency"), + CsvField("za_FiscalRepFlag"), + CsvField("za_TaxDeduction"), + CsvField("za_ApplicantTaxOffice"), + CsvField("za_ApplicantVATNo"), + CsvField("za_DV1Flag"), + CsvField("za_PrevDocument_Type"), + CsvField("za_PrevDocument_No"), + CsvField("za_AvisoId"), + CsvField("za_SendungsId"), + CsvField("za_Remarks"), + CsvField("za_Sachbearbeiter"), + CsvField("za_SachbearbeiterId"), + CsvField("za_TotGrossMass"), + CsvField("Parties_All"), + CsvField("Importer_Name"), + CsvField("Importer_EORI"), + CsvField("Exporter_Name"), + CsvField("Exporter_EORI"), + CsvField("Declarant_Name"), + CsvField("Declarant_EORI"), + CsvField("Duties_All"), + CsvField("Duty_Total"), + CsvField("Duty_EUST"), + CsvField("Duty_Excluding_EUST"), + CsvField("Header_Documents_All"), + CsvField("Item_Documents_All"), + CsvField("All_Documents_Merged"), + CsvField("Item_PosNo"), + CsvField("Item_ArticleCode"), + CsvField("Item_HSCode"), + CsvField("Item_HSAddition1"), + CsvField("Item_HSAddition2"), + CsvField("Item_HSAddCodes1"), + CsvField("Item_HSAddCodes2"), + CsvField("Item_HSAddCodes3"), + CsvField("Item_HSAddCodes4"), + CsvField("Item_HSAddCodes5"), + CsvField("Item_HSAddCodes6"), + CsvField("Item_HSAddCodes7"), + CsvField("Item_HSAddCodes8"), + CsvField("Item_HSAddCodes9"), + CsvField("Item_HSAddCodes10"), + CsvField("Item_Description"), + CsvField("Item_PackageColli"), + CsvField("Item_PackageType"), + CsvField("Item_PackageMark"), + CsvField("Item_OriginCountry"), + CsvField("Item_PreferentialCountry"), + CsvField("Item_PreferenceCode"), + CsvField("Item_QuotaNo"), + CsvField("Item_MainProcedure"), + CsvField("Item_AdditionalProc"), + CsvField("Item_PrevProcedure"), + CsvField("Item_GrossMass"), + CsvField("Item_NetMass"), + CsvField("Item_SuppUnitCode"), + CsvField("Item_SuppQuantity"), + CsvField("Item_StatisticalValueEUR"), + CsvField("Item_CustomsValueEUR"), + CsvField("Item_InvoiceCurrency"), + CsvField("Item_InvoiceValueForeign"), + CsvField("Item_InvoiceValueEUR"), + CsvField("Item_BeguenstigungCode"), + CsvField("Item_DV1Flag"), + CsvField("Item_PosAddition"), + CsvField("Item_Remarks"), + CsvField("Item_isCBAM") + })) + + For Each r As DataRow In dt.Rows + Try + Dim cd As cVERAG_CustomsDeclarations = LoadCustomsDeclaration(r) + + Dim kdAtrNr As String = NormalizeKdAuftragsNr(r("KdAuftragsNr"), KDNR) + + Dim importer = GetParty(cd, cVERAG_CustomsDeclarations.IMPORTER_ROLES) + Dim exporter = GetParty(cd, cVERAG_CustomsDeclarations.EXPORTER_ROLES) + Dim declarant = GetParty(cd, cVERAG_CustomsDeclarations.DECLARANT_ROLES) + + Dim allParties As String = JoinParties(cd) + Dim allDuties As String = JoinDuties(cd) + Dim headerDocs As String = JoinDocuments(cd.Documents) + + Dim dutyTotal As Decimal = GetDutyAmountTotal(cd) + Dim dutyEust As Decimal = GetDutyAmount(cd, {"B%", "B00", "EUST", "VAT"}) + Dim dutyExcludingEust As Decimal = GetDutyAmountExcluding(cd, {"B%", "B00", "EUST", "VAT"}) + + If cd IsNot Nothing AndAlso cd.hasEntry AndAlso cd.Items IsNot Nothing AndAlso cd.Items.Count > 0 Then + For Each item As cVERAG_CustomsDeclarations_Item In cd.Items + Dim itemDocs As String = JoinDocuments(item.Documents) + Dim allDocsMerged As String = MergeDocumentStrings(headerDocs, itemDocs) + + sw.WriteLine(String.Join(";", { + CsvField(If(r("Abfertigungsnummer"), "")), + CsvField(FormatDateForCsv(r("Abfertigungsdatum"))), + CsvField(If(r("Absender"), "")), + CsvField(If(r("Empfänger"), "")), + CsvField(If(r("BelegNr"), "")), + CsvField(kdAtrNr), + CsvField(If(r("FilialenNr"), "")), + CsvField(If(r("AbfertigungsNr"), "")), + CsvField(If(r("Abfertigungsart"), "")), + CsvField(If(r("Abfertigungsbezeichnung"), "")), + CsvField(If(r("Zollsystem_Land"), "")), + CsvField(If(r("SendungID"), "")), + CsvField(cd.za_Id), + CsvField(cd.za_System), + CsvField(cd.za_CustomsSystem), + CsvField(cd.za_CustomsSystemCountry), + CsvField(FormatBoolForCsv(cd.za_IsExternalSystem)), + CsvField(FormatBoolForCsv(cd.za_IsFinalDeclaration)), + CsvField(cd.za_UCR), + CsvField(cd.za_Mandant_ID), + CsvField(cd.za_Bereich_ID), + CsvField(cd.za_Firma), + CsvField(cd.za_Niederlassung), + CsvField(cd.za_MRN), + CsvField(cd.za_LRN), + CsvField(cd.za_DeclarationNo), + CsvField(cd.za_ReferenceCustomer), + CsvField(cd.za_REGIME), + CsvField(cd.za_RegistrationType), + CsvField(cd.za_MainProcedure), + CsvField(cd.za_AdditionalProcedure), + CsvField(FormatDateForCsv(cd.za_DeclarationDate)), + CsvField(FormatDateForCsv(cd.za_ReleaseDate)), + CsvField(FormatDateForCsv(cd.za_AcceptanceDate)), + CsvField(cd.za_CustomsOffice), + CsvField(cd.za_EntryCustomsOffice), + CsvField(cd.za_RepresentationCode), + CsvField(cd.za_TransportModeInland), + CsvField(cd.za_TransportModeBorder), + CsvField(cd.za_MeansOfTransport_Vehicle), + CsvField(cd.za_MeansOfTransport_Type), + CsvField(cd.za_MeansOfTransport_Nationality), + CsvField(cd.za_ContainerNr1), + CsvField(cd.za_ContainerNr2), + CsvField(cd.za_ContainerNr3), + CsvField(cd.za_ContainerNr4), + CsvField(cd.za_ContainerNr5), + CsvField(cd.za_ContainerNr6), + CsvField(cd.za_ContainerNr7), + CsvField(cd.za_ContainerNr8), + CsvField(cd.za_ContainerNr9), + CsvField(cd.za_CountryDispatch), + CsvField(cd.za_CountryDestination), + CsvField(cd.za_CountryDestinationState), + CsvField(cd.za_CountryImport), + CsvField(cd.za_WarehouseCode), + CsvField(cd.za_Incoterms), + CsvField(cd.za_IncotermsPlace), + CsvField(FormatDecimalForCsv(cd.za_InvoiceAmount)), + CsvField(cd.za_InvoiceCurrency), + CsvField(FormatNullableBoolForCsv(cd.za_FiscalRepFlag)), + CsvField(FormatNullableBoolForCsv(cd.za_TaxDeduction)), + CsvField(cd.za_ApplicantTaxOffice), + CsvField(cd.za_ApplicantVATNo), + CsvField(FormatNullableBoolForCsv(cd.za_DV1Flag)), + CsvField(cd.za_PrevDocument_Type), + CsvField(cd.za_PrevDocument_No), + CsvField(If(cd.za_AvisoId.HasValue, cd.za_AvisoId.Value.ToString(), "")), + CsvField(If(cd.za_SendungsId.HasValue, cd.za_SendungsId.Value.ToString(), "")), + CsvField(cd.za_Remarks), + CsvField(cd.za_Sachbearbeiter), + CsvField(cd.za_SachbearbeiterId), + CsvField(FormatDecimalForCsv(cd.za_TotGrossMass)), + CsvField(allParties), + CsvField(If(importer Is Nothing, "", importer.zaParty_Name)), + CsvField(If(importer Is Nothing, "", importer.zaParty_EORI)), + CsvField(If(exporter Is Nothing, "", exporter.zaParty_Name)), + CsvField(If(exporter Is Nothing, "", exporter.zaParty_EORI)), + CsvField(If(declarant Is Nothing, "", declarant.zaParty_Name)), + CsvField(If(declarant Is Nothing, "", declarant.zaParty_EORI)), + CsvField(allDuties), + CsvField(FormatDecimalForCsv(dutyTotal)), + CsvField(FormatDecimalForCsv(dutyEust)), + CsvField(FormatDecimalForCsv(dutyExcludingEust)), + CsvField(headerDocs), + CsvField(itemDocs), + CsvField(allDocsMerged), + CsvField(item.zaItem_PosNo), + CsvField(item.zaItem_ArticleCode), + CsvField(item.zaItem_HSCode), + CsvField(item.zaItem_HSAddition1), + CsvField(item.zaItem_HSAddition2), + CsvField(item.zaItem_HSAddCodes1), + CsvField(item.zaItem_HSAddCodes2), + CsvField(item.zaItem_HSAddCodes3), + CsvField(item.zaItem_HSAddCodes4), + CsvField(item.zaItem_HSAddCodes5), + CsvField(item.zaItem_HSAddCodes6), + CsvField(item.zaItem_HSAddCodes7), + CsvField(item.zaItem_HSAddCodes8), + CsvField(item.zaItem_HSAddCodes9), + CsvField(item.zaItem_HSAddCodes10), + CsvField(item.zaItem_Description), + CsvField(item.zaItem_PackageColli), + CsvField(item.zaItem_PackageType), + CsvField(item.zaItem_PackageMark), + CsvField(item.zaItem_OriginCountry), + CsvField(item.zaItem_PreferentialCountry), + CsvField(item.zaItem_PreferenceCode), + CsvField(item.zaItem_QuotaNo), + CsvField(item.zaItem_MainProcedure), + CsvField(item.zaItem_AdditionalProc), + CsvField(item.zaItem_PrevProcedure), + CsvField(FormatDecimalForCsv(item.zaItem_GrossMass)), + CsvField(FormatDecimalForCsv(item.zaItem_NetMass)), + CsvField(item.zaItem_SuppUnitCode), + CsvField(FormatDecimalForCsv(item.zaItem_SuppQuantity)), + CsvField(FormatDecimalForCsv(item.zaItem_StatisticalValueEUR)), + CsvField(FormatDecimalForCsv(item.zaItem_CustomsValueEUR)), + CsvField(item.zaItem_InvoiceCurrency), + CsvField(FormatDecimalForCsv(item.zaItem_InvoiceValueForeign)), + CsvField(FormatDecimalForCsv(item.zaItem_InvoiceValueEUR)), + CsvField(item.zaItem_BeguenstigungCode), + CsvField(FormatNullableBoolForCsv(item.zaItem_DV1Flag)), + CsvField(item.zaItem_PosAddition), + CsvField(item.zaItem_Remarks), + CsvField(If(IsItemCBAM(item), "Y", "N")) + })) + Next + Else + sw.WriteLine(String.Join(";", { + CsvField(If(r("Abfertigungsnummer"), "")), + CsvField(FormatDateForCsv(r("Abfertigungsdatum"))), + CsvField(If(r("Absender"), "")), + CsvField(If(r("Empfänger"), "")), + CsvField(If(r("BelegNr"), "")), + CsvField(kdAtrNr), + CsvField(If(r("FilialenNr"), "")), + CsvField(If(r("AbfertigungsNr"), "")), + CsvField(If(r("Abfertigungsart"), "")), + CsvField(If(r("Abfertigungsbezeichnung"), "")), + CsvField(If(r("Zollsystem_Land"), "")), + CsvField(If(r("SendungID"), "")), + CsvField(If(cd Is Nothing, "", cd.za_Id.ToString())), + CsvField(If(cd Is Nothing, "", cd.za_System)), + CsvField(If(cd Is Nothing, "", cd.za_CustomsSystem)), + CsvField(If(cd Is Nothing, "", cd.za_CustomsSystemCountry)), + CsvField(If(cd Is Nothing, "", FormatBoolForCsv(cd.za_IsExternalSystem))), + CsvField(If(cd Is Nothing, "", FormatBoolForCsv(cd.za_IsFinalDeclaration))), + CsvField(If(cd Is Nothing, "", cd.za_UCR)), + CsvField(If(cd Is Nothing, "", cd.za_Mandant_ID)), + CsvField(If(cd Is Nothing, "", cd.za_Bereich_ID)), + CsvField(If(cd Is Nothing, "", cd.za_Firma)), + CsvField(If(cd Is Nothing, "", cd.za_Niederlassung)), + CsvField(If(cd Is Nothing, "", cd.za_MRN)), + CsvField(If(cd Is Nothing, "", cd.za_LRN)), + CsvField(If(cd Is Nothing, "", cd.za_DeclarationNo)), + CsvField(If(cd Is Nothing, "", cd.za_ReferenceCustomer)), + CsvField(If(cd Is Nothing, "", cd.za_REGIME)), + CsvField(If(cd Is Nothing, "", cd.za_RegistrationType)), + CsvField(If(cd Is Nothing, "", cd.za_MainProcedure)), + CsvField(If(cd Is Nothing, "", cd.za_AdditionalProcedure)), + CsvField(If(cd Is Nothing, "", FormatDateForCsv(cd.za_DeclarationDate))), + CsvField(If(cd Is Nothing, "", FormatDateForCsv(cd.za_ReleaseDate))), + CsvField(If(cd Is Nothing, "", FormatDateForCsv(cd.za_AcceptanceDate))), + CsvField(If(cd Is Nothing, "", cd.za_CustomsOffice)), + CsvField(If(cd Is Nothing, "", cd.za_EntryCustomsOffice)), + CsvField(If(cd Is Nothing, "", cd.za_RepresentationCode)), + CsvField(If(cd Is Nothing, "", cd.za_TransportModeInland)), + CsvField(If(cd Is Nothing, "", cd.za_TransportModeBorder)), + CsvField(If(cd Is Nothing, "", cd.za_MeansOfTransport_Vehicle)), + CsvField(If(cd Is Nothing, "", cd.za_MeansOfTransport_Type)), + CsvField(If(cd Is Nothing, "", cd.za_MeansOfTransport_Nationality)), + CsvField(If(cd Is Nothing, "", cd.za_ContainerNr1)), + CsvField(If(cd Is Nothing, "", cd.za_ContainerNr2)), + CsvField(If(cd Is Nothing, "", cd.za_ContainerNr3)), + CsvField(If(cd Is Nothing, "", cd.za_ContainerNr4)), + CsvField(If(cd Is Nothing, "", cd.za_ContainerNr5)), + CsvField(If(cd Is Nothing, "", cd.za_ContainerNr6)), + CsvField(If(cd Is Nothing, "", cd.za_ContainerNr7)), + CsvField(If(cd Is Nothing, "", cd.za_ContainerNr8)), + CsvField(If(cd Is Nothing, "", cd.za_ContainerNr9)), + CsvField(If(cd Is Nothing, "", cd.za_CountryDispatch)), + CsvField(If(cd Is Nothing, "", cd.za_CountryDestination)), + CsvField(If(cd Is Nothing, "", cd.za_CountryDestinationState)), + CsvField(If(cd Is Nothing, "", cd.za_CountryImport)), + CsvField(If(cd Is Nothing, "", cd.za_WarehouseCode)), + CsvField(If(cd Is Nothing, "", cd.za_Incoterms)), + CsvField(If(cd Is Nothing, "", cd.za_IncotermsPlace)), + CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(cd.za_InvoiceAmount))), + CsvField(If(cd Is Nothing, "", cd.za_InvoiceCurrency)), + CsvField(If(cd Is Nothing, "", FormatNullableBoolForCsv(cd.za_FiscalRepFlag))), + CsvField(If(cd Is Nothing, "", FormatNullableBoolForCsv(cd.za_TaxDeduction))), + CsvField(If(cd Is Nothing, "", cd.za_ApplicantTaxOffice)), + CsvField(If(cd Is Nothing, "", cd.za_ApplicantVATNo)), + CsvField(If(cd Is Nothing, "", FormatNullableBoolForCsv(cd.za_DV1Flag))), + CsvField(If(cd Is Nothing, "", cd.za_PrevDocument_Type)), + CsvField(If(cd Is Nothing, "", cd.za_PrevDocument_No)), + CsvField(If(cd Is Nothing OrElse Not cd.za_AvisoId.HasValue, "", cd.za_AvisoId.Value.ToString())), + CsvField(If(cd Is Nothing OrElse Not cd.za_SendungsId.HasValue, "", cd.za_SendungsId.Value.ToString())), + CsvField(If(cd Is Nothing, "", cd.za_Remarks)), + CsvField(If(cd Is Nothing, "", cd.za_Sachbearbeiter)), + CsvField(If(cd Is Nothing, "", cd.za_SachbearbeiterId)), + CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(cd.za_TotGrossMass))), + CsvField(If(cd Is Nothing, "", allParties)), + CsvField(If(importer Is Nothing, "", importer.zaParty_Name)), + CsvField(If(importer Is Nothing, "", importer.zaParty_EORI)), + CsvField(If(exporter Is Nothing, "", exporter.zaParty_Name)), + CsvField(If(exporter Is Nothing, "", exporter.zaParty_EORI)), + CsvField(If(declarant Is Nothing, "", declarant.zaParty_Name)), + CsvField(If(declarant Is Nothing, "", declarant.zaParty_EORI)), + CsvField(If(cd Is Nothing, "", allDuties)), + CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(dutyTotal))), + CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(dutyEust))), + CsvField(If(cd Is Nothing, "", FormatDecimalForCsv(dutyExcludingEust))), + CsvField(If(cd Is Nothing, "", headerDocs)), + CsvField(""), + CsvField(If(cd Is Nothing, "", headerDocs)), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField(""), + CsvField("") + })) + End If + + Catch ex As Exception + MsgBox(ex.Message & vbCrLf & ex.StackTrace) + End Try + Next + End Using + + If Open Then + Process.Start(path) + End If + + Return path + + Catch ex As Exception + MsgBox(ex.Message & vbCrLf & ex.StackTrace) + Return "" + End Try + End Function + + Private Function CreateTargetPathCsv(AbfVon As Date, AbfBis As Date, prefix As String) As String + 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 path As String = sPath & prefix & AbfVon.ToString("yyyy-MM-dd") & "-" & AbfBis.ToString("yyyy-MM-dd") & ".csv" + + While System.IO.File.Exists(path) + path = sPath & prefix & AbfVon.ToString("yyyy-MM-dd") & "-" & AbfBis.ToString("yyyy-MM-dd") & "_" & Now.ToString("ddMMyyyyHHmmss") & ".csv" + End While + + Return path + End Function + + Private Function CsvField(value As Object) As String + Dim s As String = If(value, "").ToString() + s = s.Replace("""", """""") + Return """" & s & """" + End Function + + Private Function FormatDateForCsv(value As Object) As String + If value Is Nothing OrElse value Is DBNull.Value Then Return "" + If IsDate(value) Then Return CDate(value).ToString("yyyy-MM-dd") + Return value.ToString() + End Function + + Private Function FormatDecimalForCsv(value As Object) As String + If value Is Nothing OrElse value Is DBNull.Value Then Return "" + If IsNumeric(value) Then Return Convert.ToDecimal(value).ToString(System.Globalization.CultureInfo.InvariantCulture) + Return value.ToString() + End Function + + Private Function FormatBoolForCsv(value As Boolean) As String + Return If(value, "1", "0") + End Function + + Private Function FormatNullableBoolForCsv(value As Boolean?) As String + If Not value.HasValue Then Return "" + Return If(value.Value, "1", "0") + End Function + + Private Function GetDutyAmountTotal(cd As cVERAG_CustomsDeclarations) As Decimal + If cd Is Nothing OrElse cd.Duties Is Nothing Then Return 0D + Return cd.Duties.Sum(Function(d) If(d.zaDuty_AmountEUR, 0D)) + End Function + + Private Function GetParty(cd As cVERAG_CustomsDeclarations, roles As String()) As cVERAG_CustomsDeclarations_Parties + If cd Is Nothing OrElse cd.Parties Is Nothing Then Return Nothing + + Return cd.Parties.FirstOrDefault( + Function(x) roles.Contains(If(x.zaParty_Role, "").Trim().ToUpper()) + ) + End Function + + Private Function JoinParties(cd As cVERAG_CustomsDeclarations) As String + If cd Is Nothing OrElse cd.Parties Is Nothing OrElse cd.Parties.Count = 0 Then Return "" + + Return String.Join(" || ", + cd.Parties.Select(Function(p) + Return String.Join(" | ", { + "Role=" & If(p.zaParty_Role, ""), + "Name=" & If(p.zaParty_Name, ""), + "EORI=" & If(p.zaParty_EORI, ""), + "EORI_NL=" & If(p.zaParty_EORI_NL, ""), + "Street=" & If(p.zaParty_Street, ""), + "PostalCode=" & If(p.zaParty_PostalCode, ""), + "City=" & If(p.zaParty_City, ""), + "Country=" & If(p.zaParty_Country, ""), + "TIN=" & If(p.zaParty_TIN, ""), + "VAT=" & If(p.zaParty_VATNumber, ""), + "TaxOffice=" & If(p.zaParty_TaxOffice, ""), + "Contact=" & If(p.zaParty_ContactName, ""), + "Phone=" & If(p.zaParty_Phone, ""), + "Email=" & If(p.zaParty_Email, "") + }) + End Function)) + End Function + + Private Function JoinDuties(cd As cVERAG_CustomsDeclarations) As String + If cd Is Nothing OrElse cd.Duties Is Nothing OrElse cd.Duties.Count = 0 Then Return "" + + Return String.Join(" || ", + cd.Duties.Select(Function(d) + Return String.Join(" | ", { + "DutyType=" & If(d.zaDuty_DutyType, ""), + "AmountEUR=" & FormatDecimalForCsv(d.zaDuty_AmountEUR), + "AmountForeign=" & FormatDecimalForCsv(d.zaDuty_AmountForeign), + "Currency=" & If(d.zaDuty_Currency, ""), + "BIN=" & If(d.zaDuty_BIN, ""), + "AccountType=" & If(d.zaDuty_AccountType, ""), + "AccountHeadCustoms=" & If(d.zaDuty_AccountHeadCustoms, ""), + "ApplicationType=" & If(d.zaDuty_ApplicationType, ""), + "AccountNo=" & If(d.zaDuty_AccountNo, ""), + "AccountEORI=" & If(d.zaDuty_AccountEORI, ""), + "AccountHolderName=" & If(d.zaDuty_AccountHolderName, ""), + "LimitDate=" & FormatDateForCsv(d.zaDuty_LimitDate) + }) + End Function)) + End Function + + Private Function JoinDocuments(docs As List(Of cVERAG_CustomsDeclarations_Document)) As String + If docs Is Nothing OrElse docs.Count = 0 Then Return "" + + Return String.Join(" || ", + docs.Select(Function(d) + Return String.Join(" | ", { + "Date=" & If(d.zaDoc_Date, ""), + "Section=" & If(d.zaDoc_Section, ""), + "Code=" & If(d.zaDoc_Code, ""), + "Reference=" & If(d.zaDoc_Reference, ""), + "Presentation=" & If(d.zaDoc_Presentation, ""), + "DepAmount=" & If(d.zaDoc_DepreciationAmount, ""), + "DepUnit=" & If(d.zaDoc_DepreciationUnitmeasurement, ""), + "DepQual=" & If(d.zaDoc_DepreciationUnitmeasurementQualifier, ""), + "Description=" & If(d.zaDoc_Description, "") + }) + End Function)) + End Function + + Private Function MergeDocumentStrings(headerDocs As String, itemDocs As String) As String + If headerDocs = "" Then Return itemDocs + If itemDocs = "" Then Return headerDocs + Return headerDocs & " || " & itemDocs + End Function + + End Class