Imports DocumentFormat.OpenXml.Drawing.Diagrams
Imports VERAG_PROG_ALLGEMEIN

Public Class usrcntlVorauskasse
    Implements FormualrInterface
    'IMPORTAVISO_AG
    Public Event CHANGED(name, value)
    Public Event KDNR_CHANGED(kdnr)
    Public Event DELETE(c As Control)
    Public Event MOVE_UP(c As Control)
    Public Event MOVE_DOWN(c As Control)
    Dim FV_ID = -1
    Public KdNR As Integer = -1
    Public KdFirma As String = ""
    Public SENDUNG As VERAG_PROG_ALLGEMEIN.cSendungen = Nothing
    Public AVISO As VERAG_PROG_ALLGEMEIN.cAviso = Nothing

    Public ROLLE As String = ""
    Dim VK_ID = -1
    Dim SQL As New SQL


    Sub New()

        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()

        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

    End Sub

    Sub New(param() As Object)

        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()

        If param.Length > 0 AndAlso param(0) IsNot Nothing Then KdNR = param(0)
        If param.Length > 1 Then KdFirma = param(1)
        If param.Length > 2 Then SENDUNG = param(2)
        If param.Length > 3 Then AVISO = param(3)
        If param.Length > 4 Then ROLLE = param(4)
        If param.Length > 5 Then VK_ID = param(5)
        ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.

    End Sub
    Public Sub ChangeKDNr(kdnr As Integer) _
       Implements FormualrInterface.ChangeKDNr
        initKdNR(kdnr)
    End Sub

    'Dim KdNR As Integer = -1
    Sub initControlsHandler()
        For Each c In Me.Controls
            Select Case c.GetType.ToString
                Case GetType(VERAG_PROG_ALLGEMEIN.MyTextBox).ToString
                    AddHandler DirectCast(c, VERAG_PROG_ALLGEMEIN.MyTextBox).Leave, Sub()
                                                                                        RaiseEvent CHANGED(c.name, c.text)
                                                                                    End Sub
                Case GetType(VERAG_PROG_ALLGEMEIN.MyComboBox).ToString
                    AddHandler DirectCast(c, VERAG_PROG_ALLGEMEIN.MyComboBox).SelectedIndexChanged, Sub()
                                                                                                        RaiseEvent CHANGED(c.name, c._value)
                                                                                                    End Sub
                Case GetType(TextBox).ToString
                    AddHandler DirectCast(c, TextBox).Leave, Sub()
                                                                 RaiseEvent CHANGED(c.name, c.text)
                                                             End Sub
            End Select
        Next

        For Each c In pnlBottom.Controls
            Select Case c.GetType.ToString
                Case GetType(VERAG_PROG_ALLGEMEIN.MyTextBox).ToString
                    AddHandler DirectCast(c, VERAG_PROG_ALLGEMEIN.MyTextBox).Leave, Sub()
                                                                                        initBerechnung()
                                                                                    End Sub
            End Select
        Next
        For Each c In Panel5.Controls
            Select Case c.GetType.ToString
                Case GetType(VERAG_PROG_ALLGEMEIN.MyTextBox).ToString
                    AddHandler DirectCast(c, VERAG_PROG_ALLGEMEIN.MyTextBox).Leave, Sub()
                                                                                        initBerechnung()
                                                                                    End Sub
            End Select
        Next
    End Sub


    Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
        Dim kdsrch As New SDL.frmKundenSuche
        'Panel1.Enabled = False
        If kdsrch.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then
            If IsNumeric(kdsrch.kundenNrSearch.Text) Then
                initKdNR(kdsrch.kundenNrSearch.Text)
                RaiseEvent KDNR_CHANGED(KdNR)
            End If
        End If
        '  Panel1.Enabled = True
    End Sub



    Public Sub initSND()
        If VK_ID > 0 Then
            Dim VK As New VERAG_PROG_ALLGEMEIN.cVorauskasse(VK_ID)
            If VK IsNot Nothing Then setValues(VK) Else setDefault()
            initBerechnung()
        Else
            setDefault()
            If SENDUNG IsNot Nothing Then
                txtWarenbez.Text = If(SENDUNG.tblSnd_Warenbezeichnung, "")
                txtAnzVerp.Text = If(SENDUNG.tblSnd_Colli, "")
                txtGewicht.Text = If(SENDUNG.tblSnd_Gewicht, "")
                txtAbsender.Text = If(SENDUNG.tblSnd_Absender, "")
                If SENDUNG.AbfertigungsNr > 0 Then
                    '   txtAbfertigungsNr.Text = SENDUNG.FilialenNr & "/" & SENDUNG.AbfertigungsNr
                    txtAbfertigungsNr.Text = SENDUNG.AbfertigungsNr
                    If SENDUNG.FilialenNr > 0 Then
                        cboFiliale.changeItem(SENDUNG.FilialenNr)
                        Dim VK = VERAG_PROG_ALLGEMEIN.cVorauskasse.LOADByFilialeAbfNr(SENDUNG.FilialenNr, SENDUNG.AbfertigungsNr, ROLLE)
                        If VK IsNot Nothing Then setValues(VK) Else setDefault()
                        initBerechnung()
                    End If
                End If

                If Not IsNumeric(If(SENDUNG.tblSnd_Frachtkosten, "")) And Not IsNumeric(If(SENDUNG.tblSnd_FrachtkostenNichtEU, "")) Then
                    txtFrachtkostenAusl._value = CDbl(SENDUNG.tblSnd_FrachtkostenGesamt)
                ElseIf IsNumeric(If(SENDUNG.tblSnd_Frachtkosten, "")) Then
                    txtFrachtkostenAusl._value = CDbl(SENDUNG.tblSnd_FrachtkostenNichtEU)
                    txtFrachtkostenInl._value = CDbl(SENDUNG.tblSnd_Frachtkosten)
                End If
                If If(SENDUNG.tblSnd_WarenwertWaehrung, "") = "EUR" AndAlso IsNumeric(If(SENDUNG.tblSnd_Warenwert, "")) Then
                    lblRechnungsbetrag._value = CDbl(SENDUNG.tblSnd_Warenwert)
                End If

            End If
            If AVISO IsNot Nothing Then
                txtLKWKennz.Text = If(AVISO.LKW_Nr, "")
                txtUnternehmer.Text = If(AVISO.Frächter, "")
                cbxLKWWartet.Checked = (AVISO.Status = VERAG_PROG_ALLGEMEIN.cGlobal.Status_Ankunft)
            End If
        End If
    End Sub

    Public Sub initKdNR(KdNR)
        If KdNR > 0 Then
            Me.KdNR = KdNR

            Dim KUNDE As New VERAG_PROG_ALLGEMEIN.cKunde(KdNR)
            Dim ADRESSE As New VERAG_PROG_ALLGEMEIN.cAdressen(KdNR)

            txtFirma.Text = If(ADRESSE.Name_1, "") & If(If(ADRESSE.Name_2, "") <> "", " " & ADRESSE.Name_2, "")
            txtAdresse1.Text = If(ADRESSE.Straße, "")
            txtAdresse2.Text = (If(ADRESSE.LandKz, "") & " " & If(ADRESSE.PLZ, "") & " " & If(ADRESSE.Ort, "")).ToString.Trim
            txtUid.Text = If(ADRESSE.UstIdKz, "") & If(ADRESSE.UstIdNr, "")
            txtEori.Text = If(KUNDE.EORITIN, "")
            txtTel.Text = If(ADRESSE.Telefon, "")
            txtFax.Text = If(ADRESSE.Telefax, "")
            txtEmail.Text = If(ADRESSE.E_Mail, "")
            '  txtAnsprechpartnerVERAG.Text = If(ADRESSE.Ansprechpartner, "")
            cbxSVS.Checked = KUNDE.SVS
        Else
            txtFirma.Text = KdFirma
        End If

        initKdNrLbl()
    End Sub

    Sub initKdNrLbl()
        If KdNR > 0 Then
            LinkLabel1.Visible = True
            Button2.Visible = True
            LinkLabel3.Visible = True
            btnOffertladen.Visible = True
            btnOffertladen.Enabled = CInt(SQL.getValueTxtBySql("Select count([LeistungsNr]) From Offertenpositionen WHERE KundenNr='" & KdNR & "' and OffertenNr='1'", "FMZOLL")) > 0
        Else
            LinkLabel1.Visible = False
            Button2.Visible = False
            LinkLabel3.Visible = False
            btnOffertladen.Visible = False
        End If

    End Sub

    Private Sub btnDel_Click(sender As Object, e As EventArgs) Handles btnDel.Click
        RaiseEvent DELETE(Me)
    End Sub

    Private Sub btnup_Click(sender As Object, e As EventArgs) Handles btnUp.Click
        RaiseEvent MOVE_UP(Me)
    End Sub

    Private Sub btnDown_Click(sender As Object, e As EventArgs) Handles btnDown.Click
        RaiseEvent MOVE_DOWN(Me)
    End Sub

    Public Function ValidValues(ByRef err) As Boolean
        ValidValues = True
        If Not IsNumeric(cboFiliale._value) Then err &= "Vorauskasse: Filiale auswählen!" & vbNewLine : cboFiliale.Focus() : ValidValues = False
        If Not IsNumeric(txtAbfertigungsNr.Text) Then err &= "Vorauskasse: AbfertigungsNr. auswählen!" & vbNewLine : txtAbfertigungsNr.Focus() : ValidValues = False
    End Function

    Private Sub usrcntlVollmacht_AT_Load(sender As Object, e As EventArgs) Handles Me.Load
        lblRechnungsbetrag._value = 0

        cboSprache.Items.Clear()
        cboSprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Deutsch", "DE"))
        cboSprache.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Englisch", "EN"))
        cboSprache.changeItem("DE")

        If CDate(Now.ToShortDateString) >= CDate("01.07.2020") And CDate(Now.ToShortDateString) <= CDate("31.12.2020") Then

            txtEustProzent.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("0%", "0"))
            'txtEustProzent.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("5%", "0,05"))
            'txtEustProzent.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("16%", "0,16"))
            txtEustProzent.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("7%", "0,07"))
            txtEustProzent.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("19%", "0,19"))
            txtEustProzent.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("20%", "0,20"))
            txtEustProzent.changeItem("0,19")
            ' txtEustProzent.changeItem("0,16")
        Else

            txtEustProzent.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("0%", "0"))
            txtEustProzent.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("7%", "0,07"))
            txtEustProzent.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("10%", "0,10"))
            txtEustProzent.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("19%", "0,19"))
            txtEustProzent.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("20%", "0,20"))
            txtEustProzent.changeItem("0,19")
        End If

        cboFirma.Items.Clear()

        Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
            Case "UNISPED"
                cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("UNISPED Speditions GmbH", "21"))
                cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("UNISPED Deutschland Speditions GmbH", "22"))
                cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("UNISPED Zollservice GmbH", "23"))
                cboFirma.changeItem("22")

            Case "IMEX"
                cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("IMEX Customs Service GmbH", "20"))
                cboFirma.changeItem("20")

            Case "AMBAR"
                cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AMBAR", "24"))
                cboFirma.changeItem("24")

                'Case "XXX"
                '    cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG-UNISPED LTD", "26"))
                '    cboFirma.changeItem("26")

            Case Else
                cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG Spedition AG", "1"))
                cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG Customs Service GmbH", "11"))
                cboFirma.changeItem("1")
        End Select

        If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("BREXIT", "AVISO") Then
            cboFirma.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("VERAG-UNISPED LTD", "26"))
        End If




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

        Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
            Case "IMEX" : cboFiliale._allowedValuesFreiText = {"5501"}
            Case "ATILLA" : cboFiliale._allowedValuesFreiText = {"4801"}
        End Select

        initControlsHandler()
        txtAnsprechpartnerVERAG.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME
        initBerechnung()

        If IsNumeric(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_durchwahl) Then
            txtDW.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_durchwahl
        End If
        initKdNR(KdNR)
        initSND()
    End Sub

    Private Sub pic_Click(sender As Object, e As EventArgs) Handles pic.Click
        FormularManagerNEU.genPDF(Me, True)
    End Sub

    Private Sub MyTextBox1_TextChanged(sender As Object, e As EventArgs) Handles txtHerrFrau.TextChanged

    End Sub
    Sub initSteuersatz()
        Dim bool_steuerberechnung = True
        If cboFirma._value <> "" Then
            Dim FIRMA_TMP = New VERAG_PROG_ALLGEMEIN.cFirmen(cboFirma._value)
            ' MsgBox(FIRMA_TMP.Firma_LandKz)
            Select Case FIRMA_TMP.Firma_LandKz
                Case "A", "AT"
                    If txtAdresse2.Text.StartsWith("TR") Or txtAdresse2.Text.StartsWith("SRB") Or txtAdresse2.Text.StartsWith("GB") Then
                        txtMwstProzent._value = 0
                    ElseIf txtUid.Text.Trim = "" OrElse txtUid.Text.ToUpper.StartsWith("AT") Then
                        'If txtMwstProzent._value = "" Then
                        txtMwstProzent._value = 0.2
                        'End If
                    Else
                        txtMwstProzent._value = 0
                        bool_steuerberechnung = False
                    End If
                Case "GB"
                    If txtAdresse2.Text.StartsWith("A") Or txtAdresse2.Text.StartsWith("D") Or txtAdresse2.Text.StartsWith("TR") Then
                        txtMwstProzent._value = 0
                    ElseIf txtUid.Text.Trim = "" OrElse txtUid.Text.ToUpper.StartsWith("GB") Then
                        'If txtMwstProzent._value = "" Then
                        txtMwstProzent._value = 0.2
                        'End If
                    Else
                        txtMwstProzent._value = 0
                        bool_steuerberechnung = False
                    End If
                Case Else '"D"
                    If txtAdresse2.Text.StartsWith("TR") Or txtAdresse2.Text.StartsWith("SRB") Or txtAdresse2.Text.StartsWith("GB") Then
                        txtMwstProzent._value = 0
                    ElseIf txtUid.Text.Trim = "" OrElse txtUid.Text.ToUpper.StartsWith("DE") Then
                        'If txtMwstProzent._value = "" Then
                        txtMwstProzent._value = 0.19
                        ' End If
                    Else
                        txtMwstProzent._value = 0
                        bool_steuerberechnung = False
                    End If
            End Select
        End If

        If bool_steuerberechnung Then
            txtMwstProzent.Visible = True
            txtMWST.Visible = True
            Label14.Visible = True
        Else
            txtMwstProzent.Visible = False
            txtMWST.Visible = False
            Label14.Visible = False
            txtMWST.Visible = False
        End If

    End Sub

    Sub initBerechnung()
        initSteuersatz()
        '  MsgBox(lblRechnungsbetrag.Text)
        ' MsgBox(lblRechnungsbetrag._value)
        ' MsgBox(Vl(lblRechnungsbetrag))
        txtZwischensumme._value = Vl(lblRechnungsbetrag) + Vl(txtFrachtkostenAusl)
        txtZoll._value = Math.Round(Vl_proz(txtZollProzent) * Vl(txtZwischensumme), 2)
        txtSumme._value = Vl(txtZwischensumme) + Vl(txtZoll) + Vl(txtFrachtkostenInl) + Vl(txtEustSonstBetrag)
        txtEUST._value = Math.Round((Vl(txtEustProzent) * Vl(txtSumme)), 2)
        txtZoll2._value = Vl(txtZoll)
        txtEust2._value = Vl(txtEUST)

        '----------------------------------------------------------------
        If True Then  'BERECHNUNG SVS aus Rechnungsbetrag
            If cbxSVS.Checked AndAlso
               IsNumeric(lblRechnungsbetrag._value) AndAlso lblRechnungsbetrag._value > 0 Then
                txtSvs._value = cFakturierung.fktSVSRVS(lblRechnungsbetrag._value, "EUR")
            Else
                txtSvs._value = 0
            End If
        End If

        Dim zwTMP As Double =
                Vl(txtVerzollungskosten) +
                Vl(txtWeitereTarifPos) +
                Vl(txtATLAS) +
                Vl(txtClearing) +
                Vl(txtKorrRechnung) +
                Vl(txtUebersetzungRg) +
                Vl(txtAviso) +
                Vl(txtSvs) +
                Vl(txtSonstigeKosten) +
                Vl(txtPapierePorti)
        ' Vl(txtMWST) +
        'Vl(txtPapierePorti)
        txtMWST._value = Math.Round((Vl(txtMwstProzent) * zwTMP), 2)
        txtGesamtsumme._value =
                Vl(txtZoll2) +
                Vl(txtEust2) +
                Vl(txtAndereAbgabenBetrag) +
                zwTMP +
                Vl(txtMWST)


        '----------------------------------------------------------------
    End Sub

    Function Vl(s As VERAG_PROG_ALLGEMEIN.MyTextBox) As Double
        If IsNumeric(s._value) Then : Return Math.Round(CDbl(s._value), 2)
        Else : s._value = 0 : End If
        Return 0
    End Function
    Function Vl(s As VERAG_PROG_ALLGEMEIN.MyComboBox) As Double
        If IsNumeric(s._value) Then : Return Math.Round(CDbl(s._value), 2)
        Else : s._value = 0 : End If
        Return 0
    End Function
    Function Vl_proz(s As VERAG_PROG_ALLGEMEIN.MyTextBox) As Double
        If IsNumeric(s._value) Then : Return CDbl(s._value)
        Else : s._value = 0 : End If
        Return 0
    End Function
    Private Sub txtUid_TextChanged(sender As Object, e As EventArgs) Handles txtUid.TextChanged

        initBerechnung()
    End Sub

    Private Sub txtEustProzent_SelectedIndexChanged(sender As Object, e As EventArgs) Handles txtEustProzent.SelectedIndexChanged
        initBerechnung()
    End Sub
    Private Sub lblRechnungsbetrag_ValueChanged() Handles lblRechnungsbetrag.ValueChanged
        initBerechnung()
    End Sub

    Private Sub MyComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboFirma.SelectedIndexChanged
        cboSprache.Visible = False
        Label17.Visible = False

        If txtEustProzent._value <> "0" Then ' Wenn =, soll das bleiben
            'Dim FIRMA_TMP = New VERAG_PROG_ALLGEMEIN.cFirmen(cboFiliale._value)
            'Select Case FIRMA_TMP.Firma_LandKz
            lblWaehrung.Text = "EUR"
            Select Case cboFirma._value
                Case "11",
                    txtEustProzent.changeItem("0,20")
                Case "26"
                    txtEustProzent.changeItem("0,20")
                    lblWaehrung.Text = "GBP"
                Case "24"
                    cboSprache.Visible = True
                    Label17.Visible = True
                    txtEustProzent.changeItem("0,19")
                Case Else
                    'If CDate(Now.ToShortDateString) >= CDate("01.07.2020") And CDate(Now.ToShortDateString) <= CDate("20.12.2020") Then
                    '    txtEustProzent.changeItem("0,16")
                    'Else
                    '    txtEustProzent.changeItem("0,19")
                    'End If
                    txtEustProzent.changeItem("0,19")
            End Select
        End If
        initBerechnung()
    End Sub

    Private Sub pnlBottom_Paint(sender As Object, e As PaintEventArgs) Handles pnlBottom.Paint

    End Sub

    Private Sub btnSaveFD_Click(sender As Object, e As EventArgs) Handles btnSaveFD.Click
        If txtVorlage.Text = "" Then MsgBox("Bitte ein Vorlagenbezeichnung eingeben!") : Exit Sub
        Dim FV As cFormularVorlagen
        If FV_ID > -1 Then
            If MsgBox("Möchten Sie die Vorlage überschreiben?", vbYesNoCancel) <> MsgBoxResult.Yes Then Exit Sub
            FV = New cFormularVorlagen(FV_ID)
        Else
            FV = New cFormularVorlagen
            FV.tblform_art = Me.GetType.ToString
            FV.tblform_begriff = txtVorlage.Text
        End If
        FV.tblform_KundenNr = If(KdNR > 0, KdNR, Nothing)
        FV.tblform_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
        FV.tblform_letzeAenderung = Now

        If FV.SAVE() Then
            getValues(FV)
            If FV.SAVE_VALUES() Then initControlsSave(FV)
        End If

    End Sub


    Sub getValues(ByVal FV As cFormularVorlagen)
        FV.VALUES.Clear()
        For Each c In Me.Controls
            Select Case c.GetType.ToString
                Case GetType(VERAG_PROG_ALLGEMEIN.MyTextBox).ToString, GetType(TextBox).ToString
                    FV.VALUES.Add(New cFormularVorlagenValues(FV.tblform_id, c.name, c.text))
                Case GetType(VERAG_PROG_ALLGEMEIN.MyComboBox).ToString
                    FV.VALUES.Add(New cFormularVorlagenValues(FV.tblform_id, c.name, If(c._value IsNot Nothing, c._value, "")))
            End Select
        Next

        For Each c In pnlBottom.Controls
            Select Case c.GetType.ToString
                Case GetType(VERAG_PROG_ALLGEMEIN.MyTextBox).ToString, GetType(VERAG_PROG_ALLGEMEIN.MyComboBox).ToString
                    FV.VALUES.Add(New cFormularVorlagenValues(FV.tblform_id, c.name, If(c._value IsNot Nothing, c._value, "")))
            End Select
        Next
    End Sub



    Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click

        Dim f As New frmFormularvorlageSuche(Me.GetType.ToString)
        If f.ShowDialog(Me) = DialogResult.OK Then
            If f.FV IsNot Nothing Then
                txtVorlage.Text = f.FV.tblform_begriff
                initControlsSave(f.FV)

                For Each v In f.FV.VALUES
                    If Me.Controls(v.tblfv_name) IsNot Nothing Then
                        Select Case Me.Controls(v.tblfv_name).GetType.ToString
                            Case GetType(VERAG_PROG_ALLGEMEIN.MyTextBox).ToString, GetType(TextBox).ToString
                                Me.Controls(v.tblfv_name).text = v.tblfv_wert
                            Case GetType(VERAG_PROG_ALLGEMEIN.MyComboBox).ToString
                                Me.Controls(v.tblfv_name)._value = v.tblfv_wert
                        End Select
                    ElseIf pnlBottom.Controls(v.tblfv_name) IsNot Nothing Then
                        pnlBottom.Controls(v.tblfv_name)._value = v.tblfv_wert

                        'TEXTBOX ÜBERSCHREIBEN, DAMIT NICHT FALSCHER WERT, cbo ok, da MWST % nicht geändert 
                        Select Case pnlBottom.Controls(v.tblfv_name).GetType.ToString
                            Case GetType(VERAG_PROG_ALLGEMEIN.MyTextBox).ToString
                                pnlBottom.Controls(v.tblfv_name)._value = 0
                        End Select
                    End If
                Next
            End If
        Else

        End If
    End Sub

    Sub initControlsSave(FV As cFormularVorlagen)
        If FV IsNot Nothing Then
            Me.KdNR = If(FV.tblform_KundenNr IsNot Nothing, FV.tblform_KundenNr, -1)
            FV_ID = FV.tblform_id
            btnDelFD.Visible = True
            lklEintragAufheben.Visible = True
            txtVorlage.Enabled = False
        Else
            Me.KdNR = -1
            FV_ID = -1
            txtVorlage.Enabled = True
            txtVorlage.Text = ""
            btnDelFD.Visible = False
            lklEintragAufheben.Visible = False
        End If
        initKdNrLbl()
    End Sub
    Private Sub lklEintragAufheben_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles lklEintragAufheben.LinkClicked
        initControlsSave(Nothing)
    End Sub

    Private Sub btnDelFD_Click(sender As Object, e As EventArgs) Handles btnDelFD.Click
        If FV_ID > 0 Then
            Dim FV As New cFormularVorlagen(FV_ID)
            If MsgBox("Möchten Sie die Vorlage wirklich löschen?", vbYesNoCancel) = MsgBoxResult.Yes Then
                If FV.DELETE() Then
                    initControlsSave(Nothing)
                End If
            End If
        End If
    End Sub



    Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
        If KdNR > 0 Then
            Dim f As New frmKundenUebersichtZOLL(KdNR)
            f.selectedTAB = "Offerte"
            f.Show(Me)
        End If
    End Sub


    Private Sub LinkLabel3_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel3.LinkClicked
        Me.KdNR = -1
        initKdNrLbl()
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        If KdNR > 0 Then
            Dim f As New frmKundenUebersichtZOLL(KdNR)
            f.ShowDialog(Me)
        End If
    End Sub

    Private Sub btnStandardPreiseLaden_Click(sender As Object, e As EventArgs) Handles btnStandardPreiseLaden.Click
        If FormularManagerNEU.saveVorauskasse(Me) Then
            lblCRsaved.Text = "(gespeichert)"
            lblCRsaved.ForeColor = Color.Green
        End If
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim vk As New frmVorauskasse
        vk.Show(Me)
    End Sub


    Private Sub txtAbfertigungsNr_TextChanged(sender As Object, e As EventArgs) Handles txtAbfertigungsNr.Leave
        If txtAbfertigungsNr.Text.Length > 8 Then Exit Sub
        If txtAbfertigungsNr.Text.Length <= 6 Then
            If IsNumeric(txtAbfertigungsNr.Text) Then
                txtAbfertigungsNr.Text = Now.ToString("yy") & CInt(txtAbfertigungsNr.Text).ToString("000000")
            End If
        End If

    End Sub



    Private Sub cbxSVS_CheckedChanged(sender As Object, e As EventArgs) Handles cbxSVS.CheckedChanged
        If cbxSVS.Checked Then
            txtSvs.Enabled = True
            txtSvs._value = 0
        Else
            txtSvs.Enabled = False
        End If
        initBerechnung()
    End Sub



    Sub getValues(ByRef VK As VERAG_PROG_ALLGEMEIN.cVorauskasse)

        VK.vk_Rolle = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(ROLLE)
        VK.vk_Anrede = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtHerrFrau.Text)
        VK.vk_Firmenwortlauf = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtFirma.Text)
        VK.vk_Aresse1 = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtAdresse1.Text)
        VK.vk_Adresse2 = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtAdresse2.Text)
        VK.vk_UID = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtUid.Text)
        VK.vk_EORI = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtEori.Text)
        VK.vk_Tel = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtTel.Text)
        VK.vk_Fax = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtFax.Text)
        VK.vk_Email = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtEmail.Text)
        VK.vk_RgNr = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtRechnungsnummern.Text)
        VK.vk_Absender = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtAbsender.Text)
        VK.vk_ATREUR1 = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtATUEur1.Text)
        VK.vk_Fraechter = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtUnternehmer.Text)
        VK.vk_Anzahl = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtAnzVerp.Text)
        VK.vk_Warenbezeichnung = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtWarenbez.Text)
        VK.vk_Colli = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtGewicht.Text)
        VK.vk_FaStNr = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtFaStNr.Text)
        VK.vk_LKW = txtLKWKennz.Text

        VK.vk_Berechnung_Rechnungsbetrag = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(lblRechnungsbetrag._value)
        VK.vk_Berechnung_FrachtkostAusland = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtFrachtkostenAusl._value)
        VK.vk_Berechnung_ZollProz = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtZollProzent._value)
        VK.vk_Berechnung_FrachtkostInland = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtFrachtkostenInl._value)
        VK.vk_Berechnung_AbgabenSonst_Bez = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtEustSonstText.Text)
        VK.vk_Berechnung_AbgabenSonst_Betrag = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtEustSonstBetrag._value)
        VK.vk_Berechnung_EUSTProz = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtEustProzent._value)
        VK.vk_Berechnung_KostenSonst_Bez = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtAndereAbgabenText.Text)
        VK.vk_Berechnung_KostenSonst_Betrag = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtAndereAbgabenBetrag._value)
        VK.vk_Berechnung_Verzollung = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtVerzollungskosten._value)
        VK.vk_Berechnung_jeWeitere = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtWeitereTarifPos._value)
        VK.vk_Berechnung_ATLAS = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtATLAS._value)
        VK.vk_Berechnung_Clearing = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtClearing._value)
        VK.vk_Berechnung_korrRg = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtKorrRechnung._value)
        VK.vk_Berechnung_Übersetzung = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtUebersetzungRg._value)
        VK.vk_Berechnung_Aviso = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtAviso._value)
        VK.vk_Berechnung_SVS = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtSvs._value)
        VK.vk_Berechnung_SonstigeKosten = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtSonstigeKosten._value)
        VK.vk_Berechnung_SonstigeKostenText = VERAG_PROG_ALLGEMEIN.SQL.isNullNothing(txtSonstigeKostenText.Text)
        VK.vk_Berechnung_PP = VERAG_PROG_ALLGEMEIN.SQL.isNullNothingDbl(txtPapierePorti._value)


    End Sub


    Sub setValues(ByVal VK As VERAG_PROG_ALLGEMEIN.cVorauskasse)

        ROLLE = If(VK.vk_Rolle, "")

        txtHerrFrau.Text = If(VK.vk_Anrede, "")
        txtFirma.Text = If(VK.vk_Firmenwortlauf, "")
        txtAdresse1.Text = If(VK.vk_Aresse1, "")
        txtAdresse2.Text = If(VK.vk_Adresse2, "")
        txtUid.Text = If(VK.vk_UID, "")
        txtEori.Text = If(VK.vk_EORI, "")
        txtTel.Text = If(VK.vk_Tel, "")
        txtFax.Text = If(VK.vk_Fax, "")
        txtEmail.Text = If(VK.vk_Email, "")
        txtRechnungsnummern.Text = If(VK.vk_RgNr, "")
        txtAbsender.Text = If(VK.vk_Absender, "")
        txtATUEur1.Text = If(VK.vk_ATREUR1, "")
        txtUnternehmer.Text = If(VK.vk_Fraechter, "")
        txtAnzVerp.Text = If(VK.vk_Anzahl, "")
        txtWarenbez.Text = If(VK.vk_Warenbezeichnung, "")
        txtGewicht.Text = If(VK.vk_Colli, "")
        txtFaStNr.Text = If(VK.vk_FaStNr, "")
        txtLKWKennz.Text = If(VK.vk_LKW, "")

        lblRechnungsbetrag._value = If(VK.vk_Berechnung_Rechnungsbetrag, "")
        txtFrachtkostenAusl._value = If(VK.vk_Berechnung_FrachtkostAusland, "")
        txtZollProzent._value = If(VK.vk_Berechnung_ZollProz, "")
        txtFrachtkostenInl._value = If(VK.vk_Berechnung_FrachtkostInland, "")
        txtEustSonstText.Text = If(VK.vk_Berechnung_AbgabenSonst_Bez, "")
        txtEustSonstBetrag._value = If(VK.vk_Berechnung_AbgabenSonst_Betrag, "")
        txtEustProzent._value = If(VK.vk_Berechnung_EUSTProz, "")
        txtAndereAbgabenText.Text = If(VK.vk_Berechnung_KostenSonst_Bez, "")
        txtAndereAbgabenBetrag._value = If(VK.vk_Berechnung_KostenSonst_Betrag, "")
        txtVerzollungskosten._value = If(VK.vk_Berechnung_Verzollung, "")
        txtWeitereTarifPos._value = If(VK.vk_Berechnung_jeWeitere, "")
        txtATLAS._value = If(VK.vk_Berechnung_ATLAS, "")
        txtClearing._value = If(VK.vk_Berechnung_Clearing, "")
        txtKorrRechnung._value = If(VK.vk_Berechnung_korrRg, "")
        txtUebersetzungRg._value = If(VK.vk_Berechnung_Übersetzung, "")
        txtAviso._value = If(VK.vk_Berechnung_Aviso, "")
        txtSvs._value = If(VK.vk_Berechnung_SVS, "")
        txtSonstigeKosten._value = If(VK.vk_Berechnung_SonstigeKosten, "")
        txtSonstigeKostenText.Text = If(VK.vk_Berechnung_SonstigeKostenText, "Sonstige Kosten")

        txtPapierePorti._value = If(VK.vk_Berechnung_PP, "")

    End Sub
    Sub setDefault()
        Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
            Case "AMBAR"

                offertenvonKundenladen(True)

                'txtVerzollungskosten._value = 112
                'txtATLAS._value = 10
                ''  txtClearing._value = 40
                'txtClearing._value = 0
                'txtAviso._value = 20
                'txtSonstigeKosten._value = 40
                'txtSonstigeKostenText.Text = "Sonstige Kosten"
                'txtPapierePorti._value = 10
            Case "VERAG", "IMEX"

                offertenvonKundenladen(True)
                'txtVerzollungskosten._value = 93
                'txtATLAS._value = 8
                'txtClearing._value = 40
                'txtAviso._value = 20
                'txtSonstigeKosten._value = 40
                'txtSonstigeKostenText.Text = "Sonstige Kosten"
                'txtPapierePorti._value = 10

        End Select


    End Sub

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        Dim f As New frmVorauskasse_ZollBerechnen
        If f.ShowDialog(Me) = DialogResult.OK Then
            If f.GesamtBetrag > 0 Then

                txtEustSonstText.Text = "ZOLL"
                txtAndereAbgabenText.Text = "ZOLL"

                txtEustSonstBetrag._value = f.GesamtBetrag
                txtAndereAbgabenBetrag._value = f.GesamtBetrag
            End If
        End If
    End Sub

    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
        Dim f As New frmVorauskasse_ZollBerechnen
        If f.ShowDialog(Me) = DialogResult.OK Then
            If f.GesamtBetrag > 0 Then

                '  txtEustSonstText.Text = "EUST"
                txtAndereAbgabenText.Text = "EUST"

                ' txtEustSonstBetrag._value = f.GesamtBetrag
                txtAndereAbgabenBetrag._value = f.GesamtBetrag
            End If
        End If
    End Sub

    Private Sub txtAdresse2_TextChanged(sender As Object, e As EventArgs) Handles txtAdresse2.TextChanged
        initSteuersatz()
    End Sub

    Private Sub btnFremdWaehrungBerechnen_Click(sender As Object, e As EventArgs) Handles btnFremdWaehrungBerechnen.Click
        Dim f As New frmVorauskasse_FremdwaehrungBerechnen(SENDUNG)
        If f.ShowDialog(Me) = DialogResult.OK Then
            If CDbl(f.txtWarenwertUmrechnung.Text) <> 0 Then
                lblRechnungsbetrag._value = f.txtWarenwertUmrechnung.Text
            End If
        End If
    End Sub

    Private Sub btnOffertladen_Click(sender As Object, e As EventArgs) Handles btnOffertladen.Click

        offertenvonKundenladen(False)

        'For Each row As DataRow In dt.Select("BerechnungsartNr = '8'")

        '    If row("LeistungsNr") = 60 Then txtVerzollungskosten.Text = row("Preis")
        '    If row("LeistungsNr") = 20 Then txtZoll._value = row("Preis")

    End Sub

    Private Sub offertenvonKundenladen(warnungunterduecken As Boolean)

        Dim dt As DataTable
        If SENDUNG Is Nothing Then
            If Not warnungunterduecken Then MsgBox("Es ist keine Sendung hinterlegt, daher kann keine Abfertigungsart geladen werden und kein passendes Offert!")
            Exit Sub
        End If

        dt = SQL.loadDgvBySql("SELECT [LeistungsNr],[LeistungsBez], [Preis], [BerechnungsartNr] ,[Anzahl], BerechnungsartPosInkludiert FROM [Offertenpositionen] WHERE KundenNr='" & KdNR & "' and OffertenNr=(SELECT ISNULL(AO.ao_OffertenNr,-1) FROM tblAbfertigungsartOffertenstamm as AO WHERE AO.ao_Abfertigungsart='" & SENDUNG.tblSnd_Abfertigungsart_ID & "') and preis is not null order by LeistungsNr, Preis desc", "FMZOLL")

        If dt.Rows.Count = 0 Then
            If Not warnungunterduecken Then MsgBox("Es konnten keine Offertpositionen für Abfertigunsgart " & SENDUNG.tblSnd_Abfertigungsart_ID & " ermittelt werden!")
            Exit Sub
        End If

        ' wenn AnzahlPos angegeben, dann Berechnungsart = 10 verwenden, 
        If txtPos.Text <> "" AndAlso CInt(txtPos.Text) > 0 Then
            For Each row As DataRow In dt.Select("BerechnungsartNr = '10'")
                If row("LeistungsNr") = 340 Then

                    If IsDBNull(row("BerechnungsartPosInkludiert")) Then
                        txtWeitereTarifPos._value = row("Preis") * txtPos.Text
                        Exit For
                    End If

                    If row("BerechnungsartPosInkludiert") >= txtPos.Text Then
                        txtWeitereTarifPos._value = row("Preis") * 1
                        Exit For
                    Else
                        txtWeitereTarifPos._value = row("Preis") * (txtPos.Text - row("BerechnungsartPosInkludiert") + 1)
                        Exit For
                    End If

                End If
            Next

        End If

        For Each row As DataRow In dt.Select("Anzahl = '1'")
            If row("LeistungsNr") = 348 Then txtAviso._value = row("Preis")
            If row("LeistungsNr") = 340 Then txtVerzollungskosten._value = row("Preis")
            If row("LeistungsNr") = 324 Then txtATLAS._value = row("Preis")
            If row("LeistungsNr") = 440 Then txtPapierePorti._value = row("Preis")

            If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then

                If row("LeistungsNr") = 440 AndAlso row("LeistungsBez").ToString.ToLower.Contains("sonstige kosten") Then
                    txtSonstigeKosten._value = row("Preis")
                    txtSonstigeKostenText.Text = row("LeistungsBez")
                End If

            End If

        Next

        initBerechnung()
    End Sub
End Class

