Imports System Imports System.Collections.Generic Imports System.Data.SqlClient Imports System.IO Imports System.Reflection Imports Therefore.API Imports VERAG_PROG_ALLGEMEIN Public Class cUTA Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Public Function importUTALeistungen() As Boolean 'Einträge in tblUTALeistungen machen, wenn Fakturierwarenart und Lieferland noch nicht in der Tabelle enthalten sind. Dim query = "INSERT INTO tblUTALeistungen (Fakturierwarenart, Lieferland, VERAG_OffertenNr, VERAG_LeistungsNr ) Select tblUTAImportNew.Fakturierwarenart, tblUTAImportNew.Lieferland, tblUTAFakturierwarenarten.VERAG_OffertenNr, tblUTAFakturierwarenarten.VERAG_LeistungsNr From tblUTAImportNew INNER Join tblUTAFakturierwarenarten On tblUTAImportNew.Fakturierwarenart = tblUTAFakturierwarenarten.Fakturierwarenart Group By tblUTAImportNew.Fakturierwarenart, tblUTAImportNew.Lieferland, tblUTAFakturierwarenarten.VERAG_OffertenNr, tblUTAFakturierwarenarten.VERAG_LeistungsNr HAVING((((SELECT tblUTALeistungen.Fakturierwarenart FROM tblUTALeistungen WHERE tblUTALeistungen.Fakturierwarenart=tblUTAImportNew.Fakturierwarenart And tblUTALeistungen.Lieferland=tblUTAImportNew.Lieferland)) Is Null))" Return SQL.doSQL(query, "FMZOLL") End Function Public Class UTAHeader Property Übertragungsnummer As Integer Property ErstellDatumUhrzeit As DateTime Property Absender_ID As Object = Nothing Property Empfänger_ID As Object = Nothing Property Filler_Feld_5 As Object = Nothing Property Abrechnungsnummer As Object = Nothing Property DTF_Format As Object = Nothing Public hasEntry = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Sub New(Übertragungsnummer, ErstellDatumUhrzeit) Me.Übertragungsnummer = Übertragungsnummer Me.ErstellDatumUhrzeit = ErstellDatumUhrzeit LOAD() End Sub Sub New() 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("Übertragungsnummer", Übertragungsnummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ErstellDatumUhrzeit", ErstellDatumUhrzeit)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Absender_ID", Absender_ID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Empfänger_ID", Empfänger_ID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Filler_Feld_5", Filler_Feld_5)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Abrechnungsnummer", Abrechnungsnummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("DTF_Format", DTF_Format)) Return list End Function Public Function SAVE() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim sqlstr = " BEGIN TRAN If EXISTS(Select * FROM tblUTAHeaderNew WHERE Übertragungsnummer=@Übertragungsnummer AND ErstellDatumUhrzeit = @ErstellDatumUhrzeit) " & " BEGIN " & getUpdateCmd() & " End " & " Else " & " BEGIN " & getInsertCmd() & " End " & " commit tran " Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list) End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("Select * FROM tblUTAHeaderNew WHERE Übertragungsnummer=@Übertragungsnummer AND ErstellDatumUhrzeit = @ErstellDatumUhrzeit", conn) cmd.Parameters.AddWithValue("@Übertragungsnummer", Übertragungsnummer) cmd.Parameters.AddWithValue("@ErstellDatumUhrzeit", ErstellDatumUhrzeit) 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 Nothing 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 Function getUpdateCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' Return (" UPDATE [tblUTAHeaderNew] SET " & str & " WHERE Übertragungsnummer=@Übertragungsnummer AND ErstellDatumUhrzeit = @ErstellDatumUhrzeit ") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) End Try Return "" End Function Public Function getInsertCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO tblUTAHeaderNew (" & str & ") VALUES(" & values & ") ") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) End Try Return "" End Function End Class Public Class UTABody Property ErstellDatumUhrzeit As DateTime Property Übertragungsnummer As Integer Property Übertragungsposition As Integer Property Abrechnungsnummer As Double Property Datum_für_Lieferungen_und_Leistungen_bis As DateTime Property Rechnungsempfänger_Kundennummer As Integer Property Abrechnungsdatum As DateTime Property Kundennummer As Integer Property Kartennummer As String Property Belegdatum As DateTime Property Akzeptanzstellennummer As Double Property Standort_der_Akzeptanzstelle As String Property Lieferland As String Property Belegnummer_des_Lieferanten As String Property Kilometerstand As Double Property Fakturierwarenart As String Property Vorzeichen_Statusfeld_für_alle_Beträge_und_Mengen As Char Property Menge As Double Property SB_BT As Char Property Umsatzsteuerprozentsatz As Double Property Lieferlandwährung_ISO As String Property Einzelpreis_Brutto_in_Lieferlandwährung As Double Property Einzelpreis_Netto_in_Lieferlandwährung As Double Property Betrag_Service_in_Lieferlandwährung As Double Property Betrag_Nachlass_in_Lieferlandwährung As Double Property Gesamtbetrag_Netto_in_Lieferlandwährung As Double Property Gesamtbetrag_Brutto_in_Lieferlandwährung As Double Property Darstellwährung_ISO As String Property Betrag_Service_in_Darstellwährung As Double Property Betrag_Nachlass_in_Darstellwährung As Double Property Gesamtbetrag_Netto_in_Darstellwährung As Double Property Gesamtbetrag_Umsatzsteuer_in_Darstellwährung As Double Property Gesamtbetrag_Brutto_in_Darstellwährung As Double Property Prägetext_i_d_R_KFZ_Kennzeichen As String Property Kunden_Kostenstelle_1 As String Property Kartentyp As String Property Filler_Feld_35 As Char Property Filler_Feld_36 As String Property KZ_Autobahn As Char Property INFO_Feld As String Property KFZ_Kennzeichen As String Property Filler_Feld_40 As Char Property Buchungsart As Char Property Buchungsgrund As Char Property Filler_Feld_43 As Char Property Informationsbeleg As Char Property Belegherkunft As Char Property Filler_Feld_46 As String Property Einzelpreis_Brutto_in_Lieferlandwährung_mit_4_Nachkommastellen As Double Property Einzelpreis_Netto_in_Lieferlandwährung_mit_4_Nachkommastellen As Double Property Rechnungsdatum As DateTime Property Umsatzsteuerprozentsatz_informativ As Double Property Betrag_Nachlass_in_Lieferlandwährung_Umsatzsteuer_informativ As Double Property Betrag_Service_in_Lieferlandwährung_Umsatzsteuer_informativ As Double Property Gesamtbetrag_in_Lieferlandwährung_Umsatzsteuer_informativ As Double Property Fälligkeitsdatum As DateTime Property Zahlungsziel_in_Tagen As Integer Property Zahlungsart As String Property TC_Rechnungsnummer_gegenüber_dem_Nutzer As String Property TC_Rechnungsdatum As DateTime Property Zahlungszielgruppe As String Property Kunden_Kostenstelle_2 As String Property Lieferzeit As String Property Fremdkartennummer As String Property OnBoardUnitID As String Property KFZ_Kennzeichen_komprimiert As String Property Kartenkategorie As String Property Rechnungsnummer_pro_Lieferland As Double Property Autobahnauffahrt As String Property Autobahnausfahrt As String Property Rabattschlüssel_der_französischen_Autobahngesellschaften As Integer Property Nummer_Belastungsanzeige As Double Property Betreuungsstelle As String Property Filler_Feld_72 As String Property Akzeptanz_Medium As String Property Steuerkategorie As String Property UTA_Beleg_ID As String Property UTA_Normalbeleg_ID As String Property Gebühren_Bescheinigung_von As DateTime Property Gebühren_Bescheinigung_bis As DateTime Property Herausgeber_Nutzer_Nummer As String Property Maßeinheit As String Property Land_der_Akzeptanzstelle As String Property Postleitzahl_der_Akzeptanzstelle As String Property Steuerliches_Lieferland As String Property Steuerliche_Produktgruppe As String Property Leistungsort_verlagerbar As Char Property abgerechnetDatum As Object Property abgerechnet As Boolean = False Property daId As Object Property charged As Boolean = False Property chargedDatetime As Object = Nothing Property daIdgesetztDatum As Object = Nothing Public hasEntry = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Sub New(Übertragungsnummer, Übertragungsposition, ErstellDatumUhrzeit) Me.Übertragungsnummer = Übertragungsnummer Me.Übertragungsposition = Übertragungsposition Me.ErstellDatumUhrzeit = ErstellDatumUhrzeit LOAD() 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("ErstellDatumUhrzeit", ErstellDatumUhrzeit)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Übertragungsnummer", Übertragungsnummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Übertragungsposition", Übertragungsposition)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Abrechnungsnummer", Abrechnungsnummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Datum_für_Lieferungen_und_Leistungen_bis", Datum_für_Lieferungen_und_Leistungen_bis)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rechnungsempfänger_Kundennummer", Rechnungsempfänger_Kundennummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Abrechnungsdatum", Abrechnungsdatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kundennummer", Kundennummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kartennummer", Kartennummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Belegdatum", Belegdatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Akzeptanzstellennummer", Akzeptanzstellennummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Standort_der_Akzeptanzstelle", Standort_der_Akzeptanzstelle)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Lieferland", Lieferland)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Belegnummer_des_Lieferanten", Belegnummer_des_Lieferanten)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kilometerstand", Kilometerstand)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Fakturierwarenart", Fakturierwarenart)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Vorzeichen_Statusfeld_für_alle_Beträge_und_Mengen", Vorzeichen_Statusfeld_für_alle_Beträge_und_Mengen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Menge", Menge)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SB_BT", SB_BT)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Umsatzsteuerprozentsatz", Umsatzsteuerprozentsatz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Lieferlandwährung_ISO", Lieferlandwährung_ISO)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Einzelpreis_Brutto_in_Lieferlandwährung", Einzelpreis_Brutto_in_Lieferlandwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Einzelpreis_Netto_in_Lieferlandwährung", Einzelpreis_Netto_in_Lieferlandwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Betrag_Service_in_Lieferlandwährung", Betrag_Service_in_Lieferlandwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Betrag_Nachlass_in_Lieferlandwährung", Betrag_Nachlass_in_Lieferlandwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesamtbetrag_Netto_in_Lieferlandwährung", Gesamtbetrag_Netto_in_Lieferlandwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesamtbetrag_Brutto_in_Lieferlandwährung", Gesamtbetrag_Brutto_in_Lieferlandwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Darstellwährung_ISO", Darstellwährung_ISO)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Betrag_Nachlass_in_Darstellwährung", Betrag_Nachlass_in_Darstellwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesamtbetrag_Netto_in_Darstellwährung", Gesamtbetrag_Netto_in_Darstellwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesamtbetrag_Umsatzsteuer_in_Darstellwährung", Gesamtbetrag_Umsatzsteuer_in_Darstellwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesamtbetrag_Brutto_in_Darstellwährung", Gesamtbetrag_Brutto_in_Darstellwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Prägetext_i_d_R_KFZ_Kennzeichen", Prägetext_i_d_R_KFZ_Kennzeichen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kunden_Kostenstelle_1", Kunden_Kostenstelle_1)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kartentyp", Kartentyp)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Filler_Feld_35", Filler_Feld_35)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Filler_Feld_36", Filler_Feld_36)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KZ_Autobahn", KZ_Autobahn)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KFZ_Kennzeichen", KFZ_Kennzeichen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("INFO_Feld", INFO_Feld)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Filler_Feld_40", Filler_Feld_40)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Buchungsart", Buchungsart)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Buchungsgrund", Buchungsgrund)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Filler_Feld_43", Filler_Feld_43)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Informationsbeleg", Informationsbeleg)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Belegherkunft", Belegherkunft)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Filler_Feld_46", Filler_Feld_46)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Einzelpreis_Brutto_in_Lieferlandwährung_mit_4_Nachkommastellen", Einzelpreis_Brutto_in_Lieferlandwährung_mit_4_Nachkommastellen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Einzelpreis_Netto_in_Lieferlandwährung_mit_4_Nachkommastellen", Einzelpreis_Netto_in_Lieferlandwährung_mit_4_Nachkommastellen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rechnungsdatum", Rechnungsdatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Umsatzsteuerprozentsatz_informativ", Umsatzsteuerprozentsatz_informativ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Betrag_Nachlass_in_Lieferlandwährung_Umsatzsteuer_informativ", Betrag_Nachlass_in_Lieferlandwährung_Umsatzsteuer_informativ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Betrag_Service_in_Lieferlandwährung_Umsatzsteuer_informativ", Betrag_Service_in_Lieferlandwährung_Umsatzsteuer_informativ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesamtbetrag_in_Lieferlandwährung_Umsatzsteuer_informativ", Gesamtbetrag_in_Lieferlandwährung_Umsatzsteuer_informativ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Fälligkeitsdatum", Fälligkeitsdatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zahlungsziel_in_Tagen", Zahlungsziel_in_Tagen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zahlungsart", Zahlungsart)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("TC_Rechnungsnummer_gegenüber_dem_Nutzer", TC_Rechnungsnummer_gegenüber_dem_Nutzer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("TC_Rechnungsdatum", TC_Rechnungsdatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zahlungszielgruppe", Zahlungszielgruppe)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kunden_Kostenstelle_2", Kunden_Kostenstelle_2)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Lieferzeit", Lieferzeit)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Fremdkartennummer", Fremdkartennummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OnBoardUnitID", OnBoardUnitID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KFZ_Kennzeichen_komprimiert", KFZ_Kennzeichen_komprimiert)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kartenkategorie", Kartenkategorie)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rechnungsnummer_pro_Lieferland", Rechnungsnummer_pro_Lieferland)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Autobahnauffahrt", Autobahnauffahrt)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Autobahnausfahrt", Autobahnausfahrt)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rabattschlüssel_der_französischen_Autobahngesellschaften", Rabattschlüssel_der_französischen_Autobahngesellschaften)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Nummer_Belastungsanzeige", Nummer_Belastungsanzeige)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Betreuungsstelle", Betreuungsstelle)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Filler_Feld_72", Filler_Feld_72)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Akzeptanz_Medium", Akzeptanz_Medium)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Steuerkategorie", Steuerkategorie)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UTA_Beleg_ID", UTA_Beleg_ID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UTA_Normalbeleg_ID", UTA_Normalbeleg_ID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gebühren_Bescheinigung_von", Gebühren_Bescheinigung_von)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gebühren_Bescheinigung_bis", Gebühren_Bescheinigung_bis)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Herausgeber_Nutzer_Nummer", Herausgeber_Nutzer_Nummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Maßeinheit", Maßeinheit)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Land_der_Akzeptanzstelle", Land_der_Akzeptanzstelle)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Postleitzahl_der_Akzeptanzstelle", Postleitzahl_der_Akzeptanzstelle)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Steuerliches_Lieferland", Steuerliches_Lieferland)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Steuerliche_Produktgruppe", Steuerliche_Produktgruppe)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Leistungsort_verlagerbar", Leistungsort_verlagerbar)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("abgerechnetDatum", abgerechnetDatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("abgerechnet", abgerechnet)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("daId", daId)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("charged", charged)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("chargedDatetime", chargedDatetime)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("daIdgesetztDatum", daIdgesetztDatum)) Return list End Function Public Function SAVE() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim sqlstr = " BEGIN TRAN If EXISTS(Select * FROM tblUTAImportNew WHERE Übertragungsnummer=@Übertragungsnummer AND Übertragungsposition = @Übertragungsposition AND ErstellDatumUhrzeit = @ErstellDatumUhrzeit and isnull(charged,0) = 0) " & " BEGIN " & getUpdateCmd() & " End " & " Else " & " BEGIN " & getInsertCmd() & " End " & " commit tran " Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list) End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("Select * FROM tblUTAImportNew WHERE Übertragungsnummer=@Übertragungsnummer AND Übertragungsposition = @Übertragungsposition AND ErstellDatumUhrzeit = @ErstellDatumUhrzeit ", conn) cmd.Parameters.AddWithValue("@Übertragungsnummer", Übertragungsnummer) cmd.Parameters.AddWithValue("@Übertragungsposition", Übertragungsposition) cmd.Parameters.AddWithValue("@ErstellDatumUhrzeit", ErstellDatumUhrzeit) 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 Dim value = dr.Item(li.Text) Dim targetType As Type = If(Nullable.GetUnderlyingType(propInfo.PropertyType), propInfo.PropertyType) Try If targetType Is GetType(Char) AndAlso TypeOf value Is String Then Dim strValue As String = value.ToString() If strValue.Length > 0 Then propInfo.SetValue(Me, strValue(0)) ' String → erster Buchstabe als Char Else propInfo.SetValue(Me, Nothing) ' oder ein Standardwert wie " " (Leerzeichen) End If ElseIf targetType Is GetType(String) AndAlso TypeOf value Is Char Then propInfo.SetValue(Me, value.ToString()) ' Char → String Else Dim convertedValue = Convert.ChangeType(value, targetType) propInfo.SetValue(Me, convertedValue) End If Catch ex As Exception Console.WriteLine("Fehler beim Setzen von " & li.Text & " auf " & value.ToString() & ": " & ex.Message) MsgBox("Fehler beim Setzen von " & li.Text & " auf " & value.ToString() & vbCrLf & ex.ToString()) End Try 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 Function getUpdateCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' Return (" UPDATE [tblUTAImportNew] SET " & str & " WHERE Übertragungsnummer=@Übertragungsnummer AND Übertragungsposition = @Übertragungsposition AND isnull(charged,0) = 0 ") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) End Try Return "" End Function Public Function getInsertCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO tblUTAImportNew (" & str & ") VALUES(" & values & ") ") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) End Try Return "" End Function End Class Public Class UTAArchiv Property ErstellDatumUhrzeit As DateTime Property Übertragungsnummer As Integer Property Übertragungsposition As Integer Property Abrechnungsnummer As Object Property Datum_für_Lieferungen_und_Leistungen_bis As DateTime Property Rechnungsempfänger_Kundennummer As Integer Property Abrechnungsdatum As DateTime Property Kundennummer As Integer Property Kartennummer As Object Property Belegdatum As DateTime Property Akzeptanzstellennummer As Object Property Standort_der_Akzeptanzstelle As Object Property Lieferland As Object Property Belegnummer_des_Lieferanten As Object Property Kilometerstand As Object Property Fakturierwarenart As Object Property Vorzeichen_Statusfeld_für_alle_Beträge_und_Mengen As String 'HIER object Property Menge As Object Property SB_BT As String 'HIER object Property Umsatzsteuerprozentsatz As Object Property Lieferlandwährung_ISO As Object Property Einzelpreis_Netto_in_Lieferlandwährung As Object Property Einzelpreis_Brutto_in_Lieferlandwährung As Object Property ÜbertragEinzelpreis_Netto_in_Lieferlandwährungungsposition As Object Property Betrag_Service_in_Lieferlandwährung As Object Property Betrag_Nachlass_in_Lieferlandwährung As Object Property Gesamtbetrag_Netto_in_Lieferlandwährung As Object Property Gesamtbetrag_Brutto_in_Lieferlandwährung As Object Property Darstellwährung_ISO As Object Property Betrag_Service_in_Darstellwährung As Object Property Betrag_Nachlass_in_Darstellwährung As Object Property Gesamtbetrag_Netto_in_Darstellwährung As Object Property Gesamtbetrag_Umsatzsteuer_in_Darstellwährung As Object Property Gesamtbetrag_Brutto_in_Darstellwährung As Object Property Prägetext_i_d_R_KFZ_Kennzeichen As Object Property Kunden_Kostenstelle_1 As Object Property Kartentyp As Object Property Filler_Feld_35 As Object Property Filler_Feld_36 As Object Property KZ_Autobahn As Object Property INFO_Feld As Object Property KFZ_Kennzeichen As Object Property Filler_Feld_40 As Object Property Buchungsart As Object Property Buchungsgrund As Object Property Filler_Feld_43 As Object Property Informationsbeleg As Object Property Belegherkunft As Object Property Filler_Feld_46 As Object Property Einzelpreis_Brutto_in_Lieferlandwährung_mit_4_Nachkommastellen As Object Property Einzelpreis_Netto_in_Lieferlandwährung_mit_4_Nachkommastellen As Object Property Rechnungsdatum As DateTime Property Umsatzsteuerprozentsatz_informativ As Object Property Betrag_Nachlass_in_Lieferlandwährung_Umsatzsteuer_informativ As Object Property Betrag_Service_in_Lieferlandwährung_Umsatzsteuer_informativ As Object Property Gesamtbetrag_in_Lieferlandwährung_Umsatzsteuer_informativ As Object Property Fälligkeitsdatum As DateTime Property Zahlungsziel_in_Tagen As Integer Property Zahlungsart As Object Property TC_Rechnungsnummer_gegenüber_dem_Nutzer As Object Property TC_Rechnungsdatum As DateTime Property Zahlungszielgruppe As Object Property Kunden_Kostenstelle_2 As Object Property Lieferzeit As Object Property Fremdkartennummer As Object Property OnBoardUnitID As Object Property KFZ_Kennzeichen_komprimiert As Object Property Kartenkategorie As Object Property Rechnungsnummer_pro_Lieferland As Object Property Autobahnauffahrt As Object Property Autobahnausfahrt As Object Property Rabattschlüssel_der_französischen_Autobahngesellschaften As Integer Property Nummer_Belastungsanzeige As Object Property Betreuungsstelle As Object Property Filler_Feld_72 As Object Property Akzeptanz_Medium As Object Property Steuerkategorie As Object Property UTA_Beleg_ID As Object Property UTA_Normalbeleg_ID As Object Property Gebühren_Bescheinigung_von As DateTime Property Gebühren_Bescheinigung_bis As DateTime Property Herausgeber_Nutzer_Nummer As Object Property Maßeinheit As Object Property Land_der_Akzeptanzstelle As Object Property Postleitzahl_der_Akzeptanzstelle As Object Property Steuerliches_Lieferland As Object Property Steuerliche_Produktgruppe As Object Property Leistungsort_verlagerbar As Object Property UStVAn_ID As Object Public hasEntry = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Sub New(Belegdatum, UTA_Beleg_ID) Me.Belegdatum = Belegdatum Me.UTA_Beleg_ID = UTA_Beleg_ID LOAD() 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("ErstellDatumUhrzeit", ErstellDatumUhrzeit)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Übertragungsnummer", Übertragungsnummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Übertragungsposition", Übertragungsposition)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Abrechnungsnummer", Abrechnungsnummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Datum_für_Lieferungen_und_Leistungen_bis", Datum_für_Lieferungen_und_Leistungen_bis)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rechnungsempfänger_Kundennummer", Rechnungsempfänger_Kundennummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Abrechnungsdatum", Abrechnungsdatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kundennummer", Kundennummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kartennummer", Kartennummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Belegdatum", Belegdatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Akzeptanzstellennummer", Akzeptanzstellennummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Standort_der_Akzeptanzstelle", Standort_der_Akzeptanzstelle)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Lieferland", Lieferland)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Belegnummer_des_Lieferanten", Belegnummer_des_Lieferanten)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kilometerstand", Kilometerstand)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Fakturierwarenart", Fakturierwarenart)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Vorzeichen_Statusfeld_für_alle_Beträge_und_Mengen", Vorzeichen_Statusfeld_für_alle_Beträge_und_Mengen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Menge", Menge)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SB_BT", SB_BT)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Umsatzsteuerprozentsatz", Umsatzsteuerprozentsatz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Lieferlandwährung_ISO", Lieferlandwährung_ISO)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Einzelpreis_Netto_in_Lieferlandwährung", Einzelpreis_Netto_in_Lieferlandwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Einzelpreis_Brutto_in_Lieferlandwährung", Einzelpreis_Brutto_in_Lieferlandwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Betrag_Service_in_Lieferlandwährung", Betrag_Service_in_Lieferlandwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Betrag_Nachlass_in_Lieferlandwährung", Betrag_Nachlass_in_Lieferlandwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesamtbetrag_Netto_in_Lieferlandwährung", Gesamtbetrag_Netto_in_Lieferlandwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesamtbetrag_Brutto_in_Lieferlandwährung", Gesamtbetrag_Brutto_in_Lieferlandwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Darstellwährung_ISO", Darstellwährung_ISO)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Betrag_Nachlass_in_Darstellwährung", Betrag_Nachlass_in_Darstellwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesamtbetrag_Netto_in_Darstellwährung", Gesamtbetrag_Netto_in_Darstellwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesamtbetrag_Umsatzsteuer_in_Darstellwährung", Gesamtbetrag_Umsatzsteuer_in_Darstellwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesamtbetrag_Brutto_in_Darstellwährung", Gesamtbetrag_Brutto_in_Darstellwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Prägetext_i_d_R_KFZ_Kennzeichen", Prägetext_i_d_R_KFZ_Kennzeichen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kunden_Kostenstelle_1", Kunden_Kostenstelle_1)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kartentyp", Kartentyp)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Filler_Feld_35", Filler_Feld_35)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Filler_Feld_36", Filler_Feld_36)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KZ_Autobahn", KZ_Autobahn)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KFZ_Kennzeichen", KFZ_Kennzeichen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("INFO_Feld", INFO_Feld)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Filler_Feld_40", Filler_Feld_40)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Buchungsart", Buchungsart)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Buchungsgrund", Buchungsgrund)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Filler_Feld_43", Filler_Feld_43)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Informationsbeleg", Informationsbeleg)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Belegherkunft", Belegherkunft)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Filler_Feld_46", Filler_Feld_46)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Einzelpreis_Brutto_in_Lieferlandwährung_mit_4_Nachkommastellen", Einzelpreis_Brutto_in_Lieferlandwährung_mit_4_Nachkommastellen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Einzelpreis_Netto_in_Lieferlandwährung_mit_4_Nachkommastellen", Einzelpreis_Netto_in_Lieferlandwährung_mit_4_Nachkommastellen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rechnungsdatum", Rechnungsdatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Umsatzsteuerprozentsatz_informativ", Umsatzsteuerprozentsatz_informativ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Betrag_Nachlass_in_Lieferlandwährung_Umsatzsteuer_informativ", Betrag_Nachlass_in_Lieferlandwährung_Umsatzsteuer_informativ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Betrag_Service_in_Lieferlandwährung_Umsatzsteuer_informativ", Betrag_Service_in_Lieferlandwährung_Umsatzsteuer_informativ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gesamtbetrag_in_Lieferlandwährung_Umsatzsteuer_informativ", Gesamtbetrag_in_Lieferlandwährung_Umsatzsteuer_informativ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Fälligkeitsdatum", Fälligkeitsdatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zahlungsziel_in_Tagen", Zahlungsziel_in_Tagen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zahlungsart", Zahlungsart)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("TC_Rechnungsnummer_gegenüber_dem_Nutzer", TC_Rechnungsnummer_gegenüber_dem_Nutzer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("TC_Rechnungsdatum", TC_Rechnungsdatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zahlungszielgruppe", Zahlungszielgruppe)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kunden_Kostenstelle_2", Kunden_Kostenstelle_2)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Lieferzeit", Lieferzeit)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Fremdkartennummer", Fremdkartennummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OnBoardUnitID", OnBoardUnitID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KFZ_Kennzeichen_komprimiert", KFZ_Kennzeichen_komprimiert)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kartenkategorie", Kartenkategorie)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rechnungsnummer_pro_Lieferland", Rechnungsnummer_pro_Lieferland)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Autobahnauffahrt", Autobahnauffahrt)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Autobahnausfahrt", Autobahnausfahrt)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rabattschlüssel_der_französischen_Autobahngesellschaften", Rabattschlüssel_der_französischen_Autobahngesellschaften)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Nummer_Belastungsanzeige", Nummer_Belastungsanzeige)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Betreuungsstelle", Betreuungsstelle)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Filler_Feld_72", Filler_Feld_72)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Akzeptanz_Medium", Akzeptanz_Medium)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Steuerkategorie", Steuerkategorie)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UTA_Beleg_ID", UTA_Beleg_ID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UTA_Normalbeleg_ID", UTA_Normalbeleg_ID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gebühren_Bescheinigung_von", Gebühren_Bescheinigung_von)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Gebühren_Bescheinigung_bis", Gebühren_Bescheinigung_bis)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Herausgeber_Nutzer_Nummer", Herausgeber_Nutzer_Nummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Maßeinheit", Maßeinheit)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Land_der_Akzeptanzstelle", Land_der_Akzeptanzstelle)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Postleitzahl_der_Akzeptanzstelle", Postleitzahl_der_Akzeptanzstelle)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Steuerliches_Lieferland", Steuerliches_Lieferland)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Steuerliche_Produktgruppe", Steuerliche_Produktgruppe)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Leistungsort_verlagerbar", Leistungsort_verlagerbar)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVAn_ID", UStVAn_ID)) Return list End Function Public Function SAVE() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() 'Dim sqlstr = " BEGIN TRAN If EXISTS(Select * FROM CLFArchiv WHERE PKFileName=@PKFileName AND OBUID = @OBUID) " & Dim sqlstr = " BEGIN TRAN If EXISTS(Select * FROM tblUTAArchiv WHERE UTA_Beleg_ID = @UTA_Beleg_ID AND Belegdatum = @Belegdatum) " & " BEGIN " & getUpdateCmd() & " End " & " Else " & " BEGIN " & getInsertCmd() & " End " & " commit tran " Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list) End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("Select * FROM tblUTAArchiv WHERE UTA_Beleg_ID = @UTA_Beleg_ID AND Belegdatum = @Belegdatum ", conn) cmd.Parameters.AddWithValue("@UTA_Beleg_ID", UTA_Beleg_ID) cmd.Parameters.AddWithValue("@Belegdatum", Belegdatum) 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 Function getUpdateCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' Return (" UPDATE [tblUTAArchiv] SET " & str & " WHERE UTA_Beleg_ID = @UTA_Beleg_ID AND Belegdatum = @Belegdatum") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) End Try Return "" End Function Public Function getInsertCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO tblUTAArchiv (" & str & ") VALUES(" & values & ") ") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) End Try Return "" End Function End Class Public Class UTATrailer Property ErstellDatumUhrzeit As DateTime Property Übertragungsnummer As Integer Property Anzahl_Sätze As Integer Property Checksumme As Object = Nothing Public hasEntry = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Sub New(Übertragungsnummer, ErstellDatumUhrzeit) Me.Übertragungsnummer = Übertragungsnummer Me.ErstellDatumUhrzeit = ErstellDatumUhrzeit LOAD() 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("ErstellDatumUhrzeit", ErstellDatumUhrzeit)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Übertragungsnummer", Übertragungsnummer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Anzahl_Sätze", Anzahl_Sätze)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Checksumme", Checksumme)) Return list End Function Public Function SAVE() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim sqlstr = " BEGIN TRAN If EXISTS(Select * FROM tblUTATrailerNew WHERE Übertragungsnummer=@Übertragungsnummer AND ErstellDatumUhrzeit=@ErstellDatumUhrzeit) " & " BEGIN " & getUpdateCmd() & " End " & " Else " & " BEGIN " & getInsertCmd() & " End " & " commit tran " Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list) End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("Select * FROM tblUTATrailerNew WHERE Übertragungsnummer=@Übertragungsnummer AND ErstellDatumUhrzeit=@ErstellDatumUhrzeit", conn) cmd.Parameters.AddWithValue("@Übertragungsnummer", Übertragungsnummer) cmd.Parameters.AddWithValue("@ErstellDatumUhrzeit", ErstellDatumUhrzeit) 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 Function getUpdateCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' Return (" UPDATE [tblUTATrailerNew] SET " & str & " WHERE Übertragungsnummer=@Übertragungsnummer AND ErstellDatumUhrzeit=@ErstellDatumUhrzeit") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) End Try Return "" End Function Public Function getInsertCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO tblUTATrailerNew (" & str & ") VALUES(" & values & ") ") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) End Try Return "" End Function End Class Public Class UTADocuments Property Id As Integer Property DocumentName As String Property DocumentTyp As String Property Zeitstempel As DateTime Property daId As Integer Property KundenNr As Integer Property RechnungsNr As String Property Datum As Object = Nothing Public hasEntry = False Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Sub New(Id) Me.Id = Id LOAD() End Sub Sub New() 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)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("DocumentName", DocumentName)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("DocumentTyp", DocumentTyp)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zeitstempel", Zeitstempel)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("daId", daId)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KundenNr", KundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsNr", RechnungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Datum", Datum)) Return list End Function Public Function SAVE() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim sqlstr = " BEGIN TRAN If EXISTS(Select * FROM tblUTADocuments WHERE Datum=@Datum AND KundenNr = @KundenNr AND RechnungsNr=@RechnungsNr ) " & " BEGIN " & getUpdateCmd() & " End " & " Else " & " BEGIN " & getInsertCmd() & " End " & " commit tran " Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list) End Function Public Sub LOAD() Try hasEntry = False Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("Select * FROM tblUTADocuments WHERE Id=@Id ", conn) cmd.Parameters.AddWithValue("@Id", Id) 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 Function getUpdateCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' Return (" UPDATE tblUTADocuments SET " & str & " WHERE Datum=@Datum AND KundenNr = @KundenNr AND RechnungsNr=@RechnungsNr") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) End Try Return "" End Function Public Function getInsertCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO tblUTADocuments (" & str & ") VALUES(" & values & ") ") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) End Try Return "" End Function End Class Public Function readAndSaveUTA(objFileRead As StreamReader, fi As FileInfo, cnt As Integer, Optional onlyTestkunedn As Boolean = False) As Boolean Dim booHeaderVorhanden = False Dim booPrüfziffernfehler = False Dim booInTransaktion = False Dim booTrailerVorhanden = False Dim dtmErstellDatumUhrzeit As Date Dim lngÜbertragungsnummer As Integer Dim lngÜbertragungsposition As Integer Dim curChecksumme As Double Dim counTrans As Integer = 0 Dim savedTrans As Integer = 0 Dim MDMEinarb As New cMDMEinarbeitung("UTA", Now()) MDMEinarb.setInvoicingDate(Now(), MDMEinarb) Dim lngRecordCount As Long Try 'Datei auf Fehler prüfen! Do While (objFileRead.Peek() > -1) Dim strZeile = objFileRead.ReadLine() Select Case Mid(strZeile, 1, 2) Case "10" booHeaderVorhanden = True lngRecordCount = lngRecordCount + 1 Case "20" ' Meldung bei nicht vorhandenen Haeder. If Not booHeaderVorhanden Then MsgBox("Datei kann wegen fehlenden Header nicht verarbeitet werden.") objFileRead.Close() Return False End If lngRecordCount = lngRecordCount + 1 Case "90" ' Meldung bei nicht vorhandenen Haeder. If Not booHeaderVorhanden Then MsgBox("Datei kann wegen fehlenden Header nicht verarbeitet werden.") objFileRead.Close() Return False End If booTrailerVorhanden = True lngRecordCount = lngRecordCount + 1 ' Prüfsumme Anzahl der Sätze im File ohne Header und Trailer. If Trim(Mid(strZeile, 3, 13)) <> (lngRecordCount) Then MsgBox("Fehler: " & vbNewLine & "Prüfsumme in der Datei stimmt nicht mit der Zeilenanzahl der Datei überein! " & vbNewLine & "Record Count: " & Trim(Mid(strZeile, 3, 13)) & vbCrLf & "Prüfsumme: " & (lngRecordCount) & vbCrLf) objFileRead.Close() Return False End If ' Meldung bei Prüfsummenfehler. If booPrüfziffernfehler Then MsgBox("Datei kann wegen Prüfsummenfehler nicht verarbeitet werden.") objFileRead.Close() End If Case Else booPrüfziffernfehler = True End Select Loop Dim lngPKLine As Long = 0 lngRecordCount = 0 'gleicher PKFileName wird nun aus CLFHeader gelöscht. CASCADE löscht dann zugehörige CLFBody und CLFTrailer. 'If Not SQL.doSQL("DELETE tblUTAHeaderNew.ErstellDatumUhrzeit, tblUTAHeaderNew.Übertragungsnummer FROM tblUTAHeaderNew WHERE (((tblUTAHeaderNew.ErstellDatumUhrzeit)=" & Format$(dtmErstellDatumUhrzeit, "\#mm\/dd\/yyyy hh\:nn\:ss AM/PM\#") & ") AND ((tblUTAHeaderNew.Übertragungsnummer)=" & lngÜbertragungsnummer, "FMZOLL") Then ' MsgBox("Fehler beim Löschen des CLF-Headers") ' objFileRead.Close() ' Return False 'End If 'If Not SQL.doSQL("UPDATE CLF SET PKFileName = '" & fi.Name.ToString & "'", "FMZOLL") Then ' MsgBox("Fehler beim Update der CLF-Nr") ' objFileRead.Close() ' Return False 'End If objFileRead.DiscardBufferedData() objFileRead.BaseStream.Seek(0, System.IO.SeekOrigin.Begin) Do While (objFileRead.Peek() > -1) Dim strZeile = objFileRead.ReadLine() Select Case Mid(strZeile, 1, 2) Case "10" booHeaderVorhanden = True lngRecordCount = lngRecordCount + 1 dtmErstellDatumUhrzeit = DateSerial(Mid(strZeile, 35, 4), Mid(strZeile, 32, 2), Mid(strZeile, 29, 2)) & " " & TimeSerial(Mid(strZeile, 40, 2), Mid(strZeile, 43, 2), Mid(strZeile, 46, 2)) lngÜbertragungsnummer = Mid(strZeile, 61, 6) 'Dim ext = CInt(fi.Extension.Remove(0, 1)) Dim clfHeader As New cUTA.UTAHeader(lngÜbertragungsnummer, dtmErstellDatumUhrzeit) With clfHeader .Absender_ID = Mid(strZeile, 10, 6) .Empfänger_ID = Mid(strZeile, 23, 6) .Filler_Feld_5 = IIf(Trim(Mid(strZeile, 39, 1)) = "", Nothing, Trim(Mid(strZeile, 39, 1))) .Abrechnungsnummer = IIf(Trim(Mid(strZeile, 48, 13)) = Nothing, "", Trim(Mid(strZeile, 48, 13))) .DTF_Format = IIf(Trim(Mid(strZeile, 67, 6)) = Nothing, "", Trim(Mid(strZeile, 67, 6))) .SAVE() End With Case "20" lngRecordCount = lngRecordCount + 1 lngÜbertragungsposition = lngÜbertragungsposition + 1 Dim clfBody As New cUTA.UTABody(lngÜbertragungsnummer, lngÜbertragungsposition, dtmErstellDatumUhrzeit) With clfBody .Übertragungsnummer = lngÜbertragungsnummer .Übertragungsposition = lngÜbertragungsposition .Abrechnungsnummer = Mid(strZeile, 3, 13) .[Datum_für_Lieferungen_und_Leistungen_bis] = DateSerial(Mid(strZeile, 20, 4), Mid(strZeile, 18, 2), Mid(strZeile, 16, 2)) .[Rechnungsempfänger_Kundennummer] = Mid(strZeile, 24, 13) .[Abrechnungsdatum] = DateSerial(Mid(strZeile, 41, 4), Mid(strZeile, 39, 2), Mid(strZeile, 37, 2)) .[Kundennummer] = Mid(strZeile, 45, 13) .[Kartennummer] = IIf(Trim(Mid(strZeile, 58, 19)) = "", Nothing, Trim(Mid(strZeile, 58, 19))) .[Belegdatum] = DateSerial(Mid(strZeile, 81, 4), Mid(strZeile, 79, 2), Mid(strZeile, 77, 2)) .[Akzeptanzstellennummer] = Mid(strZeile, 85, 13) .[Standort_der_Akzeptanzstelle] = IIf(Trim(Mid(strZeile, 98, 25)) = "", Nothing, Trim(Mid(strZeile, 98, 25))) .[Lieferland] = IIf(Trim(Mid(strZeile, 123, 3)) = "", Nothing, Trim(Mid(strZeile, 123, 3))) .[Belegnummer_des_Lieferanten] = IIf(Trim(Mid(strZeile, 126, 13)) = "", Nothing, Trim(Mid(strZeile, 126, 13))) .[Kilometerstand] = Mid(strZeile, 139, 8) .[Fakturierwarenart] = IIf(Trim(Mid(strZeile, 147, 5)) = "", Nothing, Trim(Mid(strZeile, 147, 5))) .[Vorzeichen_Statusfeld_für_alle_Beträge_und_Mengen] = IIf(Trim(Mid(strZeile, 152, 1)) = "", Nothing, Trim(Mid(strZeile, 152, 1))) .[Menge] = Mid(strZeile, 153, 10) / 100 .[SB_BT] = IIf(Trim(Mid(strZeile, 163, 1)) = "", Nothing, Trim(Mid(strZeile, 163, 1))) .[Umsatzsteuerprozentsatz] = Mid(strZeile, 164, 5) / 10000 .[Lieferlandwährung_ISO] = IIf(Trim(Mid(strZeile, 169, 3)) = "", Nothing, Trim(Mid(strZeile, 169, 3))) .[Einzelpreis_Brutto_in_Lieferlandwährung] = Mid(strZeile, 172, 11) / 100 .[Einzelpreis_Netto_in_Lieferlandwährung] = Mid(strZeile, 183, 11) / 100 .[Betrag_Service_in_Lieferlandwährung] = Mid(strZeile, 194, 11) / 100 .[Betrag_Nachlass_in_Lieferlandwährung] = Mid(strZeile, 205, 11) / 100 .[Gesamtbetrag_Netto_in_Lieferlandwährung] = Mid(strZeile, 216, 11) / 100 .[Gesamtbetrag_Brutto_in_Lieferlandwährung] = Mid(strZeile, 227, 11) / 100 .[Darstellwährung_ISO] = IIf(Trim(Mid(strZeile, 238, 3)) = "", Nothing, Trim(Mid(strZeile, 238, 3))) .[Betrag_Service_in_Darstellwährung] = Mid(strZeile, 241, 11) / 100 .[Betrag_Nachlass_in_Darstellwährung] = Mid(strZeile, 252, 11) / 100 .[Gesamtbetrag_Netto_in_Darstellwährung] = Mid(strZeile, 263, 11) / 100 .[Gesamtbetrag_Umsatzsteuer_in_Darstellwährung] = Mid(strZeile, 274, 11) / 100 .[Gesamtbetrag_Brutto_in_Darstellwährung] = Mid(strZeile, 285, 11) / 100 .[Prägetext_i_d_R_KFZ_Kennzeichen] = IIf(Trim(Mid(strZeile, 296, 16)) = "", Nothing, Trim(Mid(strZeile, 296, 16))) .[Kunden_Kostenstelle_1] = IIf(Trim(Mid(strZeile, 312, 20)) = "", Nothing, Trim(Mid(strZeile, 312, 20))) .[Kartentyp] = IIf(Trim(Mid(strZeile, 332, 8)) = "", Nothing, Trim(Mid(strZeile, 332, 8))) .[Filler_Feld_35] = IIf(Trim(Mid(strZeile, 340, 1)) = "", Nothing, Trim(Mid(strZeile, 340, 1))) .[Filler_Feld_36] = IIf(Trim(Mid(strZeile, 341, 3)) = "", Nothing, Trim(Mid(strZeile, 341, 3))) .[KZ_Autobahn] = IIf(Trim(Mid(strZeile, 344, 1)) = "", Nothing, Trim(Mid(strZeile, 344, 1))) .[INFO_Feld] = IIf(Trim(Mid(strZeile, 345, 18)) = "", Nothing, Trim(Mid(strZeile, 345, 18))) .[KFZ_Kennzeichen] = IIf(Trim(Mid(strZeile, 363, 16)) = "", Nothing, Trim(Mid(strZeile, 363, 16))) .[Filler_Feld_40] = IIf(Trim(Mid(strZeile, 379, 1)) = "", Nothing, Trim(Mid(strZeile, 379, 1))) .[Buchungsart] = IIf(Trim(Mid(strZeile, 380, 1)) = "", Nothing, Trim(Mid(strZeile, 380, 1))) .[Buchungsgrund] = IIf(Trim(Mid(strZeile, 381, 1)) = "", Nothing, Trim(Mid(strZeile, 381, 1))) .[Filler_Feld_43] = IIf(Trim(Mid(strZeile, 382, 1)) = "", Nothing, Trim(Mid(strZeile, 382, 1))) .[Informationsbeleg] = IIf(Trim(Mid(strZeile, 383, 1)) = "", Nothing, Trim(Mid(strZeile, 383, 1))) .[Belegherkunft] = IIf(Trim(Mid(strZeile, 384, 1)) = "", Nothing, Trim(Mid(strZeile, 384, 1))) .[Filler_Feld_46] = IIf(Trim(Mid(strZeile, 385, 14)) = "", Nothing, Trim(Mid(strZeile, 385, 14))) .[Einzelpreis_Brutto_in_Lieferlandwährung_mit_4_Nachkommastellen] = Mid(strZeile, 399, 13) / 10000 .[Einzelpreis_Netto_in_Lieferlandwährung_mit_4_Nachkommastellen] = Mid(strZeile, 412, 13) / 10000 .[Rechnungsdatum] = DateSerial(Mid(strZeile, 429, 4), Mid(strZeile, 427, 2), Mid(strZeile, 425, 2)) .[Umsatzsteuerprozentsatz_informativ] = Mid(strZeile, 433, 5) / 10000 .[Betrag_Nachlass_in_Lieferlandwährung_Umsatzsteuer_informativ] = Mid(strZeile, 438, 11) / 100 .[Betrag_Service_in_Lieferlandwährung_Umsatzsteuer_informativ] = Mid(strZeile, 449, 11) / 100 .[Gesamtbetrag_in_Lieferlandwährung_Umsatzsteuer_informativ] = Mid(strZeile, 460, 11) / 100 .[Fälligkeitsdatum] = DateSerial(Mid(strZeile, 475, 4), Mid(strZeile, 473, 2), Mid(strZeile, 471, 2)) .[Zahlungsziel_in_Tagen] = Mid(strZeile, 479, 3) .[Zahlungsart] = IIf(Trim(Mid(strZeile, 482, 8)) = "", Nothing, Trim(Mid(strZeile, 482, 8))) .[TC_Rechnungsnummer_gegenüber_dem_Nutzer] = IIf(Trim(Mid(strZeile, 490, 20)) = "", Nothing, Trim(Mid(strZeile, 490, 20))) .[TC_Rechnungsdatum] = DateSerial(Mid(strZeile, 514, 4), Mid(strZeile, 512, 2), Mid(strZeile, 510, 2)) .[Zahlungszielgruppe] = IIf(Trim(Mid(strZeile, 518, 7)) = "", Nothing, Trim(Mid(strZeile, 518, 7))) .[Kunden_Kostenstelle_2] = IIf(Trim(Mid(strZeile, 525, 20)) = "", Nothing, Trim(Mid(strZeile, 525, 20))) .[Lieferzeit] = IIf(Trim(Mid(strZeile, 545, 6)) = "", Nothing, Trim(Mid(strZeile, 545, 6))) .[Fremdkartennummer] = IIf(Trim(Mid(strZeile, 551, 20)) = "", Nothing, Trim(Mid(strZeile, 551, 20))) .[OnBoardUnitID] = IIf(Trim(Mid(strZeile, 571, 20)) = "", Nothing, Trim(Mid(strZeile, 571, 20))) .[KFZ_Kennzeichen_komprimiert] = IIf(Trim(Mid(strZeile, 591, 16)) = "", Nothing, Trim(Mid(strZeile, 591, 16))) .[Kartenkategorie] = IIf(Trim(Mid(strZeile, 607, 8)) = "", Nothing, Trim(Mid(strZeile, 607, 8))) .[Rechnungsnummer_pro_Lieferland] = Mid(strZeile, 615, 13) .[Autobahnauffahrt] = IIf(Trim(Mid(strZeile, 628, 40)) = "", Nothing, Trim(Mid(strZeile, 628, 40))) .[Autobahnausfahrt] = IIf(Trim(Mid(strZeile, 668, 40)) = "", Nothing, Trim(Mid(strZeile, 668, 40))) .[Rabattschlüssel_der_französischen_Autobahngesellschaften] = IIf(Trim(Mid(strZeile, 708, 1)) = "", Nothing, Trim(Mid(strZeile, 708, 1))) .[Nummer_Belastungsanzeige] = Mid(strZeile, 709, 13) .[Betreuungsstelle] = IIf(Trim(Mid(strZeile, 722, 20)) = "", Nothing, Trim(Mid(strZeile, 722, 20))) .[Filler_Feld_72] = IIf(Trim(Mid(strZeile, 742, 20)) = "", Nothing, Trim(Mid(strZeile, 742, 20))) .[Akzeptanz_Medium] = IIf(Trim(Mid(strZeile, 762, 20)) = "", Nothing, Trim(Mid(strZeile, 762, 20))) .[Steuerkategorie] = IIf(Trim(Mid(strZeile, 782, 8)) = "", Nothing, Trim(Mid(strZeile, 782, 8))) .[UTA_Beleg_ID] = Mid(strZeile, 790, 11) .[UTA_Normalbeleg_ID] = Mid(strZeile, 801, 11) .[Gebühren_Bescheinigung_von] = DateSerial(Mid(strZeile, 816, 4), Mid(strZeile, 814, 2), Mid(strZeile, 812, 2)) .[Gebühren_Bescheinigung_bis] = DateSerial(Mid(strZeile, 824, 4), Mid(strZeile, 822, 2), Mid(strZeile, 820, 2)) .[Herausgeber_Nutzer_Nummer] = IIf(Trim(Mid(strZeile, 828, 20)) = "", Nothing, Trim(Mid(strZeile, 828, 20))) .[Maßeinheit] = IIf(Trim(Mid(strZeile, 848, 8)) = "", Nothing, Trim(Mid(strZeile, 848, 8))) .[Land_der_Akzeptanzstelle] = IIf(Trim(Mid(strZeile, 856, 3)) = "", Nothing, Trim(Mid(strZeile, 856, 3))) .[Postleitzahl_der_Akzeptanzstelle] = IIf(Trim(Mid(strZeile, 859, 7)) = "", Nothing, Trim(Mid(strZeile, 859, 7))) .[Steuerliches_Lieferland] = IIf(Trim(Mid(strZeile, 866, 3)) = "", Nothing, Trim(Mid(strZeile, 866, 3))) .[Steuerliche_Produktgruppe] = IIf(Trim(Mid(strZeile, 869, 5)) = "", Nothing, Trim(Mid(strZeile, 869, 5))) .[Leistungsort_verlagerbar] = IIf(Trim(Mid(strZeile, 874, 1)) = "", Nothing, Trim(Mid(strZeile, 874, 1))) Select Case .[Vorzeichen_Statusfeld_für_alle_Beträge_und_Mengen] Case "0" 'positiv curChecksumme = curChecksumme + .[Gesamtbetrag_Brutto_in_Darstellwährung] Case "1" 'negativ curChecksumme = curChecksumme - .[Gesamtbetrag_Brutto_in_Darstellwährung] .[Menge] = 0 - .[Menge] .[Einzelpreis_Brutto_in_Lieferlandwährung] = 0 - .[Einzelpreis_Brutto_in_Lieferlandwährung] .[Einzelpreis_Netto_in_Lieferlandwährung] = 0 - .[Einzelpreis_Netto_in_Lieferlandwährung] .[Betrag_Service_in_Lieferlandwährung] = 0 - .[Betrag_Service_in_Lieferlandwährung] .[Betrag_Nachlass_in_Lieferlandwährung] = 0 - .[Betrag_Nachlass_in_Lieferlandwährung] .[Gesamtbetrag_Netto_in_Lieferlandwährung] = 0 - .[Gesamtbetrag_Netto_in_Lieferlandwährung] .[Gesamtbetrag_Brutto_in_Lieferlandwährung] = 0 - .[Gesamtbetrag_Brutto_in_Lieferlandwährung] .[Betrag_Service_in_Darstellwährung] = 0 - .[Betrag_Service_in_Darstellwährung] .[Betrag_Nachlass_in_Darstellwährung] = 0 - .[Betrag_Nachlass_in_Darstellwährung] .[Gesamtbetrag_Netto_in_Darstellwährung] = 0 - .[Gesamtbetrag_Netto_in_Darstellwährung] .[Gesamtbetrag_Umsatzsteuer_in_Darstellwährung] = 0 - .[Gesamtbetrag_Umsatzsteuer_in_Darstellwährung] .[Gesamtbetrag_Brutto_in_Darstellwährung] = 0 - .[Gesamtbetrag_Brutto_in_Darstellwährung] .[Einzelpreis_Brutto_in_Lieferlandwährung_mit_4_Nachkommastellen] = 0 - .[Einzelpreis_Brutto_in_Lieferlandwährung_mit_4_Nachkommastellen] .[Einzelpreis_Netto_in_Lieferlandwährung_mit_4_Nachkommastellen] = 0 - .[Einzelpreis_Netto_in_Lieferlandwährung_mit_4_Nachkommastellen] .[Betrag_Nachlass_in_Lieferlandwährung_Umsatzsteuer_informativ] = 0 - .[Betrag_Nachlass_in_Lieferlandwährung_Umsatzsteuer_informativ] .[Betrag_Service_in_Lieferlandwährung_Umsatzsteuer_informativ] = 0 - .[Betrag_Service_in_Lieferlandwährung_Umsatzsteuer_informativ] .[Gesamtbetrag_in_Lieferlandwährung_Umsatzsteuer_informativ] = 0 - .[Gesamtbetrag_in_Lieferlandwährung_Umsatzsteuer_informativ] End Select If onlyTestkunedn Then 'nur KundenNr 100964 und 825040 speichern: If .[Kundennummer] = 100964 Or .[Kundennummer] = 825040 Then .SAVE() End If Else If .SAVE() Then savedTrans += 1 End If 'Dim clfArchiv As New cUTA.UTAArchiv(.Belegdatum, .UTA_Beleg_ID) 'clfArchiv.Übertragungsnummer = .Übertragungsnummer 'clfArchiv.ErstellDatumUhrzeit = .ErstellDatumUhrzeit 'clfArchiv.Übertragungsposition = .Übertragungsposition 'clfArchiv.Abrechnungsnummer = .Abrechnungsnummer 'clfArchiv.Datum_für_Lieferungen_und_Leistungen_bis = .Datum_für_Lieferungen_und_Leistungen_bis 'clfArchiv.Rechnungsempfänger_Kundennummer = .Rechnungsempfänger_Kundennummer 'clfArchiv.Abrechnungsdatum = .Abrechnungsdatum 'clfArchiv.Kundennummer = .Kundennummer 'clfArchiv.Kartennummer = .Kartennummer 'clfArchiv.Akzeptanzstellennummer = .Akzeptanzstellennummer 'clfArchiv.Standort_der_Akzeptanzstelle = .Standort_der_Akzeptanzstelle 'clfArchiv.Lieferland = .Lieferland 'clfArchiv.Belegnummer_des_Lieferanten = .Belegnummer_des_Lieferanten 'clfArchiv.Kilometerstand = .Kilometerstand 'clfArchiv.Fakturierwarenart = .Fakturierwarenart 'clfArchiv.Vorzeichen_Statusfeld_für_alle_Beträge_und_Mengen = .Vorzeichen_Statusfeld_für_alle_Beträge_und_Mengen 'clfArchiv.Menge = .Menge 'clfArchiv.SB_BT = .SB_BT 'clfArchiv.Umsatzsteuerprozentsatz = .Umsatzsteuerprozentsatz 'clfArchiv.Lieferlandwährung_ISO = .Lieferlandwährung_ISO 'clfArchiv.Einzelpreis_Netto_in_Lieferlandwährung = .Einzelpreis_Netto_in_Lieferlandwährung 'clfArchiv.Einzelpreis_Brutto_in_Lieferlandwährung = .Einzelpreis_Brutto_in_Lieferlandwährung 'clfArchiv.Einzelpreis_Netto_in_Lieferlandwährung = .Einzelpreis_Netto_in_Lieferlandwährung 'clfArchiv.Betrag_Service_in_Lieferlandwährung = .Betrag_Service_in_Lieferlandwährung 'clfArchiv.Betrag_Nachlass_in_Lieferlandwährung = .Betrag_Nachlass_in_Lieferlandwährung 'clfArchiv.Gesamtbetrag_Netto_in_Lieferlandwährung = .Gesamtbetrag_Netto_in_Lieferlandwährung 'clfArchiv.Gesamtbetrag_Brutto_in_Lieferlandwährung = .Gesamtbetrag_Brutto_in_Lieferlandwährung 'clfArchiv.Darstellwährung_ISO = .Darstellwährung_ISO 'clfArchiv.Betrag_Service_in_Darstellwährung = .Betrag_Service_in_Darstellwährung 'clfArchiv.Betrag_Nachlass_in_Darstellwährung = .Betrag_Nachlass_in_Darstellwährung 'clfArchiv.Gesamtbetrag_Netto_in_Darstellwährung = .Gesamtbetrag_Netto_in_Darstellwährung 'clfArchiv.Gesamtbetrag_Umsatzsteuer_in_Darstellwährung = .Gesamtbetrag_Umsatzsteuer_in_Darstellwährung 'clfArchiv.Gesamtbetrag_Brutto_in_Darstellwährung = .Gesamtbetrag_Brutto_in_Darstellwährung 'clfArchiv.Prägetext_i_d_R_KFZ_Kennzeichen = .Prägetext_i_d_R_KFZ_Kennzeichen 'clfArchiv.Kunden_Kostenstelle_1 = .Kunden_Kostenstelle_1 'clfArchiv.Kartentyp = .Kartentyp 'clfArchiv.Filler_Feld_35 = .Filler_Feld_35 'clfArchiv.Filler_Feld_36 = .Filler_Feld_36 'clfArchiv.KZ_Autobahn = .KZ_Autobahn 'clfArchiv.INFO_Feld = .INFO_Feld 'clfArchiv.KFZ_Kennzeichen = .KFZ_Kennzeichen 'clfArchiv.Filler_Feld_40 = .Filler_Feld_40 'clfArchiv.Buchungsart = .Buchungsart 'clfArchiv.Buchungsgrund = .Buchungsgrund 'clfArchiv.Filler_Feld_43 = .Filler_Feld_43 'clfArchiv.Informationsbeleg = .Informationsbeleg 'clfArchiv.Belegherkunft = .Belegherkunft 'clfArchiv.Filler_Feld_46 = .Filler_Feld_46 'clfArchiv.Einzelpreis_Brutto_in_Lieferlandwährung_mit_4_Nachkommastellen = .Einzelpreis_Brutto_in_Lieferlandwährung_mit_4_Nachkommastellen 'clfArchiv.Einzelpreis_Netto_in_Lieferlandwährung_mit_4_Nachkommastellen = .Einzelpreis_Netto_in_Lieferlandwährung_mit_4_Nachkommastellen 'clfArchiv.Rechnungsdatum = .Rechnungsdatum 'clfArchiv.Umsatzsteuerprozentsatz_informativ = .Umsatzsteuerprozentsatz_informativ 'clfArchiv.Betrag_Nachlass_in_Lieferlandwährung = .Betrag_Nachlass_in_Lieferlandwährung 'clfArchiv.Betrag_Service_in_Lieferlandwährung_Umsatzsteuer_informativ = .Betrag_Service_in_Lieferlandwährung_Umsatzsteuer_informativ 'clfArchiv.Gesamtbetrag_in_Lieferlandwährung_Umsatzsteuer_informativ = .Gesamtbetrag_in_Lieferlandwährung_Umsatzsteuer_informativ 'clfArchiv.Fälligkeitsdatum = .Fälligkeitsdatum 'clfArchiv.Zahlungsziel_in_Tagen = .Zahlungsziel_in_Tagen 'clfArchiv.Zahlungsart = .Zahlungsart 'clfArchiv.TC_Rechnungsnummer_gegenüber_dem_Nutzer = .TC_Rechnungsnummer_gegenüber_dem_Nutzer 'clfArchiv.TC_Rechnungsdatum = .TC_Rechnungsdatum 'clfArchiv.Zahlungszielgruppe = .Zahlungszielgruppe 'clfArchiv.Kunden_Kostenstelle_2 = .Kunden_Kostenstelle_2 'clfArchiv.Lieferzeit = .Lieferzeit 'clfArchiv.Fremdkartennummer = .Fremdkartennummer 'clfArchiv.OnBoardUnitID = .OnBoardUnitID 'clfArchiv.KFZ_Kennzeichen_komprimiert = .KFZ_Kennzeichen_komprimiert 'clfArchiv.Kartenkategorie = .Kartenkategorie 'clfArchiv.Rechnungsnummer_pro_Lieferland = .Rechnungsnummer_pro_Lieferland 'clfArchiv.Autobahnauffahrt = .Autobahnauffahrt 'clfArchiv.Autobahnausfahrt = .Autobahnausfahrt 'clfArchiv.Rabattschlüssel_der_französischen_Autobahngesellschaften = .Rabattschlüssel_der_französischen_Autobahngesellschaften 'clfArchiv.Nummer_Belastungsanzeige = .Nummer_Belastungsanzeige 'clfArchiv.Betreuungsstelle = .Betreuungsstelle 'clfArchiv.Filler_Feld_72 = .Filler_Feld_72 'clfArchiv.Akzeptanz_Medium = .Akzeptanz_Medium 'clfArchiv.Steuerkategorie = .Steuerkategorie 'clfArchiv.UTA_Normalbeleg_ID = .UTA_Normalbeleg_ID 'clfArchiv.Gebühren_Bescheinigung_von = .Gebühren_Bescheinigung_von 'clfArchiv.Gebühren_Bescheinigung_bis = .Gebühren_Bescheinigung_bis 'clfArchiv.Herausgeber_Nutzer_Nummer = .Herausgeber_Nutzer_Nummer 'clfArchiv.Maßeinheit = .Maßeinheit 'clfArchiv.Land_der_Akzeptanzstelle = .Land_der_Akzeptanzstelle 'clfArchiv.Postleitzahl_der_Akzeptanzstelle = .Postleitzahl_der_Akzeptanzstelle 'clfArchiv.Steuerliches_Lieferland = .Steuerliches_Lieferland 'clfArchiv.Steuerliche_Produktgruppe = .Steuerliche_Produktgruppe 'clfArchiv.Leistungsort_verlagerbar = .Leistungsort_verlagerbar 'clfArchiv.SAVE() End With Case "90" If curChecksumme < 0 Then curChecksumme = 0 - curChecksumme End If If Trim(Mid(strZeile, 16, 18) / 100) <> Math.Round(curChecksumme, 2) Then MsgBox("Checksumme: " & Trim(Mid(strZeile, 16, 18) / 100) & vbCrLf & "Prüfsumme: " & curChecksumme & vbCrLf & "Datei kann wegen Prüfsummenfehler nicht verarbeitet werden") 'Return False End If lngRecordCount = lngRecordCount + 1 Dim clfTrailer As New cUTA.UTATrailer(lngÜbertragungsnummer, dtmErstellDatumUhrzeit) With clfTrailer .ErstellDatumUhrzeit = dtmErstellDatumUhrzeit .Übertragungsnummer = lngÜbertragungsnummer .Anzahl_Sätze = Mid(strZeile, 3, 13) .Checksumme = Mid(strZeile, 16, 18) / 100 .SAVE() MDMEinarb.ds_total += .Anzahl_Sätze End With Case Else ' Andere RecordNumber überlesen. End Select Loop MDMEinarb.ds_count += savedTrans MDMEinarb.import_date = Now() MDMEinarb.importfilename = fi.Name If MDMEinarb.ds_count = MDMEinarb.ds_total - 2 Then 'header and trailer wegzählen! MDMEinarb.completed = True MDMEinarb.completed_date = Now() End If MDMEinarb.SAVE() Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace & vbNewLine & "Datei: " & Dateiname, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try cnt = CInt(lngRecordCount) objFileRead.Close() Return True End Function Public VERARBEITUNG_PFAD Public ARCHIV_PFAD Public ERROR_PFAD Public ZIEL_PFAD Public FTP_PFAD Public ANLAGEN Public ARCHIV Public API_STRING As String Public API As New DataTable Dim Dateiname = "" Public Function initImportPfade(programName As String) As Boolean ERROR_PFAD = cUTA.Paramter.GET_PARAM_ByName("ERROR_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) ARCHIV_PFAD = cUTA.Paramter.GET_PARAM_ByName("ARCHIV_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) VERARBEITUNG_PFAD = cUTA.Paramter.GET_PARAM_ByName("VERARBEITUNG_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) ZIEL_PFAD = cUTA.Paramter.GET_PARAM_ByName("ZIEL_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) ANLAGEN = cUTA.Paramter.GET_PARAM_ByName("ANLAGEN", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) ARCHIV = cUTA.Paramter.GET_PARAM_ByName("ARCHIV", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) If Not System.IO.Directory.Exists(VERARBEITUNG_PFAD) AndAlso VERARBEITUNG_PFAD <> "" Then System.IO.Directory.CreateDirectory(VERARBEITUNG_PFAD) ElseIf VERARBEITUNG_PFAD = "" Then MsgBox("Verabreitungspfad nicht gesetzt!") End If Return Paramter.getFTPConenction(API_STRING, API, programName) End Function Public Shared Function GET_Antraege_UTA(ByRef dt As DataTable, von As Date, bis As Date, KundenNr As Integer, LandKZ As String, Wahrungscode As String, Optional Archiv As Object = Nothing) As Boolean ' Try Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT [tblUTAImportNew].Rechnungsdatum, [tblUTAImportNew].Rechnungsnummer_pro_Lieferland AS Rechnungsnummer,Adressen.AdressenNr as Kundennummer, [tblUTAImportNew].Kundennummer as KundennummerUTA, Sum([Gesamtbetrag_Brutto_in_Lieferlandwährung]-[Gesamtbetrag_Netto_in_Lieferlandwährung]) AS Umsatzsteuerbetrag_in_Lieferlandwährung, Lieferlandwährung_ISO, Sum([Gesamtbetrag_Brutto_in_Darstellwährung]-[Gesamtbetrag_Netto_in_Darstellwährung]) AS Umsatzsteuerbetrag_in_Darstellwährung, Darstellwährung_ISO, daId FROM [tblUTAImportNew] INNER JOIN Adressen ON [tblUTAImportNew].Kundennummer = Adressen.UTAKundenNr WHERE ([tblUTAImportNew].Rechnungsdatum Between '" & von.ToShortDateString & "' And '" & bis.ToShortDateString & "' AND [tblUTAImportNew].Lieferland_ISO2='" & LandKZ & "' AND [tblUTAImportNew].Lieferlandwährung_ISO='" & Wahrungscode & "' AND Adressen.AdressenNr=" & KundenNr & " AND charged = 1 " & IIf(Archiv, " ", " AND isnull(tblUTAImportNew.UStVAn_ID,0) = 0 ") & " ) GROUP BY [tblUTAImportNew].Rechnungsdatum, [tblUTAImportNew].Rechnungsnummer_pro_Lieferland, Lieferlandwährung_ISO ,Darstellwährung_ISO,Adressen.AdressenNr,[tblUTAImportNew].Kundennummer, daId HAVING (((Sum([Gesamtbetrag_Brutto_in_Lieferlandwährung]-[Gesamtbetrag_Netto_in_Lieferlandwährung]))<>0));", conn) cmd.Parameters.AddWithValue("@von", von) cmd.Parameters.AddWithValue("@bis", bis) cmd.Parameters.AddWithValue("@AdressenNr", KundenNr) Dim dr = cmd.ExecuteReader() dt.Load(dr) 'While dr.Read ' dt.Load(dr) 'End While dr.Close() End Using End Using Return True Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return False End Function Public Shared Function UPDATE_ARCHIV(reDat As Date, reNr As String, uta_kdNr As String, ustvaId As Integer) As Boolean Try Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("reDat", reDat)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("reNr", reNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("uta_kdNr", uta_kdNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ustvaId", ustvaId)) Return SQL.doSQLVarList(" UPDATE [tblUTAImportNew] set archiv=1, [archiviertDatum]=GETDATE(), UStVAn_ID = @ustvaId WHERE cast(Rechnungsdatum as date) = @reDat and Rechnungsnummer_pro_Lieferland = @reNr and Kundennummer=@uta_kdNr ", "FMZOLL",, list) Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return "" End Function Public Class Paramter Shared apiSettingsloaded As Boolean = False Shared SQL As New VERAG_PROG_ALLGEMEIN.SQL Shared Function GET_PARAM_ByName(tcParam_name, TESTSYSTEM) As String Return SQL.getValueTxtBySql("SELECT TOP 1 [Param_value] FROM [tblPartnersystem_Paramter] WHERE Param_system='UTA' AND [Param_name]='" & tcParam_name & "' AND Param_testsystem = " & IIf(TESTSYSTEM, 1, 0), , , SQL.GetNewOpenConnectionFMZOLL_SYSTEM(TESTSYSTEM)) End Function Shared Function getFTPConenction(ByRef API_String As String, ByRef API As DataTable, ByRef program As String) As Boolean API = SQL.loadDgvBySql("SELECT top(1) * FROM tblAPIEinstellungen WHERE api_program='" & program & "' and api_productive ='" & IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "0", "1") & "'", "ADMIN") If API.Rows.Count = 0 Then MsgBox("keine gültigen API-Einstellungen für " & program & " gefunden!") Else apiSettingsloaded = True API_String = API.Rows(0).Item("api_url") End If Return apiSettingsloaded End Function End Class End Class