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.

2685 lines
138 KiB

Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports System.IO
'''<summary>Plausibilisierung der angelieferten Indexdaten sowie Dokumentimport in
'''EDOKA</summary>
'''<remarks>Mit den Methoden dieser Klasse werden einerseits die angelieferten
'''Indexinformationen auf ihre Vollständigkeit hin überprüft. Im Fehlerfall werden
'''ensprechende Meldungen ausgegeben bzw. journalisiert, im OK-Fall werden die
'''entsprechenden Dokumente in die EDOKA-Datenbank importiert. Je Applikation ist
'''festgehalten ob - Alle Parameter korrekt sein müssen, bevor der Dokumentimport
'''stattfinden - Nur die fehlerhaften Importe nicht verarbeitet werden</remarks>
Public Class clsCheckandImport
#Region "Deklarationen"
'''<summary>Interne Variable für das Property IndexData</summary>
Dim m_indexdata As DataTable
'''<summary>Datentabelle mit den Indexwerten</summary>
Property IndexData() As DataTable
Get
Return m_indexdata
End Get
Set(ByVal Value As DataTable)
m_indexdata = Value
End Set
End Property
'''<summary>Interne temporöre Datentabelle</summary>
Dim TmpTable As DataTable
Dim Fnkt As String = ""
Dim BarcodeImport As Boolean = False
Dim Status_Bereit_Zur_Eingangsarchivierung As Boolean = False
Dim bckstatussequenz As Boolean = False
#End Region
'''<summary>Prüfung der Indexwerte
'''Sofern die Indexwerte vollständig sind, werden die Dokumente in EDOKA
'''importiert.
'''
'''</summary>
Public Function CheckandImport() As Boolean
Dim i As Integer
Fehler = 0
If Globals.Herkunftsapplikation.Rows(0).Item(12) = 1 Then
Globals.temp_indexdaten = Me.IndexData
For i = 0 To Me.IndexData.Rows.Count - 1
Save_ImportDaten(i)
Checkdata(False, i)
Next
If Fehler <> 0 Then
Journal.Insert_Journal("", "", "", "", "", "Verarbeitung feherhaft abgebrochen. Es wurden keine Dokumente importiert.", "", "")
Return False
Else
For i = 0 To Me.IndexData.Rows.Count - 1
Checkdata(True, i)
Next
End If
Else
Globals.temp_indexdaten = Me.IndexData
For i = 0 To Me.IndexData.Rows.Count - 1
Save_ImportDaten(i)
Checkdata(True, i)
Next
End If
'Rel. 4.1 - QS EDKB09-SB-Import
Dim SBNr As String
Try
If Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB09" Then
Dim s As String
Dim s1() As String
Dim cdok As New edokadb.clsDokument
Dim sdok As New edokadb.clsEdex_sb_serienbrief
Dim DokBestaetigt As Integer = 0
Dim DokImportiert As Integer = 0
Dim tmpdata As New DataTable
s = Me.IndexData.Rows(0).Item("Dokumentwert2").ToString
SBNr = 0
If s.IndexOf(";") > 1 Then
s1 = s.Split(";")
SBNr = s1(1).ToString
End If
sdok.iSerienbriefnr = New SqlInt32(CType(SBNr, Int32))
sdok.cpMainConnectionProvider = Globals.conn_edoka
sdok.SelectOne()
DokBestaetigt = sdok.iBestaetigt.Value
For i = 0 To Me.IndexData.Rows.Count - 1
cdok.sDokumentid = New SqlString(CType(Me.IndexData.Rows(i).Item("dokumentid"), String))
cdok.cpMainConnectionProvider = Globals.conn_edoka
tmpdata.Rows.Clear()
tmpdata = cdok.SelectOne()
If tmpdata.Rows.Count = 0 Then
Else
DokImportiert = DokImportiert + 1
End If
Next
If DokBestaetigt <> DokImportiert Then
Journal.Insert_Journal("", "", "", "", "", "EDKB08: Dok-Import fehlerhaft SBNr " + SBNr.ToString + " Bestaetigt: " + DokBestaetigt.ToString + " Importiert: " + DokImportiert.ToString, "", "")
send_mail("edoka@tkb.ch", "EDKB08 NOK: Import fehlerhaft", "Dok-Import fehlerhaft SBNr " + SBNr.ToString + " Bestaetigt: " + DokBestaetigt.ToString + " Importiert: " + DokImportiert.ToString)
Else
Journal.Insert_Journal("", "", "", "", "", "EDKB08: Dok-Import erfolgreich SBNr " + SBNr.ToString + " Bestaetigt: " + DokBestaetigt.ToString + " Importiert: " + DokImportiert.ToString, "", "")
'send_mail("edoka@tkb.ch", "EDKB08 OK: Import OK", "Dok-Import erfolgreich SBNr " + SBNr.ToString + " Bestaetigt: " + DokBestaetigt.ToString + " Importiert: " + DokImportiert.ToString)
End If
cdok.Dispose()
sdok.Dispose()
tmpdata.Dispose()
End If
Catch ex As Exception
Journal.Insert_Journal("", "", "", "", "", "EDKB09: SBNr " + SBNr.ToString + " konnte nicht geprüft werden.", "", "")
End Try
End Function
Private Function send_mail(ByVal empfaenger As String, ByVal Subject As String, ByVal Inhalt As String) As Boolean
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.sp_sendmail"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@email", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, empfaenger))
scmCmdToExecute.Parameters.Add(New SqlParameter("@betreff", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Subject))
scmCmdToExecute.Parameters.Add(New SqlParameter("@meldung", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Inhalt))
Try
sdaAdapter.Fill(dtToReturn)
If scmCmdToExecute.Parameters("@errorcode").Value <> 0 Then
PrintLog("Mail konnte nicht versandt werden. " + scmCmdToExecute.Parameters("@errorcode").Value, EventLogEntryType.Warning)
Return False
End If
Catch ex As Exception
'Journal.Insert_Journal("", "", "", filename, "20", "Mail konnte nicht versandt werden." + ex.Message, "", "")
PrintLog("Mail konnte nicht versandt werden." + ex.Message, EventLogEntryType.Warning)
Return False
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
End Try
End Function
#Region "Check_Funktionen"
'''<summary>Prüft die Indexdaten und löst ggf. den Import des Dokumentes
'''aus.</summary>
'''<remarks>Die Funktion prüft die Indexwerte. Sofern die Werte i.O. sind und der
'''Dokumentimport ausgelöst werden kann (vgl. Parameter Dokimport) wird das
'''Dokument importiert. Im Fehlerfall wird eine Meldung protokolliert und die
'''Variable Fehler gesetzt.</remarks>
'''<param name="DokImport">True=Dokument importieren False=Dokument nicht
'''importieren (nur plausibilisieren)</param>
'''<param name="datarow">Aktuelle Datarow der Tabelle Indexdata</param>
'''<returns>True=Verarbeitung i.O. False=Verarbeitung fehlerhaft</returns>
'''<author>Stefan Hutter</author>
Private Function Checkdata(ByVal DokImport As Boolean, ByVal datarow As Integer) As Boolean
'Prüfung Funktion"
If Check_Funktion(UCase(Me.IndexData.Rows(datarow).Item(0))) = False Then
Fehler = 1
Journal.Insert_Journal(datarow, "", "", "", Fehler, "Ungültige Funktion: " + Me.IndexData.Rows(datarow).Item(0), "", "")
Return False
End If
'Bei der Funktion "ADD" Partner prüfen ggf. neuer EDOKA-Partner erfassen
If Me.Fnkt = "ADD" And Check_Partnerzuordnung(datarow) = False Then
If Me.BarcodeImport = True Then Exit Function
If Check_EDOKA_Partner_Erfassen(datarow) = False Then
Fehler = 7
Journal.Insert_Journal(datarow, "", "", "", Fehler, "Erfassung des EDOKA-Partners ist fehlgeschlagen: " + Me.IndexData.Rows(datarow).Item(5), "", "")
Return False
End If
End If
'Prüfung Dokumentdaten für die Funktionen ADD und REPL
If (Me.Fnkt = "ADD" Or Me.Fnkt = "REPL") And Check_Dokumentdaten(datarow) = False Then
If Not Me.BarcodeImport Then Return False
End If
'Prüfung, ob entweder die EDOKA-Dokumentid oder ein eindeutiger Dokumentname als Parameter übergeben wurde
If Me.Fnkt = "UPD" Or Me.Fnkt = "DEL" Or Me.Fnkt = "REPL" Then
'EDOKA-Dokumentid
If Me.IndexData.Rows(datarow).Item(22) <> "" Then
If Not get_edoka_dokument(1, Me.IndexData.Rows(datarow).Item(22), datarow) Then
If Not Me.BarcodeImport Then Return False
End If
Else
'Eindeutiger Dokumentname
If Not get_edoka_dokument(2, Me.IndexData.Rows(datarow).Item(12), datarow) Then
Return False
If Not Me.BarcodeImport Then Return False
End If
End If
End If
'Dokument importieren, sofern DokImport auf True gesetzt ist
If DokImport = True Then
Globals.Mitarbeiternr = Get_EDOKA_Mitarbeiter(datarow)
Select Case UCase(Me.IndexData.Rows(datarow).Item(0)).ToString
Case "ADD"
Try
Import_Dokument(datarow)
'Insert_Note(Dokumentid, "*** Durch EDOKA_Import in EDOKA eingefügt")
'Anpassungen EBES_LSV
If Me.BarcodeImport = False Or Me.BarcodeImport = True Then
Insert_Dokumentwerte(datarow)
Journal.Insert_Journal(datarow, IndexData.Rows(datarow).Item(1), IndexData.Rows(datarow).Item(11), IndexData.Rows(datarow).Item(12), "0", "Dokument erfolgreich importiert", Dokumentid, "")
End If
Me.BarcodeImport = False
Catch ex As Exception
Fehler = -17
Journal.Insert_Journal(datarow, IndexData.Rows(datarow).Item(1), IndexData.Rows(datarow).Item(11), IndexData.Rows(datarow).Item(12), "-17", "Fehler beim Dokumentimport: " + ex.Message, Dokumentid, "")
End Try
Case "DEL"
Delete_Dokument(datarow)
Case "UPD"
Update_Dokumentwerte(datarow)
Case "REPL"
Replace_Dokument(datarow)
End Select
End If
End Function
'''<summary>Importiert ein Dokument nach EDOKA</summary>
'''<param name="Fnkt">Gültige Werte sind: ADD, UPD, REPL, DEL</param>
'''<returns>True = Import erfolgreich$EOL$
'''<para>False = Import fehlgeschalgen</para></returns>
Private Function Check_Funktion(ByVal Fnkt As String) As Boolean
Me.Fnkt = ""
Me.Fnkt = Fnkt
Select Case UCase(Fnkt)
Case "ADD"
Return True
Case "DEL"
Return True
Case "REPL"
Return True
Case "UPD"
Return True
Case Else
Me.Fnkt = ""
Return False
End Select
End Function
'''<summary>Prüfung der Partnerzuordnung</summary>
'''<remarks>Mit der Funktion wird abhängig vom angelieferten Wert die
'''Partnerzuordungen zu einem bestehenden Partner in EDOKA überprüft.
'''<para></para>
'''<para>Input Partnernummer</para>
'''<para>Direkter Zugriff auf die Tabelle Partner mittels Partnernr</para>
'''<para></para>
'''<para>Input VV-Nr: </para>
'''<para>Umformatierung der VV-Nr und Zugriff auf den VV-Bestand. Sofern die</para>
'''<para>Partnernummer gefunden wird, diese in der Datentabelle nachführen</para>
'''<para></para>
'''<para>Input: Barcode-ID:</para>
'''<para>Zugriff auf die Partnernummer über die Tabelle Dokument mit der
'''geliefertenen EDOKA-BarcodeID</para>
'''<para></para>
'''<para>Input: KST:</para>
'''<para>Zugriff über die Kostenstelle auf den EDOKA-Partner</para></remarks>
'''<param name="datarow">Aktuelle Datenzeile in der Tabelle Indexdata</param>
'''<returns>True=Partnerzuordnung i.O.
'''<para>False=Partnerzuordnung nicht i.O.</para></returns>
'''<seealso cref="Checkdata">Checkdata</seealso>
Private Function Check_Partnerzuordnung(ByVal datarow As Integer) As Boolean
'Zugriff über Partnernr
'20121009 - Erweiterung abfrage aufgrund neuem UVM-Release (3. AND - ITEM 3 - BarcodeID = "")
Try
If Me.IndexData.Rows(datarow).Item(1) <> "" And Me.IndexData.Rows(datarow).Item(1) <> "91001634" And Me.IndexData.Rows(datarow).Item(3) = "" Then 'MNK 20090820 -> Erweiterung PMS Reports
Dim p As New edokadb.clsPartner()
Try
p.cpMainConnectionProvider = conn_edoka
Try
p.iNRPAR00 = New SqlInt32(CType(Me.IndexData.Rows(datarow).Item(1), Int32))
Catch ex As Exception
Fehler = 3
Journal.Insert_Journal(datarow, IndexData.Rows(datarow).Item(1), "", "", Fehler, "Partnerzuordnung Partner: " + Me.IndexData.Rows(datarow).Item(1) + " in EDOKA nicht vorhanden.", "", "")
Return False
End Try
Me.TmpTable = p.SelectOne()
If TmpTable.Rows.Count = 0 Then
Fehler = 3
Journal.Insert_Journal(datarow, IndexData.Rows(datarow).Item(1), "", "", Fehler, "Partnerzuordnung Partner: " + Me.IndexData.Rows(datarow).Item(1) + " in EDOKA nicht vorhanden.", "", "")
Return False
Else
Return True
End If
Catch
Finally
p.Dispose()
End Try
End If
Catch
If Me.IndexData.Rows(datarow).Item(1) <> 0 And Me.IndexData.Rows(datarow).Item(3) = "" Then
Dim p As New edokadb.clsPartner()
Try
p.cpMainConnectionProvider = conn_edoka
p.iNRPAR00 = New SqlInt32(CType(Me.IndexData.Rows(datarow).Item(1), Int32))
Me.TmpTable = p.SelectOne()
If TmpTable.Rows.Count = 0 Then
Fehler = 3
Journal.Insert_Journal(datarow, IndexData.Rows(datarow).Item(1), "", "", Fehler, "Partnerzuordnung Partner: " + Me.IndexData.Rows(datarow).Item(1) + " in EDOKA nicht vorhanden.", "", "")
Return False
Else
Return True
End If
Catch
Finally
p.Dispose()
End Try
End If
End Try
'Zugriff über VV-Bestand
'MNK 20090820 - Erweiterung der Logik, damit PMS Reports korrekt verabeitet werden
If Me.IndexData.Rows(datarow).Item(2) <> "" Or Me.IndexData.Rows(datarow).Item(1) = "91001634" Then
Dim v As New edokadb.clsVV()
Dim vvTemp As String
Dim vvTempArr() As String
Dim vv As String
Dim i As Integer
vv = ""
'VV-Nummer aufbereiten
If Globals.Herkunftsapplikation.Rows(0).Item(1) = "PMS" Then
vv = ""
vvTemp = ""
vvTemp = Me.IndexData.Rows(datarow).Item(28)
vvTempArr = vvTemp.Split(";")
If vvTempArr.Length = 2 Then
vv = vvTempArr(1)
vv = Replace(vv, ".", "")
End If
Else
For i = 1 To Microsoft.VisualBasic.Len(IndexData.Rows(datarow).Item(2))
If Mid(IndexData.Rows(datarow).Item(2), i, 1) = "0" Or _
Mid(IndexData.Rows(datarow).Item(2), i, 1) = "1" Or _
Mid(IndexData.Rows(datarow).Item(2), i, 1) = "2" Or _
Mid(IndexData.Rows(datarow).Item(2), i, 1) = "3" Or _
Mid(IndexData.Rows(datarow).Item(2), i, 1) = "4" Or _
Mid(IndexData.Rows(datarow).Item(2), i, 1) = "5" Or _
Mid(IndexData.Rows(datarow).Item(2), i, 1) = "6" Or _
Mid(IndexData.Rows(datarow).Item(2), i, 1) = "7" Or _
Mid(IndexData.Rows(datarow).Item(2), i, 1) = "8" Or _
Mid(IndexData.Rows(datarow).Item(2), i, 1) = "9" Then
vv = vv + Mid(IndexData.Rows(datarow).Item(2), i, 1)
End If
Next
End If
While Len(vv) < 12
vv = "0" + vv
End While
'While Len(vv) < 16
'vv = "0" + vv
'End While
Try
Dim pnr As Integer
'MNK 20090820 - Prüfung vv
If IsNumeric(vv) Then
pnr = Get_VVPartner(vv)
End If
'MNK 20090820 - Prüfung ob vv gefunden ansonsten generischen BP belassen
If pnr = 0 And Me.IndexData.Rows(datarow).Item(1) <> "91001634" Then
Fehler = 4
Journal.Insert_Journal(datarow, "", "", "", Fehler, "Partnerzuordnung über VV-NR: " + Me.IndexData.Rows(datarow).Item(2) + " Keine VV-Beziehung in EDOKA vorhanden.", "", "")
Return False
Else
If pnr = 0 And Me.IndexData.Rows(datarow).Item(1) = "91001634" Then
'nothing else todo
Return True
Else
Me.IndexData.Rows(datarow).Item(1) = pnr
Return True
End If
End If
Catch
Finally
v.Dispose()
End Try
End If
'Zugriff über BarcodeID
Me.BarcodeImport = False
If Me.IndexData.Rows(datarow).Item(3) <> "" Then Me.BarcodeImport = True
Dim DokID As String = ""
If Me.IndexData.Rows(datarow).Item(3) <> "" Then
If Len(Me.IndexData.Rows(datarow).Item(3)) = 16 Then
DokID = "OFFEDK" + Trim(Me.IndexData.Rows(datarow).Item(3))
Else
'Barcodekleber-Dokumentid
Try
DokID = get_bcdokumentid(Me.IndexData.Rows(datarow).Item(3))
Catch
End Try
End If
Dim d As New edokadb.clsDokument()
Try
d.cpMainConnectionProvider = conn_edoka
d.sDokumentid = New SqlString(CType(DokID, String))
Me.TmpTable = d.SelectOne
If Me.TmpTable.Rows.Count = 0 Then
Fehler = 5
Journal.Insert_Journal(datarow, "", "", "", Fehler, "Partnerzuordung über BarcodeID: " + Me.IndexData.Rows(datarow).Item(3) + " Dokument in EDOKA nicht vorhanden.", "", "")
Return False
Else
If Not Check_Dokumentwert(Me.IndexData.Rows(datarow).Item(3), datarow, DokID) Then Return False
Me.IndexData.Rows(datarow).Item(1) = d.iNrpar00.Value
Me.BarcodeImport = True
Return True
End If
Catch ex As Exception
Journal.Insert_Journal(datarow, "", "", "", Fehler, "Partnerzuordung über BarcodeID: " + Me.IndexData.Rows(datarow).Item(3) + " Dokument in EDOKA nicht vorhanden." + ex.Message, "", "")
Finally
d.Dispose()
End Try
End If
If Me.IndexData.Rows(datarow).Item(4) <> "" Then
Fehler = 6
Journal.Insert_Journal(datarow, "", "", "", Fehler, "Partnerzuordnung über KST ist noch nicht implementiert.", "", "")
Return False
End If
End Function
Private Function Check_Dokumentwert(ByVal barcodenr As String, ByVal datarow As Integer, ByVal DOKUMENTID As String) As Boolean
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.sp_edoka_import_get_coldindexwert"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@Dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, DOKUMENTID))
scmCmdToExecute.Parameters.Add(New SqlParameter("@indextyp", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 2))
scmCmdToExecute.Parameters.Add(New SqlParameter("@coldindexfeld", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 10))
scmCmdToExecute.Parameters.Add(New SqlParameter("@wert", SqlDbType.VarChar, 255, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
Try
conn_edoka.OpenConnection()
scmCmdToExecute.ExecuteNonQuery()
Select Case scmCmdToExecute.Parameters("@wert").Value.ToString
Case "-1"
Fehler = 204
Journal.Insert_Journal(datarow, Me.IndexData.Rows(datarow).Item(11), "", Me.IndexData.Rows(datarow).Item(12), "204", "Barcodeimport:Dokument kann nicht importiert werden, da keine Indexwerte für den Import vorhanden sind.", "OFFEDK" + barcodenr, "")
Return False
Case ""
Return True
Case Else
Fehler = 205
Journal.Insert_Journal(datarow, Me.IndexData.Rows(datarow).Item(11), "", Me.IndexData.Rows(datarow).Item(12), "205", "Barcodeimport:Ein Dokument wurde bereits importiert oder eingescant.", "OFFEDK" + barcodenr, "")
Return False
End Select
Catch ex As Exception
PrintOut("clsCheckandImport.Check_Dokumentwert()" + ex.Message, EventLogEntryType.Error)
Finally
conn_edoka.CloseConnection(True)
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
End Try
End Function
Private Function get_bcdokumentid(ByVal BCKNr As Integer) As String
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.SP_Edoka_Import_get_dokid_BCK"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@bcknr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, BCKNr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokid", SqlDbType.VarChar, 22, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
Try
conn_edoka.OpenConnection()
scmCmdToExecute.ExecuteNonQuery()
Return scmCmdToExecute.Parameters("@dokid").Value
Catch ex As Exception
PrintOut("clsCheckandImport.get_bcdokumentid()" + ex.Message, EventLogEntryType.Error)
Return ""
Finally
conn_edoka.CloseConnection(True)
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
End Try
End Function
Private Function Get_VVPartner(ByVal nevvg00 As String) As Integer
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.SP_Edoka_Import_get_vvPartner"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@nevvg00", SqlDbType.VarChar, 16, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, nevvg00))
scmCmdToExecute.Parameters.Add(New SqlParameter("@nrpar00", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
Try
conn_edoka.OpenConnection()
scmCmdToExecute.ExecuteNonQuery()
Return scmCmdToExecute.Parameters("@nrpar00").Value
Catch ex As Exception
PrintOut("clsCheckandImport.Get_VVParnter()" + ex.Message, EventLogEntryType.Error)
Finally
conn_edoka.CloseConnection(True)
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
End Try
End Function
'''<summary>Prüft, ob alle Werte für eine EDOKA_Partner-Erfasssung vorhanden sind.
'''Wenn dies der Fall ist, wird ein neuer EDOKA-Partner eröffnet</summary>
'''<remarks>Sofern genügend Informationen für die Partnereröffnung vorhanden sind,
'''wird ein EDOKA-Partner eröffnet. Nach dem Insert in der Datenbank wird durch die
'''DB die Überprüfung auf eine allfällige Partnerzusammenlegung
'''ausgelöst.</remarks>
'''<param name="datarow">Aktuelle Datenzeile des Import-Programmes</param>
'''<returns>True = EDOKA-Partner eröffnet
'''<para>False = Daten zur Eröffnung des EDOKA-Partners sind
'''unvollständig</para></returns>
'''<author>Stefan Hutter</author>
'''<seealso cref="Checkdata">Checkdata</seealso>
Private Function Check_EDOKA_Partner_Erfassen(ByVal datarow As Integer) As Boolean
Dim dbkey As New edokadb.clsMyKey_Tabelle()
Dim Partner As New edokadb.clsPartner()
Dim key As Long
Try
If Me.IndexData.Rows(datarow).Item(5) = "" And _
Me.IndexData.Rows(datarow).Item(6) = "" And _
Me.IndexData.Rows(datarow).Item(8) = "" And _
Me.IndexData.Rows(datarow).Item(9) = "" And _
Me.IndexData.Rows(datarow).Item(10) = "" Then
Return False
End If
If Me.IndexData.Rows(datarow).Item(5) = "" Then
Return False
End If
dbkey.cpMainConnectionProvider = conn_edoka
key = dbkey.get_dbkey("Interessent")
Partner.cpMainConnectionProvider = conn_edoka
Partner.sBKPAR00 = New SqlString(CType(Me.IndexData.Rows(datarow).Item(5), String))
Partner.sBEBAN012 = New SqlString(CType(Me.IndexData.Rows(datarow).Item(10), String))
Partner.sTXADZ012 = New SqlString(CType("", String))
Partner.sTXADZ022 = New SqlString(CType(Me.IndexData.Rows(datarow).Item(7), String))
Partner.sTXADZ032 = New SqlString(CType(Me.IndexData.Rows(datarow).Item(6), String))
Partner.sTXADZ042 = New SqlString(CType("", String))
Partner.sTXADZ052 = New SqlString(CType(Me.IndexData.Rows(datarow).Item(8), String))
Partner.sTXADZ062 = New SqlString(CType("", String))
Partner.sTXADZ072 = New SqlString(CType(Me.IndexData.Rows(datarow).Item(9), String))
Partner.sTXADZ011 = New SqlString(CType("", String))
Partner.sTXADZ021 = New SqlString(CType("", String))
Partner.sBEBAN011 = New SqlString(CType("", String))
Partner.sTXADZ011 = New SqlString(CType(Me.IndexData.Rows(datarow).Item(6) + " " + Me.IndexData.Rows(datarow).Item(7), String))
Partner.sTXADZ021 = New SqlString(CType(Me.IndexData.Rows(datarow).Item(8), String))
Partner.sTXADZ031 = New SqlString(CType(Me.IndexData.Rows(datarow).Item(9) + " " + Me.IndexData.Rows(datarow).Item(10), String))
Partner.sTXADZ041 = New SqlString(CType("", String))
Partner.sTXADZ051 = New SqlString(CType("", String))
Partner.sTXADZ061 = New SqlString(CType("", String))
Partner.sTXADZ071 = New SqlString(CType("", String))
'Pendenz: Mitarbeiternr der Applikation
Partner.iNRFOG012 = New SqlInt32(CType(Globals.Mitarbeiternr, Int32))
Partner.sTSMUT00 = New SqlString(CType(Now, String))
Partner.sNRADR00 = New SqlString(CType("", String))
Partner.iNRPAR00 = New SqlInt32(CType(key, Int32))
conn_edoka.OpenConnection()
Partner.Insert()
conn_edoka.CloseConnection(True)
Me.IndexData.Rows(datarow).Item(1) = Partner.iNRPAR00.Value
Journal.Insert_Journal(datarow, Partner.iNRPAR00.Value.ToString, "", Me.IndexData.Rows(datarow).Item(12), "0", "EDOKA-Partner eröffnet.", "", "")
Return True
Catch ex As Exception
Journal.Insert_Journal(datarow, Partner.iNRPAR00.Value.ToString, "", Me.IndexData.Rows(datarow).Item(12), "0", "EDOKA-Partner nicht eröffnet." + ex.Message, "", "")
Return False
Finally
dbkey.Dispose()
Partner.Dispose()
End Try
End Function
'''<summary>Prüft die dokumentspezifischen Werte und das Vorhandensein des
'''physischen Dokumentes</summary>
'''<remarks>Die Verarbeitung prüft folgende Elemente im Bereich der angelieferten
'''Dokumente:
'''<list type="bullet">
'''<item>
'''<description>Gültiges Dokumentformant (DOC, XLS, TIF, PDF,
'''JPG</description></item>
'''<item>
'''<description>Vorhandensein des Dokumentes im
'''Importverzeichnis</description></item>
'''<item>
'''<description>Dokumenttyp</description></item></list></remarks>
'''<param name="datarow">Zeile in der Tabelle Indexdata</param>
'''<returns>True=Dokumentwerte i.O.
'''<para>False=Dokumentwerte nicht i.O.</para></returns>
'''<author>Stefan Hutter</author>
'''<seealso cref="Checkdata">Checkdata</seealso>
Private Function Check_Dokumentdaten(ByVal datarow As Integer) As Boolean
'Prüfung Dateityp
If UCase(Me.IndexData.Rows(datarow).Item(13)) <> "DOC" And _
UCase(Me.IndexData.Rows(datarow).Item(13)) <> "XLS" And _
UCase(Me.IndexData.Rows(datarow).Item(13)) <> "PDF" And _
UCase(Me.IndexData.Rows(datarow).Item(13)) <> "TIF" And _
UCase(Me.IndexData.Rows(datarow).Item(13)) <> "JPG" And _
UCase(Me.IndexData.Rows(datarow).Item(13)) <> "" Then
If Not Me.BarcodeImport Then
Fehler = 9
Journal.Insert_Journal(datarow, "", "", "", Fehler, "Ungültiges Dateiformat: " + Me.IndexData.Rows(datarow).Item(13), "", "")
Return False
End If
End If
'Prüfung physische Datei
If Not File.Exists(Params.Inputverzeichnis + Me.IndexData.Rows(datarow).Item(12)) Then
Fehler = 10
Journal.Insert_Journal(datarow, "", "", "", Fehler, "Datei : " + Me.IndexData.Rows(datarow).Item(12) + " ist nicht vorhanden", "", "")
Return False
End If
'20050925 - Prüfung, wenn Herkunftsapplikation 'EDKB09 ist, dann ist der Doktyp i.O.
If Globals.Herkunftsapplikation.Rows(0).Item(1) <> "EDKB09" Then
'Prüfung Dokumenttyp
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.SP_Edoka_Import_Check_Dokumenttyp"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@Dokumenttyp", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(datarow).Item(11)))
scmCmdToExecute.Parameters.Add(New SqlParameter("@applid", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.Herkunftsapplikation.Rows(0).Item(0)))
scmCmdToExecute.Parameters.Add(New SqlParameter("@DoktypIO", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
Try
conn_edoka.OpenConnection()
scmCmdToExecute.ExecuteNonQuery()
If scmCmdToExecute.Parameters("@doktypio").Value = 0 Then
If Me.BarcodeImport = False Then
Fehler = 11
Journal.Insert_Journal(datarow, "", "", "", Fehler, "Dokumenttyp: " + Me.IndexData.Rows(datarow).Item(11) + " ist nicht definiert.", "", "")
Return False
Else
Return True
End If
Else
Return True
End If
Catch ex As Exception
PrintOut("clsCheckandImport.Check_Dokumentdaten()" + ex.Message, EventLogEntryType.Error)
Finally
conn_edoka.CloseConnection(True)
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
End Try
Else
Return True
End If
'Prüfung Archivreferenz
If Me.IndexData.Rows(datarow).Item(21) <> "" Then
If Not Check_For_Numeric_Format(Me.IndexData.Rows(datarow).Item(21), True) Then
Fehler = 12
Journal.Insert_Journal(datarow, "", "", "", Fehler, "Archivreferenz: " + Me.IndexData.Rows(datarow).Item(21) + " ist nicht numerisch", "", "")
Return False
End If
End If
End Function
Private Function Check_For_Numeric_Format(ByVal C_S As String, ByVal allownothing As Boolean) As Boolean
Dim Var_Loop, Var_Len As Integer
If C_S = "" Then
If allownothing = True Then Return True
Return False
End If
Var_Len = Len(C_S)
C_S = LCase(C_S)
For Var_Loop = 1 To Var_Len
If Mid(C_S, Var_Loop, 1) < Chr(48) Or Mid(C_S, Var_Loop, 1) > Chr(57) Then
Return False
End If
Next
Return True
End Function
'''<summary>Notiz zu einem Dokument hinzufügen</summary>
'''<remarks>Fühgt dem aktuellen Dokument die Meldung als Betreff bzw. Notiz
'''hinzu</remarks>
'''<param name="dokumentid">Aktuelle Dokumentid</param>
'''<param name="meldung">Meldung / Notiz</param>
Private Sub Insert_Note(ByVal dokumentid As String, ByVal meldung As String)
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.SP_Dokument_Notizen"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Connection.Open()
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@notiznr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0))
scmCmdToExecute.Parameters.Add(New SqlParameter("@betreff", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, meldung))
scmCmdToExecute.Parameters.Add(New SqlParameter("@value", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, meldung))
scmCmdToExecute.Parameters.Add(New SqlParameter("@aktiv", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1))
scmCmdToExecute.ExecuteNonQuery()
Catch ex As Exception
'MsgBox(ex.Message)
' // some error occured. Bubble it to caller and encapsulate Exception object
Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Connection.Close()
scmCmdToExecute.Dispose()
End Try
End Sub
#End Region
#Region "Herkunftsapplikation"
'''<summary>Auslesen der Daten "Herkunftsapplikation" und in der internen Variable
'''Herkunftsapplikationen zwischenspeichern</summary>
Public Function Herkunftsapplikationen_auslesen() As Boolean
Dim ApplFound As Boolean = False
Dim i As Integer
For i = 0 To Me.IndexData.Rows.Count - 1
If Get_Herkunftsapplikation(i) = True Then
Return True
End If
Next
Fehler = 100
Journal.Insert_Journal("", "", "", "", Fehler, "Herkunftsapplikation kann nicht zugeordnet werden", "", "")
Return False
End Function
'''<summary>Auslesen der Herkunftsapplikation anhand des Dokumenttyps</summary>
'''<param name="i">Aktueller Datensatz aus den Indexdaten</param>
'''<returns>&quot;&quot; = Herkunftsapplikation nicht vorhanden$EOL$
'''<para>&quot;[Bezeichnung] = Herkunftsapplikation vorhanden</para></returns>
'''<seealso
'''cref="clsCheckandImport.Herkunftsapplikationen_auslesen">Herkuftsapplikation_auslesen</seealso>
Private Function Get_Herkunftsapplikation(ByVal i As Integer) As Boolean
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.SP_Edoka_Import_Get_Herkunftsapplikation"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@Dokumenttyp", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(i).Item(11)))
scmCmdToExecute.Parameters.Add(New SqlParameter("@InputAppl", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(i).Item(17)))
Try
sdaAdapter.Fill(dtToReturn)
If dtToReturn.Rows.Count = 0 Then
Fehler = 110
Journal.Insert_Journal(i, "", "", "", Fehler, "Herkunftsapplikation: " + Me.IndexData.Rows(i).Item(11) + " ist nicht definiert.", "", "")
Return False
Else
Globals.Herkunftsapplikation = dtToReturn
Return True
End If
Catch ex As Exception
PrintOut("clsCheckandImport.Get_herkunfstapplikation()" + ex.Message, EventLogEntryType.Error)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
End Try
End Function
#End Region
#Region "Import"
Dim Dokumentid As String
Dim dokumenttypnr As Integer
'''<summary>Importiert ein Dokument nach EDOKA</summary>
'''<remarks>Mit dem Dokumentimport werden folgende Tabellenenträge erstellt: $EOL$
'''<list type="table">
'''<listheader>
'''<term>$EOL$ $EOL$ Tabelle</term>
'''<description>$EOL$ Beschreibung</description></listheader>
'''<item>
'''<term>$EOL$ $EOL$ Dokument</term>
'''<description>$EOL$ Dokumentbeschreibung</description></item>
'''<item>
'''<term>$EOL$ $EOL$ Dokumentstatus</term>
'''<description>$EOL$ Statussequenz des Dokumentes. Dabei werden alle Status bis
'''zum ersten archivierungs-relevanten Status gesetzt. $EOL$
'''<para></para>
'''<para>$EOL$ </para>
'''<para>Bei der Verarbeitung eines Dokumentes mit Barcodeid, werden die
'''bestehenden Dokumentinformationen in der Tabelle Dokument erweitert und die
'''Tabelle Import_Barcode ergäntzt, damit die Batchverarbeitung EDKB02 das Handling
'''für diese Dokumente korrekt vornehmen kann.</para></description></item>
'''<item>
'''<term>$EOL$ $EOL$ Dokumentcoldindexwert</term>
'''<description>$EOL$ Tabelle mit den COLD-relevanten
'''Indexinformationen</description></item>
'''<item>
'''<term>$EOL$ $EOL$ Dokumentwerte</term>
'''<description>$EOL$ Tabelle mit den individuellen
'''Dokumentwerten</description></item>
'''<item>
'''<term>$EOL$ $EOL$ Notizen</term>
'''<description>$EOL$ Notiz, dass das Dokument über die Import-Schnittstelle im
'''EDOKA eingefügt wurde</description></item></list></remarks>
'''<param name="datarow">Aktuelle Zeile der Indexdatei</param>
'''<returns>True = Import erfolgreich $EOL$
'''<para>False = Import fehlgeschalgen</para></returns>
Private Function Import_Dokument(ByVal datarow As Integer) As Boolean
' Wenn OK, an den Schluss kopieren
'EDKB09
'If IndexData.Rows(datarow).Item("DokumentidBdr") <> "" Then
' Insert_Bedingte_Retournierung(datarow)
'End If
Status_Bereit_Zur_Eingangsarchivierung = False
'Physisches Dokument in die Datenbank laden
If Me.BarcodeImport = True Then
'Barcodedokument
If Len(Me.IndexData.Rows(datarow).Item(3)) = 16 Then
Dokumentid = "OFFEDK" + Trim(Me.IndexData.Rows(datarow).Item(3))
Else
'Barcodekleber-Dokumentid
Try
Dokumentid = get_bcdokumentid(Me.IndexData.Rows(datarow).Item(3))
Catch
End Try
End If
Dim sdokid As String
sdokid = Dokumentid
sdokid = sdokid.Replace("OFFEDK", "EDKIMP")
If Not Dokument_in_DB_Sichern(sdokid, datarow) Then
Return False
End If
'Dokumentid = "OFFEDK" + Me.IndexData.Rows(datarow).Item(3)
Dim dt As New DataTable()
Dim dd As New edokadb.clsDokument()
dd.cpMainConnectionProvider = Globals.conn_edoka
dd.sDokumentid = New SqlString(CType(Dokumentid, String))
dd.SelectOne()
'Import BC-Dokument 20050426
dd.daDatum_eingangsarchivierung = New SqlDateTime(CType(Now, DateTime))
Try
dd.iStatus_edoka_batch_eingang = New SqlInt32(CType(1, Int32))
Catch
End Try
Try
conn_edoka.OpenConnection()
Catch
End Try
dd.Update()
Try
conn_edoka.CloseConnection(True)
Catch
End Try
'Dokumentid nachführen
'Prüfung, ob Indextyp 2 vorhanden ist und nachführen des Wertes der Dokumentid
'zudem einen Eintrag in der Tabelle insert_fa_bcimport vornehmen, damit eine entsprechende Ausgangsarchivierung
'des Dokumentes stattfinden kann.
'in EDKB02 wird das Dokument ausgangsarchiviert und nach dessen Retourmeldung von AGI-COLD als eingangsarchiviert
'gekennzeichnet und dementsprechend weiter verarbeitet
Me.Update_DokumentColdIndexwert(Dokumentid, 2, 10, sdokid)
If Me.IndexData.Rows(datarow).Item(21) <> "" Then
If IsNumeric(Me.IndexData.Rows(datarow).Item(21)) Then
Me.Update_DokumentColdIndexwert(Dokumentid, 2, 11, Me.IndexData.Rows(datarow).Item(21))
End If
End If
insert_fa_bcimport(Dokumentid, datarow, Me.IndexData.Rows(datarow).Item(13))
Update_FANummer_Barcodeimport(datarow)
Journal.Insert_Journal(datarow, Me.IndexData.Rows(datarow).Item(1), "", Me.IndexData.Rows(datarow).Item(12), "0", "BarcodeImport erfolgreich", Dokumentid, "")
Try
'Rel. 4.1 Gelöschtes oder aufgehobenes Dokument
Dim ds As New edokadb.clsDokument_status
ds.cpMainConnectionProvider = Globals.conn_edoka
ds.iDokument_statusnr = New SqlInt32(CType(dd.iStatusnr.Value, SqlInt32))
ds.SelectOne()
If dd.bAktiv.Value = False Or ds.iStatus_bezeichnungnr.Value = -3 Then
Journal.Insert_Journal(datarow, Me.IndexData.Rows(datarow).Item(1), "", Me.IndexData.Rows(datarow).Item(12), "0", "Dokument bereits gelöscht/aufgehoben", Dokumentid, "")
If Globals.Herkunftsapplikation.Rows(0).Item("Reserve_1").ToString <> "" Then
send_deleted_mail(Globals.Herkunftsapplikation.Rows(0).Item("Reserve_1").ToString, Dokumentid)
End If
End If
ds.Dispose()
Catch ex As Exception
End Try
Return True
Else
'Dokumentid auslesen
' If Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB09" Or Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB14" Or Globals.Herkunftsapplikation.Rows(0).Item(1) = "FinFox" Then
If Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB09" Or Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB14" Or Globals.Herkunftsapplikation.Rows(0).Item(1) = "FinFox" Then
Dokumentid = Me.IndexData.Rows(datarow).Item("Dokumentid")
If Globals.Herkunftsapplikation.Rows(0).Item(1) = "FinFox" And Dokumentid = "" Then Dokumentid = Globals.DivFnkt.Generate_Key
If Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB14" And Dokumentid = "" Then Dokumentid = Globals.DivFnkt.Generate_Key
Else
Dokumentid = Globals.DivFnkt.Generate_Key
End If
End If
'EDOKA-Dokumenttyp auslesen
bckstatussequenz = False
Dim dokumenttyp As New edokadb.clsDokumenttyp()
If Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB09" Then
dokumenttyp.iDokumenttypnr = New SqlInt32(CType(IndexData.Rows(datarow).Item("Dokumenttypnr"), Int32))
Else
dokumenttyp.iDokumenttypnr = New SqlInt32(CType(Get_EDOKA_Dokumenttypnr(datarow), Int32))
End If
If dokumenttyp.iDokumenttypnr.Value = 0 Then
Exit Function
Else
dokumenttyp.cpMainConnectionProvider = conn_edoka
dokumenttyp.SelectOne()
End If
If dokumenttyp.bDokument_wird_erstellt.Value = False Then
If dokumenttyp.bDokument_wird_retourniert.Value = True Then
Me.bckstatussequenz = True
End If
End If
'20060319 - SHU / Spezielles Handling Finfox
If dokumenttyp.bDokument_wird_erstellt.Value = True Then
If dokumenttyp.bDokument_wird_retourniert.Value = True And UCase(Globals.Herkunftsapplikation.Rows(0).Item(1)) <> "FINFOX" Then
If IndexData.Rows(datarow).Item(3) = "" Then Me.bckstatussequenz = True
End If
End If
'Dokument erstellen
Dim dok As New edokadb.clsDokument()
dok.cpMainConnectionProvider = conn_edoka
dok.sDokumentid = New SqlString(CType(Dokumentid, String))
'***************************************************************************************************************3
'Defaultwerte für das Dokument
'***************************************************************************************************************3
dok.bAktiv = New SqlBoolean(True)
dok.bAmsdokument = New SqlBoolean(CType(False, Boolean))
dok.bAuserstuebernahme = New SqlBoolean(CType(False, Boolean))
dok.bAusgangsarchiviert = New SqlBoolean(CType(False, Boolean))
dok.iStatus_edoka_batch_ausgang = Nothing
dok.daTermin = New SqlDateTime(CType("01.01.1900", DateTime))
dok.bBereit_zur_archivierung = New SqlBoolean(CType(True, Boolean))
dok.bEingangsarchiviert = New SqlBoolean(CType(False, Boolean))
dok.bGesperrt = New SqlBoolean(CType(False, Boolean))
dok.bUnvollstaendig = New SqlBoolean(CType(False, Boolean))
dok.iBck = New SqlInt32(CType(1, Int32))
dok.iColdstatus = New SqlInt32(CType(0, Int32))
dok.iUnterschriftlinks = New SqlInt32(CType(0, Int32))
dok.iUnterschriftrechts = New SqlInt32(CType(0, Int32))
dok.iVerantwortlich = New SqlInt32(CType(Globals.Mitarbeiternr, Int32))
dok.bVertraulich = New SqlBoolean(CType(False, Boolean))
dok.sZustelladresse = New SqlString(CType("", String))
dok.sAnredezustelladresse = New SqlString(CType("", String))
dok.iZustaendiger = New SqlInt32(CType(Globals.Mitarbeiternr, Int32))
dok.iPostzustellung = New SqlInt32(CType(0, Int32))
dok.bZustaendig_kube = New SqlBoolean(CType(0, Boolean))
dok.iMa_ausgangsarchivierung = New SqlInt32(CType(0, Int32))
dok.iMa_eingangsarchivierung = New SqlInt32(CType(0, Int32))
dok.sBemerkung = New SqlString(CType("", String))
dok.sColddokumentid = New SqlString(CType("", String))
dok.iDokdurchkubeweitergegeben = New SqlInt32(CType(0, Int32))
dok.sBedRDokumentid = New SqlString(CType("", String))
'***************************************************************************************************************3
'Werte aus Dokumenttyp
'***************************************************************************************************************3
dok.iDokumenttypnr = New SqlInt32(CType(dokumenttyp.iDokumenttypnr.Value, Int32))
dok.bZu_retournieren = New SqlBoolean(CType(dokumenttyp.bZu_retournieren.Value, Boolean))
dok.iAufbewahrung_elektronisch = New SqlInt32(CType(dokumenttyp.iAufbewahrungsfrist_elektronisch.Value, Int32))
dok.iAufbewahrung_phaysisch = New SqlInt32(CType(dokumenttyp.iAufbewahrungsfrist_physisch.Value, Int32))
dok.iBearbeitung_nach_abschluss = New SqlInt32(CType(dokumenttyp.iTage_mutation.Value, Int32))
dok.iBearbeitungszeit_in_minuten = New SqlInt32(CType(dokumenttyp.iDbearbeitungszeit.Value, Int32))
dok.iMonierung_in_tagen = New SqlInt32(CType(dokumenttyp.iAnzahl_tage.Value, Int32))
dok.sBezeichnung = New SqlString(CType(dokumenttyp.sBezeichnung.Value, String))
'***************************************************************************************************************3
'EDKB09
'***************************************************************************************************************3
If Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB09" Then
If Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB09" Then
dok.sBezeichnung = New SqlString(CType(IndexData.Rows(datarow).Item("Bezeichnung"), String))
End If
If IndexData.Rows(datarow).Item("BLKunde") = 1 Then
dok.bBl_scan = New SqlBoolean(CType(True, Boolean))
dok.bBldossier = New SqlBoolean(CType(True, Boolean))
Else
dok.bBl_scan = New SqlBoolean(CType(False, Boolean))
dok.bBldossier = New SqlBoolean(CType(False, Boolean))
End If
' If IndexData.Rows(datarow).Item("Dokumentidbdr") <> "" Then
' dok.sBedRDokumentid = New SqlString(CType(IndexData.Rows(datarow).Item("Dokumentidbdr"), String))
' dok.bBedRRetourniert = New SqlBoolean(CType(False, Boolean))
' End If
End If
'***************************************************************************************************************3
'EDKB14 - Anpassung deutesches Steuerreporting
'***************************************************************************************************************3
If Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB14" Then
If IndexData.Rows(datarow).Item("BLKunde") = "1" Then
dok.bBl_scan = New SqlBoolean(CType(True, Boolean))
dok.bBldossier = New SqlBoolean(CType(True, Boolean))
Else
dok.bBl_scan = New SqlBoolean(CType(False, Boolean))
dok.bBldossier = New SqlBoolean(CType(False, Boolean))
End If
End If
'***************************************************************************************************************3
'Werte aus der Schnittstelle bzw. Defaultwerte
'***************************************************************************************************************3
dok.iNrpar00 = New SqlInt32(CType(Me.IndexData.Rows(datarow).Item(1), Int32))
If Me.IndexData.Rows(datarow).Item(16) = "" Then
dok.daArchivierungsdatum = New SqlDateTime(CType(Now, DateTime))
Else
dok.daArchivierungsdatum = New SqlDateTime(CType(Me.IndexData.Rows(datarow).Item(16), DateTime))
End If
'Ersteller und Mutierer
dok.iErsteller = New SqlInt32(CType(Globals.Mitarbeiternr, Int32))
dok.iMutierer = dok.iErsteller
dok.iMitarbeiternr = dok.iErsteller
'Erstellungs- und Mutationsdatum
dok.daMutiertam = New SqlDateTime(CType(Now, DateTime))
If Me.IndexData.Rows(datarow).Item(16) = "" Then
dok.daErstelltam = New SqlDateTime(CType(Now, DateTime))
Else
Try
dok.daErstelltam = New SqlDateTime(CType(Me.IndexData.Rows(datarow).Item(16), DateTime))
Catch
dok.daErstelltam = New SqlDateTime(CType(Now, DateTime))
End Try
End If
dok.iMutierertieam = New SqlInt32(CType(0, Int32))
dok.iErstellerteam = New SqlInt32(CType(0, Int32))
dok.daErstellungsdatum = New SqlDateTime(CType(dok.daArchivierungsdatum.Value, DateTime))
dok.sDokumentname = New SqlString(CType("Imp_" + dok.sDokumentid.Value + "." + Me.IndexData.Rows(datarow).Item(13), String))
dok.iAnzeigeStatus = New SqlInt32(CType(0, Int32))
conn_edoka.OpenConnection()
dok.Insert()
conn_edoka.CloseConnection(True)
Dim t As DataTable
Try
t = Cold_Werte(dok.iDokumenttypnr.Value)
dok.sColdfolder = New SqlString(CType(t.Rows(0).Item(0), String))
dok.sColdschema = New SqlString(CType(t.Rows(0).Item(1), String))
conn_edoka.OpenConnection()
dok.Update()
conn_edoka.CloseConnection(True)
Catch
End Try
'FANummerin im EDOKA-Dokumentaktualisieren
Update_FANummer(datarow)
dok.SelectOne()
'Cold_index erstellen
If Me.bckstatussequenz = False Then Me.COLD_Index_Sichern(1, Dokumentid)
If dok.bZu_retournieren.Value = True Then
Me.COLD_Index_Sichern(2, Dokumentid)
If Me.IndexData.Rows(datarow).Item(19) <> "" Then Update_DokumentColdIndexwert(Dokumentid, 2, 3, Me.IndexData.Rows(datarow).Item(19))
End If
'VVNummer im COLDIndex aktualisieren, sofern als Indexwert übergeben
If Me.IndexData.Rows(datarow).Item(19) <> "" Then Update_DokumentColdIndexwert(Dokumentid, 1, 3, Me.IndexData.Rows(datarow).Item(19))
If Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB09" Or Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB14" Then
If IndexData.Rows(datarow).Item("blkunde") = 1 Then
dok.iStatusnr = New SqlInt32(CType(Dokumentstatus_erstellen_und_Status_Setzen(datarow, True, 1), Int32))
Else
dok.iStatusnr = New SqlInt32(CType(Dokumentstatus_erstellen_und_Status_Setzen(datarow, True, 0), Int32))
End If
Else
dok.iStatusnr = New SqlInt32(CType(Dokumentstatus_erstellen_und_Status_Setzen(datarow, True, 0), Int32))
End If
'Dokumentstatus erstelln und Statushistory_eintragen
'dok.iStatusnr = New SqlInt32(CType(Dokumentstatus_erstellen_und_Status_Setzen(datarow, True), Int32))
'Dokument auf der Datenbank speichern
'Abhängig vom entsprechenden Status, wird das Flag, bereit zur Ausgangsarchivierung wieder entfernt
If Me.Status_Bereit_Zur_Eingangsarchivierung = False Then
If Not Me.Dokument_in_DB_Sichern(Dokumentid, datarow, False) Then
Return False
End If
Else
If Not Dokument_in_DB_Sichern("EDKIMP" + Right(Me.Dokumentid, 16), datarow, True) Then
End If
' If Globals.Herkunftsapplikation.Rows(0).Item(1) <> "LSV+" Then
dok.bBereit_zur_archivierung = New SqlBoolean(CType(False, Boolean))
insert_fa_bcimport(Dokumentid, datarow, Me.IndexData.Rows(datarow).Item(13))
'End If
End If
conn_edoka.OpenConnection()
dok.Update()
conn_edoka.CloseConnection(True)
'EDKB09
If Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB09" Then
If IndexData.Rows(datarow).Item("DokumentidBdr") <> "" Then
Insert_Bedingte_Retournierung(datarow)
End If
End If
End Function
#Region "Bedingte Retournierung"
'EDKB09
Private Sub Insert_Bedingte_Retournierung(ByVal datarow As Integer)
Dim bedrdoktyp As New edokadb.clsDokumenttyp()
Dim bedrdok As New edokadb.clsDokument()
bedrdoktyp.cpMainConnectionProvider = Globals.conn_edoka
bedrdok.cpMainConnectionProvider = Globals.conn_edoka
'Dokumenttyp auslesen
bedrdoktyp.iDokumenttypnr = New SqlInt32(CType(IndexData.Rows(datarow).Item("Dokumenttypnr"), Int32))
bedrdoktyp.SelectOne()
bedrdoktyp.iDokumenttypnr = New SqlInt32(CType(bedrdoktyp.iDoktypbedingteretournierung.Value, Int32))
bedrdoktyp.SelectOne()
bedrdok.sDokumentid = New SqlString(CType(IndexData.Rows(datarow).Item("Dokumentid"), String))
bedrdok.SelectOne()
bedrdok.sDokumentid = New SqlString(CType(IndexData.Rows(datarow).Item("DokumentidBdr"), String))
bedrdok.iDokumenttypnr = New SqlInt32(CType(bedrdoktyp.iDokumenttypnr.Value, Int32))
bedrdok.sDokumentid = New SqlString(CType(IndexData.Rows(datarow).Item("Dokumentidbdr"), String))
bedrdok.iPostzustellung = New SqlInt32(CType(0, Int32))
bedrdok.iUnterschriftlinks = New SqlInt32(CType(0, Int32))
bedrdok.iUnterschriftrechts = New SqlInt32(CType(0, Int32))
bedrdok.sBezeichnung = New SqlString(CType(bedrdoktyp.sBezeichnung.Value, String))
bedrdok.sBemerkung = New SqlString(CType("", String))
bedrdok.bGesperrt = New SqlBoolean(CType(False, Boolean))
bedrdok.bVertraulich = New SqlBoolean(CType(False, Boolean))
bedrdok.sBedRDokumentid = New SqlString(CType("", String))
bedrdok.sDokumentname = New SqlString(CType("", String))
bedrdok.iBRVernichtungnachTagen = New SqlInt32(CType(bedrdoktyp.iTagebisvernichtungbedingteretournierung.Value, Int32))
bedrdok.sBedRDokumentid = New SqlString(CType(IndexData.Rows(datarow).Item("Dokumentidbdr"), String))
bedrdok.bBedRRetourniert = New SqlBoolean(CType(False, Boolean))
Dim t As DataTable
dokumenttypnr = bedrdok.iDokumenttypnr.Value
t = Generic_Select(114)
bedrdok.sColdfolder = New SqlString(CType(t.Rows(0).Item(0), String))
bedrdok.sColdschema = New SqlString(CType(t.Rows(0).Item(1), String))
bedrdok.iAnzeigeStatus = New SqlInt32(CType(0, Int32))
Dokumentid = IndexData.Rows(datarow).Item("Dokumentidbdr")
conn_edoka.OpenConnection()
bedrdok.Insert()
conn_edoka.CloseConnection(True)
bedrdok.sDokumentid = New SqlString(CType(Dokumentid, String))
bedrdok.cpMainConnectionProvider = conn_edoka
bedrdok.SelectOne()
bedrdok.iStatusnr = New SqlInt32(CType(Dokumentstatus_erstellen_und_Status_Setzen(Dokumentid, True, 0), Int32))
conn_edoka.OpenConnection()
bedrdok.Update()
conn_edoka.CloseConnection(True)
Dokumentid = IndexData.Rows(datarow).Item("Dokumentidbdr")
'Cold_index erstellen
Me.COLD_Index_Sichern(2, Dokumentid)
'If bedrdok.bZu_retournieren.Value = True Then
' Me.COLD_Index_Sichern(2, Dokumentid)
' If Me.IndexData.Rows(datarow).Item(19) <> "" Then Update_DokumentColdIndexwert(Dokumentid, 2, 3, Me.IndexData.Rows(datarow).Item(19))
'End If
'VVNummer im COLDIndex aktualisieren, sofern als Indexwert übergeben
If Me.IndexData.Rows(datarow).Item(19) <> "" Then Update_DokumentColdIndexwert(Dokumentid, 1, 3, Me.IndexData.Rows(datarow).Item(19))
conn_edoka.OpenConnection()
bedrdok.Update()
conn_edoka.CloseConnection(True)
End Sub
Private Function Dokumentstatus_erstellen_und_Status_Setzen(ByVal dokumentid As String, ByVal erstellen As Boolean, Optional ByVal BLKunde As Integer = 0) As Integer
Dim st As New DataTable()
Dim i As Integer
Dim dt As DateTime = DateAdd(DateInterval.Second, -5, Now)
Dim MitArchivfunktion As Boolean = False
If erstellen = True Then
Me.Create_Dokumentstatus(dokumentid)
End If
Me.Dokumentid = dokumentid
st = Me.Get_Dokumentstatus(0)
For i = 0 To st.Rows.Count - 1
Select Case Integer.Parse(st.Rows(i).Item(2).ToString)
Case 3
MitArchivfunktion = True
Case 11
MitArchivfunktion = True
Status_Bereit_Zur_Eingangsarchivierung = True
End Select
Next
If MitArchivfunktion Then
'Dokumentstatusreihenfolge mit Ausgangsarchivierung
For i = 0 To st.Rows.Count - 1
insert_history_status(st.Rows(i).Item(0), dokumentid, Globals.Mitarbeiternr, dt)
dt = DateAdd(DateInterval.Second, 1, dt)
If st.Rows(i).Item(2) = 3 Or st.Rows(i).Item(2) = 11 Then
Return st.Rows(i).Item(0)
Exit Function
End If
Next
Else
'Dokumentstatusreihenfolge ohne Ausgangsarchivierung
End If
End Function
Private Function Create_Dokumentstatus(ByVal dokumentid As String) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.sp_dokumentberabeigung_status_erstellen"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
If Me.bckstatussequenz = False Then
scmCmdToExecute.Parameters.Add(New SqlParameter("@bck", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0))
Else
scmCmdToExecute.Parameters.Add(New SqlParameter("@bck", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1))
End If
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
conn_edoka.CloseConnection(True)
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
Private Function Generic_Select(ByVal typ As Integer) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Select Case typ
Case 114
scmCmdToExecute.CommandText = "sp_archiv_getschema_doc"
Case Else
End Select
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.Connection = Globals.conn_edoka.scoDBConnection
Try
Select Case typ
Case 114
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumenttypnr", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.dokumenttypnr))
Case Else
End Select
If typ = 1 Then
End If
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
' // some error occured. Bubble it to caller and encapsulate Exception object
Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
#End Region
Private Function insert_fa_bcimport(ByVal dokumentid As String, ByVal datarow As Integer, ByVal dateiformat As String) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.sp_edoka_import_insert_fa_bcimport"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
Try
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@dateiname", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(datarow).Item(12)))
scmCmdToExecute.Parameters.Add(New SqlParameter("@dateiformat", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dateiformat))
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
'''<summary>FA-Nummer 1-3 in EDOKA ergänzen</summary>
'''<remarks>Setzt für die Fremdanwendung die Felder
'''<list type="table">
'''<listheader>
'''<term>Feld</term>
'''<description>Beschreibung</description></listheader>
'''<item>
'''<term>FANummer1</term>
'''<description>Bezeichnung der Applikatoin</description></item>
'''<item>
'''<term>FANummer2</term>
'''<description>Dokumentname</description></item>
'''<item>
'''<term>FANummer3</term>
'''<description>Geschäftsfallnummer</description></item></list></remarks>
'''<param name="datarow">Aktuelle Zeile der Indexdatei</param>
Private Function Update_FANummer(ByVal datarow As Integer) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "sp_edoka_import_update_fanummer"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
Try
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@fanummer1", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.Herkunftsapplikation.Rows(0).Item(1)))
scmCmdToExecute.Parameters.Add(New SqlParameter("@fanummer2", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(datarow).Item(12)))
If Me.IndexData.Rows(datarow).Item(18) = "" Then
scmCmdToExecute.Parameters.Add(New SqlParameter("@fanummer3", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, ""))
Else
scmCmdToExecute.Parameters.Add(New SqlParameter("@fanummer3", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(datarow).Item(17) + ": " + Me.IndexData.Rows(datarow).Item(18)))
End If
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
'''<summary>FA-Nummer 3 in EDOKA ergänzen</summary>
'''<remarks>Setzt für die Fremdanwendung die Felder
'''<list type="table">
'''<listheader>
'''<term>Feld</term>
'''<description>Beschreibung</description></listheader>
'''<item>
'''<term>FANummer3</term>
'''<description>Geschäftsfallnummer</description></item></list></remarks>
'''<param name="datarow">Aktuelle Zeile der Indexdatei</param>
Private Function Update_FANummer_Barcodeimport(ByVal datarow As Integer) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "sp_edoka_import_update_fanummer"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
Try
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@fanummer1", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, ""))
scmCmdToExecute.Parameters.Add(New SqlParameter("@fanummer2", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(datarow).Item(12)))
If Me.IndexData.Rows(datarow).Item(18) = "" Then
scmCmdToExecute.Parameters.Add(New SqlParameter("@fanummer3", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, ""))
Else
scmCmdToExecute.Parameters.Add(New SqlParameter("@fanummer3", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(datarow).Item(17) + ": " + Me.IndexData.Rows(datarow).Item(18)))
End If
' scmCmdToExecute.Parameters.Add(New SqlParameter("@fanummer3", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(datarow).Item(18)))
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
'''<summary>Löst das Importieren des Original-Dokumentes in die Datenbank
'''aus</summary>
'''<remarks>Die Methode löst das Importieren des Origianldokumentes in die
'''EDOKA-Datenbank aus</remarks>
'''<param name="dokumentid">EDOKA-DokumentID</param>
'''<param name="datarow">Aktuelle Zeile der Indexdaten</param>
'''<returns>True=Improt erfolgreich, False=Import fehlgeschlagen</returns>
'''<seealso cref="clsDivFnkt.Save_To_DB">clsDivFnkt.Save_To_DB(System.String,
'''System.String)</seealso>
Private Function Dokument_in_DB_Sichern(ByVal dokumentid As String, ByVal datarow As Integer) As Boolean
If Not DivFnkt.Save_To_DB(dokumentid, Params.Inputverzeichnis + Me.IndexData.Rows(datarow).Item(12), False) Then
Fehler = 115
Journal.Insert_Journal(datarow, Me.IndexData.Rows(datarow).Item(1), Me.IndexData.Rows(datarow).Item(13), Me.IndexData.Rows(datarow).Item(12), 115, "Datei konnte nicht in die EDOKA-Datenbank gespeichert werden.", "", "")
Return False
End If
Return True
End Function
Private Function Dokument_in_DB_Sichern(ByVal dokumentid As String, ByVal datarow As Integer, ByVal BarcodeDokument As Boolean) As Boolean
If Not DivFnkt.Save_To_DB(dokumentid, Params.Inputverzeichnis + Me.IndexData.Rows(datarow).Item(12), True) Then
Fehler = 115
Journal.Insert_Journal(datarow, Me.IndexData.Rows(datarow).Item(1), Me.IndexData.Rows(datarow).Item(13), Me.IndexData.Rows(datarow).Item(12), 115, "Datei konnte nicht in die EDOKA-Datenbank gespeichert werden.", "", "")
Return False
End If
Return True
End Function
'''<summary>EDOKA-Dokumenttypnr auslesen</summary>
'''<remarks>Liest anhand des Fremdanwendungs-Dokumenttyps den EDOKA-Dokumenttyp
'''aus.</remarks>
'''<param name="datarow">Aktuelle Datenzeile der Indexdaten</param>
'''<returns>Dokumenttypnr</returns>
Private Function Get_EDOKA_Dokumenttypnr(ByVal datarow As Integer) As Integer
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.SP_Edoka_Import_Get_EDOKA_Dokumenttyp"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@fadokumenttyp", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(datarow).Item(11)))
scmCmdToExecute.Parameters.Add(New SqlParameter("@applid", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.Herkunftsapplikation.Rows(0).Item(0)))
scmCmdToExecute.Parameters.Add(New SqlParameter("@edokadokumenttyp", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
Try
conn_edoka.OpenConnection()
scmCmdToExecute.ExecuteNonQuery()
conn_edoka.CloseConnection(True)
If scmCmdToExecute.Parameters("@edokadokumenttyp").Value = 0 Then
Fehler = 116
Journal.Insert_Journal(datarow, "", "", "", Fehler, "Dokumenttyp: " + Me.IndexData.Rows(datarow).Item(11) + " ist nicht definiert.", "", "")
Return 0
Else
Return scmCmdToExecute.Parameters("@edokadokumenttyp").Value
End If
Catch ex As Exception
PrintOut("clsCheckandImport.Get_EDOKA_Dokumenttypnr()" + ex.Message, EventLogEntryType.Error)
Return 0
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
End Try
End Function
#Region "ColdIndex und Dokumentwerte"
'''<summary>Auslesen von Coldschema und -Folder</summary>
'''<param name="dokumenttypnr">Dokumenttypnr des aktuellen Dokumentes</param>
'''<returns>Datatable mit den COLD-Werten</returns>
Private Function Cold_Werte(ByVal dokumenttypnr As Integer) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "sp_archiv_getschema_doc"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
Try
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumenttypnr", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumenttypnr))
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
'''<summary>Coldindex zum erstellen Dokument erstellen und speichern</summary>
'''<param name="indextyp">Standard 1</param>
'''<param name="dokumentid">Dokumentid des aktuellen Dokumentes</param>
'''<returns>Datatable</returns>
Public Function COLD_Index_Sichern(ByVal indextyp As Integer, ByVal dokumentid As String) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.SP_Dokument_Cold_Index"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@indextyp", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, indextyp))
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
' // some error occured. Bubble it to caller and encapsulate Exception object
Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
'''<summary>Dokument Cold Indexwert anpassen</summary>
'''<remarks>Führt einen Wert in der Tabelle Dokumentcoldindexwert nach</remarks>
'''<param name="dokumentid">DokumentID des aktuellend Dokumentes</param>
'''<param name="Indextyp">1 für Ausgangsarchivierung
'''<para>2 für Ausgangsarchivierung</para></param>
'''<param name="indexfeld">Nummer des Indexfeldes</param>
'''<param name="wert">Wert</param>
Public Function Update_DokumentColdIndexwert(ByVal dokumentid As String, ByVal Indextyp As Integer, ByVal indexfeld As Integer, ByVal wert As String) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.SP_Archiv_Update_DokumentColdIndexwert"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
conn_edoka.OpenConnection()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@indextyp", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Indextyp))
scmCmdToExecute.Parameters.Add(New SqlParameter("@indexfeld", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, indexfeld))
scmCmdToExecute.Parameters.Add(New SqlParameter("@wert", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, wert))
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
Try
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
' // some error occured. Bubble it to caller and encapsulate Exception object
Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
conn_edoka.CloseConnection(True)
End Try
End Function
'''<summary>Edoka-spezifische Dokumentwerte nachführen</summary>
'''<remarks>Führt folgende Daten in den Dokumentwerten hinzu
'''<para>- Herkunftsapplikation</para>
'''<para>- Archivreferenz</para>
'''<para>- Listen-Empfänger MA/KST/NL</para>
'''<para>- Individuelle Dokumentwerte der Fremdanwendung</para></remarks>
'''<param name="datarow">Aktuelle Zeile der Indexdaten</param>
Private Function Insert_Dokumentwerte(ByVal datarow As Integer) As Boolean
'Herkunftsapplikation
If Me.IndexData.Rows(datarow).Item(17) <> "" Then
Dokumentwert_Sichern("Applikation;" + Me.IndexData.Rows(datarow).Item(17), -90000)
Else
'Anpassungen EBES-LSV
Dokumentwert_Sichern("Applikation;" + Globals.Herkunftsapplikation.Rows(0).Item(1), -90000)
End If
'Archivreferenz
If Me.IndexData.Rows(datarow).Item(21) <> "" Then
If Not IsNumeric(Me.IndexData.Rows(datarow).Item(21)) Then
Dokumentwert_Sichern("Archivref.;" + Me.IndexData.Rows(datarow).Item(21), -90001)
Else
Me.Update_DokumentColdIndexwert(Dokumentid, 1, 11, Me.IndexData.Rows(datarow).Item(21))
End If
End If
'ListEmpfaengerMA
If Me.IndexData.Rows(datarow).Item(23) <> "" Then
Dokumentwert_Sichern("Empfänger MA;" + Me.IndexData.Rows(datarow).Item(23), -90002)
End If
'ListEmpfaengerKST
If Me.IndexData.Rows(datarow).Item(24) <> "" Then
Dokumentwert_Sichern("Empfänger KST;" + Me.IndexData.Rows(datarow).Item(24), -90003)
End If
'ListEmpfaengerNL / FormularID bei FinFox
If UCase(Globals.Herkunftsapplikation.Rows(0).Item(1)) = "FINFOX" And Me.IndexData.Rows(datarow).Item(25) <> "" Then
update_dokument_formularnr(Dokumentid, Me.IndexData.Rows(datarow).Item(25))
'Dokumentwert_Sichern("Formular-ID;" + Me.IndexData.Rows(datarow).Item(25), -90004)
Else
If Me.IndexData.Rows(datarow).Item(25) <> "" Then
Dokumentwert_Sichern("Empfänger NL;" + Me.IndexData.Rows(datarow).Item(25), -90004)
End If
End If
'Dokumentwerte
Dim i As Integer
For i = 26 To Me.IndexData.Columns.Count - 1
Try
If Me.IndexData.Rows(datarow).Item(i) <> "" Then
Dim s As String
Dim s1 As String
s = Me.IndexData.Rows(datarow).Item(i)
If s.IndexOf(";") < 1 Then
s1 = Me.IndexData.Columns(i).ColumnName
s1 = s1.Replace("_", " ")
s = Me.IndexData.Columns(i).ColumnName + ";" + Me.IndexData.Rows(datarow).Item(i)
Dokumentwert_Sichern(s, -90005 - (i - 25))
Else
Dokumentwert_Sichern(Me.IndexData.Rows(datarow).Item(i), -90005 - (i - 25))
End If
End If
Catch
End Try
Next
End Function
'''<summary>Edoka-spezifischer Dokumentwert auf der Datenbank sichern</summary>
'''<param name="wert">Inhalt</param>
'''<param name="feldnr">Feldnummer</param>
Public Sub Dokumentwert_Sichern(ByVal wert As String, ByVal feldnr As Integer)
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.SP_Dokument_Information_Wert"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Connection.Open()
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@vorlagenfeldnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, feldnr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@value", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, wert))
scmCmdToExecute.ExecuteNonQuery()
Catch ex As Exception
' // some error occured. Bubble it to caller and encapsulate Exception object
Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Connection.Close()
scmCmdToExecute.Dispose()
End Try
End Sub
#End Region
#Region "Status"
'''<summary>Erstellen der Dokumentstatus und eintragen der entsprechenden
'''Statushistory-Einträge</summary>
'''<param name="datarow">Aktuelle Zeile der Indexdaten</param>
'''<returns>Status, welcher im Dokument unter &quot;Statusnr&quot; nachgeführt
'''wird</returns>
'''<seealso
'''cref="Create_Dokumentstatus">edkb08.clsCheckandImport.Create_Dokumentstatus(System.Int32)</seealso>
'''<seealso
'''cref="Get_Dokumentstatus">edkb08.clsCheckandImport.Get_Dokumentstatus(System.Int32)</seealso>
'''<seealso cref="clsCheckandImport.insert_history_status">edkb08.clsCheckandImport.insert_history_status(System.Int32,
'''System.String, System.Int32, System.DateTime)</seealso>
Private Function Dokumentstatus_erstellen_und_Status_Setzen(ByVal datarow As Integer, ByVal erstellen As Boolean, Optional ByVal BLKunde As Integer = 0) As Integer
Dim st As New DataTable()
Dim i As Integer
Dim dt As DateTime = DateAdd(DateInterval.Second, -5, Now)
Dim MitArchivfunktion As Boolean = False
If erstellen = True Then
Me.Create_Dokumentstatus(datarow, BLKunde)
End If
st = Me.Get_Dokumentstatus(datarow)
For i = 0 To st.Rows.Count - 1
Select Case Integer.Parse(st.Rows(i).Item(2).ToString)
Case 3
MitArchivfunktion = True
Case 11
MitArchivfunktion = True
Status_Bereit_Zur_Eingangsarchivierung = True
End Select
Next
If MitArchivfunktion Then
'Dokumentstatusreihenfolge mit Ausgangsarchivierung
For i = 0 To st.Rows.Count - 1
insert_history_status(st.Rows(i).Item(0), Dokumentid, Globals.Mitarbeiternr, dt)
dt = DateAdd(DateInterval.Second, 1, dt)
If st.Rows(i).Item(2) = 3 Or st.Rows(i).Item(2) = 11 Then
Return st.Rows(i).Item(0)
Exit Function
End If
Next
Else
'Dokumentstatusreihenfolge ohne Ausgangsarchivierung
End If
End Function
'''<summary>Dokumentstatus für das zu erstellende Dokument generieren</summary>
'''<remarks>Erstellt die Dokumentstatus gem. Statussequenz des
'''Dokumenttyps</remarks>
'''<param name="datarow">Aktuelle Zeile der Indexdaten</param>
'''<returns>Datatable</returns>
Private Function Create_Dokumentstatus(ByVal datarow As Integer, Optional ByVal blkunde As Integer = 0) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.sp_dokumentberabeigung_status_erstellen"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Dokumentid))
If Me.bckstatussequenz = False Then
scmCmdToExecute.Parameters.Add(New SqlParameter("@bck", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0))
Else
scmCmdToExecute.Parameters.Add(New SqlParameter("@bck", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1))
End If
If blkunde = 0 Then
scmCmdToExecute.Parameters.Add(New SqlParameter("@blsequenz", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0))
Else
scmCmdToExecute.Parameters.Add(New SqlParameter("@blsequenz", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1))
End If
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
conn_edoka.CloseConnection(True)
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
'''<summary>Alle Dokumentstatus eines Dokumentes lesen</summary>
'''<remarks>Diese Funktion liest alle Dokumentstatus eines Dokumentes</remarks>
'''<param name="datarow">Aktuelle Ziele der Indexdaten</param>
'''<returns>Datatable mit den Dokumentstatus</returns>
Private Function Get_Dokumentstatus(ByVal datarow As Integer) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.sp_edoka_import_get_dokumentstatus"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Dokumentid))
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
conn_edoka.CloseConnection(True)
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
'''<summary>Auslesen der EDOKA-Mitarbeiternummer aufgrund der gelieferten
'''TG-Nummer</summary>
'''<param name="datarow">Aktuelle Import-Datenzeile</param>
'''<returns>Mitarbeiternr des EDOKA-Mitarbeiters entweder anhand der TGNummer oder
'''die in der Tabelle FA_Appl definierte Mitarbeiternr, sofern die gelieferte
'''TGNummer &quot;&quot; oder nicht als Mitarbeiter in EDOKA vorhanden
'''ist</returns>
Private Function Get_EDOKA_Mitarbeiter(ByVal datarow As Integer) As Integer
If Me.IndexData.Rows(datarow).Item(14) = "" Then Return Herkunftsapplikation.Rows(0).Item(2)
Dim tmptable As DataTable
Dim tmpma As New edokadb.clsMyMitarbeiter()
tmpma.cpMainConnectionProvider = conn_edoka
tmpma.xtgnummer = IndexData.Rows(datarow).Item(14)
tmptable = tmpma.SelectWithTGNummer()
If tmptable.Rows.Count = 0 Then
Return Herkunftsapplikation.Rows(0).Item(2)
Else
Return tmptable.Rows(0).Item(0)
End If
tmpma.Dispose()
tmptable.Dispose()
End Function
'''<summary>Statushistory nachführen</summary>
'''<remarks>Diese Funktion fügt für einen Dokumentstatus eines bestimmten Dokuments
'''die Statushistory nach</remarks>
'''<param name="statusnr">Nummer des Status</param>
'''<param name="dokumentid">EDOKA-DokumentID</param>
'''<param name="Verantwortlicher">Verantwortlicher Mitarbeiter</param>
'''<param name="datumzeit">Timestamp</param>
Public Sub insert_history_status(ByVal statusnr As Integer, ByVal dokumentid As String, ByVal Verantwortlicher As Integer, ByVal datumzeit As DateTime)
Try
Dim sh As New edokadb.clsStatushistory()
Dim dbkey As New edokadb.clsMyKey_Tabelle()
Dim key As Long
dbkey.cpMainConnectionProvider = conn_edoka
key = dbkey.get_dbkey("statushistory")
sh.cpMainConnectionProvider = conn_edoka
sh.iStatushistorynr = New SqlInt32(CType(key, Int32))
sh.iStatus = New SqlInt32(CType(statusnr, Int32))
sh.iMandantnr = New SqlInt32(CType(1, Int32))
sh.iMutierer = New SqlInt32(CType(Globals.Mitarbeiternr, Int32))
sh.bAktiv = New SqlBoolean(True)
sh.daErstellt_am = New SqlDateTime(CType(datumzeit, DateTime))
sh.daMutiert_am = New SqlDateTime(CType(datumzeit, DateTime))
sh.sDokumentid = New SqlString(CType(dokumentid, String))
sh.iVerantwortlich = New SqlInt32(CType(Verantwortlicher, Int32))
Try
conn_edoka.OpenConnection()
Catch
End Try
sh.Insert()
Try
conn_edoka.CloseConnection(True)
Catch
End Try
dbkey.Dispose()
sh.Dispose()
Catch ex As Exception
PrintOut("clsCheckandImport.insert_history_status()" + ex.Message, EventLogEntryType.Error)
End Try
End Sub
#End Region
#End Region
#Region "Delete Dokument"
'''<summary>Löschung des Dokumentes, abhängig vom Übergabewert (Dokumentid oder
'''Dokumentname) auslösen</summary>
'''<remarks>Abhängig vom Übergabeparameter Dokumentid (Indexfeld 23) oder
'''Dateiname, wird das Löschen bzw. Aufheben des Dokumentes ausgelöst.
'''<para>Im Falle der Übergabe des Dateinamens, ist sicher gestellt, dass ein
'''Dokument nur dann gelöscht wird, wenn der Dateiname eindeutig verwendet
'''wurde.</para></remarks>
'''<param name="datarow">Aktuelle Zeile der Indexdaten</param>
'''<returns>True=Löschung durchgeführt
'''<para>False=Löschung nicht durchgeführt</para></returns>
Private Function Delete_Dokument(ByVal datarow As Integer) As Boolean
'Löschung des Dokumentes
If Dokument_Loeschen(Me.Dokumentid, datarow) Then Return True Else Return False
End Function
'''<summary>Dokument löschen bzw. aufheben</summary>
'''<remarks>Als erstes wird der aktuelle Status des Dokumentes ausgelesen bzw. es
'''wird überprüft, ob das zu löschende Dokumente den Status &quot;Aufgehoben&quot;
'''in der Statussequenz hat. Beim Vorhandensein des Aufhebungsstatus wird das
'''Dokument aufgehoben, ansonsten gelöscht resp. inaktiviert.</remarks>
'''<param name="dokumentid">DokumentID des zu löschenden Dokumentes</param>
'''<param name="datarow">Aktuelle Zeile der Indexdaten</param>
'''<returns>True=Löschung erfolgt
'''<para>False=Löschung nicht durchgeführt</para></returns>
Private Function Dokument_Loeschen(ByVal dokumentid As String, ByVal datarow As Integer) As Boolean
Dim i As Integer
i = ist_archiviert(dokumentid)
If i = 0 Then
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.SP_Dokument_delete"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
conn_edoka.OpenConnection()
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiter", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.Mitarbeiternr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@loeschgrund", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, "*** Dokument durch EDKB08 gelöscht."))
scmCmdToExecute.Parameters.Add(New SqlParameter("@anzeigestatus", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0))
scmCmdToExecute.ExecuteNonQuery()
Catch ex As Exception
Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
conn_edoka.CloseConnection(True)
Journal.Insert_Journal(datarow, IndexData.Rows(datarow).Item(1), "", IndexData.Rows(datarow).Item(12), "0", "Dokument gelöscht.", dokumentid, "")
End Try
Return True
End If
i = get_status(dokumentid)
Select Case i
Case 0
Fehler = 201
Journal.Insert_Journal(datarow, IndexData.Rows(datarow).Item(1), "", IndexData.Rows(datarow).Item(12), 201, "Dokument konnte nicht gelöscht werden.", dokumentid, "")
Return False
Case -3
set_aufgehoben(dokumentid)
Journal.Insert_Journal(datarow, IndexData.Rows(datarow).Item(1), "", IndexData.Rows(datarow).Item(12), "0", "Dokument aufgehoben.", dokumentid, "")
Case Else
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.SP_Dokument_delete"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
conn_edoka.OpenConnection()
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiter", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.Mitarbeiternr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@loeschgrund", SqlDbType.VarChar, 1024, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, "*** Dokument durch EDKB08 gelöscht."))
If i = -2 Then
scmCmdToExecute.Parameters.Add(New SqlParameter("@anzeigestatus", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 0))
Else
scmCmdToExecute.Parameters.Add(New SqlParameter("@anzeigestatus", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 1))
End If
scmCmdToExecute.ExecuteNonQuery()
Catch ex As Exception
Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
conn_edoka.CloseConnection(True)
Dim dt As DataTable
dt = get_coldindex_and_statusnr(dokumentid, False, False)
insert_coldupdate_status(dt, dokumentid, "Alt")
dt.Dispose()
Journal.Insert_Journal(datarow, IndexData.Rows(datarow).Item(1), "", IndexData.Rows(datarow).Item(12), "0", "Dokument gelöscht.", dokumentid, "")
End Try
End Select
End Function
'''<summary>Auselesen des letzten Status in der Seqeunz des zu löschenden
'''Dokumentes</summary>
'''<param name="dokumentid">Dokumentid des zu löschenden Dokumentes</param>
'''<returns>Status_Bezeichnungnr</returns>
Private Function get_status(ByVal dokumentid As String) As Integer
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.SP_Edoka_Import_Get_Status"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@status", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
scmCmdToExecute.Parameters.Add(New SqlParameter("@aufheben", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
Try
conn_edoka.OpenConnection()
scmCmdToExecute.ExecuteNonQuery()
conn_edoka.CloseConnection(True)
Return scmCmdToExecute.Parameters("@aufheben").Value
Catch ex As Exception
PrintOut("clsCheckandImport.get_status()" + ex.Message, EventLogEntryType.Error)
Return 0
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
End Try
End Function
'''<summary>Dokument aufheben</summary>
'''<param name="dokumentid">Dokumentid des aufzuhebenden Dokumentes</param>
Public Sub set_aufgehoben(ByVal dokumentid As String)
Dim dt As DataTable
dt = get_coldindex_and_statusnr(dokumentid, True, False)
insert_coldupdate_status(dt, dokumentid, "Alt")
dt.Dispose()
End Sub
'''<summary>SColdindex und Aufhebungsstatus des eines zu löschenden bzw.
'''aufzuhebenden Dokumentes auslesen</summary>
'''<remarks>Sofern das Dokument aufgehoben wird, wird der Status
'''&quot;Aufgehoben&quot; im Dokument nachgeführt, indem einerseits einen
'''Statushistory-Eintrag erstellt und der aktuelle Dokumentstatus gesetzt
'''wird.</remarks>
'''<param name="dokumentid">Dokumentid des zu löschenden / aufzuhebenden
'''Dokumentes</param>
'''<param name="aufheben">True=Dokument aufheben
'''<para>False=Dokument nicht aufheben</para></param>
'''<param name="reaktivieren">True=Aufgehobenes Dokument reaktivieren
'''<para>False=Keine Dokumentreaktivierung</para></param>
'''<returns>Datentable mit den Dokumentstatus</returns>
Public Function get_coldindex_and_statusnr(ByVal dokumentid As String, ByVal aufheben As Boolean, ByVal reaktivieren As Boolean) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim i As Integer
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.sp_get_coldindex_and_aufhebungsstatus"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@reaktivieren", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, reaktivieren))
scmCmdToExecute.Parameters.Add(New SqlParameter("@aufhebungsstatus", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
sdaAdapter.Fill(dtToReturn)
i = scmCmdToExecute.Parameters.Item("@aufhebungsstatus").Value
If (i <> 0 And aufheben) Or (i <> 0 And reaktivieren) Then
insert_history_status(i, dokumentid, Globals.Mitarbeiternr, Now)
Dim d As New edokadb.clsDokument()
d.cpMainConnectionProvider = conn_edoka
d.sDokumentid = New SqlString(CType(dokumentid, String))
d.SelectOne()
d.iStatusnr = New SqlInt32(CType(i, Int32))
conn_edoka.OpenConnection()
d.daMutiertam = New SqlDateTime(CType(Now, DateTime))
d.iMutierer = New SqlInt32(CType(Globals.Mitarbeiternr, Int32))
d.Update()
conn_edoka.CloseConnection(True)
d.Dispose()
End If
Return dtToReturn
Catch ex As Exception
'MsgBox(ex.Message)
' // some error occured. Bubble it to caller and encapsulate Exception object
Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
'''<summary>AGI-COLD-Dokument-Status ändern</summary>
'''<remarks>Setzt den aktuellen Status der COLD-Dokumente auf den Wert im Parameter
'''&quot;neuerstatus&quot;</remarks>
'''<param name="dt">Datentabelle mit Cold-Index-Werten</param>
'''<param name="dokumentid">DokumentID</param>
'''<param name="neuerstatus">Neuer Status der entsprechenden COLD-Dokumente</param>
Public Sub insert_coldupdate_status(ByVal dt As DataTable, ByVal dokumentid As String, ByVal neuerstatus As String)
Dim i As Integer
Dim colddokumentid As String
Dim indextyp As Integer
indextyp = 1
colddokumentid = ""
For i = 0 To dt.Rows.Count - 1
If dt.Rows(i).Item("indextyp") = indextyp Then
If dt.Rows(i).Item("cold_indexfeldnr") = 10 And dt.Rows(i).Item("wert") <> "" Then colddokumentid = dt.Rows(i).Item("wert")
If colddokumentid <> "" Then
Insert_ColdUpdate(dokumentid, colddokumentid, indextyp, 7, "Alt")
Exit For
End If
End If
Next
indextyp = 2
colddokumentid = ""
For i = 0 To dt.Rows.Count - 1
If dt.Rows(i).Item("indextyp") = indextyp Then
If dt.Rows(i).Item("cold_indexfeldnr") = 10 And dt.Rows(i).Item("wert") <> "" Then colddokumentid = dt.Rows(i).Item("wert")
If colddokumentid <> "" Then
Insert_ColdUpdate(dokumentid, colddokumentid, indextyp, 7, "Alt")
Exit For
End If
End If
Next
End Sub
'Alt vor Umstellung COLDIndexwerte
'Public Function insert_coldupdate_status(ByVal dt As DataTable, ByVal dokumentid As String, ByVal neuerstatus As String)
' Dim i As Integer
' Dim colddokumentid As String
' Dim neuerwert As String
' Dim indextyp As Integer
' indextyp = 1
' colddokumentid = ""
' For i = 0 To dt.Rows.Count - 1
' If dt.Rows(i).Item("indextyp") = indextyp Then
' If dt.Rows(i).Item("cold_indexfeldnr") = 10 And dt.Rows(i).Item("wert") <> "" Then colddokumentid = dt.Rows(i).Item("wert")
' If colddokumentid <> "" Then
' Insert_ColdUpdate(dokumentid, colddokumentid, indextyp, 7, "Alt")
' Exit For
' End If
' End If
' Next
' indextyp = 2
' colddokumentid = ""
' For i = 0 To dt.Rows.Count - 1
' If dt.Rows(i).Item("indextyp") = indextyp Then
' If dt.Rows(i).Item("cold_indexfeldnr") = 10 And dt.Rows(i).Item("wert") <> "" Then colddokumentid = dt.Rows(i).Item("wert")
' If colddokumentid <> "" Then
' Insert_ColdUpdate(dokumentid, colddokumentid, indextyp, 7, "Alt")
' Exit For
' End If
' End If
' Next
'End Function
'''<summary>Tabelle COLD-Update mit Updates ergänzen</summary>
'''<param name="dokumentid">DokumentID des EDOKA-Dokumentes</param>
'''<param name="colddokumentid">DokumentID des COLD-Bildes</param>
'''<param name="indextyp">1=Ausgangsarchiviertes Dokumente
'''<para>2=Eingangarchiviertes Dokumente</para></param>
'''<param name="feldnr">Feldnr des Feldes im Cold-Index</param>
'''<param name="wert">Neuer Wert</param>
Public Function Insert_ColdUpdate(ByVal dokumentid As String, ByVal colddokumentid As String, ByVal indextyp As Integer, ByVal feldnr As Integer, ByVal wert As String) As DataTable
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.SP_Archiv_insert_coldupdate"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
conn_edoka.OpenConnection()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@colddokumentid", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, colddokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@indextyp", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, indextyp))
scmCmdToExecute.Parameters.Add(New SqlParameter("@feldnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, feldnr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@neuerwert", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, wert))
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
Try
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
' MsgBox(ex.Message)
Throw New Exception("Dokumenterstellung::Generic_Select::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
conn_edoka.CloseConnection(True)
End Try
End Function
#End Region
#Region "Update Dokumentwert"
'''<summary>Dokumentwerte eines Dokumentes updaten</summary>
'''<param name="datarow">Aktuelle Zeile der Indexdaten</param>
Private Function Update_Dokumentwerte(ByVal datarow As Integer) As Boolean
dokumentwerte_update(datarow)
Journal.Insert_Journal(datarow, Me.IndexData.Rows(datarow).Item(1), Me.IndexData.Rows(datarow).Item(11), Me.IndexData.Rows(datarow).Item(12), "0", "Update Dokumentwerte", Dokumentid, "")
End Function
Private Sub dokumentwerte_update(ByVal datarow As Integer)
Try
Dim dok As New edokadb.clsDokument()
dok.cpMainConnectionProvider = conn_edoka
dok.sDokumentid = New SqlString(CType(Dokumentid, String))
dok.SelectOne()
'Archivdatum
If IndexData.Rows(datarow).Item(16) <> "" Then
dok.daArchivierungsdatum = New SqlDateTime(CType(Me.IndexData.Rows(datarow).Item(16), DateTime))
End If
'Ersteller
If IndexData.Rows(datarow).Item(14) <> "" Then
dok.iErsteller = New SqlInt32(CType(Globals.Mitarbeiternr, Int32))
End If
conn_edoka.OpenConnection()
dok.Update()
conn_edoka.CloseConnection(True)
dok.Dispose()
Update_FANummer(datarow)
'VVNummer im COLDIndex aktualisieren, sofern als Indexwert übergeben
If Me.IndexData.Rows(datarow).Item(19) <> "" Then Update_DokumentColdIndexwert(Dokumentid, 1, 3, Me.IndexData.Rows(datarow).Item(19))
'Archivdatum im COLD-Index
If Me.IndexData.Rows(datarow).Item(16) <> "" Then
Update_DokumentColdIndexwert(Dokumentid, 1, 5, IndexData.Rows(datarow).Item(16))
Update_DokumentColdIndexwert(Dokumentid, 2, 5, IndexData.Rows(datarow).Item(16))
End If
'Herkunftsapplikation
If Me.IndexData.Rows(datarow).Item(17) <> "" Then
Dokumentwert_Sichern("Applikation;" + Me.IndexData.Rows(datarow).Item(17), -90000)
End If
'Archivreferenz
If Me.IndexData.Rows(datarow).Item(21) <> "" Then
If IsNumeric(Me.IndexData.Rows(datarow).Item(21)) Then
Me.Update_DokumentColdIndexwert(Dokumentid, 1, 11, Me.IndexData.Rows(datarow).Item(21))
Else
Dokumentwert_Sichern("Archivref.;" + Me.IndexData.Rows(datarow).Item(21), -90001)
End If
End If
'ListEmpfaengerMA
If Me.IndexData.Rows(datarow).Item(23) <> "" Then
Dokumentwert_Sichern("Empfänger MA;" + Me.IndexData.Rows(datarow).Item(23), -90002)
End If
'ListEmpfaengerKST
If Me.IndexData.Rows(datarow).Item(24) <> "" Then
Dokumentwert_Sichern("Empfänger KST;" + Me.IndexData.Rows(datarow).Item(24), -90003)
End If
'ListEmpfaengerNL
If UCase(Globals.Herkunftsapplikation.Rows(0).Item(1)) = "FINFOX" And Me.IndexData.Rows(datarow).Item(25) <> "" Then
update_dokument_formularnr(Dokumentid, Me.IndexData.Rows(datarow).Item(25))
'Dokumentwert_Sichern("Formular-ID;" + Me.IndexData.Rows(datarow).Item(25), -90004)
Else
If Me.IndexData.Rows(datarow).Item(25) <> "" Then
Dokumentwert_Sichern("Empfänger NL;" + Me.IndexData.Rows(datarow).Item(25), -90004)
End If
End If
'Dokumentwerte
Dim i As Integer
For i = 26 To 45
Try
If Me.IndexData.Rows(datarow).Item(i) <> "" Then
Dokumentwert_Sichern(Me.IndexData.Rows(datarow).Item(i), -90005 - (i - 25))
End If
Catch
End Try
Next
Catch
End Try
End Sub
#End Region
#Region "Replace_Dokument"
Private Function Replace_Dokument(ByVal datarow As Integer) As Integer
'Prüfung, ob bereits eine Dokumentarchivierung stattgefunden hat
Me.ist_archiviert(Dokumentid)
'Dokument importieren
If Not DivFnkt.Save_To_DB(Dokumentid, Params.Inputverzeichnis + Me.IndexData.Rows(datarow).Item(12), False) Then
Fehler = 115
Journal.Insert_Journal(datarow, Me.IndexData.Rows(datarow).Item(1), Me.IndexData.Rows(datarow).Item(13), Me.IndexData.Rows(datarow).Item(12), 115, "Datei konnte nicht in die EDOKA-Datenbank gespeichert werden.", "", "")
End If
'Dokumentname im Dokument ändern
Dim d As New edokadb.clsDokument()
d.sDokumentid = New SqlString(CType(Dokumentid, String))
d.cpMainConnectionProvider = conn_edoka
d.SelectOne()
Try
conn_edoka.CloseConnection(True)
Catch
End Try
d.sDokumentname = New SqlString(CType(Me.IndexData.Rows(datarow).Item(12), String))
d.iStatusnr = New SqlInt32(CType(Dokumentstatus_erstellen_und_Status_Setzen(datarow, False), Int32))
d.bBereit_zur_archivierung = New SqlBoolean(CType(True, Boolean))
d.bAusgangsarchiviert = New SqlBoolean(CType(False, Boolean))
d.bEingangsarchiviert = New SqlBoolean(CType(False, Boolean))
d.sColddokumentid = New SqlString(CType("", String))
conn_edoka.OpenConnection()
d.Update()
conn_edoka.CloseConnection(True)
d.Dispose()
'sofern eine Archivierung stattgefunden hat, Dokumentwerte kopieren
If DokumentArchiviert Then copy_indexdata(Dokumentid, "Alt")
'Dokumentwerte anpassen
Update_Dokumentwerte(datarow)
Journal.Insert_Journal(datarow, Me.IndexData.Rows(datarow).Item(1), Me.IndexData.Rows(datarow).Item(11), Me.IndexData.Rows(datarow).Item(12), "0", "Dokument ersetzt", Dokumentid, "")
End Function
Dim general_ds As New DataSet()
Private Sub copy_indexdata(ByVal dokumentid As String, ByVal Status As String)
Dim sda As New SqlDataAdapter("select * from dokumentcoldindexwert where (indextyp=1 or indextyp=2) and dokumentid='" & dokumentid & "'", Globals.sConnectionString_edoka)
Dim sda1 As New SqlDataAdapter("select * from dokumentcoldindexwert where dokumentid='" & dokumentid & "'", Globals.sConnectionString_edoka)
Dim sda3 As New SqlDataAdapter("select max(indextyp) from dokumentcoldindexwert where dokumentid='" & dokumentid & "'", Globals.sConnectionString_edoka)
Dim ds As New DataSet()
general_ds.Clear()
sda.Fill(ds, "Dokumentcoldindexwert")
sda1.Fill(general_ds, "Dokumentcoldindexwert")
'Globals.Dokumentcoldindex_Changed = True
sda.Fill(ds, "DokumentcoldindexwertNeu")
sda3.Fill(ds, "Maxwert")
Dim i As Integer
Dim Maxwert As Integer
Maxwert = ds.Tables(2).Rows(0).Item(0)
If Maxwert < 2 Then Maxwert = 2
Dim i1 As Integer
Dim i2 As Integer
i1 = 0
i2 = 0
For i = 0 To ds.Tables(0).Rows.Count - 1
If Not ds.Tables(0).Rows(i).Item("BESTA00") Is System.DBNull.Value Then
If (ds.Tables(0).Rows(i).Item("BESTA00") = "Aktuell" Or ds.Tables(0).Rows(i).Item("BESTA00") = "Alt") Then
If ds.Tables(0).Rows(i).Item("indextyp") = 1 Then i1 = 1
If ds.Tables(0).Rows(i).Item("indextyp") = 2 Then i2 = 1
End If
End If
Next
For i = 0 To ds.Tables(0).Rows.Count - 1
If Not ds.Tables(0).Rows(i).Item("BESTA00") Is System.DBNull.Value Then
If i1 = 1 And ds.Tables(0).Rows(i).Item("indextyp") = 1 Then
ds.Tables(0).Rows(i).Item("indextyp") = Maxwert + 1
ds.Tables(0).Rows(i).Item("BESTA00") = Status
End If
If i2 = 1 And ds.Tables(0).Rows(i).Item("indextyp") = 2 Then
ds.Tables(0).Rows(i).Item("indextyp") = Maxwert + 2
ds.Tables(0).Rows(i).Item("BESTA00") = Status
End If
End If
Next
For i = 0 To ds.Tables(1).Rows.Count - 1
If Not ds.Tables(0).Rows(i).Item("BESTA00") Is System.DBNull.Value Then
If i1 = 1 And ds.Tables(1).Rows(i).Item("indextyp") = 1 Then
ds.Tables(1).Rows(i).Item("BESTA00") = ""
End If
If i2 = 1 And ds.Tables(1).Rows(i).Item("indextyp") = 2 Then
ds.Tables(1).Rows(i).Item("BESTA00") = ""
End If
End If
If Not ds.Tables(0).Rows(i).Item("DMSTA01") Is System.DBNull.Value Then
If i1 = 1 And ds.Tables(1).Rows(i).Item("indextyp") = 1 Then
ds.Tables(1).Rows(i).Item("DMSTA01") = ""
End If
If i2 = 1 And ds.Tables(1).Rows(i).Item("indextyp") = 2 Then
ds.Tables(1).Rows(i).Item("DMSTA01") = ""
End If
End If
If Not ds.Tables(0).Rows(i).Item("NRDOC00") Is System.DBNull.Value Then
If i1 = 1 And ds.Tables(1).Rows(i).Item("indextyp") = 1 Then
ds.Tables(1).Rows(i).Item("NRDOC00") = ""
End If
If i2 = 1 And ds.Tables(1).Rows(i).Item("indextyp") = 2 Then
ds.Tables(1).Rows(i).Item("NRDOC00") = ""
End If
End If
Next
Dim cd As New SqlCommandBuilder(sda)
sda.Update(ds, "Dokumentcoldindexwert")
DokumentColdIndexWert_Insert(ds.Tables(1), i1, i2)
sda.Dispose()
sda1.Dispose()
sda3.Dispose()
End Sub
Private Sub DokumentColdIndexWert_Insert(ByVal dtOrg As DataTable, ByVal i1 As Integer, ByVal i2 As Integer)
'Coldindexwerte Inserten mit Daten aus neuer Tabellen Struktur
Dim i As Integer
Dim dw As New edokadb.clsDokumentcoldindexwert()
dw.cpMainConnectionProvider = Globals.conn_edoka
Dim lcnt As Integer
Dim sWert As String
Dim sFieldArray(12) As String
sFieldArray(0) = "NRPAR00"
sFieldArray(1) = "BKPAR00"
sFieldArray(2) = "NAVVG00"
sFieldArray(3) = "BEBEZ00"
sFieldArray(4) = "DMSTA01"
sFieldArray(5) = "BEDAT00"
sFieldArray(6) = "BESTA00"
sFieldArray(7) = "BEORT00"
sFieldArray(8) = "NRDOC00"
sFieldArray(9) = "NRSTA00"
sFieldArray(10) = "BEGSF00"
sFieldArray(11) = "BEUSR00"
sFieldArray(12) = "BERES03"
For i = 0 To dtOrg.Rows.Count - 1
If (i1 = 1 And dtOrg.Rows(i).Item("indextyp") = 1) Or _
(i2 = 1 And dtOrg.Rows(i).Item("indextyp") = 2) Then
dw.iIndextyp = New SqlInt32(CType(dtOrg.Rows(i).Item(1), Int32))
dw.iMandantnr = New SqlInt32(CType(dtOrg.Rows(i).Item("mandantnr"), Int32))
dw.bAktiv = New SqlBoolean(CType(dtOrg.Rows(i).Item("aktiv"), Boolean))
dw.daErstellt_am = New SqlDateTime(CType(Now, DateTime))
dw.daMutiert_am = New SqlDateTime(CType(Now, DateTime))
dw.iMutierer = New SqlInt32(CType(Globals.Mitarbeiternr, Int32))
dw.sDokumentid = New SqlString(CType(dtOrg.Rows(i).Item("dokumentid"), String))
For lcnt = 0 To 12
If Not dtOrg.Rows(i).Item(sFieldArray(lcnt)) Is System.DBNull.Value Then
sWert = CType(dtOrg.Rows(i).Item(sFieldArray(lcnt)), String)
Else
sWert = ""
End If
Select Case sFieldArray(lcnt)
Case sFieldArray(0)
dw.sNRPAR00 = New SqlString(CType(sWert, String))
Case sFieldArray(1)
dw.sBKPAR00 = New SqlString(CType(sWert, String))
Case sFieldArray(2)
dw.sNAVVG00 = New SqlString(CType(sWert, String))
Case sFieldArray(3)
dw.sBEBEZ00 = New SqlString(CType(sWert, String))
Case sFieldArray(4)
dw.sDMSTA01 = New SqlString(CType(sWert, String))
Case sFieldArray(5)
dw.sBEDAT00 = New SqlString(CType(sWert, String))
Case sFieldArray(6)
dw.sBESTA00 = New SqlString(CType(sWert, String))
Case sFieldArray(7)
dw.sBEORT00 = New SqlString(CType(sWert, String))
Case sFieldArray(8)
dw.sNRDOC00 = New SqlString(CType(sWert, String))
Case sFieldArray(9)
dw.sNRSTA00 = New SqlString(CType(sWert, String))
Case sFieldArray(10)
dw.sBEGSF00 = New SqlString(CType(sWert, String))
Case sFieldArray(11)
dw.sBEUSR00 = New SqlString(CType(sWert, String))
Case sFieldArray(12)
dw.sBERES03 = New SqlString(CType(sWert, String))
End Select
Next
conn_edoka.OpenConnection()
dw.Insert()
conn_edoka.CloseConnection(True)
End If
Next
dw.Dispose()
End Sub
'Private Sub copy_indexdata(ByVal dokumentid As String, ByVal Status As String)
' Dim sda As New SqlDataAdapter("select * from dokumentcoldindexwert where (indextyp=1 or indextyp=2) and dokumentid='" & dokumentid & "'", Globals.sConnectionString_edoka)
' Dim sda1 As New SqlDataAdapter("select * from dokumentcoldindexwert where dokumentid='" & dokumentid & "'", Globals.sConnectionString_edoka)
' Dim sda3 As New SqlDataAdapter("select max(indextyp) from dokumentcoldindexwert where dokumentid='" & dokumentid & "'", Globals.sConnectionString_edoka)
' Dim ds As New DataSet()
' general_ds.Clear()
' sda.Fill(ds, "Dokumentcoldindexwert")
' sda1.Fill(general_ds, "Dokumentcoldindexwert")
' sda.Fill(ds, "DokumentcoldindexwertNeu")
' sda3.Fill(ds, "Maxwert")
' Dim i As Integer
' Dim Maxwert As Integer
' Maxwert = ds.Tables(2).Rows(0).Item(0)
' If Maxwert < 2 Then Maxwert = 2
' Dim i1 As Integer
' Dim i2 As Integer
' i1 = 0
' i2 = 0
' For i = 0 To ds.Tables(0).Rows.Count - 1
' If Not ds.Tables(0).Rows(i).Item("wert") Is System.DBNull.Value Then
' If ds.Tables(0).Rows(i).Item("cold_indexfeldnr") = 7 And (ds.Tables(0).Rows(i).Item("wert") = "Aktuell" Or ds.Tables(0).Rows(i).Item("wert") = "Alt") Then
' If ds.Tables(0).Rows(i).Item("indextyp") = 1 Then i1 = 1
' If ds.Tables(0).Rows(i).Item("indextyp") = 2 Then i2 = 1
' End If
' End If
' Next
' For i = 0 To ds.Tables(0).Rows.Count - 1
' If Not ds.Tables(0).Rows(i).Item("wert") Is System.DBNull.Value Then
' If i1 = 1 And ds.Tables(0).Rows(i).Item("indextyp") = 1 Then
' ds.Tables(0).Rows(i).Item("indextyp") = Maxwert + 1
' If ds.Tables(0).Rows(i).Item("cold_indexfeldnr") = 7 Then ds.Tables(0).Rows(i).Item("wert") = Status
' End If
' If i2 = 1 And ds.Tables(0).Rows(i).Item("indextyp") = 2 Then
' ds.Tables(0).Rows(i).Item("indextyp") = Maxwert + 2
' If ds.Tables(0).Rows(i).Item("cold_indexfeldnr") = 7 Then ds.Tables(0).Rows(i).Item("wert") = Status
' End If
' End If
' Next
' For i = 0 To ds.Tables(1).Rows.Count - 1
' If Not ds.Tables(0).Rows(i).Item("wert") Is System.DBNull.Value Then
' If i1 = 1 And ds.Tables(1).Rows(i).Item("indextyp") = 1 Then
' If ds.Tables(1).Rows(i).Item("cold_indexfeldnr") = 7 Or ds.Tables(1).Rows(i).Item("cold_indexfeldnr") = 7 Or ds.Tables(1).Rows(i).Item("cold_indexfeldnr") = 10 Then ds.Tables(1).Rows(i).Item("wert") = ""
' End If
' If i2 = 1 And ds.Tables(1).Rows(i).Item("indextyp") = 2 Then
' If ds.Tables(1).Rows(i).Item("cold_indexfeldnr") = 5 Or ds.Tables(1).Rows(i).Item("cold_indexfeldnr") = 7 Or ds.Tables(1).Rows(i).Item("cold_indexfeldnr") = 10 Then ds.Tables(1).Rows(i).Item("wert") = ""
' End If
' End If
' Next
' Dim cd As New SqlCommandBuilder(sda)
' sda.Update(ds, "Dokumentcoldindexwert")
' Dim dw As New edokadb.clsDokumentcoldindexwert()
' dw.cpMainConnectionProvider = conn_edoka
' For i = 0 To ds.Tables(1).Rows.Count - 1
' If i1 = 1 And ds.Tables(1).Rows(i).Item("indextyp") = 1 Then
' dw.iIndextyp = New SqlInt32(CType(ds.Tables(1).Rows(i).Item(1), Int32))
' If Not ds.Tables(1).Rows(i).Item(2) Is System.DBNull.Value Then
' dw.sWert = New SqlString(CType(ds.Tables(1).Rows(i).Item(2), String))
' Else
' dw.sWert = New SqlString(CType("", String))
' End If
' dw.iMandantnr = New SqlInt32(CType(ds.Tables(1).Rows(i).Item(3), Int32))
' dw.bAktiv = New SqlBoolean(CType(ds.Tables(1).Rows(i).Item(4), Boolean))
' dw.daErstellt_am = New SqlDateTime(CType(Now, DateTime))
' dw.daMutiert_am = New SqlDateTime(CType(Now, DateTime))
' dw.iMutierer = New SqlInt32(CType(9999, Int32))
' dw.sDokumentid = New SqlString(CType(ds.Tables(1).Rows(i).Item(8), String))
' dw.iCold_indexfeldnr = New SqlInt32(CType(ds.Tables(1).Rows(i).Item(9), Int32))
' conn_edoka.OpenConnection()
' dw.Insert()
' conn_edoka.CloseConnection(True)
' End If
' If i2 = 1 And ds.Tables(1).Rows(i).Item("indextyp") = 2 Then
' dw.iIndextyp = New SqlInt32(CType(ds.Tables(1).Rows(i).Item(1), Int32))
' If Not ds.Tables(1).Rows(i).Item(2) Is System.DBNull.Value Then
' dw.sWert = New SqlString(CType(ds.Tables(1).Rows(i).Item(2), String))
' Else
' dw.sWert = New SqlString(CType("", String))
' End If
' ' dw.sWert = New SqlString(CType(ds.Tables(1).Rows(i).Item(2), String))
' dw.iMandantnr = New SqlInt32(CType(ds.Tables(1).Rows(i).Item(3), Int32))
' dw.bAktiv = New SqlBoolean(CType(ds.Tables(1).Rows(i).Item(4), Boolean))
' dw.daErstellt_am = New SqlDateTime(CType(Now, DateTime))
' dw.daMutiert_am = New SqlDateTime(CType(Now, DateTime))
' dw.iMutierer = New SqlInt32(CType(9999, Int32))
' dw.sDokumentid = New SqlString(CType(ds.Tables(1).Rows(i).Item(8), String))
' dw.iCold_indexfeldnr = New SqlInt32(CType(ds.Tables(1).Rows(i).Item(9), Int32))
' conn_edoka.OpenConnection()
' dw.Insert()
' conn_edoka.CloseConnection(True)
' End If
' Next
' dw.Dispose()
' sda.Dispose()
' sda1.Dispose()
' sda3.Dispose()
'End Sub
#End Region
#Region "Diverse Funktionen"
Private Sub update_dokument_formularnr(ByVal dokumentid As String, ByVal formularnr As String)
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim i As Integer
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.sp_update_dokument_formularnr"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@formularnr", SqlDbType.VarChar, 50, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, formularnr))
conn_edoka.OpenConnection()
scmCmdToExecute.ExecuteNonQuery()
conn_edoka.CloseConnection(True)
Finally
scmCmdToExecute.Dispose()
End Try
End Sub
Dim DokumentArchiviert As Boolean
'''<summary>Prüfung, ob das Dokument bereits in AGI-COLD archiviert wurde</summary>
'''<param name="dokumentid">Dokumentid des zu prüfenden Dokumentes</param>
Private Function ist_archiviert(ByVal dokumentid As String) As Integer
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim i As Integer
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.sp_dokument_bereits_archiviert"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
scmCmdToExecute.Parameters.Add(New SqlParameter("@istarchiviert", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
scmCmdToExecute.Parameters.Add(New SqlParameter("@bdrarchiviert", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
sdaAdapter.Fill(dtToReturn)
i = scmCmdToExecute.Parameters.Item("@istarchiviert").Value
ist_archiviert = i
Me.DokumentArchiviert = scmCmdToExecute.Parameters.Item("@istarchiviert").Value
Catch ex As Exception
'MsgBox(ex.Message)
' // some error occured. Bubble it to caller and encapsulate Exception object
Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
'''<summary>Prüfung des zu löschenden Dokumentes in der EDOKA-Datenbank</summary>
'''<param name="fnkt">1=Prüfung anhand einer EDOKA_Dokumentid
'''<para>2=Prüfung anhand des Dateinamens</para></param>
'''<param name="wert">EDOKA_DokumentID oder Dateiname</param>
'''<param name="datarow">Aktuelle Zeile der Indexdaten</param>
'''<returns>True=Dokument gefunden und es kann gelöscht werden
'''<para>False=Dokument nicht gefunden bzw. es kann nicht gelöscht werden, da die
'''Suche mittels Dateiname mehrere Treffer ergab</para></returns>
Private Function get_edoka_dokument(ByVal fnkt As Integer, ByVal wert As String, ByVal datarow As Integer) As Boolean
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.SP_Edoka_Import_Get_EDOKA_Dokument"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@fnkt", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, fnkt))
scmCmdToExecute.Parameters.Add(New SqlParameter("@wert", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, wert))
scmCmdToExecute.Parameters.Add(New SqlParameter("@edoka_dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, ""))
Try
conn_edoka.OpenConnection()
scmCmdToExecute.ExecuteNonQuery()
conn_edoka.CloseConnection(True)
If scmCmdToExecute.Parameters("@edoka_dokumentid").Value = "" Then
Fehler = 200
Journal.Insert_Journal(datarow, "", "", "", Fehler, "Dokument: " + Me.IndexData.Rows(datarow).Item(12) + " konnte in EDOKA nicht gefunden werden.", "", "")
Return False
Else
If scmCmdToExecute.Parameters("@edoka_dokumentid").Value = "-16" Then
Fehler = 201
Journal.Insert_Journal(datarow, "", "", "", Fehler, "Dokument: " + Me.IndexData.Rows(datarow).Item(12) + " mehrfach in EDOKA vorhanden", "", "")
Return False
Else
Me.Dokumentid = scmCmdToExecute.Parameters("@edoka_dokumentid").Value
Return True
End If
End If
Catch ex As Exception
PrintOut("clsCheckandImport.get_edoka_dokument()" + ex.Message, EventLogEntryType.Error)
Return False
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
End Try
End Function
Private Sub Save_ImportDaten(ByVal datarow As Integer)
Dim ds As New DataSet()
Dim dt As New DataTable()
dt = Me.IndexData.Clone
dt.Rows.Clear()
Dim filename As String = LTrim(Str(Globals.Journal.JournalNr)) + "_" + LTrim(Str(datarow)) + "_Indexdata.xml"
dt.ImportRow(Me.IndexData.Rows(datarow))
ds.Tables.Add(dt)
ds.WriteXml(Params.TempPfad + filename)
dt.Rows.Clear()
ds.Tables.Clear()
dt.Dispose()
ds.Dispose()
Dim xmldata As String = ""
Dim s As String = ""
FileOpen(15, Params.TempPfad + filename, OpenMode.Input)
While Not EOF(15)
Input(15, s)
xmldata = xmldata + s
End While
FileClose(15)
Try
File.SetAttributes(Params.TempPfad + filename, FileAttributes.Normal)
Catch
End Try
Try
File.Delete(Params.TempPfad + filename)
Catch
End Try
Try
Dim sqlstatement As String = "Select * from Import_Daten where import_data_nr = -1"
Dim Connection As New SqlConnection()
Dim DA As New SqlDataAdapter(sqlstatement, Globals.sConnectionString_journale)
Dim cb As SqlCommandBuilder = New SqlCommandBuilder(DA)
Dim dsDATEN As New DataSet()
Dim fs As New FileStream(Params.Inputverzeichnis + Me.IndexData.Rows(datarow).Item(12), FileMode.Open, FileAccess.Read)
Dim mydata(fs.Length) As Byte
Try
fs.Read(mydata, 0, fs.Length)
fs.Close()
Connection.ConnectionString = Globals.sConnectionString_journale
Connection.Open()
DA.Fill(dsDATEN, "docs")
Dim myRow As DataRow
If dsDATEN.Tables(0).Rows.Count = 0 Then
'Neuer Datensatz speichern
myRow = dsDATEN.Tables(0).NewRow
myRow.Item(1) = Globals.Journal.JournalNr
myRow.Item(2) = datarow
myRow.Item(3) = xmldata
myRow.Item(4) = mydata
myRow.Item(5) = 0
myRow.Item(7) = 0
dsDATEN.Tables(0).Rows.Add(myRow)
DA.Update(dsDATEN, "docs")
End If
Catch ex As Exception
PrintOut("clsCheckandImport.Save_ImportDaten()" + ex.Message, EventLogEntryType.Error)
End Try
fs = Nothing
cb = Nothing
dsDATEN = Nothing
DA = Nothing
Connection.Close()
Connection = Nothing
Catch
End Try
End Sub
#End Region
Private Sub send_deleted_mail(ByVal empfaenger As String, ByVal dokumentid As String)
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "dbo.sp_edoka_import_send_deleted_mail"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
scmCmdToExecute.Connection = conn_edoka.scoDBConnection
Try
scmCmdToExecute.Parameters.Add(New SqlParameter("@empfaenger", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, empfaenger))
scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 22, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid))
conn_edoka.OpenConnection()
scmCmdToExecute.ExecuteNonQuery()
Catch ex As Exception
Throw New Exception("Dokument_Information_Wert::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
conn_edoka.CloseConnection(True)
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Sub
End Class