diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb
index a4b3e250..d3437994 100644
--- a/SDL/Fakturierung/cFakturierung.vb
+++ b/SDL/Fakturierung/cFakturierung.vb
@@ -720,15 +720,15 @@ Public Class cFakturierung
'End Function
- Public Shared Function doRechnungsDruck_SRorER(RK_ID As Integer, Optional RechnungsDatum As Object = Nothing, Optional vorschau As Boolean = False, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "", Optional ByRef PrinterName As String = "", Optional printStbVdb As Boolean = False, Optional AnlageEinzelRg As Boolean = False, Optional sammelrechnungKopie As Boolean = False, Optional onlyAsfinagAttach As Boolean = False) As Boolean
+ Public Shared Function doRechnungsDruck_SRorER(RK_ID As Integer, Optional RechnungsDatum As Object = Nothing, Optional vorschau As Boolean = False, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "", Optional ByRef PrinterName As String = "", Optional printStbVdb As Boolean = False, Optional AnlageEinzelRg As Boolean = False, Optional sammelrechnungKopie As Boolean = False, Optional onlyAsfinagAttach As Boolean = False, Optional sammelrechnungsbericht As Boolean = True) As Boolean
If RK_ID <= 0 Then Return False
Dim RG_TMP As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(RK_ID)
If RG_TMP.Sammelrechnung = 0 Then
Return doRechnungsDruck(New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(RK_ID), RechnungsDatum, vorschau, Rechnugnsdruck, Path, PrinterName, , printStbVdb)
ElseIf RG_TMP.Sammelrechnung = 6 Then
- Return cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", AnlageEinzelRg, True, Rechnugnsdruck, Path, False,,,,,,,, True, True, sammelrechnungKopie,,, onlyAsfinagAttach, True)
+ Return cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", AnlageEinzelRg, sammelrechnungsbericht, Rechnugnsdruck, Path, False,,,,,,,, True, True, sammelrechnungKopie,,, onlyAsfinagAttach, True)
Else
- Return cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", AnlageEinzelRg, , Rechnugnsdruck, Path, True)
+ Return cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", AnlageEinzelRg, sammelrechnungsbericht, Rechnugnsdruck, Path, True)
End If
End Function
@@ -4456,9 +4456,12 @@ Public Class cFakturierung
Dim xls_Transferry360 = ""
Dim pathPDF_Anlage As New List(Of String)
+ Dim zugferd As String = ""
'-------------- ENDE --------------
- doSAMMELRechnungsDruck_Abschnitt = doSAMMELRechnungDruck_Rechnungsdruck(dt, RechnungsNr, DruckdatumUhrzeit, 3, RechnungsdruckArt, pathPDF_SammelRg, PrinterName, SRDruckWiederholen, VorschauID) 'Sammelrechnung drucken
+ Dim rpt As rptSammelRechnungDruck
+
+ doSAMMELRechnungsDruck_Abschnitt = doSAMMELRechnungDruck_Rechnungsdruck(dt, RechnungsNr, DruckdatumUhrzeit, 3, RechnungsdruckArt, pathPDF_SammelRg, PrinterName, SRDruckWiederholen, VorschauID,, zugferd) 'Sammelrechnung drucken
If Sammelrechnungsbericht Then If Not doSAMMELRechnungDruck_Rechnungsdruck_Sammelrechnungsbericht(RechnungsNr, DruckdatumUhrzeit, RechnungsdruckArt, pathPDF_SammelBericht, PrinterName, VorschauID, dt, RechnugnskopieMDMSammelrechnung) Then doSAMMELRechnungsDruck_Abschnitt = False 'Sammelrechnungsbericht drucken
If AnlageEinzelRg Then If Not doSAMMELRechnungDruck_Rechnungsdruck_Anlagen(RechnungsNr, DruckdatumUhrzeit, PrinterName, pathPDF_Anlage, RechnungsdruckArt, VorschauID) Then doSAMMELRechnungsDruck_Abschnitt = False 'Anlagen drucken
If RechnungsanhangPDF Then getRechnungsanshang(dt, pathPDF_Anlage, "pdf", onlyAsfinagAnhang)
@@ -4506,7 +4509,7 @@ Public Class cFakturierung
End If
If list.Count > 0 Then
- ' pathPDF = "" 'PAD Pfad zurückgeben!!!!!!
+ ' pathPDF = "" 'PAD Pfad zurückgeben!!!!!!
pathPDF = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("Sammelrechnung_" & RechnungsNr & ".pdf", ".pdf", False, False)
'pathPDF = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "_Sammelrechnung_" & RechnungsNr & ".pdf", ".pdf", False, False)
@@ -4516,6 +4519,28 @@ Public Class cFakturierung
' Process.Start(pathPDF)
End If
+ 'Hier ZUGFERD!!!
+ If pathPDF_Anlage.Count = 0 AndAlso zugferd <> "" Then ' nur wenn keine sonst. A,hänge!
+ Dim Paramslist As New cParameterList(VERAG_PROG_ALLGEMEIN.cAllgemein.PROGID)
+ Dim enableZugpferd = Paramslist.GET_PARAMETER_VALUE_BOOL("ZUGFeRD")
+ If enableZugpferd Then
+ 'tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(False, Nothing, dt, rpt), "ZUGFeRD-invoice.xml")
+ Dim pdfA = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.ConvertToPdfA3(pathPDF)
+ pathPDF = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addZugferdXML(pdfA, zugferd)
+ Else
+ Dim Zugferdpath = zugferd
+ If Zugferdpath IsNot Nothing AndAlso Zugferdpath <> "" Then
+ Dim fileInfo_ZP As New FileInfo(Zugferdpath)
+ Dim ZUGF_DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "ZUGFERD", Now().Year & "_SR", "", "", fileInfo_ZP.Name, -1, False)
+ ZUGF_DS.uploadDataToDATENSERVER(Zugferdpath, fileInfo_ZP.Name, fileInfo_ZP.Extension,,,, True)
+ End If
+
+ End If
+
+ End If
+
+
+
'THEREFORE IMPORT:
'-------------------------------------------------------------------------------
Try
@@ -5347,24 +5372,25 @@ Public Class cFakturierung
pEx.Export(rpt.Document, tmpPath)
+ 'MDM hat eigene Funktion!!
+ 'If isMDMRechnungsdruck AndAlso SammelrechnungsDT IsNot Nothing AndAlso SammelrechnungsDT.Rows.Count > 0 AndAlso Firma.Firma_ID = 19 Then
+ ' Dim Paramslist As New cParameterList(VERAG_PROG_ALLGEMEIN.cAllgemein.PROGID)
+ ' Dim enableZugpferd = Paramslist.GET_PARAMETER_VALUE_BOOL("ZUGFeRD")
+ ' If enableZugpferd Then
+ ' 'tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(False, Nothing, SammelrechnungsDT, , rpt), "ZUGFeRD-invoice.xml")
+ ' Dim pdfA = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.ConvertToPdfA3(tmpPath)
+ ' tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addZugferdXML(pdfA, createZUGFeRD(False, Nothing, SammelrechnungsDT, , rpt))
+ ' Else
+ ' Dim Zugferdpath = createZUGFeRD(False, Nothing, SammelrechnungsDT,, rpt)
+ ' If Zugferdpath IsNot Nothing AndAlso Zugferdpath <> "" Then
+ ' Dim fileInfo_ZP As New FileInfo(Zugferdpath)
+ ' Dim ZUGF_DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "ZUGFERD", Now().Year & "_SR", "", "", fileInfo_ZP.Name, -1, False)
+ ' ZUGF_DS.uploadDataToDATENSERVER(Zugferdpath, fileInfo_ZP.Name, fileInfo_ZP.Extension,,,, True)
+ ' End If
+ ' End If
- If isMDMRechnungsdruck AndAlso SammelrechnungsDT IsNot Nothing AndAlso SammelrechnungsDT.Rows.Count > 0 Then
- Dim Paramslist As New cParameterList(VERAG_PROG_ALLGEMEIN.cAllgemein.PROGID)
- Dim enableZugpferd = Paramslist.GET_PARAMETER_VALUE_BOOL("ZUGFeRD")
- If enableZugpferd Then
- 'tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(False, Nothing, SammelrechnungsDT, , rpt), "ZUGFeRD-invoice.xml")
- tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.AddZugferdXml(tmpPath, createZUGFeRD(False, Nothing, SammelrechnungsDT, , rpt))
- Else
- Dim Zugferdpath = createZUGFeRD(False, Nothing, SammelrechnungsDT,, rpt)
- If Zugferdpath IsNot Nothing AndAlso Zugferdpath <> "" Then
- Dim fileInfo_ZP As New FileInfo(Zugferdpath)
- Dim ZUGF_DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "ZUGFERD", Now().Year & "_SR", "", "", fileInfo_ZP.Name, -1, False)
- ZUGF_DS.uploadDataToDATENSERVER(Zugferdpath, fileInfo_ZP.Name, fileInfo_ZP.Extension,,,, True)
- End If
- End If
-
- End If
+ 'End If
Return rpt
@@ -5733,7 +5759,7 @@ Public Class cFakturierung
Return ""
End Function
- Shared Function doSAMMELRechnungDruck_Rechnungsdruck(dt As DataTable, RechnungsNr As Integer, DruckdatumUhrzeit As Date, Rgstatus As Integer, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "", Optional PrinterName As String = "", Optional SRDruckWiederholen As Boolean = False, Optional VorschauID As String = "", Optional mergePDF As Boolean = False) As Boolean 'RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, Optional vorschau As Boolean = False, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "") As Boolean
+ Shared Function doSAMMELRechnungDruck_Rechnungsdruck(dt As DataTable, RechnungsNr As Integer, DruckdatumUhrzeit As Date, Rgstatus As Integer, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "", Optional PrinterName As String = "", Optional SRDruckWiederholen As Boolean = False, Optional VorschauID As String = "", Optional mergePDF As Boolean = False, Optional ByRef Zugferd As String = "") As Boolean 'RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, Optional vorschau As Boolean = False, Optional Rechnugnsdruck As Integer = -1, Optional ByRef Path As String = "") As Boolean
Try
@@ -6026,129 +6052,107 @@ Public Class cFakturierung
' RECHNUNG.SET_DruckdatumUhrzeit()
'End If
+ 'ORIGINAL
+ Dim AD As New VERAG_PROG_ALLGEMEIN.cAdressen(ROW("RechnungsKundenNr"))
+ Dim RG_Bezeichnung = "Rechnung_" & RechnungsNr & ".pdf"
+ ' Dim RG_Bezeichnung = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "_Rechnung_" & RechnungsNr & ".pdf"
+ 'Rechnugnsdruck = Individuell für deise Rechnung, wird optional mitgegeben
+ ' MsgBox("RechnungsdruckArt2: " & If(Rechnugnsdruck > 0, Rechnugnsdruck, If(AD.Rechnungsdruck, 0)))
- If False Then
+ Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(RG_Bezeichnung, ".pdf", , False)
+ Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport
+ rpt.Run(True)
+ p.NeverEmbedFonts = ""
+ p.Export(rpt.Document, tmpPath)
- Else
-
- 'ORIGINAL
- Dim AD As New VERAG_PROG_ALLGEMEIN.cAdressen(ROW("RechnungsKundenNr"))
- Dim RG_Bezeichnung = "Rechnung_" & RechnungsNr & ".pdf"
- ' Dim RG_Bezeichnung = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "_Rechnung_" & RechnungsNr & ".pdf"
- 'Rechnugnsdruck = Individuell für deise Rechnung, wird optional mitgegeben
- ' MsgBox("RechnungsdruckArt2: " & If(Rechnugnsdruck > 0, Rechnugnsdruck, If(AD.Rechnungsdruck, 0)))
-
- Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(RG_Bezeichnung, ".pdf", , False)
- Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport
- rpt.Run(True)
- p.NeverEmbedFonts = ""
- p.Export(rpt.Document, tmpPath)
-
- If Not isMDMRechnungsdruck Then
-
- Dim Paramslist As New cParameterList(VERAG_PROG_ALLGEMEIN.cAllgemein.PROGID)
- Dim enableZugpferd = Paramslist.GET_PARAMETER_VALUE_BOOL("ZUGFeRD")
- If enableZugpferd Then
- 'tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(False, Nothing, dt, rpt), "ZUGFeRD-invoice.xml")
- tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.AddZugferdXml(tmpPath, createZUGFeRD(False, Nothing, dt, rpt))
- Else
- Dim Zugferdpath = createZUGFeRD(False, Nothing, dt, rpt)
- If Zugferdpath IsNot Nothing AndAlso Zugferdpath <> "" Then
- Dim fileInfo_ZP As New FileInfo(Zugferdpath)
- Dim ZUGF_DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "ZUGFERD", Now().Year & "_SR", "", "", fileInfo_ZP.Name, -1, False)
- ZUGF_DS.uploadDataToDATENSERVER(Zugferdpath, fileInfo_ZP.Name, fileInfo_ZP.Extension,,,, True)
- End If
-
- End If
-
- End If
+ If Not isMDMRechnungsdruck Then Zugferd = createZUGFeRD(False, Nothing, dt, rpt)
- Select Case If(Rechnugnsdruck > 0, Rechnugnsdruck, If(AD.Rechnungsdruck, 0))'If(AD.Rechnungsdruck, 0)
- Case 0, 1 'DRUCKEN
- If isMDMRechnungsdruck Then Return True 'MDM-Sammelrechnungen nicht mitgeben!
+ Select Case If(Rechnugnsdruck > 0, Rechnugnsdruck, If(AD.Rechnungsdruck, 0))'If(AD.Rechnungsdruck, 0)
+ Case 0, 1 'DRUCKEN
- Path = tmpPath 'wird für Therefore benötigt
- Return cProgramFunctions.printRpt(rpt, PrinterName, False)
+ If isMDMRechnungsdruck Then Return True 'MDM-Sammelrechnungen nicht mitgeben!
+
+ Path = tmpPath 'wird für Therefore benötigt
+ Return cProgramFunctions.printRpt(rpt, PrinterName, False)
'Case 1 'FAX
- Case 2 'MAIL
+ Case 2 'MAIL
- 'Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(RG_Bezeichnung, ".pdf", , False)
- 'Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport
- 'rpt.Run(True)
- 'p.NeverEmbedFonts = ""
- 'p.Export(rpt.Document, tmpPath)
- 'rpt.Dispose()
+ 'Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(RG_Bezeichnung, ".pdf", , False)
+ 'Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport
+ 'rpt.Run(True)
+ 'p.NeverEmbedFonts = ""
+ 'p.Export(rpt.Document, tmpPath)
+ 'rpt.Dispose()
- If isMDMRechnungsdruck Then Return True 'MDM-Sammelrechnungen nicht mitgeben!
+ If isMDMRechnungsdruck Then Return True 'MDM-Sammelrechnungen nicht mitgeben!
- Path = tmpPath
+ Path = tmpPath
- Try
- Dim outl As New Outlook.Application
- Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
- Mail = outl.CreateItem(0)
- ' Mail.Subject = "Rechnung Nr. " & ROW("RechnungsNr")
- ' Mail.HTMLBody = "Sehr geehrte Damen und Herren,
anbei erhalten Sie die Rechnung Nr. " & ROW("RechnungsNr") & "."
+ Try
+ Dim outl As New Outlook.Application
+ Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
+ Mail = outl.CreateItem(0)
+ ' Mail.Subject = "Rechnung Nr. " & ROW("RechnungsNr")
+ ' Mail.HTMLBody = "Sehr geehrte Damen und Herren,
anbei erhalten Sie die Rechnung Nr. " & ROW("RechnungsNr") & "."
- ' Mail.Subject = " Rechnung Nr. " & ROW("RechnungsNr")
- ' Mail.Subject = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & " Rechnung Nr. " & ROW("RechnungsNr")
- Select Case ROW("RechnungsLandKz")
- Case "TR"
- Mail.Subject = "Invoice NO. " & ROW("RechnungsNr")
- Mail.HTMLBody = "Sayin Bayanlar ve Baylar,
ekte baslikta yazan faturayi bulabilirsinz."
- Mail.HTMLBody &= "
Saygilarimizla
" & getSignature(ROW("RechnungsLandKz"), ROW("Firma_ID"))
- Case "A", "AT", "D", "DE", "CH"
- Mail.Subject = "Rechnung Nr. " & ROW("RechnungsNr")
- Mail.HTMLBody = "Sehr geehrte Damen und Herren,
im Anhang senden wir Ihnen die o.g. Rechnung."
- Mail.HTMLBody &= "
Mit freundlichen Grüßen
" & getSignature(ROW("RechnungsLandKz"), ROW("Firma_ID"))
- Case Else
- Mail.Subject = "Invoice No. " & ROW("RechnungsNr")
- Mail.HTMLBody = "Dear Sir or Madam,
attached we send you the invoice mentioned above."
- Mail.HTMLBody &= "
Best regards
" & getSignature(ROW("RechnungsLandKz"), ROW("Firma_ID"))
- End Select
- Mail.Attachments.Add(tmpPath, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , "Formular.pdf")
- Mail.Display()
+ ' Mail.Subject = " Rechnung Nr. " & ROW("RechnungsNr")
+ ' Mail.Subject = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & " Rechnung Nr. " & ROW("RechnungsNr")
+ Select Case ROW("RechnungsLandKz")
+ Case "TR"
+ Mail.Subject = "Invoice NO. " & ROW("RechnungsNr")
+ Mail.HTMLBody = "Sayin Bayanlar ve Baylar,
ekte baslikta yazan faturayi bulabilirsinz."
+ Mail.HTMLBody &= "
Saygilarimizla
" & getSignature(ROW("RechnungsLandKz"), ROW("Firma_ID"))
+ Case "A", "AT", "D", "DE", "CH"
+ Mail.Subject = "Rechnung Nr. " & ROW("RechnungsNr")
+ Mail.HTMLBody = "Sehr geehrte Damen und Herren,
im Anhang senden wir Ihnen die o.g. Rechnung."
+ Mail.HTMLBody &= "
Mit freundlichen Grüßen
" & getSignature(ROW("RechnungsLandKz"), ROW("Firma_ID"))
+ Case Else
+ Mail.Subject = "Invoice No. " & ROW("RechnungsNr")
+ Mail.HTMLBody = "Dear Sir or Madam,
attached we send you the invoice mentioned above."
+ Mail.HTMLBody &= "
Best regards
" & getSignature(ROW("RechnungsLandKz"), ROW("Firma_ID"))
+ End Select
+ Mail.Attachments.Add(tmpPath, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , "Formular.pdf")
+ Mail.Display()
- Catch ex As Exception
- MsgBox("Fehler bim Öffnen des Mail-Programmes. PDF wird geladen!")
- Process.Start(tmpPath)
- End Try
- rpt.Dispose()
- Return True
-
- Case 3 'PDF + öffnen
-
- 'Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(RG_Bezeichnung, ".pdf", , False)
- 'Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport
- 'rpt.Run(True)
- 'p.NeverEmbedFonts = ""
- 'p.Export(rpt.Document, tmpPath)
-
- 'rpt.Dispose()
- Path = tmpPath
+ Catch ex As Exception
+ MsgBox("Fehler bim Öffnen des Mail-Programmes. PDF wird geladen!")
Process.Start(tmpPath)
- rpt.Dispose()
- Return True
- Case 4 'PDF
- 'Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(RG_Bezeichnung, ".pdf", , False)
- 'Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport
- 'rpt.Run(True)
- 'p.NeverEmbedFonts = ""
- 'p.Export(rpt.Document, tmpPath)
- 'rpt.Dispose()
+ End Try
+ rpt.Dispose()
+ Return True
- If isMDMRechnungsdruck Then Return True 'MDM-Sammelrechnungen nicht mitgeben!
+ Case 3 'PDF + öffnen
- Path = tmpPath
- rpt.Dispose()
- Return True
+ 'Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(RG_Bezeichnung, ".pdf", , False)
+ 'Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport
+ 'rpt.Run(True)
+ 'p.NeverEmbedFonts = ""
+ 'p.Export(rpt.Document, tmpPath)
+
+ 'rpt.Dispose()
+ Path = tmpPath
+ Process.Start(tmpPath)
+ rpt.Dispose()
+ Return True
+ Case 4 'PDF
+ 'Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(RG_Bezeichnung, ".pdf", , False)
+ 'Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport
+ 'rpt.Run(True)
+ 'p.NeverEmbedFonts = ""
+ 'p.Export(rpt.Document, tmpPath)
+ 'rpt.Dispose()
+
+ If isMDMRechnungsdruck Then Return True 'MDM-Sammelrechnungen nicht mitgeben!
+
+ Path = tmpPath
+ rpt.Dispose()
+ Return True
- End Select
- End If
+ End Select
diff --git a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb
index 9c45785a..60e88511 100644
--- a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb
+++ b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb
@@ -5618,10 +5618,10 @@ mwst:
End If
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
- Button8.Enabled = Not enableAUTOMAIL
- Button9.Enabled = Not enableAUTOMAIL
- Button4.Enabled = Not enableAUTOMAIL
- Button16.Enabled = Not enableAUTOMAIL
+ 'Button8.Enabled = Not enableAUTOMAIL
+ 'Button9.Enabled = Not enableAUTOMAIL
+ 'Button4.Enabled = Not enableAUTOMAIL
+ 'Button16.Enabled = Not enableAUTOMAIL
End If
diff --git a/SDL/kunden/frmKundenUebersichtZollRgDetails.Designer.vb b/SDL/kunden/frmKundenUebersichtZollRgDetails.Designer.vb
index b36c9ecb..93490cd4 100644
--- a/SDL/kunden/frmKundenUebersichtZollRgDetails.Designer.vb
+++ b/SDL/kunden/frmKundenUebersichtZollRgDetails.Designer.vb
@@ -25,11 +25,10 @@ Partial Class frmKundenUebersichtZollRgDetails
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmKundenUebersichtZollRgDetails))
Me.pnl = New System.Windows.Forms.Panel()
- Me.Button2 = New System.Windows.Forms.Button()
+ Me.btnZugferd = New System.Windows.Forms.Button()
Me.Button1 = New System.Windows.Forms.Button()
Me.Label2 = New System.Windows.Forms.Label()
Me.Button15 = New System.Windows.Forms.Button()
- Me.cbxLastschrift = New VERAG_PROG_ALLGEMEIN.MyCheckbox(Me.components)
Me.Label18 = New System.Windows.Forms.Label()
Me.lblWaerung = New System.Windows.Forms.Label()
Me.Label13 = New System.Windows.Forms.Label()
@@ -52,14 +51,22 @@ Partial Class frmKundenUebersichtZollRgDetails
Me.lblSteuerbetrag = New System.Windows.Forms.Label()
Me.lblSteuersatz = New System.Windows.Forms.Label()
Me.lblAbfNr = New System.Windows.Forms.Label()
+ Me.PictureBox5 = New System.Windows.Forms.PictureBox()
+ Me.Button2 = New System.Windows.Forms.Button()
+ Me.cbxLastschrift = New VERAG_PROG_ALLGEMEIN.MyCheckbox(Me.components)
+ Me.Label1 = New System.Windows.Forms.Label()
Me.pnl.SuspendLayout()
CType(Me.DataGridView, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'pnl
'
Me.pnl.BackColor = System.Drawing.Color.White
+ Me.pnl.Controls.Add(Me.Label1)
Me.pnl.Controls.Add(Me.Button2)
+ Me.pnl.Controls.Add(Me.PictureBox5)
+ Me.pnl.Controls.Add(Me.btnZugferd)
Me.pnl.Controls.Add(Me.Button1)
Me.pnl.Controls.Add(Me.Label2)
Me.pnl.Controls.Add(Me.Button15)
@@ -92,17 +99,18 @@ Partial Class frmKundenUebersichtZollRgDetails
Me.pnl.Size = New System.Drawing.Size(560, 517)
Me.pnl.TabIndex = 0
'
- 'Button2
+ 'btnZugferd
'
- Me.Button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat
- Me.Button2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.Button2.Location = New System.Drawing.Point(117, 419)
- Me.Button2.Margin = New System.Windows.Forms.Padding(10, 3, 3, 3)
- Me.Button2.Name = "Button2"
- Me.Button2.Size = New System.Drawing.Size(105, 25)
- Me.Button2.TabIndex = 93
- Me.Button2.Text = "ZUGFeRD"
- Me.Button2.UseVisualStyleBackColor = True
+ Me.btnZugferd.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.btnZugferd.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.btnZugferd.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.btnZugferd.Location = New System.Drawing.Point(446, 420)
+ Me.btnZugferd.Margin = New System.Windows.Forms.Padding(10, 3, 3, 3)
+ Me.btnZugferd.Name = "btnZugferd"
+ Me.btnZugferd.Size = New System.Drawing.Size(64, 25)
+ Me.btnZugferd.TabIndex = 93
+ Me.btnZugferd.Text = "Bericht"
+ Me.btnZugferd.UseVisualStyleBackColor = True
'
'Button1
'
@@ -142,20 +150,6 @@ Partial Class frmKundenUebersichtZollRgDetails
Me.Button15.TextAlign = System.Drawing.ContentAlignment.MiddleRight
Me.Button15.UseVisualStyleBackColor = True
'
- 'cbxLastschrift
- '
- Me.cbxLastschrift._value = ""
- Me.cbxLastschrift.AutoSize = True
- Me.cbxLastschrift.Checked_value = False
- Me.cbxLastschrift.CheckedValue = False
- Me.cbxLastschrift.Location = New System.Drawing.Point(12, 423)
- Me.cbxLastschrift.Name = "cbxLastschrift"
- Me.cbxLastschrift.Size = New System.Drawing.Size(74, 17)
- Me.cbxLastschrift.TabIndex = 15
- Me.cbxLastschrift.Text = "Lastschrift"
- Me.cbxLastschrift.UseVisualStyleBackColor = True
- Me.cbxLastschrift.Visible = False
- '
'Label18
'
Me.Label18.AutoSize = True
@@ -377,6 +371,54 @@ Partial Class frmKundenUebersichtZollRgDetails
Me.lblAbfNr.Text = "-"
Me.lblAbfNr.TextAlign = System.Drawing.ContentAlignment.TopRight
'
+ 'PictureBox5
+ '
+ Me.PictureBox5.BackgroundImage = Global.SDL.My.Resources.Resources.fragezeichen
+ Me.PictureBox5.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.PictureBox5.Location = New System.Drawing.Point(516, 421)
+ Me.PictureBox5.Name = "PictureBox5"
+ Me.PictureBox5.Size = New System.Drawing.Size(23, 22)
+ Me.PictureBox5.TabIndex = 134
+ Me.PictureBox5.TabStop = False
+ '
+ 'Button2
+ '
+ Me.Button2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.Button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.Button2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Button2.Location = New System.Drawing.Point(294, 420)
+ Me.Button2.Margin = New System.Windows.Forms.Padding(10, 3, 3, 3)
+ Me.Button2.Name = "Button2"
+ Me.Button2.Size = New System.Drawing.Size(64, 25)
+ Me.Button2.TabIndex = 136
+ Me.Button2.Text = "check"
+ Me.Button2.UseVisualStyleBackColor = True
+ Me.Button2.Visible = False
+ '
+ 'cbxLastschrift
+ '
+ Me.cbxLastschrift._value = ""
+ Me.cbxLastschrift.AutoSize = True
+ Me.cbxLastschrift.Checked_value = False
+ Me.cbxLastschrift.CheckedValue = False
+ Me.cbxLastschrift.Location = New System.Drawing.Point(12, 423)
+ Me.cbxLastschrift.Name = "cbxLastschrift"
+ Me.cbxLastschrift.Size = New System.Drawing.Size(74, 17)
+ Me.cbxLastschrift.TabIndex = 15
+ Me.cbxLastschrift.Text = "Lastschrift"
+ Me.cbxLastschrift.UseVisualStyleBackColor = True
+ Me.cbxLastschrift.Visible = False
+ '
+ 'Label1
+ '
+ Me.Label1.AutoSize = True
+ Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Label1.Location = New System.Drawing.Point(365, 424)
+ Me.Label1.Name = "Label1"
+ Me.Label1.Size = New System.Drawing.Size(76, 13)
+ Me.Label1.TabIndex = 137
+ Me.Label1.Text = "eRechnung:"
+ '
'frmKundenUebersichtZollRgDetails
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -390,6 +432,7 @@ Partial Class frmKundenUebersichtZollRgDetails
Me.pnl.ResumeLayout(False)
Me.pnl.PerformLayout()
CType(Me.DataGridView, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.PictureBox5, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
@@ -420,5 +463,8 @@ Partial Class frmKundenUebersichtZollRgDetails
Friend WithEvents lblAbfNr As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents Button1 As Button
+ Friend WithEvents btnZugferd As Button
+ Friend WithEvents PictureBox5 As PictureBox
Friend WithEvents Button2 As Button
+ Friend WithEvents Label1 As Label
End Class
diff --git a/SDL/kunden/frmKundenUebersichtZollRgDetails.vb b/SDL/kunden/frmKundenUebersichtZollRgDetails.vb
index fa2ea38f..549249f9 100644
--- a/SDL/kunden/frmKundenUebersichtZollRgDetails.vb
+++ b/SDL/kunden/frmKundenUebersichtZollRgDetails.vb
@@ -5,11 +5,13 @@ Imports VERAG_PROG_ALLGEMEIN
Public Class frmKundenUebersichtZollRgDetails
Dim RK_ID As Integer = -1
+ Dim Sammelrechnung As Integer = -1
Dim SQL As New SQL
Dim sammelrechnungskopie As Boolean
Dim filialeTmp As String
Dim abfertigungsNrTmp As String
+ Dim ZugferdDaId As Integer = -1
Sub New(RK_ID)
' Dieser Aufruf ist für den Designer erforderlich.
@@ -28,7 +30,9 @@ Public Class frmKundenUebersichtZollRgDetails
End Sub
Private Sub frmKundenUebersichtZollRg_Load(sender As Object, e As EventArgs) Handles Me.Load
- Dim dt As DataRow = SQL.loadDgvBySql("SELECT *, /*[SteuerpflichtigerGesamtbetrag]*[Steuersatz %]*/ SteuerpflichtigerGesamtbetrag/(1+[Steuersatz %])*[Steuersatz %] as ErgSteuerbetrag , [SteuerpflichtigerGesamtbetrag]+[SteuerfreierGesamtbetrag] as RgBetrag FROM Rechnungsausgang WHERE RK_ID = " & RK_ID & "", "FMZOLL").Rows(0)
+
+
+ Dim dt As DataRow = SQL.loadDgvBySql("SELECT *, /*[SteuerpflichtigerGesamtbetrag]*[Steuersatz %]*/ SteuerpflichtigerGesamtbetrag/(1+[Steuersatz %])*[Steuersatz %] as ErgSteuerbetrag , [SteuerpflichtigerGesamtbetrag]+[SteuerfreierGesamtbetrag] as RgBetrag,cast(isnull(zugferdcheck,0) as Bit) as zugferdcheck, isnull(zugferdcheck_daid, -1) as zugferdcheck_daid FROM Rechnungsausgang WHERE RK_ID = " & RK_ID & "", "FMZOLL").Rows(0)
lblRgNr.Text = dt("RechnungsNr").ToString
lblRgBetrag.Text = CDbl(dt("RgBetrag")).ToString("N2", CultureInfo.CurrentCulture)
@@ -49,7 +53,31 @@ Public Class frmKundenUebersichtZollRgDetails
lblBelegartNr.Text = dt("BelegartenNr").ToString
lblWaerung.Text = dt("Währungscode").ToString
+ If Not IsDBNull(dt("zugferdcheck")) Then
+
+ If dt("zugferdcheck") Then
+ btnZugferd.BackColor = Color.LightGreen
+ If IsNumeric(dt("zugferdcheck_daid")) Then ZugferdDaId = dt("zugferdcheck_daid")
+ Else
+ If IsNumeric(dt("zugferdcheck_daid")) Then ZugferdDaId = dt("zugferdcheck_daid")
+ btnZugferd.BackColor = Color.IndianRed
+ End If
+
+ Else
+ btnZugferd.BackColor = Color.White
+
+ End If
+
+ Sammelrechnung = CInt(dt("Sammelrechnung").ToString)
+
If RK_ID > 0 Then initDGV()
+
+ If Environment.MachineName = "H6CCWP3" Then
+ Button2.Visible = True
+ Else
+ Button2.Visible = False
+ End If
+
End Sub
Sub initDGV()
@@ -109,7 +137,34 @@ Public Class frmKundenUebersichtZollRgDetails
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- cFakturierung.doRechnungsDruck_SRorER(RK_ID,, False, 3,,,,, sammelrechnungskopie)
+
+ If RK_ID > 0 Then
+ Dim RE As New cRechnungsausgang(RK_ID)
+
+ If RE.dsId > 0 Then
+ Dim RE_PDF As New cDATENSERVER(RE.dsId)
+ Dim tmpPath = RE_PDF.GET_TOP1_PATH
+ If tmpPath <> "" Then
+ Process.Start(tmpPath)
+
+
+
+ End If
+
+ Else
+ Dim SRAnhangen As Boolean = False
+ If Sammelrechnung <> 0 Then
+ If vbYes = MsgBox("Soll die Sammelrechnung mit Anlagen angezeigt werden?", vbYesNoCancel) Then SRAnhangen = True
+ End If
+
+ cFakturierung.doRechnungsDruck_SRorER(RK_ID,, False, 3,,,,, sammelrechnungskopie,, SRAnhangen)
+ End If
+
+ End If
+
+
+
+
End Sub
Public Shared Function ConvertToPdfA3_WithMustang(inputPdf As String) As String
@@ -141,168 +196,73 @@ Public Class frmKundenUebersichtZollRgDetails
End Function
- Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
+ Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btnZugferd.Click
+
+
+ If ZugferdDaId > 0 Then
+
+ Dim ZUG As New cDATENSERVER(ZugferdDaId)
+ Dim tmpPath_Report = ZUG.GET_TOP1_PATH
+ If tmpPath_Report <> "" Then
+ Process.Start(tmpPath_Report)
+ End If
+
+ Else
+
+ End If
+
+ End Sub
+
+
+ Private Sub PictureBox5_Click(sender As Object, e As EventArgs) Handles PictureBox5.Click
+ Dim webAddress As String = "https://wiki.verag.ag/de/software/aviso/howtos/E-Rechnung"
+ Process.Start(webAddress)
+ End Sub
+
+ Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click
Dim Path_temp As String = ""
- cFakturierung.doRechnungsDruck_SRorER(RK_ID,, False, 3, Path_temp,,,, sammelrechnungskopie)
+ If Sammelrechnung = 0 Then
+ cFakturierung.doRechnungsDruck_SRorER(RK_ID,, False, 3, Path_temp,,,, sammelrechnungskopie,, False)
+ Else
+ cFakturierung.doRechnungsDruck_SRorER(RK_ID,, False, 3, Path_temp,,,, sammelrechnungskopie,, False)
+ End If
+
+
If Path_temp <> "" Then
- Try
- 'ConvertToPdfA3_WithMustang(Path_temp)
- Dim psi As New ProcessStartInfo()
+ Dim psi As New ProcessStartInfo()
- psi.FileName = "C:\Program Files\Eclipse Adoptium\jre-11.0.28.6-hotspot\bin\java.exe"
- psi.Arguments = "-jar ""C:\Users\d.breimaier\Downloads\Mustang-CLI-2.21.0.jar"" --no-notices --action validate --source " & Path_temp & ""
+ psi.FileName = "C:\Program Files\Eclipse Adoptium\jre-11.0.28.6-hotspot\bin\java.exe"
+ psi.Arguments = "-jar ""C:\Users\d.breimaier\Downloads\Mustang-CLI-2.21.0.jar"" --no-notices --action validate --source " & Path_temp & ""
- psi.RedirectStandardOutput = True
- psi.RedirectStandardError = True
- psi.UseShellExecute = False
- psi.CreateNoWindow = True
+ psi.RedirectStandardOutput = True
+ psi.RedirectStandardError = True
+ psi.UseShellExecute = False
+ psi.CreateNoWindow = True
- Using p As Process = Process.Start(psi)
- Dim output = p.StandardOutput.ReadToEnd()
- Dim err = p.StandardError.ReadToEnd()
- p.WaitForExit()
+ Using p As Process = Process.Start(psi)
+ Dim output = p.StandardOutput.ReadToEnd()
+ Dim err = p.StandardError.ReadToEnd()
+ p.WaitForExit()
- Console.WriteLine("ExitCode: " & p.ExitCode)
- Console.WriteLine(output)
- Console.WriteLine(err)
+ Console.WriteLine("ExitCode: " & p.ExitCode)
+ Console.WriteLine(output)
+ Console.WriteLine(err)
- If output <> "" Then
- Dim tmpPath_Report = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("MUSTANG-REPORT", ".pdf", , False)
- CreateValidationPdf(output, Path_temp, RK_ID, tmpPath_Report)
- If tmpPath_Report <> "" Then Process.Start(tmpPath_Report)
- End If
+ If output <> "" Then
+ Dim tmpPath_Report = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("MUSTANG-REPORT", ".pdf", , False)
+ VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.CreateValidationPdf(output, Path_temp, RK_ID, tmpPath_Report)
+ If tmpPath_Report <> "" Then Process.Start(tmpPath_Report)
+ End If
- End Using
-
- Catch ex As Exception
- VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
- End Try
-
- End If
-
- End Sub
-
- Private Function ExtractMustangResult(xmlLog As String, invoiceFile As String, RK_ID As Integer) As String
-
- Dim doc As New Xml.XmlDocument()
- doc.LoadXml(xmlLog)
-
- Dim fileInfo As New FileInfo(invoiceFile)
- Dim invoice As New cRechnungsausgang(RK_ID)
-
- ' --- PDF Status ---
- Dim pdfNode = doc.SelectSingleNode("//pdf/summary")
- Dim pdfStatus As String = If(pdfNode?.Attributes("status")?.Value = "valid", "VALID", "INVALID")
-
- ' --- XML Status ---
- Dim xmlNode = doc.SelectSingleNode("//xml/summary")
- Dim xmlStatus As String = If(xmlNode?.Attributes("status")?.Value = "valid", "VALID", "INVALID")
-
- ' --- Profile ---
- Dim profileNode = doc.SelectSingleNode("//xml/info/profile")
- Dim profile As String = If(profileNode IsNot Nothing, profileNode.InnerText, "UNKNOWN")
-
- ' --- XML Version ---
- Dim xmlVersionNode = doc.SelectSingleNode("//xml/info/version")
- Dim xmlVersion As String = If(xmlVersionNode IsNot Nothing, xmlVersionNode.InnerText, "-")
-
- ' --- Validator Version ---
- Dim validatorNode = doc.SelectSingleNode("//xml/info/validator")
- Dim validatorVersion As String = validatorNode?.Attributes("version")?.Value
-
- ' --- Duration ---
- Dim pdfDuration = doc.SelectSingleNode("//pdf/info/duration")?.InnerText
- Dim xmlDuration = doc.SelectSingleNode("//xml/info/duration")?.InnerText
-
- Dim duration As String = ""
- If pdfDuration IsNot Nothing AndAlso xmlDuration IsNot Nothing Then
- duration = $"{pdfDuration} ms (PDF) / {xmlDuration} ms (XML)"
- End If
-
- ' --- Tests ---
- Dim firedNode = doc.SelectSingleNode("//xml/info/rules/fired")
- Dim failedNode = doc.SelectSingleNode("//xml/info/rules/failed")
-
- Dim fired As Integer = If(firedNode IsNot Nothing, Integer.Parse(firedNode.InnerText), 0)
- Dim failed As Integer = If(failedNode IsNot Nothing, Integer.Parse(failedNode.InnerText), 0)
- Dim passed As Integer = fired - failed
-
- ' --- PDF Errors ---
- Dim failedAssertions = doc.SelectNodes("//pdf//TestAssertion[@status='failed']")
- Dim errorCount As Integer = If(failedAssertions IsNot Nothing, failedAssertions.Count, 0)
-
- ' --- Top Errors ---
- Dim errorDetails As New List(Of String)
- If failedAssertions IsNot Nothing Then
- For i = 0 To Math.Min(2, failedAssertions.Count - 1)
- Dim msg = failedAssertions(i).Attributes("message")?.Value
- If msg IsNot Nothing Then errorDetails.Add("- " & msg)
- Next
- End If
-
- ' --- Output ---
- Dim result As New Text.StringBuilder()
-
- result.AppendLine("ZUGFeRD VALIDATION RESULT")
- result.AppendLine("================================")
- result.AppendLine($"PDF File : {fileInfo.Name}")
- result.AppendLine($"Invoice No : {invoice.RechnungsNr}")
- result.AppendLine("--------------------------------")
- result.AppendLine($"PDF Status : {pdfStatus}")
- result.AppendLine($"XML Status : {xmlStatus}")
- result.AppendLine($"Profile : {profile}")
- result.AppendLine($"XML Version : {xmlVersion}")
- result.AppendLine($"Validator : {validatorVersion}")
- result.AppendLine("--------------------------------")
- result.AppendLine($"Tests Passed : {passed} / {fired}")
- result.AppendLine($"XML Failed : {failed}")
- result.AppendLine($"PDF Errors : {errorCount}")
- result.AppendLine($"Duration : {duration}")
-
- If errorDetails.Count > 0 Then
- result.AppendLine("--------------------------------")
- result.AppendLine("Top Errors:")
- For Each err_ In errorDetails
- result.AppendLine(err_)
- Next
- End If
-
- result.AppendLine("================================")
-
- Return result.ToString()
-
- End Function
-
- Public Sub CreateValidationPdf(log As String, Invoice_file As String, RK_ID As Integer, outputPath As String)
-
- Dim resultText = ExtractMustangResult(log, Invoice_file, RK_ID)
-
- Using fs As New FileStream(outputPath, FileMode.Create)
- Using doc As New itextsharp.text.Document()
- Dim writer = itextsharp.text.pdf.PdfWriter.GetInstance(doc, fs)
-
- doc.Open()
-
- Dim titleFont = itextsharp.text.FontFactory.GetFont("Arial", 14, itextsharp.text.Font.BOLD)
- Dim bodyFont = itextsharp.text.FontFactory.GetFont("Arial", 10)
-
- doc.Add(New itextsharp.text.Paragraph("ZUGFeRD VALIDATION REPORT", titleFont))
- doc.Add(New itextsharp.text.Paragraph(" "))
-
- Dim lines = resultText.Split(vbCrLf)
-
- For Each line In lines
- doc.Add(New itextsharp.text.Paragraph(line, bodyFont))
- Next
- doc.Close()
End Using
- End Using
+
+ End If
+
End Sub
-
End Class
\ No newline at end of file
diff --git a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb
index 072c4f86..3fb34d41 100644
--- a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb
+++ b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb
@@ -6,6 +6,7 @@ Imports System.Net
Imports System.Text
Imports System.Text.RegularExpressions
Imports System.Windows.Forms
+Imports System.Xml
Imports DocumentFormat.OpenXml
Imports iText.Kernel.Pdf
Imports iText.Kernel.Pdf.Filespec
@@ -13,11 +14,13 @@ Imports iText.Kernel.XMP
Imports iText.Kernel.XMP.Options
Imports iText.Pdfa
Imports iText.Pdfa.Exceptions
+Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports Spire.Pdf
Imports Spire.Pdf.Attachments
Imports Spire.Pdf.Graphics
Imports Spire.Pdf.Print
+Imports Font = iTextSharp.text.Font
Imports PdfName = iTextSharp.text.pdf.PdfName
@@ -851,13 +854,13 @@ Public Class cFormularManager
- Public Function fillPDF(vorlagenname As String, list As List(Of VERAG_PROG_ALLGEMEIN.MyListItem), listToWrite As List(Of cPDFWriteValues), Optional editierbar As Boolean = True, Optional autoDruck As Boolean = False, Optional printerName As String = "", Optional barcode As Image = Nothing, Optional barcodeLKW As Image = Nothing, Optional uo2 As String = "", Optional openfile As Boolean = True) As String
+ Public Function fillPDF(vorlagenname As String, list As List(Of VERAG_PROG_ALLGEMEIN.MyListItem), listToWrite As List(Of cPDFWriteValues), Optional editierbar As Boolean = True, Optional autoDruck As Boolean = False, Optional printerName As String = "", Optional barcode As System.Drawing.Image = Nothing, Optional barcodeLKW As System.Drawing.Image = Nothing, Optional uo2 As String = "", Optional openfile As Boolean = True) As String
Return fillPDF_Editierbar("DOKUMENTE", "VORLAGEN", "", uo2, "", vorlagenname, list, listToWrite, editierbar, autoDruck, printerName, barcode, barcodeLKW)
End Function
- Public Function fillPDF_Editierbar(da_kategorie As String, da_ordner As String, da_uOrdner1 As String, da_uOrdner2 As String, da_uOrdner3 As String, da_name As String, list As List(Of VERAG_PROG_ALLGEMEIN.MyListItem), listToWrite As List(Of cPDFWriteValues), Optional editierbar As Boolean = True, Optional autoDruck As Boolean = False, Optional printerName As String = "", Optional barcode As Image = Nothing, Optional barcodeLKW As Image = Nothing, Optional openfile As Boolean = True) As String
+ Public Function fillPDF_Editierbar(da_kategorie As String, da_ordner As String, da_uOrdner1 As String, da_uOrdner2 As String, da_uOrdner3 As String, da_name As String, list As List(Of VERAG_PROG_ALLGEMEIN.MyListItem), listToWrite As List(Of cPDFWriteValues), Optional editierbar As Boolean = True, Optional autoDruck As Boolean = False, Optional printerName As String = "", Optional barcode As System.Drawing.Image = Nothing, Optional barcodeLKW As System.Drawing.Image = Nothing, Optional openfile As Boolean = True) As String
Try
Dim DS As New cDATENSERVER(da_kategorie, da_ordner, da_uOrdner1, da_uOrdner2, da_uOrdner3, da_name)
If Not DS.hasITEMS Then Return ""
@@ -1455,7 +1458,7 @@ Public Class cFormularManager
Dim printer As PrintDocument = New PrintDocument
AddHandler printer.PrintPage, Sub(snd As Object, ev As PrintPageEventArgs)
- Dim img As Image = Image.FromFile(pdfPath)
+ Dim img As System.Drawing.Image = System.Drawing.Image.FromFile(pdfPath)
ev.Graphics.DrawImage(img, ev.PageBounds)
End Sub
' printer.PrinterSettings.DefaultPageSettings.PrintableArea.
@@ -1815,7 +1818,7 @@ Public Class cFormularManager
Dim rasterizer = New Ghostscript.NET.Rasterizer.GhostscriptRasterizer
rasterizer.Open(fileName)
'//Image page = rasterizer.GetPage(96,96); <-- this one prints ok
- Dim page As Image = rasterizer.GetPage(600, 600, 1)
+ Dim page As System.Drawing.Image = rasterizer.GetPage(600, 600, 1)
' doc.DocumentName = fileName
Dim doc As New PrintDocument
@@ -2526,21 +2529,20 @@ Public Class DATENVERVER_OPTIONS
Private Shared Sub SetZugferdXmp_NEW(pdf As iText.Kernel.Pdf.PdfDocument, xmlFileName As String)
- Dim xmp As XMPMeta = XMPMetaFactory.Create()
+
+ Dim xmp = iText.Kernel.XMP.XMPMetaFactory.Create()
' =========================
- ' PDF/A
+ ' PDF/A Pflichtfelder
' =========================
- Dim pdfaNs As String = "http://www.aiim.org/pdfa/ns/id/"
- xmp.SetProperty(pdfaNs, "part", "3")
- xmp.SetProperty(pdfaNs, "conformance", "B")
+ xmp.SetProperty("http://www.aiim.org/pdfa/ns/id/", "part", "3")
+ xmp.SetProperty("http://www.aiim.org/pdfa/ns/id/", "conformance", "B")
' =========================
' Factur-X Namespace
' =========================
Dim fxNs As String = "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"
-
- XMPMetaFactory.GetSchemaRegistry().RegisterNamespace(fxNs, "fx")
+ iText.Kernel.XMP.XMPMetaFactory.GetSchemaRegistry().RegisterNamespace(fxNs, "fx")
xmp.SetProperty(fxNs, "DocumentType", "INVOICE")
xmp.SetProperty(fxNs, "DocumentFileName", xmlFileName)
@@ -2548,12 +2550,76 @@ Public Class DATENVERVER_OPTIONS
xmp.SetProperty(fxNs, "ConformanceLevel", "EN 16931")
' =========================
- ' WICHTIG: KEIN XML-MANIPULATION
+ ' PDF/A Extension Schema
+ ' =========================
+ Dim pdfaExt = "http://www.aiim.org/pdfa/ns/extension/"
+ Dim pdfaSchema = "http://www.aiim.org/pdfa/ns/schema#"
+ Dim pdfaProp = "http://www.aiim.org/pdfa/ns/property#"
+
+ ' schemas Array (rdf:Bag ist hier OK für schemas selbst)
+ xmp.SetProperty(pdfaExt, "schemas", Nothing,
+ New iText.Kernel.XMP.Options.PropertyOptions(iText.Kernel.XMP.Options.PropertyOptions.ARRAY))
+
+ ' Schema-Struct hinzufügen
+ xmp.AppendArrayItem(
+ pdfaExt,
+ "schemas",
+ New iText.Kernel.XMP.Options.PropertyOptions(iText.Kernel.XMP.Options.PropertyOptions.ARRAY),
+ Nothing,
+ New iText.Kernel.XMP.Options.PropertyOptions(iText.Kernel.XMP.Options.PropertyOptions.STRUCT)
+ )
+
+ ' Schema Beschreibung
+ xmp.SetStructField(pdfaExt, "schemas[1]", pdfaSchema, "schema", "Factur-X PDFA Extension Schema")
+ xmp.SetStructField(pdfaExt, "schemas[1]", pdfaSchema, "namespaceURI", fxNs)
+ xmp.SetStructField(pdfaExt, "schemas[1]", pdfaSchema, "prefix", "fx")
+
+ ' 🔥 property MUSS rdf:Seq sein!
+ xmp.SetStructField(
+ pdfaExt,
+ "schemas[1]",
+ pdfaSchema,
+ "property",
+ Nothing,
+ New iText.Kernel.XMP.Options.PropertyOptions(
+ iText.Kernel.XMP.Options.PropertyOptions.ARRAY Or
+ iText.Kernel.XMP.Options.PropertyOptions.ARRAY_ORDERED)
+ )
+
+ Dim props = {"DocumentType", "DocumentFileName", "Version", "ConformanceLevel"}
+
+ For i = 0 To props.Length - 1
+
+ Dim arrayPath = "schemas[1]/pdfaSchema:property"
+
+ ' 🔥 Item in rdf:Seq hinzufügen
+ xmp.AppendArrayItem(
+ pdfaExt,
+ arrayPath,
+ New iText.Kernel.XMP.Options.PropertyOptions(
+ iText.Kernel.XMP.Options.PropertyOptions.ARRAY Or
+ iText.Kernel.XMP.Options.PropertyOptions.ARRAY_ORDERED),
+ Nothing,
+ New iText.Kernel.XMP.Options.PropertyOptions(iText.Kernel.XMP.Options.PropertyOptions.STRUCT)
+ )
+
+ Dim idx = i + 1
+ Dim basePath = $"schemas[1]/pdfaSchema:property[{idx}]"
+
+ xmp.SetStructField(pdfaExt, basePath, pdfaProp, "name", props(i))
+ xmp.SetStructField(pdfaExt, basePath, pdfaProp, "valueType", "Text")
+ xmp.SetStructField(pdfaExt, basePath, pdfaProp, "category", "external")
+ xmp.SetStructField(pdfaExt, basePath, pdfaProp, "description", props(i))
+
+ Next
+
+ ' =========================
+ ' XMP ins PDF schreiben
' =========================
pdf.SetXmpMetadata(xmp)
-
End Sub
+
Public Shared Function addAttachementToPDF(File As String, attPath As String, Optional renameFile As String = "") As String
Try
@@ -2603,11 +2669,323 @@ Public Class DATENVERVER_OPTIONS
End Function
+ Shared Function ExtractMustangResult(xmlLog As String, invoiceFile As String, RK_ID As Integer) As MustangResult
+
+ Dim doc As New XmlDocument()
+ doc.LoadXml(xmlLog)
+
+ ' =========================
+ ' PDF STATUS
+ ' =========================
+ Dim pdfNode = doc.SelectSingleNode("//pdf/summary")
+ Dim pdfStatus As String =
+ If(pdfNode?.Attributes("status")?.Value = "valid", "VALID", "INVALID")
+
+ ' =========================
+ ' XML STATUS
+ ' =========================
+ Dim xmlNode = doc.SelectSingleNode("//xml/summary")
+ Dim xmlStatus As String =
+ If(xmlNode?.Attributes("status")?.Value = "valid", "VALID", "INVALID")
+
+ ' =========================
+ ' PROFILE
+ ' =========================
+ Dim profileNode = doc.SelectSingleNode("//xml/info/profile")
+ Dim profile As String =
+ If(profileNode IsNot Nothing, profileNode.InnerText, "UNKNOWN")
+
+ ' =========================
+ ' VERSION
+ ' =========================
+ Dim xmlVersionNode = doc.SelectSingleNode("//xml/info/version")
+ Dim xmlVersion As String =
+ If(xmlVersionNode IsNot Nothing, xmlVersionNode.InnerText, "-")
+
+ Dim validatorNode = doc.SelectSingleNode("//xml/info/validator")
+ Dim validatorVersion As String =
+ validatorNode?.Attributes("version")?.Value
+
+ ' =========================
+ ' DURATION (SAFE)
+ ' =========================
+ Dim pdfDuration = doc.SelectSingleNode("//pdf/info/duration")?.InnerText
+ Dim xmlDuration = doc.SelectSingleNode("//xml/info/duration")?.InnerText
+
+ Dim duration As String =
+ $"{If(pdfDuration, "-")} ms (PDF)" & " / " &
+ $"{If(xmlDuration, "-")} ms (XML)"
+
+ ' =========================
+ ' RULES
+ ' =========================
+ Dim firedNode = doc.SelectSingleNode("//xml/info/rules/fired")
+ Dim failedNode = doc.SelectSingleNode("//xml/info/rules/failed")
+
+ Dim fired As Integer = If(firedNode IsNot Nothing, Integer.Parse(firedNode.InnerText), 0)
+ Dim failed As Integer = If(failedNode IsNot Nothing, Integer.Parse(failedNode.InnerText), 0)
+ Dim passed As Integer = fired - failed
+
+ ' =========================
+ ' RESULT DTO
+ ' =========================
+ Return New MustangResult With {
+ .PdfValid = (pdfStatus = "VALID"),
+ .XmlValid = (xmlStatus = "VALID"),
+ .PdfStatus = pdfStatus,
+ .XmlStatus = xmlStatus,
+ .Profile = profile,
+ .Fired = fired,
+ .Failed = failed,
+ .Passed = passed,
+ .ValidatorVersion = validatorVersion,
+ .XMLVersion = xmlVersion,
+ .Duration = duration
+ }
+
+ End Function
+
+
+ Shared Function CreateValidationPdf(log As String, Invoice_file As String, RK_ID As Integer, outputPath As String) As Boolean
+
+ Dim result = ExtractMustangResult(log, Invoice_file, RK_ID)
+
+ Dim docXml As New XmlDocument()
+ docXml.LoadXml(log)
+
+ Using fs As New FileStream(outputPath, FileMode.Create)
+ Using doc As New iTextSharp.text.Document(iTextSharp.text.PageSize.A4, 36, 36, 36, 36)
+
+ Dim writer = pdf.PdfWriter.GetInstance(doc, fs)
+ doc.Open()
+
+ ' =========================
+ ' FONTS
+ ' =========================
+ Dim titleFont = setFont(18.0F, Font.BOLD)
+ Dim normal = setFont(9.0F, iTextSharp.text.Font.NORMAL)
+ Dim errorFont = setFont(11.0F, Font.BOLD, BaseColor.RED)
+
+ ' =========================
+ ' HEADER
+ ' =========================
+ Dim title As New iTextSharp.text.Paragraph("MUSTANG VALIDATION DASHBOARD", titleFont)
+ title.Alignment = Element.ALIGN_CENTER
+ title.SpacingAfter = 15
+ doc.Add(title)
+
+ doc.Add(New iTextSharp.text.Paragraph(" ", normal))
+
+ ' =========================
+ ' KPI 1
+ ' =========================
+ Dim kpiTable As New PdfPTable(3)
+ kpiTable.WidthPercentage = 100
+ kpiTable.SetWidths(New Single() {33, 33, 34})
+
+ kpiTable.AddCell(CreateKpiCell("PDF STATUS", result.PdfStatus, If(result.PdfValid, BaseColor.GREEN, BaseColor.RED)))
+ kpiTable.AddCell(CreateKpiCell("XML STATUS", result.XmlStatus, If(result.XmlValid, BaseColor.GREEN, BaseColor.RED)))
+ kpiTable.AddCell(CreateKpiCell("PROFILE", result.Profile, BaseColor.DARK_GRAY))
+
+ doc.Add(kpiTable)
+
+ ' =========================
+ ' KPI 2
+ ' =========================
+ Dim kpi2 As New PdfPTable(3)
+ kpi2.WidthPercentage = 100
+ kpi2.SpacingAfter = 15
+ kpi2.SetWidths(New Single() {33, 33, 34})
+
+ kpi2.AddCell(CreateKpiCell("TESTS PASSED", result.Passed.ToString(), BaseColor.DARK_GRAY))
+ kpi2.AddCell(CreateKpiCell("FAILED", result.Failed.ToString(), If(result.Failed > 0, BaseColor.RED, BaseColor.GREEN)))
+ kpi2.AddCell(CreateKpiCell("TOTAL", result.Fired.ToString(), BaseColor.DARK_GRAY))
+
+ doc.Add(kpi2)
+
+ ' =========================
+ ' KPI 3
+ ' =========================
+ 'Dim kpi3 As New PdfPTable(3)
+ 'kpi3.WidthPercentage = 100
+ 'kpi3.SetWidths(New Single() {33, 33, 34})
+
+ 'kpi3.AddCell(CreateKpiCell("VALIDATOR", result.ValidatorVersion, BaseColor.DARK_GRAY))
+ 'kpi3.AddCell(CreateKpiCell("XML VERSION", result.XMLVersion, BaseColor.DARK_GRAY))
+ 'kpi3.AddCell(CreateKpiCell("DURATION", result.Duration, BaseColor.DARK_GRAY))
+
+ 'doc.Add(kpi3)
+
+
+ ' =========================
+ ' DETAILS
+ ' =========================
+ Dim detailHeader As New iTextSharp.text.Paragraph("DETAILS", normal)
+ detailHeader.SpacingAfter = 8
+ doc.Add(New iTextSharp.text.Paragraph(ToFlatText(result, Invoice_file, RK_ID), normal))
+
+
+ ' =========================
+ ' ERROR SECTION
+ ' =========================
+ Dim failedAssertions = docXml.SelectNodes("//pdf//TestAssertion[@status='failed']")
+
+ Dim MessagesXML = docXml.SelectNodes("//xml/messages/*")
+ Dim MessagesPDF = docXml.SelectNodes("//pdf/messages/*")
+
+ Dim errorHeader As New iTextSharp.text.Paragraph("VALIDATION DETAILS", normal)
+ errorHeader.SpacingAfter = 8
+ doc.Add(errorHeader)
+
+ Dim errorTable As New PdfPTable(1)
+ errorTable.WidthPercentage = 100
+
+ Dim hasErrors As Boolean = (failedAssertions IsNot Nothing AndAlso failedAssertions.Count > 0) OrElse (MessagesXML IsNot Nothing AndAlso MessagesXML.Count > 0) OrElse (MessagesPDF IsNot Nothing AndAlso MessagesPDF.Count > 0)
+
+ If hasErrors Then
+ If failedAssertions IsNot Nothing Then
+
+ For i = 0 To failedAssertions.Count - 1
+
+ Dim msg = failedAssertions(i).Attributes("message")?.Value
+ Dim rule = failedAssertions(i).Attributes("ruleId")?.Value
+
+ Dim text = If(rule IsNot Nothing, "[" & rule & "] ", "") &
+ If(msg IsNot Nothing, msg, "Unknown error")
+
+ Dim cell As New PdfPCell(New Phrase(text, normal))
+ cell.BackgroundColor = New BaseColor(245, 245, 245)
+ cell.Padding = 8
+
+ errorTable.AddCell(cell)
+
+ Next
+ End If
+
+ ' XML Messages
+ If MessagesXML IsNot Nothing Then
+ For i = 0 To MessagesXML.Count - 1
+ Dim text = MessagesXML(i).InnerText
+
+ errorTable.AddCell(New PdfPCell(New Phrase(text, normal)) With {
+ .BackgroundColor = New BaseColor(245, 245, 245),
+ .Padding = 8
+ })
+ Next
+ End If
+
+ ' PDF Messages
+ If MessagesPDF IsNot Nothing Then
+ For i = 0 To MessagesPDF.Count - 1
+ Dim text = MessagesPDF(i).InnerText
+
+ errorTable.AddCell(New PdfPCell(New Phrase(text, normal)) With {
+ .BackgroundColor = New BaseColor(245, 245, 245),
+ .Padding = 8
+ })
+ Next
+ End If
+
+ doc.Add(errorTable)
+
+ Else
+ Dim ok As New iTextSharp.text.Paragraph("No validation errors found.", normal)
+ ok.Font.Color = BaseColor.GREEN
+ doc.Add(ok)
+ End If
+
+ ' =========================
+ ' FOOTER
+ ' =========================
+ doc.Add(New iTextSharp.text.Paragraph(" "))
+ Dim footer As New iTextSharp.text.Paragraph("Generated by Mustang Validator", normal)
+ footer.Alignment = Element.ALIGN_RIGHT
+ footer.Font.Color = BaseColor.BLACK
+ doc.Add(footer)
+
+ doc.Close()
+
+ Return result.PdfValid AndAlso result.XmlValid
+
+ End Using
+ End Using
+
+ End Function
+
+
+ Public Shared Function ToFlatText(r As MustangResult, fileName As String, RK_ID As String) As String
+
+ Dim sb As New StringBuilder()
+
+
+ Dim fileInfo As New FileInfo(fileName)
+ Dim invoice As New cRechnungsausgang(RK_ID)
+
+ sb.AppendLine("RESULT")
+ sb.AppendLine("================================")
+ sb.AppendLine($"PDF File : {fileInfo.Name}")
+ sb.AppendLine($"Invoice No : {invoice.RechnungsNr}")
+ sb.AppendLine($"Invoice Date : {CDate(invoice.RechnungsDatum).ToShortDateString}")
+ sb.AppendLine("--------------------------------")
+ sb.AppendLine($"XML Version : {r.XMLVersion}")
+ sb.AppendLine($"Validator : {r.ValidatorVersion}")
+ sb.AppendLine("--------------------------------")
+ sb.AppendLine($"Tests Passed : {r.Passed} / {r.Fired}")
+ sb.AppendLine($"XML Errors : {r.Failed}")
+ sb.AppendLine($"PDF Errors : {If(r.PdfValid AndAlso r.XmlValid, 0, 1)}")
+ sb.AppendLine($"Duration : {r.Duration}")
+ sb.AppendLine($"Created : {Now()}")
+ sb.AppendLine("================================")
+
+ Return sb.ToString()
+
+ End Function
+ Private Shared Function CreateKpiCell(title As String, value As String, color As iTextSharp.text.BaseColor) As iTextSharp.text.pdf.PdfPCell
+
+ Dim titleFont = iTextSharp.text.FontFactory.GetFont("Helvetica", 9, iTextSharp.text.Font.BOLD)
+ Dim valueFont As iTextSharp.text.Font = iTextSharp.text.FontFactory.GetFont(iTextSharp.text.FontFactory.HELVETICA, 11.0F, iTextSharp.text.Font.BOLD, color)
+
+ Dim p As New iTextSharp.text.Paragraph()
+ p.Add(New iTextSharp.text.Phrase(title & vbCrLf, titleFont))
+ p.Add(New iTextSharp.text.Phrase(value, valueFont))
+
+ Dim cell As New iTextSharp.text.pdf.PdfPCell(p)
+ cell.Padding = 10
+ cell.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER
+ cell.VerticalAlignment = iTextSharp.text.Element.ALIGN_MIDDLE
+
+ Return cell
+
+ End Function
+
+ Private Shared Function setFont(size As Single, style As Integer, Optional color As BaseColor = Nothing) As Font
+ If color Is Nothing Then
+ Return FontFactory.GetFont(FontFactory.HELVETICA, size, style)
+ End If
+ Return FontFactory.GetFont(FontFactory.HELVETICA, size, style, color)
+ End Function
+
End Class
+Public Class MustangResult
+ Public Property PdfValid As Boolean
+ Public Property XmlValid As Boolean
+ Public Property PdfStatus As String
+ Public Property XmlStatus As String
+ Public Property Profile As String
+ Public Property Fired As Integer
+ Public Property Failed As Integer
+ Public Property Passed As Integer
+ Public Property ValidatorVersion As String
+ Public Property XMLVersion As String
+ Public Property Duration As String
+End Class
+
+
+
Public Class barcodeToPdf
- Public image As Image = Nothing
+ Public image As System.Drawing.Image = Nothing
Public x As Integer
Public y As Integer
Public width As Integer
@@ -2615,7 +2993,7 @@ Public Class barcodeToPdf
Public onpage = 1
Public rotate As System.Drawing.RotateFlipType = RotateFlipType.RotateNoneFlipNone
- Sub New(image As Image, x As Integer, y As Integer, width As Integer, height As Integer, onpage As Integer, rotate As System.Drawing.RotateFlipType)
+ Sub New(image As System.Drawing.Image, x As Integer, y As Integer, width As Integer, height As Integer, onpage As Integer, rotate As System.Drawing.RotateFlipType)
Me.image = image
Me.x = x
Me.y = y