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.
251 lines
11 KiB
251 lines
11 KiB
Imports Syncfusion.Pdf.Parsing
|
|
Imports Syncfusion.Pdf
|
|
Imports System.Collections.Specialized
|
|
Imports System.IO
|
|
Public Class clspdfhelper
|
|
|
|
|
|
Public Enum GetEmpfaengerType
|
|
FromFaktura
|
|
FromLastFaktura
|
|
Andere
|
|
FromCollection
|
|
FromOfferte
|
|
FromLieferschein
|
|
FromAuftragsbestaegigung
|
|
End Enum
|
|
Public Function ConCatPDF(Optional DeleteSource As Boolean = True) As String
|
|
Dim document As New PdfDocument
|
|
document.EnableMemoryOptimization = False
|
|
Dim newfi As String
|
|
Dim newfn As String
|
|
Dim pdfitem As clspdfcollectionitem
|
|
|
|
For i = 1 To Globals.pdfCollection.Count
|
|
pdfitem = Globals.pdfCollection.Item(i)
|
|
If i = 1 Then
|
|
newfn = System.IO.Path.GetDirectoryName(pdfitem.Path)
|
|
newfi = System.IO.Path.GetFileName(pdfitem.Path)
|
|
'newfn = System.IO.Path.GetDirectoryName(Globals.pdfCollection.Item(i).ToString)
|
|
'newfi = System.IO.Path.GetFileName(Globals.pdfCollection.Item(i).ToString)
|
|
|
|
newfi = newfi.Replace(".pdf", "_concat.pdf")
|
|
newfn = newfn + "\" + newfi
|
|
End If
|
|
Dim loadeddocument As New PdfLoadedDocument(pdfitem.Path)
|
|
'Dim loadeddocument As New PdfLoadedDocument(Globals.pdfCollection.Item(i).ToString)
|
|
|
|
loadeddocument.EnableMemoryOptimization = False
|
|
document.ImportPageRange(loadeddocument, 0, loadeddocument.Pages.Count - 1)
|
|
loadeddocument = Nothing
|
|
Next
|
|
document.Save(newfn)
|
|
document.Close()
|
|
document.Dispose()
|
|
If DeleteSource Then
|
|
For i = 1 To Globals.pdfCollection.Count
|
|
pdfitem = Globals.pdfCollection.Item(i)
|
|
' System.IO.File.Delete(Globals.pdfCollection.Item(i))
|
|
If pdfitem.Path.IndexOf(My.Settings.DocArchivPath) > -1 Then System.IO.File.Delete(pdfitem.Path)
|
|
Next
|
|
End If
|
|
|
|
Return newfn
|
|
|
|
End Function
|
|
|
|
Public Sub HandlePDF(ByVal alsPDF As Boolean, ByVal alsMail As Boolean, Optional Mailtext As Integer = 0, Optional empfaengertyp As clsMailClient.EmpfangerFrom = clsMailClient.EmpfangerFrom.Behandlung, Optional keyvalue As Integer = 0)
|
|
Dim pdfitem As clspdfcollectionitem
|
|
If alsPDF = True Then
|
|
If Globals.pdfCollection.Count > 1 Then
|
|
If alsMail = False Then Process.Start(ConCatPDF())
|
|
If alsMail = True Then
|
|
Dim em As New clsMailClient
|
|
Dim att As New StringCollection
|
|
att.Add(ConCatPDF)
|
|
'em.CreateOutlookMail(empfaengertyp, keyvalue, ConCatPDF(), Mailtext)
|
|
em.CreateOutlookMail(empfaengertyp, keyvalue, att, Mailtext)
|
|
End If
|
|
Else
|
|
pdfitem = Globals.pdfCollection.Item(1)
|
|
If alsMail = False Then Process.Start(pdfitem.Path)
|
|
'If alsMail = False Then Process.Start(Globals.pdfCollection.Item(1))
|
|
|
|
If alsMail = True Then
|
|
Dim email As New clsMailClient
|
|
' email.CreateOutlookMail(empfaengertyp, keyvalue, Globals.pdfCollection.Item(1), Mailtext)
|
|
Dim att As New StringCollection
|
|
att.Add(pdfitem.Path)
|
|
email.CreateOutlookMail(empfaengertyp, keyvalue, att, Mailtext)
|
|
|
|
' email.CreateOutlookMail(empfaengertyp, keyvalue, pdfitem.Path, Mailtext)
|
|
End If
|
|
End If
|
|
pdfCollection.Clear()
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub Create_Archivdoc(ByVal From As GetEmpfaengerType, Optional keyvalue As String = "", Optional Bezeichnung As String = "", Optional nrbehandlung As Integer = 0)
|
|
If Globals.License.DMS = False Then Exit Sub
|
|
|
|
Dim s As String
|
|
Dim tmpcollection As New Collection
|
|
For i = 1 To Globals.pdfCollection.Count
|
|
tmpcollection.Add(Globals.pdfCollection.Item(i))
|
|
Next i
|
|
Globals.pdfCollection.Clear()
|
|
|
|
Dim tmpcolitem As clspdfcollectionitem
|
|
Dim fakturanralt As Integer
|
|
tmpcolitem = tmpcollection.Item(1)
|
|
fakturanralt = tmpcolitem.fakturanr
|
|
Globals.pdfCollection.Add(tmpcollection.Item(1))
|
|
|
|
If tmpcollection.Count > 1 Then
|
|
For i = 2 To tmpcollection.Count
|
|
tmpcolitem = tmpcollection.Item(i)
|
|
If tmpcolitem.fakturanr <> fakturanralt Then
|
|
fakturanralt = tmpcolitem.fakturanr
|
|
s = ConCatPDF(False)
|
|
save_doc_to_db(s, Bezeichnung, 0, 0, From, nrbehandlung)
|
|
Globals.pdfCollection.Clear()
|
|
Globals.pdfCollection.Add(tmpcollection.Item(i))
|
|
Else
|
|
Globals.pdfCollection.Add(tmpcollection.Item(i))
|
|
End If
|
|
Next
|
|
End If
|
|
If Globals.pdfCollection.Count > 0 Then
|
|
s = ConCatPDF(False)
|
|
save_doc_to_db(s, Bezeichnung, 0, 0, From, nrbehandlung)
|
|
End If
|
|
|
|
|
|
Globals.pdfCollection.Clear()
|
|
For i = 1 To tmpcollection.Count
|
|
Globals.pdfCollection.Add(tmpcollection.Item(i))
|
|
Next
|
|
|
|
End Sub
|
|
Private Sub save_doc_to_db(ByVal ifilename As String, ByVal bezeichnung As String, ByVal patient As Integer, ByVal debitor As Integer, ByVal From As GetEmpfaengerType, ByVal nrbehandlung As Integer)
|
|
Dim s As String
|
|
Dim db As New clsDB
|
|
Dim Fakturadb As New clsDB
|
|
|
|
Dim StrukturEintrag_Patient As Integer
|
|
Dim StrukturEintrag_Garant As Integer
|
|
Dim StrukturEintrag_Offerte As Integer
|
|
Dim StrukturEintrag_Lieferschein As Integer
|
|
Dim Struktureintrag_Auftragsbestaetigung As Integer
|
|
Dim CopyDocToGarant As String
|
|
Dim nrfaktura As Integer
|
|
Dim Patientname As String
|
|
Dim Fakturanr As String
|
|
Dim pcolitem As clspdfcollectionitem
|
|
|
|
If From = GetEmpfaengerType.FromLastFaktura Then
|
|
Fakturadb.Get_Tabledata("Faktura", "", "Select top 1 * from faktura order by nrfaktura desc")
|
|
Fakturanr = Fakturadb.dsDaten.Tables(0).Rows(0).Item("nrfaktura")
|
|
End If
|
|
If From = GetEmpfaengerType.FromFaktura Then
|
|
pcolitem = Globals.pdfCollection.Item(1)
|
|
Fakturadb.Get_Tabledata("Faktura", "", "Select top 1 * from faktura WHeRE NRFAKTURA=" + pcolitem.fakturanr.ToString + " order by nrfaktura desc")
|
|
Fakturanr = pcolitem.fakturanr
|
|
End If
|
|
If From = GetEmpfaengerType.FromOfferte Or From = GetEmpfaengerType.FromAuftragsbestaegigung Or From = GetEmpfaengerType.FromLieferschein Then
|
|
Fakturadb.Get_Tabledata("Faktura", "", "Select nrpatient,0 as nrdebitor,behandlungsgrund from behandlu where nrbehandlung=" + nrbehandlung.ToString)
|
|
Fakturanr = 0
|
|
End If
|
|
|
|
patient = Fakturadb.dsDaten.Tables(0).Rows(0).Item("nrpatient")
|
|
debitor = Fakturadb.dsDaten.Tables(0).Rows(0).Item("nrdebitor")
|
|
|
|
|
|
bezeichnung = bezeichnung + " " + Fakturanr.ToString
|
|
If Globals.License.DMS = True Then
|
|
|
|
db.Get_Tabledata("DMS", "", "Select wert from dms_settings where nreintrag=8")
|
|
StrukturEintrag_Patient = db.dsDaten.Tables(0).Rows(0).Item(0)
|
|
|
|
db.Get_Tabledata("DMS", "", "Select wert from dms_settings where nreintrag=9")
|
|
StrukturEintrag_Garant = db.dsDaten.Tables(0).Rows(0).Item(0)
|
|
|
|
db.Get_Tabledata("DMS", "", "Select wert from dms_settings where nreintrag=10")
|
|
CopyDocToGarant = db.dsDaten.Tables(0).Rows(0).Item(0)
|
|
Try
|
|
db.Get_Tabledata("DMS", "", "Select wert from dms_settings where nreintrag=12")
|
|
StrukturEintrag_Offerte = db.dsDaten.Tables(0).Rows(0).Item(0)
|
|
db.Get_Tabledata("DMS", "", "Select wert from dms_settings where nreintrag=14")
|
|
StrukturEintrag_Lieferschein = db.dsDaten.Tables(0).Rows(0).Item(0)
|
|
db.Get_Tabledata("DMS", "", "Select wert from dms_settings where nreintrag=13")
|
|
Struktureintrag_Auftragsbestaetigung = db.dsDaten.Tables(0).Rows(0).Item(0)
|
|
|
|
If From = GetEmpfaengerType.FromOfferte Then
|
|
StrukturEintrag_Patient = StrukturEintrag_Offerte
|
|
debitor = patient
|
|
db.Get_Tabledata("Behandlung", "", "Select behandlungsgrund from behandlu where nrbehandlung=" + nrbehandlung.ToString)
|
|
bezeichnung = "Offerte " + db.dsDaten.Tables(0).Rows(0).Item(0).ToString
|
|
End If
|
|
If From = GetEmpfaengerType.FromLieferschein Then
|
|
StrukturEintrag_Patient = StrukturEintrag_Lieferschein
|
|
debitor = patient
|
|
db.Get_Tabledata("Behandlung", "", "Select behandlungsgrund from behandlu where nrbehandlung=" + nrbehandlung.ToString)
|
|
bezeichnung = "Lieferschein " + db.dsDaten.Tables(0).Rows(0).Item(0).ToString
|
|
End If
|
|
If From = GetEmpfaengerType.FromAuftragsbestaegigung Then
|
|
StrukturEintrag_Patient = Struktureintrag_Auftragsbestaetigung
|
|
debitor = patient
|
|
db.Get_Tabledata("Behandlung", "", "Select behandlungsgrund from behandlu where nrbehandlung=" + nrbehandlung.ToString)
|
|
bezeichnung = "Auftragsbestätigung " + db.dsDaten.Tables(0).Rows(0).Item(0).ToString
|
|
End If
|
|
Catch
|
|
End Try
|
|
|
|
'Patienten-Dokumente
|
|
Dim dok As New clsDok
|
|
Dim Directoryname As String = System.IO.Path.GetDirectoryName(ifilename)
|
|
Dim Filename As String = System.IO.Path.GetFileName(ifilename)
|
|
Dim DestFilename As String
|
|
DestFilename = System.IO.Path.GetFileNameWithoutExtension(Filename) + "_" + patient.ToString + System.IO.Path.GetExtension(Filename)
|
|
System.IO.File.Copy(Directoryname + "\" + Filename, Directoryname + "\" + DestFilename)
|
|
dok.Create_Doc(StrukturEintrag_Patient, bezeichnung, Directoryname + "\" + DestFilename, patient, Fakturanr)
|
|
System.IO.File.Delete(Directoryname + "\" + DestFilename)
|
|
If CopyDocToGarant = True And patient <> debitor Then
|
|
DestFilename = System.IO.Path.GetFileNameWithoutExtension(Filename) + "_fuer_" + patient.ToString + System.IO.Path.GetExtension(Filename)
|
|
System.IO.File.Copy(Directoryname + "\" + Filename, Directoryname + "\" + DestFilename)
|
|
dok.Create_Doc(StrukturEintrag_Garant, bezeichnung, Directoryname + "\" + DestFilename, debitor, Fakturanr)
|
|
System.IO.File.Delete(Directoryname + "\" + DestFilename)
|
|
End If
|
|
dok = Nothing
|
|
db.Dispose()
|
|
End If
|
|
End Sub
|
|
End Class
|
|
|
|
Public Class clspdfcollectionitem
|
|
Dim m_fakturanr As String
|
|
Property fakturanr As String
|
|
Get
|
|
Return m_fakturanr
|
|
End Get
|
|
Set(value As String)
|
|
m_fakturanr = value
|
|
End Set
|
|
End Property
|
|
|
|
Dim m_path As String
|
|
Property Path As String
|
|
Get
|
|
Return m_path
|
|
End Get
|
|
Set(value As String)
|
|
m_path = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(ByVal fakturanr As String, path As String)
|
|
Me.fakturanr = fakturanr
|
|
Me.Path = path
|
|
End Sub
|
|
End Class
|