Imports Renci.SshNet Imports System.IO Imports System.Windows.Forms Public Class cDakosyFunftions Public Shared Function getFirma_DY(FilialenNr As String, F_ME As Form) As String Dim FIRMA_DY = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA If (VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("AVISO_IMEX", "AVISO") Or VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERIMEX") And FilialenNr = 5501 Then FIRMA_DY = "IMEX" ElseIf FilialenNr = 5701 Then If VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_firma = "AMBAR" Then FIRMA_DY = "AMBAR" Else FIRMA_DY = VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.getFirma ' Akt von AMBAR aber kein AMBAR-MA -> Dakosy unter VERAG! End If ElseIf FilialenNr = 5601 Then FIRMA_DY = "UNISPED" ElseIf FilialenNr = 4801 Or FilialenNr = 4802 Then FIRMA_DY = "ATILLA" Else If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "FRONTOFFICE" Then 'If DY Is Nothing Then Dim f As New frmDakosy_SelFirma If f.ShowDialog() = DialogResult.OK Then FIRMA_DY = f.FIMRA_DY Else If F_ME IsNot Nothing Then F_ME.Close() End If 'End If Else FIRMA_DY = VERAG_PROG_ALLGEMEIN.cAllgemein.getFirmaFromFiliale2(FilialenNr) End If End If Return FIRMA_DY End Function Public Shared Sub replaceNullDateXML(XMLFile As String) Try If Not System.IO.File.Exists(XMLFile) Then Exit Sub Dim lines() As String = System.IO.File.ReadAllLines(XMLFile) Using writer = New System.IO.StreamWriter(XMLFile, False) For Each line In lines If Not line.Contains("0001-01-01") Then writer.WriteLine(line) Next End Using Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) End Try End Sub Shared Function getDivision(FIRMA_DY, Optional fiskal = False) As String If If(FIRMA_DY, "") = "" Then FIRMA_DY = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Return "SUB" Else Select Case FIRMA_DY Case "ATILLA" Return "SUW" Case "AMBAR" Return "AMBWO" Case "VERAG" If VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER IsNot Nothing Then Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_niederlassung Case "SUB" : Return "SUB" Case "SBG" : Return "SBG" Case "NKD" : Return "NKD" Case "NEU" : Return "NEU" Case "WAI" : Return "WAI" Case Else : Return "SUB" End Select Else Return "SUB" End If Case "UNISPED" Return ""'"ATSP" Case "IMEX" If fiskal Then Return "GLO" Else Return "IME" End If Case Else : Return "SUB" End Select End If End Function Shared Function getIOPartner(FIRMA_DY) As String If If(FIRMA_DY, "") = "" Then FIRMA_DY = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Return "VERA" Else Select Case FIRMA_DY Case "ATILLA" Return "VERG" Case "VERAG" Return "VERG" Case "DURMAZ" Return "DUR" Case "IMEX" Return "IMEX" Case "UNISPED" Return "UNAT" Case "AMBAR" Return "VRAS" 'warum auch immer.. irgendwie wg der eigenen EORI von AMBAR.. Case Else : Return "VERG" End Select End If End Function Shared Function send_Data_To_Dakosy_FTP(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 System.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 = "" 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) client.ChangeDirectory(DY_PFAD_IN) If System.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 Dim STATUS As New DAKOSY_Worker.cDakosy_Statusmeldungen STATUS.dySt_BezugsNr = dySt_BezugsNr STATUS.dySt_artMitteilung = "VERAG_SND" STATUS.dySt_dyArt = "" '"NCTS" 'T1/T2 STATUS.dySt_status = DAKOSY_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 VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Return False End Try End Function Shared Function send_Data_To_Dakosy_FTP_file(file, FRIMA_DY, Optional misc = False) Try If Not System.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 System.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 VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Return False End Try End Function Shared Sub getSFTPLoginData(ByRef DY_server, ByRef DY_name, ByRef DY_pwd, ByRef DY_port, ByRef DY_PFAD_IN, ByRef DY_PFAD_OUT, ByRef DY_PFAD_IN_KD, FIRMA_DY) If False Then 'VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then DY_server = cDY_Paramter.GET_PARAM_ByName("FTP_TEST_SERVER", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) DY_name = cDY_Paramter.GET_PARAM_ByName("FTP_TEST_NAME", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) DY_pwd = cDY_Paramter.GET_PARAM_ByName("FTP_TEST_PASSWORD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) DY_port = cDY_Paramter.GET_PARAM_ByName("FTP_TEST_PORT", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) DY_PFAD_IN = cDY_Paramter.GET_PARAM_ByName("DY_PFAD_IN", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) DY_PFAD_OUT = cDY_Paramter.GET_PARAM_ByName("DY_PFAD_OUT", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) If DY_PFAD_IN = "" Then DY_PFAD_IN = "in/test/gebox/" If DY_PFAD_OUT = "" Then DY_PFAD_OUT = "out/test/" DY_PFAD_IN_KD = cDY_Paramter.GET_PARAM_ByName("DY_PFAD_IN_KD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) Else DY_server = cDY_Paramter.GET_PARAM_ByName("FTP_PROD_SERVER", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) DY_name = cDY_Paramter.GET_PARAM_ByName("FTP_PROD_NAME", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) DY_pwd = cDY_Paramter.GET_PARAM_ByName("FTP_PROD_PASSWORD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) DY_port = cDY_Paramter.GET_PARAM_ByName("FTP_PROD_PORT", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) DY_PFAD_IN = cDY_Paramter.GET_PARAM_ByName("DY_PFAD_IN", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) DY_PFAD_OUT = cDY_Paramter.GET_PARAM_ByName("DY_PFAD_OUT", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) If DY_PFAD_IN = "" Then DY_PFAD_IN = "in/prod/gebox/" If DY_PFAD_OUT = "" Then DY_PFAD_OUT = "out/prod/" DY_PFAD_IN_KD = cDY_Paramter.GET_PARAM_ByName("DY_PFAD_IN_KD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, FIRMA_DY) End If End Sub 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 = DAKOSY_Worker.cDakosyFunftions.getKDData If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then Dim saveFile = "" If DAKOSY_Worker.cDakosyFunftions.generateVERAGKdData(dt, getDefaultFolder_SEND, saveFile, Dakosy_Mandant) Then If cDakosyFunftions.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 = DAKOSY_Worker.cDakosyFunftions.getKDDataByKdNr(KdNr) If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then Dim saveFile = "" If DAKOSY_Worker.cDakosyFunftions.generateVERAGKdData(dt, getDefaultFolder_SEND, saveFile, Dakosy_Mandant) Then If cDakosyFunftions.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) & "DAKOSY\" & If(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "TESTSYSTEM", "ECHTSYSTEM") & "\Ausgang_Kundendaten\" & Now.Year & "\" & Now.ToString("yyyyMMdd") & "\" ' Path.GetTempPath If Not System.IO.Directory.Exists(getDefaultFolder_SEND) Then System.IO.Directory.CreateDirectory(getDefaultFolder_SEND) End If Catch ex As Exception Try getDefaultFolder_SEND = "C:\TEMP\" ' Path.GetTempPath If Not System.IO.Directory.Exists(getDefaultFolder_SEND) Then System.IO.Directory.CreateDirectory(getDefaultFolder_SEND) End If Catch ex2 As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) 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 DAKOSY_Worker.VERAG_KundenStamm_Export.VERAG_Kundenstamm_IMPORT For Each ROW As DataRow In dt.Rows Dim KD As New DAKOSY_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 DAKOSY_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 DAKOSY_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 DAKOSY_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 System.IO.Directory.Exists(saveDir) Then System.IO.Directory.CreateDirectory(saveDir) End If Dim counter = 1 While System.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 VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) 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 DAKOSY_Worker.VERAG_KundenStamm_Export_V2.VERAG_Kundenstamm_IMPORT Dim TRANS As New DAKOSY_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 DAKOSY_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 DAKOSY_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 DAKOSY_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 DAKOSY_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 System.IO.Directory.Exists(saveDir) Then System.IO.Directory.CreateDirectory(saveDir) End If Dim counter = 1 While System.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 VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Return False End Try End Function End Class