Imports System.Data.SqlClient Imports System.Reflection ' ========================================================================== ' MASTER CLASS ' Customs Declaration (Header + Items + Duties + Documents) ' ========================================================================== Public Class cVERAG_Zollanmeldung '=== KONSTRUKTOR ======================================================= Public Sub New() End Sub Public Sub New(id As Integer) za_Id = id LOAD() End Sub '=== FELDER ============================================================ Public Property za_Id As Integer Public Property za_System As String Public Property za_ExternalSystem As Boolean Public Property za_Firma As String Public Property za_Niederlassung As String Public Property za_AvisoId As Integer? Public Property za_SendungsId As Integer? Public Property za_InternalRef As String Public Property za_MRN As String Public Property za_LRN As String Public Property za_DeclarationNo As String Public Property za_Procedure As String Public Property za_RepresentationCode As String Public Property za_FiscalRepresentation As Boolean? Public Property za_CountryDispatch As String Public Property za_CountryDestination As String Public Property za_CountryOrigin As String Public Property za_TotalItems As Integer? Public Property za_TotalGross As Decimal? Public Property za_TotalInvoice As Decimal? Public Property za_TotalCustomsValue As Decimal? Public Property za_TransportMode_Border As Integer? Public Property za_VehicleId As String Public Property za_Incoterm As String Public Property za_IncotermPlace As String Public Property za_DocumentsPresent As Boolean Public Property za_ReleaseDate As Date? Public Property za_DeclarationDate As Date? Public Property za_Created As Date = Now Public Property za_Modified As Date = Now '=== UNTERKLASSEN ====================================================== Public Property Items As New List(Of cVERAG_Zollanmeldung_Item) Public Property Duties As New List(Of cVERAG_Zollanmeldung_Duty) Public Property Documents As New List(Of cVERAG_Zollanmeldung_Document) Public Property ItemDocuments As New List(Of cVERAG_Zollanmeldung_ItemDocument) Private SQL As New VERAG_PROG_ALLGEMEIN.SQL '======================================================================== ' PARAMETERLISTE (Header) '======================================================================== Public Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim L As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_Id", za_Id,, True, True)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_System", za_System)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_ExternalSystem", za_ExternalSystem)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_Firma", za_Firma)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_Niederlassung", za_Niederlassung)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_AvisoId", za_AvisoId)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_SendungsId", za_SendungsId)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_InternalRef", za_InternalRef)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_MRN", za_MRN)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_LRN", za_LRN)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_DeclarationNo", za_DeclarationNo)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_Procedure", za_Procedure)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_RepresentationCode", za_RepresentationCode)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_FiscalRepresentation", za_FiscalRepresentation)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_CountryDispatch", za_CountryDispatch)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_CountryDestination", za_CountryDestination)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_CountryOrigin", za_CountryOrigin)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_TotalItems", za_TotalItems)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_TotalGross", za_TotalGross)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_TotalInvoice", za_TotalInvoice)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_TotalCustomsValue", za_TotalCustomsValue)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_TransportMode_Border", za_TransportMode_Border)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_VehicleId", za_VehicleId)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_Incoterm", za_Incoterm)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_IncotermPlace", za_IncotermPlace)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_DocumentsPresent", za_DocumentsPresent)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_ReleaseDate", za_ReleaseDate)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_DeclarationDate", za_DeclarationDate)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_Created", za_Created)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("za_Modified", za_Modified)) Return L End Function '======================================================================== ' SAVE (HEADER) '======================================================================== Public Function SAVE() As Boolean Dim list = getParameterList() Dim sqlstr As String = " 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, "VERAG", , list) Return za_Id > 0 End Function '======================================================================== ' SAVE_ALL (Header + Items + Duties + Docs) '======================================================================== Public Function SAVE_ALL() As Boolean If Not SAVE() Then Return False If Not SAVE_Items() Then Return False If Not SAVE_Duties() Then Return False If Not SAVE_Documents() Then Return False If Not SAVE_ItemDocuments() Then Return False Return True End Function '======================================================================== ' LOAD HEADER '======================================================================== Public Function LOAD(Optional loadALL As Boolean = True) As Boolean If loadALL Then Items.Clear() Duties.Clear() Documents.Clear() ItemDocuments.Clear() End If Using conn = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM tblVERAG_CustomsDeclarations WHERE za_Id=@id", conn) cmd.Parameters.AddWithValue("@id", za_Id) Using dr = cmd.ExecuteReader() If dr.Read Then For Each p In getParameterList() Dim prop = Me.GetType().GetProperty(p.Scalarvariable) If prop IsNot Nothing Then If IsDBNull(dr(p.Text)) Then prop.SetValue(Me, Nothing) Else prop.SetValue(Me, dr(p.Text)) End If End If Next dr.Close() If loadALL Then LOAD_Items() LOAD_Duties() LOAD_Documents() LOAD_ItemDocuments() End If Return True End If End Using End Using End Using Return False End Function '======================================================================== ' SAVE ITEMS '======================================================================== Private Function SAVE_Items() As Boolean For Each it In Items it.zaItem_DeclarationId = za_Id If Not it.SAVE() Then Return False Next Return True End Function '======================================================================== ' SAVE DUTIES '======================================================================== Private Function SAVE_Duties() As Boolean For Each du In Duties du.zaDuty_DeclarationId = za_Id If Not du.SAVE() Then Return False Next Return True End Function '======================================================================== ' SAVE DOCS HEADER '======================================================================== Private Function SAVE_Documents() As Boolean For Each d In Documents d.zaDoc_DeclarationId = za_Id If Not d.SAVE() Then Return False Next Return True End Function '======================================================================== ' SAVE DOCS ITEM '======================================================================== Private Function SAVE_ItemDocuments() As Boolean For Each d In ItemDocuments If Not d.SAVE() Then Return False Next Return True End Function '======================================================================== ' LOAD UNTERKLASSEN '======================================================================== Private Sub LOAD_Items() Using conn = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM tblVERAG_CustomsDeclarations_Items WHERE zaItem_DeclarationId=@id ORDER BY zaItem_Line", conn) cmd.Parameters.AddWithValue("@id", za_Id) Using dr = cmd.ExecuteReader() While dr.Read Dim it As New cVERAG_Zollanmeldung_Item it.LOAD_FROM_READER(dr) Items.Add(it) End While End Using End Using End Using End Sub Private Sub LOAD_Duties() Using conn = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM tblVERAG_CustomsDeclarations_Duties WHERE zaDuty_DeclarationId=@id", conn) cmd.Parameters.AddWithValue("@id", za_Id) Using dr = cmd.ExecuteReader() While dr.Read Dim du As New cVERAG_Zollanmeldung_Duty du.LOAD_FROM_READER(dr) Duties.Add(du) End While End Using End Using End Using End Sub Private Sub LOAD_Documents() Using conn = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM tblVERAG_CustomsDeclarations_Documents WHERE zaDoc_DeclarationId=@id AND zaDoc_Level='H'", conn) cmd.Parameters.AddWithValue("@id", za_Id) Using dr = cmd.ExecuteReader() While dr.Read Dim d As New cVERAG_Zollanmeldung_Document d.LOAD_FROM_READER(dr) Documents.Add(d) End While End Using End Using End Using End Sub Private Sub LOAD_ItemDocuments() Using conn = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM tblVERAG_CustomsDeclarations_Documents WHERE zaDoc_Level='I' AND zaDoc_DeclarationId=@id", conn) cmd.Parameters.AddWithValue("@id", za_Id) Using dr = cmd.ExecuteReader() While dr.Read Dim d As New cVERAG_Zollanmeldung_ItemDocument d.LOAD_FROM_READER(dr) ItemDocuments.Add(d) End While End Using End Using End Using End Sub '======================================================================== ' SQL HELPERS '======================================================================== Private Function getUpdateCmd() As String Dim cols As New Text.StringBuilder() For Each p In getParameterList() If Not p.isPrimaryParam Then cols.Append("[" & p.Text & "]=@" & p.Scalarvariable & ",") End If Next Dim setClause = cols.ToString().TrimEnd(","c) Return "UPDATE tblVERAG_CustomsDeclarations SET " & setClause & " WHERE za_Id=@za_Id" End Function Private Function getInsertCmd() As String Dim C As New List(Of String) Dim V As New List(Of String) For Each p In getParameterList() If Not p.isPrimaryParam Then C.Add("[" & p.Text & "]") V.Add("@" & p.Scalarvariable) End If Next Return "INSERT INTO tblVERAG_CustomsDeclarations (" & String.Join(",", C) & ") VALUES (" & String.Join(",", V) & ");" End Function End Class ' ========================================================================== ' ITEM ' ========================================================================== Public Class cVERAG_Zollanmeldung_Item Public Property zaItem_Id As Integer Public Property zaItem_DeclarationId As Integer Public Property zaItem_Line As Integer Public Property zaItem_ArticleCode As String Public Property zaItem_HSCode As String Public Property zaItem_Description As String Public Property zaItem_Qty As Decimal? Public Property zaItem_Unit As String Public Property zaItem_Gross As Decimal? Public Property zaItem_Net As Decimal? Public Property zaItem_InvoiceValue As Decimal? Public Property zaItem_CustomsValue As Decimal? Public Property zaItem_StatisticalValue As Decimal? Public Property zaItem_Currency As String Public Property zaItem_OriginCountry As String Public Property zaItem_PreferenceCode As String Private SQL As New VERAG_PROG_ALLGEMEIN.SQL '--- PARAMLIST ---------------------------------------------------------- Public Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim L As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_Id", zaItem_Id,, True, True)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_DeclarationId", zaItem_DeclarationId)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_Line", zaItem_Line)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_ArticleCode", zaItem_ArticleCode)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_HSCode", zaItem_HSCode)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_Description", zaItem_Description)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_Qty", zaItem_Qty)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_Unit", zaItem_Unit)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_Gross", zaItem_Gross)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_Net", zaItem_Net)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_InvoiceValue", zaItem_InvoiceValue)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_CustomsValue", zaItem_CustomsValue)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_StatisticalValue", zaItem_StatisticalValue)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_Currency", zaItem_Currency)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_OriginCountry", zaItem_OriginCountry)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaItem_PreferenceCode", zaItem_PreferenceCode)) Return L End Function '--- SAVE --------------------------------------------------------------- Public Function SAVE() As Boolean Dim list = getParameterList() Dim sqlstr As String = " BEGIN TRAN " & " IF EXISTS(SELECT 1 FROM tblVERAG_CustomsDeclarations_Items WHERE zaItem_Id=@zaItem_Id) " & " BEGIN " & getUpdateCmd() & " END " & " ELSE BEGIN " & getInsertCmd() & " END " & " COMMIT TRAN " zaItem_Id = SQL.doSQLVarListID(zaItem_Id, sqlstr, "VERAG", , list) Return zaItem_Id > 0 End Function '--- LOAD FROM DATAREADER ---------------------------------------------- Public Sub LOAD_FROM_READER(dr As SqlDataReader) For Each p In getParameterList() Dim prop = Me.GetType().GetProperty(p.Scalarvariable) If prop IsNot Nothing Then If IsDBNull(dr(p.Text)) Then prop.SetValue(Me, Nothing) Else prop.SetValue(Me, dr(p.Text)) End If End If Next End Sub '--- SQL HELPERS -------------------------------------------------------- Private Function getUpdateCmd() As String Dim cols As New List(Of String) For Each p In getParameterList() If Not p.isPrimaryParam Then cols.Add("[" & p.Text & "]=@" & p.Scalarvariable) End If Next Return "UPDATE tblVERAG_CustomsDeclarations_Items SET " & String.Join(",", cols) & " WHERE zaItem_Id=@zaItem_Id" End Function Private Function getInsertCmd() As String Dim C As New List(Of String) Dim V As New List(Of String) For Each p In getParameterList() If Not p.isPrimaryParam Then C.Add("[" & p.Text & "]") V.Add("@" & p.Scalarvariable) End If Next Return "INSERT INTO tblVERAG_CustomsDeclarations_Items (" & String.Join(",", C) & ") VALUES (" & String.Join(",", V) & ")" End Function End Class ' ========================================================================== ' DUTY ' ========================================================================== Public Class cVERAG_Zollanmeldung_Duty Public Property zaDuty_Id As Integer Public Property zaDuty_DeclarationId As Integer Public Property zaDuty_ItemId As Integer? Public Property zaDuty_Type As String Public Property zaDuty_BaseAmountForeign As Decimal? Public Property zaDuty_BaseCurrency As String Public Property zaDuty_BaseAmountEUR As Decimal? Public Property zaDuty_Rate As String Public Property zaDuty_AmountForeign As Decimal? Public Property zaDuty_AmountCurrency As String Public Property zaDuty_AmountEUR As Decimal? Public Property zaDuty_DeferredFlag As Boolean? Public Property zaDuty_DeferredAccount As String Public Property zaDuty_MeasureId As String Public Property zaDuty_Indicator As String Public Property zaDuty_Remarks As String Private SQL As New VERAG_PROG_ALLGEMEIN.SQL '--- PARAMLIST ---------------------------------------------------------- Public Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim L As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_Id", zaDuty_Id,, True, True)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_DeclarationId", zaDuty_DeclarationId)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_ItemId", zaDuty_ItemId)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_Type", zaDuty_Type)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_BaseAmountForeign", zaDuty_BaseAmountForeign)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_BaseCurrency", zaDuty_BaseCurrency)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_BaseAmountEUR", zaDuty_BaseAmountEUR)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_Rate", zaDuty_Rate)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_AmountForeign", zaDuty_AmountForeign)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_AmountCurrency", zaDuty_AmountCurrency)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_AmountEUR", zaDuty_AmountEUR)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_DeferredFlag", zaDuty_DeferredFlag)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_DeferredAccount", zaDuty_DeferredAccount)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_MeasureId", zaDuty_MeasureId)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_Indicator", zaDuty_Indicator)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDuty_Remarks", zaDuty_Remarks)) Return L End Function '--- SAVE --------------------------------------------------------------- Public Function SAVE() As Boolean Dim list = getParameterList() Dim sqlstr As String = " BEGIN TRAN " & " IF EXISTS(SELECT 1 FROM tblVERAG_CustomsDeclarations_Duties WHERE zaDuty_Id=@zaDuty_Id) " & " BEGIN " & getUpdateCmd() & " END " & " ELSE BEGIN " & getInsertCmd() & " END " & " COMMIT TRAN " zaDuty_Id = SQL.doSQLVarListID(zaDuty_Id, sqlstr, "VERAG", , list) Return zaDuty_Id > 0 End Function '--- LOAD FROM DATAREADER ---------------------------------------------- Public Sub LOAD_FROM_READER(dr As SqlDataReader) For Each p In getParameterList() Dim prop = Me.GetType().GetProperty(p.Scalarvariable) If prop IsNot Nothing Then If IsDBNull(dr(p.Text)) Then prop.SetValue(Me, Nothing) Else prop.SetValue(Me, dr(p.Text)) End If End If Next End Sub '--- SQL HELPERS -------------------------------------------------------- Private Function getUpdateCmd() As String Dim cols As New List(Of String) For Each p In getParameterList() If Not p.isPrimaryParam Then cols.Add("[" & p.Text & "]=@" & p.Scalarvariable) End If Next Return "UPDATE tblVERAG_CustomsDeclarations_Duties SET " & String.Join(",", cols) & " WHERE zaDuty_Id=@zaDuty_Id" End Function Private Function getInsertCmd() As String Dim C As New List(Of String) Dim V As New List(Of String) For Each p In getParameterList() If Not p.isPrimaryParam Then C.Add("[" & p.Text & "]") V.Add("@" & p.Scalarvariable) End If Next Return "INSERT INTO tblVERAG_CustomsDeclarations_Duties (" & String.Join(",", C) & ") VALUES (" & String.Join(",", V) & ")" End Function End Class ' ========================================================================== ' DOCUMENT (HEADER) ' ========================================================================== Public Class cVERAG_Zollanmeldung_Document Public Property zaDoc_Id As Integer Public Property zaDoc_DeclarationId As Integer Public Property zaDoc_Level As String = "H" Public Property zaDoc_Code As String Public Property zaDoc_Type As String Public Property zaDoc_Reference As String Public Property zaDoc_IssueDate As Date? Public Property zaDoc_IssueCountry As String Public Property zaDoc_IssueTIN As String Public Property zaDoc_UID As String Public Property zaDoc_ValidTo As Date? Public Property zaDoc_Remarks As String Private SQL As New VERAG_PROG_ALLGEMEIN.SQL '--- PARAMLIST ---------------------------------------------------------- Public Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim L As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_Id", zaDoc_Id,, True, True)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_DeclarationId", zaDoc_DeclarationId)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_Level", zaDoc_Level)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_Code", zaDoc_Code)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_Type", zaDoc_Type)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_Reference", zaDoc_Reference)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_IssueDate", zaDoc_IssueDate)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_IssueCountry", zaDoc_IssueCountry)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_IssueTIN", zaDoc_IssueTIN)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_UID", zaDoc_UID)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_ValidTo", zaDoc_ValidTo)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_Remarks", zaDoc_Remarks)) Return L End Function '--- SAVE --------------------------------------------------------------- Public Function SAVE() As Boolean Dim list = getParameterList() Dim sqlstr As String = " BEGIN TRAN " & " IF EXISTS(SELECT 1 FROM tblVERAG_CustomsDeclarations_Documents WHERE zaDoc_Id=@zaDoc_Id) " & " BEGIN " & getUpdateCmd() & " END " & " ELSE BEGIN " & getInsertCmd() & " END " & " COMMIT TRAN " zaDoc_Id = SQL.doSQLVarListID(zaDoc_Id, sqlstr, "VERAG", , list) Return zaDoc_Id > 0 End Function '--- LOAD FROM DATAREADER ---------------------------------------------- Public Sub LOAD_FROM_READER(dr As SqlDataReader) For Each p In getParameterList() Dim prop = Me.GetType().GetProperty(p.Scalarvariable) If prop IsNot Nothing Then If IsDBNull(dr(p.Text)) Then prop.SetValue(Me, Nothing) Else prop.SetValue(Me, dr(p.Text)) End If End If Next End Sub '--- SQL HELPERS -------------------------------------------------------- Private Function getUpdateCmd() As String Dim cols As New List(Of String) For Each p In getParameterList() If Not p.isPrimaryParam Then cols.Add("[" & p.Text & "]=@" & p.Scalarvariable) End If Next Return "UPDATE tblVERAG_CustomsDeclarations_Documents SET " & String.Join(",", cols) & " WHERE zaDoc_Id=@zaDoc_Id" End Function Private Function getInsertCmd() As String Dim C As New List(Of String) Dim V As New List(Of String) For Each p In getParameterList() If Not p.isPrimaryParam Then C.Add("[" & p.Text & "]") V.Add("@" & p.Scalarvariable) End If Next Return "INSERT INTO tblVERAG_CustomsDeclarations_Documents (" & String.Join(",", C) & ") VALUES (" & String.Join(",", V) & ")" End Function End Class ' ========================================================================== ' DOCUMENT (ITEM) ' ========================================================================== Public Class cVERAG_Zollanmeldung_ItemDocument Public Property zaDoc_Id As Integer Public Property zaDoc_DeclarationId As Integer? Public Property zaDoc_ItemId As Integer? Public Property zaDoc_Level As String = "I" Public Property zaDoc_Code As String Public Property zaDoc_Type As String Public Property zaDoc_Reference As String Public Property zaDoc_IssueDate As Date? Public Property zaDoc_IssueCountry As String Public Property zaDoc_IssueTIN As String Public Property zaDoc_UID As String Public Property zaDoc_ValidTo As Date? Public Property zaDoc_Remarks As String Private SQL As New VERAG_PROG_ALLGEMEIN.SQL '--- PARAMLIST ---------------------------------------------------------- Public Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim L As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_Id", zaDoc_Id,, True, True)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_DeclarationId", zaDoc_DeclarationId)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_ItemId", zaDoc_ItemId)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_Level", zaDoc_Level)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_Code", zaDoc_Code)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_Type", zaDoc_Type)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_Reference", zaDoc_Reference)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_IssueDate", zaDoc_IssueDate)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_IssueCountry", zaDoc_IssueCountry)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_IssueTIN", zaDoc_IssueTIN)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_UID", zaDoc_UID)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_ValidTo", zaDoc_ValidTo)) L.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("zaDoc_Remarks", zaDoc_Remarks)) Return L End Function '--- SAVE --------------------------------------------------------------- Public Function SAVE() As Boolean Dim list = getParameterList() Dim sqlstr As String = " BEGIN TRAN " & " IF EXISTS(SELECT 1 FROM tblVERAG_CustomsDeclarations_Documents WHERE zaDoc_Id=@zaDoc_Id) " & " BEGIN " & getUpdateCmd() & " END " & " ELSE BEGIN " & getInsertCmd() & " END " & " COMMIT TRAN " zaDoc_Id = SQL.doSQLVarListID(zaDoc_Id, sqlstr, "VERAG", , list) Return zaDoc_Id > 0 End Function '--- LOAD FROM DATAREADER ---------------------------------------------- Public Sub LOAD_FROM_READER(dr As SqlDataReader) For Each p In getParameterList() Dim prop = Me.GetType().GetProperty(p.Scalarvariable) If prop IsNot Nothing Then If IsDBNull(dr(p.Text)) Then prop.SetValue(Me, Nothing) Else prop.SetValue(Me, dr(p.Text)) End If End If Next End Sub '--- SQL HELPERS -------------------------------------------------------- Private Function getUpdateCmd() As String Dim cols As New List(Of String) For Each p In getParameterList() If Not p.isPrimaryParam Then cols.Add("[" & p.Text & "]=@" & p.Scalarvariable) End If Next Return "UPDATE tblVERAG_CustomsDeclarations_Documents SET " & String.Join(",", cols) & " WHERE zaDoc_Id=@zaDoc_Id" End Function Private Function getInsertCmd() As String Dim C As New List(Of String) Dim V As New List(Of String) For Each p In getParameterList() If Not p.isPrimaryParam Then C.Add("[" & p.Text & "]") V.Add("@" & p.Scalarvariable) End If Next Return "INSERT INTO tblVERAG_CustomsDeclarations_Documents (" & String.Join(",", C) & ") VALUES (" & String.Join(",", V) & ")" End Function End Class