main
Stefan Hutter 1 year ago
commit a335fed256

2
.gitignore vendored

@ -0,0 +1,2 @@
.vs/
EDOKA_2024/.vs

@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30501.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EDKB04OP", "EDKB04OP\EDKB04OP.vbproj", "{4D4E0D27-5773-452F-BA0B-7A18EC833470}"
EndProject
Global
GlobalSection(TeamFoundationVersionControl) = preSolution
SccNumberOfProjects = 2
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
SccTeamFoundationServer = http://sb001580/tfs/defaultcollection
SccLocalPath0 = .
SccProjectUniqueName1 = EDKB04OP\\EDKB04OP.vbproj
SccProjectName1 = EDKB04OP
SccLocalPath1 = EDKB04OP
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4D4E0D27-5773-452F-BA0B-7A18EC833470}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4D4E0D27-5773-452F-BA0B-7A18EC833470}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4D4E0D27-5773-452F-BA0B-7A18EC833470}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4D4E0D27-5773-452F-BA0B-7A18EC833470}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

@ -0,0 +1,3 @@
Public Interface Determination
Function Render() As Boolean
End Interface

@ -0,0 +1,23 @@
Imports System.Xml
Public MustInherit Class DocumentsDetermination
Implements Determination
Public MustOverride Function Render() As Boolean Implements Determination.Render
Public Property Contract As XmlDocument
''' <summary>
''' Connection String für die EDOKA Datenbank
''' </summary>
''' <returns></returns>
Public Property ConnectionString As String
Public Property Items As List(Of EdokaDokument)
Public Property Results As List(Of Result)
Public Sub New()
Items = New List(Of EdokaDokument)
Results = New List(Of Result)
End Sub
End Class

@ -0,0 +1,141 @@
Imports System.Data.SqlClient
Imports System.Xml
''' <summary>
''' Zum Suchen von LSV-BEs eines Partners mit Hilfe von zusäztlichen Kriterein (Selektoren).
''' Grundlage für die Klasse bildet die Tatsache, dass man mit einem SELECT Statement wie
''' select d.dokumentid, diw.inhalt from dbo.dokument d
''' inner join dbo.dokumentinfo_wert diw on d.dokumentid = diw.dokumentid
''' where d.dokumenttypnr = 1176
''' and d.nrpar00= 1339632
''' and diw.inhalt in ( 'IBAN;CH4400784013396322002', 'Paginatornummer;02180305004720', 'BE_LSV-ID_gueltig_ab;20180305', 'LSV-ID;SCW1W', 'Referenz1;60211909')
''' schon sehr gut eine LSV-BE finden kann und auch sieht, ob alle Suchkriterien aus dbo.dokumentinfo_wert mitberücksichtigt wurden.
''' </summary>
Public Class DokumentList
Public Sub New(xmlDocument As XmlDocument, ByVal partnerNr As Int32)
Me.XmlDocument = xmlDocument
Me.PartnerNr = partnerNr
Me.Selektors = New List(Of DokumentSelektor)()
End Sub
Public Sub AddSelektor(xmlTagId As String, dokumentWertInhaltId As String, Optional ignoreSpaces As Boolean = False, Optional useValueIndex As Integer = -1,
Optional isDate As Boolean = False)
Dim dokumentSelektor As DokumentSelektor = New DokumentSelektor()
dokumentSelektor.XmlTagId = xmlTagId
dokumentSelektor.DokumentWertInhaltId = dokumentWertInhaltId
dokumentSelektor.Wert = XmlHelper.GetItemValueByTagName(Me.XmlDocument, dokumentSelektor.XmlTagId)
If Not String.IsNullOrEmpty(dokumentSelektor.Wert) Then
If ignoreSpaces Then
dokumentSelektor.Wert = dokumentSelektor.Wert.Replace(" ", "")
End If
If useValueIndex >= 0 Then
Dim values As String() = dokumentSelektor.Wert.Split(";")
dokumentSelektor.Wert = values(useValueIndex)
End If
If isDate Then
dokumentSelektor.Wert = GetInhaltDatumFromXmlDatum(dokumentSelektor.Wert)
End If
Me.Selektors.Add(dokumentSelektor)
End If
End Sub
Private Function GetInhaltDatumFromXmlDatum(wert As String) As String
Dim ret As String = ""
ret = wert.Substring(6, 2) + "." + wert.Substring(4, 2) + "." + wert.Substring(0, 4)
Return ret
End Function
Public Sub Fill()
DokumentIds = New List(Of String)
Dim connectionString As String = Globals.sConnectionString_edoka
Me.SelektorFromInhalt = New Dictionary(Of String, DokumentSelektor)
Using connection As New SqlConnection(connectionString),
dtDokument As New DataTable,
daDokument As New SqlDataAdapter,
scDokument As New SqlCommand
scDokument.Connection = connection
Dim selektorString As String = ""
Dim counter As Integer = 0
' Mit den Selektoren das SqlCommand parametrisieren
For Each selektor As DokumentSelektor In Me.Selektors
Dim paramName As String = "@Inhalt" + counter.ToString()
If selektorString.Length > 0 Then
selektorString = selektorString + ","
End If
selektorString = selektorString + paramName
Dim paramValue As String = selektor.DokumentWertInhaltId + ";" + selektor.Wert
Me.SelektorFromInhalt.Item(paramValue) = selektor
scDokument.Parameters.AddWithValue(paramName, paramValue)
counter = counter + 1
Next
If counter > 0 Then ' wenigstens ein Selektor muss vorhanden sein
Dim commandTextFormat As String = "select d.dokumentid, diw.inhalt from dbo.dokument d
inner join dbo.dokumentinfo_wert diw on d.dokumentid = diw.dokumentid
where d.dokumenttypnr = 1176
and d.nrpar00= {0}
and diw.inhalt in ({1})
order by d.dokumentid, diw.inhalt"
Dim commandText As String = String.Format(commandTextFormat, PartnerNr, selektorString)
scDokument.CommandText = commandText
daDokument.SelectCommand = scDokument
daDokument.Fill(dtDokument)
' In der Tabelle darf nur eine DokumentId aufgeführt sein und zu dieser DokumentId
' müssen alle Selektoren aufgeführt (Property Filled) sein
Dim lastDokumentId As String = ""
For Each row As DataRow In dtDokument.Rows
Dim dokumentId As String = row.Item(0)
If lastDokumentId = "" Then
lastDokumentId = dokumentId
End If
If lastDokumentId <> dokumentId Then
If Me.AllSelektorsFilled() Then
DokumentIds.Add(lastDokumentId)
End If
Me.EmptyAllSelektors()
lastDokumentId = dokumentId
End If
If lastDokumentId = dokumentId Then
Dim inhalt As String = row.Item(1)
Dim selektor As DokumentSelektor = New DokumentSelektor
If SelektorFromInhalt.TryGetValue(inhalt, selektor) Then
selektor.Filled = True
End If
End If
Next
If lastDokumentId <> "" Then
If Me.AllSelektorsFilled() Then
DokumentIds.Add(lastDokumentId)
End If
End If
End If
End Using
End Sub
Private Function AllSelektorsFilled() As Boolean
Dim ret As Boolean = True
For Each selektor As DokumentSelektor In Selektors
If Not selektor.Filled Then
ret = False
Exit For
End If
Next
Return ret
End Function
Private Sub EmptyAllSelektors()
For Each selektor As DokumentSelektor In Selektors
selektor.Filled = False
Next
End Sub
Public Property Selektors As List(Of DokumentSelektor)
Public Property SelektorFromInhalt As Dictionary(Of String, DokumentSelektor)
Public Property XmlDocument As XmlDocument
Public Property PartnerNr As Int32
Public Property DokumentIds As List(Of String)
End Class

@ -0,0 +1,27 @@
Public Class DokumentSelektor
''' <summary>
''' Tag Id des Selektors in der XML Message von Avaloq
''' </summary>
''' <returns></returns>
Public Property XmlTagId As String
''' <summary>
''' Id (das ist der Teil vor dem ;) von dbo.dokumentinfo_wert.inhalt
''' </summary>
''' <returns></returns>
Public Property DokumentWertInhaltId As String
''' <summary>
''' Wert des XML Tags aus der Message von Avaloq
''' </summary>
''' <returns></returns>
Public Property Wert As String
''' <summary>
''' True: Der Selektor wurde in die DataTable abgefüllt
''' False: Der Selektor fehlt in der DataTable
''' </summary>
''' <returns></returns>
Public Property Filled As Boolean = False
End Class

@ -0,0 +1,76 @@
Imports System.ServiceProcess
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class EDKB04OP
Inherits System.ServiceProcess.ServiceBase
'UserService überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
' Der Haupteinstiegspunkt für den Prozess
<MTAThread()> _
<System.Diagnostics.DebuggerNonUserCode()> _
Shared Sub Main()
#If CONFIG = "Release" Then
Dim ServicesToRun() As System.ServiceProcess.ServiceBase
ServicesToRun = New System.ServiceProcess.ServiceBase() {New EDKB04OP}
System.ServiceProcess.ServiceBase.Run(ServicesToRun)
#Else
Dim myServ As New EDKB04OP()
myServ.OnStart({""})
While (True)
System.Threading.Thread.Sleep(2000)
End While
#End If
''#If DEBUG Then
'' Dim myServ As New EDKB04OP()
'' myServ.OnStart({""})
'' While (True)
'' System.Threading.Thread.Sleep(2000)
'' End While
''#Else
'' Dim ServicesToRun() As System.ServiceProcess.ServiceBase
'' ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1()}
''System.ServiceProcess.ServiceBase.Run(ServicesToRun)
'Dim ServicesToRun() As System.ServiceProcess.ServiceBase
'' Innerhalb eines Prozesses können mehrere NT-Dienste ausgeführt werden. Um einen
'' weiteren Dienst zu diesem Prozess hinzuzufügen, ändern Sie die folgende Zeile,
'' um ein zweites Dienstobjekt zu erstellen. Zum Beispiel
''
'' ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1, New MySecondUserService}
''
'ServicesToRun = New System.ServiceProcess.ServiceBase() {New EDKB04OP}
'System.ServiceProcess.ServiceBase.Run(ServicesToRun)
''#End If
End Sub
'Wird vom Komponenten-Designer benötigt.
Private components As System.ComponentModel.IContainer
' Hinweis: Die folgende Prozedur ist für den Komponenten-Designer erforderlich.
' Das Bearbeiten ist mit dem Komponenten-Designer möglich.
' Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
components = New System.ComponentModel.Container()
Me.ServiceName = "Service1"
End Sub
End Class

@ -0,0 +1,497 @@
''---------------------------------------------------------------------------------------------------------------------
'' Copyright TKB - all rights reserved
'' Erstellt am : Unbekannt
'' Erstellt durch: Stefan Hutter, TKB
'' Fachbereich : TEC
'' Beschreibung :
''
'' History :
''--------------------------------------------------------------------------------------------------------------------
'' Datum Name, Firma Beschreibung
''--------------------------------------------------------------------------------------------------------------------
'' 22.05.2017 Tobias Verstappen, TKB Programm so ergänzt, dass neue XML Files erkannt werden und in die EDOKA
'' Datenbank gespeichert werden.
''--------------------------------------------------------------------------------------------------------------------
Imports System.Timers
Imports IBM.WMQ
Imports System.ServiceProcess
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Xml
Imports System.Data.SqlClient
Imports System.IO
Imports System.Reflection
Imports bms
Imports System.Text.RegularExpressions
Public Class EDKB04OP
Inherits System.ServiceProcess.ServiceBase
Dim WithEvents tmrQueuePolling As Timer = New Timer(2000)
Dim myStopper As ErrorStopper
Dim fileWatch As New FileSystemWatcher()
#Region " Vom Component Designer generierter Code "
Public Sub New()
MyBase.New()
' Dieser Aufruf wird vom Komponenten-Designer benötigt.
InitializeComponent()
' Fügen Sie Initialisierungscode hinter dem InitializeComponent()-Aufruf ein
End Sub
''UserService überschreibt den Löschvorgang zum Bereinigen der Komponentenliste.
'Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
' If disposing Then
' If Not (components Is Nothing) Then
' components.Dispose()
' End If
' End If
' MyBase.Dispose(disposing)
'End Sub
'' Der Haupteinstiegspunkt für den Vorgang
'<MTAThread()> _
'Shared Sub Main()
' Dim ServicesToRun() As System.ServiceProcess.ServiceBase
' ServicesToRun = New System.ServiceProcess.ServiceBase() {New EDKB04OP}
' System.ServiceProcess.ServiceBase.Run(ServicesToRun)
'End Sub
#End Region
#Region "StartStop"
Protected Overrides Sub OnStart(ByVal args() As String)
Try
'init BMS
#If CONFIG = "Release" Then
Dim m_log1 As New bms.Logging(6, Common.Common.JobType.WatchJob)
m_logOld = m_log1
#Else
Dim m_log1 As New Globals.log
m_logOld = m_log1
#End If
'#If DEBUG Then
' Dim m_log1 As New Globals.log
' m_log = m_log1
'#Else
'Dim m_log1 As New bms.Logging(6, Common.Common.JobType.WatchJob)
'm_log = m_log1
'#End If
Dim m_logAdapter As New Globals.LogAdapter
m_log = m_logAdapter
m_log.start()
m_log.log("EDKB04: Start", Common.Common.JournalEntryType.Information)
'Init Params
Params.Loadparameters()
m_log.log("EDKB04: Params.WaitForBrake= " & Params.WaitForBrake, Common.Common.JournalEntryType.Information)
'Init File Watcher
fileWatch.Path = Params.Watchdir
fileWatch.IncludeSubdirectories = False
fileWatch.Filter = "*.xml"
AddHandler fileWatch.Created, New FileSystemEventHandler(AddressOf OnFileEvent)
fileWatch.EnableRaisingEvents = True
'init DB-Connection
Dim sconnection = New DB_Connection()
'init Timer
tmrQueuePolling.AutoReset = False
If CInt(Params.TimerInterval) > 0 Then
tmrQueuePolling.Start()
m_log.Log("EDKB04: tmrQueuePolling.Started")
Else
tmrQueuePolling.Enabled = False
End If
'Init Error Stopper
Me.myStopper = New ErrorStopper
Me.myStopper.init(Params.nb_errors, Params.nb_seconds)
Catch ex As Exception
WriteLog("BMS-Connection / XML: " + ex.Message, appPath + "Error.txt")
m_log.log(ex.Message, Common.Common.JournalEntryType.Error)
Exit Sub
End Try
End Sub
Protected Overrides Sub OnStop()
' Hier Code zum Ausführen erforderlicher Löschvorgänge zum Beenden des Dienstes einfügen.
m_log.log("EDKB04 Stop", Common.Common.JournalEntryType.Information)
m_log.ende()
End Sub
#End Region
#Region "Log"
Private Sub WriteLog(ByVal stext As String, ByVal sPfad As String)
Try
Dim FiStr As FileStream = New FileStream(sPfad, FileMode.Append)
Dim StrWr As StreamWriter = New StreamWriter(FiStr)
StrWr.WriteLine("Fehler: " + Now() & " Text:" & stext)
StrWr.Close()
Catch ex As Exception
End Try
End Sub
Private Function writeDebug(ByVal xmlstring As String, Optional ByVal filenameSuffix As String = "", Optional ByVal filenameBase As String = "") As String
Dim result As Boolean = True
Dim filename As String = ""
Try
Dim writer As System.IO.StreamWriter
Dim filetimestamp As String = GetFormatNow()
If filenameBase <> "" Then
filetimestamp = filenameBase
End If
filename = Params.DebugDir & filetimestamp & filenameSuffix & ".xml"
writer = IO.File.AppendText(filename)
writer.WriteLine(xmlstring)
writer.Close()
Catch ex As Exception
m_log.Log("EDKB04: Error beim Abspeichern der Debug .xml Daten")
result = False
End Try
Return filename
End Function
Private Sub renameFromXmlToErr(ByVal filename As String)
Try
If filename.EndsWith(".xml") Then
filename = filename.Substring(0, filename.Length - 4)
File.Move(filename & ".xml", filename & ".err")
End If
Catch ex As Exception
m_log.log("EDKB04: Error in renameFromXmlToErr()")
End Try
End Sub
#End Region
#Region "Timer"
Public Sub OnTimedEvent(ByVal source As Object, ByVal e As ElapsedEventArgs) Handles tmrQueuePolling.Elapsed
Try
m_log.Log("EDKB04: OnTimedEvent called", Common.Common.JournalEntryType.Information)
ReadfromMQ()
Catch ex As Exception
m_log.Log("EDKB04: Exception catched in OnTimedEvent()")
Finally
tmrQueuePolling.Start()
m_log.Log("EDKB04: tmrQueuePolling.Started")
End Try
End Sub
#End Region
Public Function IsKreditantragWizardMessage(Message As String) As Boolean
Dim ret As Boolean
ret = False
Dim regex As Regex = New Regex("DokumentTypNr")
Dim match As Match = regex.Match(Message)
If match.Success Then
ret = True
End If
Return ret
End Function
Private Function GetXmlFromDoc(XmlDoc As XmlDocument) As String
Dim ret As String
Using stringWriter = New StringWriter()
Using xmlTextWriter = New System.Xml.XmlTextWriter(stringWriter)
xmlTextWriter.Formatting = Formatting.Indented
XmlDoc.WriteTo(xmlTextWriter)
xmlTextWriter.Flush()
ret = stringWriter.GetStringBuilder().ToString()
End Using
End Using
Return ret
End Function
''' <summary>
''' Fügt die TGNummer des Erstellers und die XML-Datei in die Datenbank (edk_data) ein.
''' </summary>
''' <param name="Message"></param>
''' <remarks></remarks>
Sub InsertMessageIntoTableEdkData(Message As String)
Dim sql As String
Dim doc As New XmlDocument
Dim node As XmlNode
doc.LoadXml(Message)
node = doc.SelectSingleNode("/action/actionId")
'node.InnerText = "3"
Message = Message.Replace("<actionId>" + node.InnerText + "</actionId>", "<actionId>3</actionId>") + vbCrLf
'Message = doc.OuterXml
'Message = GetXmlFromDoc(doc)
'Holt die TGNummer des Erstellers aus dem XML
Dim TGNummer As String = XmlHelper.GetItemValueByTagName(doc, "creatorTg")
TGNummer = TGNummer.ToLower
Using adapter As SqlDataAdapter = New SqlDataAdapter
Using connection As SqlConnection = New SqlConnection(Globals.sConnectionString_edoka)
sql = "insert into edk_data (TGNummer, Status, xmldata) values(@tgNummer, 0, @data)"
Try
connection.Open()
Using insertCommand As SqlCommand = New SqlCommand(sql, connection)
adapter.InsertCommand = insertCommand
Dim dataBytes As Byte()
dataBytes = System.Text.Encoding.GetEncoding("iso-8859-1").GetBytes(Message)
adapter.InsertCommand.Parameters.AddWithValue("@data", dataBytes)
adapter.InsertCommand.Parameters.AddWithValue("@tgNummer", TGNummer)
adapter.InsertCommand.ExecuteNonQuery()
End Using
Catch ex As Exception
m_log.log("EDKB04: InsertMessageIntoTableXmlData Error: " & ex.ToString())
End Try
End Using
End Using
End Sub
#Region "File Watcher"
Private Sub OnFileEvent(ByVal source As Object, ByVal e As FileSystemEventArgs)
Globals.archiveFilename = ""
Try
'Threading.Thread.Sleep(2000)
Dim di As New IO.DirectoryInfo(Params.Watchdir)
Dim diar1 As IO.FileInfo() = di.GetFiles("*.xml")
Dim dra As IO.FileInfo
Dim data As String
Dim counter As Integer = 0
For Each dra In diar1
counter = counter + 1
Dim fil As New StreamReader(dra.FullName)
data = fil.ReadToEnd()
fil.Close()
HandleXmlContent(data, dra.Name)
File.Delete(dra.FullName)
Next
Catch ex As Exception
m_log.log("EDKB04: FileWatcher Error: " & ex.Message, Common.Common.JournalEntryType.Error)
End Try
End Sub
#End Region
#Region "MQ"
Private lastFormatNow As String = Format(Now, "yyyyMMddHHmmssffff")
Private Function GetFormatNow() As String
Dim thisFormatNow = Format(Now, "yyyyMMddHHmmssffff")
While thisFormatNow = lastFormatNow
Threading.Thread.Sleep(5)
thisFormatNow = Format(Now, "yyyyMMddHHmmssffff")
End While
lastFormatNow = thisFormatNow
Return thisFormatNow
End Function
Private Function GetFilenameIndex(ByVal indexCounter As Integer)
End Function
Private Sub HandleXmlContent(ByVal strXMLContent As String, Optional ByVal givenFilename As String = "")
Dim filename1 As String = ""
Dim filename2 As String = ""
'Me.Log("Message Content:" & strMsg)
If Params.DebugMode Then
If givenFilename <> "" Then
If givenFilename.ToLower().EndsWith(".xml") Then
givenFilename = givenFilename.Substring(0, givenFilename.Length - 4)
End If
filename1 = givenFilename & "_" & GetFormatNow()
Else
filename1 = GetFormatNow()
End If
End If
Globals.archiveFilename = filename1
'm_log.Log("EDKB04: filename1 = " & filename1)
'm_log.Log("EDKB04: Message Length:" & Len(strMsg) & " Chars", Common.Common.JournalEntryType.Information)
Dim splitter() As String
Dim splitstring = "<?xml version="
splitter = Split(strXMLContent, splitstring,, CompareMethod.Text)
' look ahead: wieviele Xmls sind wirklich im strXMLContent
Dim numberOfXmls As Integer = 0
For i As Integer = 0 To splitter.Length - 1
Dim xml As String = splitter(i)
If xml.Trim() <> "" Then
numberOfXmls = numberOfXmls + 1
End If
Next
Dim filenameIndex As Integer = 1
If numberOfXmls > 1 Then
If Params.WriteUnsplittedFile > 0 Then
Me.writeDebug(strXMLContent, "unsplitted", filename1)
End If
Else
'kein Filename Index, wenn nur ein Xml da ist
filenameIndex = 0
End If
For i As Integer = 0 To splitter.Length - 1
Dim xml As String = splitter(i)
If xml.Trim() <> "" Then
xml = splitstring + splitter(i)
If Params.DebugMode Then
Dim filenameIndexText As String = ""
If filenameIndex > 0 Then
filenameIndexText = String.Format("split{0,5:D5}", filenameIndex)
End If
filename2 = Me.writeDebug(xml, filenameIndexText, filename1)
'm_log.Log("EDKB04: filename2 = " & filename2)
filenameIndex = filenameIndex + 1
End If
If Not XMLtoObj(xml) Then
If Params.DebugMode Then
Me.renameFromXmlToErr(filename2)
End If
End If
If Params.WaitForBrake > 0 Then
Dim currentDate1 As DateTime = DateTime.Now
Threading.Thread.Sleep(Params.WaitForBrake)
Dim currentDate2 As DateTime = DateTime.Now
Dim elapsedTicks As Long = currentDate2.Ticks - currentDate1.Ticks
Dim elapsedSpan As TimeSpan = New TimeSpan(elapsedTicks)
m_log.Log(String.Format("EDKB04: elapsedTicks = {0}", elapsedTicks))
End If
End If
Next
End Sub
Private Function ReadfromMQ() As Boolean
Globals.archiveFilename = ""
Dim mqQMgr As MQQueueManager '* MQQueueManager instance
Dim mqQueue As MQQueue = Nothing '* MQQueue instance
Dim queueName As String '* Name of queue to use
Dim strMsg As String
Dim result As Boolean
'tmrQueuePolling.Stop()
'm_log.Log("EDKB04: Start MQ Verbindungsaufbau", Common.Common.JournalEntryType.Information)
queueName = Params.MQQueueName
Try
MQEnvironment.Hostname = Params.MQHostname 'Bsp: "vb0049d"
MQEnvironment.Port = Params.MQPort 'Bsp: 1416
MQEnvironment.Channel = Params.MQChannel 'Bsp: "TGKB.D16.EDOKA.CL"
Try
mqQMgr = New MQQueueManager()
mqQueue = mqQMgr.AccessQueue(queueName, MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING) '* open queue for input but not if MQM stopping
Catch ex As Exception
m_log.Log("EDKB04: MQ Error: " & ex.Message, Common.Common.JournalEntryType.Error)
End Try
Catch mqe As IBM.WMQ.MQException
m_log.Log("EDKB04: Error: " & mqe.Message, Common.Common.JournalEntryType.Error)
m_log.Log("EDKB04: Errorcode: " & mqe.CompletionCode, Common.Common.JournalEntryType.Error)
m_log.Log("EDKB04: Reasoncode: " & mqe.ReasonCode, Common.Common.JournalEntryType.Error)
End Try
Try
Dim isContinue As Boolean = True
Dim strXMLContent As String
Do While (isContinue = True)
Globals.archiveFilename = ""
Dim mqMsg As MQMessage '* MQMessage instance
Dim mqGetMsgOpts As MQGetMessageOptions '* MQGetMessageOptions instance
mqMsg = New MQMessage()
mqGetMsgOpts = New MQGetMessageOptions()
Try
If CInt(Params.TimerInterval) > 0 Then
mqGetMsgOpts.WaitInterval = CInt(Params.TimerInterval)
Else
mqGetMsgOpts.WaitInterval = 15000 '* 15 second limit for waiting
End If
Catch ex As Exception
mqGetMsgOpts.WaitInterval = 15000 '* 15 second limit for waiting
End Try
mqGetMsgOpts.Options = MQC.MQGMO_WAIT
Try
mqQueue.Get(mqMsg, mqGetMsgOpts)
'mqQueue.
If (mqMsg.Format.CompareTo(MQC.MQFMT_STRING) = 0) Then
strMsg = mqMsg.ReadString(mqMsg.MessageLength)
strMsg = strMsg
strXMLContent = strMsg
HandleXmlContent(strXMLContent)
result = True
Else
If Me.myStopper.insert Then m_log.log("EDKB04: Non-text message", Common.Common.JournalEntryType.Error)
result = False
End If
Catch mqe As IBM.WMQ.MQException
'* report reason, if any
If (mqe.Reason = MQC.MQRC_NO_MSG_AVAILABLE) Then
'* special report for normal end
m_log.log("EDKB04: no more messages", Common.Common.JournalEntryType.Information)
isContinue = False
Else
'* general report for other reasons
If Me.myStopper.insert Then m_log.log("EDKB04: MQQueue::Get ended with {0}: " & mqe.Message, Common.Common.JournalEntryType.Error)
'* treat truncated message as a failure for this sample
'If (mqe.Reason = MQC.MQRC_TRUNCATED_MSG_FAILED) Then
isContinue = False
'End If
End If
result = False
End Try
If LCase(Params.LoopQueue) = "false" Then
isContinue = False
End If
Loop
Catch ex As Exception
If Me.myStopper.insert Then m_log.log("EDKB04: Error bei GET: " & ex.Message, Common.Common.JournalEntryType.Error)
result = False
Finally
If CInt(Params.TimerInterval) > 0 Then
'tmrQueuePolling.Start()
End If
End Try
Return result
End Function
Private Function XMLtoObj(ByVal strXMLContent As String) As Boolean
Dim result As Boolean
If (IsKreditantragWizardMessage(strXMLContent)) Then
InsertMessageIntoTableEdkData(strXMLContent)
result = True
Else
Try
'm_log.Log("EDKB04: Lese XML String in Objekt", Common.Common.JournalEntryType.Information)
Dim xmlh As New xmlHandling(strXMLContent)
result = xmlh.Result
xmlh = Nothing
'm_log.Log("EDKB04: Lese XML String in Objekt ENDE", Common.Common.JournalEntryType.Information)
Catch ex As Exception
m_log.log("EDKB04: Error bei XML->Obj: " & ex.Message, Common.Common.JournalEntryType.Error)
result = False
End Try
End If
Return result
End Function
#End Region
End Class

@ -0,0 +1,206 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{4D4E0D27-5773-452F-BA0B-7A18EC833470}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>EDKB04.EDKB04OP</StartupObject>
<RootNamespace>EDKB04</RootNamespace>
<AssemblyName>EDKB04</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Console</MyType>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
<TargetFrameworkProfile />
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>EDKB04.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>EDKB04.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="amqmdnet">
<HintPath>dlls\amqmdnet.dll</HintPath>
</Reference>
<Reference Include="BMS">
<HintPath>dlls\BMS.dll</HintPath>
</Reference>
<Reference Include="Common">
<HintPath>dlls\Common.dll</HintPath>
</Reference>
<Reference Include="DataAccess">
<HintPath>dlls\DataAccess.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration.Install" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.ServiceProcess" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Diagnostics" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
</ItemGroup>
<ItemGroup>
<Compile Include="clsconnectionprovider.vb" />
<Compile Include="clsParameter.vb" />
<Compile Include="db_connection.vb" />
<Compile Include="DocumentsDetermination.vb" />
<Compile Include="Dokument\DokumentList.vb" />
<Compile Include="Dokument\DokumentSelektor.vb" />
<Compile Include="EdokaDokument.vb" />
<Compile Include="EdokaSqlDb.vb" />
<Compile Include="ErrorStopper.vb" />
<Compile Include="Globals.vb" />
<Compile Include="LsvBe\CanceledDocuments.vb" />
<Compile Include="Determination.vb" />
<Compile Include="LsvBe\ExistingDocuments.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="EDKB04OP.vb">
<SubType>Component</SubType>
</Compile>
<Compile Include="EDKB04OP.Designer.vb">
<DependentUpon>EDKB04OP.vb</DependentUpon>
</Compile>
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="ProjectInstaller.vb">
<SubType>Component</SubType>
</Compile>
<Compile Include="Result.vb" />
<Compile Include="xmlHandling.vb" />
<Compile Include="xmlhelper.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="ProjectInstaller.resx">
<DependentUpon>ProjectInstaller.vb</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="bms_conn.cfg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="edokaconn.cfg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="journaleconn.cfg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="parameter.cfg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Content Include="bms_settings.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="demopartner.xml" />
<Content Include="dlls\amqmdnet.dll" />
<Content Include="dlls\BMS.dll" />
<Content Include="dlls\Common.dll" />
<Content Include="dlls\DataAccess.dll" />
<Content Include="ParameterCfgDescription.txt" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

@ -0,0 +1,10 @@
""
{
"FILE_VERSION" = "9237"
"ENLISTMENT_CHOICE" = "NEVER"
"PROJECT_FILE_RELATIVE_PATH" = ""
"NUMBER_OF_EXCLUDED_FILES" = "0"
"ORIGINAL_PROJECT_FILE_PATH" = ""
"NUMBER_OF_NESTED_PROJECTS" = "0"
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
}

@ -0,0 +1,30 @@
Public Class EdokaDokument
Public Function Cancel(ByVal message As String) As Boolean
Dim ret As Boolean = False
If Me.IsAbgeschlossen() Then
Dim edokaSqlDb As EdokaSqlDb = New EdokaSqlDb(Globals.sConnectionString_edoka)
edokaSqlDb.CancelDocument(Me.Id, message)
ret = Me.IsAufgehoben()
End If
Return ret
End Function
Public Function IsAbgeschlossen() As Boolean
Dim ret As Boolean = False
Dim edokaSqlDb As EdokaSqlDb = New EdokaSqlDb(Globals.sConnectionString_edoka)
ret = edokaSqlDb.IsDokumentAbgeschlossen(Me.Id)
Return ret
End Function
Public Function IsAufgehoben() As Boolean
Dim ret As Boolean = False
Dim edokaSqlDb As EdokaSqlDb = New EdokaSqlDb(Globals.sConnectionString_edoka)
ret = edokaSqlDb.IsDokumentAufgehoben(Me.Id)
Return ret
End Function
Public Property Id As String
End Class

@ -0,0 +1,77 @@
Imports System.Data.SqlClient
''' <summary>
''' Adapter für Edoka Datenbank auf dem SQL Server
''' </summary>
Public Class EdokaSqlDb
Public Sub New(connectionString As String)
Me.ConnectionString = connectionString
End Sub
Public Function GetDokumentStatusBezeichnungsNr(dokumentId As String) As Integer
Dim ret As Integer = 0
Using connection As New SqlConnection(ConnectionString),
cmd As SqlCommand = New SqlCommand("select top 1 ds.status_bezeichnungnr from dbo.statushistory sh
inner join dbo.dokument_status ds on ds.dokument_statusnr = sh.status
where dokumentid = @dokumentid
order by sh.erstellt_am desc", connection),
DataTable As DataTable = New DataTable(),
sqlDataAdapter As SqlDataAdapter = New SqlDataAdapter()
cmd.Parameters.AddWithValue("@dokumentid", dokumentId)
sqlDataAdapter.SelectCommand = cmd
sqlDataAdapter.Fill(DataTable)
If DataTable.Rows.Count = 1 Then
ret = DataTable.Rows(0)(0)
End If
End Using
Return ret
End Function
Public Function IsDokumentAbgeschlossen(dokumentId As String) As Boolean
Dim ret As Boolean = False
Dim dokumentStatusBezeichnungsNr As Integer =
GetDokumentStatusBezeichnungsNr(dokumentId)
If dokumentStatusBezeichnungsNr = -2 Then ret = True
Return ret
End Function
Public Function IsDokumentAufgehoben(dokumentId As String) As Boolean
Dim ret As Boolean = False
Dim dokumentStatusBezeichnungsNr As Integer =
GetDokumentStatusBezeichnungsNr(dokumentId)
If dokumentStatusBezeichnungsNr = -3 Then ret = True
Return ret
End Function
''' <summary>
''' gemäss Stackoverflow https://stackoverflow.com/a/10373384
''' </summary>
''' <param name="email"></param>
''' <param name="betreff"></param>
''' <param name="meldung"></param>
Public Sub SendMail(ByVal email As String, ByVal betreff As String, ByVal meldung As String)
If meldung.Length > 1020 Then meldung = meldung.Substring(0, 1020)
Using connection As New SqlConnection(ConnectionString),
cmd As SqlCommand = New SqlCommand("dbo.sp_sendmail", connection)
connection.Open()
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@email", email)
cmd.Parameters.AddWithValue("@betreff", betreff)
cmd.Parameters.AddWithValue("@meldung", meldung)
cmd.ExecuteNonQuery()
End Using
End Sub
Public Sub CancelDocument(ByVal dokumentId As String, ByVal meldung As String)
Using connection As New SqlConnection(ConnectionString),
cmd As SqlCommand = New SqlCommand("dbo.sp_dokument_aufheben_nach_dokumentid", connection)
connection.Open()
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@dokumentid", dokumentId)
cmd.Parameters.AddWithValue("@Meldung ", meldung)
cmd.ExecuteNonQuery()
End Using
End Sub
Property ConnectionString As String
End Class

@ -0,0 +1,34 @@
Public Class ErrorStopper
Private nb_events As Integer = 0
Private nb_seconds As Integer = 0
Private myStack As ArrayList
Public Function insert() As Boolean
Dim result As Boolean = True
'Neues Element rein
Dim new_el As New DateTime
new_el = Now()
myStack.Add(new_el)
'Alte löschen
Dim check_el As DateTime
Dim i As Integer = myStack.Count
Do While i > 0
check_el = myStack.Item(0)
If DateAdd(DateInterval.Second, nb_seconds, check_el) < Now() Then
myStack.RemoveAt(0)
End If
i = i - 1
Loop
'Check ob Menge überschritten
If myStack.Count >= nb_events Then result = False
Return result
End Function
Public Sub init(ByVal numberOfEvents As Integer, ByVal periodInSeconds As Integer)
Me.nb_events = numberOfEvents
Me.nb_seconds = periodInSeconds
Me.myStack = New ArrayList
End Sub
End Class

@ -0,0 +1,90 @@
Imports System.Reflection
Imports System.IO
#If CONFIG = "Debug" Then
Imports System.Diagnostics
#End If
Module Globals
Public Applikationsdaten As DataTable
Public AppldataRow As Integer
Public sConnectionString_edoka As String
Public sConnectionString_journale As String
Public sConnectionString_tgdata As String
Public args As String() = Environment.GetCommandLineArgs()
Public Params As New ClsParameter()
Public conn_edoka As New edokadb.clsConnectionProvider()
Public conn_journale As New edokadb.clsConnectionProvider()
Public conn_tgdata As New edokadb.clsConnectionProvider()
Public Fehler As Integer = 0
Public Warning As Integer = 0
Public DokumentID As String
Public ColdDokumentID As String
Public KeyNr As Long
Public ofile As System.IO.File
Public oread As System.IO.StreamReader
'test
'NEU
Public appPath As String = Path.GetDirectoryName([Assembly].GetEntryAssembly().Location) + "\"
Public archiveFilename As String = ""
Public ReadOnly Property LogId As String
Get
Dim ret As String = ""
If archiveFilename <> "" Then
ret = " [" & archiveFilename & "]"
End If
Return ret
End Get
End Property
#Region "BMS - Normal"
Public Class LogAdapter
Sub log(ByVal msg As String, Optional type As Integer = 0)
m_logOld.Log(msg & LogId, type)
End Sub
Public Sub start()
m_logOld.Start()
End Sub
Public Sub ende()
m_logOld.Ende()
End Sub
End Class
Public m_log As LogAdapter
#If CONFIG = "Release" Then
Public m_logOld As bms.Logging
#Else
Public m_logOld As log
Public Class log
Sub log(ByVal msg As String, Optional type As Integer = 0)
Debug.Print("{0}: {1}", type, msg)
End Sub
Public Sub start()
End Sub
Public Sub ende()
End Sub
End Class
#End If
#End Region
End Module

@ -0,0 +1,32 @@
Imports System.Xml
Namespace LsvBe
Public Class CanceledDocuments
Inherits DocumentsDetermination
''' <summary>
''' Hebt die LSV BEs gemäss Contract auf.
''' Dazu wird der ConnectionString benötigt
''' </summary>
''' <returns>True, wenn ein einziges Dokument identifiziert und aufgehoben werden konnte. Sonst False</returns>
Public Overrides Function Render() As Boolean
Dim ret As Boolean = False
Dim existingDocuments As ExistingDocuments = New ExistingDocuments()
existingDocuments.ConnectionString = Me.ConnectionString
existingDocuments.Contract = Me.Contract
existingDocuments.Render()
Me.Results.AddRange(existingDocuments.Results)
If existingDocuments.Items.Count = 1 Then
For Each dokument As EdokaDokument In existingDocuments.Items
ret = dokument.Cancel("EDKB04 hat eine LSV Stammdaten Message von Avaloq erhalten und deshalb das Dokument aufgehoben")
If ret Then Me.Items.Add(dokument)
Next
End If
Return ret
End Function
End Class
End Namespace

@ -0,0 +1,48 @@
Namespace LsvBe
Public Class ExistingDocuments
Inherits DocumentsDetermination
''' <summary>
''' Füllt Items mit passenden Dokumenten. Zuerst wird nur mit Partner- und Paginatornummer gesucht.
''' Die restlichen Suchkriterien werden erst angewendet, wenn mit Partner- und Paginatornummer
''' keine passenden Dokumente gefunden werden können.
''' </summary>
''' <returns>Always true</returns>
Public Overrides Function Render() As Boolean
Dim ret As Boolean = True
Dim partnerNummer As String = XmlHelper.GetItemValueByTagName(Me.Contract, "partnerNummer")
If Not String.IsNullOrEmpty(partnerNummer) Then
Dim dokumentList As DokumentList = New DokumentList(Me.Contract, partnerNummer)
dokumentList.AddSelektor("pagi_nr", "Paginatornummer", True)
dokumentList.Fill()
For Each dokumentId As String In dokumentList.DokumentIds
Dim edokaDokument As EdokaDokument = New EdokaDokument()
edokaDokument.Id = dokumentId
Me.Items.Add(edokaDokument)
Next
If Me.Items.Count = 0 Then
Dim lsvIds As String = XmlHelper.GetItemValueByTagName(Me.Contract, "lsvId")
Dim numberOfLists As Integer = lsvIds.Split(";").Length
If numberOfLists = 0 Then numberOfLists = 1
For counter As Integer = 0 To numberOfLists - 1
dokumentList = New DokumentList(Me.Contract, partnerNummer)
dokumentList.AddSelektor("iban", "IBAN")
dokumentList.AddSelektor("lsvId", "LSV-ID", False, counter)
dokumentList.AddSelektor("openDate", "BE_LSV-ID_gueltig_ab", False, -1, True)
dokumentList.AddSelektor("ref1", "Referenz1")
dokumentList.AddSelektor("ref2", "Referenz2")
dokumentList.Fill()
For Each dokumentId As String In dokumentList.DokumentIds
Dim edokaDokument As EdokaDokument = New EdokaDokument()
edokaDokument.Id = dokumentId
Me.Items.Add(edokaDokument)
Next
Next
End If
End If
Return ret
End Function
End Class
End Namespace

@ -0,0 +1,13 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.34014
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>false</MySubMain>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>3</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

@ -0,0 +1,35 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' Allgemeine Informationen über eine Assembly werden über die folgenden
' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
' die mit einer Assembly verknüpft sind.
' Die Werte der Assemblyattribute überprüfen
<Assembly: AssemblyTitle("EDKB04OP")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("EDKB04OP")>
<Assembly: AssemblyCopyright("Copyright © 2014")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
<Assembly: Guid("c3fb0e9d-c04c-482b-af9b-1f71c47d03b5")>
' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
'
' Hauptversion
' Nebenversion
' Buildnummer
' Revision
'
' Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
' übernehmen, indem Sie "*" eingeben:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

@ -0,0 +1,63 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.34014
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary>
''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("EDKB04.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
End Module
End Namespace

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

@ -0,0 +1,73 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.34014
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "Funktion zum automatischen Speichern von My.Settings"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.EDKB04.My.MySettings
Get
Return Global.EDKB04.My.MySettings.Default
End Get
End Property
End Module
End Namespace

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

@ -0,0 +1,24 @@
WaitForBrake
============
Damit kann nach jeder XML Verarbeitung eine Pause eingelegt werden.
Die Pause wird mit einer Zahl umschrieben. Die Zahl sagt aus
wie viele Millisekunden die Pause dauern soll. Default = 0
Beispiel:
WaitForBrake =1000
WriteUnsplittedFile
===================
Gibt es mehrere XMLs in einem Verarbeitungsblock, so werden die
einzeln verarbeitet. Jedes XML wird in einer eigenen Datei mit
einem Index a..z, a1...z1 gespeichert.
Mit diesem Parameter kann gesteuert werden, ob in diesem Fall auch der ganze
Verarbeitungsblock ungesplittet als Datei gespeichert werden soll.
Ob ein UnsplittedFile geschrieben werden soll, wird mit einer Zahl umschrieben.
Die Zahl hat folgende Bedeutung
0: Unsplitted File wird nicht geschrieben
1: Unsplitted File wird geschrieben
Default ist 0
Beispiel:
WriteUnsplittedFile =1

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ServiceProcessInstaller1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Assembly</value>
</data>
<data name="ServiceProcessInstaller1.Location" type="System.Drawing.Point, System.Drawing, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</data>
<data name="ServiceInstaller1.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Assembly</value>
</data>
<data name="ServiceInstaller1.Location" type="System.Drawing.Point, System.Drawing, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>188, 17</value>
</data>
<data name="$this.Name">
<value>ProjectInstaller</value>
</data>
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
</root>

@ -0,0 +1,60 @@
Imports System.ComponentModel
Imports System.Configuration.Install
<RunInstaller(True)> Public Class ProjectInstaller
Inherits System.Configuration.Install.Installer
#Region " Vom Component Designer generierter Code "
Public Sub New()
MyBase.New()
' Dieser Aufruf ist für den Komponenten-Designer erforderlich.
InitializeComponent()
' Initialisierungen nach dem Aufruf InitializeComponent() hinzufügen
End Sub
'Installer überschreibt den Löschvorgang zum Bereinigen der Komponentenliste.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
' Für Komponenten-Designer erforderlich
Private components As System.ComponentModel.IContainer
'HINWEIS: Die folgende Prozedur ist für den Komponenten-Designer erforderlich
'Sie kann mit dem Komponenten-Designer modifiziert werden.
'Verwenden Sie nicht den Code-Editor zur Bearbeitung.
Friend WithEvents ServiceProcessInstaller1 As System.ServiceProcess.ServiceProcessInstaller
Friend WithEvents ServiceInstaller1 As System.ServiceProcess.ServiceInstaller
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.ServiceProcessInstaller1 = New System.ServiceProcess.ServiceProcessInstaller()
Me.ServiceInstaller1 = New System.ServiceProcess.ServiceInstaller()
'
'ServiceProcessInstaller1
'
Me.ServiceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem
Me.ServiceProcessInstaller1.Password = Nothing
Me.ServiceProcessInstaller1.Username = Nothing
'
'ServiceInstaller1
'
Me.ServiceInstaller1.DisplayName = "EDKB04"
Me.ServiceInstaller1.ServiceName = "EDKB04"
'
'ProjectInstaller
'
Me.Installers.AddRange(New System.Configuration.Install.Installer() {Me.ServiceProcessInstaller1, Me.ServiceInstaller1})
End Sub
#End Region
End Class

@ -0,0 +1,14 @@
Public Class Result
Property Text As String
Property Type As Common.Common.JournalEntryType
Public Sub New()
Text = "no text set until now"
Type = Common.Common.JournalEntryType.Information
End Sub
Public Sub New(ByVal text As String, ByVal type As Common.Common.JournalEntryType)
Me.Text = text
Me.Type = type
End Sub
End Class

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.diagnostics>
<sources>
<!-- Dieser Abschnitt definiert die Protokollierungskonfiguration für My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- Auskommentierung des nachfolgenden Abschnitts aufheben, um in das Anwendungsereignisprotokoll zu schreiben -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information"/>
</switches>
<sharedListeners>
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
<!-- Auskommentierung des nachfolgenden Abschnitts aufheben und APPLICATION_NAME durch den Namen der Anwendung ersetzen, um in das Anwendungsereignisprotokoll zu schreiben -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.diagnostics>
<sources>
<!-- Dieser Abschnitt definiert die Protokollierungskonfiguration für My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- Auskommentierung des nachfolgenden Abschnitts aufheben, um in das Anwendungsereignisprotokoll zu schreiben -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information"/>
</switches>
<sharedListeners>
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
<!-- Auskommentierung des nachfolgenden Abschnitts aufheben und APPLICATION_NAME durch den Namen der Anwendung ersetzen, um in das Anwendungsereignisprotokoll zu schreiben -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>

Binary file not shown.

@ -0,0 +1,489 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>
EDKB04
</name>
</assembly>
<members>
<member name="T:EDKB04.My.Resources.Resources">
<summary>
Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
</summary>
</member>
<member name="P:EDKB04.My.Resources.Resources.ResourceManager">
<summary>
Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
</summary>
</member>
<member name="P:EDKB04.My.Resources.Resources.Culture">
<summary>
Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
</summary>
</member>
<member name="P:EDKB04.DocumentsDetermination.ConnectionString">
<summary>
Connection String für die EDOKA Datenbank
</summary>
<returns></returns>
</member>
<member name="T:EDKB04.DokumentList">
<summary>
Zum Suchen von LSV-BEs eines Partners mit Hilfe von zusäztlichen Kriterein (Selektoren).
Grundlage für die Klasse bildet die Tatsache, dass man mit einem SELECT Statement wie
select d.dokumentid, diw.inhalt from dbo.dokument d
inner join dbo.dokumentinfo_wert diw on d.dokumentid = diw.dokumentid
where d.dokumenttypnr = 1176
and d.nrpar00= 1339632
and diw.inhalt in ( 'IBAN;CH4400784013396322002', 'Paginatornummer;02180305004720', 'BE_LSV-ID_gueltig_ab;20180305', 'LSV-ID;SCW1W', 'Referenz1;60211909')
schon sehr gut eine LSV-BE finden kann und auch sieht, ob alle Suchkriterien aus dbo.dokumentinfo_wert mitberücksichtigt wurden.
</summary>
</member>
<member name="P:EDKB04.DokumentSelektor.XmlTagId">
<summary>
Tag Id des Selektors in der XML Message von Avaloq
</summary>
<returns></returns>
</member>
<member name="P:EDKB04.DokumentSelektor.DokumentWertInhaltId">
<summary>
Id (das ist der Teil vor dem ;) von dbo.dokumentinfo_wert.inhalt
</summary>
<returns></returns>
</member>
<member name="P:EDKB04.DokumentSelektor.Wert">
<summary>
Wert des XML Tags aus der Message von Avaloq
</summary>
<returns></returns>
</member>
<member name="P:EDKB04.DokumentSelektor.Filled">
<summary>
True: Der Selektor wurde in die DataTable abgefüllt
False: Der Selektor fehlt in der DataTable
</summary>
<returns></returns>
</member>
<member name="T:EDKB04.EdokaSqlDb">
<summary>
Adapter für Edoka Datenbank auf dem SQL Server
</summary>
</member>
<member name="M:EDKB04.EdokaSqlDb.SendMail(System.String,System.String,System.String)">
<summary>
gemäss Stackoverflow https://stackoverflow.com/a/10373384
</summary>
<param name="email"></param>
<param name="betreff"></param>
<param name="meldung"></param>
</member>
<member name="M:EDKB04.LsvBe.CanceledDocuments.Render">
<summary>
Hebt die LSV BEs gemäss Contract auf.
Dazu wird der ConnectionString benötigt
</summary>
<returns>True, wenn ein einziges Dokument identifiziert und aufgehoben werden konnte. Sonst False</returns>
</member>
<member name="M:EDKB04.LsvBe.ExistingDocuments.Render">
<summary>
Füllt Items mit passenden Dokumenten. Zuerst wird nur mit Partner- und Paginatornummer gesucht.
Die restlichen Suchkriterien werden erst angewendet, wenn mit Partner- und Paginatornummer
keine passenden Dokumente gefunden werden können.
</summary>
<returns>Always true</returns>
</member>
<member name="M:EDKB04.EDKB04OP.InsertMessageIntoTableEdkData(System.String)">
<summary>
Fügt die TGNummer des Erstellers und die XML-Datei in die Datenbank (edk_data) ein.
</summary>
<param name="Message"></param>
<remarks></remarks>
</member>
<member name="M:EDKB04.xmlHandling.UpdatePartnerBerechtigteEmail(System.Int32)">
<summary>
Teil von Update_Partner()
Aktualisiert alle berechtigte Email Adressen eines Parnters
Die Daten (siehe Parameter) kommen alle aus der XML Message
</summary>
<param name="partnerNr">aus XML Message</param>
</member>
<member name="M:EDKB04.xmlHandling.Update_Verfuegungsrechte">
<summary>
</summary>
<returns>True: Alles OK, False: nicht alles OK</returns>
</member>
<member name="M:EDKB04.XmlHelper.GetItemValueByTagName(System.Xml.XmlDocument@,System.String)">
<summary>
Gibt den InnerText eines Tags zurück. Falls eine Ausnahme auftritt, wird diese abgefangen und
ein Leerstring ("") zurückgegeben.
</summary>
<param name="doc"></param>
<param name="TagName"></param>
<returns></returns>
<remarks></remarks>
</member>
<member name="M:EDKB04.XmlHelper.ConvertXmlNodeListToDataTable(System.Xml.XmlDocument@,System.String)">
<summary>
Erstellt aus einer Serie von XML Objekten eine DataTable.
Haben die XML Objekte gleichnamige Subnodes, so wird der Spaltenname in der Tabelle mit einer
angehängten Indexnummer eindeutig gemacht.
Falls eine Ausnahme Auftritt, wird eine leere DataTable mit einer Spalte "Dummy" zurückgegeben.
</summary>
<param name="doc"></param>
<param name="Tagname"></param>
<returns></returns>
<remarks></remarks>
</member>
<member name="M:EDKB04.XmlHelper.GetAttributeValue(System.Xml.XmlNode@,System.String,System.String@)">
-----------------------------------------------------------------------------
<summary>
Gets the value from an attribute at the specified node.
</summary>
<param name="node">The XmlNode from which this method will get the value of an attribute.</param>
<param name="attributeName">Name of the attribute that will be read.</param>
<param name="value">Attribute value read by this method</param>
<returns>True if node is found and value is retrieved successfully.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetAttributeValue(System.Xml.XmlNode@,System.String,System.Int32@)">
-----------------------------------------------------------------------------
<summary>
Gets the value from an attribute at the specified node.
</summary>
<param name="node">The XmlNode from which this method will get the value of an attribute.</param>
<param name="attributeName">Name of the attribute that will be read.</param>
<param name="value">Attribute value read by this method</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetAttributeValue(System.Xml.XmlNode@,System.String,System.UInt32@)">
-----------------------------------------------------------------------------
<summary>
Gets the value from an attribute at the specified node.
</summary>
<param name="node">The XmlNode from which this method will get the value of an attribute.</param>
<param name="attributeName">Name of the attribute that will be read.</param>
<param name="value">Attribute value read by this method</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.SetAttributeValue(System.Xml.XmlNode@,System.String,System.String)">
-----------------------------------------------------------------------------
<summary>
Sets the value of an attribute for a given XmlNode.
</summary>
<param name="node">XmlNode whose attribute will be set.</param>
<param name="attributeName">Name of the attribute to set.</param>
<param name="value">Value to be set</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.SetAttributeValue(System.Xml.XmlNode@,System.String,System.Int32)">
-----------------------------------------------------------------------------
<summary>
Sets the value of an attribute for a given XmlNode.
</summary>
<param name="node">XmlNode whose attribute will be set.</param>
<param name="attributeName">Name of the attribute to set.</param>
<param name="value">Value to be set</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.SetAttributeValue(System.Xml.XmlNode@,System.String,System.UInt32)">
-----------------------------------------------------------------------------
<summary>
Sets the value of an attribute for a given XmlNode.
</summary>
<param name="node">XmlNode whose attribute will be set.</param>
<param name="attributeName">Name of the attribute to set.</param>
<param name="value">Value to be set</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetDataTable(System.Xml.XmlNodeList@)">
-----------------------------------------------------------------------------
<summary>s
Converts a list of Xml nodes to a DataTable.
</summary>
<param name="nodelist">List of Xml nodes</param>
<returns>DataTable</returns>
<remarks>
This method convert
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetDataTable(System.Xml.XmlNodeList,System.String,System.Boolean)">
-----------------------------------------------------------------------------
<summary>
Converts a list of Xml nodes to a DataTable and sets one of the columns as a primary key.
</summary>
<param name="nodelist"></param>
<param name="primaryKeyColumn"></param>
<param name="autoIncrement"></param>
<returns></returns>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.UpdateChildNodesWithDataTable(System.Xml.XmlNode,System.Data.DataTable,System.String)">
-----------------------------------------------------------------------------
<summary>
Updates the child nodes of "parentNode" by using the fields from a datatable.
</summary>
<param name="parentNode"></param>
<param name="table"></param>
<param name="keyField"></param>
<remarks>
The child nodes that will be updated must have attribute fields that correspond to
the DataTable. The "keyField" will be used to identify the attribute that serves as
an identifier of the rows. The datatable can have less fields than the nodes so
you have the chance to update smaller subsets.
Make sure that you did not call "AcceptChanges" before passing the datatable or this
function will not find any change.
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.NodeToString(System.Xml.XmlNode@)">
-----------------------------------------------------------------------------
<summary>
Returns contents of an XmlNode in a string.
</summary>
<param name="node">The XmlNode whose contents will be read into a string.</param>
<returns>Xml formatted string with contents of "node" parameter.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.NodeListToString(System.Xml.XmlNodeList)">
-----------------------------------------------------------------------------
<summary>
Convert a XmlNodeList to string
</summary>
<param name="nodeList"></param>
<returns></returns>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.DocumentToString(System.Xml.XmlDocument@)">
-----------------------------------------------------------------------------
<summary>
Method to convert a XmlDocument to string.
</summary>
<param name="xmlDoc">XmlDocument that will be converted to string.</param>
<returns>A xml formatted string.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.CreateChildNodes(System.Xml.XmlNode@,System.String[])">
-----------------------------------------------------------------------------
<summary>
Converts a string array to XmlNodes and appends all those nodes to a root node.
</summary>
<param name="rootNode"></param>
<param name="names"></param>
<returns></returns>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.CreateChildNodes(System.Xml.XmlNode@,System.String,System.String,System.String[])">
-----------------------------------------------------------------------------
<summary>
</summary>
<param name="rootNode"></param>
<param name="names"></param>
<param name="attributeName"></param>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String)">
<summary>
Inserts an empty record at the bottom of the hierarchy, creating the
tree as required.
</summary>
<param name="doc">The XmlDocument to which the node will be inserted.</param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<returns>The XmlNode inserted into the hierarchy.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.String[],System.String[])">
<summary>
Inserts an record with a multiple fields at the bottom of the hierarchy.
</summary>
<param name="doc">The XmlDocument to which the node will be inserted.</param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="fields">The attribute names that will be created for the node inserted.</param>
<param name="values">The corresponding value of each field.</param>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.String,System.String)">
<summary>
Inserts a record with a single field at the bottom of the hierarchy.
</summary>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="field">The field to add to the record.</param>
<param name="val">The value assigned to the field.</param>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.Collections.Specialized.NameValueCollection)">
<summary>
Insert a record with multiple fields at the bottom of the hierarchy.
</summary>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="fields">The array of fields as field/value pairs.</param>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.Data.DataRow)">
<summary>
Inserts a record with multiple fields at bottom of the hierarchy.
</summary>
<param name="doc"></param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="rowValues">The DataRow values that will be added as attributes.</param>
<remarks>
The columns names of the DataRow will become the attribute names and
the row values of the DataRow will be the attribute values.
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.Data.DataTable)">
<summary>
Inserts a record with multiple fields from a DataTable at bottom of the hierarchy.
</summary>
<param name="doc"></param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="rowValues">The DataRow values that will be added as attributes.</param>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.String,System.String[])">
<summary>
Inserts a record with multiple values at bottom of hierarchy. This is analogous to inserting
a column of data.
</summary>
<param name="doc"></param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="field">Name of the attribute to be created at node inserted.</param>
<param name="values">Values that will be inserted that correspond to the field name.</param>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Update(System.Xml.XmlDocument,System.String,System.String,System.String)">
<summary>
Update a single field in all records in the specified path.
</summary>
<param name="doc">The XmlDocument whose node will be udpated.</param>
<param name="xpath">The xml path.</param>
<param name="field">The field name to update.</param>
<param name="val">The new value.</param>
<returns>The number of records affected.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to update an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Delete(System.Xml.XmlDocument,System.String)">
<summary>
Deletes all records of the specified path.
</summary>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<returns>The number of records deleted.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Delete(System.Xml.XmlDocument,System.String,System.String)">
<summary>
Deletes a field from all records on the specified path.
</summary>
<param name="path">The xml path.</param>
<param name="field">The field to delete.</param>
<returns>The number of records affected.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.QueryScalar(System.Xml.XmlDocument,System.String,System.String)">
<summary>
Return a single string representing the value of the specified field
for the first record encountered.
</summary>
<param name="xpath">The xml path.</param>
<param name="field">The desired field.</param>
<returns>A string with the field's value or null.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Query(System.Xml.XmlDocument,System.String)">
<summary>
Returns a DataTable for all rows on the path.
</summary>
<param name="xpath">The xml path.</param>
<returns>The DataTable with the returned rows.
The row count will be 0 if no rows returned.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.QueryField(System.Xml.XmlDocument,System.String,System.String)">
<summary>
Returns an array of values for the specified field for all rows on
the path.
</summary>
<param name="xpath">The xml path.</param>
<param name="field">The desired field.</param>
<returns>The array of string values for each row qualified by the path.
A null is returned if the query results in 0 rows.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.InsertNode(System.Xml.XmlNode,System.String[],System.Int32)">
<summary>
Inserts a node at the specified segment if it doesn't exist, otherwise
traverses the node.
</summary>
<param name="node">The current node.</param>
<param name="segments">The path segment list.</param>
<param name="idx">The current segment.</param>
<returns></returns>
</member>
<member name="M:EDKB04.XmlHelper.CreateColumns(System.Data.DataTable,System.Xml.XmlNode)">
<summary>
Creates columns given an XmlNode.
</summary>
<param name="dt">The target DataTable.</param>
<param name="node">The source XmlNode.</param>
</member>
</members>
</doc>

Binary file not shown.

@ -0,0 +1 @@
¹µÈ¦rȽ¹¿¸ª‰¿­Çx†°Ç­Ç…~¶Ã®Àµ¦¾h¸µÈ¦¾Äµ¢˜‡¼ªÄ»¾ÇÈeź±¹¿¾¹Ål®À®Äš¦¾È³ÄÄ··¿¹³¼¾ÃÂe»¹½¶¨·±¹r»¾Î¹†…‡zˆÊ¸±¾e»¬Çµ€Â¶Á·ÄÄ·°‰oŰʆ

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8" ?>
<root>
<config>
<!-- The maximum duration a start job can take before a starter error occures -->
<MaximumStartDuration>1</MaximumStartDuration>
<!-- Check interval in minutes for starter -->
<StartJobInterval>2</StartJobInterval>
<!-- Check interval in minutes for watcher -->
<WatchJobInterval>2</WatchJobInterval>
<!-- The number of Starter-Errors notifications should be activated until the job runs successful next time -->
<MaxStarterNotifications>2</MaxStarterNotifications>
<!-- The number of Watch-Errors notifications should be activated until the job runs successful next time -->
<MaxWatcherNotifications>3</MaxWatcherNotifications>
<!-- Name of the system event log where service should write his entries -->
<EventLogName>BMS</EventLogName>
<!-- The target where messages should be written to.
Valid log targets are:
- 1: System EventLog
- 2: Database EventLog table
-->
<LogTarget>1</LogTarget>
<!-- Mail Server to send eMails from BMS -->
<MailServer>server01</MailServer>
<!-- Mail sender name -->
<MailFrom>bms@tkb.ch</MailFrom>
<!-- Mail Server authentication method.
Valid methods are:
- 0: Anonymous
- 1: Basic Authentication (clear text authentication!)
-->
<MailServerAuth>
<Method>0</Method>
<UserName>mailUser</UserName>
<Password>mailPassword</Password>
</MailServerAuth>
</config>
</root>

@ -0,0 +1 @@
Data Source=shu01\shu00;Initial Catalog=edoka_dms;Persist Security Info=True;User ID=sa;Password=*shu29;

@ -0,0 +1 @@
Data Source=shu01\shu00;Initial Catalog=edoka_journale;Persist Security Info=True;User ID=sa;Password=*shu29

@ -0,0 +1,18 @@
MQHostname =vb0049d
MQPort =1416
MQChannel =TGKB.D16.EDOKA.CL
MQQueueName =test
SqlTimeOut =500000
CDMUTER =EDKB04
MuterNr =9996
WatchDir =k:\edoka\00_EDK_Files\EDKB04
TimerIntervall =0
Loop =false
Debugmode =true
DebugDir =k:\edoka\00_EDK_Files\EDKB04\Archiv
DefaultBetreuerID =1166755
nb_Errors =10
nb_seconds =10
len_TXADZ =35
WaitForBrake =0
WriteUnsplittedFile =1

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.diagnostics>
<sources>
<!-- Dieser Abschnitt definiert die Protokollierungskonfiguration für My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- Auskommentierung des nachfolgenden Abschnitts aufheben, um in das Anwendungsereignisprotokoll zu schreiben -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information"/>
</switches>
<sharedListeners>
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/>
<!-- Auskommentierung des nachfolgenden Abschnitts aufheben und APPLICATION_NAME durch den Namen der Anwendung ersetzen, um in das Anwendungsereignisprotokoll zu schreiben -->
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
</sharedListeners>
</system.diagnostics>
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>

Binary file not shown.

@ -0,0 +1,489 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>
EDKB04
</name>
</assembly>
<members>
<member name="T:EDKB04.My.Resources.Resources">
<summary>
Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
</summary>
</member>
<member name="P:EDKB04.My.Resources.Resources.ResourceManager">
<summary>
Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
</summary>
</member>
<member name="P:EDKB04.My.Resources.Resources.Culture">
<summary>
Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
</summary>
</member>
<member name="P:EDKB04.DocumentsDetermination.ConnectionString">
<summary>
Connection String für die EDOKA Datenbank
</summary>
<returns></returns>
</member>
<member name="T:EDKB04.DokumentList">
<summary>
Zum Suchen von LSV-BEs eines Partners mit Hilfe von zusäztlichen Kriterein (Selektoren).
Grundlage für die Klasse bildet die Tatsache, dass man mit einem SELECT Statement wie
select d.dokumentid, diw.inhalt from dbo.dokument d
inner join dbo.dokumentinfo_wert diw on d.dokumentid = diw.dokumentid
where d.dokumenttypnr = 1176
and d.nrpar00= 1339632
and diw.inhalt in ( 'IBAN;CH4400784013396322002', 'Paginatornummer;02180305004720', 'BE_LSV-ID_gueltig_ab;20180305', 'LSV-ID;SCW1W', 'Referenz1;60211909')
schon sehr gut eine LSV-BE finden kann und auch sieht, ob alle Suchkriterien aus dbo.dokumentinfo_wert mitberücksichtigt wurden.
</summary>
</member>
<member name="P:EDKB04.DokumentSelektor.XmlTagId">
<summary>
Tag Id des Selektors in der XML Message von Avaloq
</summary>
<returns></returns>
</member>
<member name="P:EDKB04.DokumentSelektor.DokumentWertInhaltId">
<summary>
Id (das ist der Teil vor dem ;) von dbo.dokumentinfo_wert.inhalt
</summary>
<returns></returns>
</member>
<member name="P:EDKB04.DokumentSelektor.Wert">
<summary>
Wert des XML Tags aus der Message von Avaloq
</summary>
<returns></returns>
</member>
<member name="P:EDKB04.DokumentSelektor.Filled">
<summary>
True: Der Selektor wurde in die DataTable abgefüllt
False: Der Selektor fehlt in der DataTable
</summary>
<returns></returns>
</member>
<member name="T:EDKB04.EdokaSqlDb">
<summary>
Adapter für Edoka Datenbank auf dem SQL Server
</summary>
</member>
<member name="M:EDKB04.EdokaSqlDb.SendMail(System.String,System.String,System.String)">
<summary>
gemäss Stackoverflow https://stackoverflow.com/a/10373384
</summary>
<param name="email"></param>
<param name="betreff"></param>
<param name="meldung"></param>
</member>
<member name="M:EDKB04.LsvBe.CanceledDocuments.Render">
<summary>
Hebt die LSV BEs gemäss Contract auf.
Dazu wird der ConnectionString benötigt
</summary>
<returns>True, wenn ein einziges Dokument identifiziert und aufgehoben werden konnte. Sonst False</returns>
</member>
<member name="M:EDKB04.LsvBe.ExistingDocuments.Render">
<summary>
Füllt Items mit passenden Dokumenten. Zuerst wird nur mit Partner- und Paginatornummer gesucht.
Die restlichen Suchkriterien werden erst angewendet, wenn mit Partner- und Paginatornummer
keine passenden Dokumente gefunden werden können.
</summary>
<returns>Always true</returns>
</member>
<member name="M:EDKB04.EDKB04OP.InsertMessageIntoTableEdkData(System.String)">
<summary>
Fügt die TGNummer des Erstellers und die XML-Datei in die Datenbank (edk_data) ein.
</summary>
<param name="Message"></param>
<remarks></remarks>
</member>
<member name="M:EDKB04.xmlHandling.UpdatePartnerBerechtigteEmail(System.Int32)">
<summary>
Teil von Update_Partner()
Aktualisiert alle berechtigte Email Adressen eines Parnters
Die Daten (siehe Parameter) kommen alle aus der XML Message
</summary>
<param name="partnerNr">aus XML Message</param>
</member>
<member name="M:EDKB04.xmlHandling.Update_Verfuegungsrechte">
<summary>
</summary>
<returns>True: Alles OK, False: nicht alles OK</returns>
</member>
<member name="M:EDKB04.XmlHelper.GetItemValueByTagName(System.Xml.XmlDocument@,System.String)">
<summary>
Gibt den InnerText eines Tags zurück. Falls eine Ausnahme auftritt, wird diese abgefangen und
ein Leerstring ("") zurückgegeben.
</summary>
<param name="doc"></param>
<param name="TagName"></param>
<returns></returns>
<remarks></remarks>
</member>
<member name="M:EDKB04.XmlHelper.ConvertXmlNodeListToDataTable(System.Xml.XmlDocument@,System.String)">
<summary>
Erstellt aus einer Serie von XML Objekten eine DataTable.
Haben die XML Objekte gleichnamige Subnodes, so wird der Spaltenname in der Tabelle mit einer
angehängten Indexnummer eindeutig gemacht.
Falls eine Ausnahme Auftritt, wird eine leere DataTable mit einer Spalte "Dummy" zurückgegeben.
</summary>
<param name="doc"></param>
<param name="Tagname"></param>
<returns></returns>
<remarks></remarks>
</member>
<member name="M:EDKB04.XmlHelper.GetAttributeValue(System.Xml.XmlNode@,System.String,System.String@)">
-----------------------------------------------------------------------------
<summary>
Gets the value from an attribute at the specified node.
</summary>
<param name="node">The XmlNode from which this method will get the value of an attribute.</param>
<param name="attributeName">Name of the attribute that will be read.</param>
<param name="value">Attribute value read by this method</param>
<returns>True if node is found and value is retrieved successfully.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetAttributeValue(System.Xml.XmlNode@,System.String,System.Int32@)">
-----------------------------------------------------------------------------
<summary>
Gets the value from an attribute at the specified node.
</summary>
<param name="node">The XmlNode from which this method will get the value of an attribute.</param>
<param name="attributeName">Name of the attribute that will be read.</param>
<param name="value">Attribute value read by this method</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetAttributeValue(System.Xml.XmlNode@,System.String,System.UInt32@)">
-----------------------------------------------------------------------------
<summary>
Gets the value from an attribute at the specified node.
</summary>
<param name="node">The XmlNode from which this method will get the value of an attribute.</param>
<param name="attributeName">Name of the attribute that will be read.</param>
<param name="value">Attribute value read by this method</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.SetAttributeValue(System.Xml.XmlNode@,System.String,System.String)">
-----------------------------------------------------------------------------
<summary>
Sets the value of an attribute for a given XmlNode.
</summary>
<param name="node">XmlNode whose attribute will be set.</param>
<param name="attributeName">Name of the attribute to set.</param>
<param name="value">Value to be set</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.SetAttributeValue(System.Xml.XmlNode@,System.String,System.Int32)">
-----------------------------------------------------------------------------
<summary>
Sets the value of an attribute for a given XmlNode.
</summary>
<param name="node">XmlNode whose attribute will be set.</param>
<param name="attributeName">Name of the attribute to set.</param>
<param name="value">Value to be set</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.SetAttributeValue(System.Xml.XmlNode@,System.String,System.UInt32)">
-----------------------------------------------------------------------------
<summary>
Sets the value of an attribute for a given XmlNode.
</summary>
<param name="node">XmlNode whose attribute will be set.</param>
<param name="attributeName">Name of the attribute to set.</param>
<param name="value">Value to be set</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetDataTable(System.Xml.XmlNodeList@)">
-----------------------------------------------------------------------------
<summary>s
Converts a list of Xml nodes to a DataTable.
</summary>
<param name="nodelist">List of Xml nodes</param>
<returns>DataTable</returns>
<remarks>
This method convert
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetDataTable(System.Xml.XmlNodeList,System.String,System.Boolean)">
-----------------------------------------------------------------------------
<summary>
Converts a list of Xml nodes to a DataTable and sets one of the columns as a primary key.
</summary>
<param name="nodelist"></param>
<param name="primaryKeyColumn"></param>
<param name="autoIncrement"></param>
<returns></returns>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.UpdateChildNodesWithDataTable(System.Xml.XmlNode,System.Data.DataTable,System.String)">
-----------------------------------------------------------------------------
<summary>
Updates the child nodes of "parentNode" by using the fields from a datatable.
</summary>
<param name="parentNode"></param>
<param name="table"></param>
<param name="keyField"></param>
<remarks>
The child nodes that will be updated must have attribute fields that correspond to
the DataTable. The "keyField" will be used to identify the attribute that serves as
an identifier of the rows. The datatable can have less fields than the nodes so
you have the chance to update smaller subsets.
Make sure that you did not call "AcceptChanges" before passing the datatable or this
function will not find any change.
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.NodeToString(System.Xml.XmlNode@)">
-----------------------------------------------------------------------------
<summary>
Returns contents of an XmlNode in a string.
</summary>
<param name="node">The XmlNode whose contents will be read into a string.</param>
<returns>Xml formatted string with contents of "node" parameter.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.NodeListToString(System.Xml.XmlNodeList)">
-----------------------------------------------------------------------------
<summary>
Convert a XmlNodeList to string
</summary>
<param name="nodeList"></param>
<returns></returns>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.DocumentToString(System.Xml.XmlDocument@)">
-----------------------------------------------------------------------------
<summary>
Method to convert a XmlDocument to string.
</summary>
<param name="xmlDoc">XmlDocument that will be converted to string.</param>
<returns>A xml formatted string.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.CreateChildNodes(System.Xml.XmlNode@,System.String[])">
-----------------------------------------------------------------------------
<summary>
Converts a string array to XmlNodes and appends all those nodes to a root node.
</summary>
<param name="rootNode"></param>
<param name="names"></param>
<returns></returns>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.CreateChildNodes(System.Xml.XmlNode@,System.String,System.String,System.String[])">
-----------------------------------------------------------------------------
<summary>
</summary>
<param name="rootNode"></param>
<param name="names"></param>
<param name="attributeName"></param>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String)">
<summary>
Inserts an empty record at the bottom of the hierarchy, creating the
tree as required.
</summary>
<param name="doc">The XmlDocument to which the node will be inserted.</param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<returns>The XmlNode inserted into the hierarchy.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.String[],System.String[])">
<summary>
Inserts an record with a multiple fields at the bottom of the hierarchy.
</summary>
<param name="doc">The XmlDocument to which the node will be inserted.</param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="fields">The attribute names that will be created for the node inserted.</param>
<param name="values">The corresponding value of each field.</param>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.String,System.String)">
<summary>
Inserts a record with a single field at the bottom of the hierarchy.
</summary>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="field">The field to add to the record.</param>
<param name="val">The value assigned to the field.</param>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.Collections.Specialized.NameValueCollection)">
<summary>
Insert a record with multiple fields at the bottom of the hierarchy.
</summary>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="fields">The array of fields as field/value pairs.</param>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.Data.DataRow)">
<summary>
Inserts a record with multiple fields at bottom of the hierarchy.
</summary>
<param name="doc"></param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="rowValues">The DataRow values that will be added as attributes.</param>
<remarks>
The columns names of the DataRow will become the attribute names and
the row values of the DataRow will be the attribute values.
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.Data.DataTable)">
<summary>
Inserts a record with multiple fields from a DataTable at bottom of the hierarchy.
</summary>
<param name="doc"></param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="rowValues">The DataRow values that will be added as attributes.</param>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.String,System.String[])">
<summary>
Inserts a record with multiple values at bottom of hierarchy. This is analogous to inserting
a column of data.
</summary>
<param name="doc"></param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="field">Name of the attribute to be created at node inserted.</param>
<param name="values">Values that will be inserted that correspond to the field name.</param>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Update(System.Xml.XmlDocument,System.String,System.String,System.String)">
<summary>
Update a single field in all records in the specified path.
</summary>
<param name="doc">The XmlDocument whose node will be udpated.</param>
<param name="xpath">The xml path.</param>
<param name="field">The field name to update.</param>
<param name="val">The new value.</param>
<returns>The number of records affected.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to update an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Delete(System.Xml.XmlDocument,System.String)">
<summary>
Deletes all records of the specified path.
</summary>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<returns>The number of records deleted.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Delete(System.Xml.XmlDocument,System.String,System.String)">
<summary>
Deletes a field from all records on the specified path.
</summary>
<param name="path">The xml path.</param>
<param name="field">The field to delete.</param>
<returns>The number of records affected.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.QueryScalar(System.Xml.XmlDocument,System.String,System.String)">
<summary>
Return a single string representing the value of the specified field
for the first record encountered.
</summary>
<param name="xpath">The xml path.</param>
<param name="field">The desired field.</param>
<returns>A string with the field's value or null.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Query(System.Xml.XmlDocument,System.String)">
<summary>
Returns a DataTable for all rows on the path.
</summary>
<param name="xpath">The xml path.</param>
<returns>The DataTable with the returned rows.
The row count will be 0 if no rows returned.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.QueryField(System.Xml.XmlDocument,System.String,System.String)">
<summary>
Returns an array of values for the specified field for all rows on
the path.
</summary>
<param name="xpath">The xml path.</param>
<param name="field">The desired field.</param>
<returns>The array of string values for each row qualified by the path.
A null is returned if the query results in 0 rows.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.InsertNode(System.Xml.XmlNode,System.String[],System.Int32)">
<summary>
Inserts a node at the specified segment if it doesn't exist, otherwise
traverses the node.
</summary>
<param name="node">The current node.</param>
<param name="segments">The path segment list.</param>
<param name="idx">The current segment.</param>
<returns></returns>
</member>
<member name="M:EDKB04.XmlHelper.CreateColumns(System.Data.DataTable,System.Xml.XmlNode)">
<summary>
Creates columns given an XmlNode.
</summary>
<param name="dt">The target DataTable.</param>
<param name="node">The source XmlNode.</param>
</member>
</members>
</doc>

Binary file not shown.

@ -0,0 +1 @@
¹µÈ¦rȽ¹¿¸ª‰¿­Çx†°Ç­Ç…~¶Ã®Àµ¦¾h¸µÈ¦¾Äµ¢˜‡¼ªÄ»¾ÇÈeź±¹¿¾¹Ål®À®Äš¦¾È³ÄÄ··¿¹³¼¾ÃÂe»¹½¶¨·±¹r»¾Î¹†…‡zˆÊ¸±¾e»¬Çµ€Â¶Á·ÄÄ·°‰oŰʆ

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8" ?>
<root>
<config>
<!-- The maximum duration a start job can take before a starter error occures -->
<MaximumStartDuration>1</MaximumStartDuration>
<!-- Check interval in minutes for starter -->
<StartJobInterval>2</StartJobInterval>
<!-- Check interval in minutes for watcher -->
<WatchJobInterval>2</WatchJobInterval>
<!-- The number of Starter-Errors notifications should be activated until the job runs successful next time -->
<MaxStarterNotifications>2</MaxStarterNotifications>
<!-- The number of Watch-Errors notifications should be activated until the job runs successful next time -->
<MaxWatcherNotifications>3</MaxWatcherNotifications>
<!-- Name of the system event log where service should write his entries -->
<EventLogName>BMS</EventLogName>
<!-- The target where messages should be written to.
Valid log targets are:
- 1: System EventLog
- 2: Database EventLog table
-->
<LogTarget>1</LogTarget>
<!-- Mail Server to send eMails from BMS -->
<MailServer>server01</MailServer>
<!-- Mail sender name -->
<MailFrom>bms@tkb.ch</MailFrom>
<!-- Mail Server authentication method.
Valid methods are:
- 0: Anonymous
- 1: Basic Authentication (clear text authentication!)
-->
<MailServerAuth>
<Method>0</Method>
<UserName>mailUser</UserName>
<Password>mailPassword</Password>
</MailServerAuth>
</config>
</root>

Binary file not shown.

@ -0,0 +1 @@
Data Source=shu01\shu00;Initial Catalog=edoka_dms;Persist Security Info=True;User ID=sa;Password=*shu29;

@ -0,0 +1 @@
Data Source=shu01\shu00;Initial Catalog=edoka_journale;Persist Security Info=True;User ID=sa;Password=*shu29

@ -0,0 +1,18 @@
MQHostname =vb0049d
MQPort =1416
MQChannel =TGKB.D16.EDOKA.CL
MQQueueName =test
SqlTimeOut =500000
CDMUTER =EDKB04
MuterNr =9996
WatchDir =k:\edoka\00_EDK_Files\EDKB04
TimerIntervall =0
Loop =false
Debugmode =true
DebugDir =k:\edoka\00_EDK_Files\EDKB04\Archiv
DefaultBetreuerID =1166755
nb_Errors =10
nb_seconds =10
len_TXADZ =35
WaitForBrake =0
WriteUnsplittedFile =1

@ -0,0 +1 @@
¹µÈ¦rȽ¹¿¸ª‰¿­Çx†°Ç­Ç…~¶Ã®Àµ¦¾h¸µÈ¦¾Äµ¢˜‡¼ªÄ»¾ÇÈeź±¹¿¾¹Ål®À®Äš¦¾È³ÄÄ··¿¹³¼¾ÃÂe»¹½¶¨·±¹r»¾Î¹†…‡zˆÊ¸±¾e»¬Çµ€Â¶Á·ÄÄ·°‰oŰʆ

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8" ?>
<root>
<config>
<!-- The maximum duration a start job can take before a starter error occures -->
<MaximumStartDuration>1</MaximumStartDuration>
<!-- Check interval in minutes for starter -->
<StartJobInterval>2</StartJobInterval>
<!-- Check interval in minutes for watcher -->
<WatchJobInterval>2</WatchJobInterval>
<!-- The number of Starter-Errors notifications should be activated until the job runs successful next time -->
<MaxStarterNotifications>2</MaxStarterNotifications>
<!-- The number of Watch-Errors notifications should be activated until the job runs successful next time -->
<MaxWatcherNotifications>3</MaxWatcherNotifications>
<!-- Name of the system event log where service should write his entries -->
<EventLogName>BMS</EventLogName>
<!-- The target where messages should be written to.
Valid log targets are:
- 1: System EventLog
- 2: Database EventLog table
-->
<LogTarget>1</LogTarget>
<!-- Mail Server to send eMails from BMS -->
<MailServer>server01</MailServer>
<!-- Mail sender name -->
<MailFrom>bms@tkb.ch</MailFrom>
<!-- Mail Server authentication method.
Valid methods are:
- 0: Anonymous
- 1: Basic Authentication (clear text authentication!)
-->
<MailServerAuth>
<Method>0</Method>
<UserName>mailUser</UserName>
<Password>mailPassword</Password>
</MailServerAuth>
</config>
</root>

@ -0,0 +1,261 @@
Public Class ClsParameter
#Region "Deklarationen"
Dim p_MQHostname As String
Public Property MQHostname() As String
Get
Return p_MQHostname
End Get
Set(ByVal value As String)
p_MQHostname = value
End Set
End Property
Dim p_MQPort As String
Public Property MQPort() As String
Get
Return p_MQPort
End Get
Set(ByVal value As String)
p_MQPort = value
End Set
End Property
Dim p_MQChannel As String
Public Property MQChannel() As String
Get
Return p_MQChannel
End Get
Set(ByVal value As String)
p_MQChannel = value
End Set
End Property
Dim p_MQQueueName As String
Public Property MQQueueName() As String
Get
Return p_MQQueueName
End Get
Set(ByVal value As String)
p_MQQueueName = value
End Set
End Property
Dim p_SqlTimeout As String
Public Property SqlTimeout() As String
Get
Return p_SqlTimeout
End Get
Set(ByVal value As String)
p_SqlTimeout = value
End Set
End Property
Dim p_CDMuter As String
Public Property CDMuter() As String
Get
Return p_CDMuter
End Get
Set(ByVal value As String)
p_CDMuter = value
End Set
End Property
Dim p_MuterNr As String
Public Property MuterNr() As String
Get
Return p_MuterNr
End Get
Set(ByVal value As String)
p_MuterNr = value
End Set
End Property
Dim p_Watchdir As String
Public Property Watchdir() As String
Get
Return p_Watchdir
End Get
Set(ByVal value As String)
p_Watchdir = value
End Set
End Property
Dim p_TimerInterval As String
Public Property TimerInterval() As String
Get
Return p_TimerInterval
End Get
Set(ByVal value As String)
p_TimerInterval = value
End Set
End Property
Dim p_LoopQueue As String
Public Property LoopQueue() As String
Get
Return p_LoopQueue
End Get
Set(ByVal value As String)
p_LoopQueue = value
End Set
End Property
Dim p_DebugMode As Boolean
Public Property DebugMode() As Boolean
Get
Return p_DebugMode
End Get
Set(ByVal value As Boolean)
p_DebugMode = value
End Set
End Property
Dim p_DebugDir As String
Public Property DebugDir() As String
Get
Return p_DebugDir
End Get
Set(ByVal value As String)
p_DebugDir = value
End Set
End Property
Dim p_DefaultBetreuerID As String
Public Property DefaultBetreuerID() As String
Get
Return p_DefaultBetreuerID
End Get
Set(ByVal value As String)
p_DefaultBetreuerID = value
End Set
End Property
Dim p_nb_errors As Integer
Public Property nb_errors() As Integer
Get
Return p_nb_errors
End Get
Set(ByVal value As Integer)
p_nb_errors = value
End Set
End Property
Dim p_nb_seconds As Integer
Public Property nb_seconds() As Integer
Get
Return p_nb_seconds
End Get
Set(ByVal value As Integer)
p_nb_seconds = value
End Set
End Property
Dim p_len_TXADZ As Integer
Public Property len_TXADZ() As Integer
Get
Return p_len_TXADZ
End Get
Set(ByVal value As Integer)
p_len_TXADZ = value
End Set
End Property
Dim p_WaitForBrake As Integer
Public Property WaitForBrake() As Integer
Get
Return p_WaitForBrake
End Get
Set(value As Integer)
p_WaitForBrake = value
End Set
End Property
Dim p_WriteUnsplittedFile As Integer
Public Property WriteUnsplittedFile() As Integer
Get
Return p_WriteUnsplittedFile
End Get
Set(value As Integer)
p_WriteUnsplittedFile = value
End Set
End Property
Dim m_writeeventlog As Boolean
Property WriteEventLog As Boolean
Get
Return m_writeeventlog
End Get
Set(value As Boolean)
m_writeeventlog = value
End Set
End Property
#End Region
Public Function Loadparameters() As String
Try
WriteEventLog = False
m_log.Log("EDKB04: Loading Parameters", Common.Common.JournalEntryType.Information)
oread = IO.File.OpenText(appPath & "parameter.cfg")
Me.p_MQHostname = ParamValue(oread.ReadLine)
Me.p_MQPort = ParamValue(oread.ReadLine)
Me.p_MQChannel = ParamValue(oread.ReadLine)
Me.p_MQQueueName = ParamValue(oread.ReadLine)
Me.p_SqlTimeout = ParamValue(oread.ReadLine)
Me.p_CDMuter = ParamValue(oread.ReadLine)
Me.p_MuterNr = ParamValue(oread.ReadLine)
Me.p_Watchdir = ParamValue(oread.ReadLine)
Me.p_TimerInterval = ParamValue(oread.ReadLine)
Me.p_LoopQueue = ParamValue(oread.ReadLine)
Me.p_DebugMode = CBool(ParamValue(oread.ReadLine))
Me.p_DebugDir = ParamValue(oread.ReadLine)
Me.p_DefaultBetreuerID = ParamValue(oread.ReadLine)
Try
Me.p_nb_errors = CInt(ParamValue(oread.ReadLine))
Catch ex As Exception
' Keine Zahl
Me.p_nb_errors = 999999
End Try
Try
Me.p_nb_seconds = CInt(ParamValue(oread.ReadLine))
Catch ex As Exception
'Keine Zahl
Me.p_nb_seconds = 1
End Try
Try
Me.p_len_TXADZ = CInt(ParamValue(oread.ReadLine))
Catch ex As Exception
'Keine Zahl
Me.p_len_TXADZ = 35
End Try
Try
Me.WaitForBrake = CInt(ParamValue(oread.ReadLine))
Catch ex As Exception
'Keine Zahl
Me.WaitForBrake = 0
End Try
Try
Me.WriteUnsplittedFile = CInt(ParamValue(oread.ReadLine))
Catch ex As Exception
'Keine Zahl
Me.WriteUnsplittedFile = 0
End Try
oread.Close()
m_log.Log("EDKB04: Loading Parameters Ended", Common.Common.JournalEntryType.Information)
Return ""
Catch ex As Exception
m_log.Log("EDKB04: Error Loading Params: " & ex.Message, Common.Common.JournalEntryType.Error)
Return ex.Message
End Try
End Function
Private Function ParamValue(ByVal sinput As String) As String
Dim splitter() As String
splitter = Split(sinput, "=")
ParamValue = splitter(1)
End Function
End Class

@ -0,0 +1,289 @@
' ///////////////////////////////////////////////////////////////////////////
' // Description: Connection Provider class for Database connection sharing
' // Generated by LLBLGen v1.2.1045.38210 Final on: Sonntag, 18. Mai 2003, 00:06:25
' // This class implements IDisposable.
' ///////////////////////////////////////////////////////////////////////////
Imports System
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient
Imports System.Collections
Namespace edokadb
' /// <summary>
' /// Purpose: provides a SqlConnection object which can be shared among data-access tier objects
' /// to provide a way to do ADO.NET transaction coding without the hassling with SqlConnection objects
' /// on a high level.
' /// </summary>
Public Class clsConnectionProvider
Implements IDisposable
#Region " Class Member Declarations "
Private m_scoDBConnection As SqlConnection
Private m_bIsTransactionPending, m_bIsDisposed As Boolean
Private m_stCurrentTransaction As SqlTransaction
Private m_alSavePoints As ArrayList
#End Region
Public Sub New()
' // Init the class
InitClass()
End Sub
' /// <summary>
' /// Purpose: Implements the IDispose' method Dispose.
' /// </summary>
Public Overloads Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
' /// <summary>
' /// Purpose: Implements the Dispose functionality.
' /// </summary>
Protected Overridable Overloads Sub Dispose(ByVal bIsDisposing As Boolean)
' // Check to see if Dispose has already been called.
If Not m_bIsDisposed Then
If bIsDisposing Then
' // Dispose managed resources.
If Not (m_stCurrentTransaction Is Nothing) Then
m_stCurrentTransaction.Dispose()
m_stCurrentTransaction = Nothing
End If
If Not (m_scoDBConnection Is Nothing) Then
' // closing the connection will abort (rollback) any pending transactions
m_scoDBConnection.Close()
m_scoDBConnection.Dispose()
m_scoDBConnection = Nothing
End If
End If
End If
m_bIsDisposed = True
End Sub
' /// <summary>
' /// Purpose: Initializes class members.
' /// </summary>
Private Sub InitClass()
' // Create all the objects and initialize other members.
m_scoDBConnection = New SqlConnection()
m_bIsDisposed = False
m_stCurrentTransaction = Nothing
m_bIsTransactionPending = False
m_alSavePoints = New ArrayList()
End Sub
' /// <summary>
' /// Purpose: Opens the connection object.
' /// </summary>
' /// <returns>True, if succeeded, otherwise an Exception exception is thrown.</returns>
Public Function OpenConnection() As Boolean
Try
If (m_scoDBConnection.State And ConnectionState.Open) > 0 Then
' // It's already open.
Throw New Exception("OpenConnection::Connection is already open.")
End If
m_scoDBConnection.Open()
m_bIsTransactionPending = False
m_alSavePoints.Clear()
Return True
Catch ex As Exception
' // bubble exception
Throw ex
End Try
End Function
' /// <summary>
' /// Purpose: Starts a new ADO.NET transaction using the open connection object of this class.
' /// </summary>
' /// <param name="sTransactionName">Name of the transaction to start</param>
' /// <returns>True, if transaction is started correctly, otherwise an Exception exception is thrown</returns>
Public Function BeginTransaction(ByVal sTransactionName As String) As Boolean
Try
If m_bIsTransactionPending Then
' // no nested transactions allowed.
Throw New Exception("BeginTransaction::Already transaction pending. Nesting not allowed")
End If
If (m_scoDBConnection.State And ConnectionState.Open) = 0 Then
' // no open connection
Throw New Exception("BeginTransaction::Connection is not open.")
End If
' // begin the transaction and store the transaction object.
m_stCurrentTransaction = m_scoDBConnection.BeginTransaction(IsolationLevel.ReadCommitted, sTransactionName)
m_bIsTransactionPending = True
Return True
Catch ex As Exception
' // bubble exception
Throw ex
End Try
End Function
' /// <summary>
' /// Purpose: Commits a pending transaction on the open connection object of this class.
' /// </summary>
' /// <returns>True, if commit was succesful, or an Exception exception is thrown</returns>
Public Function CommitTransaction() As Boolean
Try
If Not m_bIsTransactionPending Then
' // no transaction pending
Throw New Exception("CommitTransaction::No transaction pending.")
End If
If (m_scoDBConnection.State And ConnectionState.Open) = 0 Then
' // no open connection
Throw New Exception("CommitTransaction::Connection is not open.")
End If
' // commit the transaction
m_stCurrentTransaction.Commit()
m_bIsTransactionPending = False
m_stCurrentTransaction.Dispose()
m_stCurrentTransaction = Nothing
m_alSavePoints.Clear()
Return True
Catch ex As Exception
' // bubble exception
Throw ex
End Try
End Function
' /// <summary>
' /// Purpose: Rolls back a pending transaction on the open connection object of this class,
' /// or rolls back to the savepoint with the given name. Savepoints are created with SaveTransaction().
' /// </summary>
' /// <param name="sTransactionToRollback">Name of transaction to roll back. Can be name of savepoint</param>
' /// <returns>True, if rollback was succesful, or an Exception exception is thrown</returns>
Public Function RollbackTransaction(ByVal sTransactionToRollback As String) As Boolean
Try
If Not m_bIsTransactionPending Then
' // no transaction pending
Throw New Exception("RollbackTransaction::No transaction pending.")
End If
If (m_scoDBConnection.State And ConnectionState.Open) = 0 Then
' // no open connection
Throw New Exception("RollbackTransaction::Connection is not open.")
End If
' // rollback the transaction
m_stCurrentTransaction.Rollback(sTransactionToRollback)
' // if this wasn't a savepoint, we've rolled back the complete transaction, so we
' // can clean it up.
If Not m_alSavePoints.Contains(sTransactionToRollback) Then
' // it's not a savepoint
m_bIsTransactionPending = False
m_stCurrentTransaction.Dispose()
m_stCurrentTransaction = Nothing
m_alSavePoints.Clear()
End If
Return True
Catch ex As Exception
' // bubble exception
Throw ex
End Try
End Function
' /// <summary>
' /// Purpose: Saves a pending transaction on the open connection object of this class to a 'savepoint'
' /// with the given name.
' /// When a rollback is issued, the caller can rollback to this savepoint or roll back the complete transaction.
' /// </summary>
' /// <param name="sSavePointName">Name of the savepoint to store the current transaction under.</param>
' /// <returns>True, if save was succesful, or an Exception exception is thrown</returns>
Public Function SaveTransaction(ByVal sSavePointName As String) As Boolean
Try
If Not m_bIsTransactionPending Then
' // no transaction pending
Throw New Exception("SaveTransaction::No transaction pending.")
End If
If (m_scoDBConnection.State And ConnectionState.Open) = 0 Then
' // no open connection
Throw New Exception("SaveTransaction::Connection is not open.")
End If
' // save the transaction
m_stCurrentTransaction.Save(sSavePointName)
' // Store the savepoint in the list.
m_alSavePoints.Add(sSavePointName)
Return True
Catch ex As Exception
' // bubble exception
Throw ex
End Try
End Function
' /// <summary>
' /// Purpose: Closes the open connection. Depending on bCommitPendingTransactions, a pending
' /// transaction is commited, or aborted.
' /// </summary>
' /// <param name="bCommitPendingTransaction">Flag for what to do when a transaction is still pending. True
' /// will commit the current transaction, False will abort (rollback) the complete current transaction.</param>
' /// <returns>True, if close was succesful, False if connection was already closed, or an Exception exception is thrown when
' /// an error occurs</returns>
Public Function CloseConnection(ByVal bCommitPendingTransaction As Boolean) As Boolean
Try
If (m_scoDBConnection.State And ConnectionState.Open) = 0 Then
' // No open connection
Return False
End If
If m_bIsTransactionPending Then
If bCommitPendingTransaction Then
' // Commit the pending transaction
m_stCurrentTransaction.Commit()
Else
' // Rollback the pending transaction
m_stCurrentTransaction.Rollback()
End If
m_bIsTransactionPending = False
m_stCurrentTransaction.Dispose()
m_stCurrentTransaction = Nothing
m_alSavePoints.Clear()
End If
' // close the connection
m_scoDBConnection.Close()
Return True
Catch ex As Exception
' // bubble exception
Throw ex
End Try
End Function
#Region " Class Property Declarations "
Public ReadOnly Property stCurrentTransaction() As SqlTransaction
Get
Return m_stCurrentTransaction
End Get
End Property
Public ReadOnly Property bIsTransactionPending() As Boolean
Get
Return m_bIsTransactionPending
End Get
End Property
Public ReadOnly Property scoDBConnection() As SqlConnection
Get
Return m_scoDBConnection
End Get
End Property
Public WriteOnly Property sConnectionString() As String
Set(ByVal Value As String)
m_scoDBConnection.ConnectionString = Value
End Set
End Property
#End Region
End Class
End Namespace

@ -0,0 +1,36 @@
Imports System.ComponentModel
Imports Microsoft.VisualBasic
Public Class DB_Connection
Shared Sub New()
Try
'Edoka
oread = IO.File.OpenText(appPath + "edokaconn.cfg")
sConnectionString_edoka = oread.ReadLine
Globals.sConnectionString_edoka = sConnectionString_edoka
oread.Close()
'Journale
oread = IO.File.OpenText(appPath + "journaleconn.cfg")
sConnectionString_journale = oread.ReadLine
Globals.sConnectionString_journale = sConnectionString_journale
oread.Close()
''tgdata
'oread = IO.File.OpenText(appPath + "tgdataconn.cfg")
'sConnectionString_tgdata = oread.ReadLine
'Globals.sConnectionString_tgdata = sConnectionString_tgdata
'oread.Close()
Globals.conn_edoka.sConnectionString = sConnectionString_edoka
Globals.conn_journale.sConnectionString = sConnectionString_journale
'Globals.conn_tgdata.sConnectionString = sConnectionString_tgdata
m_log.Log("EDKB04: DB-Connection OK", Common.Common.JournalEntryType.Information)
Catch ex As Exception
m_log.Log(ex.Message, Common.Common.JournalEntryType.Error)
End Try
End Sub
End Class

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8" ?>
<result>
<resultName>Parter Stammdaten</resultName>
<resultHeader>
<mandant>tgkb</mandant>
<userId>avaloq</userId>
<sprache>D</sprache>
<trigger>123</trigger>
</resultHeader>
<resultContent>
<Partner>
<status>2</status>
<typ>BP</typ>
<art>NAT</art>
<avqObjKey>29794711</avqObjKey>
<avvqObjId>1234</avvqObjId>
<name>Muster</name>
<nameFormatier>Muster, Max</nameFormatier>
<vorname>Max</vorname>
<kurzName>Max Muster, irgendwo</kurzName>
<geburtsdatum>19680716</geburtsdatum>
<natianoaltaet>CH</natianoaltaet>
<natianalitaet_2ff/>
<sprache>D</sprache>
<sex>M</sex>
<betreueruId>29748721</betreueruId>
<beruf/>
<branche/>
<sectorId/>
<sectoreUserId/>
<uid/>
<rechtsFormId>8101</rechtsFormId>
<rechtsFormUserId>02</rechtsFormUserId>
<kundenSegment>06</kundenSegment>
<partnerAbwicklungsformCode>N</partnerAbwicklungsformCode>
<domizilCode>CH</domizilCode>
<vipCode>N</vipCode>
<ablaufDatum></ablaufDatum>
<angestelltenArt/>
<persnRatingId/>
<personRatingName/>
<creditRatingDatum/>
<is_boeko/>
<berechtigeEmailAdresse/>
<steuerIdentAHV/>
<zivilstand>Verheiratet</zivilstand>
</Partner>
</resultContent>
</result>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1 @@
Data Source=shu01\shu00;Initial Catalog=edoka_dms;Persist Security Info=True;User ID=sa;Password=*shu29;

@ -0,0 +1 @@
Data Source=shu01\shu00;Initial Catalog=edoka_journale;Persist Security Info=True;User ID=sa;Password=*shu29

Binary file not shown.

Binary file not shown.

@ -0,0 +1,489 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>
EDKB04
</name>
</assembly>
<members>
<member name="T:EDKB04.My.Resources.Resources">
<summary>
Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
</summary>
</member>
<member name="P:EDKB04.My.Resources.Resources.ResourceManager">
<summary>
Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
</summary>
</member>
<member name="P:EDKB04.My.Resources.Resources.Culture">
<summary>
Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
</summary>
</member>
<member name="P:EDKB04.DocumentsDetermination.ConnectionString">
<summary>
Connection String für die EDOKA Datenbank
</summary>
<returns></returns>
</member>
<member name="T:EDKB04.DokumentList">
<summary>
Zum Suchen von LSV-BEs eines Partners mit Hilfe von zusäztlichen Kriterein (Selektoren).
Grundlage für die Klasse bildet die Tatsache, dass man mit einem SELECT Statement wie
select d.dokumentid, diw.inhalt from dbo.dokument d
inner join dbo.dokumentinfo_wert diw on d.dokumentid = diw.dokumentid
where d.dokumenttypnr = 1176
and d.nrpar00= 1339632
and diw.inhalt in ( 'IBAN;CH4400784013396322002', 'Paginatornummer;02180305004720', 'BE_LSV-ID_gueltig_ab;20180305', 'LSV-ID;SCW1W', 'Referenz1;60211909')
schon sehr gut eine LSV-BE finden kann und auch sieht, ob alle Suchkriterien aus dbo.dokumentinfo_wert mitberücksichtigt wurden.
</summary>
</member>
<member name="P:EDKB04.DokumentSelektor.XmlTagId">
<summary>
Tag Id des Selektors in der XML Message von Avaloq
</summary>
<returns></returns>
</member>
<member name="P:EDKB04.DokumentSelektor.DokumentWertInhaltId">
<summary>
Id (das ist der Teil vor dem ;) von dbo.dokumentinfo_wert.inhalt
</summary>
<returns></returns>
</member>
<member name="P:EDKB04.DokumentSelektor.Wert">
<summary>
Wert des XML Tags aus der Message von Avaloq
</summary>
<returns></returns>
</member>
<member name="P:EDKB04.DokumentSelektor.Filled">
<summary>
True: Der Selektor wurde in die DataTable abgefüllt
False: Der Selektor fehlt in der DataTable
</summary>
<returns></returns>
</member>
<member name="T:EDKB04.EdokaSqlDb">
<summary>
Adapter für Edoka Datenbank auf dem SQL Server
</summary>
</member>
<member name="M:EDKB04.EdokaSqlDb.SendMail(System.String,System.String,System.String)">
<summary>
gemäss Stackoverflow https://stackoverflow.com/a/10373384
</summary>
<param name="email"></param>
<param name="betreff"></param>
<param name="meldung"></param>
</member>
<member name="M:EDKB04.LsvBe.CanceledDocuments.Render">
<summary>
Hebt die LSV BEs gemäss Contract auf.
Dazu wird der ConnectionString benötigt
</summary>
<returns>True, wenn ein einziges Dokument identifiziert und aufgehoben werden konnte. Sonst False</returns>
</member>
<member name="M:EDKB04.LsvBe.ExistingDocuments.Render">
<summary>
Füllt Items mit passenden Dokumenten. Zuerst wird nur mit Partner- und Paginatornummer gesucht.
Die restlichen Suchkriterien werden erst angewendet, wenn mit Partner- und Paginatornummer
keine passenden Dokumente gefunden werden können.
</summary>
<returns>Always true</returns>
</member>
<member name="M:EDKB04.EDKB04OP.InsertMessageIntoTableEdkData(System.String)">
<summary>
Fügt die TGNummer des Erstellers und die XML-Datei in die Datenbank (edk_data) ein.
</summary>
<param name="Message"></param>
<remarks></remarks>
</member>
<member name="M:EDKB04.xmlHandling.UpdatePartnerBerechtigteEmail(System.Int32)">
<summary>
Teil von Update_Partner()
Aktualisiert alle berechtigte Email Adressen eines Parnters
Die Daten (siehe Parameter) kommen alle aus der XML Message
</summary>
<param name="partnerNr">aus XML Message</param>
</member>
<member name="M:EDKB04.xmlHandling.Update_Verfuegungsrechte">
<summary>
</summary>
<returns>True: Alles OK, False: nicht alles OK</returns>
</member>
<member name="M:EDKB04.XmlHelper.GetItemValueByTagName(System.Xml.XmlDocument@,System.String)">
<summary>
Gibt den InnerText eines Tags zurück. Falls eine Ausnahme auftritt, wird diese abgefangen und
ein Leerstring ("") zurückgegeben.
</summary>
<param name="doc"></param>
<param name="TagName"></param>
<returns></returns>
<remarks></remarks>
</member>
<member name="M:EDKB04.XmlHelper.ConvertXmlNodeListToDataTable(System.Xml.XmlDocument@,System.String)">
<summary>
Erstellt aus einer Serie von XML Objekten eine DataTable.
Haben die XML Objekte gleichnamige Subnodes, so wird der Spaltenname in der Tabelle mit einer
angehängten Indexnummer eindeutig gemacht.
Falls eine Ausnahme Auftritt, wird eine leere DataTable mit einer Spalte "Dummy" zurückgegeben.
</summary>
<param name="doc"></param>
<param name="Tagname"></param>
<returns></returns>
<remarks></remarks>
</member>
<member name="M:EDKB04.XmlHelper.GetAttributeValue(System.Xml.XmlNode@,System.String,System.String@)">
-----------------------------------------------------------------------------
<summary>
Gets the value from an attribute at the specified node.
</summary>
<param name="node">The XmlNode from which this method will get the value of an attribute.</param>
<param name="attributeName">Name of the attribute that will be read.</param>
<param name="value">Attribute value read by this method</param>
<returns>True if node is found and value is retrieved successfully.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetAttributeValue(System.Xml.XmlNode@,System.String,System.Int32@)">
-----------------------------------------------------------------------------
<summary>
Gets the value from an attribute at the specified node.
</summary>
<param name="node">The XmlNode from which this method will get the value of an attribute.</param>
<param name="attributeName">Name of the attribute that will be read.</param>
<param name="value">Attribute value read by this method</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetAttributeValue(System.Xml.XmlNode@,System.String,System.UInt32@)">
-----------------------------------------------------------------------------
<summary>
Gets the value from an attribute at the specified node.
</summary>
<param name="node">The XmlNode from which this method will get the value of an attribute.</param>
<param name="attributeName">Name of the attribute that will be read.</param>
<param name="value">Attribute value read by this method</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.SetAttributeValue(System.Xml.XmlNode@,System.String,System.String)">
-----------------------------------------------------------------------------
<summary>
Sets the value of an attribute for a given XmlNode.
</summary>
<param name="node">XmlNode whose attribute will be set.</param>
<param name="attributeName">Name of the attribute to set.</param>
<param name="value">Value to be set</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.SetAttributeValue(System.Xml.XmlNode@,System.String,System.Int32)">
-----------------------------------------------------------------------------
<summary>
Sets the value of an attribute for a given XmlNode.
</summary>
<param name="node">XmlNode whose attribute will be set.</param>
<param name="attributeName">Name of the attribute to set.</param>
<param name="value">Value to be set</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.SetAttributeValue(System.Xml.XmlNode@,System.String,System.UInt32)">
-----------------------------------------------------------------------------
<summary>
Sets the value of an attribute for a given XmlNode.
</summary>
<param name="node">XmlNode whose attribute will be set.</param>
<param name="attributeName">Name of the attribute to set.</param>
<param name="value">Value to be set</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetDataTable(System.Xml.XmlNodeList@)">
-----------------------------------------------------------------------------
<summary>s
Converts a list of Xml nodes to a DataTable.
</summary>
<param name="nodelist">List of Xml nodes</param>
<returns>DataTable</returns>
<remarks>
This method convert
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetDataTable(System.Xml.XmlNodeList,System.String,System.Boolean)">
-----------------------------------------------------------------------------
<summary>
Converts a list of Xml nodes to a DataTable and sets one of the columns as a primary key.
</summary>
<param name="nodelist"></param>
<param name="primaryKeyColumn"></param>
<param name="autoIncrement"></param>
<returns></returns>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.UpdateChildNodesWithDataTable(System.Xml.XmlNode,System.Data.DataTable,System.String)">
-----------------------------------------------------------------------------
<summary>
Updates the child nodes of "parentNode" by using the fields from a datatable.
</summary>
<param name="parentNode"></param>
<param name="table"></param>
<param name="keyField"></param>
<remarks>
The child nodes that will be updated must have attribute fields that correspond to
the DataTable. The "keyField" will be used to identify the attribute that serves as
an identifier of the rows. The datatable can have less fields than the nodes so
you have the chance to update smaller subsets.
Make sure that you did not call "AcceptChanges" before passing the datatable or this
function will not find any change.
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.NodeToString(System.Xml.XmlNode@)">
-----------------------------------------------------------------------------
<summary>
Returns contents of an XmlNode in a string.
</summary>
<param name="node">The XmlNode whose contents will be read into a string.</param>
<returns>Xml formatted string with contents of "node" parameter.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.NodeListToString(System.Xml.XmlNodeList)">
-----------------------------------------------------------------------------
<summary>
Convert a XmlNodeList to string
</summary>
<param name="nodeList"></param>
<returns></returns>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.DocumentToString(System.Xml.XmlDocument@)">
-----------------------------------------------------------------------------
<summary>
Method to convert a XmlDocument to string.
</summary>
<param name="xmlDoc">XmlDocument that will be converted to string.</param>
<returns>A xml formatted string.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.CreateChildNodes(System.Xml.XmlNode@,System.String[])">
-----------------------------------------------------------------------------
<summary>
Converts a string array to XmlNodes and appends all those nodes to a root node.
</summary>
<param name="rootNode"></param>
<param name="names"></param>
<returns></returns>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.CreateChildNodes(System.Xml.XmlNode@,System.String,System.String,System.String[])">
-----------------------------------------------------------------------------
<summary>
</summary>
<param name="rootNode"></param>
<param name="names"></param>
<param name="attributeName"></param>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String)">
<summary>
Inserts an empty record at the bottom of the hierarchy, creating the
tree as required.
</summary>
<param name="doc">The XmlDocument to which the node will be inserted.</param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<returns>The XmlNode inserted into the hierarchy.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.String[],System.String[])">
<summary>
Inserts an record with a multiple fields at the bottom of the hierarchy.
</summary>
<param name="doc">The XmlDocument to which the node will be inserted.</param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="fields">The attribute names that will be created for the node inserted.</param>
<param name="values">The corresponding value of each field.</param>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.String,System.String)">
<summary>
Inserts a record with a single field at the bottom of the hierarchy.
</summary>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="field">The field to add to the record.</param>
<param name="val">The value assigned to the field.</param>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.Collections.Specialized.NameValueCollection)">
<summary>
Insert a record with multiple fields at the bottom of the hierarchy.
</summary>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="fields">The array of fields as field/value pairs.</param>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.Data.DataRow)">
<summary>
Inserts a record with multiple fields at bottom of the hierarchy.
</summary>
<param name="doc"></param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="rowValues">The DataRow values that will be added as attributes.</param>
<remarks>
The columns names of the DataRow will become the attribute names and
the row values of the DataRow will be the attribute values.
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.Data.DataTable)">
<summary>
Inserts a record with multiple fields from a DataTable at bottom of the hierarchy.
</summary>
<param name="doc"></param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="rowValues">The DataRow values that will be added as attributes.</param>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.String,System.String[])">
<summary>
Inserts a record with multiple values at bottom of hierarchy. This is analogous to inserting
a column of data.
</summary>
<param name="doc"></param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="field">Name of the attribute to be created at node inserted.</param>
<param name="values">Values that will be inserted that correspond to the field name.</param>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Update(System.Xml.XmlDocument,System.String,System.String,System.String)">
<summary>
Update a single field in all records in the specified path.
</summary>
<param name="doc">The XmlDocument whose node will be udpated.</param>
<param name="xpath">The xml path.</param>
<param name="field">The field name to update.</param>
<param name="val">The new value.</param>
<returns>The number of records affected.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to update an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Delete(System.Xml.XmlDocument,System.String)">
<summary>
Deletes all records of the specified path.
</summary>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<returns>The number of records deleted.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Delete(System.Xml.XmlDocument,System.String,System.String)">
<summary>
Deletes a field from all records on the specified path.
</summary>
<param name="path">The xml path.</param>
<param name="field">The field to delete.</param>
<returns>The number of records affected.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.QueryScalar(System.Xml.XmlDocument,System.String,System.String)">
<summary>
Return a single string representing the value of the specified field
for the first record encountered.
</summary>
<param name="xpath">The xml path.</param>
<param name="field">The desired field.</param>
<returns>A string with the field's value or null.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Query(System.Xml.XmlDocument,System.String)">
<summary>
Returns a DataTable for all rows on the path.
</summary>
<param name="xpath">The xml path.</param>
<returns>The DataTable with the returned rows.
The row count will be 0 if no rows returned.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.QueryField(System.Xml.XmlDocument,System.String,System.String)">
<summary>
Returns an array of values for the specified field for all rows on
the path.
</summary>
<param name="xpath">The xml path.</param>
<param name="field">The desired field.</param>
<returns>The array of string values for each row qualified by the path.
A null is returned if the query results in 0 rows.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.InsertNode(System.Xml.XmlNode,System.String[],System.Int32)">
<summary>
Inserts a node at the specified segment if it doesn't exist, otherwise
traverses the node.
</summary>
<param name="node">The current node.</param>
<param name="segments">The path segment list.</param>
<param name="idx">The current segment.</param>
<returns></returns>
</member>
<member name="M:EDKB04.XmlHelper.CreateColumns(System.Data.DataTable,System.Xml.XmlNode)">
<summary>
Creates columns given an XmlNode.
</summary>
<param name="dt">The target DataTable.</param>
<param name="node">The source XmlNode.</param>
</member>
</members>
</doc>

@ -0,0 +1 @@
8e71177d433b87085749bd8b060a3b51284e68e88e453de6e00601b342cdfee0

@ -0,0 +1,22 @@
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Debug\bms_settings.xml
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Debug\bms_conn.cfg
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Debug\edokaconn.cfg
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Debug\journaleconn.cfg
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Debug\parameter.cfg
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Debug\EDKB04.exe.config
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Debug\EDKB04.exe
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Debug\EDKB04.pdb
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Debug\EDKB04.xml
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Debug\amqmdnet.dll
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Debug\BMS.dll
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Debug\Common.dll
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Debug\DataAccess.dll
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Debug\EDKB04OP.vbproj.AssemblyReference.cache
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Debug\EDKB04.Resources.resources
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Debug\EDKB04.ProjectInstaller.resources
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Debug\EDKB04OP.vbproj.GenerateResource.cache
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Debug\EDKB04OP.vbproj.CoreCompileInputs.cache
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Debug\EDKB04OP.vbproj.Up2Date
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Debug\EDKB04.exe
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Debug\EDKB04.xml
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Debug\EDKB04.pdb

Binary file not shown.

Binary file not shown.

@ -0,0 +1,489 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>
EDKB04
</name>
</assembly>
<members>
<member name="T:EDKB04.My.Resources.Resources">
<summary>
Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
</summary>
</member>
<member name="P:EDKB04.My.Resources.Resources.ResourceManager">
<summary>
Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
</summary>
</member>
<member name="P:EDKB04.My.Resources.Resources.Culture">
<summary>
Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
</summary>
</member>
<member name="P:EDKB04.DocumentsDetermination.ConnectionString">
<summary>
Connection String für die EDOKA Datenbank
</summary>
<returns></returns>
</member>
<member name="T:EDKB04.DokumentList">
<summary>
Zum Suchen von LSV-BEs eines Partners mit Hilfe von zusäztlichen Kriterein (Selektoren).
Grundlage für die Klasse bildet die Tatsache, dass man mit einem SELECT Statement wie
select d.dokumentid, diw.inhalt from dbo.dokument d
inner join dbo.dokumentinfo_wert diw on d.dokumentid = diw.dokumentid
where d.dokumenttypnr = 1176
and d.nrpar00= 1339632
and diw.inhalt in ( 'IBAN;CH4400784013396322002', 'Paginatornummer;02180305004720', 'BE_LSV-ID_gueltig_ab;20180305', 'LSV-ID;SCW1W', 'Referenz1;60211909')
schon sehr gut eine LSV-BE finden kann und auch sieht, ob alle Suchkriterien aus dbo.dokumentinfo_wert mitberücksichtigt wurden.
</summary>
</member>
<member name="P:EDKB04.DokumentSelektor.XmlTagId">
<summary>
Tag Id des Selektors in der XML Message von Avaloq
</summary>
<returns></returns>
</member>
<member name="P:EDKB04.DokumentSelektor.DokumentWertInhaltId">
<summary>
Id (das ist der Teil vor dem ;) von dbo.dokumentinfo_wert.inhalt
</summary>
<returns></returns>
</member>
<member name="P:EDKB04.DokumentSelektor.Wert">
<summary>
Wert des XML Tags aus der Message von Avaloq
</summary>
<returns></returns>
</member>
<member name="P:EDKB04.DokumentSelektor.Filled">
<summary>
True: Der Selektor wurde in die DataTable abgefüllt
False: Der Selektor fehlt in der DataTable
</summary>
<returns></returns>
</member>
<member name="T:EDKB04.EdokaSqlDb">
<summary>
Adapter für Edoka Datenbank auf dem SQL Server
</summary>
</member>
<member name="M:EDKB04.EdokaSqlDb.SendMail(System.String,System.String,System.String)">
<summary>
gemäss Stackoverflow https://stackoverflow.com/a/10373384
</summary>
<param name="email"></param>
<param name="betreff"></param>
<param name="meldung"></param>
</member>
<member name="M:EDKB04.LsvBe.CanceledDocuments.Render">
<summary>
Hebt die LSV BEs gemäss Contract auf.
Dazu wird der ConnectionString benötigt
</summary>
<returns>True, wenn ein einziges Dokument identifiziert und aufgehoben werden konnte. Sonst False</returns>
</member>
<member name="M:EDKB04.LsvBe.ExistingDocuments.Render">
<summary>
Füllt Items mit passenden Dokumenten. Zuerst wird nur mit Partner- und Paginatornummer gesucht.
Die restlichen Suchkriterien werden erst angewendet, wenn mit Partner- und Paginatornummer
keine passenden Dokumente gefunden werden können.
</summary>
<returns>Always true</returns>
</member>
<member name="M:EDKB04.EDKB04OP.InsertMessageIntoTableEdkData(System.String)">
<summary>
Fügt die TGNummer des Erstellers und die XML-Datei in die Datenbank (edk_data) ein.
</summary>
<param name="Message"></param>
<remarks></remarks>
</member>
<member name="M:EDKB04.xmlHandling.UpdatePartnerBerechtigteEmail(System.Int32)">
<summary>
Teil von Update_Partner()
Aktualisiert alle berechtigte Email Adressen eines Parnters
Die Daten (siehe Parameter) kommen alle aus der XML Message
</summary>
<param name="partnerNr">aus XML Message</param>
</member>
<member name="M:EDKB04.xmlHandling.Update_Verfuegungsrechte">
<summary>
</summary>
<returns>True: Alles OK, False: nicht alles OK</returns>
</member>
<member name="M:EDKB04.XmlHelper.GetItemValueByTagName(System.Xml.XmlDocument@,System.String)">
<summary>
Gibt den InnerText eines Tags zurück. Falls eine Ausnahme auftritt, wird diese abgefangen und
ein Leerstring ("") zurückgegeben.
</summary>
<param name="doc"></param>
<param name="TagName"></param>
<returns></returns>
<remarks></remarks>
</member>
<member name="M:EDKB04.XmlHelper.ConvertXmlNodeListToDataTable(System.Xml.XmlDocument@,System.String)">
<summary>
Erstellt aus einer Serie von XML Objekten eine DataTable.
Haben die XML Objekte gleichnamige Subnodes, so wird der Spaltenname in der Tabelle mit einer
angehängten Indexnummer eindeutig gemacht.
Falls eine Ausnahme Auftritt, wird eine leere DataTable mit einer Spalte "Dummy" zurückgegeben.
</summary>
<param name="doc"></param>
<param name="Tagname"></param>
<returns></returns>
<remarks></remarks>
</member>
<member name="M:EDKB04.XmlHelper.GetAttributeValue(System.Xml.XmlNode@,System.String,System.String@)">
-----------------------------------------------------------------------------
<summary>
Gets the value from an attribute at the specified node.
</summary>
<param name="node">The XmlNode from which this method will get the value of an attribute.</param>
<param name="attributeName">Name of the attribute that will be read.</param>
<param name="value">Attribute value read by this method</param>
<returns>True if node is found and value is retrieved successfully.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetAttributeValue(System.Xml.XmlNode@,System.String,System.Int32@)">
-----------------------------------------------------------------------------
<summary>
Gets the value from an attribute at the specified node.
</summary>
<param name="node">The XmlNode from which this method will get the value of an attribute.</param>
<param name="attributeName">Name of the attribute that will be read.</param>
<param name="value">Attribute value read by this method</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetAttributeValue(System.Xml.XmlNode@,System.String,System.UInt32@)">
-----------------------------------------------------------------------------
<summary>
Gets the value from an attribute at the specified node.
</summary>
<param name="node">The XmlNode from which this method will get the value of an attribute.</param>
<param name="attributeName">Name of the attribute that will be read.</param>
<param name="value">Attribute value read by this method</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.SetAttributeValue(System.Xml.XmlNode@,System.String,System.String)">
-----------------------------------------------------------------------------
<summary>
Sets the value of an attribute for a given XmlNode.
</summary>
<param name="node">XmlNode whose attribute will be set.</param>
<param name="attributeName">Name of the attribute to set.</param>
<param name="value">Value to be set</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.SetAttributeValue(System.Xml.XmlNode@,System.String,System.Int32)">
-----------------------------------------------------------------------------
<summary>
Sets the value of an attribute for a given XmlNode.
</summary>
<param name="node">XmlNode whose attribute will be set.</param>
<param name="attributeName">Name of the attribute to set.</param>
<param name="value">Value to be set</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.SetAttributeValue(System.Xml.XmlNode@,System.String,System.UInt32)">
-----------------------------------------------------------------------------
<summary>
Sets the value of an attribute for a given XmlNode.
</summary>
<param name="node">XmlNode whose attribute will be set.</param>
<param name="attributeName">Name of the attribute to set.</param>
<param name="value">Value to be set</param>
<returns>True if success.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetDataTable(System.Xml.XmlNodeList@)">
-----------------------------------------------------------------------------
<summary>s
Converts a list of Xml nodes to a DataTable.
</summary>
<param name="nodelist">List of Xml nodes</param>
<returns>DataTable</returns>
<remarks>
This method convert
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.GetDataTable(System.Xml.XmlNodeList,System.String,System.Boolean)">
-----------------------------------------------------------------------------
<summary>
Converts a list of Xml nodes to a DataTable and sets one of the columns as a primary key.
</summary>
<param name="nodelist"></param>
<param name="primaryKeyColumn"></param>
<param name="autoIncrement"></param>
<returns></returns>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.UpdateChildNodesWithDataTable(System.Xml.XmlNode,System.Data.DataTable,System.String)">
-----------------------------------------------------------------------------
<summary>
Updates the child nodes of "parentNode" by using the fields from a datatable.
</summary>
<param name="parentNode"></param>
<param name="table"></param>
<param name="keyField"></param>
<remarks>
The child nodes that will be updated must have attribute fields that correspond to
the DataTable. The "keyField" will be used to identify the attribute that serves as
an identifier of the rows. The datatable can have less fields than the nodes so
you have the chance to update smaller subsets.
Make sure that you did not call "AcceptChanges" before passing the datatable or this
function will not find any change.
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.NodeToString(System.Xml.XmlNode@)">
-----------------------------------------------------------------------------
<summary>
Returns contents of an XmlNode in a string.
</summary>
<param name="node">The XmlNode whose contents will be read into a string.</param>
<returns>Xml formatted string with contents of "node" parameter.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.NodeListToString(System.Xml.XmlNodeList)">
-----------------------------------------------------------------------------
<summary>
Convert a XmlNodeList to string
</summary>
<param name="nodeList"></param>
<returns></returns>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.DocumentToString(System.Xml.XmlDocument@)">
-----------------------------------------------------------------------------
<summary>
Method to convert a XmlDocument to string.
</summary>
<param name="xmlDoc">XmlDocument that will be converted to string.</param>
<returns>A xml formatted string.</returns>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.CreateChildNodes(System.Xml.XmlNode@,System.String[])">
-----------------------------------------------------------------------------
<summary>
Converts a string array to XmlNodes and appends all those nodes to a root node.
</summary>
<param name="rootNode"></param>
<param name="names"></param>
<returns></returns>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.CreateChildNodes(System.Xml.XmlNode@,System.String,System.String,System.String[])">
-----------------------------------------------------------------------------
<summary>
</summary>
<param name="rootNode"></param>
<param name="names"></param>
<param name="attributeName"></param>
<remarks>
</remarks>
-----------------------------------------------------------------------------
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String)">
<summary>
Inserts an empty record at the bottom of the hierarchy, creating the
tree as required.
</summary>
<param name="doc">The XmlDocument to which the node will be inserted.</param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<returns>The XmlNode inserted into the hierarchy.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.String[],System.String[])">
<summary>
Inserts an record with a multiple fields at the bottom of the hierarchy.
</summary>
<param name="doc">The XmlDocument to which the node will be inserted.</param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="fields">The attribute names that will be created for the node inserted.</param>
<param name="values">The corresponding value of each field.</param>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.String,System.String)">
<summary>
Inserts a record with a single field at the bottom of the hierarchy.
</summary>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="field">The field to add to the record.</param>
<param name="val">The value assigned to the field.</param>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.Collections.Specialized.NameValueCollection)">
<summary>
Insert a record with multiple fields at the bottom of the hierarchy.
</summary>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="fields">The array of fields as field/value pairs.</param>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.Data.DataRow)">
<summary>
Inserts a record with multiple fields at bottom of the hierarchy.
</summary>
<param name="doc"></param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="rowValues">The DataRow values that will be added as attributes.</param>
<remarks>
The columns names of the DataRow will become the attribute names and
the row values of the DataRow will be the attribute values.
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.Data.DataTable)">
<summary>
Inserts a record with multiple fields from a DataTable at bottom of the hierarchy.
</summary>
<param name="doc"></param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="rowValues">The DataRow values that will be added as attributes.</param>
</member>
<member name="M:EDKB04.XmlHelper.Insert(System.Xml.XmlDocument,System.String,System.String,System.String[])">
<summary>
Inserts a record with multiple values at bottom of hierarchy. This is analogous to inserting
a column of data.
</summary>
<param name="doc"></param>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<param name="field">Name of the attribute to be created at node inserted.</param>
<param name="values">Values that will be inserted that correspond to the field name.</param>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to insert an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Update(System.Xml.XmlDocument,System.String,System.String,System.String)">
<summary>
Update a single field in all records in the specified path.
</summary>
<param name="doc">The XmlDocument whose node will be udpated.</param>
<param name="xpath">The xml path.</param>
<param name="field">The field name to update.</param>
<param name="val">The new value.</param>
<returns>The number of records affected.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>
The "doc" variable must have a root node. The path should not contain the root node.
The path can contain only the node names or it can contain attributes in XPath query form.
For example to update an "Address" node at the bottom, the following is a valid xpath query
xpath = "University[@Name='UT']/Student[@Id=12222]/Address"
</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Delete(System.Xml.XmlDocument,System.String)">
<summary>
Deletes all records of the specified path.
</summary>
<param name="xpath">The xml XPath query to get to the bottom node.</param>
<returns>The number of records deleted.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Delete(System.Xml.XmlDocument,System.String,System.String)">
<summary>
Deletes a field from all records on the specified path.
</summary>
<param name="path">The xml path.</param>
<param name="field">The field to delete.</param>
<returns>The number of records affected.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.QueryScalar(System.Xml.XmlDocument,System.String,System.String)">
<summary>
Return a single string representing the value of the specified field
for the first record encountered.
</summary>
<param name="xpath">The xml path.</param>
<param name="field">The desired field.</param>
<returns>A string with the field's value or null.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.Query(System.Xml.XmlDocument,System.String)">
<summary>
Returns a DataTable for all rows on the path.
</summary>
<param name="xpath">The xml path.</param>
<returns>The DataTable with the returned rows.
The row count will be 0 if no rows returned.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.QueryField(System.Xml.XmlDocument,System.String,System.String)">
<summary>
Returns an array of values for the specified field for all rows on
the path.
</summary>
<param name="xpath">The xml path.</param>
<param name="field">The desired field.</param>
<returns>The array of string values for each row qualified by the path.
A null is returned if the query results in 0 rows.</returns>
<exception cref="T:System.ArgumentNullException">Thrown when an argument is null.</exception>
<remarks>Additional exceptions may be thrown by the XmlDocument class.</remarks>
</member>
<member name="M:EDKB04.XmlHelper.InsertNode(System.Xml.XmlNode,System.String[],System.Int32)">
<summary>
Inserts a node at the specified segment if it doesn't exist, otherwise
traverses the node.
</summary>
<param name="node">The current node.</param>
<param name="segments">The path segment list.</param>
<param name="idx">The current segment.</param>
<returns></returns>
</member>
<member name="M:EDKB04.XmlHelper.CreateColumns(System.Data.DataTable,System.Xml.XmlNode)">
<summary>
Creates columns given an XmlNode.
</summary>
<param name="dt">The target DataTable.</param>
<param name="node">The source XmlNode.</param>
</member>
</members>
</doc>

@ -0,0 +1 @@
8e71177d433b87085749bd8b060a3b51284e68e88e453de6e00601b342cdfee0

@ -0,0 +1,22 @@
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Release\bms_settings.xml
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Release\bms_conn.cfg
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Release\edokaconn.cfg
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Release\journaleconn.cfg
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Release\parameter.cfg
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Release\EDKB04.exe.config
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Release\EDKB04.exe
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Release\EDKB04.pdb
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Release\EDKB04.xml
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Release\amqmdnet.dll
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Release\BMS.dll
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Release\Common.dll
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\bin\Release\DataAccess.dll
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Release\EDKB04OP.vbproj.AssemblyReference.cache
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Release\EDKB04.Resources.resources
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Release\EDKB04.ProjectInstaller.resources
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Release\EDKB04OP.vbproj.GenerateResource.cache
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Release\EDKB04OP.vbproj.CoreCompileInputs.cache
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Release\EDKB04OP.vbproj.Up2Date
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Release\EDKB04.exe
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Release\EDKB04.xml
E:\Software-Projekte\EDOKA\batch\EDKB04OP\EDKB04OP\EDKB04OP\obj\Release\EDKB04.pdb

@ -0,0 +1,18 @@
MQHostname =vb0049d
MQPort =1416
MQChannel =TGKB.D16.EDOKA.CL
MQQueueName =test
SqlTimeOut =500000
CDMUTER =EDKB04
MuterNr =9996
WatchDir =k:\edoka\00_EDK_Files\EDKB04
TimerIntervall =0
Loop =false
Debugmode =true
DebugDir =k:\edoka\00_EDK_Files\EDKB04\Archiv
DefaultBetreuerID =1166755
nb_Errors =10
nb_seconds =10
len_TXADZ =35
WaitForBrake =0
WriteUnsplittedFile =1

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,13 @@
git remote add origin https://gitea.shubweb.ch/shu/edkb04.git
git push -u origin main
pause
rem touch .gitignore
rem pause
rem touch README.md
git init
git checkout -b main
git add README.md
git commit -m "first commit"
git remote add origin http://192.168.111.81:3000/shu/EDKB04.git
git push -u origin main
pause
Loading…
Cancel
Save