Imports System.Text
Imports System.IO

Public Class cATLAS_FSS
    Dim trennzeichen As String = Chr(29)
    Dim mydocpath As String = My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\VERAG\SDL\ATLAS_FSS"
    Dim enc As Encoding = System.Text.Encoding.ASCII '.GetEncoding(1252) '1252 = ANSI
    Dim serverpath = ""
    Dim serverpathOUT = ""
    Dim server As String = ""

    Public serverpath_SUB As String = "\\192.168.0.95\G\atlas\atlas"
    Public serverpath_SBG As String = "\\192.168.133.98\G\atlas\atlas"
    'Schreiben Dat-Datei


    Public Function sendArtikelToATLAS(server_tmp As String, artikel As cArtikel) As String
        server = server_tmp


        If server = "SUB" Then
            serverpath = serverpath_SUB & "\fssinbas\"
            serverpathOUT = serverpath_SUB & "\fsslgbas\"
        ElseIf server = "SBG" Then
            serverpath = serverpath_SBG & "\fssinbas\"
            serverpathOUT = serverpath_SBG & "\fsslgbas\"
        Else
            Return ""
        End If

        Try
            Dim filename = genFile(artikel)

            If System.IO.File.Exists(serverpath & filename) Then
                '  MsgBox("true")
                Return serverpathOUT & filename
            Else
                '  MsgBox("false")
                Return "ERROR: Ausgabedatei existiert nicht."
            End If
            'MsgBox(mydocpath & "\" & filename)
            'MsgBox("\\192.168.0.95\G\atlas\atlas\fssinbas\" & filename)
            'System.IO.File.Copy(mydocpath & "\" & filename, "\\192.168.0.95\G\atlas\atlas\fssinbas\" & filename)
        Catch ex As Exception
            MsgBox("Es ist ein Fehler beim Übertragen der Daten aufgetreten:" & vbNewLine & vbNewLine & ex.Message)
        End Try
        Return ""
    End Function
    Public Function genFile(artikel As cArtikel, Optional kundennummer As String = "") As String
        ' Set a variable to the My Documents path.
        '  MsgBox(My.Computer.FileSystem.SpecialDirectories.MyDocuments)
        If Not System.IO.Directory.Exists(mydocpath) Then
            System.IO.Directory.CreateDirectory(mydocpath)
        End If
        Dim sb As New StringBuilder()
        ' Enumerate the files in teh My Documents path, filtering for text files only.
        ' Open a stream reader and write the name of the file, a visual separator, and the contents
        ' of the file to the stream.
      
        sb.AppendLine(genHEAD())

        '  If verarbeitungskennzeichen <> "" Then
        'artikel.Verarbeitungskennzeichen = verarbeitungskennzeichen
        '  End If
        artikel.Teilsatzschlüssel = "ART"
        artikel.Verarbeitungskennzeichen = "0" 'Keine Änderung möglich
        Dim line As String = ""

        line &= artikel.Teilsatzschlüssel & trennzeichen
        line &= artikel.Verarbeitungskennzeichen & trennzeichen
        line &= artikel.Artikelnummer & trennzeichen
        line &= artikel.Dynamische_Ergänzung_1 & trennzeichen
        line &= artikel.Dynamische_Ergänzung_2 & trennzeichen
        line &= artikel.Kundennummer & trennzeichen
        line &= artikel.Warencodenummer & trennzeichen
        line &= artikel.Löschkennzeichen_Warencodenummer & trennzeichen
        line &= artikel.Zusatzcode_1 & trennzeichen
        line &= artikel.Löschkennzeichen_Zusatzcode_1 & trennzeichen
        line &= artikel.Zusatzcode_2 & trennzeichen
        line &= artikel.Löschkennzeichen_Zusatzcode_2 & trennzeichen
        line &= artikel.Kennzeichen_Gültig & trennzeichen
        line &= artikel.Kurzbezeichnung & trennzeichen
        line &= artikel.Löschkennzeichen_Kurzbezeichnung & trennzeichen
        line &= artikel.Warenbeschreibung & trennzeichen
        line &= artikel.Löschkennzeichen_Warenbeschreibung & trennzeichen
        line &= artikel.Statistische_Maßeinheit & trennzeichen
        line &= artikel.Löschkennzeichen_Statistische_Maßeinheit & trennzeichen
        line &= artikel.Statistische_Maßeinheit_Qualifikator & trennzeichen
        line &= artikel.Löschkennzeichen_Statistische_Maßeinheit_Qualifikator & trennzeichen
        line &= artikel.Besondere_Maßeinheit & trennzeichen
        line &= artikel.Löschkennzeichen_Besondere_Maßeinheit & trennzeichen
        line &= artikel.Besondere_Maßeinheit_Qualifikator & trennzeichen
        line &= artikel.Löschkennzeichen_Besondere_Maßeinheit_Qualifikator & trennzeichen
        line &= artikel.Gewicht & trennzeichen
        line &= artikel.Löschkennzeichen_Gewicht & trennzeichen
        line &= artikel.Menge & trennzeichen
        line &= artikel.Löschkennzeichen_Menge
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= trennzeichen
        line &= Now.ToString("yyyyMMdd")


        sb.AppendLine(line)

        Try
            ' Write the stream cotnents to a new file named "AllTxtFiles.txt"'
            Dim filename As String = "FSS_ARTIKEL_" & Now.ToString("yyyyMMddHHmmssfff")
            'Dim filename As String = "A421S0002"

            'Using outfile As New StreamWriter(mydocpath & "\" & filename, False, enc)


            Try
                ' My.Computer.Network.UploadFile("C:\Test.txt", "\\pc2\Folder") ???

                Using outfile As New StreamWriter(serverpath & filename, False, enc)
                    outfile.Write(sb.ToString())
                End Using
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

            Return filename
        Catch ex As Exception
            Return ""
        End Try
    End Function

    Public Function genHEAD() As String
        Dim headsrt As String = ""
        Dim head As New cHEAD

        If server = "SBG" Then
            head.kundennummer = "0617"
            head.niederlassung = "SBG"
        End If
        If server = "SUB" Then
            head.kundennummer = "0421"
            head.niederlassung = "SUB"
        End If

        headsrt &= head.key & trennzeichen
        headsrt &= head.strukturtyp & trennzeichen
        headsrt &= head.art & trennzeichen
        headsrt &= head.richtung & trennzeichen
        headsrt &= head.iso & trennzeichen
        headsrt &= head.dateiname & trennzeichen
        headsrt &= head.version & trennzeichen
        headsrt &= head.kundennummer & trennzeichen
        headsrt &= head.tin & trennzeichen
        headsrt &= head.niederlassungsnummer & trennzeichen
        headsrt &= head.verfahrensbereich & trennzeichen
        headsrt &= head.dienststellennummer & trennzeichen
        headsrt &= head.nachrichtenname & trennzeichen
        headsrt &= head.schemaVersion & trennzeichen
        headsrt &= head.testFlag & trennzeichen
        headsrt &= head.datumUhrzeit & trennzeichen
        headsrt &= head.mandant & trennzeichen
        headsrt &= head.niederlassung & trennzeichen
        headsrt &= head.zabisModul & trennzeichen
        headsrt &= head.statuskennzeichen & trennzeichen
        headsrt &= head.rueckmeldungskennzeichen & trennzeichen
        headsrt &= head.kennzeichenVerfahren & trennzeichen
        headsrt &= head.messageId & trennzeichen
        headsrt &= head.inreplyTo & trennzeichen
        headsrt &= head.Subtyp

        Return headsrt
    End Function



End Class


Public Class cHEAD
    Property key As String = "HEAD"
    Property strukturtyp As String = "001"
    Property art As String = "inh"
    Property richtung As String = "KD_ZAB"
    Property iso As String = "1"
    Property dateiname As String = "A421S0002"
    Property version As String = "07000"
    Property kundennummer As String = "0421"
    Property tin As String = ""
    Property niederlassungsnummer As String = ""
    Property verfahrensbereich As String = ""
    Property dienststellennummer As String = ""
    Property nachrichtenname As String = "BAR"
    Property schemaVersion As String = ""
    Property testFlag As String = ""
    Property datumUhrzeit As String = Now.ToString("yyyyMMddhhmmss")
    Property mandant As String = "VERA"
    Property niederlassung As String = "SUB"
    Property zabisModul As String = "BAS"
    Property statuskennzeichen As String = ""
    Property rueckmeldungskennzeichen As String = ""
    Property kennzeichenVerfahren As String = ""
    Property messageId As String = ""
    Property inreplyTo As String = ""
    Property Subtyp As String = "1"
End Class

Public Class cArtikel
    Property zollArt_id As Integer = -1
    Property Teilsatzschlüssel As String = ""
    Property Verarbeitungskennzeichen As String = ""
    Property Artikelnummer As String = ""
    Property Dynamische_Ergänzung_1 As String = ""
    Property Dynamische_Ergänzung_2 As String = ""
    Property Kundennummer As String = ""
    Property Warencodenummer As String = ""
    Property Löschkennzeichen_Warencodenummer As String = ""
    Property Zusatzcode_1 As String = ""
    Property Löschkennzeichen_Zusatzcode_1 As String = ""
    Property Zusatzcode_2 As String = ""
    Property Löschkennzeichen_Zusatzcode_2 As String = ""
    Property Kennzeichen_Gültig As String = "1" ' 1 =gültig für alle NL
    Property Kurzbezeichnung As String = ""
    Property Löschkennzeichen_Kurzbezeichnung As String = ""
    Property Warenbeschreibung As String = ""
    Property Löschkennzeichen_Warenbeschreibung As String = ""
    Property Statistische_Maßeinheit As String = ""
    Property Löschkennzeichen_Statistische_Maßeinheit As String = ""
    Property Statistische_Maßeinheit_Qualifikator As String = ""
    Property Löschkennzeichen_Statistische_Maßeinheit_Qualifikator As String = ""
    Property Besondere_Maßeinheit As String = ""
    Property Löschkennzeichen_Besondere_Maßeinheit As String = ""
    Property Besondere_Maßeinheit_Qualifikator As String = ""
    Property Löschkennzeichen_Besondere_Maßeinheit_Qualifikator As String = ""
    Property Gewicht As String = ""
    Property Löschkennzeichen_Gewicht As String = ""
    Property Menge As String = ""
    Property Löschkennzeichen_Menge As String = ""
    Property tmp_rueckgabeFileSUB As String = ""
    Property tmp_rueckgabeFileSBG As String = ""
    Property tmp_rueckgabetextSUB As String = ""
    Property tmp_rueckgabeSUB As Boolean = False
    Property tmp_rueckgabetextSBG As String = ""
    Property tmp_rueckgabeSBG As Boolean = False
    Property status As String = ""

End Class