Imports System.Data.SqlClient Imports System.Data.SqlTypes Imports System.IO Imports System.Threading '''Plausibilisierung der angelieferten Indexdaten sowie Dokumentimport in '''EDOKA '''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 Public Class clsCheckandImport #Region "Deklarationen" '''Interne Variable für das Property IndexData Dim m_indexdata As DataTable '''Datentabelle mit den Indexwerten Property IndexData() As DataTable Get Return m_indexdata End Get Set(ByVal Value As DataTable) m_indexdata = Value End Set End Property '''Interne temporöre Datentabelle 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 Dim AvqSST As New Avaloq.SST '26.02.2014 DRO Initialisierung Avaloq-SST #End Region '''Prüfung der Indexwerte '''Sofern die Indexwerte vollständig sind, werden die Dokumente in EDOKA '''importiert. ''' ''' Public Function CheckandImport() As Boolean Dim i As Integer Fehler = 0 Dim hasqr As Boolean = False Try hasqr = Me.IndexData.Rows(0).Item("qrcode") <> "" Catch ex As Exception hasqr = False End Try '2020-11-10 - QR-Analyse If Globals.Herkunftsapplikation.Rows(0).Item(1) = "SP" Or (Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) And hasqr = True) Then Globals.temp_indexdaten = Me.IndexData For i = 0 To Me.IndexData.Rows.Count - 1 Dim bpnr As String Dim doktypnr As String Dim qrcode As String Dim sendEDK As String Dim sendAVQ As String Try qrcode = CType(Me.IndexData.Rows(i).Item("qrcode"), String) Catch ex As Exception qrcode = "" End Try Try bpnr = CType(Me.IndexData.Rows(i).Item("partnernr"), String) Catch ex As Exception bpnr = "" End Try Try doktypnr = CType(Me.IndexData.Rows(i).Item("EDK_DOKTYP"), String) Catch ex As Exception doktypnr = "" End Try Try sendEDK = CType(Me.IndexData.Rows(i).Item("send_edk"), String) Catch ex As Exception sendEDK = "" End Try Try sendAVQ = CType(Me.IndexData.Rows(i).Item("send_avq"), String) Catch ex As Exception sendAVQ = "" End Try '20170303 - QRCode-Analyse Dim qrbp As String = "" Dim qrpers As String = "" Dim qrdoktype As String = "" Dim PersUpdate As String = "" If qrcode.IndexOf("dms_id:;bp_nr:;attr1:") > -1 Then qrcode = qrcode.Replace("dms_id:;bp_nr:;attr1:", "") End If If qrcode <> "" Then Dim elemente As String() = qrcode.Split(";") For Each element As String In elemente Dim subelemente As String() = element.Split(":") Select Case subelemente(0) Case "bp_nr" qrbp = subelemente(1) Case "pers_nr" qrpers = subelemente(1) Case "edk_doknr" qrdoktype = subelemente(1) End Select Next If qrdoktype <> "" Then Dim inputline As String FileOpen(22, (DivFnkt.ApplicationPath + "\SP_DoktypPerson.txt"), OpenMode.Input) While Not EOF(22) Input(22, inputline) If inputline = qrdoktype Then Me.IndexData.Rows(i).Item("partnernr") = qrpers PersUpdate = " / Person aus QRCode verwendet" End If End While FileClose(22) End If End If PrintOut("Applikation: SP - Aus XML - partnernr: " + bpnr + " - edk_doktyp: " + doktypnr + " - qrcode: " + qrcode) PrintOut("Vor AVQ") AvqSST.Prepare(bpnr, doktypnr, qrcode, sendEDK, sendAVQ) PrintOut("Nach AVQ") If AvqSST.hasErrors = True Then PrintOut("AVA hat Fehler") End If If bpnr = "" Then '20170303 - QRCode-Analyse If qrpers <> "" And PersUpdate <> "" Then Me.IndexData.Rows(i).Item("partnernr") = qrpers Else Me.IndexData.Rows(i).Item(1) = AvqSST.BPNr End If End If PrintOut("Applikation: SP - Aus AVQ-SST - ind-partnernr: " + bpnr + " - avq-partnernr: " + AvqSST.BPNr + " - edk_doktyp: " + AvqSST.edkDokNr) ' + " - Errors: " + AvqSST.hasErrors) Save_ImportDaten(i) If AvqSST.DeliverToEDK = True Then Checkdata(True, i, PersUpdate) Else Journal.Insert_Journal("", "", "", "", "", "Applikation: SP - Dokument soll nicht in Edoka importiert werden. BP-Nr: " + AvqSST.BPNr, "", "") End If '20201114 Prüfung Übersteuerung AVQ-Send 'gaga Dim uavq As String If AvqSST.edkDokNr Is Nothing Then uavq = "EDKB08" Else uavq = AvqSST.edkDokNr.ToString End If If AvqSST.DeliverToAVQ = True And Uebersteuerung_AVQSend(uavq) = False Then If AvqSST.hasErrors = False Then AvqSST.SendData() Else Journal.Insert_Journal("", "", "", "", "", "Applikation: SP - konnte nicht korrekt an Avaloq gesendet werden.", "", "") End If Else Journal.Insert_Journal("", "", "", "", "", "Applikation: SP - Dokument-Daten sollen nicht an Avaloq gesendet werden.", "", "") End If Next 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 Public Function Uebersteuerung_AVQSend(ByVal doktypnr As String) As Boolean '20201113 Prüfung Übersteuerung AVQ-Send Dim uebersteuern As Boolean = False 'PrintOut(DivFnkt.ApplicationPath + "Uebersteuerung_AVQSend.txt") Dim reader As StreamReader = My.Computer.FileSystem.OpenTextFileReader(DivFnkt.ApplicationPath + "Uebersteuerung_AVQSend.txt") Try Dim iLine As String Do iLine = reader.ReadLine 'PrintOut(iLine) If iLine = doktypnr Then uebersteuern = True 'PrintOut("After_Read") Loop Until iLine Is Nothing Catch ex As Exception Journal.Insert_Journal("", "", "", "", "", "Prüfung auf Uebersteuerung_AVQ-Send fehlerhaft" + ex.Message, "", "") Finally reader.Close() End Try If uebersteuern Then PrintOut("Übersteuerung AVQ-Send DokTyp-Nr: " + doktypnr.ToString) Journal.Insert_Journal("", "", "", "", "", "Uebersteuerung_AVQ-Send: " + doktypnr.ToString, "", "") End If Return uebersteuern 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" Public Sub IntSleep(Seconds As Double) Dim sleeptime As DateTime sleeptime = DateAdd(DateInterval.Second, Seconds, Now) While Now < sleeptime Thread.Sleep(10) End While End Sub '''Prüft die Indexdaten und löst ggf. den Import des Dokumentes '''aus. '''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. '''True=Dokument importieren False=Dokument nicht '''importieren (nur plausibilisieren) '''Aktuelle Datarow der Tabelle Indexdata '''True=Verarbeitung i.O. False=Verarbeitung fehlerhaft '''Stefan Hutter Private Function Checkdata(ByVal DokImport As Boolean, ByVal datarow As Integer, Optional PersUpdate As String = "") As Boolean Globals.BLScan = False Globals.NoIndexdata = False '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 If Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) And Globals.BLScan = True Then 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 scandokumentid As String = Dokumentid + Now.ToFileTimeUtc.ToString blscan_verarbeiten(Dokumentid, scandokumentid, 0, datarow) Dim dok As New edokadb.clsDokument dok.cpMainConnectionProvider = conn_edoka dok.sDokumentid = Dokumentid dok.SelectOne() dok.bBl_scan = New SqlBoolean(CType(False, Boolean)) Try Try conn_edoka.OpenConnection() Catch End Try dok.Update() conn_edoka.CloseConnection(True) Catch ex As Exception End Try Else 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" + PersUpdate, Dokumentid, "") End If 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 IntSleep(0.5) End Function Private Function blscan_verarbeiten(ByVal dokumentid As String, ByVal scandokumentid As String, ByVal ersteller As Integer, 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_insert_blscan" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn_edoka.scoDBConnection scmCmdToExecute.Parameters.Add(New SqlParameter("@Dokumentid", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid)) scmCmdToExecute.Parameters.Add(New SqlParameter("@scandokumentid", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, scandokumentid)) scmCmdToExecute.Parameters.Add(New SqlParameter("@ersteller", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, ersteller)) scmCmdToExecute.Parameters.Add(New SqlParameter("@filename", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(datarow).Item(12))) scmCmdToExecute.Parameters.Add(New SqlParameter("@stapelnr", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(datarow).Item("STAPELKENNUNG"))) scmCmdToExecute.Parameters.Add(New SqlParameter("@nreintrag", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0)) Try conn_edoka.OpenConnection() scmCmdToExecute.ExecuteNonQuery() Dim nreintrag As Integer = scmCmdToExecute.Parameters("@nreintrag").Value DivFnkt.Save_blscan_To_DB(nreintrag, Params.Inputverzeichnis + Me.IndexData.Rows(datarow).Item(12)) Catch ex As Exception Fehler = 900 Journal.Insert_Journal(datarow, IndexData.Rows(datarow).Item(1), IndexData.Rows(datarow).Item(11), IndexData.Rows(datarow).Item(12), "-17", "Eintrag BL-Scan konnte nicht erstellt werden: " + ex.Message, dokumentid, "") Catch conn_edoka.CloseConnection(True) End Try End Function '''Importiert ein Dokument nach EDOKA '''Gültige Werte sind: ADD, UPD, REPL, DEL '''True = Import erfolgreich$EOL$ '''False = Import fehlgeschalgen 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 '''Prüfung der Partnerzuordnung '''Mit der Funktion wird abhängig vom angelieferten Wert die '''Partnerzuordungen zu einem bestehenden Partner in EDOKA überprüft. ''' '''Input Partnernummer '''Direkter Zugriff auf die Tabelle Partner mittels Partnernr ''' '''Input VV-Nr: '''Umformatierung der VV-Nr und Zugriff auf den VV-Bestand. Sofern die '''Partnernummer gefunden wird, diese in der Datentabelle nachführen ''' '''Input: Barcode-ID: '''Zugriff auf die Partnernummer über die Tabelle Dokument mit der '''geliefertenen EDOKA-BarcodeID ''' '''Input: KST: '''Zugriff über die Kostenstelle auf den EDOKA-Partner '''Aktuelle Datenzeile in der Tabelle Indexdata '''True=Partnerzuordnung i.O. '''False=Partnerzuordnung nicht i.O. '''Checkdata Private Function Check_Partnerzuordnung(ByVal datarow As Integer) As Boolean '20200426 Anpassung Vitruv Punkt in Partnernr If Globals.Herkunftsapplikation.Rows(0).Item(1) = "VITRUV" Or Globals.Herkunftsapplikation.Rows(0).Item(1) = "DIMENSIONS" Then Dim tmppnr As String tmppnr = Me.IndexData.Rows(datarow).Item(1).ToString If tmppnr.IndexOf(".") > -1 Then tmppnr = tmppnr.Replace(".", "") Me.IndexData.Rows(datarow).Item(1) = tmppnr End If End If '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 '20200526 - Korrektur Dokumentwerte Try If korr_coldindex(DokID) = False Then Fehler = 6 Journal.Insert_Journal(datarow, "", "", "", Fehler, "Dokument kann nicht importiert werden - keine Dokumentwerte: " + Me.IndexData.Rows(datarow).Item(3) + ".", "", "") Return False Else Journal.Insert_Journal(datarow, "", "", "", Fehler, "Dokumentwerte wurden hinzugefügt: " + Me.IndexData.Rows(datarow).Item(3) + ".", "", "") If Not Check_Dokumentwert(Me.IndexData.Rows(datarow).Item(3), datarow, DokID) Then Fehler = 60 Journal.Insert_Journal(datarow, "", "", "", Fehler, "Dokument kann nicht importiert werden - keine Dokumentwerte: " + Me.IndexData.Rows(datarow).Item(3) + ".", "", "") Return False End If End If Catch ex As Exception Fehler = 61 Journal.Insert_Journal(datarow, "", "", "", Fehler, "Fehler bei Prüfung der Dokumentwerte: " + Me.IndexData.Rows(datarow).Item(3) + ".", "", "") Return False End Try End If 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 'CANON: Prüfung auf wieder bearbeitete Dokumente - Indextyp - was ist 4, was ist 6 usw.`? Private Function Check_Dokumentwert(ByVal barcodenr As String, ByVal datarow As Integer, ByVal DOKUMENTID As String) As Boolean Globals.NoIndexdata = False 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" Globals.NoIndexdata = True Globals.BLScan = False If Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) Then Dim doc As New edokadb.clsDokument doc.cpMainConnectionProvider = Globals.conn_edoka doc.sDokumentid = New SqlString(CType(DOKUMENTID, String)) doc.SelectOne() If doc.bBl_scan = True Then Globals.BLScan = True Return True Else Return False End If End If 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 "" If Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) Then Dim doc As New edokadb.clsDokument doc.cpMainConnectionProvider = Globals.conn_edoka doc.sDokumentid = New SqlString(CType(DOKUMENTID, String)) doc.SelectOne() If doc.bBl_scan = True Then Globals.BLScan = True End If Return True End If Return True Case Else If Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) Then Dim doc As New edokadb.clsDokument doc.cpMainConnectionProvider = Globals.conn_edoka doc.sDokumentid = New SqlString(CType(DOKUMENTID, String)) doc.SelectOne() If doc.bBl_scan = True Then Globals.BLScan = True End If Return True End If 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 korr_coldindex(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_korrektur_insert_coldindex" 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)) Try conn_edoka.OpenConnection() scmCmdToExecute.ExecuteNonQuery() Return True Catch ex As Exception Return False 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 '''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 '''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. '''Aktuelle Datenzeile des Import-Programmes '''True = EDOKA-Partner eröffnet '''False = Daten zur Eröffnung des EDOKA-Partners sind '''unvollständig '''Stefan Hutter '''Checkdata 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 '''Prüft die dokumentspezifischen Werte und das Vorhandensein des '''physischen Dokumentes '''Die Verarbeitung prüft folgende Elemente im Bereich der angelieferten '''Dokumente: ''' ''' '''Gültiges Dokumentformant (DOC, XLS, TIF, PDF, '''JPG ''' '''Vorhandensein des Dokumentes im '''Importverzeichnis ''' '''Dokumenttyp '''Zeile in der Tabelle Indexdata '''True=Dokumentwerte i.O. '''False=Dokumentwerte nicht i.O. '''Stefan Hutter '''Checkdata 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 '''Notiz zu einem Dokument hinzufügen '''Fühgt dem aktuellen Dokument die Meldung als Betreff bzw. Notiz '''hinzu '''Aktuelle Dokumentid '''Meldung / Notiz 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" '''Auslesen der Daten "Herkunftsapplikation" und in der internen Variable '''Herkunftsapplikationen zwischenspeichern 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 '''Auslesen der Herkunftsapplikation anhand des Dokumenttyps '''Aktueller Datensatz aus den Indexdaten '''"" = Herkunftsapplikation nicht vorhanden$EOL$ '''"[Bezeichnung] = Herkunftsapplikation vorhanden '''Herkuftsapplikation_auslesen 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 scmCmdToExecute.Parameters.Add(New SqlParameter("@Dokumenttyp", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(i).Item("Dokumenttypnr"))) Catch scmCmdToExecute.Parameters.Add(New SqlParameter("@Dokumenttyp", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(i).Item(11))) End Try scmCmdToExecute.Parameters.Add(New SqlParameter("@InputAppl", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Me.IndexData.Rows(i).Item("Herkunftsapplikation"))) 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 '''Importiert ein Dokument nach EDOKA '''Mit dem Dokumentimport werden folgende Tabellenenträge erstellt: $EOL$ ''' ''' '''$EOL$ $EOL$ Tabelle '''$EOL$ Beschreibung ''' '''$EOL$ $EOL$ Dokument '''$EOL$ Dokumentbeschreibung ''' '''$EOL$ $EOL$ Dokumentstatus '''$EOL$ Statussequenz des Dokumentes. Dabei werden alle Status bis '''zum ersten archivierungs-relevanten Status gesetzt. $EOL$ ''' '''$EOL$ '''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. ''' '''$EOL$ $EOL$ Dokumentcoldindexwert '''$EOL$ Tabelle mit den COLD-relevanten '''Indexinformationen ''' '''$EOL$ $EOL$ Dokumentwerte '''$EOL$ Tabelle mit den individuellen '''Dokumentwerten ''' '''$EOL$ $EOL$ Notizen '''$EOL$ Notiz, dass das Dokument über die Import-Schnittstelle im '''EDOKA eingefügt wurde '''Aktuelle Zeile der Indexdatei '''True = Import erfolgreich $EOL$ '''False = Import fehlgeschalgen 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 '20200420' Globals.ImportPraefix = "EDKIMP" Globals.Fehlermeldung = "" Status_Bereit_Zur_Eingangsarchivierung = False 'Physisches Dokument in die Datenbank laden If Me.BarcodeImport = True Then 'Canon Globals.ImportPraefix = "EDKIMP" Globals.ImportPraefix_Canon_Nr = 0 '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 If Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) Then Get_Praefix(Dokumentid, datarow) Globals.CurrentTS = Now.ToFileTime Globals.CurrentTS = "" 'Globals.ImportPraefix = "CAN" Else Globals.CurrentTS = "" End If sdokid = Dokumentid + Globals.CurrentTS sdokid = sdokid.Replace("OFFEDK", Globals.ImportPraefix) 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 If Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) Then Me.Update_DokumentColdIndexwert(Dokumentid, 2, 11, Me.IndexData.Rows(datarow).Item("Stapelkennung")) Me.Update_DokumentColdIndexwert(Dokumentid, 2, 13, Me.IndexData.Rows(datarow).Item("ersteller")) Me.Update_DokumentColdIndexwert(Dokumentid, 2, 14, Me.IndexData.Rows(datarow).Item("ersteller")) 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, "") '20200508 - Keine Meldung mehr '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 If Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) Then Dim ms As New edokadb.clsMehrfachscann Dim dbkey As New edokadb.clsMyKey_Tabelle() Dim key As Long dbkey.cpMainConnectionProvider = conn_edoka key = dbkey.get_dbkey("mehrfachscann") ms.iNreintrag = New SqlInt32(CType(key, Int32)) ms.daMutationsdatum = New SqlDateTime(CType(Now, DateTime)) ms.sColddokumentid = New SqlString(CType(sdokid, String)) ms.sStapelnr = New SqlString(CType(Me.IndexData.Rows(datarow).Item("STAPELKENNUNG"), String)) ms.iStatus = New SqlInt32(CType(0, Int32)) ms.daStatusdatum = New SqlDateTime(CType(Now, DateTime)) ms.iMandantnr = New SqlInt32(CType(1, Int32)) ms.bAktiv = New SqlBoolean(CType(True, Boolean)) ms.daErstellt_am = New SqlDateTime(CType(Now, DateTime)) ms.daMutiert_am = New SqlDateTime(CType(Now, DateTime)) ms.iMutierer = New SqlInt32(CType(9999, Int32)) ms.sDokumentid = New SqlString(CType(Dokumentid, String)) ms.cpMainConnectionProvider = conn_edoka Try conn_edoka.OpenConnection() Catch ex As Exception End Try ms.Insert() conn_edoka.CloseConnection(True) '20200429 - Prüfung auf Null-Value If dd.bBl_scan.IsNull Then Return True End If If dd.bBl_scan.Value = True Then dd.bBldossier = New SqlBoolean(CType(True, Boolean)) Try conn_edoka.OpenConnection() Catch End Try dd.Update() Try conn_edoka.CloseConnection(True) Catch End Try End If End If 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() Dim hasqr As Boolean = False Try hasqr = Me.IndexData.Rows(0).Item("qrcode") <> "" Catch ex As Exception hasqr = False End Try If Globals.Herkunftsapplikation.Rows(0).Item(1) = "EDKB09" Then dokumenttyp.iDokumenttypnr = New SqlInt32(CType(IndexData.Rows(datarow).Item("Dokumenttypnr"), Int32)) ElseIf Globals.Herkunftsapplikation.Rows(0).Item(1) = "SP" Or (Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) And hasqr) Then If AvqSST.edkDokTypOvr = True Then dokumenttyp.iDokumenttypnr = New SqlInt32(CType(AvqSST.edkDokNr, Int32)) Else dokumenttyp.iDokumenttypnr = New SqlInt32(CType(Get_EDOKA_Dokumenttypnr(datarow), Int32)) End If 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" And UCase(Globals.Herkunftsapplikation.Rows(0).Item(1)) <> "EDKB09" 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 'Antworttalon mit QRCode '***************************************************************************************************************3 hasqr = False Try hasqr = Me.IndexData.Rows(0).Item("qrcode") <> "" Catch ex As Exception hasqr = False End Try If Globals.Herkunftsapplikation.Rows(0).Item(1) = "SP" Or (Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) And hasqr = True) Then 'If AvqSST.edkDokTypOvr = True Then 'dok.iDokumenttypnr = New SqlInt32(CType(AvqSST.edkDokNr, Int32)) 'DRO 03.11.14 'dokumenttyp.iDokumenttypnr = New SqlInt32(CType(AvqSST.edkDokNr, Int32)) 'dokumenttyp.cpMainConnectionProvider = conn_edoka 'dokumenttyp.SelectOne() 'dok.sBezeichnung = dokumenttyp.sBezeichnung.Value 'End If If AvqSST.edkDokTypOvr = False Then dok.sBezeichnung = AvqSST.edkDokBezeichnung End If End If If Globals.Herkunftsapplikation.Rows(0).Item(1) = "BILAOUT" Then dok.sBezeichnung = New SqlString(CType(IndexData.Rows(datarow).Item("Bezeichnung"), String)) End If '***************************************************************************************************************3 'VITRUV '***************************************************************************************************************3 If Globals.Herkunftsapplikation.Rows(0).Item(1) = "VITRUV" Or Globals.Herkunftsapplikation.Rows(0).Item(1) = "DIMENSIONS" Then Dim pref As String = "" If Globals.Herkunftsapplikation.Rows(0).Item(1) = "VITRUV" Then pref = " V" If Globals.Herkunftsapplikation.Rows(0).Item(1) = "DIMENSIONS" Then pref = " WD" Dim bez As String Try bez = dok.sBezeichnung.Value + pref + IndexData.Rows(datarow).Item("KATASTER").ToString + " " + IndexData.Rows(datarow).Item("Ort").ToString Catch bez = dok.sBezeichnung.Value + pref + IndexData.Rows(datarow).Item("Ort").ToString End Try dok.sBezeichnung = New SqlString(CType(bez, String)) End If '***************************************************************************************************************3 'LSV '***************************************************************************************************************3 If Globals.Herkunftsapplikation.Rows(0).Item(1) = "IRIS_FORMS_LSV" Then Dim lsvid As String = "" For i As Integer = 10 To IndexData.Columns.Count - 1 If Left(IndexData.Rows(datarow).Item(IndexData.Columns(i).ColumnName), 6) = "LSV-ID" Then lsvid = IndexData.Rows(datarow).Item(IndexData.Columns(i).ColumnName) If Len(lsvid) > 7 Then lsvid = Right(lsvid, Len(lsvid) - 7) End If Next Dim bez As String bez = dok.sBezeichnung.Value + " " + lsvid dok.sBezeichnung = New SqlString(CType(bez, String)) 'Status_Bereit_Zur_Eingangsarchivierung = dok.sBezeichnung.Value + IndexData.Rows(datarow).Item("Dokumentwert") End If '***************************************************************************************************************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 'Canon '***************************************************************************************************************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 Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) Then If Not Dokument_in_DB_Sichern(Globals.ImportPraefix + Right(Me.Dokumentid, 16) + Globals.CurrentTS, datarow, True) Then End If dok.bBereit_zur_archivierung = New SqlBoolean(CType(False, Boolean)) insert_fa_bcimport(Dokumentid, datarow, Me.IndexData.Rows(datarow).Item(13)) Else If Not Dokument_in_DB_Sichern(Globals.ImportPraefix + 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 'Erneuerung DMS - keine Bedingte Retournieren mehr '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 Get_Praefix(ByVal dokumentid As String, 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_import_check_canonid" scmCmdToExecute.CommandType = CommandType.StoredProcedure scmCmdToExecute.Connection = conn_edoka.scoDBConnection Dim scanuser As String = "" Try scanuser = Me.IndexData.Rows(datarow).Item("ersteller") Catch ex As Exception scanuser = "" End Try Dim Stapelnr As String = "" Try Stapelnr = Me.IndexData.Rows(datarow).Item("Stapelkennung") Catch ex As Exception Stapelnr = "" End Try scmCmdToExecute.Parameters.Add(New SqlParameter("@dokumentid", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, dokumentid)) scmCmdToExecute.Parameters.Add(New SqlParameter("@canonid", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, "")) scmCmdToExecute.Parameters.Add(New SqlParameter("@scanuser", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, scanuser)) scmCmdToExecute.Parameters.Add(New SqlParameter("@stapelnr", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Stapelnr)) scmCmdToExecute.Parameters.Add(New SqlParameter("@wert", SqlDbType.VarChar, 225, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, "")) Try conn_edoka.OpenConnection() scmCmdToExecute.ExecuteNonQuery() conn_edoka.CloseConnection(True) Globals.ImportPraefix = scmCmdToExecute.Parameters("@wert").Value Catch ex As Exception Printout("clsCheckandImport.dbo.sp_import_check_canonid: " + ex.Message, EventLogEntryType.Error) Finally scmCmdToExecute.Dispose() sdaAdapter.Dispose() dtToReturn.Dispose() End Try 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 Dim canonid As String = "" If Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) Then canonid = Globals.ImportPraefix + Right(dokumentid, 16) + Globals.CurrentTS End If 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)) scmCmdToExecute.Parameters.Add(New SqlParameter("@canonid", SqlDbType.VarChar, 225, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, canonid)) 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 '''FA-Nummer 1-3 in EDOKA ergänzen '''Setzt für die Fremdanwendung die Felder ''' ''' '''Feld '''Beschreibung ''' '''FANummer1 '''Bezeichnung der Applikatoin ''' '''FANummer2 '''Dokumentname ''' '''FANummer3 '''Geschäftsfallnummer '''Aktuelle Zeile der Indexdatei 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 '''FA-Nummer 3 in EDOKA ergänzen '''Setzt für die Fremdanwendung die Felder ''' ''' '''Feld '''Beschreibung ''' '''FANummer3 '''Geschäftsfallnummer '''Aktuelle Zeile der Indexdatei 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 '''Löst das Importieren des Original-Dokumentes in die Datenbank '''aus '''Die Methode löst das Importieren des Origianldokumentes in die '''EDOKA-Datenbank aus '''EDOKA-DokumentID '''Aktuelle Zeile der Indexdaten '''True=Improt erfolgreich, False=Import fehlgeschlagen '''clsDivFnkt.Save_To_DB(System.String, '''System.String) 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 '''EDOKA-Dokumenttypnr auslesen '''Liest anhand des Fremdanwendungs-Dokumenttyps den EDOKA-Dokumenttyp '''aus. '''Aktuelle Datenzeile der Indexdaten '''Dokumenttypnr 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" '''Auslesen von Coldschema und -Folder '''Dokumenttypnr des aktuellen Dokumentes '''Datatable mit den COLD-Werten 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 '''Coldindex zum erstellen Dokument erstellen und speichern '''Standard 1 '''Dokumentid des aktuellen Dokumentes '''Datatable 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 '''Dokument Cold Indexwert anpassen '''Führt einen Wert in der Tabelle Dokumentcoldindexwert nach '''DokumentID des aktuellend Dokumentes '''1 für Ausgangsarchivierung '''2 für Ausgangsarchivierung '''Nummer des Indexfeldes '''Wert 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 '''Edoka-spezifische Dokumentwerte nachführen '''Führt folgende Daten in den Dokumentwerten hinzu '''- Herkunftsapplikation '''- Archivreferenz '''- Listen-Empfänger MA/KST/NL '''- Individuelle Dokumentwerte der Fremdanwendung '''Aktuelle Zeile der Indexdaten Private Function Insert_Dokumentwerte(ByVal datarow As Integer) As Boolean Dim Startindex_Dokumentwerte As Integer = 26 'Verfügungsrechte If Globals.Herkunftsapplikation.Rows(0).Item(1) = "UVM" Then Insert_Dokumentwerte_UVM(datarow) Exit Function End If '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 If UCase(Globals.Herkunftsapplikation.Rows(0).Item(1)) = "INTRANET" Or UCase(Globals.Herkunftsapplikation.Rows(0).Item(1)) = "IRIS_FORMS_LSV" Or UCase(Globals.Herkunftsapplikation.Rows(0).Item(1)) = "DIMENSIONS" Then Startindex_Dokumentwerte = 25 Else Dokumentwert_Sichern("Empfänger NL;" + Me.IndexData.Rows(datarow).Item(25), -90004) End If End If End If If Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) Then Me.Update_DokumentColdIndexwert(Dokumentid, 2, 11, Me.IndexData.Rows(datarow).Item("Stapelkennung")) Me.Update_DokumentColdIndexwert(Dokumentid, 2, 13, Me.IndexData.Rows(datarow).Item("ersteller")) Me.Update_DokumentColdIndexwert(Dokumentid, 2, 14, Me.IndexData.Rows(datarow).Item("ersteller")) ' Me.Update_DokumentColdIndexwert(Dokumentid, 1, 11, Me.IndexData.Rows(datarow).Item("Stapelkennung")) ' Me.Update_DokumentColdIndexwert(Dokumentid, 1, 13, Me.IndexData.Rows(datarow).Item("ersteller")) ' Me.Update_DokumentColdIndexwert(Dokumentid, 1, 14, Me.IndexData.Rows(datarow).Item("ersteller")) End If 'Dokumentwerte Dim i As Integer For i = Startindex_Dokumentwerte 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 ' Dokumentwerte für Verfügungsrechte Private Function Insert_Dokumentwerte_UVM(ByVal datarow As Integer) As Boolean 'Verfügungsrechte Dokumentwert_Sichern("Applikation;" + Globals.Herkunftsapplikation.Rows(0).Item(1), -90000) 'Archivreferenz If Me.IndexData.Rows(datarow).Item(24) <> "" Then If Not IsNumeric(Me.IndexData.Rows(datarow).Item(24)) Then Dokumentwert_Sichern("Archivref.;" + Me.IndexData.Rows(datarow).Item(24), -90001) Else Me.Update_DokumentColdIndexwert(Dokumentid, 1, 11, Me.IndexData.Rows(datarow).Item(24)) End If End If 'Person-Nr-Kunde If Me.IndexData.Rows(datarow).Item(21) <> "" Then Dokumentwert_Sichern("Person_Nr_Kunde;" + Me.IndexData.Rows(datarow).Item(21), -90005) End If 'Person-Name_Kunde If Me.IndexData.Rows(datarow).Item(22) <> "" Then Dokumentwert_Sichern("Person_Name_Kunde;" + Me.IndexData.Rows(datarow).Item(22), -90006) End If 'AVQ_AUTO_EXTL_REF If Me.IndexData.Rows(datarow).Item(24) <> "" Then Dokumentwert_Sichern("AVQ_AUTH_EXTL_REF;" + Me.IndexData.Rows(datarow).Item(23), -90007) End If 'ListEmpfaengerMA If Me.IndexData.Rows(datarow).Item(26) <> "" Then Dokumentwert_Sichern("Empfänger MA;" + Me.IndexData.Rows(datarow).Item(26), -90002) End If 'ListEmpfaengerKST If Me.IndexData.Rows(datarow).Item(27) <> "" Then Dokumentwert_Sichern("Empfänger KST;" + Me.IndexData.Rows(datarow).Item(27), -90003) End If 'ListEmpfaengerNL If Me.IndexData.Rows(datarow).Item(28) <> "" Then Dokumentwert_Sichern("Empfänger NL;" + Me.IndexData.Rows(datarow).Item(28), -90004) End If 'Dokumentwerte Dim i As Integer For i = 29 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, -90007 - (i - 28)) Else Dokumentwert_Sichern(Me.IndexData.Rows(datarow).Item(i), -90007 - (i - 28)) End If End If Catch End Try Next End Function '''Edoka-spezifischer Dokumentwert auf der Datenbank sichern '''Inhalt '''Feldnummer 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" '''Erstellen der Dokumentstatus und eintragen der entsprechenden '''Statushistory-Einträge '''Aktuelle Zeile der Indexdaten '''Status, welcher im Dokument unter "Statusnr" nachgeführt '''wird '''edkb08.clsCheckandImport.Create_Dokumentstatus(System.Int32) '''edkb08.clsCheckandImport.Get_Dokumentstatus(System.Int32) '''edkb08.clsCheckandImport.insert_history_status(System.Int32, '''System.String, System.Int32, System.DateTime) 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) 'DRO 27.01.2015 Dim hasqr As Boolean = False Try hasqr = Me.IndexData.Rows(0).Item("qrcode") <> "" Catch ex As Exception hasqr = False End Try If Globals.Herkunftsapplikation.Rows(0).Item(1) = "SP" Or (Globals.Canon_Herkunft(Globals.Herkunftsapplikation.Rows(0).Item(1)) And hasqr = True) Then Create_Dokumentstatus_Uebersteuerung(datarow, BLKunde) End If 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 '''Dokumentstatus für das zu erstellende Dokument generieren '''Erstellt die Dokumentstatus gem. Statussequenz des '''Dokumenttyps '''Aktuelle Zeile der Indexdaten '''Datatable 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 'DRO 27.01.2014 hinzugefügt Private Function Create_Dokumentstatus_Uebersteuerung(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_dokument_status_import_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)) scmCmdToExecute.Parameters.Add(New SqlParameter("@statustyp", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 11)) scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, 9998)) sdaAdapter.Fill(dtToReturn) Return dtToReturn Catch ex As Exception Throw New Exception("sp_dokument_status_import_erstellen::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex) Finally conn_edoka.CloseConnection(True) scmCmdToExecute.Dispose() sdaAdapter.Dispose() End Try End Function '''Alle Dokumentstatus eines Dokumentes lesen '''Diese Funktion liest alle Dokumentstatus eines Dokumentes '''Aktuelle Ziele der Indexdaten '''Datatable mit den Dokumentstatus 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 '''Auslesen der EDOKA-Mitarbeiternummer aufgrund der gelieferten '''TG-Nummer '''Aktuelle Import-Datenzeile '''Mitarbeiternr des EDOKA-Mitarbeiters entweder anhand der TGNummer oder '''die in der Tabelle FA_Appl definierte Mitarbeiternr, sofern die gelieferte '''TGNummer "" oder nicht als Mitarbeiter in EDOKA vorhanden '''ist 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 '''Statushistory nachführen '''Diese Funktion fügt für einen Dokumentstatus eines bestimmten Dokuments '''die Statushistory nach '''Nummer des Status '''EDOKA-DokumentID '''Verantwortlicher Mitarbeiter '''Timestamp 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" '''Löschung des Dokumentes, abhängig vom Übergabewert (Dokumentid oder '''Dokumentname) auslösen '''Abhängig vom Übergabeparameter Dokumentid (Indexfeld 23) oder '''Dateiname, wird das Löschen bzw. Aufheben des Dokumentes ausgelöst. '''Im Falle der Übergabe des Dateinamens, ist sicher gestellt, dass ein '''Dokument nur dann gelöscht wird, wenn der Dateiname eindeutig verwendet '''wurde. '''Aktuelle Zeile der Indexdaten '''True=Löschung durchgeführt '''False=Löschung nicht durchgeführt 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 '''Dokument löschen bzw. aufheben '''Als erstes wird der aktuelle Status des Dokumentes ausgelesen bzw. es '''wird überprüft, ob das zu löschende Dokumente den Status "Aufgehoben" '''in der Statussequenz hat. Beim Vorhandensein des Aufhebungsstatus wird das '''Dokument aufgehoben, ansonsten gelöscht resp. inaktiviert. '''DokumentID des zu löschenden Dokumentes '''Aktuelle Zeile der Indexdaten '''True=Löschung erfolgt '''False=Löschung nicht durchgeführt 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 '''Auselesen des letzten Status in der Seqeunz des zu löschenden '''Dokumentes '''Dokumentid des zu löschenden Dokumentes '''Status_Bezeichnungnr 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 '''Dokument aufheben '''Dokumentid des aufzuhebenden Dokumentes 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 '''SColdindex und Aufhebungsstatus des eines zu löschenden bzw. '''aufzuhebenden Dokumentes auslesen '''Sofern das Dokument aufgehoben wird, wird der Status '''"Aufgehoben" im Dokument nachgeführt, indem einerseits einen '''Statushistory-Eintrag erstellt und der aktuelle Dokumentstatus gesetzt '''wird. '''Dokumentid des zu löschenden / aufzuhebenden '''Dokumentes '''True=Dokument aufheben '''False=Dokument nicht aufheben '''True=Aufgehobenes Dokument reaktivieren '''False=Keine Dokumentreaktivierung '''Datentable mit den Dokumentstatus 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 '''AGI-COLD-Dokument-Status ändern '''Setzt den aktuellen Status der COLD-Dokumente auf den Wert im Parameter '''"neuerstatus" '''Datentabelle mit Cold-Index-Werten '''DokumentID '''Neuer Status der entsprechenden COLD-Dokumente 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 '''Tabelle COLD-Update mit Updates ergänzen '''DokumentID des EDOKA-Dokumentes '''DokumentID des COLD-Bildes '''1=Ausgangsarchiviertes Dokumente '''2=Eingangarchiviertes Dokumente '''Feldnr des Feldes im Cold-Index '''Neuer Wert 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" '''Dokumentwerte eines Dokumentes updaten '''Aktuelle Zeile der Indexdaten 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(9shu*tkb95123, 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 '''Prüfung, ob das Dokument bereits in AGI-COLD archiviert wurde '''Dokumentid des zu prüfenden Dokumentes 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 '''Prüfung des zu löschenden Dokumentes in der EDOKA-Datenbank '''1=Prüfung anhand einer EDOKA_Dokumentid '''2=Prüfung anhand des Dateinamens '''EDOKA_DokumentID oder Dateiname '''Aktuelle Zeile der Indexdaten '''True=Dokument gefunden und es kann gelöscht werden '''False=Dokument nicht gefunden bzw. es kann nicht gelöscht werden, da die '''Suche mittels Dateiname mehrere Treffer ergab 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("Dateiname"), FileMode.Open, FileAccess.Read) '20210709 - LSV '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