Imports System.Data Imports System.Data.SqlClient Imports System.Data.SqlTypes Imports System.IO Public Class clsImportData #Region "Deklarationen" Dim dsempfaenger As DataSet Dim Serienbriefnr As Integer Dim importdata As New DataSet() Dim sb As edokadb.clsEdex_sb_serienbrief Dim hasdata As Boolean = False #End Region #Region "öffentliche Methoden" Public Sub New(ByRef DsEmpfaenger As DataSet, ByVal Serienbriefnr As Integer, ByVal sbdata As edokadb.clsEdex_sb_serienbrief) Me.dsempfaenger = DsEmpfaenger Me.Serienbriefnr = Serienbriefnr Me.sb = sbdata create_importdata() End Sub Private Sub create_importdata() importdata.ReadXml(Globals.ApplicationPath + "edkb08struktur.xml") importdata.Tables(0).Rows.Clear() importdata.Tables(0).Columns.Add("BLKunde") importdata.Tables(0).Columns.Add("Dokumentidbdr") importdata.Tables(0).Columns.Add("Dokumentid") importdata.Tables(0).Columns.Add("Bezeichnung") End Sub Public Sub Create_Import_Data() Dim dv As DataRow Dim i As Integer For i = 0 To Me.dsempfaenger.Tables(0).Rows.Count - 1 Try dv = Me.dsempfaenger.Tables(0).Rows(i) If dv.Item("Status") = "4" And dv.Item("Dokument_Gedruckt") <> "2" Then dv.Item("Dokument_Gedruckt") = "2" 'dv.Item("Status") = 2 If dv.Item("partnernr") <> "" Then Write_Import_Files(dv) End If End If Catch ex1 As Exception End Try Next If hasdata = True Then importdata.WriteXml(Globals.Params.Pfad_EDKB08 + "SBImport_" + Format(Now, "yyyyMMddHHmmss") + ".ind") Me.save_empfaenger() End If End Sub Private Sub Write_Import_Files(ByRef dv As DataRow) Try Dim dt As New edokadb.clsDokumenttyp() dt.cpMainConnectionProvider = Globals.conn_edoka dt.iDokumenttypnr = New SqlInt32(CType(sb.iDokumenttypnr.Value, Int32)) dt.SelectOne() If dt.bNurnative.Value = True Then dt.Dispose() Exit Sub End If dt.Dispose() Catch ex As Exception Exit Sub End Try Dim sourcedok As String = Globals.Params.Pfad_Serienbrief_Daten + Me.Serienbriefnr.ToString + "\" + dv.Item("Dokumentid") + ".pdf" Dim destdok As String = Globals.Params.Pfad_EDKB08 + dv.Item("Dokumentid") + ".pdf" If IO.File.Exists(sourcedok) Then IO.File.Copy(sourcedok, destdok, True) Dim dr As DataRow Dim i As Integer = 0 dr = importdata.Tables(0).NewRow Try While i < 40 dr.Item(i) = "" i = i + 1 End While Catch End Try dr.Item("Funktion") = "ADD" dr.Item("PARTNERNR") = dv.Item("Partnernr") dr.Item("Dokumenttypnr") = sb.iDokumenttypnr.Value dr.Item("dateiname") = dv.Item("Dokumentid") + ".pdf" dr.Item("Dateiformat") = "PDF" dr.Item("Archivdatum") = Now.ToString dr.Item("Ersteller") = get_tgnummer(dv.Item("Ersteller")) dr.Item("HERKUNFTSAPPLIKATION") = "EDKB09" dr.Item("Dokumentid") = dv.Item("Dokumentid") dr.Item("Dokumentidbdr") = dv.Item("Dokumentidbdr") 'Rel. 4.1 - Nur als BL-Kunde kennzeichnen, sofern so im Serienbrief festgehalten If sb.iBldossier.Value.ToString = "1" Then dr.Item("BLKunde") = dv.Item("BLKUNDE") Else If dv.Item("BLKunde") = "1" Then insert_sb_bl_physiche_ablage_journal(Me.Serienbriefnr, sb.sBezeichnung.Value.ToString, get_tgnummer(dv.Item("Ersteller")), dv.Item("Partnernr"), dv.Item("DokumentID")) End If dr.Item("BLKunde") = "0" End If dr.Item("Bezeichnung") = sb.sBezeichnung.Value dr.Item("DOKUMENTWERT2") = "Serienbriefnr;" + Me.Serienbriefnr.ToString importdata.Tables(0).Rows.Add(dr) hasdata = True End If End Sub Private Sub insert_sb_bl_physiche_ablage_journal(ByVal sbnr As Integer, ByVal bezeichnung As String, ByVal tgnummer As String, ByVal partnernr As Integer, ByVal dokumentid As String) Try Dim j As New edokadb.clsSerienbrief_BL_Physiche_Ablage j.cpMainConnectionProvider = Globals.conn_journale j.iSerienbriefnr = New SqlInt32(CType(sbnr, Int32)) j.sBezeichnung = New SqlString(CType(bezeichnung, String)) j.sTGNumer_Ersteller = New SqlString(CType(tgnummer, String)) j.iPartnernr = New SqlInt32(CType(partnernr, Int32)) j.sDokumentid = New SqlString(CType(dokumentid, String)) j.daTimestampe = New SqlDateTime(CType(Now, DateTime)) Globals.conn_journale.OpenConnection() j.Insert() Globals.conn_journale.CloseConnection(True) j.Dispose() Catch ex As Exception 'MsgBox(ex.Message) End Try End Sub Private Function get_tgnummer(ByVal mitarbeiternr As Integer) As String Dim x As New edokadb.clsMitarbeiter Try x.cpMainConnectionProvider = Globals.conn_edoka x.iMitarbeiternr = New SqlInt32(CType(mitarbeiternr, Int32)) x.SelectOne() Return x.sTgnummer.Value Catch Return mitarbeiternr.ToString Finally x.Dispose() End Try End Function Private Function save_empfaenger() As Boolean Try Dim dokumentname As String = Globals.Params.Pfad_Serienbrief_Daten + Me.Serienbriefnr.ToString + "_empfaenger.xml" Me.dsempfaenger.WriteXml(dokumentname) Dim Connection As New SqlConnection Dim DA As New SqlDataAdapter("select * from edex_sb_empfaenger where serienbriefnr=" + Str(Me.Serienbriefnr), Connection) Dim cb As SqlCommandBuilder = New SqlCommandBuilder(DA) Dim ds As New DataSet Dim fs As New FileStream(dokumentname, FileMode.Open, FileAccess.Read) Dim mydata(fs.Length) As Byte Try fs.Read(mydata, 0, fs.Length) fs.Close() Connection.ConnectionString = Globals.sConnectionString_edoka Connection.Open() DA.Fill(ds, "empf") Dim myRow As DataRow If ds.Tables(0).Rows.Count = 0 Then 'Neue Serienbrief_Empfaenger speichern myRow = ds.Tables(0).NewRow myRow.Item(1) = Me.Serienbriefnr myRow.Item(2) = mydata ds.Tables(0).Rows.Add(myRow) DA.Update(ds, "empf") Else ' Bestehende Empfängerliste überschreiben myRow = ds.Tables(0).Rows(0) myRow.Item(2) = mydata DA.Update(ds, "empf") End If Catch ex As Exception Return False End Try fs = Nothing cb = Nothing ds = Nothing DA = Nothing Connection.Close() Connection = Nothing Return True Catch EX As Exception Return False End Try End Function #End Region End Class