From 09c666e239ad3f33ad01fdad45508d63b656a362 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 17 Sep 2026 16:45:02 +0200 Subject: [PATCH] Syska (MDM-Import), uta, etc. --- SDL/USTV/usrCntlUSTV.vb | 10 +- VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb | 42 +++++ .../Schnittstellen/cSyska_Interface.vb | 167 ++++++++++++++---- 3 files changed, 180 insertions(+), 39 deletions(-) diff --git a/SDL/USTV/usrCntlUSTV.vb b/SDL/USTV/usrCntlUSTV.vb index 352e177b..8c8f7024 100644 --- a/SDL/USTV/usrCntlUSTV.vb +++ b/SDL/USTV/usrCntlUSTV.vb @@ -394,7 +394,7 @@ Public Class usrCntlUSTV If Not col.ColumnName.Contains(colName) Then col.ColumnName = col.ColumnName.Replace("UStVAn_", "") Next - cProgramFunctions.genExcelFromDT_NEW(dtNew, {"K1:K" & (dtNew.Rows.Count + 1), "O1:T" & (dtNew.Rows.Count + 1)},,,,, True) + cProgramFunctions.genExcelFromDT_NEW(dtNew, {"K1:K" & (dtNew.Rows.Count + 1), "O1:T" & (dtNew.Rows.Count + 1)},,,, "", True) End If @@ -1203,7 +1203,7 @@ Public Class usrCntlUSTV If dtVorschau.Columns.Contains("LandNr") Then dtVorschau.Columns.Remove("LandNr") - cProgramFunctions.genExcelFromDT_NEW(dtVorschau, {"G1:G" & (dtVorschau.Rows.Count + 1)},,,,, True) + cProgramFunctions.genExcelFromDT_NEW(dtVorschau, {"G1:G" & (dtVorschau.Rows.Count + 1)},,,, "", True) @@ -1320,7 +1320,7 @@ Public Class usrCntlUSTV If dtVorschau.Columns.Contains("E-Mail") Then dtVorschau.Columns.Remove("E-Mail") If dtVorschau.Columns.Contains("E-Mail2") Then dtVorschau.Columns.Remove("E-Mail2") - cProgramFunctions.genExcelFromDT_NEW(dtVorschau,,,,,, True) + cProgramFunctions.genExcelFromDT_NEW(dtVorschau,,,,, "", True) ElseIf item.Name = "mail" Then @@ -1482,7 +1482,7 @@ Public Class usrCntlUSTV If item.Name = "excel" Then - cProgramFunctions.genExcelFromDT_NEW(dtVorschau_3470, {"F1:F" & (dtVorschau_3470.Rows.Count + 1)}, False,,,, True) + cProgramFunctions.genExcelFromDT_NEW(dtVorschau_3470, {"F1:F" & (dtVorschau_3470.Rows.Count + 1)}, False,,, "", True) ElseIf item.Name = "mail" Then @@ -1750,7 +1750,7 @@ Public Class usrCntlUSTV End If - cProgramFunctions.genExcelFromDT_NEW(dtVorauszahlung,,,,,, True) + cProgramFunctions.genExcelFromDT_NEW(dtVorauszahlung,,,,, "", True) End Sub diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb b/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb index e1318c1c..5e4e55e2 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb @@ -953,6 +953,16 @@ Public Class cUTA Sub New() End Sub + Sub New(RechnungsNr, KundenNr, Datum, DocumentTyp) + Me.RechnungsNr = RechnungsNr + Me.KundenNr = KundenNr + Me.Datum = Datum + Me.DocumentTyp = DocumentTyp + LOAD(RechnungsNr, KundenNr, Datum, DocumentTyp) + + End Sub + + Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Id", Id,, True)) @@ -978,6 +988,38 @@ Public Class cUTA Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list) End Function + Public Sub LOAD(RechnungsNr As String, KundenNr As Integer, Datum As Date, DocumentTyp As String) + Try + hasEntry = False + Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() + Using cmd As New SqlCommand("Select * FROM tblUTADocuments WHERE Datum=@Datum AND KundenNr = @KundenNr AND RechnungsNr=@RechnungsNr AND DocumentTyp = @DocumentTyp ", conn) + cmd.Parameters.AddWithValue("@Datum", Datum) + cmd.Parameters.AddWithValue("@KundenNr", KundenNr) + cmd.Parameters.AddWithValue("@RechnungsNr", RechnungsNr) + cmd.Parameters.AddWithValue("@DocumentTyp", DocumentTyp) + + Dim dr = cmd.ExecuteReader() + If dr.Read Then + For Each li In getParameterList() + Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable) + + If dr.Item(li.Text) Is DBNull.Value Then + propInfo.SetValue(Me, Nothing) + Else + propInfo.SetValue(Me, dr.Item(li.Text)) + End If + + Next + hasEntry = True + End If + dr.Close() + End Using + End Using + Catch ex As Exception + VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) + End Try + End Sub + Public Sub LOAD() Try hasEntry = False diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb index ff4b6184..8161d527 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb @@ -6,15 +6,44 @@ Public Class cSyska_Interface 'STAMMDATEN Shared Function getStammdaten(FiBuSchnittstelleNr) As DataTable - Dim sqlStr = " Select KundenNrZentrale As [Konto-Nr],isnull([Name 1],'') as Name,isnull([Name 2],'') as [Name2],(isnull(UstIdKz,'') + isnull(UstIdNr,'')) as [UST-Id-Nummer],isnull(UstIdGeprüft,'') as [UID-Datum],[Strasse],Adressen.landkz ,PLZ,LTRIM([Ort]) as Ort,isnull(BLZ,'') as [BLZ],isnull(KTO,'') as [KTO], CASE WHEN CAST(Zahlungsziel as VARCHAR(3)) ='0' THEN '' ELSE CAST(Zahlungsziel as VARCHAR(3)) END as [ZZiel],/*'' as [SPz],'' as [STg],*/isnull([E-Mail],'') as [mail],'' AS Info1,'' AS Inf2, Zahlungsziel2, Zahlungsziel3,[E-Mail],[Telefon] ,Telefax " - sqlStr &= " ,Ordnungsbegriff ,Kunden.Währungscode,Anrede,Ansprechpartner,Lastschrift,Kunden.[Eingegeben am] as EingegebenAm" - sqlStr &= " FROM Adressen INNER JOIN Kunden ON Kundennr=AdressenNr " - sqlStr &= " LEFT JOIN tblKundenErweitert ON KundenNr=kde_KundenNr " - sqlStr &= " LEFT JOIN [Länderverzeichnis für die Außenhandelsstatistik] as St ON St.LandKz=Adressen.LandKz " - sqlStr &= " LEFT JOIN Währungstabelle ON St.LandNr = Währungstabelle.Währungsschlüssel " - sqlStr &= " WHERE FiBuSchnittstelle=1 AND Auswahl='A' AND FiBuSchnittstelleNr='" & FiBuSchnittstelleNr & "' " - sqlStr &= " Order by [Konto-Nr] " - Return SQL.loadDgvBySql(sqlStr, "FMZOLL") + + Dim SQLString = "Select Top(100) + KundenNrZentrale As [Konto-Nr], + isnull([Name 1],'') as Name, + isnull([Name 2],'') as [Name2], + (isnull(UstIdKz,'') + isnull(UstIdNr,'')) as [UST-Id-Nummer], + isnull(UstIdGeprüft,'') as [UID-Datum], + [Strasse], + Adressen.landkz , + PLZ,LTRIM([Ort]) as Ort, + isnull(BLZ,'') as [BLZ], + isnull(KTO,'') as [KTO], + CASE WHEN CAST(Zahlungsziel as VARCHAR(3)) ='0' THEN '' ELSE CAST(Zahlungsziel as VARCHAR(3)) END as [ZZiel], + isnull([E-Mail],'') as [mail], + '' AS Info1, + '' AS Inf2, + Zahlungsziel2, + Zahlungsziel3, + [E-Mail], + [Telefon] , + Telefax,Ordnungsbegriff, + Kunden.Währungscode, + Anrede, + Ansprechpartner, + Lastschrift, + Kunden.[Eingegeben am] as EingegebenAm, + isnull(tblKundenErweitert.kde_BezFIBU,'') as [Kürzel], + 2811 as [präf. Bank], + isnull(tblKundenErweitert.kde_Fakturierung_Sprache,'') as Sprache, + isnull(Adressen.Steuernummer,'')as [SteuerNr], + isnull(tblKundenErweitert.kde_betreuer,'') as Betreuer + FROM Adressen INNER JOIN Kunden ON Kundennr=AdressenNr + Left Join tblKundenErweitert ON KundenNr=kde_KundenNr + Left Join [Länderverzeichnis für die Außenhandelsstatistik] as St ON St.LandKz=Adressen.LandKz + Left Join Währungstabelle ON St.LandNr = Währungstabelle.Währungsschlüssel + WHERE FiBuSchnittstelle = 0 And Auswahl ='A' AND FiBuSchnittstelleNr='" & FiBuSchnittstelleNr & "' and KundenNr = 203152 Order by [Konto-Nr]" + + Return SQL.loadDgvBySql(SQLString, "FMZOLL") End Function ' Shared Function getStammdatenTEST(FiBuSchnittstelleNr) As DataTable @@ -80,9 +109,6 @@ Public Class cSyska_Interface Dim cleanStringName As String = Regex.Replace(row("Name"), "[^A-Za-z0-9\-/]", "").Replace(" ", "").ToUpper Dim Lastschrift = CBool(row("Lastschrift")) - 'If FormatStringSYS(row("Name2"), 50) <> "" Then - ' MsgBox(FormatStringSYS(row("Name2"), 50) & vbTab) - 'End If getPersonenKto = "" getPersonenKto &= row("Konto-Nr") & vbTab getPersonenKto &= FormatStringSYS(cleanStringName, 2) & row("Konto-Nr") & vbTab @@ -113,7 +139,73 @@ Public Class cSyska_Interface getPersonenKto &= FormatStringSYS(row("Telefax")) & vbTab getPersonenKto &= FormatStringSYS(row("E-Mail")) & vbTab getPersonenKto &= vbTab - ' getPersonenKto &= vbTab + + End Function + + + Public Shared Function getPersonenKto_MDM(row As DataRow) As String + + Dim LandKz = row("LandKz") + Dim Gegenkontonummer = "" + Dim Gegenkontonummer2 = "" + If LandKz Is DBNull.Value Or LandKz.trim = "" Or LandKz = "A" Then + Gegenkontonummer = "4000" ' Erl. 20% + Gegenkontonummer2 = "4000" ' Erl. 20% + Else + If CBool(SQL.DLookup("[MitgliedslandEU]", "[Währungstabelle]", "[LandKz]='" & LandKz & "'", "FMZOLL", False)) Then + Gegenkontonummer = "4020" ' Erl. 0% EU + Gegenkontonummer2 = "4020" ' Erl. 0% EU + Else + Gegenkontonummer = "4021" ' Erl. 0% 3.Land + Gegenkontonummer2 = "4021" ' Erl. 0% 3.Land + End If + End If + + Dim cleanStringName As String = Regex.Replace(row("Name"), "[^A-Za-z0-9\-/]", "").Replace(" ", "").ToUpper + + Dim SteuerNr As String = "" + + If Not IsDBNull(row("SteuerNr")) Then + SteuerNr = Regex.Replace(row("SteuerNr").ToString(), "[^0-9]", "") + End If + + Dim Lastschrift = CBool(row("Lastschrift")) + getPersonenKto_MDM = "" + getPersonenKto_MDM &= row("Konto-Nr") & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Kürzel"), 24) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Name"), 50) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Name2"), 50) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Strasse"), 50) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("PLZ"), 20) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Ort"), 50) & vbTab + getPersonenKto_MDM &= cProgramFunctions.getISO2Land(FormatStringSYS(LandKz, 5)) & vbTab + getPersonenKto_MDM &= CDate(row("EingegebenAm")).ToShortDateString & vbTab 'Eröffnungsdatum + 'getPersonenKto_MDM &= Gegenkontonummer & vbTab + getPersonenKto_MDM &= vbTab 'Bankname + getPersonenKto_MDM &= If(Lastschrift, row("BLZ"), "") & vbTab + getPersonenKto_MDM &= If(Lastschrift, row("KTO"), "") & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Name"), 50) & vbTab 'Inhaber + getPersonenKto_MDM &= "00" & vbTab 'Skontotage + getPersonenKto_MDM &= If(row("ZZiel") IsNot DBNull.Value AndAlso row("ZZiel") <> String.Empty, CDbl(row("ZZiel")).ToString("00"), "") & vbTab + getPersonenKto_MDM &= "00,00" & vbTab 'Skonto + getPersonenKto_MDM &= "01" & vbTab 'Mahnkennung + getPersonenKto_MDM &= FormatStringSYS(row("UST-Id-Nummer"), 50) & vbTab + 'getPersonenKto_MDM &= vbTab + getPersonenKto_MDM &= row("Währungscode") & vbTab + 'getPersonenKto_MDM &= vbTab 'Forderungsonto + 'getPersonenKto_MDM &= vbTab + 'getPersonenKto_MDM &= Gegenkontonummer2 & vbTab 'Platzhalter?? + getPersonenKto_MDM &= FormatStringSYS(row("Anrede") & " " & row("Ansprechpartner"), 100) & vbTab + 'getPersonenKto_MDM &= vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Telefon")) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Telefax")) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("E-Mail")) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("präf. Bank")) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Sprache")) & vbTab + getPersonenKto_MDM &= FormatStringSYS(SteuerNr) & vbTab + getPersonenKto_MDM &= FormatStringSYS(row("Betreuer")) & vbTab + + getPersonenKto_MDM &= vbTab End Function @@ -146,43 +238,50 @@ Public Class cSyska_Interface If True Then 'boolKunden Then '----------------- STAMMDATEN ----------------- Dim dt_Stamm As DataTable = getStammdaten(FiBuSchnittstelleNr) + Dim postfix As String = "" If dt_Stamm IsNot Nothing AndAlso dt_Stamm.Rows.Count > 0 Then - + If FiBuSchnittstelleNr = 19 Then postfix = "MDM_" Dim fileKD As System.IO.StreamWriter - Dim DateinameKD = "AVISO_DEBI_" & Now.ToString("ddMMyyyy_HHmm") & ".txt" + Dim DateinameKD = "AVISO_DEBI_" & postfix & Now.ToString("ddMMyyyy_HHmm") & ".txt" fileKD = My.Computer.FileSystem.OpenTextFileWriter(pathKD & DateinameKD, True, System.Text.Encoding.GetEncoding("iso-8859-15")) - 'fileKD.WriteLine(genStammdatenBeginn()) + 'fileKD.WriteLine(genStammdatenBeginn()) - initKDNr(dt_Stamm) + initKDNr(dt_Stamm) For Each r In dt_Stamm.Rows - fileKD.WriteLine(getPersonenKto(r)) + If FiBuSchnittstelleNr = 19 Then + fileKD.WriteLine(getPersonenKto_MDM(r)) + Else + fileKD.WriteLine(getPersonenKto(r)) + End If + + Next bool_DatenVorhanden = True - fileKD.Close() + fileKD.Close() + + 'In Archiv sichern + If pathArchivKD <> "" Then + If Not System.IO.Directory.Exists(pathArchivKD) Then System.IO.Directory.CreateDirectory(pathArchivKD) + If pathKD <> pathArchivKD Then System.IO.File.Copy(pathKD & DateinameKD, pathArchivKD & DateinameKD) + End If + + If bool_DatenVorhanden Then + If OpenFile Then Process.Start(pathKD & DateinameKD) + Else + System.IO.File.Delete(pathKD & DateinameKD) + End If + + 'NOCH NICHT!!! + updateFibu(FiBuSchnittstelleNr) ' UPDATE FiBuSchnittstelle --> 0 - 'In Archiv sichern - If pathArchivKD <> "" Then - If Not System.IO.Directory.Exists(pathArchivKD) Then System.IO.Directory.CreateDirectory(pathArchivKD) - If pathKD <> pathArchivKD Then System.IO.File.Copy(pathKD & DateinameKD, pathArchivKD & DateinameKD) End If - - If bool_DatenVorhanden Then - If OpenFile Then Process.Start(pathKD & DateinameKD) - Else - System.IO.File.Delete(pathKD & DateinameKD) - End If - - 'NOCH NICHT!!! - updateFibu(FiBuSchnittstelleNr) ' UPDATE FiBuSchnittstelle --> 0 - End If - End If