Imports com.sun.org.apache.bcel.internal.generic
Imports DocumentFormat.OpenXml.Wordprocessing
Imports Spire.Pdf
Imports VERAG_PROG_ALLGEMEIN

Public Class cWorker_Verwahrung
    Public Shared Dateiname = ""

    Shared SQL As New VERAG_PROG_ALLGEMEIN.SQL



    Shared Function readVW_SumAVerwahrungsinfo(FORM As frmDYNachrichtenVerarbeitung, d As String, saveVerwahrung As Boolean) As String
        Try

            Dim VWI As DAKOSY_Worker.SumAVerwahrungsinfo_009.SumAVerwahrungsinfoSVTyp = DAKOSY_Worker.SumAVerwahrungsinfo_009.SumAVerwahrungsinfoSVTyp.LoadFromFile(d)
            Dim Vorpapiernummer = ""
            Dim RegistriernummerATLAS = ""
            Dim ankungsdatum As Object = Nothing
            Dim gestellungsdatum As Object = Nothing
            Dim posGestellung As New DataTable
            readVW_SumAVerwahrungsinfo = ""
            If VWI IsNot Nothing Then
                If VWI.EinzelSumAVerwahrungsinfo IsNot Nothing Then
                    If VWI.EinzelSumAVerwahrungsinfo.ObjektIdentifizierung IsNot Nothing Then
                        If VWI.EinzelSumAVerwahrungsinfo.ObjektIdentifizierung.ObjektName IsNot Nothing Then
                            readVW_SumAVerwahrungsinfo = VWI.EinzelSumAVerwahrungsinfo.ObjektIdentifizierung.ObjektName 'Nur ObjektAntragsart VV (SumA Vorgang) /NE (NCTS-Vorgang )
                        End If
                    End If
                    If VWI.EinzelSumAVerwahrungsinfo.KopfDaten IsNot Nothing Then
                        If VWI.EinzelSumAVerwahrungsinfo.KopfDaten.Vorpapiernummer IsNot Nothing Then
                            Vorpapiernummer = VWI.EinzelSumAVerwahrungsinfo.KopfDaten.Vorpapiernummer
                        End If

                        If VWI.EinzelSumAVerwahrungsinfo.KopfDaten.RegistriernummerATLAS IsNot Nothing Then
                            RegistriernummerATLAS = VWI.EinzelSumAVerwahrungsinfo.KopfDaten.RegistriernummerATLAS
                        End If
                        If VWI.EinzelSumAVerwahrungsinfo.KopfDaten.GestellungDatum > "01.01.2000" Then
                            gestellungsdatum = VWI.EinzelSumAVerwahrungsinfo.KopfDaten.GestellungDatum
                        End If
                        If VWI.EinzelSumAVerwahrungsinfo.KopfDaten.Ankunftsdatum > "01.01.2000" Then
                            ankungsdatum = VWI.EinzelSumAVerwahrungsinfo.KopfDaten.Ankunftsdatum
                        End If

                        If VWI.EinzelSumAVerwahrungsinfo.Position IsNot Nothing Then
                            For Each POS In VWI.EinzelSumAVerwahrungsinfo.Position
                                If POS.Positionsnummer IsNot Nothing AndAlso posGestellung IsNot Nothing Then
                                    If Not posGestellung.Columns.Contains("AnzPackst") Then
                                        posGestellung.Columns.Add("PosNr", GetType(Integer))
                                        posGestellung.Columns.Add("AnzPackst", GetType(Integer))
                                        posGestellung.Columns.Add("PackstArt", GetType(String))
                                        posGestellung.Columns.Add("Rohmasse", GetType(Double))
                                        posGestellung.Columns.Add("Warenbeschreibung", GetType(String))
                                    End If

                                    Dim ro As DataRow = posGestellung.NewRow
                                    ro("PosNr") = POS.Positionsnummer
                                    ro("AnzPackst") = POS.PackstueckAnzahl
                                    ro("PackstArt") = POS.PackstueckArt
                                    ro("Rohmasse") = POS.Rohmasse
                                    ro("Warenbeschreibung") = POS.Warenbeschreibung
                                    posGestellung.Rows.Add(ro)


                                End If



                            Next
                        End If
                    End If

                End If
            End If


            If readVW_SumAVerwahrungsinfo <> "" And Vorpapiernummer <> "" Then 'BEZUGSNR vorhanden
                Dim STATUS As DAKOSY_Worker.cDakosy_Statusmeldungen = FORM.getStatusCheckTransID(VWI.Transaktion.IOReferenz, VWI.Transaktion.IODatumZeit)
                STATUS.dySt_BezugsNr = readVW_SumAVerwahrungsinfo
                STATUS.dySt_artMitteilung = "VW_INFO"
                STATUS.dySt_dyArt = "VW"

                STATUS.dySt_status = DAKOSY_Worker.cDY_Statusliste.V_50
                STATUS.dySt_ergCode = "GSTDATUM"
                STATUS.dySt_ergMitteilung = ""
                If gestellungsdatum IsNot Nothing Then STATUS.dySt_ergZeitpunkt = gestellungsdatum

                STATUS.SAVE()

                If saveVerwahrung Then

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


                    Try

                        Dim BezugsNr = readVW_SumAVerwahrungsinfo

                        Dim Standort As String = ""
                        If BezugsNr.Length > 4 Then
                            Select Case BezugsNr.Substring(0, 4)
                                Case 4803, 4809
                                    Standort = "VERAG AG"
                                'Case 5601
                                '    Standort = "UNISPED GmbH"
                                'Case 5701
                                '    Standort = "AMBAR GmbH"
                                Case 4810, 5103, 5901
                                    Standort = "VERAG GmbH"
                                Case 5501
                                    Standort = "IMEX"
                                Case Else
                                    GoTo Anzeige
                            End Select

                            Dim filiale = IIf(BezugsNr.Length > 4, BezugsNr.Substring(0, 4), "")
                            Dim abfertigungsnummer = IIf(BezugsNr.Length >= 14, BezugsNr.Substring(5, 8), "")
                            Dim dy_SendungsId = VWI.Transaktion.IOReferenz
                            If filiale <> "" AndAlso abfertigungsnummer <> "" AndAlso IsNumeric(filiale) AndAlso IsNumeric(abfertigungsnummer) Then
                                Dim SND = VERAG_PROG_ALLGEMEIN.cSendungen.LOADByFilialenNrAbfertigungsNr(filiale, abfertigungsnummer)

                                If SND IsNot Nothing AndAlso SND.tblSnd_Abfertigungsart_ID = 44 Then

                                    Dim existingEntry As Integer = 0
                                    existingEntry = CInt((New SQL).getValueTxtBySql("Select count(*) from [tblGesamtsicherheit] where [gs_ATBNr] = '" & RegistriernummerATLAS & "' order by gs_datum desc"))
                                    If existingEntry > 0 Then GoTo Anzeige
                                    existingEntry = CInt((New SQL).getValueTxtBySql("Select count(*) from [tblGesamtsicherheit] where ([gs_filialenNr] = '" & SND.FilialenNr & "' and [gs_abfertigungsNr] = " & SND.AbfertigungsNr & " ) or gs_avisoId = '" & SND.tblSnd_AvisoID & "' order by gs_datum desc"))
                                    If existingEntry > 0 Then GoTo Anzeige

                                    ''sonderfälle lt. Mestan
                                    If SND.tblSnd_Zollsystem_Land = "DE" Then

                                        Select Case SND.FilialenNr
                                            Case 5501, 4803, 4809, 5103
                                                Standort = "VERAG GmbH"
                                        End Select

                                    ElseIf SND.tblSnd_Zollsystem_Land = "AT" Then

                                        If SND.tblSnd_Abfertigungsart_ID = 1 Then 'ZA  
                                            Standort = "VERAG CS"
                                        ElseIf SND.tblSnd_Abfertigungsart_ID = 38 Then 'EV-Verz
                                            Select Case SND.FilialenNr
                                                Case 4803, 5303, 4809, 5103
                                                    Standort = "VERAG CS"
                                            End Select

                                        End If

                                    End If


                                    Dim GesSichRef = New VERAG_PROG_ALLGEMEIN.cAufschubKonten(Standort)

                                    Dim saldo = GesSichRef.CalcSaldo()


                                    If SND.FilialenNr > 0 Then filiale = SND.FilialenNr
                                    If SND.AbfertigungsNr > 0 Then abfertigungsnummer = SND.AbfertigungsNr

                                    'Verwahrung ANSCHREIBUNG
                                    Dim ANSCHREIBUNG As New cSicherheiten()
                                    Dim gsId As Integer
                                    With ANSCHREIBUNG
                                        .gs_ATBNr = RegistriernummerATLAS
                                        .gs_posNr = 1
                                        .gs_datum = gestellungsdatum
                                        .gs_warenwert = IIf(SND.tblSnd_Warenwert IsNot Nothing AndAlso IsNumeric(SND.tblSnd_Warenwert), CDbl(SND.tblSnd_Warenwert), 0)
                                        .gs_sicherheitsbetrag = IIf(SND.tblSnd_Warenwert IsNot Nothing AndAlso IsNumeric(SND.tblSnd_Warenwert), CDbl(SND.tblSnd_Warenwert) * (GesSichRef.brgakto_gs_zollsatz / 100), 0)
                                        .gs_standort = Standort
                                        .gs_art = "OPEN"
                                        '.gs_gsNr = ANSCHREIBUNG.gessicherheitID
                                        .gs_erstellungsdatum = Now()
                                        .gs_freitext = ""
                                        .gs_saldo = saldo
                                        .gs_atr = ""
                                        .gs_filialenNr = filiale
                                        .gs_abfertigungsnr = abfertigungsnummer
                                        .gs_LKWKZ = SND.tblSnd_AvisoID
                                        '.gs_warenort = gessich.warenortID
                                        '.grenzstelle = AVISO.Grenzstelle.ToString.Replace("WO_", "")
                                        .gs_systemuser = "DAKOSY-AUTO"
                                        .gs_zollsatz = GesSichRef.brgakto_gs_zollsatz
                                        .gs_avisoId = SND.tblSnd_AvisoID

                                    End With

                                    VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True
                                    gsId = ANSCHREIBUNG.SAVEOBJECT()
                                    VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False


                                    If posGestellung.Rows.Count > 1 Then
                                        For i As Integer = 2 To posGestellung.Rows.Count

                                            Dim ANSCHREIBUNG_POS As New cSicherheiten()
                                            With ANSCHREIBUNG_POS

                                                .gs_gsNr = gsId
                                                .gs_ATBNr = RegistriernummerATLAS
                                                .gs_posNr = i
                                                .gs_datum = gestellungsdatum
                                                .gs_warenwert = 0
                                                .gs_sicherheitsbetrag = 0
                                                .gs_standort = Standort
                                                .gs_art = "OPEN"
                                                .gs_erstellungsdatum = DateTime.Now
                                                .gs_freitext = ""
                                                .gs_saldo = saldo
                                                .gs_atr = ""
                                                .gs_zollsatz = GesSichRef.brgakto_gs_zollsatz
                                                .gs_avisoId = SND.tblSnd_AvisoID

                                            End With

                                            VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True
                                            ANSCHREIBUNG.SAVE()
                                            VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False

                                        Next

                                    End If
                                End If

                            End If
                        End If



                    Catch ex As Exception


                    End Try


                End If

Anzeige:
                FORM.addDGVEinarbeitung("VW: Verwahrungsinfo", STATUS.dySt_BezugsNr)
                End If

        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name)
            readVW_SumAVerwahrungsinfo = ""
        End Try
    End Function



    Shared Function readEZA_SumAErledigungsinformationVorpapier_005(FORM As frmDYNachrichtenVerarbeitung, d As String, saveAbschreibung As Boolean) As String
        Try

            Dim EZA As DAKOSY_Worker.SumAErledigungsinformationVorpapier_005.SumAErledigungsinformationVorpapierSIVRPTyp = DAKOSY_Worker.SumAErledigungsinformationVorpapier_005.SumAErledigungsinformationVorpapierSIVRPTyp.LoadFromFile(d)
            Dim ART = ""
            '   Dim details = ""

            Dim zp As Object = Nothing
            Dim regNR = ""
            Dim division = ""

            readEZA_SumAErledigungsinformationVorpapier_005 = ""
            If EZA IsNot Nothing Then

                If EZA.Transaktion IsNot Nothing Then
                    If EZA.Transaktion.IODivision3 IsNot Nothing Then
                        division = EZA.Transaktion.IODivision3
                    ElseIf EZA.Transaktion.IODivision1 IsNot Nothing Then
                        division = EZA.Transaktion.IODivision1
                    End If
                End If

                If EZA.EinzelSumAErledigungsinformation IsNot Nothing Then
                    If EZA.EinzelSumAErledigungsinformation.ObjektIdentifizierung IsNot Nothing Then
                        If EZA.EinzelSumAErledigungsinformation.ObjektIdentifizierung.ObjektName IsNot Nothing Then
                            readEZA_SumAErledigungsinformationVorpapier_005 = EZA.EinzelSumAErledigungsinformation.ObjektIdentifizierung.ObjektName
                        End If
                        zp = EZA.EinzelSumAErledigungsinformation.ObjektIdentifizierung.ZeitpunktNachrichteneingang
                    End If
                    If EZA.EinzelSumAErledigungsinformation.KopfDaten IsNot Nothing Then
                        If EZA.EinzelSumAErledigungsinformation.KopfDaten.ArtErledigung IsNot Nothing Then
                            ART = EZA.EinzelSumAErledigungsinformation.KopfDaten.ArtErledigung
                        End If
                        If EZA.EinzelSumAErledigungsinformation.KopfDaten.RegNrATLASWeitereNachweise IsNot Nothing Then
                            regNR = EZA.EinzelSumAErledigungsinformation.KopfDaten.RegNrATLASWeitereNachweise
                        End If
                    End If
                End If
            End If
            ' EZA.LOADByBezugsNr(bezugsNr, False) ' Falls schon ein DS mit dieser Bezugsnummer vorhanden ist.

            If readEZA_SumAErledigungsinformationVorpapier_005 <> "" Then 'BEZUGSNR vorhanden
                Dim STATUS As DAKOSY_Worker.cDakosy_Statusmeldungen = FORM.getStatusCheckTransID(EZA.Transaktion.IOReferenz, EZA.Transaktion.IODatumZeit)
                STATUS.dySt_BezugsNr = readEZA_SumAErledigungsinformationVorpapier_005
                STATUS.dySt_artMitteilung = "VW_EVP"
                STATUS.dySt_dyArt = "VW" '"EZA" 'T1/T2

                STATUS.dySt_status = DAKOSY_Worker.cDY_Statusliste.V_60
                STATUS.dySt_ergZeitpunkt = zp


                ' STATUS.dySt_ergDetails = details
                'EINTRAG IN tblDakosy_Zollanmeldungen
                Dim DY_TMP As DAKOSY_Worker.cDakosy_Zollanmeldungen = FORM.saveDY_ZA(STATUS, EZA.Transaktion.IOReferenz, If(zp, EZA.Transaktion.IODatumZeit), "EZA")
                'Dim EZA_TMP As DAKOSY_Worker.cDakosyEZA

                ''???????? REGNR
                'If regNR <> "" Then
                '    STATUS.dySt_ergCode = "REGNr"
                '    STATUS.dySt_ergMitteilung = regNR
                '    EZA_TMP = FORM.saveDY_EZA(STATUS, DY_TMP, EZA.Transaktion.IOReferenz, If(zp, EZA.Transaktion.IODatumZeit), regNR)
                'Else
                '    STATUS.dySt_ergCode = "ART"
                '    If ART <> "" Then STATUS.dySt_ergMitteilung = ART
                '    EZA_TMP = FORM.saveDY_EZA(STATUS, DY_TMP, EZA.Transaktion.IOReferenz, If(zp, EZA.Transaktion.IODatumZeit))
                'End If

                'FORM.SaveEZA_FirmaNL(EZA_TMP, DY_TMP, division)

                If DY_TMP IsNot Nothing Then STATUS.dySt_dyId = DY_TMP.dy_Id
                STATUS.SAVE()



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


                'Verwahrung ABSCHREIBUNG

                If saveAbschreibung Then

                    Try



                    Catch ex As Exception

                        VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
                    End Try

                    VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False





                End If


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




                FORM.addDGVEinarbeitung("VW: Erledigungsinformation-Vorpapier", STATUS.dySt_BezugsNr)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name)
            readEZA_SumAErledigungsinformationVorpapier_005 = ""
        End Try
    End Function

    Shared Function readEZA_SumAErledigungsinformationCDXWare007(FORM As frmDYNachrichtenVerarbeitung, d As String, saveAbschreibung As Boolean) As String
        Try

            Dim EZA As DAKOSY_Worker.SumAErledigungsinformationCDXWare_007.SumAErledigungsinformationCDXWareSCTyp = DAKOSY_Worker.SumAErledigungsinformationCDXWare_007.SumAErledigungsinformationCDXWareSCTyp.LoadFromFile(d)
            Dim ART = ""
            '   Dim details = ""

            Dim zp As Object = Nothing
            Dim regNR = ""
            Dim division = ""

            readEZA_SumAErledigungsinformationCDXWare007 = ""
            If EZA IsNot Nothing Then

                If EZA.Transaktion IsNot Nothing Then
                    If EZA.Transaktion.IODivision3 IsNot Nothing Then
                        division = EZA.Transaktion.IODivision3
                    ElseIf EZA.Transaktion.IODivision1 IsNot Nothing Then
                        division = EZA.Transaktion.IODivision1
                    End If
                End If

                If EZA.EinzelSumAErledigungsinformationCDXWare IsNot Nothing Then
                    If EZA.EinzelSumAErledigungsinformationCDXWare.ObjektIdentifizierung IsNot Nothing Then
                        If EZA.EinzelSumAErledigungsinformationCDXWare.ObjektIdentifizierung.ObjektName IsNot Nothing Then
                            readEZA_SumAErledigungsinformationCDXWare007 = EZA.EinzelSumAErledigungsinformationCDXWare.ObjektIdentifizierung.ObjektName
                        End If
                        zp = EZA.EinzelSumAErledigungsinformationCDXWare.ObjektIdentifizierung.ZeitpunktNachrichteneingang
                    End If
                    If EZA.EinzelSumAErledigungsinformationCDXWare.KopfDaten IsNot Nothing Then

                        If EZA.EinzelSumAErledigungsinformationCDXWare.KopfDaten.RegNrATLAS IsNot Nothing Then
                            regNR = EZA.EinzelSumAErledigungsinformationCDXWare.KopfDaten.RegNrATLAS
                        End If
                    End If
                End If
            End If
            ' EZA.LOADByBezugsNr(bezugsNr, False) ' Falls schon ein DS mit dieser Bezugsnummer vorhanden ist.

            If readEZA_SumAErledigungsinformationCDXWare007 <> "" Then 'BEZUGSNR vorhanden
                Dim STATUS As DAKOSY_Worker.cDakosy_Statusmeldungen = FORM.getStatusCheckTransID(EZA.Transaktion.IOReferenz, EZA.Transaktion.IODatumZeit)
                STATUS.dySt_BezugsNr = readEZA_SumAErledigungsinformationCDXWare007
                STATUS.dySt_artMitteilung = "VW_EVP_CDX"
                STATUS.dySt_dyArt = "VW" '"EZA" 'T1/T2

                STATUS.dySt_status = DAKOSY_Worker.cDY_Statusliste.V_60 '???
                STATUS.dySt_ergZeitpunkt = zp


                ' STATUS.dySt_ergDetails = details
                'EINTRAG IN tblDakosy_Zollanmeldungen
                Dim DY_TMP As DAKOSY_Worker.cDakosy_Zollanmeldungen = FORM.saveDY_ZA(STATUS, EZA.Transaktion.IOReferenz, If(zp, EZA.Transaktion.IODatumZeit), "EZA")

                If DY_TMP IsNot Nothing Then STATUS.dySt_dyId = DY_TMP.dy_Id
                STATUS.SAVE()



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


                'Verwahrung ABSCHREIBUNG

                If saveAbschreibung Then

                    Try



                    Catch ex As Exception

                        VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
                    End Try

                    VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False





                End If


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

                FORM.addDGVEinarbeitung("VW: Erledigungsinformation-Vorpapier CDX", STATUS.dySt_BezugsNr)
            End If
        Catch ex As Exception
            VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name)
            readEZA_SumAErledigungsinformationCDXWare007 = ""
        End Try
    End Function


End Class
