Imports System.Data.SqlClient Imports System.Reflection ' ========================================================================== ' MASTER CLASS ' Customs Declaration (Header + Items + Duties + Documents) ' ========================================================================== Public Class cVERAG_CustomsDeclarations Public Property za_Id As Integer Public Property za_System As String ' z.B. "DAKOSY" Public Property za_CustomsSystem As String ' z.B. "ATLAS" Public Property za_CustomsSystemCountry As String ' z.B. "DE" Public Property za_IsExternalSystem As Boolean = False Public Property za_IsFinalDeclaration As Boolean = False Public Property za_UCR As String Public Property za_Mandant_ID As String Public Property za_Bereich_ID As String Public Property za_Firma As String Public Property za_Niederlassung As String Public Property za_MRN As String Public Property za_LRN As String Public Property za_DeclarationNo As String Public Property za_ReferenceCustomer As String Public Property za_REGIME As String ' IMPORT, EXPORT, ... Public Property za_RegistrationType As String Public Property za_MainProcedure As String Public Property za_AdditionalProcedure As String Public Property za_DeclarationDate As Date? Public Property za_ReleaseDate As Date? Public Property za_AcceptanceDate As Date? Public Property za_CustomsOffice As String Public Property za_EntryCustomsOffice As String Public Property za_RepresentationCode As String Public Property za_TransportModeInland As String Public Property za_TransportModeBorder As String Public Property za_MeansOfTransport_Vehicle As String Public Property za_MeansOfTransport_Type As String Public Property za_MeansOfTransport_Nationality As String Public Property za_ContainerNr1 As String Public Property za_ContainerNr2 As String Public Property za_ContainerNr3 As String Public Property za_ContainerNr4 As String Public Property za_ContainerNr5 As String Public Property za_ContainerNr6 As String Public Property za_ContainerNr7 As String Public Property za_ContainerNr8 As String Public Property za_ContainerNr9 As String Public Property za_CountryDispatch As String Public Property za_CountryDestination As String Public Property za_CountryDestinationState As String Public Property za_CountryImport As String Public Property za_WarehouseCode As String Public Property za_Incoterms As String Public Property za_IncotermsPlace As String Public Property za_InvoiceAmount As Decimal? Public Property za_InvoiceCurrency As String Public Property za_FiscalRepFlag As Boolean? Public Property za_TaxDeduction As Boolean? Public Property za_ApplicantTaxOffice As String Public Property za_ApplicantVATNo As String Public Property za_DV1Flag As Boolean? Public Property za_PrevDocument_Type As String Public Property za_PrevDocument_No As String Public Property za_AvisoId As Integer? Public Property za_SendungsId As Integer? Public Property za_Remarks As String Public Property za_Sachbearbeiter As String Public Property za_SachbearbeiterId As String Public Property za_TotGrossMass As Decimal? Public Property Parties As New List(Of cVERAG_CustomsDeclarations_Parties) Public Property Items As New List(Of cVERAG_CustomsDeclarations_Item) Public Property Duties As New List(Of cVERAG_CustomsDeclarations_Duty) Public Property Documents As New List(Of cVERAG_CustomsDeclarations_Document) Public Property hasEntry As Boolean = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Public Function getParameterList() As List(Of SQLVariable) Return New List(Of SQLVariable) From { New SQLVariable("za_Id", za_Id,, True), New SQLVariable("za_System", za_System), New SQLVariable("za_CustomsSystem", za_CustomsSystem), New SQLVariable("za_CustomsSystemCountry", za_CustomsSystemCountry), New SQLVariable("za_IsExternalSystem", za_IsExternalSystem), New SQLVariable("za_IsFinalDeclaration", za_IsFinalDeclaration), New SQLVariable("za_UCR", za_UCR), New SQLVariable("za_Mandant_ID", za_Mandant_ID), New SQLVariable("za_Bereich_ID", za_Bereich_ID), New SQLVariable("za_Firma", za_Firma), New SQLVariable("za_Niederlassung", za_Niederlassung), New SQLVariable("za_MRN", za_MRN), New SQLVariable("za_LRN", za_LRN), New SQLVariable("za_DeclarationNo", za_DeclarationNo), New SQLVariable("za_ReferenceCustomer", za_ReferenceCustomer), New SQLVariable("za_REGIME", za_REGIME), New SQLVariable("za_RegistrationType", za_RegistrationType), New SQLVariable("za_MainProcedure", za_MainProcedure), New SQLVariable("za_AdditionalProcedure", za_AdditionalProcedure), New SQLVariable("za_DeclarationDate", za_DeclarationDate), New SQLVariable("za_ReleaseDate", za_ReleaseDate), New SQLVariable("za_AcceptanceDate", za_AcceptanceDate), New SQLVariable("za_CustomsOffice", za_CustomsOffice), New SQLVariable("za_EntryCustomsOffice", za_EntryCustomsOffice), New SQLVariable("za_RepresentationCode", za_RepresentationCode), New SQLVariable("za_TransportModeInland", za_TransportModeInland), New SQLVariable("za_TransportModeBorder", za_TransportModeBorder), New SQLVariable("za_MeansOfTransport_Vehicle", za_MeansOfTransport_Vehicle), New SQLVariable("za_MeansOfTransport_Type", za_MeansOfTransport_Type), New SQLVariable("za_MeansOfTransport_Nationality", za_MeansOfTransport_Nationality), New SQLVariable("za_ContainerNr1", za_ContainerNr1), New SQLVariable("za_ContainerNr2", za_ContainerNr2), New SQLVariable("za_ContainerNr3", za_ContainerNr3), New SQLVariable("za_ContainerNr4", za_ContainerNr4), New SQLVariable("za_ContainerNr5", za_ContainerNr5), New SQLVariable("za_ContainerNr6", za_ContainerNr6), New SQLVariable("za_ContainerNr7", za_ContainerNr7), New SQLVariable("za_ContainerNr8", za_ContainerNr8), New SQLVariable("za_ContainerNr9", za_ContainerNr9), New SQLVariable("za_CountryDispatch", za_CountryDispatch), New SQLVariable("za_CountryDestination", za_CountryDestination), New SQLVariable("za_CountryDestinationState", za_CountryDestinationState), New SQLVariable("za_CountryImport", za_CountryImport), New SQLVariable("za_WarehouseCode", za_WarehouseCode), New SQLVariable("za_Incoterms", za_Incoterms), New SQLVariable("za_IncotermsPlace", za_IncotermsPlace), New SQLVariable("za_InvoiceAmount", za_InvoiceAmount), New SQLVariable("za_InvoiceCurrency", za_InvoiceCurrency), New SQLVariable("za_FiscalRepFlag", za_FiscalRepFlag), New SQLVariable("za_TaxDeduction", za_TaxDeduction), New SQLVariable("za_ApplicantTaxOffice", za_ApplicantTaxOffice), New SQLVariable("za_ApplicantVATNo", za_ApplicantVATNo), New SQLVariable("za_DV1Flag", za_DV1Flag), New SQLVariable("za_PrevDocument_Type", za_PrevDocument_Type), New SQLVariable("za_PrevDocument_No", za_PrevDocument_No), New SQLVariable("za_AvisoId", za_AvisoId), New SQLVariable("za_SendungsId", za_SendungsId), New SQLVariable("za_Remarks", za_Remarks), New SQLVariable("za_Sachbearbeiter", za_Sachbearbeiter), New SQLVariable("za_SachbearbeiterId", za_SachbearbeiterId), New SQLVariable("za_TotGrossMass", za_TotGrossMass) } End Function Public Function getInsertCmd() As String Dim f As String = "", v As String = "" For Each i In getParameterList() If Not i.isPrimaryParam Then f &= "[" & i.Text & "]," v &= "@" & i.Scalarvariable & "," End If Next Return "INSERT INTO tblVERAG_CustomsDeclarations (" & f.TrimEnd(","c) & ") VALUES (" & v.TrimEnd(","c) & ")" End Function Public Function getUpdateCmd() As String Dim s As String = "" For Each i In getParameterList() If Not i.isPrimaryParam Then s &= "[" & i.Text & "]=@" & i.Scalarvariable & "," End If Next Return "UPDATE tblVERAG_CustomsDeclarations SET " & s.TrimEnd(","c) & " WHERE za_Id=@za_Id" End Function Public Sub LOAD() Try hasEntry = False Using conn = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand( "SELECT * FROM tblVERAG_CustomsDeclarations WHERE za_Id=@_BASE_id", conn) cmd.Parameters.AddWithValue("@_BASE_id", za_Id) Dim dr = cmd.ExecuteReader() If dr.Read Then For Each li In getParameterList() Dim pi = Me.GetType.GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then pi.SetValue(Me, Nothing) Else pi.SetValue(Me, dr.Item(li.Text)) End If Next hasEntry = True End If dr.Close() End Using End Using Parties = cVERAG_CustomsDeclarations_Parties.LOAD_BY_ZAID(za_Id) Items = cVERAG_CustomsDeclarations_Item.LOAD_BY_ZAID(za_Id) Duties = cVERAG_CustomsDeclarations_Duty.LOAD_BY_ZAID(za_Id) Documents = cVERAG_CustomsDeclarations_Document.LOAD_HEAD_BY_ZAID(za_Id) Catch ex As Exception cErrorHandler.ERR(ex.Message, ex.StackTrace, MethodInfo.GetCurrentMethod.Name) End Try End Sub Public Shared Function LOAD_List_CBAM(EORI() As String, ImportCountry As String, datFrom As Date, datTo As Date, Optional CustomsSystem As String = "", Optional loadAll As Boolean = True, Optional indirect As Boolean = False) As List(Of cVERAG_CustomsDeclarations) Dim LIST As New List(Of cVERAG_CustomsDeclarations) Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Try ' ------------------------------------------------------------ ' CBAM Pattern (HSCode) ' ------------------------------------------------------------ Dim cbamWhere As String = VERAG_PROG_ALLGEMEIN.cGreendeal_CBAM_Trn.BuildCBAMPatternWhereClause("i.zaItem_HSCode") ' ------------------------------------------------------------ ' SQL: ZA-IDs ermitteln ' ------------------------------------------------------------ Dim eoriIn As String = String.Join(",", EORI. Where(Function(x) Not String.IsNullOrWhiteSpace(x)). Select(Function(x) "'" & x.Replace("'", "''") & "'")) Dim sqlstr As String = "SELECT DISTINCT z.* " & "FROM VERAG.dbo.tblVERAG_CustomsDeclarations z " & "INNER JOIN VERAG.dbo.tblVERAG_CustomsDeclarations_Items i " & " ON z.za_Id = i.zaItem_zaId " & "INNER JOIN VERAG.dbo.tblVERAG_CustomsDeclarations_Parties p " & " ON z.za_Id = p.zaParty_zaId " & "WHERE z.za_REGIME = 'IMPORT' " & " AND z.za_IsFinalDeclaration = 1 " & " AND z.za_DeclarationDate >= @dateFrom " & " AND z.za_DeclarationDate <= @dateTo " & " AND p.zaParty_EORI IN (" & eoriIn & ") " & " AND " & cbamWhere If indirect Then sqlstr &= " AND ( (za_System IN('DHF','DHF_UNISPED') AND za_RepresentationCode=3) OR (za_System IN('TELOTEC') AND za_RepresentationCode=3) OR (za_System IN('DAKOSY') AND za_RepresentationCode=2) )" End If If ImportCountry <> "" Then sqlstr &= " AND z.za_CountryImport = @importCountry " End If If CustomsSystem <> "" Then sqlstr &= " AND z.za_System = @sys " End If Using conn = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand(sqlstr, conn) ' cmd.Parameters.AddWithValue("@eori", EORI) cmd.Parameters.AddWithValue("@dateFrom", datFrom) cmd.Parameters.AddWithValue("@dateTo", datTo) If ImportCountry <> "" Then cmd.Parameters.AddWithValue("@importCountry", ImportCountry) End If If CustomsSystem <> "" Then cmd.Parameters.AddWithValue("@sys", CustomsSystem) End If Using dr = cmd.ExecuteReader() While dr.Read() Dim CD As New cVERAG_CustomsDeclarations CD.hasEntry = False ' ------------------------------------------------ ' DIREKTE BEFÜLLUNG (wie gewünscht) ' ------------------------------------------------ For Each li In CD.getParameterList() Dim pi = CD.GetType().GetProperty(li.Scalarvariable) If pi Is Nothing Then Continue For If dr.Item(li.Text) Is DBNull.Value Then pi.SetValue(CD, Nothing) Else pi.SetValue(CD, dr.Item(li.Text)) End If Next CD.hasEntry = True ' ------------------------------------------------ ' OPTIONALES NACHLADEN ' ------------------------------------------------ If loadAll Then CD.Parties = cVERAG_CustomsDeclarations_Parties.LOAD_BY_ZAID(CD.za_Id) CD.Items = cVERAG_CustomsDeclarations_Item.LOAD_BY_ZAID(CD.za_Id) CD.Duties = cVERAG_CustomsDeclarations_Duty.LOAD_BY_ZAID(CD.za_Id) CD.Documents = cVERAG_CustomsDeclarations_Document.LOAD_HEAD_BY_ZAID(CD.za_Id) End If LIST.Add(CD) End While End Using End Using End Using Catch ex As Exception cErrorHandler.ERR(ex.Message, ex.StackTrace, Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return LIST End Function Public Shared Function loadByMRN(MRN As String, loadall As Boolean) As cVERAG_CustomsDeclarations Dim ZA As New cVERAG_CustomsDeclarations If If(MRN, "") = "" Then Return ZA Try ZA.hasEntry = False Using conn = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand( "SELECT * FROM tblVERAG_CustomsDeclarations WHERE za_MRN=@_BASE_id", conn) cmd.Parameters.AddWithValue("@_BASE_id", MRN) Dim dr = cmd.ExecuteReader() If dr.Read Then For Each li In ZA.getParameterList() Dim pi = ZA.GetType.GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then pi.SetValue(ZA, Nothing) Else pi.SetValue(ZA, dr.Item(li.Text)) End If Next ZA.hasEntry = True End If dr.Close() End Using End Using If loadall Then ZA.Parties = cVERAG_CustomsDeclarations_Parties.LOAD_BY_ZAID(ZA.za_Id) ZA.Items = cVERAG_CustomsDeclarations_Item.LOAD_BY_ZAID(ZA.za_Id) ZA.Duties = cVERAG_CustomsDeclarations_Duty.LOAD_BY_ZAID(ZA.za_Id) ZA.Documents = cVERAG_CustomsDeclarations_Document.LOAD_HEAD_BY_ZAID(ZA.za_Id) End If Catch ex As Exception cErrorHandler.ERR(ex.Message, ex.StackTrace, MethodInfo.GetCurrentMethod.Name) End Try Return ZA End Function Public Function SAVE() As Boolean Dim list = getParameterList() Dim sqlstr = "BEGIN TRAN " & "IF EXISTS(SELECT 1 FROM tblVERAG_CustomsDeclarations WHERE za_Id=@za_Id) " & "BEGIN " & getUpdateCmd() & " END " & "ELSE BEGIN " & getInsertCmd() & " END " & "COMMIT TRAN" za_Id = SQL.doSQLVarListID(za_Id, sqlstr, "FMZOLL", , list) If za_Id <= 0 Then Return False cVERAG_CustomsDeclarations_Parties.REPLACE_ALL(za_Id, Parties) cVERAG_CustomsDeclarations_Duty.REPLACE_ALL(za_Id, Duties) cVERAG_CustomsDeclarations_Document.REPLACE_HEAD(za_Id, Documents) cVERAG_CustomsDeclarations_Item.REPLACE_ALL(za_Id, Items) Return True End Function End Class Public Class cVERAG_CustomsDeclarations_Parties Public Property zaParty_Id As Integer Public Property zaParty_zaId As Integer Public Property zaParty_Role As String Public Property zaParty_EORI As String Public Property zaParty_EORI_NL As String Public Property zaParty_Name As String Public Property zaParty_Street As String Public Property zaParty_PostalCode As String Public Property zaParty_City As String Public Property zaParty_Country As String Public Property zaParty_TIN As String Public Property zaParty_VATNumber As String Public Property zaParty_TaxOffice As String Public Property zaParty_ContactName As String Public Property zaParty_Phone As String Public Property zaParty_Email As String Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Public Function getParameterList() As List(Of SQLVariable) Return New List(Of SQLVariable) From { New SQLVariable("zaParty_Id", zaParty_Id,, True), New SQLVariable("zaParty_zaId", zaParty_zaId), New SQLVariable("zaParty_Role", zaParty_Role), New SQLVariable("zaParty_EORI", zaParty_EORI), New SQLVariable("zaParty_EORI_NL", zaParty_EORI_NL), New SQLVariable("zaParty_Name", zaParty_Name), New SQLVariable("zaParty_Street", zaParty_Street), New SQLVariable("zaParty_PostalCode", zaParty_PostalCode), New SQLVariable("zaParty_City", zaParty_City), New SQLVariable("zaParty_Country", zaParty_Country), New SQLVariable("zaParty_VATNumber", zaParty_VATNumber), New SQLVariable("zaParty_TaxOffice", zaParty_TaxOffice), New SQLVariable("zaParty_TIN", zaParty_TIN), New SQLVariable("zaParty_ContactName", zaParty_ContactName), New SQLVariable("zaParty_Phone", zaParty_Phone), New SQLVariable("zaParty_Email", zaParty_Email) } End Function Public Function getInsertCmd() As String Dim f As String = "", v As String = "" For Each i In getParameterList() If Not i.isPrimaryParam Then f &= "[" & i.Text & "]," v &= "@" & i.Scalarvariable & "," End If Next Return "INSERT INTO tblVERAG_CustomsDeclarations_Parties (" & f.TrimEnd(","c) & ") VALUES (" & v.TrimEnd(","c) & ")" End Function Public Shared Sub REPLACE_ALL(zaId As Integer, list As List(Of cVERAG_CustomsDeclarations_Parties)) Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL SQL.doSQL("DELETE FROM tblVERAG_CustomsDeclarations_Parties WHERE zaParty_zaId=" & zaId, "FMZOLL") For Each p In list p.zaParty_zaId = zaId p.zaParty_Id = SQL.doSQLVarListID(p.zaParty_Id, p.getInsertCmd(), "FMZOLL", , p.getParameterList()) Next End Sub Public Shared Function LOAD_BY_ZAID(zaId As Integer) As List(Of cVERAG_CustomsDeclarations_Parties) Dim result As New List(Of cVERAG_CustomsDeclarations_Parties) Try Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand( "SELECT * FROM tblVERAG_CustomsDeclarations_Parties WHERE zaParty_zaId=@zaId", conn) cmd.Parameters.AddWithValue("@zaId", zaId) Using dr As SqlDataReader = cmd.ExecuteReader() While dr.Read() Dim obj As New cVERAG_CustomsDeclarations_Parties For Each li In obj.getParameterList() Dim propInfo As PropertyInfo = obj.GetType().GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then propInfo.SetValue(obj, Nothing) Else propInfo.SetValue(obj, dr.Item(li.Text)) End If Next result.Add(obj) End While End Using End Using End Using Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR( ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return result End Function End Class ' ########################################################## ' ITEMS ' ########################################################## Public Class cVERAG_CustomsDeclarations_Item Public Property zaItem_Id As Integer Public Property zaItem_zaId As Integer Public Property zaItem_PosNo As Integer Public Property zaItem_ArticleCode As String Public Property zaItem_HSCode As String Public Property zaItem_HSAddition1 As String Public Property zaItem_HSAddition2 As String Public Property zaItem_HSAddCodes1 As String Public Property zaItem_HSAddCodes2 As String Public Property zaItem_HSAddCodes3 As String Public Property zaItem_HSAddCodes4 As String Public Property zaItem_HSAddCodes5 As String Public Property zaItem_HSAddCodes6 As String Public Property zaItem_HSAddCodes7 As String Public Property zaItem_HSAddCodes8 As String Public Property zaItem_HSAddCodes9 As String Public Property zaItem_HSAddCodes10 As String Public Property zaItem_Description As String Public Property zaItem_PackageColli As String Public Property zaItem_PackageType As String Public Property zaItem_PackageMark As String Public Property zaItem_OriginCountry As String Public Property zaItem_PreferentialCountry As String Public Property zaItem_PreferenceCode As String Public Property zaItem_QuotaNo As String Public Property zaItem_MainProcedure As String Public Property zaItem_AdditionalProc As String Public Property zaItem_PrevProcedure As String Public Property zaItem_GrossMass As Decimal? Public Property zaItem_NetMass As Decimal? Public Property zaItem_SuppUnitCode As String Public Property zaItem_SuppQuantity As Decimal? Public Property zaItem_StatisticalValueEUR As Decimal? Public Property zaItem_CustomsValueEUR As Decimal? Public Property zaItem_InvoiceCurrency As String Public Property zaItem_InvoiceValueForeign As Decimal? Public Property zaItem_InvoiceValueEUR As Decimal? Public Property zaItem_BeguenstigungCode As String Public Property zaItem_DV1Flag As Boolean? Public Property zaItem_PosAddition As String Public Property zaItem_Remarks As String Public Property Documents As New List(Of cVERAG_CustomsDeclarations_Document) Public Property hasEntry As Boolean = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Public Function getParameterList() As List(Of SQLVariable) Return New List(Of SQLVariable) From { New SQLVariable("zaItem_Id", zaItem_Id,, True), New SQLVariable("zaItem_zaId", zaItem_zaId), New SQLVariable("zaItem_PosNo", zaItem_PosNo), New SQLVariable("zaItem_ArticleCode", zaItem_ArticleCode), New SQLVariable("zaItem_HSCode", zaItem_HSCode), New SQLVariable("zaItem_HSAddition1", zaItem_HSAddition1), New SQLVariable("zaItem_HSAddition2", zaItem_HSAddition2), New SQLVariable("zaItem_HSAddCodes1", zaItem_HSAddCodes1), New SQLVariable("zaItem_HSAddCodes2", zaItem_HSAddCodes2), New SQLVariable("zaItem_HSAddCodes3", zaItem_HSAddCodes3), New SQLVariable("zaItem_HSAddCodes4", zaItem_HSAddCodes4), New SQLVariable("zaItem_HSAddCodes5", zaItem_HSAddCodes5), New SQLVariable("zaItem_HSAddCodes6", zaItem_HSAddCodes6), New SQLVariable("zaItem_HSAddCodes7", zaItem_HSAddCodes7), New SQLVariable("zaItem_HSAddCodes8", zaItem_HSAddCodes8), New SQLVariable("zaItem_HSAddCodes9", zaItem_HSAddCodes9), New SQLVariable("zaItem_HSAddCodes10", zaItem_HSAddCodes10), New SQLVariable("zaItem_Description", zaItem_Description), New SQLVariable("zaItem_PackageColli", zaItem_PackageColli), New SQLVariable("zaItem_PackageType", zaItem_PackageType), New SQLVariable("zaItem_PackageMark", zaItem_PackageMark), New SQLVariable("zaItem_OriginCountry", zaItem_OriginCountry), New SQLVariable("zaItem_PreferentialCountry", zaItem_PreferentialCountry), New SQLVariable("zaItem_PreferenceCode", zaItem_PreferenceCode), New SQLVariable("zaItem_QuotaNo", zaItem_QuotaNo), New SQLVariable("zaItem_MainProcedure", zaItem_MainProcedure), New SQLVariable("zaItem_AdditionalProc", zaItem_AdditionalProc), New SQLVariable("zaItem_PrevProcedure", zaItem_PrevProcedure), New SQLVariable("zaItem_GrossMass", zaItem_GrossMass), New SQLVariable("zaItem_NetMass", zaItem_NetMass), New SQLVariable("zaItem_SuppUnitCode", zaItem_SuppUnitCode), New SQLVariable("zaItem_SuppQuantity", zaItem_SuppQuantity), New SQLVariable("zaItem_StatisticalValueEUR", zaItem_StatisticalValueEUR), New SQLVariable("zaItem_CustomsValueEUR", zaItem_CustomsValueEUR), New SQLVariable("zaItem_InvoiceCurrency", zaItem_InvoiceCurrency), New SQLVariable("zaItem_InvoiceValueForeign", zaItem_InvoiceValueForeign), New SQLVariable("zaItem_InvoiceValueEUR", zaItem_InvoiceValueEUR), New SQLVariable("zaItem_BeguenstigungCode", zaItem_BeguenstigungCode), New SQLVariable("zaItem_DV1Flag", zaItem_DV1Flag), New SQLVariable("zaItem_PosAddition", zaItem_PosAddition), New SQLVariable("zaItem_Remarks", zaItem_Remarks) } End Function Public Function getInsertCmd() As String Dim f As String = "", v As String = "" For Each i In getParameterList() If Not i.isPrimaryParam Then f &= "[" & i.Text & "]," v &= "@" & i.Scalarvariable & "," End If Next Return "INSERT INTO tblVERAG_CustomsDeclarations_Items (" & f.TrimEnd(","c) & ") VALUES (" & v.TrimEnd(","c) & ")" End Function ' ---------- DELETE + INSERT ---------- Public Shared Sub REPLACE_ALL(zaId As Integer, list As List(Of cVERAG_CustomsDeclarations_Item)) Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL SQL.doSQL("DELETE FROM tblVERAG_CustomsDeclarations_Items WHERE zaItem_zaId=" & zaId, "FMZOLL") SQL.doSQL("DELETE FROM tblVERAG_CustomsDeclarations_Documents WHERE zaDoc_zaId=" & zaId & " AND zaDoc_ItemId is not null", "FMZOLL") For Each it In list it.zaItem_zaId = zaId it.zaItem_Id = SQL.doSQLVarListID(it.zaItem_Id, it.getInsertCmd(), "FMZOLL", , it.getParameterList()) 'MsgBox(it.zaItem_Id) cVERAG_CustomsDeclarations_Document.INSERT_ITEM(it.zaItem_zaId, it.zaItem_Id, it.Documents) Next End Sub Public Shared Function LOAD_BY_ZAID(zaId As Integer) As List(Of cVERAG_CustomsDeclarations_Item) Dim result As New List(Of cVERAG_CustomsDeclarations_Item) Try Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand( "SELECT * FROM tblVERAG_CustomsDeclarations_Items WHERE zaItem_zaId=@zaId", conn) cmd.Parameters.AddWithValue("@zaId", zaId) Using dr As SqlDataReader = cmd.ExecuteReader() While dr.Read() Dim it As New cVERAG_CustomsDeclarations_Item it.hasEntry = False For Each li In it.getParameterList() Dim pi As PropertyInfo = it.GetType().GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then pi.SetValue(it, Nothing) Else pi.SetValue(it, dr.Item(li.Text)) End If Next it.hasEntry = True result.Add(it) End While End Using End Using End Using ' ===== Documents NACHLADEN (pro Item) ===== For Each it In result it.Documents = cVERAG_CustomsDeclarations_Document.LOAD_ITEM_BY_ITEMID(zaId, it.zaItem_Id) Next Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return result End Function End Class ' ########################################################## ' DUTIES ' ########################################################## Public Class cVERAG_CustomsDeclarations_Duty Public Property zaDuty_Id As Integer Public Property zaDuty_zaId As Integer Public Property zaDuty_AccountType As String Public Property zaDuty_AccountHeadCustoms As String Public Property zaDuty_ApplicationType As String Public Property zaDuty_AccountNo As String Public Property zaDuty_AccountEORI As String Public Property zaDuty_AccountHolderName As String Public Property zaDuty_DutyType As String Public Property zaDuty_BIN As String Public Property zaDuty_AmountEUR As Decimal? Public Property zaDuty_AmountForeign As Decimal? Public Property zaDuty_Currency As String Public Property zaDuty_LimitDate As Date? Public Property hasEntry As Boolean = False Public Function getParameterList() As List(Of SQLVariable) Return New List(Of SQLVariable) From { New SQLVariable("zaDuty_Id", zaDuty_Id,, True), New SQLVariable("zaDuty_zaId", zaDuty_zaId), New SQLVariable("zaDuty_AccountType", zaDuty_AccountType), New SQLVariable("zaDuty_AccountHeadCustoms", zaDuty_AccountHeadCustoms), New SQLVariable("zaDuty_ApplicationType", zaDuty_ApplicationType), New SQLVariable("zaDuty_AccountNo", zaDuty_AccountNo), New SQLVariable("zaDuty_AccountEORI", zaDuty_AccountEORI), New SQLVariable("zaDuty_AccountHolderName", zaDuty_AccountHolderName), New SQLVariable("zaDuty_DutyType", zaDuty_DutyType), New SQLVariable("zaDuty_BIN", zaDuty_BIN), New SQLVariable("zaDuty_AmountEUR", zaDuty_AmountEUR), New SQLVariable("zaDuty_AmountForeign", zaDuty_AmountForeign), New SQLVariable("zaDuty_Currency", zaDuty_Currency), New SQLVariable("zaDuty_LimitDate", zaDuty_LimitDate) } End Function Public Function getInsertCmd() As String Dim f As String = "", v As String = "" For Each i In getParameterList() If Not i.isPrimaryParam Then f &= "[" & i.Text & "]," v &= "@" & i.Scalarvariable & "," End If Next Return "INSERT INTO tblVERAG_CustomsDeclarations_Duties (" & f.TrimEnd(","c) & ") VALUES (" & v.TrimEnd(","c) & ")" End Function ' ---------- DELETE + INSERT ---------- Public Shared Sub REPLACE_ALL(zaId As Integer, list As List(Of cVERAG_CustomsDeclarations_Duty)) Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL SQL.doSQL("DELETE FROM tblVERAG_CustomsDeclarations_Duties WHERE zaDuty_zaId=" & zaId, "FMZOLL") For Each d In list d.zaDuty_zaId = zaId d.zaDuty_Id = SQL.doSQLVarListID(d.zaDuty_Id, d.getInsertCmd(), "FMZOLL", , d.getParameterList()) Next End Sub Public Shared Function LOAD_BY_ZAID(zaId As Integer) _ As List(Of cVERAG_CustomsDeclarations_Duty) Dim result As New List(Of cVERAG_CustomsDeclarations_Duty) Try Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand( "SELECT * FROM tblVERAG_CustomsDeclarations_Duties WHERE zaDuty_zaId=@zaId", conn) cmd.Parameters.AddWithValue("@zaId", zaId) Using dr As SqlDataReader = cmd.ExecuteReader() While dr.Read() Dim d As New cVERAG_CustomsDeclarations_Duty d.hasEntry = False ' ===== DEINE LOAD-VORLAGE (1:1, nur in While) ===== For Each li In d.getParameterList() Dim pi As PropertyInfo = d.GetType().GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then pi.SetValue(d, Nothing) Else pi.SetValue(d, dr.Item(li.Text)) End If Next d.hasEntry = True result.Add(d) End While End Using End Using End Using Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR( ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return result End Function End Class ' ########################################################## ' DOCUMENTS (HEAD + ITEM) ' ########################################################## Public Class cVERAG_CustomsDeclarations_Document Public Property zaDoc_Id As Integer Public Property zaDoc_zaId As Integer Public Property zaDoc_ItemId As Integer? Public Property zaDoc_Date As String Public Property zaDoc_Section As String Public Property zaDoc_Code As String Public Property zaDoc_Presentation As String Public Property zaDoc_DepreciationAmount As String Public Property zaDoc_DepreciationUnitmeasurement As String Public Property zaDoc_DepreciationUnitmeasurementQualifier As String Public Property zaDoc_Reference As String Public Property zaDoc_Description As String Public Property hasEntry As Boolean = False Public Function getParameterList() As List(Of SQLVariable) Return New List(Of SQLVariable) From { New SQLVariable("zaDoc_Id", zaDoc_Id,, True), New SQLVariable("zaDoc_zaId", zaDoc_zaId), New SQLVariable("zaDoc_ItemId", zaDoc_ItemId), New SQLVariable("zaDoc_Date", zaDoc_Date), New SQLVariable("zaDoc_Section", zaDoc_Section), New SQLVariable("zaDoc_Code", zaDoc_Code), New SQLVariable("zaDoc_Reference", zaDoc_Reference), New SQLVariable("zaDoc_Presentation", zaDoc_Presentation), New SQLVariable("zaDoc_DepreciationAmount", zaDoc_DepreciationAmount), New SQLVariable("zaDoc_DepreciationUnitmeasurement", zaDoc_DepreciationUnitmeasurement), New SQLVariable("zaDoc_DepreciationUnitmeasurementQualifier", zaDoc_DepreciationUnitmeasurementQualifier), New SQLVariable("zaDoc_Description", zaDoc_Description) } End Function Public Function getInsertCmd() As String Dim f As String = "", v As String = "" For Each i In getParameterList() If Not i.isPrimaryParam Then f &= "[" & i.Text & "]," v &= "@" & i.Scalarvariable & "," End If Next Return "INSERT INTO tblVERAG_CustomsDeclarations_Documents (" & f.TrimEnd(","c) & ") VALUES (" & v.TrimEnd(","c) & ")" End Function ' ---------- DELETE + INSERT ---------- Public Shared Sub REPLACE_HEAD(zaId As Integer, list As List(Of cVERAG_CustomsDeclarations_Document)) Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL SQL.doSQL( "DELETE FROM tblVERAG_CustomsDeclarations_Documents WHERE zaDoc_zaId=" & zaId & " AND zaDoc_ItemId IS NULL", "FMZOLL") For Each d In list d.zaDoc_zaId = zaId d.zaDoc_ItemId = Nothing d.zaDoc_Id = SQL.doSQLVarListID(d.zaDoc_Id, d.getInsertCmd(), "FMZOLL", , d.getParameterList()) Next End Sub Public Shared Sub INSERT_ITEM(zaId As Integer, itemId As Integer, list As List(Of cVERAG_CustomsDeclarations_Document)) Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL For Each d In list d.zaDoc_zaId = zaId d.zaDoc_ItemId = itemId d.zaDoc_Id = SQL.doSQLVarListID(d.zaDoc_Id, d.getInsertCmd(), "FMZOLL", , d.getParameterList()) Next End Sub Public Shared Function LOAD_HEAD_BY_ZAID(zaId As Integer) As List(Of cVERAG_CustomsDeclarations_Document) Return LOAD_BY_SQL( "SELECT * FROM tblVERAG_CustomsDeclarations_Documents WHERE zaDoc_zaId=" & zaId & " AND zaDoc_ItemId IS NULL") End Function Public Shared Function LOAD_ITEM_BY_ITEMID(zaId As Integer, itemId As Integer) As List(Of cVERAG_CustomsDeclarations_Document) Return LOAD_BY_SQL( "SELECT * FROM tblVERAG_CustomsDeclarations_Documents WHERE zaDoc_zaId=" & zaId & " AND zaDoc_ItemId=" & itemId) End Function Private Shared Function LOAD_BY_SQL(sqlstr As String) _ As List(Of cVERAG_CustomsDeclarations_Document) Dim result As New List(Of cVERAG_CustomsDeclarations_Document) Try Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand(sqlstr, conn) Using dr As SqlDataReader = cmd.ExecuteReader() While dr.Read() Dim d As New cVERAG_CustomsDeclarations_Document d.hasEntry = False ' ===== DEINE LOAD-VORLAGE (1:1, kombiniert) ===== For Each li In d.getParameterList() Dim pi As PropertyInfo = d.GetType().GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then pi.SetValue(d, Nothing) Else pi.SetValue(d, dr.Item(li.Text)) End If Next d.hasEntry = True result.Add(d) End While End Using End Using End Using Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR( ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return result End Function End Class