Initial
This commit is contained in:
390
edkb08/Datenbank/clsAvaloq.vb
Normal file
390
edkb08/Datenbank/clsAvaloq.vb
Normal file
@@ -0,0 +1,390 @@
|
||||
Imports System
|
||||
Imports System.Data
|
||||
Imports System.Data.OracleClient
|
||||
|
||||
Namespace Avaloq
|
||||
|
||||
Public Class SST
|
||||
Const queryString As String = "k.tkb$out_dsp_in#.edoka_in"
|
||||
Const queryStringGetValues As String = "k.tkb$out_dsp_in#.edoka_get_values"
|
||||
Const queryStringOpenSession As String = "k.session#.open_session"
|
||||
Const queryStringCloseSession As String = "k.session#.close_session"
|
||||
Const avqOracleUser As String = "TKB$I_EDOKA"
|
||||
Const avqSecUserId As Integer = 34
|
||||
Const avqBuId As Integer = 1
|
||||
|
||||
Const edkFaDokTyp As String = "1688"
|
||||
|
||||
'Const edkDokBezeichnungKey As String = "edk_bez"
|
||||
'Const edkDokBezeichnungDflt As String = "Antworttalon"
|
||||
Dim connStrg As String
|
||||
|
||||
|
||||
Private _hasErrors As Boolean
|
||||
|
||||
Private _dlvEDK As Boolean
|
||||
Private _dlvAVQ As Boolean
|
||||
|
||||
Private _edkDokNr As String
|
||||
Private _edkDokTypOvr As Boolean
|
||||
Private _edkDokBezeichnung As String
|
||||
Private _qrcode As String
|
||||
Private _bpnr As String
|
||||
|
||||
|
||||
|
||||
Public Sub New()
|
||||
oread = System.IO.File.OpenText(DivFnkt.ApplicationPath + "avaloqconn.cfg")
|
||||
connStrg = oread.ReadLine
|
||||
oread.Close()
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Public ReadOnly Property hasErrors() As Boolean
|
||||
Get
|
||||
Return _hasErrors
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property DeliverToEDK As Boolean
|
||||
Get
|
||||
Return _dlvEDK
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property DeliverToAVQ As Boolean
|
||||
Get
|
||||
Return _dlvAVQ
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property BPNr As String
|
||||
Get
|
||||
Return _bpnr
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property edkDokNr As String
|
||||
Get
|
||||
Return _edkDokNr
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property edkDokTypOvr As Boolean
|
||||
Get
|
||||
Return _edkDokTypOvr
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property edkDokBezeichnung As String
|
||||
Get
|
||||
Return _edkDokBezeichnung
|
||||
End Get
|
||||
End Property
|
||||
|
||||
|
||||
Private Sub InitItem()
|
||||
_hasErrors = False
|
||||
_dlvEDK = True
|
||||
_dlvAVQ = True
|
||||
_bpnr = Nothing
|
||||
_edkDokNr = Nothing
|
||||
_edkDokTypOvr = False
|
||||
_edkDokBezeichnung = Nothing
|
||||
_qrcode = Nothing
|
||||
End Sub
|
||||
|
||||
Public Sub Prepare(ByVal BPNr As String, ByVal XmlDokTypNr As String, ByVal Instructions As String, ByVal dlvEDK As String, ByVal dlvAVQ As String)
|
||||
PrintOut("AVQ Prepare Start")
|
||||
InitItem()
|
||||
|
||||
If Instructions.IndexOf("dms_id:;bp_nr:;attr1:") > -1 Then
|
||||
Instructions = Instructions.Replace("dms_id:;bp_nr:;attr1:", "")
|
||||
End If
|
||||
_qrcode = Instructions
|
||||
|
||||
If Len(XmlDokTypNr) > 0 Then
|
||||
If XmlDokTypNr <> edkFaDokTyp Then
|
||||
'DokTyp ist ein Edoka-Doktyp
|
||||
_edkDokNr = XmlDokTypNr
|
||||
_edkDokTypOvr = True
|
||||
End If
|
||||
End If
|
||||
|
||||
If dlvEDK = "0" Then
|
||||
_dlvEDK = False
|
||||
End If
|
||||
|
||||
If dlvAVQ = "0" Then
|
||||
_dlvAVQ = False
|
||||
End If
|
||||
|
||||
If Len(_qrcode) > 0 Then
|
||||
|
||||
|
||||
|
||||
End If
|
||||
|
||||
If _dlvAVQ = True Or _dlvEDK = True Then
|
||||
|
||||
GetAvqData(BPNr, Instructions)
|
||||
|
||||
If Len(BPNr) > 0 And BPNr <> _bpnr Then
|
||||
|
||||
'Wahrscheinlich falsch manuell indexiert
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
'If Len(_qrcode) > 0 Then
|
||||
' _hasQrCode = True
|
||||
'
|
||||
''EDOKA-Dokument-Bezeichnung auslesen
|
||||
'Try
|
||||
'For Each pairs As String In _qrcode.Split(";"c)
|
||||
'Dim values As String() = pairs.Split(":"c)
|
||||
'If values(0) = edkDokBezeichnungKey Then
|
||||
' _edkDokBezeichnung = values(1)
|
||||
' End If
|
||||
' Next
|
||||
' Catch ex As Exception
|
||||
' _hasErrors = True
|
||||
' _edkDokBezeichnung = edkDokBezeichnungDflt
|
||||
' End Try
|
||||
' Else
|
||||
' _hasErrors = True
|
||||
' _edkDokBezeichnung = edkDokBezeichnungDflt
|
||||
' End If
|
||||
PrintOut("AVQ Prepare Ende")
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub GetAvqData(ByVal BPNr As String, ByVal Instructions As String)
|
||||
PrintOut("GetAVQData Start")
|
||||
Dim dataReader As OracleDataReader
|
||||
Dim connectionSession As New OracleConnection
|
||||
|
||||
connectionSession.ConnectionString = connStrg
|
||||
'OracleConnection.ClearAllPools()
|
||||
Dim command As OracleCommand = connectionSession.CreateCommand()
|
||||
|
||||
command.Parameters.Clear()
|
||||
|
||||
command.CommandText = queryStringOpenSession
|
||||
command.CommandType = CommandType.StoredProcedure
|
||||
command.Parameters.Add(New OracleParameter("i_sec_user_id", OracleType.Int32)).Value = avqSecUserId
|
||||
command.Parameters.Add(New OracleParameter("i_oracle_user", OracleType.VarChar)).Value = avqOracleUser
|
||||
command.Parameters.Add(New OracleParameter("i_bu_id", OracleType.Int32)).Value = avqBuId
|
||||
Try
|
||||
connectionSession.Open()
|
||||
command.ExecuteReader()
|
||||
'dataReader.Read()
|
||||
'dataReader.Close()
|
||||
'dataReader.Dispose()
|
||||
Catch ex As Exception
|
||||
PrintOut("Get_AVQ_Data (1):" + ex.Message)
|
||||
If connectionSession.State = ConnectionState.Closed Then
|
||||
connectionSession.Open()
|
||||
command.ExecuteReader()
|
||||
End If
|
||||
End Try
|
||||
|
||||
|
||||
command.Parameters.Clear()
|
||||
|
||||
command.CommandText = queryStringGetValues
|
||||
command.CommandType = CommandType.StoredProcedure
|
||||
command.Parameters.Add(New OracleParameter("i_bp_nr", OracleType.VarChar)).Value = BPNr
|
||||
command.Parameters.Add(New OracleParameter("i_instructions", OracleType.VarChar)).Value = Instructions
|
||||
command.Parameters.Add(New OracleParameter("o_bp_nr", OracleType.Char, 4000)).Direction = ParameterDirection.Output
|
||||
command.Parameters.Add(New OracleParameter("o_edk_dok_nr", OracleType.Char, 4000)).Direction = ParameterDirection.Output
|
||||
command.Parameters.Add(New OracleParameter("o_edk_dok_bez", OracleType.Char, 4000)).Direction = ParameterDirection.Output
|
||||
command.Parameters.Add(New OracleParameter("o_ret_val", OracleType.Char, 4000)).Direction = ParameterDirection.Output
|
||||
|
||||
Try
|
||||
If connectionSession.State = ConnectionState.Open Then
|
||||
'nothing
|
||||
Else
|
||||
connectionSession.Open()
|
||||
End If
|
||||
|
||||
|
||||
dataReader = command.ExecuteReader()
|
||||
dataReader.Read()
|
||||
|
||||
Dim rbpnr As String = Trim(command.Parameters.Item(2).Value)
|
||||
Dim rdoktypnr As String = Trim(command.Parameters.Item(3).Value)
|
||||
Dim rdokbez As String = Trim(command.Parameters.Item(4).Value)
|
||||
Dim ret As String = Trim(command.Parameters.Item(5).Value)
|
||||
|
||||
If ret = "OK" Then
|
||||
_hasErrors = False
|
||||
Else
|
||||
_hasErrors = True
|
||||
End If
|
||||
|
||||
_bpnr = rbpnr
|
||||
_edkDokBezeichnung = rdokbez 'Edoka-Dokumentbezeichnung für allfälligen Override UND für den Standard-Fall
|
||||
|
||||
If _edkDokTypOvr = False Then
|
||||
'Falls Doktyp-Override aus Scanning kommt, ist Definition in Avaloq-Table-Editor irrelevant
|
||||
If Len(rdoktypnr) > 0 And rdoktypnr <> edkFaDokTyp Then
|
||||
_edkDokNr = rdoktypnr
|
||||
_edkDokTypOvr = True
|
||||
End If
|
||||
End If
|
||||
|
||||
dataReader.Close()
|
||||
dataReader.Dispose()
|
||||
connectionSession.Close()
|
||||
connectionSession.Dispose()
|
||||
'ACHTUNG
|
||||
connectionSession = Nothing
|
||||
dataReader = Nothing
|
||||
command = Nothing
|
||||
|
||||
'ACHTUNG
|
||||
|
||||
Catch ex As Exception
|
||||
PrintOut("Get_AVQ_Data (2):" + ex.Message)
|
||||
|
||||
Console.WriteLine(ex.Message)
|
||||
If connectionSession.State = ConnectionState.Open Then
|
||||
command.Parameters.Clear()
|
||||
command.CommandText = "k.session#.close_session"
|
||||
command.CommandType = CommandType.StoredProcedure
|
||||
Try
|
||||
dataReader = command.ExecuteReader()
|
||||
dataReader.Read()
|
||||
dataReader.Close()
|
||||
dataReader.Dispose()
|
||||
Catch ex1 As Exception
|
||||
|
||||
End Try
|
||||
|
||||
command.Dispose()
|
||||
connectionSession.Close()
|
||||
connectionSession.Dispose()
|
||||
Console.WriteLine(connectionSession.State)
|
||||
End If
|
||||
End Try
|
||||
PrintOut("GetAVQData Ende")
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
Public Sub SendData()
|
||||
PrintOut("AVQ Sendata Start")
|
||||
|
||||
If Len(_bpnr) = 0 Or Len(_qrcode) = 0 Then
|
||||
_hasErrors = True
|
||||
Return
|
||||
End If
|
||||
|
||||
|
||||
_hasErrors = True 'wird bei erfolgreicher Übermittlung auf false gesetellt
|
||||
|
||||
Dim dataReader As OracleDataReader
|
||||
Dim connectionSession As New OracleConnection
|
||||
|
||||
connectionSession.ConnectionString = connStrg
|
||||
'OracleConnection.ClearAllPools()
|
||||
Dim command As OracleCommand = connectionSession.CreateCommand()
|
||||
|
||||
command.Parameters.Clear()
|
||||
|
||||
command.CommandText = queryStringOpenSession
|
||||
command.CommandType = CommandType.StoredProcedure
|
||||
command.Parameters.Add(New OracleParameter("i_sec_user_id", OracleType.Int32)).Value = avqSecUserId
|
||||
command.Parameters.Add(New OracleParameter("i_oracle_user", OracleType.VarChar)).Value = avqOracleUser
|
||||
command.Parameters.Add(New OracleParameter("i_bu_id", OracleType.Int32)).Value = avqBuId
|
||||
Try
|
||||
connectionSession.Open()
|
||||
'connectionSession.Open()
|
||||
'connectionSession.open
|
||||
'dataReader =
|
||||
command.ExecuteReader()
|
||||
'dataReader.Read()
|
||||
'dataReader.Close()
|
||||
'dataReader.Dispose()
|
||||
Catch ex As Exception
|
||||
PrintOut("AVQ Send_Data (1):" + ex.Message)
|
||||
|
||||
If connectionSession.State = ConnectionState.Closed Then
|
||||
connectionSession.Open()
|
||||
command.ExecuteReader()
|
||||
End If
|
||||
End Try
|
||||
|
||||
|
||||
command.Parameters.Clear()
|
||||
|
||||
command.CommandText = queryString
|
||||
command.CommandType = CommandType.StoredProcedure
|
||||
command.Parameters.Add(New OracleParameter("i_bp_nr", OracleType.VarChar)).Value = _bpnr
|
||||
command.Parameters.Add(New OracleParameter("i_instructions", OracleType.VarChar)).Value = _qrcode
|
||||
command.Parameters.Add(New OracleParameter("o_ret_val", OracleType.VarChar, 20)).Direction = ParameterDirection.Output
|
||||
|
||||
Try
|
||||
If connectionSession.State = ConnectionState.Open Then
|
||||
'nothing
|
||||
Else
|
||||
connectionSession.Open()
|
||||
End If
|
||||
|
||||
|
||||
dataReader = command.ExecuteReader()
|
||||
dataReader.Read()
|
||||
|
||||
Dim result As String = command.Parameters.Item(2).Value
|
||||
If result = "OK" Then
|
||||
_hasErrors = False
|
||||
Else
|
||||
_hasErrors = True
|
||||
End If
|
||||
|
||||
dataReader.Close()
|
||||
dataReader.Dispose()
|
||||
connectionSession.Close()
|
||||
connectionSession.Dispose()
|
||||
'ACHTUNG
|
||||
connectionSession = Nothing
|
||||
dataReader = Nothing
|
||||
command = Nothing
|
||||
|
||||
'ACHTUNG
|
||||
|
||||
Catch ex As Exception
|
||||
PrintOut("AVQ Send_Data (2):" + ex.Message)
|
||||
|
||||
Console.WriteLine(ex.Message)
|
||||
If connectionSession.State = ConnectionState.Open Then
|
||||
command.Parameters.Clear()
|
||||
command.CommandText = "k.session#.close_session"
|
||||
command.CommandType = CommandType.StoredProcedure
|
||||
Try
|
||||
dataReader = command.ExecuteReader()
|
||||
dataReader.Read()
|
||||
dataReader.Close()
|
||||
dataReader.Dispose()
|
||||
Catch ex1 As Exception
|
||||
|
||||
End Try
|
||||
|
||||
command.Dispose()
|
||||
connectionSession.Close()
|
||||
connectionSession.Dispose()
|
||||
Console.WriteLine(connectionSession.State)
|
||||
End If
|
||||
End Try
|
||||
PrintOut("AVQ Sendata Ende")
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
|
||||
|
||||
End Namespace
|
||||
|
||||
Reference in New Issue
Block a user