Imports DAKOSY_Worker

Public Class usrCntlATLAS_AnkunftsAnzeige

    Property ALLG As usrCntlATLAS_AnkunftsAnzeige
    'Property FilialeNr As Integer
    ' Property AbfertigungsNr As Integer

    ' Property BezugsNr As String = ""
    ' Property AvisoId As Integer
    'Property SENDUNGS_ID As Integer
    Property AVISO As VERAG_PROG_ALLGEMEIN.cAviso
    Property SENDUNG As VERAG_PROG_ALLGEMEIN.cSendungen
    Dim sentToDakosy = False


    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)
        ' Dieser Aufruf ist für den Designer erforderlich.
        InitializeComponent()

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



        ' 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 = "IMEX" : txtDyNiederlassung.Text = "IME"
            Case "AMBAR" : txtDyMandant.Text = "ATIL" : txtDyNiederlassung.Text = "AMBWO"
        End Select

        Dim 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, "")

        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)
        '   MsgBox("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")
        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 Ankunftsanzeige 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)

                Dim saveFile = ""


                If generateEingangsanzeigeNCTSDE_003(AVISO, SENDUNG, lblBezugsnummer.Text, saveFile, cboDakosyAction._value, FIRMA_DY, cboStammreferenz._value) Then
                    If saveFile <> "" Then
                        If cDakosyFunftions.send_Data_To_Dakosy_FTP(saveFile, lblBezugsnummer.Text, dy_Id, FIRMA_DY) Then
                            'DAKOSY_Worker.cDakosy_Statusmeldungen.InsertStatusMeldung(DY_ANM, DAKOSY_Worker.cDY_Statusliste.S_03)
                            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 generateEingangsanzeigeNCTSDE_003(AVISO As VERAG_PROG_ALLGEMEIN.cAviso, SND As VERAG_PROG_ALLGEMEIN.cSendungen, ByVal Bezugsnummer As String, ByRef saveFile As String, DY_ACTION As String, FIRMA_DY 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 XML As New DAKOSY_Worker.EingangsanzeigeNCTSDE_003.EingangsanzeigeEATyp


        'Transaktion:
        XML.Transaktion = New DAKOSY_Worker.EingangsanzeigeNCTSDE_003.TransaktionNCTSTyp
        XML.Transaktion.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 = SDL.DAKOSY_Interface_SEND.getDivision(FIRMA_DY) '"SUW"
        XML.Transaktion.Version = Interface_VERSION
        ' XML.Transaktion.IODivision3 = "DUR"
        XML.EinzelEingangsanzeige = New EingangsanzeigeNCTSDE_003.EinzelEingangsanzeigeTyp

        'ObjektIdentifizierung:
        XML.EinzelEingangsanzeige.ObjektIdentifizierung.NameAbsendendesSystem = "VERAG_ZOLL"
        XML.EinzelEingangsanzeige.ObjektIdentifizierung = New EingangsanzeigeNCTSDE_003.ObjektIdentifizierungEATyp
        XML.EinzelEingangsanzeige.ObjektIdentifizierung.ObjektName = Bezugsnummer

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

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

        'TransitOperation:
        XML.EinzelEingangsanzeige.TransitOperation = New EingangsanzeigeNCTSDE_003.TransitOperationEAType
        'If cDY.ncts_CountryOfDispatch IsNot Nothing Then XML.EinzelEingangsanzeige.TransitOperation.CustomsOfficeOfDestinationActual = cDY.ncts_CountryOfDispatch
        If SND.tblSnd_ATB_T1 IsNot Nothing Then XML.EinzelEingangsanzeige.TransitOperation.MRN = SND.tblSnd_ATB_T1
        XML.EinzelEingangsanzeige.TransitOperation.ArrivalNotificationDateAndTime = Now

        XML.EinzelEingangsanzeige.TransitOperation.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_AA_" & Now.ToString("yyMMdd_HHmmss") & ".xml"

        XML.SaveToFile(saveFile)

        DAKOSY_Worker.cDakosyFunftions.replaceNullDateXML(saveFile)

        Return True
    End Function





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

