Imports Renci.SshNet Imports System.IO Public Class cTC_Functions Shared Function send_Data_To_TC(file, dySt_BezugsNr, dy_Id, FRIMA_DY) Try 'If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ZOLL_DakosyZA_Senden", "AVISO") Then ' MsgBox("Sie haben keine Sendeberechtigung.") ' Return False 'End If If Not IO.File.Exists(file) Then Return False Dim fi As New System.IO.FileInfo(file) Dim UPLOAD_PFAD = "" Select Case FRIMA_DY Case "IMEX" UPLOAD_PFAD = TELOTEC_Worker.cTC_Paramter.GET_PARAM_ByName("TELOTEC_PFAD_SEND", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) Case Else UPLOAD_PFAD = TELOTEC_Worker.cTC_Paramter.GET_PARAM_ByName("TELOTEC_PFAD_SEND_VERAG", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) End Select Dim destFilenameTMP = UPLOAD_PFAD + "." & If(IO.File.Exists(UPLOAD_PFAD & "." & fi.Name), Now.ToString("yyMMdd_HHmmss.fff_"), "") & fi.Name ' MsgBox(destFilenameTMP) 'Datei hochladen IO.File.Copy(file, destFilenameTMP) ' If IO.File.Exists(destFilenameTMP) Then IO.File.Delete(F) 'Datei nach erfolgreichem Herunterladen vom Server löschen 'Gültiger Filename Dim destFilename = UPLOAD_PFAD & If(IO.File.Exists(UPLOAD_PFAD & fi.Name), Now.ToString("yyMMdd_HHmmss.fff_"), "") & fi.Name IO.File.Move(destFilenameTMP, destFilename) 'Datei umbenennen 'Dim STATUS As New TELOTEC_Worker.cTC_Status 'STATUS.dySt_BezugsNr = dySt_BezugsNr 'STATUS.dySt_artMitteilung = "VERAG_SND" 'STATUS.dySt_dyArt = "" '"NCTS" 'T1/T2 'STATUS.dySt_status = TELOTEC_Worker.cDY_Statusliste.S_03 ''STATUS.dySt_ergCode = "ANR" 'STATUS.dySt_ergCode = "SND" 'STATUS.dySt_ergMitteilung = "An Dakosy gesendet" 'STATUS.dySt_ergZeitpunkt = Now 'STATUS.dySt_dyId = dy_Id 'STATUS.SAVE() Return True Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) Return False End Try End Function 'Shared Function send_Data_To_Dakosy_FTP_file(file, FRIMA_DY, Optional misc = False) ' Try ' If Not IO.File.Exists(file) Then Return False ' Dim F As New System.IO.FileInfo(file) ' Dim DY_server = "" ' Dim DY_name = "" ' Dim DY_pwd = "" ' Dim DY_port = "" ' Dim DY_PFAD_IN = "" ' Dim DY_PFAD_IN_KD = "" ' If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "" Then VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERAG" ' If FRIMA_DY = "" Then FRIMA_DY = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA ' getSFTPLoginData(DY_server, DY_name, DY_pwd, DY_port, DY_PFAD_IN, "", DY_PFAD_IN_KD, FRIMA_DY) ' Dim ConnectionInfo As New ConnectionInfo(DY_server, DY_port, DY_name, New PasswordAuthenticationMethod(DY_name, DY_pwd)) ' Using client = New SftpClient(ConnectionInfo) ' client.Connect() ' 'client.Create(file, file) ' If misc Then ' client.ChangeDirectory(DY_PFAD_IN_KD) 'DY_PFAD_IN.Replace("gebox", "misc")) ' Else ' client.ChangeDirectory(DY_PFAD_IN) ' End If ' If IO.File.Exists(file) Then ' 'MsgBox(file) ' Using uplfileStream = System.IO.File.OpenRead(file) ' client.UploadFile(uplfileStream, "." & F.Name, True) ' client.RenameFile("." & F.Name, F.Name) ' End Using ' client.Disconnect() ' Else ' MsgBox("Sendedatei nicht gefunden!") ' End If ' End Using ' Return True ' Catch ex As Exception ' MsgBox(ex.Message & ex.StackTrace) ' Return False ' End Try 'End Function Shared Function getKDData() As DataTable Dim sqlstr = "SELECT TOP 999 * " sqlstr &= " ,(SELECT TOP 1 [Länderverzeichnis für die Außenhandelsstatistik].LandKz AS LandKzISO2 FROM [Länderverzeichnis für die Außenhandelsstatistik] LEFT JOIN Währungstabelle ON [Länderverzeichnis für die Außenhandelsstatistik].LandNr = Währungstabelle.Währungsschlüssel" sqlstr &= " WHERE Währungstabelle.LandKz=[Adressen].LandKz) as LandKzISO2" sqlstr &= " FROM [Kunden] inner join Adressen on AdressenNr=KundenNr" sqlstr &= " where DakosyExport Is null And EORITIN Is Not null" 'sqlstr &= " and KundenNrZentrale=KundenNr " sqlstr &= " and Auswahl='A' " sqlstr &= " order by Kunden.[Geändert am] desc" ' MsgBox(sqlstr) Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Return SQL.loadDgvBySql(sqlstr, "FMZOLL") End Function Shared Function getKDDataByKdNr(KdNR As Integer) As DataTable Dim sqlstr = "SELECT TOP 1 * " sqlstr &= " ,(SELECT TOP 1 [Länderverzeichnis für die Außenhandelsstatistik].LandKz AS LandKzISO2 FROM [Länderverzeichnis für die Außenhandelsstatistik] LEFT JOIN Währungstabelle ON [Länderverzeichnis für die Außenhandelsstatistik].LandNr = Währungstabelle.Währungsschlüssel" sqlstr &= " WHERE Währungstabelle.LandKz=[Adressen].LandKz) as LandKzISO2" sqlstr &= " FROM [Kunden] inner join Adressen on AdressenNr=KundenNr" sqlstr &= " where " '/*DakosyExport Is null And EORITIN Is Not null */" sqlstr &= " KundenNr='" & KdNR & "' " sqlstr &= " order by Kunden.[Geändert am] desc" ' MsgBox(sqlstr) Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Return SQL.loadDgvBySql(sqlstr, "FMZOLL") End Function Shared Function updateKdDakosyExportDate(KdNR As Integer) As Boolean Dim sqlstr = "update [Kunden] SET [DakosyExport]=getDate() WHERE KundenNr='" & KdNR & "' " Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Return SQL.doSQL(sqlstr, "FMZOLL") End Function 'Shared Function sendData(Optional defaultFolder As String = "") ', Optional Dakosy_Mandant As String = "VERG") ' Dim Dakosy_Mandant = "VERG" ' Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA ' Case "UNISPED" : Dakosy_Mandant = "UNAT" ' 'Case Else ' ' Dakosy_Mandant = "VERG" ' End Select ' Dim dt = TELOTEC_Worker.cTC_Functions.getKDData ' If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then ' Dim saveFile = "" ' If TELOTEC_Worker.cTC_Functions.generateVERAGKdData(dt, getDefaultFolder_SEND, saveFile, Dakosy_Mandant) Then ' If cTC_Functions.send_Data_To_Dakosy_FTP_file(saveFile, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA, True) Then ' For Each ROW As DataRow In dt.Rows ' updateKdDakosyExportDate(ROW("KundenNr")) ' Next ' Return True ' End If ' End If ' End If ' Return False 'End Function 'Shared Function sendDataByKdNr(KdNr As Integer, Optional defaultFolder As String = "") ', Optional Dakosy_Mandant As String = "VERG") ' Dim Dakosy_Mandant = "VERG" ' Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA ' Case "UNISPED" : Dakosy_Mandant = "UNAT" ' 'Case Else ' ' Dakosy_Mandant = "VERG" ' End Select ' 'If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX" Then ' ' MsgBox("Übertrag derzeit nicht möglich!") ' ' Return False ' 'End If ' Dim dt = TELOTEC_Worker.cTC_Functions.getKDDataByKdNr(KdNr) ' If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then ' Dim saveFile = "" ' If TELOTEC_Worker.cTC_Functions.generateVERAGKdData(dt, getDefaultFolder_SEND, saveFile, Dakosy_Mandant) Then ' If cTC_Functions.send_Data_To_Dakosy_FTP_file(saveFile, VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA, True) Then ' updateKdDakosyExportDate(KdNr) ' Return True ' End If ' End If ' End If ' Return False 'End Function Shared Function getDefaultFolder_SEND() As String Try getDefaultFolder_SEND = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getRootDir(False) & "TELOTEC\" & If(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TESTSYSTEM", "ECHTSYSTEM") & "\Ausgang_Kundendaten\" & Now.Year & "\" & Now.ToString("yyyyMMdd") & "\" ' Path.GetTempPath If Not IO.Directory.Exists(getDefaultFolder_SEND) Then IO.Directory.CreateDirectory(getDefaultFolder_SEND) End If Catch ex As Exception Try getDefaultFolder_SEND = "C:\TEMP\" ' Path.GetTempPath If Not IO.Directory.Exists(getDefaultFolder_SEND) Then IO.Directory.CreateDirectory(getDefaultFolder_SEND) End If Catch ex2 As Exception MsgBox(ex2.Message & ex2.StackTrace) getDefaultFolder_SEND = "" End Try End Try End Function 'Shared Function generateVERAGKdData(dt As DataTable, path As String, ByRef saveFile As String, Optional Dakosy_Mandant As String = "VERG") As Boolean ' Return generateVERAGKdData_V2(dt, path, saveFile, Dakosy_Mandant) ' 'Alle mit V2 ' '--------------------- ' If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX" Then Return generateVERAGKdData_V2(dt, path, saveFile, Dakosy_Mandant) ' Select Case Dakosy_Mandant ' Case "UNAT" : Return generateVERAGKdData_V2(dt, path, saveFile, Dakosy_Mandant) ' Case Else : Return generateVERAGKdData_V1(dt, path, saveFile, Dakosy_Mandant) ' End Select 'End Function 'Shared Function generateVERAGKdData_V1(dt As DataTable, path As String, ByRef saveFile As String, Optional Dakosy_Mandant As String = "VERG") As Boolean ' Try ' Dim Interface_VERSION = "003" ' Dim XML As New TELOTEC_Worker.VERAG_KundenStamm_Export.VERAG_Kundenstamm_IMPORT ' For Each ROW As DataRow In dt.Rows ' Dim KD As New TELOTEC_Worker.VERAG_KundenStamm_Export.VERAG_Kundenstamm_IMPORTKundenDaten ' KD.Dakosy_Mandant = Dakosy_Mandant ' KD.KundenNr = ROW("KundenNr") ' KD.EORI = ROW("EORITIN") ' If ROW("EORITIN_NL") Is DBNull.Value OrElse If(ROW("EORITIN_NL"), "") = "" Then ' KD.EORI_Niederlassung = "0000" ' Else ' KD.EORI_Niederlassung = ROW("EORITIN_NL") ' End If ' If ROW("Ordnungsbegriff") IsNot DBNull.Value Then KD.Kurzname = ROW("Ordnungsbegriff") ' If ROW("Name 1") IsNot DBNull.Value Then KD.Name1 = ROW("Name 1") ' If ROW("Name 2") IsNot DBNull.Value Then KD.Name2 = ROW("Name 2") ' If ROW("UstIdKz") IsNot DBNull.Value And ("UstIdNr") IsNot DBNull.Value Then KD.UID_Nr = ROW("UstIdKz") & ROW("UstIdNr") ' KD.Adresse = New TELOTEC_Worker.VERAG_KundenStamm_Export.VERAG_Kundenstamm_IMPORTKundenDatenAdresse ' If ROW("Straße") IsNot DBNull.Value Then KD.Adresse.Strasse = ROW("Straße") ' If ROW("PLZ") IsNot DBNull.Value Then KD.Adresse.Plz = ROW("PLZ") ' If ROW("Ort") IsNot DBNull.Value Then KD.Adresse.Ort = ROW("Ort") ' If ROW("LandKz") IsNot DBNull.Value Then KD.Adresse.LandKz = ROW("LandKzISO2") ' KD.Kontakt = New TELOTEC_Worker.VERAG_KundenStamm_Export.VERAG_Kundenstamm_IMPORTKundenDatenKontakt ' If ROW("E-Mail") IsNot DBNull.Value Then KD.Kontakt.EMail = ROW("E-Mail") ' If ROW("Telefon") IsNot DBNull.Value Then KD.Kontakt.Tel = ROW("Telefon") ' If ROW("Telefax") IsNot DBNull.Value Then KD.Kontakt.Fax = ROW("Telefax") ' If ROW("Ansprechpartner") IsNot DBNull.Value Then KD.Kontakt.Ansprechpartner = If(ROW("Anrede") IsNot DBNull.Value, ROW("Anrede") & " ", "") & ROW("Ansprechpartner") ' Dim KD_AKTO = VERAG_PROG_ALLGEMEIN.cKundenAufschubkonten.LOAD_ListAufschubKTOByKdNr(KD.KundenNr) ' If KD_AKTO IsNot Nothing Then ' Dim AKTOLIST = New List(Of VERAG_KundenStamm_Export.VERAG_Kundenstamm_IMPORTKundenDatenAufschub) ' For Each KTO In KD_AKTO ' If If(KTO.kdAkto_bin, "").ToString.Trim <> String.Empty And ' If(KTO.kdAkto_eori, "").ToString.Trim <> String.Empty And ' If(KTO.kdAkto_hauptzollamt, "").ToString.Trim <> String.Empty And ' If(KTO.kdAkto_kontonummer, "").ToString.Trim <> String.Empty Then ' Dim AUFSCH As New TELOTEC_Worker.VERAG_KundenStamm_Export.VERAG_Kundenstamm_IMPORTKundenDatenAufschub ' Select Case KTO.kdAkto_art ' Case "10" : AUFSCH.Art = VERAG_KundenStamm_Export.VERAG_Kundenstamm_IMPORTKundenDatenAufschubArt.Item10 ' Case "15" : AUFSCH.Art = VERAG_KundenStamm_Export.VERAG_Kundenstamm_IMPORTKundenDatenAufschubArt.Item15 ' Case "20" : AUFSCH.Art = VERAG_KundenStamm_Export.VERAG_Kundenstamm_IMPORTKundenDatenAufschubArt.Item20 ' End Select ' AUFSCH.BIN = KTO.kdAkto_bin ' AUFSCH.EORI = KTO.kdAkto_eori ' If KTO.kdAkto_eoriNL IsNot Nothing Then AUFSCH.EORI_Niederlassung = KTO.kdAkto_eoriNL Else AUFSCH.EORI_Niederlassung = "0000" ' AUFSCH.Hauptzollamt = KTO.kdAkto_hauptzollamt ' AUFSCH.KontoNr = KTO.kdAkto_kontonummer ' AKTOLIST.Add(AUFSCH) ' If AKTOLIST.Count = 2 Then Exit For 'max. 2 Aufschub ' End If ' Next ' If AKTOLIST.Count > 0 Then KD.Aufschubkonten = AKTOLIST ' End If ' XML.KundenDaten.Add(KD) ' Next ' Dim saveDir = path ' If Not IO.Directory.Exists(saveDir) Then ' IO.Directory.CreateDirectory(saveDir) ' End If ' Dim counter = 1 ' While IO.File.Exists(saveDir & "VERAG_KD_" & counter.ToString("D4") & ".xml") ' counter += 1 ' End While ' saveFile = saveDir & "VERAG_KD_" & counter.ToString("D4") & ".xml" ' XML.SaveToFile(saveFile) ' Return True ' Catch ex As Exception ' MsgBox(ex.Message & ex.StackTrace) ' Return False ' End Try 'End Function 'Shared Function generateVERAGKdData_V2(dt As DataTable, path As String, ByRef saveFile As String, Optional Dakosy_Mandant As String = "VERG") As Boolean ' Try ' 'Dim Interface_VERSION = "003" ' Dim XML As New TELOTEC_Worker.VERAG_KundenStamm_Export_V2.VERAG_Kundenstamm_IMPORT ' Dim TRANS As New TELOTEC_Worker.VERAG_KundenStamm_Export_V2.VERAG_Kundenstamm_IMPORTTransaktion ' TRANS.Version = "002" ' TRANS.IOPartner = Dakosy_Mandant ' Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA ' Case "IMEX" : TRANS.IODivision1 = "IMEX" ' Case "UNISPED" : TRANS.IODivision1 = "UNAT" : TRANS.IOPartner = "UNAT" ' Case "ATILLA" : TRANS.IODivision1 = "ATIL" ' Case Else ' TRANS.IODivision1 = "VERG" ' End Select ' XML.Transaktion = TRANS ' For Each ROW As DataRow In dt.Rows ' Dim KD As New TELOTEC_Worker.VERAG_KundenStamm_Export_V2.VERAG_Kundenstamm_IMPORTKundenDaten ' KD.Dakosy_Mandant = Dakosy_Mandant ' KD.KundenNr = ROW("KundenNr") ' KD.EORI = ROW("EORITIN") ' If ROW("EORITIN_NL") Is DBNull.Value OrElse If(ROW("EORITIN_NL"), "") = "" Then ' KD.EORI_Niederlassung = "0000" ' Else ' KD.EORI_Niederlassung = ROW("EORITIN_NL") ' End If ' If ROW("Ordnungsbegriff") IsNot DBNull.Value Then KD.Kurzname = ROW("Ordnungsbegriff") ' If ROW("Name 1") IsNot DBNull.Value Then KD.Name1 = ROW("Name 1") ' If ROW("Name 2") IsNot DBNull.Value Then KD.Name2 = ROW("Name 2") ' If ROW("UstIdKz") IsNot DBNull.Value And ("UstIdNr") IsNot DBNull.Value Then KD.UID_Nr = ROW("UstIdKz") & ROW("UstIdNr") ' KD.Adresse = New TELOTEC_Worker.VERAG_KundenStamm_Export_V2.VERAG_Kundenstamm_IMPORTKundenDatenAdresse ' If ROW("Straße") IsNot DBNull.Value Then KD.Adresse.Strasse = ROW("Straße") ' If ROW("PLZ") IsNot DBNull.Value Then KD.Adresse.Plz = ROW("PLZ") ' If ROW("Ort") IsNot DBNull.Value Then KD.Adresse.Ort = ROW("Ort") ' If ROW("LandKz") IsNot DBNull.Value Then KD.Adresse.LandKz = ROW("LandKzISO2") ' KD.Kontakt = New TELOTEC_Worker.VERAG_KundenStamm_Export_V2.VERAG_Kundenstamm_IMPORTKundenDatenKontakt ' If ROW("E-Mail") IsNot DBNull.Value Then KD.Kontakt.EMail = ROW("E-Mail") ' If ROW("Telefon") IsNot DBNull.Value Then KD.Kontakt.Tel = ROW("Telefon") ' If ROW("Telefax") IsNot DBNull.Value Then KD.Kontakt.Fax = ROW("Telefax") ' If ROW("Ansprechpartner") IsNot DBNull.Value Then KD.Kontakt.Ansprechpartner = If(ROW("Anrede") IsNot DBNull.Value, ROW("Anrede") & " ", "") & ROW("Ansprechpartner") ' Dim KD_AKTO = VERAG_PROG_ALLGEMEIN.cKundenAufschubkonten.LOAD_ListAufschubKTOByKdNr(KD.KundenNr) ' If KD_AKTO IsNot Nothing Then ' Dim AKTOLIST = New List(Of VERAG_KundenStamm_Export_V2.VERAG_Kundenstamm_IMPORTKundenDatenAufschub) ' For Each KTO In KD_AKTO ' If If(KTO.kdAkto_bin, "").ToString.Trim <> String.Empty And ' If(KTO.kdAkto_eori, "").ToString.Trim <> String.Empty And ' If(KTO.kdAkto_hauptzollamt, "").ToString.Trim <> String.Empty And ' If(KTO.kdAkto_kontonummer, "").ToString.Trim <> String.Empty Then ' Dim AUFSCH As New TELOTEC_Worker.VERAG_KundenStamm_Export_V2.VERAG_Kundenstamm_IMPORTKundenDatenAufschub ' Select Case KTO.kdAkto_art ' Case "10" : AUFSCH.Art = VERAG_KundenStamm_Export_V2.VERAG_Kundenstamm_IMPORTKundenDatenAufschubArt.Item10 ' Case "15" : AUFSCH.Art = VERAG_KundenStamm_Export_V2.VERAG_Kundenstamm_IMPORTKundenDatenAufschubArt.Item15 ' Case "20" : AUFSCH.Art = VERAG_KundenStamm_Export_V2.VERAG_Kundenstamm_IMPORTKundenDatenAufschubArt.Item20 ' End Select ' AUFSCH.BIN = KTO.kdAkto_bin ' AUFSCH.EORI = KTO.kdAkto_eori ' If KTO.kdAkto_eoriNL IsNot Nothing Then AUFSCH.EORI_Niederlassung = KTO.kdAkto_eoriNL Else AUFSCH.EORI_Niederlassung = "0000" ' AUFSCH.Hauptzollamt = KTO.kdAkto_hauptzollamt ' AUFSCH.KontoNr = KTO.kdAkto_kontonummer ' AKTOLIST.Add(AUFSCH) ' If AKTOLIST.Count = 2 Then Exit For 'max. 2 Aufschub ' End If ' Next ' If AKTOLIST.Count > 0 Then KD.Aufschubkonten = AKTOLIST ' End If ' XML.KundenDaten.Add(KD) ' Next ' Dim saveDir = path ' If Not IO.Directory.Exists(saveDir) Then ' IO.Directory.CreateDirectory(saveDir) ' End If ' Dim counter = 1 ' While IO.File.Exists(saveDir & "VERAG_KD_" & counter.ToString("D4") & ".xml") ' counter += 1 ' End While ' saveFile = saveDir & "VERAG_KD_" & counter.ToString("D4") & ".xml" ' XML.SaveToFile(saveFile) ' Return True ' Catch ex As Exception ' MsgBox(ex.Message & ex.StackTrace) ' Return False ' End Try 'End Function End Class