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.

411 lines
16 KiB

Imports System.IO
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Public Class frmDruckabschluss
Inherits System.Windows.Forms.Form
#Region " Vom Windows Form Designer generierter Code "
Public Sub New()
MyBase.New()
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
InitializeComponent()
' Initialisierungen nach dem Aufruf InitializeComponent() hinzufügen
End Sub
' Die Form überschreibt den Löschvorgang der Basisklasse, um Komponenten zu bereinigen.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
' Für Windows Form-Designer erforderlich
Private components As System.ComponentModel.IContainer
'HINWEIS: Die folgende Prozedur ist für den Windows Form-Designer erforderlich
'Sie kann mit dem Windows Form-Designer modifiziert werden.
'Verwenden Sie nicht den Code-Editor zur Bearbeitung.
Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
Friend WithEvents rbkeineaktion As System.Windows.Forms.RadioButton
Friend WithEvents rbweiteregenerieren As System.Windows.Forms.RadioButton
Friend WithEvents rbgeneriertedokumentebestätigen As System.Windows.Forms.RadioButton
Friend WithEvents rbabschliessen As System.Windows.Forms.RadioButton
Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents Abbruch As System.Windows.Forms.Button
Friend WithEvents txtbemerkung As System.Windows.Forms.TextBox
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents StatusBar1 As System.Windows.Forms.StatusBar
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.GroupBox1 = New System.Windows.Forms.GroupBox()
Me.rbabschliessen = New System.Windows.Forms.RadioButton()
Me.rbgeneriertedokumentebestätigen = New System.Windows.Forms.RadioButton()
Me.rbweiteregenerieren = New System.Windows.Forms.RadioButton()
Me.rbkeineaktion = New System.Windows.Forms.RadioButton()
Me.GroupBox2 = New System.Windows.Forms.GroupBox()
Me.txtbemerkung = New System.Windows.Forms.TextBox()
Me.Button1 = New System.Windows.Forms.Button()
Me.Abbruch = New System.Windows.Forms.Button()
Me.Label1 = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.StatusBar1 = New System.Windows.Forms.StatusBar()
Me.GroupBox1.SuspendLayout()
Me.GroupBox2.SuspendLayout()
Me.SuspendLayout()
'
'GroupBox1
'
Me.GroupBox1.Controls.AddRange(New System.Windows.Forms.Control() {Me.rbabschliessen, Me.rbgeneriertedokumentebestätigen, Me.rbweiteregenerieren, Me.rbkeineaktion})
Me.GroupBox1.Location = New System.Drawing.Point(8, 40)
Me.GroupBox1.Name = "GroupBox1"
Me.GroupBox1.Size = New System.Drawing.Size(320, 128)
Me.GroupBox1.TabIndex = 0
Me.GroupBox1.TabStop = False
Me.GroupBox1.Text = "Optionen"
'
'rbabschliessen
'
Me.rbabschliessen.Location = New System.Drawing.Point(16, 96)
Me.rbabschliessen.Name = "rbabschliessen"
Me.rbabschliessen.Size = New System.Drawing.Size(200, 24)
Me.rbabschliessen.TabIndex = 3
Me.rbabschliessen.Text = "Serienbrief abschliessen"
'
'rbgeneriertedokumentebestätigen
'
Me.rbgeneriertedokumentebestätigen.Location = New System.Drawing.Point(16, 72)
Me.rbgeneriertedokumentebestätigen.Name = "rbgeneriertedokumentebestätigen"
Me.rbgeneriertedokumentebestätigen.Size = New System.Drawing.Size(200, 24)
Me.rbgeneriertedokumentebestätigen.TabIndex = 2
Me.rbgeneriertedokumentebestätigen.Text = "Erstellte Dokumente bestätigen"
'
'rbweiteregenerieren
'
Me.rbweiteregenerieren.Location = New System.Drawing.Point(16, 48)
Me.rbweiteregenerieren.Name = "rbweiteregenerieren"
Me.rbweiteregenerieren.Size = New System.Drawing.Size(240, 24)
Me.rbweiteregenerieren.TabIndex = 1
Me.rbweiteregenerieren.Text = "Weitere pendente Dokumente generieren"
'
'rbkeineaktion
'
Me.rbkeineaktion.Location = New System.Drawing.Point(16, 24)
Me.rbkeineaktion.Name = "rbkeineaktion"
Me.rbkeineaktion.Size = New System.Drawing.Size(152, 24)
Me.rbkeineaktion.TabIndex = 0
Me.rbkeineaktion.Text = "keine Aktion durchführen"
'
'GroupBox2
'
Me.GroupBox2.Controls.AddRange(New System.Windows.Forms.Control() {Me.txtbemerkung})
Me.GroupBox2.Location = New System.Drawing.Point(8, 176)
Me.GroupBox2.Name = "GroupBox2"
Me.GroupBox2.Size = New System.Drawing.Size(320, 100)
Me.GroupBox2.TabIndex = 1
Me.GroupBox2.TabStop = False
Me.GroupBox2.Text = "Beschreibung"
'
'txtbemerkung
'
Me.txtbemerkung.BackColor = System.Drawing.SystemColors.ActiveBorder
Me.txtbemerkung.Location = New System.Drawing.Point(8, 16)
Me.txtbemerkung.Multiline = True
Me.txtbemerkung.Name = "txtbemerkung"
Me.txtbemerkung.Size = New System.Drawing.Size(304, 72)
Me.txtbemerkung.TabIndex = 0
Me.txtbemerkung.Text = ""
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(248, 288)
Me.Button1.Name = "Button1"
Me.Button1.TabIndex = 2
Me.Button1.Text = "OK"
'
'Abbruch
'
Me.Abbruch.Location = New System.Drawing.Point(8, 288)
Me.Abbruch.Name = "Abbruch"
Me.Abbruch.TabIndex = 3
Me.Abbruch.Text = "Abbruch"
'
'Label1
'
Me.Label1.Location = New System.Drawing.Point(16, 8)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(64, 23)
Me.Label1.TabIndex = 4
Me.Label1.Text = "Serienbrief:"
'
'Label2
'
Me.Label2.Location = New System.Drawing.Point(80, 8)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(248, 23)
Me.Label2.TabIndex = 5
Me.Label2.Text = "Label2"
'
'StatusBar1
'
Me.StatusBar1.Location = New System.Drawing.Point(0, 327)
Me.StatusBar1.Name = "StatusBar1"
Me.StatusBar1.Size = New System.Drawing.Size(336, 22)
Me.StatusBar1.TabIndex = 6
'
'frmDruckabschluss
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(336, 349)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.StatusBar1, Me.Label2, Me.Label1, Me.Abbruch, Me.Button1, Me.GroupBox2, Me.GroupBox1})
Me.Name = "frmDruckabschluss"
Me.Text = "Serienbrief-Verarbeitung:"
Me.GroupBox1.ResumeLayout(False)
Me.GroupBox2.ResumeLayout(False)
Me.ResumeLayout(False)
End Sub
#End Region
Dim serienbriefnr As Integer
Dim dsempfaenger As New DataSet()
Dim progress As New ucProgress()
Dim m_datasaved As Boolean
Dim serienbrief As New edokadb.clsEdex_sb_serienbrief()
Property datasaved() As Boolean
Get
Return m_datasaved
End Get
Set(ByVal Value As Boolean)
m_datasaved = Value
End Set
End Property
Public Sub New(ByVal serienbriefnr As Integer)
MyBase.New()
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
InitializeComponent()
' Initialisierungen nach dem Aufruf InitializeComponent() hinzufügen
Me.serienbriefnr = serienbriefnr
End Sub
Private Sub frmDruckabschluss_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
serienbrief.cpMainConnectionProvider = Globals.conn
serienbrief.iSerienbriefnr = New SqlInt32(CType(Me.serienbriefnr, Int32))
serienbrief.SelectOne()
Label2.Text = serienbrief.sBezeichnung.Value
serienbrief.Dispose()
Me.StatusBar1.Controls.Add(progress)
Me.SetProgress(0, "Empfänger prüfen", False)
If Load_empfaenger() = True Then
check_data()
End If
Me.SetProgress(0, "", True)
Me.rbkeineaktion.Checked = True
End Sub
Private Function Load_empfaenger() As Boolean
Try
Dim dokumentname = Globals.Applikationsdaten.Rows(0).Item("pfad_temporaer_dokumente") + Me.serienbriefnr.ToString + "_empfaenger.xml"
Me.dsempfaenger.Tables.Clear()
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()
Try
Connection.ConnectionString = Globals.sConnectionString
Connection.Open()
DA.Fill(ds, "empf")
Dim myRow As DataRow
If ds.Tables(0).Rows.Count = 0 Then
MyMsg.show_standardmessage(701, MsgBoxStyle.Critical)
Return False
Else
myRow = ds.Tables(0).Rows(0)
Dim MyData() As Byte
MyData = myRow.Item(2)
Dim K As Long
K = UBound(MyData)
Dim fs As New FileStream(dokumentname, FileMode.OpenOrCreate, FileAccess.Write)
fs.Write(MyData, 0, K)
fs.Close()
fs = Nothing
Me.dsempfaenger.ReadXml(dokumentname)
End If
Catch ex As Exception
MyMsg.show_standardmessage(701, MsgBoxStyle.Critical)
' MsgBox(ex.Message)
Return False
End Try
cb = Nothing
ds = Nothing
DA = Nothing
Connection.Close()
Connection = Nothing
Return True
Catch EX As Exception
MyMsg.show_standardmessage(701, MsgBoxStyle.Critical)
Return False
End Try
End Function
Private Function save_empfaenger() As Boolean
Try
Dim dokumentname = Globals.Applikationsdaten.Rows(0).Item("pfad_temporaer_dokumente") + 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
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
MyMsg.show_standardmessage(700, MsgBoxStyle.Critical)
Return False
End Try
fs = Nothing
cb = Nothing
ds = Nothing
DA = Nothing
Connection.Close()
Connection = Nothing
Return True
Catch EX As Exception
MyMsg.show_standardmessage(700, MsgBoxStyle.Critical)
Return False
End Try
End Function
Private Function check_data()
Me.rbabschliessen.Enabled = False
Me.rbgeneriertedokumentebestätigen.Enabled = False
Me.rbkeineaktion.Enabled = True
Me.rbweiteregenerieren.Enabled = False
If Me.serienbrief.iAusgeloest.Value <> 0 Then Me.rbweiteregenerieren.Enabled = True
If Me.serienbrief.iErstellt.Value <> 0 Or Me.serienbrief.iGedruckt.Value <> 0 Then Me.rbgeneriertedokumentebestätigen.Enabled = True
If Me.serienbrief.iFehlerhaft.Value = 0 And Me.serienbrief.iAusgeloest.Value = 0 And Me.serienbrief.iInBearbeitung.Value = 0 Then
Me.rbabschliessen.Enabled = True
End If
End Function
Private Sub SetProgress(ByVal wert As Integer, ByVal txt As String, ByVal hidedialog As Boolean)
If hidedialog Then
progress.Hide()
Exit Sub
End If
progress.Visible = True
If wert + 1 > 100 Then wert = 99
progress.Bar1.Value = wert + 1
progress.info.Text = txt
progress.Refresh()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Me.rbkeineaktion.Checked Then
Me.datasaved = False
Me.Close()
End If
If Me.rbgeneriertedokumentebestätigen.Checked Then
Dokumente_bestaetigen()
Me.save_empfaenger()
Me.datasaved = True
Me.Close()
End If
If Me.rbabschliessen.Checked Then
Dokumente_bestaetigen()
Dim serienbrief As New edokadb.clsEdex_sb_serienbrief()
serienbrief.cpMainConnectionProvider = Globals.conn
serienbrief.iSerienbriefnr = New SqlInt32(CType(Me.serienbriefnr, Int32))
serienbrief.SelectOne()
serienbrief.iStatus = New SqlInt32(CType(1, Int32))
Globals.conn.OpenConnection()
serienbrief.Update()
Globals.conn.CloseConnection(True)
serienbrief.Dispose()
Me.save_empfaenger()
Me.datasaved = True
Me.Close()
End If
If Me.rbweiteregenerieren.Checked Then
Dim serienbrief As New edokadb.clsEdex_sb_serienbrief()
serienbrief.cpMainConnectionProvider = Globals.conn
serienbrief.iSerienbriefnr = New SqlInt32(CType(Me.serienbriefnr, Int32))
serienbrief.SelectOne()
serienbrief.iStatus = New SqlInt32(CType(-1, Int32))
Globals.conn.OpenConnection()
serienbrief.Update()
Globals.conn.CloseConnection(True)
serienbrief.Dispose()
Me.save_empfaenger()
Me.Close()
Me.datasaved = True
End If
End Sub
Private Sub Dokumente_bestaetigen()
Me.Cursor = Cursors.WaitCursor
Application.DoEvents()
Dim pwert As Integer
Dim i As Integer
For i = 0 To Me.dsempfaenger.Tables(0).Rows.Count - 1
Try
pwert = 100 / Me.dsempfaenger.Tables(0).Rows.Count * i
Catch
pwert = 0
End Try
Me.SetProgress(pwert, "Dokumente bestätigen", False)
Try
If Me.dsempfaenger.Tables(0).Rows(i).Item("STATUS") = 2 Or Me.dsempfaenger.Tables(0).Rows(i).Item("STATUS") = 3 Then
Me.dsempfaenger.Tables(0).Rows(i).Item("Dokument_Gedruckt") = 1
Me.dsempfaenger.Tables(0).Rows(i).Item("STATUS") = 4
End If
Catch
End Try
Next
Me.SetProgress(100, "", True)
Cursor = Cursors.Default
Application.DoEvents()
End Sub
Private Sub Abbruch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Abbruch.Click
Me.Close()
End Sub
End Class