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.

473 lines
20 KiB

Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports System.IO
Imports System.Threading 'Namespace for Thread class
Public Class frmDokumentAufbereitung
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 Label1 As System.Windows.Forms.Label
Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar
Friend WithEvents btnabbruch As System.Windows.Forms.Button
Friend WithEvents btnWeiter As System.Windows.Forms.Button
Friend WithEvents lblpartner As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents btnclose As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(frmDokumentAufbereitung))
Me.btnabbruch = New System.Windows.Forms.Button()
Me.Label1 = New System.Windows.Forms.Label()
Me.ProgressBar1 = New System.Windows.Forms.ProgressBar()
Me.btnWeiter = New System.Windows.Forms.Button()
Me.lblpartner = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.btnclose = New System.Windows.Forms.Button()
Me.SuspendLayout()
'
'btnabbruch
'
Me.btnabbruch.Location = New System.Drawing.Point(8, 104)
Me.btnabbruch.Name = "btnabbruch"
Me.btnabbruch.Size = New System.Drawing.Size(88, 32)
Me.btnabbruch.TabIndex = 0
Me.btnabbruch.Text = "Abbruch"
'
'Label1
'
Me.Label1.Location = New System.Drawing.Point(8, 32)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(352, 32)
Me.Label1.TabIndex = 1
Me.Label1.Text = "Die auszudruckenden Dokumente werden zusammengestellt und aufbereitet."
'
'ProgressBar1
'
Me.ProgressBar1.Location = New System.Drawing.Point(8, 64)
Me.ProgressBar1.Name = "ProgressBar1"
Me.ProgressBar1.Size = New System.Drawing.Size(352, 23)
Me.ProgressBar1.TabIndex = 2
'
'btnWeiter
'
Me.btnWeiter.Enabled = False
Me.btnWeiter.Location = New System.Drawing.Point(232, 104)
Me.btnWeiter.Name = "btnWeiter"
Me.btnWeiter.Size = New System.Drawing.Size(128, 32)
Me.btnWeiter.TabIndex = 3
Me.btnWeiter.Text = "Druckdialog anzeigen"
'
'lblpartner
'
Me.lblpartner.Location = New System.Drawing.Point(56, 8)
Me.lblpartner.Name = "lblpartner"
Me.lblpartner.Size = New System.Drawing.Size(336, 23)
Me.lblpartner.TabIndex = 5
'
'Label2
'
Me.Label2.Location = New System.Drawing.Point(8, 8)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(48, 23)
Me.Label2.TabIndex = 4
Me.Label2.Text = "Partner:"
'
'btnclose
'
Me.btnclose.Location = New System.Drawing.Point(8, 104)
Me.btnclose.Name = "btnclose"
Me.btnclose.Size = New System.Drawing.Size(88, 32)
Me.btnclose.TabIndex = 6
Me.btnclose.Text = "Schliessen"
Me.btnclose.Visible = False
'
'frmDokumentAufbereitung
'
Me.AutoScale = False
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(370, 141)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.btnclose, Me.lblpartner, Me.Label2, Me.btnWeiter, Me.ProgressBar1, Me.Label1, Me.btnabbruch})
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.MaximizeBox = False
Me.MaximumSize = New System.Drawing.Size(366, 166)
Me.MinimizeBox = False
Me.Name = "frmDokumentAufbereitung"
Me.Text = "Druckaufbereitung"
Me.ResumeLayout(False)
End Sub
#End Region
Dim DruckThread As New Thread(AddressOf Druckaufbereitung)
Dim ProgressThread As New Threading.Thread(AddressOf set_progress)
Dim M_Druchjobid As Integer
Dim alnr As Integer
Dim part As Integer
Public Sub New(ByVal druckjobid As Integer, ByVal part As Integer)
MyBase.New()
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
InitializeComponent()
Me.M_Druchjobid = druckjobid
Me.alnr = druckjobid
Me.part = part
' Initialisierungen nach dem Aufruf InitializeComponent() hinzufügen
End Sub
Private Sub tf_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.get_partner(alnr)
Me.Text = "Dokumentaufbereitung: " + Me.lblpartner.Text
Me.ProgressBar1.Value = 0
Me.btnWeiter.Text = "Drucken"
End Sub
Private Sub set_progress()
Try
Do While 1 = 1
Me.ProgressBar1.Value = Me.ProgressBar1.Value + 1
If Me.ProgressBar1.Value = 100 Then Me.ProgressBar1.Value = 0
ProgressThread.Sleep(100)
Loop
Catch
End Try
End Sub
Public Sub StartDruckaufbereituung()
ProgressThread.Start()
DruckThread.Start()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnabbruch.Click
Try
ProgressThread.Abort()
Catch
End Try
Try
DruckThread.Abort()
Catch
End Try
Close()
End Sub
Private Sub Druckaufbereitung()
Try
Dim remoteObj As EDKB07Verarbeitung.EDKB07Verarbeitung.IEDKB07
Dim Obj As Object
Obj = Activator.GetObject( _
GetType(EDKB07Verarbeitung.EDKB07Verarbeitung.IEDKB07), _
System.Configuration.ConfigurationSettings.AppSettings("RemoteObjUrl"))
remoteObj = CType(Obj, EDKB07Verarbeitung.EDKB07Verarbeitung.IEDKB07)
remoteObj.PrintJobF(Me.M_Druchjobid, Me.part)
Me.btnWeiter.Enabled = True
Me.ProgressBar1.Value = 100
Me.Refresh()
Application.DoEvents()
Me.Label1.Text = "Die EDOKA-Druckaufbereitung ist abgeschlossen."
Me.Text = "Fertig - " + Me.Text
Me.BringToFront()
Catch ex As Exception
MsgBox("Aufgrund des folgenden Fehlers konnte der Druckjob nicht gestartet werden:" + vbCrLf + vbCrLf + ex.Message, MsgBoxStyle.Critical)
Finally
Me.Cursor = Cursors.Default
ProgressThread.Abort()
DruckThread.Abort()
End Try
End Sub
Private printthread As Thread
Private Sub btnWeiter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWeiter.Click
Try
kill_acroreader()
Catch
End Try
tuesdrucken()
End Sub
Private Sub kill_acroreader()
Try
Dim myprocess() As Process
Dim mp As Process
myprocess = Process.GetProcessesByName("acrord32")
For Each mp In myprocess
mp.Kill()
Next
Thread.Sleep(100)
Catch ex As Exception
Finally
End Try
End Sub
Private Sub tuesdrucken()
Dim i As Integer
Me.Cursor = Cursors.WaitCursor
If get_pdf(alnr, Me.part) Then
Me.btnclose.Visible = True
Me.btnabbruch.Visible = False
Me.btnWeiter.Text = "Ausdruck wiederholen"
print_pdf(alnr)
If get_parts(alnr) = 0 Then
Me.update_aushaendigungsquittung_status(alnr, 3)
End If
If part = 0 Then
set_druckjobstatus(alnr, 3)
Else
Me.set_druckjobstatus_part(alnr, part, 3)
End If
Else
MsgBox("Das temporäre PDF-Dokumente konnte nicht erstellt werden.", MsgBoxStyle.Information)
End If
Me.Cursor = Cursors.Default
Me.Close()
End Sub
Public Function get_parts(ByVal alnr As Integer) As Integer
Dim connect As New SqlConnection()
connect.ConnectionString = Globals.sConnectionString
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.sp_edex_bl_get_druckjobparts_count"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
Try
scmCmdToExecute.Connection = connect
scmCmdToExecute.Parameters.Add(New SqlParameter("@auslieferungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, alnr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@parts", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
sdaAdapter.Fill(dtToReturn)
Return scmCmdToExecute.Parameters("@parts").Value
Catch ex As Exception
Return -1
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
connect.Dispose()
End Try
End Function
Private Function set_druckjobstatus_part(ByVal alnr As Integer, ByVal part As Integer, ByVal status As Integer) As Integer
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.SP_edex_bl_set_druckjobstatus_part"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
Try
scmCmdToExecute.Connection = conn.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@auslieferungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, alnr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@part", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, part))
scmCmdToExecute.Parameters.Add(New SqlParameter("@status", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, status))
scmCmdToExecute.Parameters.Add(New SqlParameter("@return", SqlDbType.Int, 4, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, 0))
sdaAdapter.Fill(dtToReturn)
Return scmCmdToExecute.Parameters("@return").Value
Catch ex As Exception
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
End Try
End Function
Private Sub print_pdf(ByVal alnr As Integer)
Try
Dim f As New frmPDFPrinter(True)
f.addressBar.Text = dokumentfilename
f.MdiParent = Me.MdiParent
f.alnr = alnr
f.Part = Me.part
f.Show()
Application.DoEvents()
f.PrintPDF()
Catch ex As Exception
End Try
End Sub
Dim dokumentfilename As String
Private Function get_pdf(ByVal alnr As Integer, ByVal part As Integer) As Boolean
If part = 0 Then
'PDF-Dokument aus der Datenbank auslesen
Me.Cursor = Cursors.WaitCursor
Dim connection As New SqlConnection()
Dim da As New SqlDataAdapter("Select * from edex_bl_druckjob where (status=2 or status=3) and auslieferungnr=" + LTrim(Str(alnr)), connection)
Dim CB As SqlCommandBuilder = New SqlCommandBuilder(da)
Dim ds As New DataSet()
Try
'Connectionstring zur Datenbank
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.Fill(ds, "docs")
Dim myRow As DataRow
myRow = ds.Tables(0).Rows(0)
Dim MyData() As Byte
MyData = myRow.Item("pdfdokument_aufbereitet")
dokumentfilename = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_temporaer_dokumente") + LTrim(Str(myRow.Item(0))) + ".PDF"
Dim K As Long
K = UBound(MyData)
Dim fs As New FileStream(dokumentfilename, FileMode.OpenOrCreate, FileAccess.Write)
fs.Write(MyData, 0, K)
fs.Close()
fs = Nothing
Return True
Catch ex As Exception
Return False
Finally
CB = Nothing
ds = Nothing
da = Nothing
connection.Close()
connection = Nothing
Me.Cursor = Cursors.Default
End Try
Else
'PDF-Dokument aus der Datenbank auslesen
Me.Cursor = Cursors.WaitCursor
Dim connection As New SqlConnection()
Dim s As String = "SELECT dbo.EDEX_BL_Druckjob_Part.* " & _
"FROM dbo.EDEX_BL_Druckjob INNER JOIN " & _
"dbo.EDEX_BL_Druckjob_Part ON dbo.EDEX_BL_Druckjob.druckjobnr = dbo.EDEX_BL_Druckjob_Part.druckjobnr " & _
"where (dbo.edex_bl_druckjob_part.status=2 or dbo.edex_bl_druckjob_part.status=3) and dbo.edex_bl_druckjob.auslieferungnr=" + LTrim(Str(alnr)) & " " & _
"and dbo.edex_bl_druckjob_part.partno=" + LTrim(part)
Dim da As New SqlDataAdapter(s, connection)
Dim CB As SqlCommandBuilder = New SqlCommandBuilder(da)
Dim ds As New DataSet()
Try
'Connectionstring zur Datenbank
connection.ConnectionString = Globals.sConnectionString
connection.Open()
da.Fill(ds, "docs")
Dim myRow As DataRow
myRow = ds.Tables(0).Rows(0)
Dim MyData() As Byte
MyData = myRow.Item("pdfdokument_aufbereitet")
dokumentfilename = Globals.Applikationsdaten.Rows(Globals.AppldataRow).Item("pfad_temporaer_dokumente") + LTrim(Str(myRow.Item(0))) + ".PDF"
Dim K As Long
K = UBound(MyData)
Dim fs As New FileStream(dokumentfilename, FileMode.OpenOrCreate, FileAccess.Write)
fs.Write(MyData, 0, K)
fs.Close()
fs = Nothing
Return True
Catch ex As Exception
Return False
Finally
CB = Nothing
ds = Nothing
da = Nothing
connection.Close()
connection = Nothing
Me.Cursor = Cursors.Default
End Try
End If
End Function
Private Function set_druckjobstatus(ByVal alnr As Integer, ByVal status As Integer)
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.SP_edex_bl_set_druckjobstatus"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
Try
scmCmdToExecute.Connection = conn.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@auslieferungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, alnr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@status", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, status))
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
End Try
End Function
Private Function get_partner(ByVal alnr As Integer)
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.SP_edex_bl_get_partner"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
Try
scmCmdToExecute.Connection = conn.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@alnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, alnr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@bkpar00", SqlDbType.VarChar, 255, ParameterDirection.Output, True, 10, 0, "", DataRowVersion.Proposed, ""))
sdaAdapter.Fill(dtToReturn)
Me.lblpartner.Text = scmCmdToExecute.Parameters("@bkpar00").Value
Return dtToReturn
Catch ex As Exception
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
End Try
End Function
Private Function update_aushaendigungsquittung_status(ByVal auslieferungnr As Integer, ByVal status As Integer)
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
scmCmdToExecute.CommandText = "dbo.SP_edex_bl_aushaendigungsquittung_update_status"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
Try
scmCmdToExecute.Connection = conn.scoDBConnection
scmCmdToExecute.Parameters.Add(New SqlParameter("@auslieferungnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, auslieferungnr))
scmCmdToExecute.Parameters.Add(New SqlParameter("@status", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, status))
scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.MitarbeiterNr))
sdaAdapter.Fill(dtToReturn)
Return dtToReturn
Catch ex As Exception
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
dtToReturn.Dispose()
End Try
End Function
Private Sub btnclose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnclose.Click
Me.Close()
End Sub
End Class