You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
353 lines
12 KiB
353 lines
12 KiB
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 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 _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 edkDokBezeichnung As String
|
|
Get
|
|
Return _edkDokBezeichnung
|
|
End Get
|
|
End Property
|
|
|
|
|
|
Private Sub InitItem()
|
|
_hasErrors = False
|
|
_dlvEDK = True
|
|
_dlvAVQ = True
|
|
_bpnr = Nothing
|
|
_edkDokNr = Nothing
|
|
_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)
|
|
InitItem()
|
|
|
|
_qrcode = Instructions
|
|
|
|
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
|
|
|
|
If Len(_edkDokNr) = 0 Then
|
|
_edkDokNr = XmlDokTypNr
|
|
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
|
|
|
|
End Sub
|
|
|
|
|
|
Private Sub GetAvqData(ByVal BPNr As String, ByVal Instructions As String)
|
|
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
|
|
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.VarChar, 20)).Direction = ParameterDirection.Output
|
|
command.Parameters.Add(New OracleParameter("o_edk_dok_nr", OracleType.VarChar, 25)).Direction = ParameterDirection.Output
|
|
command.Parameters.Add(New OracleParameter("o_edk_dok_bez", OracleType.VarChar, 50)).Direction = ParameterDirection.Output
|
|
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 rbpnr As String = command.Parameters.Item(2).Value
|
|
Dim rdoktypnr As String = command.Parameters.Item(3).Value
|
|
Dim rdokbez As String = command.Parameters.Item(4).Value
|
|
Dim ret As String = command.Parameters.Item(5).Value
|
|
|
|
If ret = "OK" Then
|
|
_hasErrors = False
|
|
Else
|
|
_hasErrors = True
|
|
End If
|
|
|
|
_bpnr = rbpnr
|
|
_edkDokNr = rdoktypnr
|
|
_edkDokBezeichnung = rdokbez
|
|
|
|
dataReader.Close()
|
|
dataReader.Dispose()
|
|
connectionSession.Close()
|
|
connectionSession.Dispose()
|
|
'ACHTUNG
|
|
connectionSession = Nothing
|
|
dataReader = Nothing
|
|
command = Nothing
|
|
|
|
'ACHTUNG
|
|
|
|
Catch ex As Exception
|
|
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
|
|
End Sub
|
|
|
|
|
|
|
|
Public Sub SendData()
|
|
|
|
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
|
|
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
|
|
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
|
|
End Sub
|
|
End Class
|
|
|
|
|
|
|
|
End Namespace
|
|
|