Public Class usrCntlEinheitspapier0735
    Dim POS_Zeahler = 0
    Public WT_LIST As VERAG_PROG_ALLGEMEIN.cZollTarifAtlas_LIST = Nothing

    Public Event ADD()
    Public Event DEC()
    Public Event KGchanged()

    Dim WithEvents tmrZollDst As New Timer

    Private Sub usrCntlEinheitspapier_Load(sender As Object, e As EventArgs) Handles Me.Load
        '   txtUnterschriftAnmelder.Text = "i.A.u.i.V." & vbNewLine & vbNewLine & "" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME
        txtDatum.Text = Now.ToShortDateString
        txtHauptverpflichteterVertretenDurch.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME

        txtUnterschriftAnmelder.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME

        cboAnmeldung1.Items.Clear()
        cboAnmeldung1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboAnmeldung1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("EU - Im Warenverkehr zwischen der Union und den Vertragsparteien des Übereinkommens zur Vereinfachung der Förmlichkeiten im Warenverkehr", "EU"))
        cboAnmeldung1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("EX - Im Warenverkehr zwischen der Union und anderen Drittländern als den Vertragsparteien des Übereinkommens zur Vereinfachung der Förmlichkeiten im Warenverkehr", "EX"))
        cboAnmeldung1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("CO - Im Warenverkehr zwischen den Mitgliedstaaten der Union", "CO"))

        'cboAnmeldung2.Items.Clear()
        'cboAnmeldung2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("A - für eine Ausfuhranmeldung (normales Verfahren, Artikel 162 UZK)", "A"))
        'cboAnmeldung2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("B - für eine vereinfachte Ausfuhranmeldung ohne förmliche Bewilligung (vereinfachtes Verfahren, Artikel 166 Absatz 1 UZK)", "B"))
        ' cboAnmeldung2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("C - für eine vereinfachte Ausfuhranmeldung mit förmlicher Bewilligung (vereinfachtes Verfahren, Artikel 166 Absatz 2 UZK)", "C"))
        ' cboAnmeldung2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("D - für eine vereinfachte Ausfuhranmeldung mit förmlicher Bewilligung (vereinfachtes Verfahren; Bewilligungen 'Zugelassener Ausführer', die bis zum Abschluss der Neubewertung weiterhin gül-tig sind, Artikel 250 Absatz 1 UZK-DA und Artikel 345 Absatz 1 UZK-IA)", "D"))
        ' cboAnmeldung2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("X - für eine ergänzende Ausfuhranmeldung eines unter B definierten vereinfachten Verfahrens", "X"))
        'cboAnmeldung2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Y - für eine ergänzende Ausfuhranmeldung eines unter C definierten vereinfachten Verfahrens", "Y"))
        ' cboAnmeldung2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Z - für eine ergänzende Ausfuhranmeldung eines unter D definierten vereinfachten Verfahrens", "Z"))


        cboVerkehrszweigGrenze.Items.Clear()
        cboVerkehrszweigGrenze.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboVerkehrszweigGrenze.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("1 - Seeverkehr", "1"))
        cboVerkehrszweigGrenze.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("2 - Eisenbahnverkehr", "2"))
        cboVerkehrszweigGrenze.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("3 - Straßenverkehr", "3"))
        cboVerkehrszweigGrenze.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("4 - Luftverkehr", "4"))
        cboVerkehrszweigGrenze.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("5 - Postsendungen", "5"))
        cboVerkehrszweigGrenze.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("7 - Fest installierte Transporteinrichtungen", "7"))
        cboVerkehrszweigGrenze.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("8 - Binnenschifffahrt", "8"))
        cboVerkehrszweigGrenze.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("9 - Eigener Antrieb", "9"))
        cboVerkehrszweigGrenze.changeItem(3)

        cboKennzeichenAbgangCtr.Items.Clear()
        cboKennzeichenAbgangCtr.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboKennzeichenAbgangCtr.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("0 - Nicht in Containern beförderte Waren", "0"))
        cboKennzeichenAbgangCtr.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("1 - In Containern beförderte Waren", "1"))

        cboSicherheitCode.Items.Clear()
        cboSicherheitCode.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboSicherheitCode.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("0 - Befreiung von der Sicherheitsleistung (Artikel 95 Absatz 2 UZK)", "0"))
        cboSicherheitCode.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("1 - Gesamtbürgschaft", "1"))
        cboSicherheitCode.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("2 - Einzelsicherheit durch Bürgschaftsleistung", "2"))
        cboSicherheitCode.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("3 - Einzelsicherheit in Form einer Barsicherheit", "3"))
        cboSicherheitCode.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("4 - Einzelsicherheit mit Sicherheitstiteln", "4"))
        cboSicherheitCode.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("5 - Befreiung von der Sicherheitsleistung, wenn der gesicherte Betrag den statisischen Mindestwert für Anmeldungen gemäß Artikel 89 Absatz 9 UZK nicht überschreitet", "5"))
        cboSicherheitCode.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("6 - Befreiung von der Sicherheitsleistung (Artikel 89 Absatz 8 UZK)", "6"))
        cboSicherheitCode.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("8 - Befreiung von der Sicherheitsleistung für bestimm-te öffentliche Einrichtungen", "8"))
        cboSicherheitCode.changeItem("1")

        Try
            Dim land As List(Of VERAG_PROG_ALLGEMEIN.MyListItem) = (New SQL).loadCboBySqlWithListItem("SELECT [Länderverzeichnis für die Außenhandelsstatistik].LandKz, [Länderverzeichnis für die Außenhandelsstatistik].LandBez FROM [Länderverzeichnis für die Außenhandelsstatistik] ORDER BY [Länderverzeichnis für die Außenhandelsstatistik].LandKz; ", True, "FMZOLL")
            cboVersendungsland.fillWithMyListItem(land, True)
            cboBestimmungsland.fillWithMyListItem(land, True)
            cboKennzeichenAbgangLand.fillWithMyListItem(land, True)
            cboKennzeichenAbgangLand.fillWithMyListItem(land, True)
            cboKennzeichenGrenzüberschreitungLand.fillWithMyListItem(land, True)
            cboBestimmungslandCode.fillWithMyListItem(land, True)
            cboVersendungslandCode.fillWithMyListItem(land, True)
        Catch ex As Exception
            MsgBox("LänderCodes konnten nicht geladen werden.")
        End Try
        cboSicherheit.Items.Clear()
        cboSicherheit.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("05AT510000G000FP7 vom HZA LINZ / WELS", "05AT510000G000FP7"))
        cboSicherheit.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("17DE0000000071678 vom HZA MÜNCHEN", "17DE0000000071678"))
        cboSicherheit.SelectedIndex = 0
        'cboSicherheit.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("05AT510000G000FP7 vm HZA LINZ WELS", "05AT510000G000FP7 vm HZA LINZ WELS","XXXXXX"))

       
        cboDurchgangszollstellen1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboDurchgangszollstellen2.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboDurchgangszollstellen3.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboDurchgangszollstellen4.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboDurchgangszollstellen5.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboDurchgangszollstellen6.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))
        cboBestimmungszollstelleLand.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("", ""))

     


        Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
            Case "ATILLA"
                '    txtHauptverpflichteter.Text = getverag("ATILLA")
                cboSicherheit.changeItem("17DE0000000071678")
                txtHauptverpflichteterEORI.Text = "ATEOS1000000199"
            Case Else
                Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG
                    Case "NEU"
                        'txtAnmelder.Text = getverag("VERAG_GMBH")
                        'txtHauptverpflichteter.Text = getverag("VERAG_GMBH")
                        txtHauptverpflichteterEORI.Text = "DE4824105"
                        cboSicherheit.changeItem("17DE0000000071678")
                    Case "SBG"
                        ' txtAnmelder.Text = getverag("VERAG_GMBH")
                        'txtHauptverpflichteter.Text = getverag("VERAG_GMBH")
                        txtHauptverpflichteterEORI.Text = "DE4824105"
                        cboSicherheit.changeItem("17DE0000000071678")
                    Case "WDH"
                        ' txtAnmelder.Text = getverag("VERAG_GMBH_WDH")
                        ' txtHauptverpflichteter.Text = getverag("VERAG_GMBH")
                        txtHauptverpflichteterEORI.Text = "DE4824105"
                        cboSicherheit.changeItem("17DE0000000071678")
                    Case Else
                        ' txtAnmelder.Text = getverag("VERAG_AG")
                        ' txtHauptverpflichteter.Text = getverag("VERAG_AG")
                        txtHauptverpflichteterEORI.Text = "DE4824105"
                        cboSicherheit.changeItem("05AT510000G000FP7")
                End Select
        End Select
        Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_niederlassung
            Case "SUB" : txtOrt.Text = "Suben"
            Case "WAI" : txtOrt.Text = "Waidhaus"
            Case "SBG" : txtOrt.Text = "Bad Reichenhall"
            Case "NKD" : txtOrt.Text = "Nickelsdorf"
            Case "NEU" : txtOrt.Text = "Neuhaus am Inn"
        End Select
        txtHauptverpflichteterVertretenOrtDatum.Text = txtOrt.Text & ", den " & Now.ToShortDateString

        tmrZollDst.Interval = 300
        tmrZollDst.Enabled = True

        Panel3.VerticalScroll.Visible = True
    End Sub

    

    Function getverag(firma) As String
        Select Case firma
            Case "VERAG_AG"
                Return "VERAG Spedition AG" & vbNewLine & "A 4975 Suben, Nr. 14-15"
                'Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG
                '            Case "SUB" : Return "VERAG Spedition AG" & vbNewLine & "A 4975 Suben, Nr. 14-15"
                'Case "SBG" : Return "VERAG Spedition GmbH" & vbNewLine & "D 83435 Bad Reichenhall, Europaplatz 8"
                'Case "WAI" : Return "VERAG Spedition GmbH" & vbNewLine & "D 92726 Waidhaus, Am Autohof 3"
                'Case "NKD" : Return "VERAG Spedition AG" & vbNewLine & "A-2425 Nickelsdorf, Zollamtsplatz-Nord"
                'End Select
            Case "VERAG_GMBH"
                Return "VERAG Spedition GmbH" & vbNewLine & "D 94152 Neuhaus, Hartham 6"
            Case "VERAG_GMBH_WDH"
                Return "VERAG Spedition GmbH" & vbNewLine
            Case "VERAG_GMBH_SBG"
                Return "VERAG Spedition GmbH" & vbNewLine
            Case "ATILLA"
                Return "ATILLA Spedition GmbH" & vbNewLine & "A 4975 Suben, Nr. 14"
        End Select
        Return ""
    End Function


    Public Sub init()

        cboFiliale.fillWithSQL("SELECT FilialenNr, cast(FilialenNr as varchar(4)) + ' ' + Grenzstelle FROM Filialen WHERE Fil_Status='A' ORDER BY FilialenNr ", True, "FMZOLL", True)

        '    txtUnterschrift.Text = "i.A.u.i.V." & vbNewLine & vbNewLine & "" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME
        Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_niederlassung
            Case "SUB" : txtOrt.Text = "Suben"
            Case "WAI" : txtOrt.Text = "Waidhaus"
            Case "SBG" : txtOrt.Text = "Bad Reichenhall"
            Case "NKD" : txtOrt.Text = "Nickelsdorf"
            Case "NEU" : txtOrt.Text = "Neuhaus am Inn"

        End Select

        txtDatum.Text = Now.ToShortDateString
    End Sub

    Sub addPos()
        POS_Zeahler += 1
        Dim usr As New usrcntlEinheitspapierPos0735(POS_Zeahler)
        usr.WT_LIST = WT_LIST
        AddHandler usr.ADD, Sub()
                                addPos()
                            End Sub
        AddHandler usr.REMOVE, Sub(id)
                                   removePos(id)
                               End Sub

        AddHandler usr.KGchanged, Sub()
                                      RaiseEvent KGchanged()
                                  End Sub
        FlowLayoutPanel.Controls.Add(usr)
        'Me.FlowLayoutPanel.Height += 250
        initFlowLPHeight()
        'Me.FlowLayoutPanel.AutoScrollOffset.Y = 2 ' = VerticalScroll.Maximum
        Me.FlowLayoutPanel.ScrollControlIntoView(usr)
        usr.Focus()
        txtPosCount.Text = POS_Zeahler
        RaiseEvent ADD()
    End Sub

    Sub initFlowLPHeight()
        Dim h = 0
        For Each c As Control In FlowLayoutPanel.Controls
            h += c.Height + c.Margin.Top + c.Margin.Bottom
        Next
        ' FlowLayoutPanel.MinimumSize = New Size(FlowLayoutPanel.Width, h)
        FlowLayoutPanel.Height = h
        'pnlBody.AutoScrollMinSize = New Size(1000, If(h < pnlBody.Height, pnlBody.Height - 5, h))

    End Sub

    Sub removePos(posNr)
        If FlowLayoutPanel.Controls.Count <= 1 Then Exit Sub

        For Each p In FlowLayoutPanel.Controls
            If DirectCast(p, usrcntlEinheitspapierPos0735).PosNr = posNr Then
                FlowLayoutPanel.Controls.Remove(p)
            End If
        Next
        POS_Zeahler = 0
        For Each p In FlowLayoutPanel.Controls
            POS_Zeahler += 1
            DirectCast(p, usrcntlEinheitspapierPos0735).setPos(POS_Zeahler) 'neue Reihung
        Next
        '  Me.FlowLayoutPanel.Height -= 250
        initFlowLPHeight()
        '   Me.FlowLayoutPanel.ScrollControlIntoView(usr)

        txtPosCount.Text = POS_Zeahler
        RaiseEvent DEC()
    End Sub

    Public Sub removeAllPos()
        FlowLayoutPanel.Controls.Clear()
        POS_Zeahler = 0
        txtPosCount.Text = POS_Zeahler
    End Sub

    Private Sub txtUnterschriftAnmelder_TextChanged(sender As Object, e As EventArgs) Handles txtUnterschriftAnmelder.TextChanged, txtHauptverpflichteterVertretenDurch.TextChanged
        If sender Is txtUnterschriftAnmelder Then txtHauptverpflichteterVertretenDurch.Text = sender.text
        If sender Is txtHauptverpflichteterVertretenDurch Then txtUnterschriftAnmelder.Text = sender.text
    End Sub


    ' Private Sub txtAnmelder_TextChanged(sender As Object, e As EventArgs) Handles txtAnmelder.TextChanged, txtHauptverpflichteter.TextChanged
    '     If sender Is txtAnmelder Then txtHauptverpflichteter.Text = sender.text
    '    If sender Is txtHauptverpflichteter Then txtAnmelder.Text = sender.text
    ' End Sub


    ' Private Sub txtAnmelderVertreterNr_TextChanged(sender As Object, e As EventArgs) Handles txtAnmelderVertreterNr.TextChanged, txtHauptverpflichteterEORI.TextChanged

    '     If sender Is txtAnmelderVertreterNr Then txtHauptverpflichteterEORI.Text = sender.text
    '     If sender Is txtHauptverpflichteterEORI Then txtAnmelderVertreterNr.Text = sender.text
    '  End Sub


    Private Sub cboVersendungsland_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboVersendungsland.SelectedIndexChanged
        cboVersendungslandCode.changeItem(cboVersendungsland._value)
    End Sub

    Private Sub cboBestimmungsland_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboBestimmungsland.SelectedIndexChanged
        cboBestimmungslandCode.changeItem(cboBestimmungsland._value)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        fillWithKdTxt(txtVersenderAusführer)
    End Sub



    Function fillWithKdTxt(c As Control) As Boolean
        Dim f As New SDL.frmKundenSuche
        If f.ShowDialog = DialogResult.OK Then
            If f.kundenNrSearch.Text IsNot Nothing AndAlso f.kundenNrSearch.Text <> "" Then
                Dim KUNDE As New VERAG_PROG_ALLGEMEIN.cAdressen(CInt(f.kundenNrSearch.Text))
                'MsgBox(f.kundenNrSearch.Text)
                c.Text = If(KUNDE.Name_1, "") & If(KUNDE.Name_2, "") & vbNewLine & If(KUNDE.Straße, "") & vbNewLine & If(KUNDE.LandKz, "") & " " & If(KUNDE.PLZ, "") & " " & If(KUNDE.Ort, "")
                Return True
            End If
        End If
        c.Focus()
        Return False
    End Function

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        fillWithKdTxt(txtEmpfänger)
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        fillWithKdTxt(txtAnmelder)
    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        fillWithKdTxt(txtHauptverpflichteter)
    End Sub




    Public Shared Function LoadZollDst() As Task(Of List(Of VERAG_PROG_ALLGEMEIN.MyListItem))

        Return Task.Factory.StartNew(Of List(Of VERAG_PROG_ALLGEMEIN.MyListItem))(
            Function()
                Dim LIST_BGW As New List(Of VERAG_PROG_ALLGEMEIN.MyListItem)

                Try
                    'LIST_BGW = (New SQL).loadCboBySqlWithListItem("SELECT [basncd_dstnr],[basncd_name] +' (' +[basncd_alpha]+')'  FROM [atlas].[dbo].[basncd]  where  [basncd_gbdat] >= getdate()  order by [basncd_alpha], [basncd_name]", False, "ATLAS")
                    LIST_BGW = (New SQL).loadCboBySqlWithListItem("SELECT [Code],[Description] +' (' +left(Code,2)+')'  FROM tbl_DY_ZollDE_C0141_Zollstellen  where  ((StartDate is null OR StartDate< GETDATE()) AND (EndDate is null OR EndDate> GETDATE()))  order by left(Code,2), Description ", False, "FMZOLL")


                    'SetDst(l)
                Catch ex As Exception
                    MsgBox("Zollstellen konnten nicht von ATLAS geladen werden.")
                End Try

                Return LIST_BGW
            End Function)

    End Function


    Private Async Sub tmrZollDst_Tick(sender As Object, e As EventArgs) Handles tmrZollDst.Tick
        Try

            Me.Enabled = False
            Dim updateTask As Task(Of List(Of VERAG_PROG_ALLGEMEIN.MyListItem)) = LoadZollDst()
            Dim LIST_BGW = Await updateTask
            Me.Cursor = Cursors.WaitCursor
            Me.cboDurchgangszollstellen1.fillWithMyListItem(LIST_BGW, True)
            Me.cboDurchgangszollstellen2.fillWithMyListItem(LIST_BGW, True)
            Me.cboDurchgangszollstellen3.fillWithMyListItem(LIST_BGW, True)
            Me.cboDurchgangszollstellen4.fillWithMyListItem(LIST_BGW, True)
            Me.cboDurchgangszollstellen5.fillWithMyListItem(LIST_BGW, True)
            Me.cboDurchgangszollstellen6.fillWithMyListItem(LIST_BGW, True)
            Me.cboBestimmungszollstelleLand.fillWithMyListItem(LIST_BGW, True)
            Me.Cursor = Cursors.Default
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        tmrZollDst.Enabled = False
        Me.Enabled = True
    End Sub



    Private Sub cboSicherheit_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSicherheit.SelectedIndexChanged
        Select Case cboSicherheit._value
            Case "05AT510000G000FP7"
                txtHauptverpflichteter.Text = getverag("VERAG_AG")
                'txtAnmelderVertreterNr.Text = "DE4824105"
            Case "17DE0000000071678"
                txtHauptverpflichteter.Text = getverag("VERAG_GMBH")
                ' txtAnmelderVertreterNr.Text = "ATEOS1000000199"
        End Select
    End Sub
End Class
