Files
ADMIN/TELOTEK_Worker_lib/cTC_Functions.vb
2022-07-08 08:12:07 +02:00

426 lines
20 KiB
VB.net

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 = TELOTEC_Worker.cTC_Paramter.GET_PARAM_ByName("TELOTEC_PFAD_SEND", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM)
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