You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

194 lines
7.7 KiB

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