Imports System.Data.SqlClient
Imports System.Reflection



Public Class cSpeditionsbuchList
    Property FilialenNr As Integer = -1
    Property AbfertigungsNr As Integer = -1

    Property min As Integer = -1
    Property max As Integer = -1


    ' Property OffertenNr As Object = Nothing
    Public LIST As New List(Of cSpeditionsbuch)
    Dim SQL As New SQL
    'Dim listTodelete As New List(Of cOfferte)

    Sub New(FilialenNr, AbfertigungsNr)
        Me.FilialenNr = FilialenNr
        Me.AbfertigungsNr = AbfertigungsNr

        LOAD_LIST(Me.FilialenNr, Me.AbfertigungsNr)
    End Sub
    Public Sub CLEAR()
        LIST.Clear()
    End Sub

    Public Sub LOAD_LIST()
        LOAD_LIST(FilialenNr, AbfertigungsNr)
    End Sub

    Public Sub LOAD_LIST(FilialenNr, AbfertigungsNr)
        Try
            LIST.Clear()
            min = 999999
            max = -1
            Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
                Using cmd As New SqlCommand("SELECT * FROM Speditionsbuch WHERE FilialenNr=@FilialenNr AND AbfertigungsNr=@AbfertigungsNr ", conn)
                    cmd.Parameters.AddWithValue("@FilialenNr", FilialenNr)
                    cmd.Parameters.AddWithValue("@AbfertigungsNr", AbfertigungsNr)
                    Dim dr = cmd.ExecuteReader()
                    While dr.Read
                        Dim l As New cSpeditionsbuch
                        l.LOAD(dr.Item("FilialenNr"), dr.Item("AbfertigungsNr"), dr.Item("UnterNr"))
                        LIST.Add(l)
                        If l.UnterNr < min Then min = l.UnterNr
                        If l.UnterNr > max Then max = l.UnterNr
                    End While
                    dr.Close()
                End Using
            End Using
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
        End Try
    End Sub
    'Function SAVE()
    '    If SQL.doSQLVarList("DELETE FROM tblEmailBenachrichtigung WHERE eb_KundenNr=" & Me.eb_KundenNr & " and eb_ebartId=" & Me.eb_ebartId & " ", "FMZOLL") Then
    '        For Each l In LIST
    '            If Not l.INSERT() Then Return False
    '        Next
    '       Return True
    '    Else
    '       Return False
    '   End If
    'End Function
End Class


Public Class cSpeditionsbuch
    Property FilialenNr As Integer = -1
    Property AbfertigungsNr As Integer = -1
    Property UnterNr As Integer = -1
    Property Abfertigungsdatum As Object = CDate(Now.ToShortDateString)
    Property Bar As Boolean = False
    Property Fakturiert As Boolean = False
    Property BelegNr As String = ""
    Property ErfassungsNr As String = ""
    Property LKW_Kennzeichen As String = ""
    '  Property AvisiererKundenNr As Object = Nothing
    '  Property Avisierer As String = ""
    '  Property AbsenderKundenNr As Object = Nothing
    'Property Absender As String = ""
    'Property AbsenderOffertenNr As Object = Nothing
    'Property EmpfängerKundenNr As Object = Nothing
    'Property Empfänger As String = ""
    'Property EmpfängerOffertenNr As Object = Nothing
    'Property VermittlerKundenNr As Object = Nothing
    'Property Vermittler As String = ""
    'Property VermittlerOffertenNr As Object = Nothing
    'Property FrachtführerKundenNr As Object = Nothing
    'Property Frachtführer As String = ""

    Property AvisiererKundenNr As Object = Nothing
    <VBFixedString(50)> Public Avisierer As String = ""
    Property AbsenderKundenNr As Object = Nothing
    <VBFixedString(50)> Public Absender As String = ""
    Property AbsenderOffertenNr As Object = Nothing
    Property EmpfängerKundenNr As Object = Nothing
    <VBFixedString(50)> Public Empfänger As String = ""
    Property EmpfängerOffertenNr As Object = Nothing
    Property VermittlerKundenNr As Object = Nothing
    <VBFixedString(50)> Public Vermittler As String = ""
    Property VermittlerOffertenNr As Object = Nothing
    Property FrachtführerKundenNr As Object = Nothing
    <VBFixedString(50)> Public Frachtführer As String = ""


    Property AnzahlZA As Integer = 0
    Property AnzahlZAFremd As Integer = 0
    Property AnzahlZnV As Integer = 0
    Property AnzahlZnVFremd As Integer = 0
    Property AnzahlT1 As Integer = 0
    Property AnzahlT2 As Integer = 0
    Property AnzahlAE As Integer = 0
    Property AnzahlCarnetTIR As Integer = 0
    Property AnzahlBarvorlagen As Integer = 0
    Property AnzahlSonstiges As Integer = 0
    Property AnzahlGrenzgebühren As Integer = 0
    Property AvisUhrzeit As String = ""
    Property Vermerk As String = ""
    Property Bemerkungen As String = ""
    Property Währungsschlüssel As Object = Nothing 'int=-1
    Property Rechnungsbetrag As Object = Nothing 'dbl=0
    Property Umrechnungskurs As Object = CDbl(1) 'dbl=1
    Property Packstücke As String = ""
    Property Rohmasse As Object = Nothing 'int=0
    Property Zahlungsaufschub As String = ""
    Property Löschen As Object = Nothing
    Property Abfertigungsart As Object = Nothing
    Property Abfertigungsanzahl As Integer = 0
    Property AbfertigungsanzahlPos As Object = Nothing
    Property Barzahlungsbetrag As Double = 0
    '  Property Sachbearbeiter As String = ""
    <VBFixedString(15)> Public Sachbearbeiter As String = ""
    Property Personalnummer As Object = Nothing 'int=-1
    Property PersonalnummerQS As Object = Nothing 'int=-1
    Property AtlasBezNrEZA As String = ""
    Property AtlasBezNrNCTS As String = ""
    Property Versendungsland As String = ""
    Property SB_CMR As Boolean = False
    Property SB_CMRDatum As Object = Nothing
    Property SB_CMRNr As Object = Nothing
    Property veoerz_basbtg As Double = 0
    Property Zucker_MRN_Nr As Object = Nothing
    Property Zucker_MRN_Datum As Object = Nothing
    Property Zucker_Aufschub As Object = Nothing
    Property Zollsystem As String = Nothing
    Property Bestimmungszollstelle As String = ""
    Property Bürgschaft As String = ""
    Property Sicherheitsbetrag As Double = 0
    Property SgutKompl As Object = Nothing
    Property Bestimmungsland As String = ""
    Property EuFiskalEmpfänger As String = ""
    Property QKN As String = ""
    Property EndempfängerKundenNr As Object = Nothing
    ' Property Endempfänger As String = ""
    <VBFixedString(50)> Public Endempfänger As String = ""

    Property AvisoID As Object = Nothing
    Property SendungID As Object = Nothing
    Property Grenzstelle As Object = Nothing


    Property KdAuftragsNr As Object = Nothing
    Property KdAuftragsNrAvisierer As Object = Nothing
    Property KdAuftragsNrEmpfaenger As Object = Nothing
    Property KdAuftragsNrFrachtfuehrer As Object = Nothing
    Property SB_Zeitstempel As Object = Now

    Property NCTS_Verzollungsadresse As Object = Nothing
    Property NCTS_VerzollungsadresseKdNr As Object = Nothing
    Property AuftraggeberBetragKassiert As Object = Nothing

    Property Lieferantenrechnung As Object = Nothing
    Property DokumentId_Steuerbeleg As Object = Nothing
    Property DokumentId_Mitteilung As Object = Nothing
    Property DokumentId_VBD As Object = Nothing
    Property DokumentId_ABD As Object = Nothing
    Property DokumentId_AVM As Object = Nothing
    Property FilialenNrHandling As Object = Nothing
    Property HandlingZuKassieren As Double = 0

    Property FilialenNrAbklaerung As Object = Nothing
    Property PersonalnummerAbklTR As Object = Nothing
    Property UK_EIDR_ausstehend As Boolean = False


    Property UNTERPOS As New List(Of cSpeditionsbuchUnterPos)
    Property VORKOSTEN As New List(Of cVorkosten)
    Property ENDEMPFAENGER As New List(Of cEndEmpfaener)

    Dim SQL As New SQL

    Public Sub New()
    End Sub

    Property hasEntry As Boolean = False

    Public Sub New(FilialenNr As Integer, AbfertigungsNr As Integer, UnterNr As Integer)
        Me.FilialenNr = FilialenNr
        Me.AbfertigungsNr = AbfertigungsNr
        Me.UnterNr = UnterNr
        LOAD(FilialenNr, AbfertigungsNr, UnterNr)
    End Sub

    Public Sub New(FilialenNr As Integer, AbfertigungsNr As Integer)
        Me.FilialenNr = FilialenNr
        Me.AbfertigungsNr = AbfertigungsNr
        Me.UnterNr = NewUNTER_NR()
        LOAD(FilialenNr, AbfertigungsNr, UnterNr)
    End Sub


    Function NewUNTER_NR() As Integer
        Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("FilialenNr", FilialenNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbfertigungsNr", AbfertigungsNr))
        UnterNr = SQL.getValueTxtBySqlVarList("SELECT isnull(MAX(UnterNr)+1,0) FROM Speditionsbuch WHERE [FilialenNr]=@FilialenNr AND AbfertigungsNr=@AbfertigungsNr", "FMZOLL", list)
        Return UnterNr
    End Function



    Public Shared Function existsSpedBuch(FilialenNr As Integer, AbfertigungsNr As Integer) As Boolean 'obj As Object, tablename As String, where As String) As Boolean
        If FilialenNr <= 0 Then Return False
        If AbfertigungsNr <= 0 Then Return False
        Dim SQL As New SQL
        Return (CInt(SQL.getValueTxtBySql(" SELECT COUNT(*) FROM [Speditionsbuch] WHERE [FilialenNr]='" & FilialenNr & "' AND AbfertigungsNr='" & AbfertigungsNr & "' ", "FMZOLL")) > 0)
    End Function


    Public Function SAVE() As Boolean 'obj As Object, tablename As String, where As String) As Boolean
        Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
        '  MsgBox(getUpdateCmd())
        Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM [Speditionsbuch] WITH(updlock,serializable) WHERE [FilialenNr]=@FilialenNr AND AbfertigungsNr=@AbfertigungsNr AND UnterNr=@UnterNr) " &
                       " BEGIN " & getUpdateCmd() & " END " &
                       " Else " &
                       " BEGIN " & getInsertCmd() & " END " &
                       " commit tran "

        If SQL.doSQLVarList(sqlstr, "FMZOLL", , list) Then
            If SAVE_VORKOSTEN() And SAVE_ENDEMPFAENGER() Then
                Return True
            End If
        End If
        Return False
    End Function
    Public Sub LOAD()
        LOAD(FilialenNr, AbfertigungsNr, UnterNr)
    End Sub
    Public Sub LOAD(FilialenNr As Integer, AbfertigungsNr As Integer, UnterNr As Integer)
        Try
            Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
                Using cmd As New SqlCommand("SELECT * FROM Speditionsbuch WHERE [FilialenNr]=@FilialenNr AND AbfertigungsNr=@AbfertigungsNr AND UnterNr=@UnterNr ", conn)
                    cmd.Parameters.AddWithValue("@FilialenNr", FilialenNr)
                    cmd.Parameters.AddWithValue("@AbfertigungsNr", AbfertigungsNr)
                    cmd.Parameters.AddWithValue("@UnterNr", UnterNr)

                    Dim dr = cmd.ExecuteReader()
                    If dr.Read Then
                        Me.FilialenNr = SQL.checkNullInteger(dr.Item("FilialenNr"))
                        Me.AbfertigungsNr = SQL.checkNullInteger(dr.Item("AbfertigungsNr"))
                        Me.UnterNr = SQL.checkNullInteger(dr.Item("UnterNr"))
                        Me.Abfertigungsdatum = SQL.checkNullDateNothing(dr.Item("Abfertigungsdatum"))
                        Me.Bar = SQL.checkNullBool(dr.Item("Bar"))
                        Me.Fakturiert = SQL.checkNullBool(dr.Item("Fakturiert"))
                        Me.BelegNr = SQL.checkNullStr(dr.Item("BelegNr"))
                        Me.ErfassungsNr = SQL.checkNullStr(dr.Item("ErfassungsNr"))
                        Me.LKW_Kennzeichen = SQL.checkNullStr(dr.Item("LKW Kennzeichen"))
                        Me.AvisiererKundenNr = SQL.checkNullReturnValue(dr.Item("AvisiererKundenNr"), Nothing)
                        Me.Avisierer = SQL.checkNullStr(dr.Item("Avisierer"))
                        Me.AbsenderKundenNr = SQL.checkNullReturnValue(dr.Item("AbsenderKundenNr"), Nothing)
                        Me.Absender = SQL.checkNullStr(dr.Item("Absender"))
                        Me.AbsenderOffertenNr = SQL.checkNullInteger(dr.Item("AbsenderOffertenNr"))
                        Me.EmpfängerKundenNr = SQL.checkNullReturnValue(dr.Item("EmpfängerKundenNr"), Nothing)
                        Me.Empfänger = SQL.checkNullStr(dr.Item("Empfänger"))
                        Me.EmpfängerOffertenNr = SQL.checkNullInteger(dr.Item("EmpfängerOffertenNr"))
                        Me.VermittlerKundenNr = SQL.checkNullReturnValue(dr.Item("VermittlerKundenNr"), Nothing)
                        Me.Vermittler = SQL.checkNullStr(dr.Item("Vermittler"))
                        Me.VermittlerOffertenNr = SQL.checkNullInteger(dr.Item("VermittlerOffertenNr"))
                        Me.FrachtführerKundenNr = SQL.checkNullReturnValue(dr.Item("FrachtführerKundenNr"), Nothing)
                        Me.Frachtführer = SQL.checkNullStr(dr.Item("Frachtführer"))
                        Me.AnzahlZA = SQL.checkNullIntegerZero(dr.Item("AnzahlZA"))
                        Me.AnzahlZAFremd = SQL.checkNullIntegerZero(dr.Item("AnzahlZAFremd"))
                        Me.AnzahlZnV = SQL.checkNullIntegerZero(dr.Item("AnzahlZnV"))
                        Me.AnzahlZnVFremd = SQL.checkNullIntegerZero(dr.Item("AnzahlZnVFremd"))
                        Me.AnzahlT1 = SQL.checkNullIntegerZero(dr.Item("AnzahlT1"))
                        Me.AnzahlT2 = SQL.checkNullIntegerZero(dr.Item("AnzahlT2"))
                        Me.AnzahlAE = SQL.checkNullStr(dr.Item("AnzahlAE"))
                        Me.AnzahlCarnetTIR = SQL.checkNullIntegerZero(dr.Item("AnzahlCarnetTIR"))
                        Me.AnzahlBarvorlagen = SQL.checkNullIntegerZero(dr.Item("AnzahlBarvorlagen"))
                        Me.AnzahlSonstiges = SQL.checkNullIntegerZero(dr.Item("AnzahlSonstiges"))
                        Me.AnzahlGrenzgebühren = SQL.checkNullIntegerZero(dr.Item("AnzahlGrenzgebühren"))
                        Me.AvisUhrzeit = SQL.checkNullStr(dr.Item("AvisUhrzeit"))
                        Me.Vermerk = SQL.checkNullStr(dr.Item("Vermerk"))
                        Me.Bemerkungen = SQL.checkNullStr(dr.Item("Bemerkungen"))
                        Me.Währungsschlüssel = SQL.checkNullReturnValue(dr.Item("Währungsschlüssel"), 900)
                        Me.Rechnungsbetrag = SQL.checkNullReturnValue(dr.Item("Rechnungsbetrag"), Nothing)
                        Me.Umrechnungskurs = SQL.checkNullReturnValue(dr.Item("Umrechnungskurs"), 1)
                        Me.Packstücke = SQL.checkNullStr(dr.Item("Packstücke"))
                        Me.Rohmasse = SQL.checkNullReturnValue(dr.Item("Rohmasse"), Nothing)
                        Me.Zahlungsaufschub = SQL.checkNullStr(dr.Item("Zahlungsaufschub"))
                        Me.Löschen = SQL.checkNullDateNothing(dr.Item("Löschen"))
                        Me.Abfertigungsart = SQL.checkNullInteger(dr.Item("Abfertigungsart"))
                        Me.Abfertigungsanzahl = SQL.checkNullIntegerZero(dr.Item("Abfertigungsanzahl"))
                        Me.AbfertigungsanzahlPos = SQL.checkNullInteger(dr.Item("AbfertigungsanzahlPos"))
                        Me.Barzahlungsbetrag = SQL.checkNulDbl(dr.Item("Barzahlungsbetrag"))
                        Me.Sachbearbeiter = SQL.checkNullStr(dr.Item("Sachbearbeiter"))
                        Me.Personalnummer = SQL.checkNullReturnValue(dr.Item("Personalnummer"), Nothing)
                        Me.PersonalnummerQS = SQL.checkNullReturnValue(dr.Item("PersonalnummerQS"), Nothing)
                        Me.AtlasBezNrEZA = SQL.checkNullStr(dr.Item("AtlasBezNrEZA"))
                        Me.AtlasBezNrNCTS = SQL.checkNullStr(dr.Item("AtlasBezNrNCTS"))
                        Me.Versendungsland = SQL.checkNullStr(dr.Item("Versendungsland"))
                        Me.SB_CMR = SQL.checkNullBool(dr.Item("SB_CMR"))
                        Me.SB_CMRDatum = SQL.checkNullDateNothing(dr.Item("SB_CMRDatum"))
                        Me.veoerz_basbtg = SQL.checkNulDbl(dr.Item("veoerz_basbtg"))
                        Me.Zucker_MRN_Nr = SQL.checkNullReturnValue(dr.Item("Zucker_MRN_Nr"), Nothing)
                        Me.Zucker_MRN_Datum = SQL.checkNullDateNothing(dr.Item("Zucker_MRN_Datum"))
                        Me.Zucker_Aufschub = SQL.checkNullReturnValue(dr.Item("Zucker_Aufschub"), Nothing)
                        Me.Zollsystem = SQL.checkNullStr(dr.Item("Zollsystem"))
                        Me.Bestimmungszollstelle = SQL.checkNullStr(dr.Item("Bestimmungszollstelle"))
                        Me.Bürgschaft = SQL.checkNullStr(dr.Item("Bürgschaft"))
                        Me.Sicherheitsbetrag = SQL.checkNulDbl(dr.Item("Sicherheitsbetrag"))
                        Me.SgutKompl = SQL.checkNullStr(dr.Item("SgutKompl"))
                        Me.Bestimmungsland = SQL.checkNullStr(dr.Item("Bestimmungsland"))
                        Me.EuFiskalEmpfänger = SQL.checkNullStr(dr.Item("EuFiskalEmpfänger"))
                        Me.QKN = SQL.checkNullStr(dr.Item("QKN"))
                        Me.EndempfängerKundenNr = SQL.checkNullReturnValue(dr.Item("EndempfängerKundenNr"), Nothing)
                        Me.Endempfänger = SQL.checkNullStr(dr.Item("Endempfänger"))
                        Me.AvisoID = SQL.checkNullReturnValue(dr.Item("AvisoID"), Nothing)
                        Me.SendungID = SQL.checkNullReturnValue(dr.Item("SendungID"), Nothing)
                        Me.KdAuftragsNr = SQL.checkNullReturnValue(dr.Item("KdAuftragsNr"), Nothing)
                        Me.KdAuftragsNrAvisierer = SQL.checkNullReturnValue(dr.Item("KdAuftragsNrAvisierer"), Nothing)
                        Me.KdAuftragsNrEmpfaenger = SQL.checkNullReturnValue(dr.Item("KdAuftragsNrEmpfaenger"), Nothing)
                        Me.KdAuftragsNrFrachtfuehrer = SQL.checkNullReturnValue(dr.Item("KdAuftragsNrFrachtfuehrer"), Nothing)
                         
                        Me.NCTS_Verzollungsadresse = SQL.checkNullReturnValue(dr.Item("NCTS_Verzollungsadresse"), "")
                        Me.NCTS_VerzollungsadresseKdNr = SQL.checkNullReturnValue(dr.Item("NCTS_VerzollungsadresseKdNr"), Nothing)
                        Me.Grenzstelle = SQL.checkNullReturnValue(dr.Item("Grenzstelle"), Nothing)
                        Me.AuftraggeberBetragKassiert = SQL.checkNullReturnValue(dr.Item("AuftraggeberBetragKassiert"), Nothing)
                        Me.Lieferantenrechnung = SQL.checkNullReturnValue(dr.Item("Lieferantenrechnung"), Nothing)
                        Me.DokumentId_Steuerbeleg = SQL.checkNullReturnValue(dr.Item("DokumentId_Steuerbeleg"), Nothing)
                        Me.DokumentId_Mitteilung = SQL.checkNullReturnValue(dr.Item("DokumentId_Mitteilung"), Nothing)
                        Me.DokumentId_VBD = SQL.checkNullReturnValue(dr.Item("DokumentId_VBD"), Nothing)
                        Me.DokumentId_ABD = SQL.checkNullReturnValue(dr.Item("DokumentId_ABD"), Nothing)
                        Me.DokumentId_AVM = SQL.checkNullReturnValue(dr.Item("DokumentId_avm"), Nothing)
                        Me.FilialenNrHandling = SQL.checkNullReturnValue(dr.Item("FilialenNrHandling"), Nothing)
                        Me.FilialenNrAbklaerung = SQL.checkNullReturnValue(dr.Item("FilialenNrAbklaerung"), Nothing)
                        Me.HandlingZuKassieren = SQL.checkNulDbl(dr.Item("HandlingZuKassieren"))
                        Me.PersonalnummerAbklTR = SQL.checkNullReturnValue(dr.Item("PersonalnummerAbklTR"), Nothing)
                        Me.UK_EIDR_ausstehend = SQL.checkNullBool(dr.Item("UK_EIDR_ausstehend"))

                        Me.SB_CMRNr = SQL.checkNullReturnValue(dr.Item("SB_CMRNr"), Nothing)

                        LOAD_VORKOSTEN()
                        LOAD_ENDEMPFAENGER()

                        Me.SB_Zeitstempel = SQL.checkNullDateNothing(dr.Item("SB_Zeitstempel"))

                        hasEntry = True
                    End If
                    dr.Close()
                End Using
            End Using
            'Return Nothing
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
        End Try
        '  Return Nothing
    End Sub

    Shared Function LOADByBezugsNr(bezugsNr As String, loadALL As Boolean, Optional checkValidStatus As Boolean = False) As cSpeditionsbuch 'PROBLEM!
        Try
            Dim SPEDBUCH As New cSpeditionsbuch
            Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL

            Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
                Using cmd As New SqlCommand("SELECT TOP 1 * FROM Speditionsbuch WHERE ([AtlasBezNrEZA]=@bezugsNr OR [AtlasBezNrNCTS]=@bezugsNr )", conn)
                    cmd.Parameters.AddWithValue("@bezugsNr", bezugsNr)
                    Dim dr = cmd.ExecuteReader()
                    If dr.Read Then
                        For Each li In SPEDBUCH.getParameterList()
                            Dim propInfo As PropertyInfo = SPEDBUCH.GetType.GetProperty(li.Scalarvariable)

                            If dr.Item(li.Text) Is DBNull.Value Then
                                propInfo.SetValue(SPEDBUCH, Nothing)
                            Else
                                propInfo.SetValue(SPEDBUCH, dr.Item(li.Text))
                            End If

                        Next
                        If loadALL Then
                            SPEDBUCH.LOAD_VORKOSTEN()
                            SPEDBUCH.LOAD_ENDEMPFAENGER()
                        End If

                        dr.Close()
                        SPEDBUCH.hasEntry = True
                        Return SPEDBUCH
                    End If
                    dr.Close()
                End Using
            End Using
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
        End Try
        Return Nothing
    End Function



    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("FilialenNr", FilialenNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbfertigungsNr", AbfertigungsNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UnterNr", UnterNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Abfertigungsdatum", Abfertigungsdatum))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Bar", Bar))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Fakturiert", Fakturiert))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BelegNr", BelegNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ErfassungsNr", ErfassungsNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LKW Kennzeichen", LKW_Kennzeichen, "LKWKennzeichen"))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AvisiererKundenNr", AvisiererKundenNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Avisierer", Avisierer))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbsenderKundenNr", AbsenderKundenNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Absender", Absender))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbsenderOffertenNr", AbsenderOffertenNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EmpfängerKundenNr", EmpfängerKundenNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Empfänger", Empfänger))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EmpfängerOffertenNr", EmpfängerOffertenNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VermittlerKundenNr", VermittlerKundenNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Vermittler", Vermittler))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VermittlerOffertenNr", VermittlerOffertenNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("FrachtführerKundenNr", FrachtführerKundenNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Frachtführer", Frachtführer))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnzahlZA", AnzahlZA))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnzahlZAFremd", AnzahlZAFremd))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnzahlZnV", AnzahlZnV))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnzahlZnVFremd", AnzahlZnVFremd))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnzahlT1", AnzahlT1))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnzahlT2", AnzahlT2))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnzahlAE", AnzahlAE))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnzahlCarnetTIR", AnzahlCarnetTIR))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnzahlBarvorlagen", AnzahlBarvorlagen))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnzahlSonstiges", AnzahlSonstiges))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AnzahlGrenzgebühren", AnzahlGrenzgebühren))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AvisUhrzeit", AvisUhrzeit))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Vermerk", Vermerk))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Bemerkungen", Bemerkungen))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Währungsschlüssel", Währungsschlüssel))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rechnungsbetrag", Rechnungsbetrag))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Umrechnungskurs", Umrechnungskurs))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Packstücke", Packstücke))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rohmasse", Rohmasse))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zahlungsaufschub", Zahlungsaufschub))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Löschen", Löschen))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Abfertigungsart", Abfertigungsart))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Abfertigungsanzahl", Abfertigungsanzahl))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbfertigungsanzahlPos", AbfertigungsanzahlPos))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Barzahlungsbetrag", Barzahlungsbetrag))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachbearbeiter", Sachbearbeiter))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Personalnummer", Personalnummer))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PersonalnummerQS", PersonalnummerQS))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AtlasBezNrEZA", AtlasBezNrEZA))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AtlasBezNrNCTS", AtlasBezNrNCTS))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Versendungsland", Versendungsland))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SB_CMR", SB_CMR))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SB_CMRDatum", SB_CMRDatum))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("veoerz_basbtg", veoerz_basbtg))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zucker_MRN_Nr", Zucker_MRN_Nr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zucker_MRN_Datum", Zucker_MRN_Datum))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zucker_Aufschub", Zucker_Aufschub))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zollsystem", Zollsystem))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Bestimmungszollstelle", Bestimmungszollstelle))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Bürgschaft", Bürgschaft))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sicherheitsbetrag", Sicherheitsbetrag))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SgutKompl", SgutKompl))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Bestimmungsland", Bestimmungsland))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EuFiskalEmpfänger", EuFiskalEmpfänger))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("QKN", QKN))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EndempfängerKundenNr", EndempfängerKundenNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Endempfänger", Endempfänger))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AvisoID", AvisoID))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SendungID", SendungID))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KdAuftragsNr", KdAuftragsNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KdAuftragsNrAvisierer", KdAuftragsNrAvisierer))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KdAuftragsNrEmpfaenger", KdAuftragsNrEmpfaenger))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KdAuftragsNrFrachtfuehrer", KdAuftragsNrFrachtfuehrer)) 
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SB_Zeitstempel", SB_Zeitstempel))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("NCTS_Verzollungsadresse", NCTS_Verzollungsadresse))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("NCTS_VerzollungsadresseKdNr", NCTS_VerzollungsadresseKdNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Grenzstelle", Grenzstelle))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AuftraggeberBetragKassiert", AuftraggeberBetragKassiert))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Lieferantenrechnung", Lieferantenrechnung))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("DokumentId_Steuerbeleg", DokumentId_Steuerbeleg))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("DokumentId_Mitteilung", DokumentId_Mitteilung))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("DokumentId_VBD", DokumentId_VBD))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("DokumentId_ABD", DokumentId_ABD))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("DokumentId_AVM", DokumentId_AVM))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("FilialenNrHandling", FilialenNrHandling))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("FilialenNrAbklaerung", FilialenNrAbklaerung))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("HandlingZuKassieren", HandlingZuKassieren))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PersonalnummerAbklTR", PersonalnummerAbklTR))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UK_EIDR_ausstehend", UK_EIDR_ausstehend))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SB_CMRNr", SB_CMRNr))


        Return list
    End Function

    Public Function getUpdateCmd() As String
        Try
            Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()

            Dim str As String = ""
            For Each i In list
                str &= "[" & i.Text & "] = @" & i.Text.Replace("-", "").Replace(" ", "") & ","
            Next
            str = str.Substring(0, str.Length - 1) 'wg. ','
            Return (" UPDATE [Speditionsbuch] SET " & str & " WHERE [FilialenNr]=@FilialenNr AND AbfertigungsNr=@AbfertigungsNr AND UnterNr=@UnterNr ")

        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
        End Try
        Return ""
    End Function

    Public Function getInsertCmd() As String
        Try
            Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
            Dim str As String = ""
            Dim values As String = ""
            For Each i In list
                str &= "[" & i.Text & "],"
                values &= "@" & i.Text.Replace("-", "").Replace(" ", "") & ","
            Next
            str = str.Substring(0, str.Length - 1) 'wg. ','
            values = values.Substring(0, values.Length - 1) 'wg. ','
            Return (" INSERT INTO [Speditionsbuch]  (" & str & ") VALUES(" & values & ")  ")
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
        End Try
        Return ""
    End Function

    Public Sub LOAD_UNTERPOS()
        Try
            Dim conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()

            'Using cmd2 As New SqlCommand("SELECT * FROM tblSpeditionsbuchUnterPos INNER JOIN [Abfertigungsarten] ON sbup_Abfertigungsart=Abfertigungsart WHERE sbup_Filiale=@sbup_Filiale AND sbup_AbfertigungsNr=@sbup_AbfertigungsNr AND sbup_UnterNr=@sbup_UnterNr ", conn)
            Using cmd2 As New SqlCommand("SELECT * FROM tblSpeditionsbuchUnterPos WHERE sbup_Filiale=@sbup_Filiale AND sbup_AbfertigungsNr=@sbup_AbfertigungsNr AND sbup_UnterNr=@sbup_UnterNr ", conn)
                cmd2.Parameters.AddWithValue("@sbup_Filiale", Me.FilialenNr)
                cmd2.Parameters.AddWithValue("@sbup_AbfertigungsNr", Me.AbfertigungsNr)
                cmd2.Parameters.AddWithValue("@sbup_UnterNr", Me.UnterNr)
                Dim dr2 = cmd2.ExecuteReader()
                Me.UNTERPOS.Clear()
                While dr2.Read
                    Dim a As New cSpeditionsbuchUnterPos()

                    a.sbup_id = SQL.checkNullReturnValue(dr2.Item("sbup_id"), -1)
                    a.sbup_Filiale = SQL.checkNullReturnValue(dr2.Item("sbup_Filiale"), -1)
                    a.sbup_AbfertigungsNr = SQL.checkNullReturnValue(dr2.Item("sbup_AbfertigungsNr"), -1)
                    a.sbup_UnterNr = SQL.checkNullReturnValue(dr2.Item("sbup_UnterNr"), -1)
                    a.sbup_UnterPosArt = SQL.checkNullReturnValue(dr2.Item("sbup_UnterPosArt"), -1)
                    a.sbup_Anzahl = SQL.checkNullReturnValue(dr2.Item("sbup_Anzahl"), -1)
                    '   a.Abfertigungsbezeichnung = SQL.checkNullReturnValue(dr2.Item("Abfertigungsbezeichnung"), "-")

                    Me.UNTERPOS.Add(a)
                End While
                dr2.Close()
            End Using

            conn.Close()
            'End Using
            'Return Nothing
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
        End Try
    End Sub
    Public Sub LOAD_VORKOSTEN()
        Try
            Dim conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()

            'Using cmd2 As New SqlCommand("SELECT * FROM tblSpeditionsbuchUnterPos INNER JOIN [Abfertigungsarten] ON sbup_Abfertigungsart=Abfertigungsart WHERE sbup_Filiale=@sbup_Filiale AND sbup_AbfertigungsNr=@sbup_AbfertigungsNr AND sbup_UnterNr=@sbup_UnterNr ", conn)
            Using cmd2 As New SqlCommand("SELECT * FROM Vorkosten WHERE FilialenNr=@FilialenNr AND AbfertigungsNr=@AbfertigungsNr AND UnterNr=@UnterNr ", conn)
                cmd2.Parameters.AddWithValue("@FilialenNr", Me.FilialenNr)
                cmd2.Parameters.AddWithValue("@AbfertigungsNr", Me.AbfertigungsNr)
                cmd2.Parameters.AddWithValue("@UnterNr", Me.UnterNr)
                Dim dr2 = cmd2.ExecuteReader()
                Me.VORKOSTEN.Clear()
                While dr2.Read
                    Dim a As New cVorkosten()

                    a.FilialenNr = SQL.checkNullReturnValue(dr2.Item("FilialenNr"), -1)
                    a.AbfertigungsNr = SQL.checkNullReturnValue(dr2.Item("AbfertigungsNr"), -1)
                    a.UnterNr = SQL.checkNullReturnValue(dr2.Item("UnterNr"), -1)
                    a.LeistungsNr = SQL.checkNullReturnValue(dr2.Item("LeistungsNr"), -1)
                    a.LeistungsBez = SQL.checkNullReturnValue(dr2.Item("LeistungsBez"), -1)
                    a.Preis = SQL.checkNullReturnValue(dr2.Item("Preis"), 0)
                    '   a.Abfertigungsbezeichnung = SQL.checkNullReturnValue(dr2.Item("Abfertigungsbezeichnung"), "-")

                    Me.VORKOSTEN.Add(a)
                End While
                dr2.Close()
            End Using

            conn.Close()
            'End Using
            'Return Nothing
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
        End Try
    End Sub

    Public Sub LOAD_ENDEMPFAENGER()
        Try
            Dim conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()

            'Using cmd2 As New SqlCommand("SELECT * FROM tblSpeditionsbuchUnterPos INNER JOIN [Abfertigungsarten] ON sbup_Abfertigungsart=Abfertigungsart WHERE sbup_Filiale=@sbup_Filiale AND sbup_AbfertigungsNr=@sbup_AbfertigungsNr AND sbup_UnterNr=@sbup_UnterNr ", conn)
            Using cmd2 As New SqlCommand("SELECT * FROM tblSpeditionsbuchEndEmpfaenger WHERE FilialenNr=@FilialenNr AND AbfertigungsNr=@AbfertigungsNr AND UnterNr=@UnterNr ", conn)
                cmd2.Parameters.AddWithValue("@FilialenNr", Me.FilialenNr)
                cmd2.Parameters.AddWithValue("@AbfertigungsNr", Me.AbfertigungsNr)
                cmd2.Parameters.AddWithValue("@UnterNr", Me.UnterNr)
                Dim dr2 = cmd2.ExecuteReader()
                Me.ENDEMPFAENGER.Clear()
                While dr2.Read
                    Dim a As New cEndEmpfaener()

                    a.FilialenNr = SQL.checkNullReturnValue(dr2.Item("FilialenNr"), -1)
                    a.AbfertigungsNr = SQL.checkNullReturnValue(dr2.Item("AbfertigungsNr"), -1)
                    a.UnterNr = SQL.checkNullReturnValue(dr2.Item("UnterNr"), -1)
                    a.EndEmpfaengerKdNr = SQL.checkNullReturnValue(dr2.Item("EndEmpfaengerKdNr"), -1)
                    a.EndEmpfaenger = SQL.checkNullReturnValue(dr2.Item("EndEmpfaenger"), "")
                    a.UstIdKz = SQL.checkNullReturnValue(dr2.Item("UstIdKz"), Nothing)
                    a.UstIdNr = SQL.checkNullReturnValue(dr2.Item("UstIdNr"), Nothing)
                    a.Rechnungsbetrag = SQL.checkNullReturnValue(dr2.Item("Rechnungsbetrag"), Nothing)
                    a.RechnungsNr = SQL.checkNullReturnValue(dr2.Item("RechnungsNr"), Nothing)
                    '   a.Abfertigungsbezeichnung = SQL.checkNullReturnValue(dr2.Item("Abfertigungsbezeichnung"), "-")

                    Me.ENDEMPFAENGER.Add(a)
                End While
                dr2.Close()
            End Using

            conn.Close()
            'End Using
            'Return Nothing
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
        End Try
    End Sub
    Public Function SAVE_UNTERPOS() As Boolean 'obj As Object, tablename As String, where As String) As Boolean
        '   Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
        SAVE_UNTERPOS = False
        Dim sqlstr = " DELETE FROM tblSpeditionsbuchUnterPos WHERE sbup_Filiale=" & Me.FilialenNr & " AND sbup_AbfertigungsNr=" & Me.AbfertigungsNr & " AND sbup_UnterNr=" & Me.UnterNr & " "
        If SQL.doSQL(sqlstr, "FMZOLL") Then
            SAVE_UNTERPOS = True
            For Each aa In UNTERPOS
                If Not aa.INSERT() Then SAVE_UNTERPOS = False
            Next
        End If

        '   Return b
    End Function
    Public Function SAVE_VORKOSTEN() As Boolean 'obj As Object, tablename As String, where As String) As Boolean
        '   Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
        SAVE_VORKOSTEN = False
        Dim sqlstr = " DELETE FROM Vorkosten WHERE FilialenNr=" & Me.FilialenNr & " AND AbfertigungsNr=" & Me.AbfertigungsNr & " AND UnterNr=" & Me.UnterNr & " "
        If SQL.doSQL(sqlstr, "FMZOLL") Then
            SAVE_VORKOSTEN = True
            For Each aa In VORKOSTEN
                If Not aa.INSERT() Then SAVE_VORKOSTEN = False
            Next
        End If

        '   Return b
    End Function
    Public Function SAVE_ENDEMPFAENGER() As Boolean 'obj As Object, tablename As String, where As String) As Boolean
        '   Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
        SAVE_ENDEMPFAENGER = False
        Dim sqlstr = " DELETE FROM tblSpeditionsbuchEndEmpfaenger WHERE FilialenNr=" & Me.FilialenNr & " AND AbfertigungsNr=" & Me.AbfertigungsNr & " AND UnterNr=" & Me.UnterNr & " "
        If SQL.doSQL(sqlstr, "FMZOLL") Then
            SAVE_ENDEMPFAENGER = True
            For Each aa In ENDEMPFAENGER
                If Not aa.INSERT() Then SAVE_ENDEMPFAENGER = False
            Next
        End If

        '   Return b
    End Function
End Class


Public Class cSpeditionsbuchUnterPos
    Property sbup_id As Integer = Nothing
    Property sbup_Filiale As Integer = Nothing
    Property sbup_AbfertigungsNr As Integer = Nothing
    Property sbup_UnterNr As Integer = Nothing
    Property sbup_UnterPosArt As Integer = Nothing
    Property sbup_Anzahl As Integer = Nothing
    '  Property Abfertigungsbezeichnung As String = "-"
    Dim SQL As New SQL

    Sub New()
    End Sub

    Sub New(sbup_Filiale, sbup_AbfertigungsNr, sbup_UnterNr, sbup_UnterPosArt, sbup_Anzahl)
        Me.sbup_Filiale = sbup_Filiale
        Me.sbup_AbfertigungsNr = sbup_AbfertigungsNr
        Me.sbup_UnterNr = sbup_UnterNr
        Me.sbup_UnterPosArt = sbup_UnterPosArt
        Me.sbup_Anzahl = sbup_Anzahl
    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("sbup_id", sbup_id, , True))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sbup_Filiale", sbup_Filiale))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sbup_AbfertigungsNr", sbup_AbfertigungsNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sbup_UnterNr", sbup_UnterNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sbup_UnterPosArt", sbup_UnterPosArt))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sbup_Anzahl", sbup_Anzahl))
        Return list
    End Function

    Public Function INSERT() As Boolean
        Try
            Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
            Dim str As String = ""
            Dim values As String = ""
            For Each i In list
                If Not i.isPrimaryParam Then
                    str &= "[" & i.Text & "],"
                    values &= "@" & i.Text.Replace("-", "").Replace(" ", "") & ","
                End If
            Next
            str = str.Substring(0, str.Length - 1) 'wg. ','
            values = values.Substring(0, values.Length - 1) 'wg. ','

            Return SQL.doSQLVarList(" INSERT INTO [tblSpeditionsbuchUnterPos]  (" & str & ") VALUES(" & values & ")  ", "FMZOLL", , list)
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
        End Try
        Return False
    End Function



End Class


Public Class cVorkosten

    Property FilialenNr As Integer
    Property AbfertigungsNr As Integer
    Property UnterNr As Integer
    Property LeistungsNr As Integer
    Property LeistungsBez As Object = Nothing
    Property Preis As Double = 0

    '  Property Abfertigungsbezeichnung As String = "-"
    Dim SQL As New SQL

    Sub New()
    End Sub

    Sub New(FilialenNr, AbfertigungsNr, UnterNr, LeistungsNr, LeistungsBez, Preis)
        Me.FilialenNr = FilialenNr
        Me.AbfertigungsNr = AbfertigungsNr
        Me.UnterNr = UnterNr
        Me.LeistungsNr = LeistungsNr
        Me.LeistungsBez = LeistungsBez
        Me.Preis = Preis
    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("FilialenNr", FilialenNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbfertigungsNr", AbfertigungsNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UnterNr", UnterNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsNr", LeistungsNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsBez", LeistungsBez))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Preis", Preis))
        Return list
    End Function

    Public Function INSERT() As Boolean
        Try
            Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
            Dim str As String = ""
            Dim values As String = ""
            For Each i In list
                If Not i.isPrimaryParam Then
                    str &= "[" & i.Text & "],"
                    values &= "@" & i.Text.Replace("-", "").Replace(" ", "") & ","
                End If
            Next
            str = str.Substring(0, str.Length - 1) 'wg. ','
            values = values.Substring(0, values.Length - 1) 'wg. ','

            Return SQL.doSQLVarList(" INSERT INTO [Vorkosten]  (" & str & ") VALUES(" & values & ")  ", "FMZOLL", , list)
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
        End Try
        Return False
    End Function

End Class


Public Class cEndEmpfaener

    Property FilialenNr As Integer
    Property AbfertigungsNr As Integer
    Property UnterNr As Integer
    Property EndEmpfaengerKdNr As Integer
    Property EndEmpfaenger As Object = Nothing
    Property UstIdKz As Object = Nothing
    Property UstIdNr As Object = Nothing
    Property Rechnungsbetrag As Object = Nothing
    Property RechnungsNr As Object = Nothing

    '  Property Abfertigungsbezeichnung As String = "-"
    Dim SQL As New SQL

    Sub New()
    End Sub

    Sub New(FilialenNr, AbfertigungsNr, UnterNr, EndEmpfaengerKdNr, EndEmpfaenger, UstIdKz, UstIdNr, Rechnungsbetrag, RechnungsNr)
        Me.FilialenNr = FilialenNr
        Me.AbfertigungsNr = AbfertigungsNr
        Me.UnterNr = UnterNr
        Me.EndEmpfaengerKdNr = EndEmpfaengerKdNr
        Me.EndEmpfaenger = EndEmpfaenger
        Me.UstIdKz = UstIdKz
        Me.UstIdNr = UstIdNr
        Me.Rechnungsbetrag = Rechnungsbetrag
        Me.RechnungsNr = RechnungsNr
    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("FilialenNr", FilialenNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbfertigungsNr", AbfertigungsNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UnterNr", UnterNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EndEmpfaengerKdNr", EndEmpfaengerKdNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EndEmpfaenger", EndEmpfaenger))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UstIdKz", UstIdKz))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UstIdNr", UstIdNr))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rechnungsbetrag", Rechnungsbetrag))
        list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsNr", RechnungsNr))
        Return list
    End Function

    Public Function INSERT() As Boolean
        Try
            Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
            Dim str As String = ""
            Dim values As String = ""
            For Each i In list
                If Not i.isPrimaryParam Then
                    str &= "[" & i.Text & "],"
                    values &= "@" & i.Text.Replace("-", "").Replace(" ", "") & ","
                End If
            Next
            str = str.Substring(0, str.Length - 1) 'wg. ','
            values = values.Substring(0, values.Length - 1) 'wg. ','

            Return SQL.doSQLVarList(" INSERT INTO [tblSpeditionsbuchEndEmpfaenger]  (" & str & ") VALUES(" & values & ")  ", "FMZOLL", , list)
        Catch ex As Exception
            MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
        End Try
        Return False
    End Function



End Class