Imports System.Data.SqlClient Imports System.IO Imports System.Reflection Public Class cRMC Property rmc_id As Integer Property rmc_kdNr As Object = Nothing Property rmc_kdName As Object = Nothing Property rmc_UID As Object = Nothing Property rmc_landKZ As Object = Nothing Property rmc_landBezeichnung As Object = Nothing Property rmc_reDatum As Object = Nothing Property rmc_reNr As Object = Nothing Property rmc_betragNetto As Object = Nothing Property rmc_betragBrutto As Object = Nothing Property rmc_betragMWST As Object = Nothing Property rmc_waehrung As Object = Nothing Property rmc_euroBrutto As Object = Nothing Property rmc_file As Object = Nothing Property rmc_fileNr As Object = Nothing Property rmc_importDatum As DateTime = Now Property rmc_version As Object = Nothing Property rmc_pdfFileName As Object = Nothing Property rmc_daId As Object = Nothing Property rmc_archiviertDatum As Object Property rmc_archiv As Boolean = False Property rmc_fibuNr As Boolean = False Property rmc_sammelReNr As Object = Nothing Public hasEntry = False Dim SQL As New SQL Sub New() End Sub Sub New(rmc_kdNr, rmc_reNr) Me.rmc_kdNr = rmc_kdNr Me.rmc_reNr = rmc_reNr 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("rmc_id", rmc_id)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_kdNr", rmc_kdNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_kdName", rmc_kdName)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_UID", rmc_UID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_landKZ", rmc_landKZ)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_landBezeichnung", rmc_landBezeichnung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_reDatum", rmc_reDatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_reNr", rmc_reNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_betragNetto", rmc_betragNetto)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_betragBrutto", rmc_betragBrutto)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_waehrung", rmc_waehrung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_euroBrutto", rmc_euroBrutto)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_file", rmc_file)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_fileNr", rmc_fileNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_importDatum", rmc_importDatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_version", rmc_version)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_pdfFileName", rmc_pdfFileName)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_daId", rmc_daId)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_archiv", rmc_archiv)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_archiviertDatum", rmc_archiviertDatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_fibuNr", rmc_fibuNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_sammelReNr", rmc_sammelReNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("rmc_betragMWST", rmc_betragMWST)) 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 tblRMCImport WHERE rmc_kdNr=@rmc_kdNr AND rmc_reNr = @rmc_reNr and rmc_archiv is null ) " & " 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 tblRMCImport WHERE rmc_kdNr=@rmc_kdNr AND rmc_reNr = @rmc_reNr", conn) cmd.Parameters.AddWithValue("@rmc_kdNr", rmc_kdNr) cmd.Parameters.AddWithValue("@rmc_reNr", rmc_reNr) 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.MethodInfo.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 tblRMCImport SET " & str & " WHERE rmc_kdNr=@rmc_kdNr AND rmc_reNr = @rmc_reNr ") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.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 tblRMCImport (" & str & ") VALUES(" & values & ") ") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return "" End Function Public Shared Function GET_Antraege_RMC(ByRef dt As DataTable, von As Date, bis As Date, KundenNr As Integer, LandKZ 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 rmc_reDatum,rmc_kdNr,[rmc_reNr],sum([rmc_betragNetto])[rmc_betragNetto],sum([rmc_betragMWST])[rmc_betragMWST] ,sum([rmc_betragBrutto] )[rmc_betragBrutto], [rmc_waehrung], sum([rmc_euroBrutto])[rmc_euroBrutto] FROM [tblRMCImport] INNER JOIN Adressen as adr on rmc_kdNr=adr.[WölflKundenNr] where cast(rmc_reDatum as date) between @von and @bis and AdressenNr=@AdressenNr AND rmc_landKZ ='" & LandKZ & "'" & If(Archiv, " And rmc_archiv =@Archiv ", "") & " group by rmc_reDatum,rmc_kdNr,[rmc_reNr],[rmc_waehrung] having sum([rmc_betragMWST])>0 order by rmc_reDatum", conn) cmd.Parameters.AddWithValue("@von", von) cmd.Parameters.AddWithValue("@bis", bis) cmd.Parameters.AddWithValue("@AdressenNr", KundenNr) If Archiv IsNot Nothing Then cmd.Parameters.AddWithValue("@Archiv", If(Archiv, 1, 0)) 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 Integer, rmc_kdNr 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("rmc_kdNr", rmc_kdNr)) Return SQL.doSQLVarList(" UPDATE [tblRMCImport] set rmc_archiv=1, [rmc_archiviertDatum]=GETDATE() WHERE cast(rmc_reDatum as date) = @reDat and rmc_reNr = @reNr and rmc_kdNr=@rmc_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 VERARBEITUNG_PFAD Public ARCHIV_PFAD Public ERROR_PFAD Public ZIEL_PFAD Public FTP_PFAD Public PDFRECHNUNGEN Public API_STRING As String Public API As New DataTable Dim Dateiname = "" Public Function initImportPfade(programName As String) As Boolean ERROR_PFAD = cRMC.Paramter.GET_PARAM_ByName("ERROR_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) ARCHIV_PFAD = cRMC.Paramter.GET_PARAM_ByName("ARCHIV_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) VERARBEITUNG_PFAD = cRMC.Paramter.GET_PARAM_ByName("VERARBEITUNG_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) ZIEL_PFAD = cRMC.Paramter.GET_PARAM_ByName("ZIEL_PFAD", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) PDFRECHNUNGEN = cRMC.Paramter.GET_PARAM_ByName("PDFRECHNUNGEN", VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM) If Not System.IO.Directory.Exists(VERARBEITUNG_PFAD) Then System.IO.Directory.CreateDirectory(VERARBEITUNG_PFAD) Return Paramter.getFTPConenction(API_STRING, API, programName) 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='RMC' AND [Param_name]='" & tcParam_name & "'", , , 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