761 lines
29 KiB
VB.net
761 lines
29 KiB
VB.net
|
|
Imports iTextSharp.text.pdf
|
|
Imports iTextSharp.text
|
|
Imports System.IO
|
|
Imports GrapeCity.Documents.Pdf
|
|
|
|
|
|
|
|
Public Class frmSendungAnhangImport
|
|
|
|
Public AvisoId As Integer
|
|
Dim SENDUNG_LIST As New List(Of VERAG_PROG_ALLGEMEIN.cSendungen)
|
|
Dim CURRENT_INDEX As Integer
|
|
|
|
|
|
Dim BrowserLoaded = True
|
|
|
|
Sub New(AvisoId)
|
|
|
|
' Dieser Aufruf ist für den Designer erforderlich.
|
|
InitializeComponent()
|
|
Me.AvisoId = AvisoId
|
|
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
|
|
|
|
'Dim f As New GroupDocs.Viewer
|
|
End Sub
|
|
|
|
|
|
Sub initElement(USRCNTL As usrCntlSendungAnhangElement)
|
|
AddHandler USRCNTL.ME_CLICK, Sub()
|
|
' If BrowserLoaded Then
|
|
|
|
If USRCNTL.ACTIVE Then Exit Sub 'Bereits aktiv
|
|
For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls
|
|
u.ACTIVE = False
|
|
Next
|
|
For Each u As usrCntlSendungAnhangElement In flpnlSendungen.Controls
|
|
u.ACTIVE = False
|
|
Next
|
|
USRCNTL.ACTIVE = True
|
|
'WebBrowser1.Navigate(USRCNTL.FILE_PATH)
|
|
If File.Exists(USRCNTL.FILE_PATH) Then
|
|
initLocationViewer(USRCNTL.FILE_PATH)
|
|
|
|
Else
|
|
initLocationViewer("")
|
|
End If
|
|
|
|
' PdfViewer.DocumentLoaded += New EventHandler(AddressOf radPdfViewer1_DocumentLoaded)
|
|
|
|
txtDateiname.Text = USRCNTL.FILE_NAME
|
|
|
|
' End If
|
|
End Sub
|
|
|
|
AddHandler USRCNTL.KeyDown, Sub(ob As Object, ev As KeyEventArgs)
|
|
If ev.KeyCode = Keys.Delete Then
|
|
deleteActiveElement(getAcitvePnl())
|
|
End If
|
|
End Sub
|
|
End Sub
|
|
|
|
Sub initLocationViewer(loc)
|
|
If WebBrowser1.Url.AbsoluteUri <> loc Then
|
|
WebBrowser1.Navigate(loc)
|
|
BrowserLoaded = False
|
|
End If
|
|
If loc = "" Then BrowserLoaded = True
|
|
End Sub
|
|
|
|
Function getAcitvePnl() As FlowLayoutPanel
|
|
For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls
|
|
If u.ACTIVE Then Return flpnlAviso
|
|
Next
|
|
For Each u As usrCntlSendungAnhangElement In flpnlSendungen.Controls
|
|
If u.ACTIVE Then Return flpnlSendungen
|
|
Next
|
|
Return Nothing
|
|
End Function
|
|
|
|
Public Function ExtractPdfPages(ByVal SourceFile As String, ByVal TargetFile As String, ByVal IntStr As Integer, ByVal IntEnd As Integer)
|
|
Try
|
|
Dim impPage As pdf.PdfImportedPage = Nothing
|
|
Dim Reader As New PdfReader(SourceFile)
|
|
|
|
Dim srcDoc As New Document(Reader.GetPageSizeWithRotation(IntStr))
|
|
Dim PdfCopyProvider As New PdfCopy(srcDoc, New System.IO.FileStream(TargetFile, System.IO.FileMode.Create))
|
|
PdfCopyProvider.SetFullCompression()
|
|
srcDoc.Open()
|
|
For X = IntStr To IntEnd
|
|
impPage = PdfCopyProvider.GetImportedPage(Reader, X)
|
|
' ----- Ermitteln der Seitenauflösung und setzen für die neue Seite
|
|
PdfCopyProvider.SetPageSize(New Rectangle(0.0F, 0.0F, impPage.Width, impPage.Height))
|
|
' ----- PDF Seite in das neue Dokument einfügen
|
|
PdfCopyProvider.AddPage(impPage)
|
|
|
|
Next
|
|
' ----- neues PDF Dokument und den Reader schließen
|
|
srcDoc.Close()
|
|
Reader.Close()
|
|
Catch ex As Exception
|
|
Throw ex
|
|
End Try
|
|
End Function
|
|
|
|
|
|
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnAnfuegen.Click
|
|
If txtSeiten.Text = "" Then Exit Sub
|
|
' If cboArt._value = "" Then Exit Sub
|
|
If cboSendungen._value = "" Then Exit Sub
|
|
If Not checkSeiten() Then Exit Sub
|
|
|
|
For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls
|
|
If u.ACTIVE Then
|
|
Dim fi As New FileInfo(u.FILE_PATH)
|
|
'-------------
|
|
'------------- PDFs extrahieren und auf den Datenserver laden + Eintrag in tblAvisoAnhaenger
|
|
'-------------
|
|
Dim SendngsId As Integer = cboSendungen._value
|
|
Dim TMP_Path_Old = u.FILE_PATH
|
|
Dim TMP_Path_New = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(u.FILE_NAME, fi.Extension,, True, "SendungsAnhaenge")
|
|
If Not extractPagesFromPdf_Spire(u.FILE_PATH, TMP_Path_New, getPagesFromText()) Then Exit Sub
|
|
|
|
'Hochladen in den Datenserver und anfügen in die Tbl Anhänge mit der SendungsId
|
|
saveToDS(AvisoId, u.FILE_NAME, TMP_Path_New, cboArt._value, u.FILE_TYPE,,,, SendngsId)
|
|
|
|
'-------------
|
|
'------------- PDFs aus der original Datei löschen
|
|
'-------------
|
|
' tryDelete(TMP_Path_New)
|
|
|
|
If cbxDelPDF.Checked Then
|
|
If cbxDelPDF.Checked Then
|
|
TMP_Path_New = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(u.FILE_NAME, fi.Extension,, True, "SendungsAnhaenge")
|
|
Dim PagesLeft = 0
|
|
If removePagesFromPdf_Spire(u.FILE_PATH, TMP_Path_New, getPagesFromText(), PagesLeft, False) Then
|
|
If PagesLeft = 0 Then
|
|
delFromDS(u.FILE_DOCID)
|
|
flpnlAviso.Controls.Remove(u)
|
|
Else
|
|
Dim destPath = ""
|
|
If saveChangeToDS_daId(u.FILE_DOCID, TMP_Path_New, destPath) Then
|
|
tryDelete(TMP_Path_Old)
|
|
u.FILE_PATH = destPath
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
initLocationViewer("")
|
|
If flpnlAviso.Controls.Count > 0 Then
|
|
DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me()
|
|
End If
|
|
End If
|
|
'-------------
|
|
End If
|
|
Next
|
|
clearPnlAnfuegen()
|
|
' initSendungen()
|
|
initFlpANH_LIST()
|
|
End Sub
|
|
|
|
Private Sub Button1_ClickALL(sender As Object, e As EventArgs) Handles btnAnfuegenAll.Click
|
|
If cboSendungen._value = "" Then Exit Sub
|
|
For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls
|
|
If u.ACTIVE Then
|
|
Dim fi As New FileInfo(u.FILE_PATH)
|
|
'-------------
|
|
'------------- PDFs extrahieren und auf den Datenserver laden + Eintrag in tblAvisoAnhaenger
|
|
'-------------
|
|
Dim TMP_Path_New = u.FILE_PATH
|
|
Dim SendngsId As Integer = cboSendungen._value
|
|
'Hochladen in den Datenserver und anfügen in die Tbl Anhänge mit der SendungsId
|
|
' saveToDS(u.FILE_NAME, TMP_Path_New, cboArt._value, u.FILE_TYPE,,, SendngsId)
|
|
|
|
Dim ANH = New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(u.FILE_ANHID)
|
|
|
|
If cbxDelPDF.Checked Then
|
|
ANH.anh_SendungsId = SendngsId
|
|
ANH.SAVE() 'Eintrag wird überschreiben
|
|
flpnlAviso.Controls.Remove(u)
|
|
If cbxDelPDF.Checked Then tryDelete(u.FILE_PATH)
|
|
initLocationViewer("")
|
|
If flpnlAviso.Controls.Count > 0 Then
|
|
DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me()
|
|
End If
|
|
Else
|
|
ANH.anh_SendungsId = SendngsId
|
|
ANH.anh_id = -1 'neuer Eintrag
|
|
ANH.SAVE()
|
|
End If
|
|
End If
|
|
Next
|
|
clearPnlAnfuegen()
|
|
' initSendungen()
|
|
initFlpANH_LIST()
|
|
End Sub
|
|
|
|
Sub clearPnlAnfuegen()
|
|
MyTextBox2.Text = ""
|
|
txtDateiname.Text = ""
|
|
txtSeiten.Text = ""
|
|
cboArt.Text = ""
|
|
txtSeiten.Focus()
|
|
End Sub
|
|
Sub tryDelete(TMP_Path_New)
|
|
|
|
Try
|
|
File.Delete(TMP_Path_New)
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End Sub
|
|
|
|
Public Sub DeletePages(ByVal pageRange As String, ByVal SourcePdfPath As String, ByVal OutputPdfPath As String, ByVal Optional Password As String = "")
|
|
Dim pagesToDelete As New List(Of Integer)
|
|
|
|
If pageRange.IndexOf(",") <> -1 Then
|
|
Dim tmpHold As String() = pageRange.Split(","c)
|
|
|
|
For Each nonconseq As String In tmpHold
|
|
|
|
If nonconseq.IndexOf("-") <> -1 Then
|
|
Dim rangeHold As String() = nonconseq.Split("-"c)
|
|
|
|
For i As Integer = Convert.ToInt32(rangeHold(0)) To Convert.ToInt32(rangeHold(1))
|
|
pagesToDelete.Add(i)
|
|
Next
|
|
Else
|
|
pagesToDelete.Add(Convert.ToInt32(nonconseq))
|
|
End If
|
|
Next
|
|
Else
|
|
|
|
If pageRange.IndexOf("-") <> -1 Then
|
|
Dim rangeHold As String() = pageRange.Split("-"c)
|
|
|
|
For i As Integer = Convert.ToInt32(rangeHold(0)) To Convert.ToInt32(rangeHold(1))
|
|
pagesToDelete.Add(i)
|
|
Next
|
|
Else
|
|
pagesToDelete.Add(Convert.ToInt32(pageRange))
|
|
End If
|
|
End If
|
|
|
|
Dim doc As Document = New Document()
|
|
Dim reader As PdfReader = New PdfReader(SourcePdfPath, New System.Text.ASCIIEncoding().GetBytes(Password))
|
|
|
|
Using memoryStream As MemoryStream = New MemoryStream()
|
|
Dim writer As PdfWriter = PdfWriter.GetInstance(doc, memoryStream)
|
|
doc.Open()
|
|
doc.AddDocListener(writer)
|
|
|
|
For p As Integer = 1 To reader.NumberOfPages
|
|
|
|
If pagesToDelete.FindIndex(Function(s) s = p) <> -1 Then
|
|
Continue For
|
|
End If
|
|
|
|
|
|
doc.SetPageSize(reader.GetPageSize(p))
|
|
doc.NewPage()
|
|
Dim cb As PdfContentByte = writer.DirectContent
|
|
Dim pageImport As pdf.PdfImportedPage = writer.GetImportedPage(reader, p)
|
|
Dim rot As Integer = reader.GetPageRotation(p)
|
|
|
|
If rot = 90 OrElse rot = 270 Then
|
|
cb.AddTemplate(pageImport, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(p).Height)
|
|
Else
|
|
cb.AddTemplate(pageImport, 1.0F, 0, 0, 1.0F, 0, 0)
|
|
End If
|
|
Next
|
|
|
|
reader.Close()
|
|
File.WriteAllBytes(OutputPdfPath, memoryStream.ToArray())
|
|
doc.Close()
|
|
End Using
|
|
End Sub
|
|
|
|
|
|
Function getPagesFromText() As List(Of Integer)
|
|
Dim List As New List(Of Integer)
|
|
Dim split = txtSeiten.Text.Split(",")
|
|
For Each s In split
|
|
If s.Contains("-") Then
|
|
Dim s_vb = s.Split("-")
|
|
Dim von = CInt(s_vb(0))
|
|
Dim bis = CInt(s_vb(1))
|
|
For page = von To bis
|
|
Dim anfuegen = True
|
|
For Each l In List
|
|
If l = page Then
|
|
anfuegen = False
|
|
End If
|
|
Next
|
|
If anfuegen Then List.Add(page)
|
|
Next
|
|
|
|
|
|
Else
|
|
If IsNumeric(s) Then List.Add(s)
|
|
End If
|
|
Next
|
|
Return List
|
|
End Function
|
|
|
|
|
|
|
|
Public Function removePagesFromPdf_Spire(ByVal sourceFile As String, ByVal destinationFile As String, pagesToDelete As List(Of Integer), ByRef PagesLeft As Integer, Optional delSource As Boolean = False) As Boolean
|
|
|
|
Try
|
|
PagesLeft = 0
|
|
|
|
Dim pdf As New Spire.Pdf.PdfDocument()
|
|
pdf.LoadFromFile(sourceFile)
|
|
' Dim r As PdfReader = New PdfReader(sourceFile)
|
|
Dim pagesToKeep As New List(Of Integer)
|
|
For p = 0 To pdf.Pages.Count - 1 ' r.NumberOfPages
|
|
Dim del = False
|
|
For Each i In pagesToDelete
|
|
If p = (i - 1) Then
|
|
del = True : Exit For
|
|
End If
|
|
Next
|
|
If Not del Then
|
|
pagesToKeep.Add(p)
|
|
End If
|
|
Next
|
|
|
|
|
|
Dim pdf1 As New Spire.Pdf.PdfDocument()
|
|
Dim page As Spire.Pdf.PdfPageBase
|
|
|
|
For Each p In pagesToKeep
|
|
Dim pageInt = p - 1 ' Nciht SeitenNr. sonder Aufzählung
|
|
If pageInt >= 0 And pageInt < pdf.Pages.Count Then
|
|
page = pdf1.Pages.Add(pdf.Pages(p).Size, New Spire.Pdf.Graphics.PdfMargins(0))
|
|
pdf.Pages(p).CreateTemplate().Draw(page, New System.Drawing.PointF(0, 0))
|
|
PagesLeft += 1
|
|
End If
|
|
Next
|
|
pdf1.SaveToFile(destinationFile)
|
|
pdf.Dispose()
|
|
pdf1.Dispose()
|
|
|
|
If delSource Then tryDelete(sourceFile)
|
|
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message & ex.StackTrace)
|
|
Return False
|
|
End Try
|
|
Return True
|
|
End Function
|
|
|
|
Public Function extractPagesFromPdf_Spire(ByVal sourceFile As String, ByVal destinationFile As String, pagesToExtract As List(Of Integer)) As Boolean
|
|
|
|
Try
|
|
|
|
Dim pdf As New Spire.Pdf.PdfDocument()
|
|
pdf.LoadFromFile(sourceFile)
|
|
|
|
Dim pdf1 As New Spire.Pdf.PdfDocument()
|
|
Dim page As Spire.Pdf.PdfPageBase
|
|
|
|
For Each p In pagesToExtract
|
|
Dim pageInt = p - 1 ' Nciht SeitenNr. sonder Aufzählung
|
|
If pageInt >= 0 And pageInt < pdf.Pages.Count Then
|
|
page = pdf1.Pages.Add(pdf.Pages(pageInt).Size, New Spire.Pdf.Graphics.PdfMargins(0))
|
|
pdf.Pages(pageInt).CreateTemplate().Draw(page, New System.Drawing.PointF(0, 0))
|
|
End If
|
|
Next
|
|
pdf1.SaveToFile(destinationFile)
|
|
|
|
|
|
'MsgBox("P: " &pdf.Pages.Count)
|
|
'Dim pdf1 As New Spire.Pdf.PdfDocument()
|
|
''Dim page As New Spire.Pdf.PdfPageBase
|
|
|
|
''For i As Integer = 0 To 4
|
|
'For Each p In pagesToKeep
|
|
' pdf1.Pages.Add(pdf.Pages(p).Size, New Spire.Pdf.Graphics.PdfMargins(0))
|
|
' 'Dim page =
|
|
' 'pdf.Pages(p).CreateTemplate().Draw(page, New System.Drawing.PointF(0, 0))
|
|
' MsgBox(p)
|
|
'Next
|
|
|
|
'pdf1.SaveToFile(destinationFile)
|
|
|
|
|
|
|
|
|
|
'Using fs As FileStream = New FileStream(destinationFile, FileMode.Create, FileAccess.Write, FileShare.None)
|
|
|
|
' Using doc As Document = New Document()
|
|
|
|
' Using w As PdfWriter = PdfWriter.GetInstance(doc, fs)
|
|
' doc.Open()
|
|
' For Each page As Integer In pagesToKeep
|
|
' doc.NewPage()
|
|
' w.DirectContent.AddTemplate(w.GetImportedPage(r, page), 0, 0)
|
|
' PagesLeft += 1
|
|
' Next
|
|
' doc.Close()
|
|
' End Using
|
|
' End Using
|
|
'End Using
|
|
pdf.Dispose()
|
|
pdf1.Dispose()
|
|
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message & ex.StackTrace)
|
|
Return False
|
|
End Try
|
|
Return True
|
|
End Function
|
|
|
|
Public Sub removePagesFromPdf(ByVal sourceFile As String, ByVal destinationFile As String, pagesToDelete As List(Of Integer), ByRef PagesLeft As Integer)
|
|
|
|
Try
|
|
PagesLeft = 0
|
|
Dim r As PdfReader = New PdfReader(sourceFile)
|
|
Dim pagesToKeep As New List(Of Integer)
|
|
For p = 1 To r.NumberOfPages
|
|
Dim del = False
|
|
For Each i In pagesToDelete
|
|
If p = i Then
|
|
del = True : Exit For
|
|
End If
|
|
Next
|
|
If Not del Then
|
|
pagesToKeep.Add(p)
|
|
End If
|
|
Next
|
|
Using fs As FileStream = New FileStream(destinationFile, FileMode.Create, FileAccess.Write, FileShare.None)
|
|
|
|
Using doc As Document = New Document()
|
|
|
|
Using w As PdfWriter = PdfWriter.GetInstance(doc, fs)
|
|
doc.Open()
|
|
For Each page As Integer In pagesToKeep
|
|
doc.NewPage()
|
|
w.DirectContent.AddTemplate(w.GetImportedPage(r, page), 0, 0)
|
|
PagesLeft += 1
|
|
Next
|
|
doc.Close()
|
|
End Using
|
|
End Using
|
|
End Using
|
|
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
|
|
End Sub
|
|
Private Sub txtSeiten_TextChanged(sender As Object, e As EventArgs) Handles txtSeiten.TextChanged
|
|
txtSeiten.BackColor = Color.White
|
|
If txtSeiten.Text = "" Then Exit Sub
|
|
If checkSeiten() Then
|
|
txtSeiten.BackColor = Color.White
|
|
Else
|
|
txtSeiten.BackColor = Color.MistyRose
|
|
End If
|
|
End Sub
|
|
|
|
Function checkSeiten()
|
|
txtSeiten.Text.Replace(";", ",")
|
|
|
|
' If txtSeiten.Text.Contains(",") Then
|
|
Dim split = txtSeiten.Text.Split(",")
|
|
For Each s In split
|
|
If s.Contains("-") Then
|
|
Dim s_vb = s.Split("-")
|
|
Dim von = s_vb(0)
|
|
Dim bis = s_vb(1)
|
|
' Dim bis = ""
|
|
'If s_vb.Count > 0 Then bis = s_vb(1)
|
|
If Not IsNumeric(von) Then Return False
|
|
If Not IsNumeric(bis) Then Return False
|
|
Else
|
|
If Not IsNumeric(s) Then Return False
|
|
End If
|
|
Next
|
|
' Else
|
|
' If Not IsNumeric(txtSeiten.Text) Then Return False
|
|
' End If
|
|
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
|
deleteActiveElement(flpnlAviso)
|
|
End Sub
|
|
Sub deleteActiveElement(flpnl As FlowLayoutPanel)
|
|
If flpnl Is Nothing Then Exit Sub
|
|
For Each u As usrCntlSendungAnhangElement In flpnl.Controls
|
|
If u.ACTIVE Then
|
|
If vbYes = MsgBox("Möchten Sie das Element löschen?", vbYesNoCancel) Then
|
|
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(u.FILE_DOCID)
|
|
If DS.DELETE_COMPLETE Then
|
|
flpnl.Controls.Remove(u)
|
|
initLocationViewer("")
|
|
If flpnl.Controls.Count > 0 Then
|
|
DirectCast(flpnl.Controls(0), usrCntlSendungAnhangElement).CLICK_Me()
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub frmSendungAnhangImport_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
WebBrowser1.Navigate("")
|
|
flpnlAviso.Controls.Clear()
|
|
flpnlSendungen.Controls.Clear()
|
|
|
|
cboArt.Items.Clear()
|
|
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("ATR", "ATR"))
|
|
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Rechnung", "Rechnung"))
|
|
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("CMR", "CMR"))
|
|
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Auftrag", "Auftrag"))
|
|
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Packliste", "Packliste"))
|
|
cboArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Sonstiges", "Sonstiges"))
|
|
initSendungen()
|
|
|
|
cboSendungen.changeItem(-1)
|
|
End Sub
|
|
|
|
Private Sub frmSendungAnhangImport_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
|
txtSeiten.Focus()
|
|
End Sub
|
|
|
|
Private Sub txtSeiten_KeyDown(sender As Object, e As KeyEventArgs) Handles txtSeiten.KeyDown, cboArt.KeyDown
|
|
If e.KeyCode = Keys.Return Then
|
|
btnAnfuegen.PerformClick()
|
|
End If
|
|
End Sub
|
|
Sub initSendungen()
|
|
cboSendungen.Items.Clear()
|
|
' cboSendungen.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Allgemein", -1))
|
|
|
|
VERAG_PROG_ALLGEMEIN.cSendungen.LOAD_LIST(SENDUNG_LIST, CURRENT_INDEX, AvisoId) 'LÄDT alle SENDUNGSDATEN
|
|
Dim cnt = 1
|
|
For Each s In SENDUNG_LIST
|
|
cboSendungen.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem(cnt & ". " & s.tblSnd_Empfaenger & " (" & s.tblSnd_Abfertigungsart_ID & ")", s.tblSnd_SendungID))
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub cboSendungen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSendungen.SelectedIndexChanged
|
|
MyTextBox2.Text = cboSendungen.Text
|
|
flpnlSendungen.Controls.Clear()
|
|
|
|
initFlpANH_LIST()
|
|
|
|
End Sub
|
|
|
|
Sub initFlpANH_LIST()
|
|
Dim ANH_LIST As New List(Of VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge)
|
|
'If cboSendungen._value > 0 Then
|
|
' VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge.LOAD_LIST_BySendung(ANH_LIST, cboSendungen._value) 'LÄDT alle Aviso-Anhänge
|
|
'Else
|
|
' VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge.LOAD_LIST_ByAviso(ANH_LIST, AvisoId) 'LÄDT alle Sendungs-Anhänge
|
|
'End If
|
|
VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge.LOAD_LIST_ByAviso(ANH_LIST, AvisoId) 'LÄDT alle Aviso-Anhänge
|
|
flpnlSendungen.Controls.Clear
|
|
flpnlAviso.Controls.Clear()
|
|
|
|
For Each a In ANH_LIST
|
|
|
|
Dim USRCNTL As New usrCntlSendungAnhangElement
|
|
|
|
USRCNTL.FILE_PATH = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(a.anh_docId)
|
|
USRCNTL.FILE_NAME = a.anh_Name
|
|
USRCNTL.FILE_TYPE = a.anh_Typ
|
|
|
|
USRCNTL.FILE_ANHID = a.anh_id
|
|
USRCNTL.FILE_DOCID = a.anh_docId
|
|
|
|
initElement(USRCNTL)
|
|
|
|
If If(a.anh_SendungsId, 0) > 0 Then
|
|
If cboSendungen._value <> "" AndAlso cboSendungen._value = a.anh_SendungsId Then
|
|
flpnlSendungen.Controls.Add(USRCNTL)
|
|
End If
|
|
Else
|
|
flpnlAviso.Controls.Add(USRCNTL)
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btnAnfuegenAll.Click
|
|
clearPnlAnfuegen()
|
|
End Sub
|
|
|
|
Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click
|
|
If cboSendungen._value = "" Then Exit Sub
|
|
For Each u As usrCntlSendungAnhangElement In flpnlAviso.Controls
|
|
If u.ACTIVE Then
|
|
|
|
Dim ANH = New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(u.FILE_ANHID)
|
|
ANH.anh_SendungsId = Nothing
|
|
ANH.SAVE()
|
|
|
|
End If
|
|
Next
|
|
clearPnlAnfuegen()
|
|
' initSendungen()
|
|
initFlpANH_LIST()
|
|
End Sub
|
|
|
|
Public Sub DateiHochladenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiHochladenToolStripMenuItem.Click
|
|
addData_SendungAnhangFD()
|
|
End Sub
|
|
|
|
|
|
Sub delFromDS(daId)
|
|
Dim ds As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId)
|
|
ds.DELETE_COMPLETE()
|
|
End Sub
|
|
|
|
Function saveChangeToDS_daId(daId, sourcePath, ByRef destPath) As Boolean
|
|
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(daId)
|
|
If Not DS.uploadDataToDATENSERVER(sourcePath) Then MsgBox("Fehler beim Speichern: Datenserver!") : Return False
|
|
If DS.da_id <= 0 Then MsgBox("Keine DocId!") : Return False
|
|
|
|
destPath = DS.GET_TOP1_PATH
|
|
'Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(AvisoId, DS.da_name, DS.da_id, cboArt._value, DS.da_name, Nothing)
|
|
'If Not ANH.SAVE Then MsgBox("Fehler beim Anhang speichern!") : Return False
|
|
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub DateiScannenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiScannenToolStripMenuItem.Click
|
|
Try
|
|
'If KdNr < 0 Then Exit Sub
|
|
Dim frmScan As New VERAG_PROG_ALLGEMEIN.frmScan("DirectScan")
|
|
frmScan.DefaultFileName = "Scan" ' Me._TEXT_PDF
|
|
|
|
If frmScan.ShowDialog(Me) = DialogResult.OK Then
|
|
If frmScan.ReturnValue IsNot Nothing Then
|
|
Dim Filename = frmScan.fileName
|
|
Dim TMP_Path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(Filename, ".pdf",, False, "SendungsAnhaenge")
|
|
File.WriteAllBytes(TMP_Path, frmScan.ReturnValue)
|
|
|
|
Dim da_id = -1
|
|
Dim anhId = -1
|
|
Dim destPath = ""
|
|
If saveToDS(AvisoId, Filename, TMP_Path, "", "PDF", da_id, anhId, destPath) Then
|
|
addUsrcnlToPnl(destPath, da_id, anhId, Filename, "PDF")
|
|
End If
|
|
|
|
'addUsrcnlToPnl(TMP_Path)
|
|
End If
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
MsgBox("FEHLER Scan: " & ex.Message & ex.StackTrace)
|
|
End Try
|
|
End Sub
|
|
|
|
Sub addUsrcnlToPnl(TMP_Path, dicId, anhId, Optional filename = "", Optional Typ = "")
|
|
Dim USRCNTL As New usrCntlSendungAnhangElement
|
|
|
|
Dim fi As New FileInfo(TMP_Path)
|
|
If filename = "" Then filename = fi.Name
|
|
|
|
USRCNTL.FILE_PATH = TMP_Path
|
|
USRCNTL.FILE_NAME = filename
|
|
USRCNTL.FILE_DOCID = dicId
|
|
USRCNTL.FILE_NAME = filename
|
|
USRCNTL.FILE_ANHID = anhId
|
|
|
|
USRCNTL.FILE_TYPE = Typ
|
|
|
|
initElement(USRCNTL)
|
|
flpnlAviso.Controls.Add(USRCNTL)
|
|
End Sub
|
|
|
|
Private Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
|
|
cntxt.Show(Cursor.Position)
|
|
End Sub
|
|
|
|
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
|
|
deleteActiveElement(flpnlSendungen)
|
|
End Sub
|
|
|
|
|
|
Public Sub addData_SendungAnhangFD()
|
|
Dim fd As New OpenFileDialog
|
|
fd.Multiselect = True
|
|
|
|
If fd.ShowDialog = vbOK Then
|
|
For Each F_listItem In fd.FileNames
|
|
|
|
Dim fi As New FileInfo(F_listItem)
|
|
Dim filename = fi.Name
|
|
' Dim TMP_Path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(filename, fi.Extension,, False, "SendungsAnhaenge")
|
|
' MsgBox(TMP_Path)
|
|
' File.Copy(F_listItem, TMP_Path)
|
|
Dim da_id = -1
|
|
Dim anhId = -1
|
|
Dim destPath = ""
|
|
|
|
Dim Typ = ""
|
|
If getFileTypeValid(fi.Extension.Replace(".", ""), Typ) Then
|
|
If saveToDS(AvisoId, fi.Name, F_listItem, "", Typ, da_id, anhId, destPath) Then
|
|
addUsrcnlToPnl(destPath, da_id, anhId, filename, Typ)
|
|
End If
|
|
End If
|
|
Next
|
|
If flpnlAviso.Controls.Count > 0 Then DirectCast(flpnlAviso.Controls(0), usrCntlSendungAnhangElement).CLICK_Me()
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub addData_SendungAnhang(Path)
|
|
|
|
|
|
Dim fi As New FileInfo(Path)
|
|
Dim filename = fi.Name
|
|
Dim da_id = -1
|
|
Dim anhId = -1
|
|
Dim destPath = ""
|
|
|
|
Dim Typ = ""
|
|
If getFileTypeValid(fi.Extension.Replace(".", ""), Typ) Then
|
|
If saveToDS(AvisoId, fi.Name, Path, "", Typ, da_id, anhId, destPath) Then
|
|
addUsrcnlToPnl(destPath, da_id, anhId, filename, Typ)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Public Shared Function getFileTypeValid(extension, ByRef Typ) As Boolean
|
|
Select Case extension
|
|
Case "PDF" : Typ = "PDF"
|
|
Case "XLS", "XLXS" : Typ = "EXCEL"
|
|
Case "DOC", "DOCX" : Typ = "WORD"
|
|
Case "TXT" : Typ = "TEXT"
|
|
Case "JPEG", "JPG", "GIF", "TFF" : Typ = "BILD"
|
|
Case "EXE" : MsgBox("Aviso-Anhänge: Ungültiges Datei-Format!") : Return False
|
|
Case Else : Typ = "SONSTIGES"
|
|
End Select
|
|
Return True
|
|
End Function
|
|
|
|
|
|
|
|
Public Shared Function saveToDS(AvisoId, fileName, sourcePath, Art, Typ, Optional ByRef da_id = -1, Optional anhId = -1, Optional ByRef destPath = "", Optional SendungsId = Nothing) As Boolean
|
|
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "AVISO_ANHAENGE", AvisoId, Now.ToString("ddMMyy_HHmmss.sss"), "", fileName, -1, False)
|
|
If Not DS.uploadDataToDATENSERVER(sourcePath) Then MsgBox("Fehler beim Speichern: Datenserver!") : Return False
|
|
If DS.da_id <= 0 Then MsgBox("Keine DocId!") : Return False
|
|
da_id = DS.da_id
|
|
destPath = DS.GET_TOP1_PATH
|
|
Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(AvisoId, fileName, DS.da_id, Art, Typ, SendungsId)
|
|
If Not ANH.SAVE Then MsgBox("Fehler beim Anhang speichern!") : Return False
|
|
anhId = ANH.anh_id
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
|
|
BrowserLoaded = True
|
|
End Sub
|
|
End Class |