Imports DAKOSY_Worker
Imports VERAG_PROG_ALLGEMEIN

Public Class usrCntlATLAS_EZABestaetigungVorzeitigeAnmeldung

    Property ALLG As usrCntlATLAS_AnkunftsAnzeige
    Property AVISO As VERAG_PROG_ALLGEMEIN.cAviso
    Property SENDUNG As VERAG_PROG_ALLGEMEIN.cSendungen
    Dim sentToDakosy = False

    Dim GesamtsicherheitREF As cGesamtsicherheitsReferenz
    Dim Standort As String = ""
    Dim gsnr As Integer = -1
    Dim WarenwertEUR As Double = 0

    Property FIRMA_DY = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA



    Sub New(AVISO As VERAG_PROG_ALLGEMEIN.cAviso, SENDUNG As VERAG_PROG_ALLGEMEIN.cSendungen, FIRMA_DY As String, GesamtsicherheitREF As cGesamtsicherheitsReferenz, Standort As String, gsnr As Integer, WarenwertEUR As Double)
        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()

        Me.AVISO = AVISO
        Me.SENDUNG = SENDUNG
        Me.FIRMA_DY = FIRMA_DY

        Me.GesamtsicherheitREF = GesamtsicherheitREF
        Me.Standort = Standort
        Me.gsnr = gsnr
        Me.WarenwertEUR = WarenwertEUR



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


    Private Sub usrCntlATLAS_Load(sender As Object, e As EventArgs) Handles Me.Load

        cboDakosyAction.Items.Clear()
        cboDakosyAction.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Neuen Datensatz erstellen", DY_ObjektAktion.OBJ_CREATE))
        cboDakosyAction.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Vohr. DS ändern", DY_ObjektAktion.OBJ_CHANGE))
        cboDakosyAction.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Vorh. DS stornieren", DY_ObjektAktion.OBJ_CANCEL))
        cboDakosyAction.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Datensatz an ZOLL senden", DY_ObjektAktion.OBJ_SEND))
        cboDakosyAction.changeItem(DY_ObjektAktion.OBJ_CREATE)

        'Select Case FIRMA_DY
        '    Case "VERAG" : txtDyMandant.Text = "VERG"
        '        txtDyNiederlassung.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG
        '        '  Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG
        '        'Case "SUB" : txtDyNiederlassung.Text = "VERG"
        '        'Case "SUW" : txtDyNiederlassung.Text = "ATIL"
        '        ''Case "SBG" : txtDyNiederlassung.Text = "IMEX"
        '        'Case "NEU" : txtDyNiederlassung.Text = "IMEX"
        '        'Case "NKD" : txtDyNiederlassung.Text = "IMEX"
        '        'End Select 
        '    Case "ATILLA" : txtDyMandant.Text = "ATIL" : txtDyNiederlassung.Text = "SUW"
        '    Case "UNISPED" : txtDyMandant.Text = "UNAT" : txtDyNiederlassung.Text = "ATSPED"
        '    Case "IMEX" : txtDyMandant.Text = "VERG" : txtDyNiederlassung.Text = "SUB" 'VERAG_PROG_ALLGEMEIN.cAllgemein.NIEDERLASSUNG 'txtDyMandant.Text = "IMEX" : txtDyNiederlassung.Text = "IME"
        '    Case "AMBAR" : txtDyMandant.Text = "ATIL" : txtDyNiederlassung.Text = "AMBWO"
        'End Select

        txtDyMandant.Text = cDakosyFunftions.getIOPartner(FIRMA_DY, "AA")
        txtDyNiederlassung.Text = cDakosyFunftions.getDivision(FIRMA_DY, "AA")


        Dim BezugsNr As String = ""

        If SENDUNG IsNot Nothing Then
            BezugsNr = (SENDUNG.FilialenNr & "/" & SENDUNG.AbfertigungsNr & "_" & "ID" & AVISO.AvisoID & "_" & If(AVISO.Auftraggeber.Length > 8, AVISO.Auftraggeber.ToString.Substring(0, 5), AVISO.Auftraggeber)).Trim
            lblBezugsnummer.Text = BezugsNr
            txtMRN.Text = If(SENDUNG.tblSnd_ATB_T1, "")
        End If

        cboStammreferenz.fillWithSQL("SELECT [dySr_Stammreferenz],[dySr_Bezeichnung] FROM [tblDakosy_Stammreferenzen] WHERE dySr_Land='DE' AND dySr_Verfahren='AA'  and dySr_dy_Mandant='" & txtDyMandant.Text & "'  and dySr_dy_Niederlassung IN ('','" & txtDyNiederlassung.Text & "')  and dySr_visible=1", False, "FMZOLL", True)
        cboStammreferenz.changeItem("")



        If cboStammreferenz.Items.Count = 2 Then
            cboStammreferenz.SelectedIndex = 1
        End If

    End Sub

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


        If cboStammreferenz._value = "" Then MsgBox("Stammreferenz auswählen!") : Exit Sub
        If txtMRN._value = "" Then MsgBox("MRN auswählen!") : Exit Sub
        If txtMRN._value.Length > 18 Then MsgBox("MRN zu lang!") : Exit Sub


        Me.Refresh()
        Me.Cursor = Cursors.WaitCursor
        If sentToDakosy OrElse vbYes = MsgBox("Soll die Bestätigung der vZA (ATB Ergänzung) abgeschickt werden?", vbYesNoCancel) Then
            '  Dim cDyAnm As New cDakosy_Zollanmeldungen(cDy_ART, BezugsNr, AVISO.AvisoID, SENDUNG.tblSnd_SendungID)
            'loadDYZollanmeldungen()
            Dim dy_Id = -1
            If True Then
                ''Dim cDY As New cDakosyNCTSOut(cDyAnm.dy_Id, cDyAnm.dy_Erstellung_SB)
                'ncts_OUT.ncts_dyaAnmID = DY_ANM.dy_Id
                'ncts_OUT.ncts_Erstellung_SB = DY_ANM.dy_Erstellung_SB
                'ncts_OUT.ncts_LetzteBearbeitung = Now
                'ncts_OUT.ncts_LetzteBearbeitung_SB = DY_ANM.dy_LetzteBearbeitung_SB
                'ncts_OUT.ncts_firma = Me.FIRMA_DY
                ' DAKOSY_Interface_SEND.loadInClass_VersandanmeldungNCTSDE_003(ncts_OUT, Me, DY_ANM, Me.FIRMA_DY)

                '  dim FilialenNr

                'Dim FIRMA_DY = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
                'FIRMA_DY = DAKOSY_Worker.cDakosyFunftions.getFirma_DY(SENDUNG.FilialenNr, Me.FindForm, "AA")

                'If txtDyMandant.Text = "VERG" And FIRMA_DY = "IMEX" Then 'IMEX verwendet VERAG-Gestellungskonto!!!
                '    FIRMA_DY = "VERAG"
                'End If

                Dim saveFile = ""

                Dim BezugsNrBez As String = ""

                If lblBezugsnummer.Text.Length > 23 Then
                    BezugsNrBez = lblBezugsnummer.Text.Substring(0, 23) 'Z. Zt. begrenzt auf 22 Stellen, weil Aufnahme in ATLAS beschränkt!
                Else
                    BezugsNrBez = lblBezugsnummer.Text
                End If


                If generateBestaetigungVorzeitigeAnmeldung_003(AVISO, SENDUNG, BezugsNrBez, lblBezugsnummer.Text, saveFile, cboDakosyAction._value, txtDyMandant.Text, txtDyNiederlassung.Text, cboStammreferenz._value) Then
                    If saveFile <> "" Then

                        '-------------------------------------------------------

                        If cDakosyFunftions.send_Data_To_Dakosy_FTP(saveFile, BezugsNrBez, dy_Id, FIRMA_DY) Then
                            If SENDUNG IsNot Nothing Then SENDUNG.SET_VGMA() ' MA Vorgeschrieben in Sendung setzen.
                            MsgBox("Gesendet!")
                        Else
                            'DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_09)
                            MsgBox("Sendefehler!")
                        End If
                    End If
                End If
            End If

            ' DY_ANM.UPDATE_DATA()

            'Beim Senden soll die Sendung überhnommen + tblSnd_VG_MA gesetzt werden --> damit gleich gesehen wird, dass der Akt in Bearbeitung ist.
            ' DY_ANM.UPDATE_AVISO_SND(DY_ANM.dy_SendungsId)

            Me.FindForm.Close()
        End If
        Me.Cursor = Cursors.Default
    End Sub




    Shared Function generateBestaetigungVorzeitigeAnmeldung_003(AVISO As VERAG_PROG_ALLGEMEIN.cAviso, SND As VERAG_PROG_ALLGEMEIN.cSendungen, ByVal Bezugsnummer As String, ByVal BezugsnummerALIAS As String, ByRef saveFile As String, DY_ACTION As String, IOPartner As String, IODivision3 As String, Optional BezugsnummerVorblendung As String = "") As Boolean
        Dim Interface_VERSION = "003"
        Dim ObjectAktion = DY_ACTION
        ' Dim BezugsnummerVorblendung = "AA_NCTS_DE_ZE_WO_MITTICH"
        Dim Bearbeiter = ""
        If VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER IsNot Nothing Then Bearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_DAKOSY_SB

        Dim XML As New DAKOSY_Worker.BestaetigungVorzeitigeAnmeldung_003.BestaetigungVorzeitigeAnmeldungAZATNTyp


        'Transaktion:
        XML.Transaktion = New BestaetigungVorzeitigeAnmeldung_003.TransaktionFreierVerkehrTyp
        XML.Transaktion.IOPartner = IOPartner 'SDL.DAKOSY_Interface_SEND.getIOPartner(FIRMA_DY) 'If(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "VERA", "VERG")
        XML.Transaktion.IODatumZeit = Now
        XML.Transaktion.IOReferenz = SND.FilialenNr & "-" & SND.AbfertigungsNr & "_" & Now.ToString("ddMMyyHHmmSS")
        If Not VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then XML.Transaktion.IODivision3 = IODivision3 '"SUW"
        XML.Transaktion.Version = Interface_VERSION
        '  XML.Transaktion.IODivision3 = IODivision3
        XML.EinzelBestaetigungVorzeitigeAnmeldung = New BestaetigungVorzeitigeAnmeldung_003.EinzelBestaetigungVorzeitigeAnmeldungTyp

        'ObjektIdentifizierung:

        XML.EinzelBestaetigungVorzeitigeAnmeldung.ObjektIdentifizierung = New BestaetigungVorzeitigeAnmeldung_003.ObjektIdentifizierungAZATNTyp
        XML.EinzelBestaetigungVorzeitigeAnmeldung.ObjektIdentifizierung.AbsenderSystemName = "VERAG_ZOLL"
        XML.EinzelBestaetigungVorzeitigeAnmeldung.ObjektIdentifizierung.ObjektName = Bezugsnummer

        If BezugsnummerALIAS IsNot Nothing Then XML.EinzelBestaetigungVorzeitigeAnmeldung.ObjektIdentifizierung.ObjektAlias = BezugsnummerALIAS
        Dim ObjektAktion As New List(Of String) : ObjektAktion.Add(ObjectAktion)
        XML.EinzelBestaetigungVorzeitigeAnmeldung.ObjektIdentifizierung.ObjektAktion = ObjektAktion
        If If(VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_DAKOSY_SB, "") <> "" Then XML.EinzelBestaetigungVorzeitigeAnmeldung.ObjektIdentifizierung.Bearbeiter = Bearbeiter

        If BezugsnummerVorblendung IsNot Nothing AndAlso BezugsnummerVorblendung <> "" Then XML.EinzelBestaetigungVorzeitigeAnmeldung.ObjektIdentifizierung.BezugsnummerVorblendung = BezugsnummerVorblendung

        'TransitOperation:
        XML.EinzelBestaetigungVorzeitigeAnmeldung.KopfDaten = New BestaetigungVorzeitigeAnmeldung_003.KopfdatenBestaetigungVorzeitigeAnmeldungTyp
        'If cDY.ncts_CountryOfDispatch IsNot Nothing Then XML.EinzelEingangsanzeige.TransitOperation.CustomsOfficeOfDestinationActual = cDY.ncts_CountryOfDispatch
        'If SND.tblSnd_ATB_T1 IsNot Nothing Then XML.EinzelBestaetigungVorzeitigeAnmeldung.KopfDaten.MRN = SND.tblSnd_ATB_T1
        XML.EinzelBestaetigungVorzeitigeAnmeldung.KopfDaten.AnmeldenderBearbeiter = Bearbeiter
        XML.EinzelBestaetigungVorzeitigeAnmeldung.KopfDaten.TelefonnummerBearbeiter = ""
        XML.EinzelBestaetigungVorzeitigeAnmeldung.KopfDaten.StellungAnmeldenderBearbeiter = "Zolldeklarant/in"

        '        XML.EinzelBestaetigungVorzeitigeAnmeldung.KopfDaten.IncidentFlag = "N"



        Dim saveDir = Application.StartupPath & "\Dakosy_SEND\"
        If Not System.IO.Directory.Exists(saveDir) Then
            System.IO.Directory.CreateDirectory(saveDir)
        End If

        saveFile = saveDir & "DY_BvZA_" & Now.ToString("yyMMdd_HHmmss") & ".xml"

        XML.SaveToFile(saveFile)

        DAKOSY_Worker.cDakosyFunftions.replaceNullDateXML(saveFile)

        Return True
    End Function


    Private Function createGesamtsicherheitDummy(GesSichRef As cGesamtsicherheitsReferenz, Standort As String, Warenort As String, gsnr As Integer, WarenwertEUR As Double)

        Try

            Dim SQL As New SQL


            Dim OPEN_DUMMY As New cSicherheiten()
            Dim attachPosNrToExistingATB = False
            Dim firmaId As Integer = -1
            Dim LKW_ID As String = ""

            Select Case Standort
                Case "Verag GmbH"
                    firmaId = 2
                Case "Verag AG"
                    firmaId = 1
                Case "Unisped GmbH"
                    firmaId = 21
                Case "AMBAR GmbH"
                    firmaId = 24
                Case "Verag CS"
                    firmaId = 11
                Case "IMEX"
                    firmaId = 20
            End Select

            With OPEN_DUMMY
                .gs_ATBNr = txtMRN._value
                'mit 0 angeben, da ansonten durch DAKOSY überschrieben
                .gs_MRNNr = ""
                .gs_posSubNr = Nothing
                .gs_datum = Today()
                .gs_warenwert = WarenwertEUR
                .gs_sicherheitsbetrag = Math.Round(WarenwertEUR * (GesSichRef.gsr_zollsatz / 100), 2)
                .gs_standort = Me.Standort
                .gs_art = "OPEN"
                .gs_datum = DateTime.Now
                .gs_erstellungsdatum = DateTime.Now
                .gs_freitext = "DAKOSY-DUMMY"
                .gs_saldo = GesSichRef.gsr_Saldo
                .gs_atr = "0"
                .gs_zollsatz = GesSichRef.gsr_zollsatz
                .gs_avisoId = AVISO.AvisoID
                .gs_filialenNr = SENDUNG.FilialenNr
                .gs_abfertigungsnr = SENDUNG.AbfertigungsNr
                .gs_systemuser = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
                .gs_warenort = Warenort
                .gs_LKWKZ = AVISO.LKW_Nr
                .gs_dakoyimport = True
                If gsnr > 0 Then
                    .gs_gsNr = gsnr
                    .gs_posNr = getLatestPosNr(gsnr, txtMRN._value)
                    attachPosNrToExistingATB = True
                Else
                    .gs_gsNr = SQL.getValueTxtBySql("select MAX([gs_gsNr]) + 1 as MaxGesSich from tblGesamtsicherheit", "AVISO")
                    .gs_posNr = 0
                End If

            End With

            Dim indexGsId = OPEN_DUMMY.SAVEOBJECT()

            Dim CLOSED_DUMMY As cGesamtsicherheitsPositionen

            If attachPosNrToExistingATB Then
                CLOSED_DUMMY = New cGesamtsicherheitsPositionen(indexGsId, OPEN_DUMMY.gs_posNr)
            Else
                CLOSED_DUMMY = New cGesamtsicherheitsPositionen(indexGsId, 1)
            End If

            With CLOSED_DUMMY

                .gsp_gsNr = OPEN_DUMMY.gs_gsNr
                .gsp_warenwert = 0 ' = 0 wichtig 
                .gsp_sicherheitsbetrag = 0 ' = 0 wichtig 
                .gsp_filialenNr = OPEN_DUMMY.gs_filialenNr
                .gsp_art = "CLOSE"
                .gsp_abfertigungsNr = OPEN_DUMMY.gs_abfertigungsnr
                .gsp_erstellungsdatum = DateTime.Now
                .gsp_datum = DateTime.Now
                .gsp_ust = ""
                .gsp_freitext = OPEN_DUMMY.gs_freitext
                .gsp_avisoId = OPEN_DUMMY.gs_avisoId
                .gsp_gsNr = OPEN_DUMMY.gs_gsNr
                .gsp_gspPosId = OPEN_DUMMY.gs_posNr
                .gsp_systemuser = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
            End With

            CLOSED_DUMMY.SAVE()

            GesSichRef.CalcSaldo()

        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
        End Try


    End Function


    Private Function getLatestPosNr(gs_gsnr As Integer, gs_ATBNr As String) As Integer
        Dim posNr As Integer = 0
        Dim sqlq As String = "Select MAX([gs_posNr]) As MaxPosNr from [tblGesamtsicherheit] where gs_gsnr = " & gs_gsnr & " And gs_ATBNR = '" & gs_ATBNr & "'"
        Dim dt As New DataTable
        dt = (New SQL).loadDgvBySql(sqlq, "AVISO", 100, True)

        If (dt.Rows(0).Item(0) IsNot DBNull.Value) Then

            posNr = dt.Rows(0).Item(0)

        End If

        Return posNr

    End Function


    Private Sub MyCheckbox1_CheckedChanged(sender As Object, e As EventArgs) Handles MyCheckbox1.CheckedChanged
        Button1.Enabled = Not MyCheckbox1.Checked
    End Sub

    Private Sub cboStammreferenz_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboStammreferenz.SelectedIndexChanged

        Dim valueREF As String = cboStammreferenz._value

        If valueREF <> "" Then
            Dim DAKOSY_REF As New cDakosy_Stammreferenzen(valueREF)
            If DAKOSY_REF IsNot Nothing Then
                If DAKOSY_REF.dySr_WarenortID > 0 Then
                    txtWarenort.Text = (New SQL).getValueTxtBySql("SELECT [wo_warenort] from [tblWarenorte] where [wo_id] = " & DAKOSY_REF.dySr_WarenortID, "AVISO")
                End If
            End If
        Else
            txtWarenort.Text = ""
        End If





    End Sub
End Class

