fix für PDF-Attachment bei MergePDFs
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
Imports System.IO
|
||||
Imports com.sun.org.apache.xpath.internal.operations
|
||||
Imports Microsoft.Office.Interop
|
||||
Imports VERAG_PROG_ALLGEMEIN
|
||||
|
||||
Public Class cAutomailversand
|
||||
|
||||
Sub sendMailSammelrechnung(_Rechnungsdatum As Date, SammelrechungArt As Integer, FirmaID As Integer, Optional KundenNr As Integer = -1, Optional mailoeffnen As Boolean = False, Optional faktGruppe As String = "")
|
||||
Sub sendMailSammelrechnung(_Rechnungsdatum As Date, SammelrechungArt As Integer, FirmaID As Integer, Optional KundenNr As Integer = -1, Optional mailoeffnen As Boolean = False, Optional faktGruppe As String = "", Optional datumBis As Date = Nothing)
|
||||
Try
|
||||
Dim sql As New VERAG_PROG_ALLGEMEIN.SQL
|
||||
|
||||
@@ -37,7 +38,7 @@ Public Class cAutomailversand
|
||||
LEFT JOIN tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr
|
||||
INNER JOIN Währungstabelle on LandKz = Rechnungsausgang.RechnungsLandKz
|
||||
WHERE Rechnungsausgang.Status IN (2) and Rechnungsausgang.Automailversand_sent is null And Rechnungsausgang.Firma_ID = '" & FirmaID & "' And Rechnungsausgang.Sammelrechnung = '" & SammelrechungArt & "' And CONVERT(DATE,Rechnungsausgang.Rechnungsdatum,104) = '" & _Rechnungsdatum.ToShortDateString & "'
|
||||
and isnull(Rechnungsausgang.Automailversand,0) = 1 and RechnungsNr > 0 and FakturierungsGruppe = '" & faktGruppe & "'" & IIf(KundenNr > 0, " AND RechnungsKundenNr = " & KundenNr, "") & "
|
||||
and isnull(Rechnungsausgang.Automailversand,0) = 1 and RechnungsNr > 0 and FakturierungsGruppe = '" & faktGruppe & "'" & IIf(KundenNr > 0, " AND RechnungsKundenNr = " & KundenNr, "") & IIf(IsDate(datumBis), " AND CONVERT(DATE, Rechnungsausgang.Abfertigungsdatum, 104) <= '" & datumBis.ToShortDateString & "'", "") & "
|
||||
GROUP BY RechnungsNr, RechnungsKundenNr,tblKundenErweitert.kde_SR_IM_EX
|
||||
ORDER BY RechnungsLandKz, RechnungsKundenNr"
|
||||
|
||||
@@ -158,7 +159,7 @@ Public Class cAutomailversand
|
||||
showError = mailoeffnen 'bei MailÖffnen fehler anzeigen!
|
||||
|
||||
setEmailText(row, FirmaID, RechnungsNr, Mailsubject, HTMLMail, SammelrechungArt, dt, BelegartenNr)
|
||||
If do_SR(row.Item("RechnungsKundenNr"), FirmaID, SammelrechungArt, Rechnungsdatum, RechnungsNr, DruckDatumZeit, MDMKopiedrucken, listPDFs,,,, showError, AbfertigungsNr, faktGruppe) Then
|
||||
If do_SR(row.Item("RechnungsKundenNr"), FirmaID, SammelrechungArt, datumBis, Rechnungsdatum, RechnungsNr, DruckDatumZeit, MDMKopiedrucken, listPDFs,,,, showError, AbfertigungsNr, faktGruppe) Then
|
||||
loadAndSetAnhaenge_new(SR_DT, ATTACHMENTS, listPDFs,,, KDE_ERW.kde_merge_pdf)
|
||||
|
||||
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Mailsubject &= " TEST"
|
||||
@@ -475,10 +476,15 @@ Public Class cAutomailversand
|
||||
End Sub
|
||||
|
||||
|
||||
Private Function do_SR(kdNr As Integer, FirmaID As Integer, Sammelrechnungsart As Integer, Rechnungsdatum As Date, lastAktuelle_RgNr As Integer, DruckDatumZeit As Date, Kopie As Boolean, listPDFs As List(Of String), Optional EinzelAnlagen As Boolean = False, Optional Sammelbericht As Boolean = True, Optional saveInThereFore As Boolean = False, Optional showError As Boolean = True, Optional AbfertigungsArt As String = "", Optional faktGruppe As String = "")
|
||||
Private Function do_SR(kdNr As Integer, FirmaID As Integer, Sammelrechnungsart As Integer, DatumBis As Date, Rechnungsdatum As Date, lastAktuelle_RgNr As Integer, DruckDatumZeit As Date, Kopie As Boolean, listPDFs As List(Of String), Optional EinzelAnlagen As Boolean = False, Optional Sammelbericht As Boolean = True, Optional saveInThereFore As Boolean = False, Optional showError As Boolean = True, Optional AbfertigungsArt As String = "", Optional faktGruppe As String = "")
|
||||
|
||||
Dim RechnungsNrisSet As Boolean = False
|
||||
RechnungsNrisSet = cFakturierung.doSAMMELRechnungsDruck(FirmaID, Sammelrechnungsart, Rechnungsdatum, Rechnungsdatum, "", EinzelAnlagen, Sammelbericht, kdNr, 4, listPDFs, "", lastAktuelle_RgNr, DruckDatumZeit,,,,,, faktGruppe, AbfertigungsArt, True, Kopie, True, saveInThereFore, showError)
|
||||
|
||||
If DatumBis = Nothing Then
|
||||
DatumBis = Rechnungsdatum
|
||||
End If
|
||||
|
||||
RechnungsNrisSet = cFakturierung.doSAMMELRechnungsDruck(FirmaID, Sammelrechnungsart, DatumBis, Rechnungsdatum, "", EinzelAnlagen, Sammelbericht, kdNr, 4, listPDFs, "", lastAktuelle_RgNr, DruckDatumZeit,,,,,, faktGruppe, AbfertigungsArt, True, Kopie, True, saveInThereFore, showError)
|
||||
|
||||
Return RechnungsNrisSet
|
||||
End Function
|
||||
|
||||
@@ -999,7 +999,14 @@ Public Class frmAbrechnungsMaske
|
||||
|
||||
Select Case cboSort._value
|
||||
Case "EZ"
|
||||
selectedRows = selectedRows.OrderBy(Function(r) CDate(r.Cells("ReErfZeitstempel").Value))
|
||||
selectedRows = selectedRows.OrderBy(
|
||||
Function(r)
|
||||
Dim value = r.Cells("ReErfZeitstempel").Value
|
||||
Return If(value Is Nothing OrElse IsDBNull(value),
|
||||
DateTime.MinValue,
|
||||
Convert.ToDateTime(value))
|
||||
End Function
|
||||
)
|
||||
|
||||
Case Else
|
||||
selectedRows = selectedRows _
|
||||
|
||||
@@ -462,6 +462,7 @@ Partial Class frmFaktSammelRgDrucken
|
||||
'Button6
|
||||
'
|
||||
Me.Button6.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.Button6.Enabled = False
|
||||
Me.Button6.FlatStyle = System.Windows.Forms.FlatStyle.Flat
|
||||
Me.Button6.Image = Global.SDL.My.Resources.Resources.rechnung1
|
||||
Me.Button6.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
|
||||
|
||||
@@ -140,7 +140,7 @@ Public Class frmFaktSammelRgDrucken
|
||||
Dim SQLAUTOMAIL_RECHNUNGSDATuM = ""
|
||||
|
||||
If cbxAUTOMail.Checked Then
|
||||
SQLAUTOMAIL_RECHNUNGSDATuM = "AND Rechnungsausgang.Status IN (2) AND CONVERT(DATE, Rechnungsausgang.Rechnungsdatum, 104) = '" & txtRechnungsdatum._value & "'"
|
||||
SQLAUTOMAIL_RECHNUNGSDATuM = "AND Rechnungsausgang.Status IN (2) AND CONVERT(DATE, Rechnungsausgang.Rechnungsdatum, 104) = '" & txtRechnungsdatum._value & "' AND CONVERT(DATE, Rechnungsausgang.Abfertigungsdatum, 104) <= '" & txtZeitraumBis._value & "'"
|
||||
Else
|
||||
SQLAUTOMAIL_RECHNUNGSDATuM = " AND Rechnungsausgang.Status IN (0,2) AND CONVERT(DATE, Rechnungsausgang.Abfertigungsdatum, 104) <= '" & txtZeitraumBis._value & "'"
|
||||
End If
|
||||
@@ -979,7 +979,7 @@ Public Class frmFaktSammelRgDrucken
|
||||
|
||||
For Each r In MyDatagridview1.SelectedRows
|
||||
Dim fun As New cAutomailversand
|
||||
fun.sendMailSammelrechnung(CDate(txtRechnungsdatum.Text), Sammelrechung, Firma, r.Cells("RechnungsKundenNr").Value, cbxMailoeffnen.Checked)
|
||||
fun.sendMailSammelrechnung(CDate(txtRechnungsdatum.Text), Sammelrechung, Firma, r.Cells("RechnungsKundenNr").Value, cbxMailoeffnen.Checked,, CDate(txtZeitraumBis.Text))
|
||||
Next
|
||||
|
||||
initDGV()
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
Imports iTextSharp.text.pdf
|
||||
Imports System.IO
|
||||
Imports Microsoft.Office.Interop
|
||||
Imports System.IO
|
||||
Imports System.Net
|
||||
Imports GrapeCity.ActiveReports
|
||||
Imports System.Net.Mail
|
||||
Imports System.Reflection
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports System.Windows.Documents
|
||||
Imports com.sun.tools.internal.ws.wsdl.document.mime
|
||||
Imports GrapeCity.ActiveReports
|
||||
Imports itextsharp.text.pdf
|
||||
Imports Microsoft.Office.Interop
|
||||
Imports VERAG_PROG_ALLGEMEIN
|
||||
|
||||
|
||||
@@ -238,7 +239,7 @@ Public Class frmFormulare
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE Vollmacht (indirekt)", FormularManagerArten.DE_Vollmacht_indirekt))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE Fiskal-Vollmacht", FormularManagerArten.DE_Fiskal))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht", FormularManagerArten.AT_Vollmacht))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht 4200 EV", FormularManagerArten.AT_Vollmacht_EV))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht EV", FormularManagerArten.AT_Vollmacht_EV))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Fiskal-Vollmacht", FormularManagerArten.AT_Fiskal))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Export Vollmacht", FormularManagerArten.VERAG_EXPORT))
|
||||
|
||||
@@ -309,7 +310,7 @@ Public Class frmFormulare
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE Vollmacht (indirekt)", FormularManagerArten.DE_Vollmacht_indirekt))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE Fiskal-Vollmacht", FormularManagerArten.DE_Fiskal))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht", FormularManagerArten.AT_Vollmacht))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht 4200 EV", FormularManagerArten.AT_Vollmacht_EV))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht EV", FormularManagerArten.AT_Vollmacht_EV))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Fiskal-Vollmacht", FormularManagerArten.AT_Fiskal))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GB Vollmacht Import/Export", FormularManagerArten.GB_Vollmacht_IE))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GB Vollmacht indirekt", FormularManagerArten.GB_Vollmacht_indirekt))
|
||||
@@ -359,7 +360,7 @@ Public Class frmFormulare
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE Fiskal-Vollmacht", FormularManagerArten.DE_Fiskal))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE/AT Vollmacht (indirekt)", FormularManagerArten.DE_Vollmacht_indirekt))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht", FormularManagerArten.AT_Vollmacht))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht 4200 EV", FormularManagerArten.AT_Vollmacht_EV))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht EV", FormularManagerArten.AT_Vollmacht_EV))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Fiskal-Vollmacht", FormularManagerArten.AT_Fiskal))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GB Vollmacht Import/Export", FormularManagerArten.GB_Vollmacht_IE))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GB Vollmacht indirekt", FormularManagerArten.GB_Vollmacht_indirekt))
|
||||
@@ -7152,7 +7153,8 @@ Public Class FormularManagerNEU
|
||||
|
||||
If reader.NumberOfPages > 0 Then
|
||||
document.Open()
|
||||
addAttachmentToCurrentPDF(reader, pdf)
|
||||
|
||||
addOnlyFirstAttachmentToCurrentPDF(reader, pdf)
|
||||
|
||||
pdf.AddDocument(reader)
|
||||
reader.Close()
|
||||
@@ -7200,6 +7202,7 @@ Public Class FormularManagerNEU
|
||||
|
||||
For i As Integer = 0 To filespecs.Size - 1 Step 2
|
||||
' Get the attachment's file specification
|
||||
|
||||
Dim fileArray As PdfDictionary = filespecs.GetAsDict(i + 1)
|
||||
Dim file As PdfDictionary = fileArray.GetAsDict(PdfName.EF)
|
||||
|
||||
@@ -7213,12 +7216,77 @@ Public Class FormularManagerNEU
|
||||
' Add the attachment to the new PDF
|
||||
Dim fileSpec As PdfFileSpecification = PdfFileSpecification.FileEmbedded(copy, Nothing, fileName, fileContent)
|
||||
copy.AddFileAttachment(fileName, fileSpec)
|
||||
Exit For
|
||||
|
||||
Next
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
Public Shared Function addOnlyFirstAttachmentToCurrentPDF(reader As PdfReader, copy As PdfCopy) As Boolean
|
||||
|
||||
Dim catalog As PdfDictionary = reader.Catalog
|
||||
Dim names As PdfDictionary = CType(PdfReader.GetPdfObject(catalog.Get(PdfName.NAMES)), PdfDictionary)
|
||||
|
||||
If names IsNot Nothing Then
|
||||
Dim embeddedFiles As PdfDictionary = CType(PdfReader.GetPdfObject(names.Get(PdfName.EMBEDDEDFILES)), PdfDictionary)
|
||||
|
||||
If embeddedFiles IsNot Nothing Then
|
||||
Dim filespecs As PdfArray = embeddedFiles.GetAsArray(PdfName.NAMES)
|
||||
|
||||
If filespecs Is Nothing Then Return False
|
||||
|
||||
For i As Integer = 0 To filespecs.Size - 1 Step 2
|
||||
|
||||
Dim fileArray As PdfDictionary = filespecs.GetAsDict(i + 1)
|
||||
Dim file As PdfDictionary = fileArray.GetAsDict(PdfName.EF)
|
||||
|
||||
For Each key As PdfName In file.Keys
|
||||
|
||||
Dim stream As PRStream =
|
||||
CType(PdfReader.GetPdfObject(file.GetAsIndirectObject(key)), PRStream)
|
||||
|
||||
Dim fileName As String = fileArray.GetAsString(key).ToString()
|
||||
Dim fileContent As Byte() = PdfReader.GetStreamBytes(stream)
|
||||
|
||||
Dim fileSpec As PdfFileSpecification =
|
||||
PdfFileSpecification.FileEmbedded(copy, Nothing, fileName, fileContent)
|
||||
|
||||
copy.AddFileAttachment(fileName, fileSpec)
|
||||
|
||||
Return True ' only one attachment ever gets copied
|
||||
|
||||
Next
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
Return False
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
Private Shared Function HasAnyAttachment(reader As PdfReader) As Boolean
|
||||
|
||||
Dim catalog As PdfDictionary = reader.Catalog
|
||||
|
||||
Dim names As PdfDictionary =
|
||||
TryCast(PdfReader.GetPdfObject(catalog.Get(PdfName.NAMES)), PdfDictionary)
|
||||
|
||||
If names Is Nothing Then Return True
|
||||
|
||||
Dim embeddedFiles As PdfDictionary =
|
||||
TryCast(PdfReader.GetPdfObject(names.Get(PdfName.EMBEDDEDFILES)), PdfDictionary)
|
||||
|
||||
If embeddedFiles Is Nothing Then Return False
|
||||
|
||||
Dim filespecs As PdfArray = embeddedFiles.GetAsArray(PdfName.NAMES)
|
||||
|
||||
Return filespecs IsNot Nothing AndAlso filespecs.Size > 2
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
10
SDL/My Project/Resources.Designer.vb
generated
10
SDL/My Project/Resources.Designer.vb
generated
@@ -2591,6 +2591,16 @@ Namespace My.Resources
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Sucht eine lokalisierte Ressource vom Typ System.Byte[].
|
||||
'''</summary>
|
||||
Friend ReadOnly Property Ustveu_Rechnungsanlagen_BE() As Byte()
|
||||
Get
|
||||
Dim obj As Object = ResourceManager.GetObject("Ustveu_Rechnungsanlagen_BE", resourceCulture)
|
||||
Return CType(obj,Byte())
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Sucht eine lokalisierte Ressource vom Typ System.Byte[].
|
||||
'''</summary>
|
||||
|
||||
@@ -994,4 +994,7 @@
|
||||
<data name="Ustveu_Rechnungsanlagen_DE" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Ustveu-Rechnungsanlagen-DE.xls;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="Ustveu_Rechnungsanlagen_BE" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\Ustveu_Rechnungsanlagen_BE.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
BIN
SDL/Resources/Ustveu_Rechnungsanlagen_BE.xlsx
Normal file
BIN
SDL/Resources/Ustveu_Rechnungsanlagen_BE.xlsx
Normal file
Binary file not shown.
@@ -5065,6 +5065,7 @@
|
||||
<None Include="Resources\SR_EVOLOG.xlsx" />
|
||||
<None Include="Resources\SR_TransFerry360.xlsx" />
|
||||
<None Include="Resources\Ustveu-Rechnungsanlagen-DE.xls" />
|
||||
<None Include="Resources\Ustveu_Rechnungsanlagen_BE.xlsx" />
|
||||
<None Include="Resources\VERAG_CBAM_Report_Template.xlsx" />
|
||||
<None Include="Resources\Zoll\EORI_UID.dotx">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
|
||||
@@ -4,6 +4,7 @@ Imports System.Reflection
|
||||
Imports System.Windows.Documents
|
||||
Imports com.sun.xml.internal.ws.api.pipe
|
||||
Imports itextsharp.text.pdf
|
||||
Imports java.rmi.server
|
||||
Imports Microsoft.Office.Interop
|
||||
Imports VERAG_PROG_ALLGEMEIN
|
||||
|
||||
@@ -80,7 +81,7 @@ Public Class frmMDM_USTVAntrag
|
||||
' left join [tblUStVLeistender] as leist on leist.UStV_Leistender = [tblUStVPositionen].[UStVPo_Leistender]
|
||||
' where UStVAn_ID='" & UStVAn_ID & "' ORDER BY UStVPo_ID", "FMZOLL")
|
||||
|
||||
.SET_SQL("SELECT [UStVAn_ID] ,[UStVPo_ID] " & IIf(cbxInterneNr.Checked, ",[UStVPo_interneNr] as intNr", "") & " ,[UStVPo_ReDat],[UStVPo_ReNr],[UStVPo_Leistungsbezeichnung],[UStVPo_Nettobetrag],[UStVPo_NettobetragEUR],[UStVPo_Leistender],leist.[UstV_Leistender_Strasse] + ' ' + leist.[UstV_Leistender_StrasseNr] as [UstV_Leistender_Strasse],leist.[UstV_Leistender_PLZ],leist.[UstV_Leistender_Stadt],leist.[UstV_Leistender_Land],leist.[UstV_Leistender_UstNr],[UStVPo_USteuerbetrag],[UStVPo_Schnittstelle],[UStVPo_SchnittstellenNr],[UStVPo_Umrechnungskurs],[UStVPo_USteuerbetragEUR],[UStVPo_Sachbearbeiter], [UStVPo_daId], [UStVPo_daId_loeschbar] ,[UStVPo_VZ],[UStVPo_VZ_RKID] ,cast(case when isnull([UStVPo_VZ_RKID],0) = 0 then 0 else 1 end as bit) as VZabrechnet
|
||||
.SET_SQL("SELECT [UStVAn_ID] ,[UStVPo_ID] " & IIf(cbxInterneNr.Checked, ",[UStVPo_interneNr] as intNr", "") & " ,[UStVPo_ReDat],[UStVPo_ReNr],[UStVPo_Leistungsbezeichnung],[UStVPo_Nettobetrag],[UStVPo_NettobetragEUR],[UStVPo_Leistender],leist.[UstV_Leistender_Strasse] + ' ' + leist.[UstV_Leistender_StrasseNr] as [UstV_Leistender_Strasse],leist.[UstV_Leistender_Strasse] as StrasseOnly,leist.[UstV_Leistender_StrasseNr] as StrassenNrOnly,leist.[UstV_Leistender_PLZ],leist.[UstV_Leistender_Stadt],leist.[UstV_Leistender_Land],leist.[UstV_Leistender_UstNr],[UStVPo_USteuerbetrag],[UStVPo_Schnittstelle],[UStVPo_SchnittstellenNr],[UStVPo_Umrechnungskurs],[UStVPo_USteuerbetragEUR],[UStVPo_Sachbearbeiter], [UStVPo_daId], [UStVPo_daId_loeschbar] ,[UStVPo_VZ],[UStVPo_VZ_RKID] ,cast(case when isnull([UStVPo_VZ_RKID],0) = 0 then 0 else 1 end as bit) as VZabrechnet
|
||||
FROM [tblUStVPositionen]
|
||||
LEFT JOIN [tblUStVLeistender] as leist
|
||||
ON ([tblUStVPositionen].[UStVPo_LeistenderId] > 0
|
||||
@@ -99,6 +100,10 @@ Public Class frmMDM_USTVAntrag
|
||||
If .Columns.Count > 0 Then
|
||||
|
||||
.Columns("UStVAn_ID").Visible = False
|
||||
|
||||
.Columns("StrassenNrOnly").Visible = False
|
||||
.Columns("StrasseOnly").Visible = False
|
||||
|
||||
.Columns("UStVPo_ID").HeaderText = "Pos"
|
||||
.Columns("UStVPo_ID").Width = 40
|
||||
|
||||
@@ -4149,21 +4154,43 @@ Public Class frmMDM_USTVAntrag
|
||||
Dim BANK_IBAN As String = ""
|
||||
Dim BANK_BIC As String = ""
|
||||
|
||||
If IsDBNull(ADR.UstIdNr) OrElse ADR.UstIdNr Is Nothing Then
|
||||
MsgBox("UID-Nr ist nicht im Kunden hinterlegt!")
|
||||
End If
|
||||
|
||||
Dim filePath As String = ""
|
||||
Dim fileName As String = USTV_ANTRAG.UStVAn_KuNr & "_" & Antrag_LandKz & "_" & CDate(USTV_ANTRAG.UStVAn_ReDatVon).Month & "_" & CDate(USTV_ANTRAG.UStVAn_ReDatBis).Month & "_" & CDate(USTV_ANTRAG.UStVAn_ReDatBis).Year & "_VATRefund"
|
||||
|
||||
dTLANDEU = (New SQL).loadDgvBySql("select LandKz, MitgliedslandEU from Währungstabelle where LandKz is not null", "FMZOLL")
|
||||
Dim isEU As Boolean = dTLANDEU.AsEnumerable().Where(Function(res) res.Field(Of String)("LandKz") = USTV_ANTRAG.UStVAn_LandKz).Select(Function(res) res.Field(Of Boolean)("MitgliedslandEU")).FirstOrDefault()
|
||||
|
||||
If isEU Then
|
||||
Dim UIDNr As Boolean = True
|
||||
If IsDBNull(ADR.UstIdNr) OrElse ADR.UstIdNr Is Nothing Then
|
||||
|
||||
Select Case MsgBox("UID-Nr ist nicht im Kunden hinterlegt!" & vbNewLine & "Fortfahren?", vbYesNo)
|
||||
Case vbYes : UIDNr = False
|
||||
Case vbNo : Exit Sub
|
||||
End Select
|
||||
|
||||
|
||||
MsgBox("UID-Nr ist nicht im Kunden hinterlegt!")
|
||||
End If
|
||||
|
||||
|
||||
Select Case ADR.LandKz
|
||||
Case "RO", "R" : fileName = fileName & ".xml" : createXMLforRO(ADR, KUNDE, KUNDE_ERW, FIRMA, BANK_OWNER, BANK_IBAN, BANK_BIC, fileName, filePath)
|
||||
Case "DE", "D" : fileName = fileName & ".csv" : createCSVforDE(ADR, KUNDE, KUNDE_ERW, FIRMA, BANK_OWNER, BANK_IBAN, BANK_BIC, fileName, filePath) 'ALTERNATIVE: ELMA5-Massendatenschnittstelle allerdings um einiges aufwendiger!
|
||||
Case "HR" : fileName = fileName & ".xml" : createXMLforHR(ADR, KUNDE, KUNDE_ERW, FIRMA, BANK_OWNER, BANK_IBAN, BANK_BIC, fileName, filePath)
|
||||
Case Else
|
||||
MsgBox("Für das Kundenland " & ADR.LandKz & " wurde kein Export definiert")
|
||||
End Select
|
||||
|
||||
Else
|
||||
Select Case Antrag_LandKz
|
||||
Case "BE" : fileName = fileName & ".xlsx" : createCSVforBE(ADR, KUNDE, KUNDE_ERW, FIRMA, BANK_OWNER, BANK_IBAN, BANK_BIC, fileName, filePath)
|
||||
Case Else
|
||||
MsgBox("Für das Antragsland " & Antrag_LandKz & " wurde kein Export definiert")
|
||||
End Select
|
||||
|
||||
End If
|
||||
|
||||
Select Case ADR.LandKz
|
||||
Case "RO", "R" : fileName = fileName & ".xml" : createXMLforRO(ADR, KUNDE, KUNDE_ERW, FIRMA, BANK_OWNER, BANK_IBAN, BANK_BIC, fileName, filePath)
|
||||
Case "DE", "D" : fileName = fileName & ".csv" : createCSVforDE(ADR, KUNDE, KUNDE_ERW, FIRMA, BANK_OWNER, BANK_IBAN, BANK_BIC, fileName, filePath) 'ALTERNATIVE: ELMA5-Massendatenschnittstelle allerdings um einiges aufwendiger!
|
||||
Case "HR" : fileName = fileName & ".xml" : createXMLforHR(ADR, KUNDE, KUNDE_ERW, FIRMA, BANK_OWNER, BANK_IBAN, BANK_BIC, fileName, filePath)
|
||||
Case Else
|
||||
MsgBox("Für das Land " & ADR.LandKz & " wurde kein Export definiert")
|
||||
End Select
|
||||
|
||||
|
||||
Me.Cursor = Cursors.Default
|
||||
@@ -4726,7 +4753,7 @@ Public Class frmMDM_USTVAntrag
|
||||
list.Add("parkplatz")
|
||||
End If
|
||||
If LeistungsBez.Contains("zubeh") Then
|
||||
list.Add("zubehzubehör")
|
||||
list.Add("zubehör")
|
||||
End If
|
||||
If LeistungsBez.Contains("übern") Then
|
||||
list.Add("übernachtung")
|
||||
@@ -4827,7 +4854,7 @@ Public Class frmMDM_USTVAntrag
|
||||
End If
|
||||
If typ = "maut" Then
|
||||
Code = 4
|
||||
SubCode = "4"
|
||||
SubCode = ""
|
||||
End If
|
||||
|
||||
Case "SI"
|
||||
@@ -4857,7 +4884,7 @@ Public Class frmMDM_USTVAntrag
|
||||
End If
|
||||
If typ = "maut" Then
|
||||
Code = 4
|
||||
SubCode = "4"
|
||||
SubCode = ""
|
||||
End If
|
||||
|
||||
Case "HU"
|
||||
@@ -4877,7 +4904,7 @@ Public Class frmMDM_USTVAntrag
|
||||
End If
|
||||
If typ = "maut" Then
|
||||
Code = 4
|
||||
SubCode = "4"
|
||||
SubCode = ""
|
||||
End If
|
||||
|
||||
Case "SE"
|
||||
@@ -5054,7 +5081,7 @@ Public Class frmMDM_USTVAntrag
|
||||
End If
|
||||
|
||||
|
||||
Datei.Save
|
||||
Datei.Save
|
||||
|
||||
|
||||
Blatt = Datei.Worksheets(1)
|
||||
@@ -5078,6 +5105,156 @@ Public Class frmMDM_USTVAntrag
|
||||
Me.Cursor = Cursors.Default
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
Private Function createCSVforBE(ADR As cAdressen, KUNDE As cKunde, KUNDE_ERW As cKundenErweitert, FIRMA As cFirmen, BANK_OWNER As String, BANK_IBAN As String, BANK_BIC As String, filename As String, filePath As String)
|
||||
|
||||
Try
|
||||
|
||||
|
||||
Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SDL\tmp\"
|
||||
If Not My.Computer.FileSystem.DirectoryExists(sPath) Then
|
||||
My.Computer.FileSystem.CreateDirectory(sPath)
|
||||
End If
|
||||
|
||||
|
||||
Dim exclApp As Object 'as Application
|
||||
Dim Datei As Object 'as WorkBook
|
||||
Dim Blatt As Object 'Microsoft.Office.Interop.Excel.Worksheet 'As Object 'as Worksheet
|
||||
exclApp = CreateObject("Excel.Application")
|
||||
|
||||
With exclApp
|
||||
.Visible = False
|
||||
|
||||
Try
|
||||
filePath = sPath & filename
|
||||
|
||||
'If File.Exists(filePath) Then
|
||||
' File.Delete(filePath)
|
||||
'End If
|
||||
|
||||
My.Computer.FileSystem.WriteAllBytes(filePath, My.Resources.Ustveu_Rechnungsanlagen_BE, False)
|
||||
|
||||
Catch ex As System.Exception
|
||||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||||
Me.Cursor = Cursors.Default
|
||||
Return False
|
||||
|
||||
End Try
|
||||
|
||||
Datei = .Workbooks.Open(filePath) 'Anpassen
|
||||
Blatt = Datei.Worksheets(1) 'Anpassen
|
||||
|
||||
|
||||
Dim counter As Integer = 1
|
||||
Dim zeile As Integer = 3
|
||||
Dim counterLeistungen As Integer = 1
|
||||
|
||||
For Each row As DataGridViewRow In dgvUSTVPositionen.SelectedRows.Cast(Of DataGridViewRow)().OrderBy(Function(dgvr) dgvr.Index)
|
||||
|
||||
Dim UIDNrLeistender = ""
|
||||
Dim LeistenderName As String = ""
|
||||
Dim listOfLeistungstyp As New List(Of String)
|
||||
|
||||
Dim Strasse As String = ""
|
||||
If Not IsDBNull(row.Cells("StrasseOnly").Value) AndAlso row.Cells("StrasseOnly").Value IsNot Nothing AndAlso row.Cells("StrasseOnly").Value <> "" Then Strasse = row.Cells("StrasseOnly").Value
|
||||
|
||||
Dim StrasseNR As String = ""
|
||||
If Not IsDBNull(row.Cells("StrassenNrOnly").Value) AndAlso row.Cells("StrassenNrOnly").Value IsNot Nothing AndAlso row.Cells("StrassenNrOnly").Value <> "" Then StrasseNR = row.Cells("StrassenNrOnly").Value
|
||||
|
||||
Dim Ort As String = ""
|
||||
If Not IsDBNull(row.Cells("UstV_Leistender_Stadt").Value) AndAlso row.Cells("UstV_Leistender_Stadt").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_Stadt").Value <> "" Then Ort = row.Cells("UstV_Leistender_Stadt").Value
|
||||
|
||||
Dim PLZ As String = ""
|
||||
If Not IsDBNull(row.Cells("UstV_Leistender_PLZ").Value) AndAlso row.Cells("UstV_Leistender_PLZ").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_PLZ").Value <> "" Then PLZ = row.Cells("UstV_Leistender_PLZ").Value
|
||||
|
||||
If Not IsDBNull(row.Cells("UstV_Leistender_UstNr").Value) AndAlso row.Cells("UstV_Leistender_UstNr").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_UstNr").Value <> "" Then
|
||||
UIDNrLeistender = row.Cells("UstV_Leistender_UstNr").Value
|
||||
'UIDNrLeistender = UIDNrLeistender.ToString.Replace(Antrag_LandKz, "") DEU wollen das Land dabei!
|
||||
End If
|
||||
|
||||
LeistenderName = row.Cells("UStVPo_Leistender").Value
|
||||
LeistenderName = LeistenderName.ToString.Replace(Antrag_LandKz, "")
|
||||
|
||||
Dim Nettobetrag As Double = 0
|
||||
If Not IsDBNull(row.Cells("UStVPo_Nettobetrag").Value) AndAlso IsNumeric(row.Cells("UStVPo_Nettobetrag").Value) Then Nettobetrag = CDbl(row.Cells("UStVPo_Nettobetrag").Value)
|
||||
|
||||
Dim Steuerbetrag As Double = 0
|
||||
If Not IsDBNull(row.Cells("UStVPo_USteuerbetrag").Value) AndAlso IsNumeric(row.Cells("UStVPo_USteuerbetrag").Value) Then Steuerbetrag = CDbl(row.Cells("UStVPo_USteuerbetrag").Value)
|
||||
|
||||
Dim land = ""
|
||||
Dim iso2Land = ""
|
||||
If Not IsDBNull(row.Cells("UstV_Leistender_Land").Value) AndAlso row.Cells("UstV_Leistender_Land").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_Land").Value <> "" Then land = row.Cells("UstV_Leistender_Land").Value
|
||||
|
||||
If land.Length = 2 Then
|
||||
iso2Land = land
|
||||
ElseIf land.Length = 3 Then
|
||||
iso2Land = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO3Land(land)
|
||||
ElseIf land.Length = 1 Then
|
||||
iso2Land = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO1Land(land)
|
||||
End If
|
||||
|
||||
|
||||
Blatt.Range("A" & zeile).Value = counter
|
||||
Blatt.Range("C" & zeile).Value = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(LeistenderName)
|
||||
Blatt.Range("D" & zeile).Value = UIDNrLeistender
|
||||
Blatt.Range("E" & zeile).Value = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(Strasse)
|
||||
Blatt.Range("F" & zeile).Value = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(StrasseNR)
|
||||
Blatt.Range("G" & zeile).Value = PLZ
|
||||
Blatt.Range("H" & zeile).Value = Ort
|
||||
Blatt.Range("I" & zeile).Value = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getLandEnglFromISO2Land(iso2Land) 'Funktion der das Land auf englisch zurückgibt
|
||||
Blatt.Range("J" & zeile).Value = "Purchase"
|
||||
Blatt.Range("K" & zeile).Value = "Normal"
|
||||
Blatt.Range("L" & zeile).Value = CDate(row.Cells("UStVPo_ReDat").Value).ToString("dd.MM.yyyy")
|
||||
Blatt.Range("M" & zeile).Value = row.Cells("UStVPo_ReNr").Value
|
||||
Blatt.Range("N" & zeile).Value = Nettobetrag.ToString("0.00", CultureInfo.InvariantCulture)
|
||||
Blatt.Range("O" & zeile).Value = Steuerbetrag.ToString("0.00", CultureInfo.InvariantCulture)
|
||||
Blatt.Range("P" & zeile).Value = Steuerbetrag.ToString("0.00", CultureInfo.InvariantCulture)
|
||||
|
||||
If Not IsDBNull(row.Cells("UStVPo_Leistungsbezeichnung").Value) AndAlso row.Cells("UStVPo_Leistungsbezeichnung").Value IsNot Nothing Then
|
||||
|
||||
listOfLeistungstyp = getLeistungsTyp(row.Cells("UStVPo_Leistungsbezeichnung").Value, row.Cells("UStVPo_SchnittstellenNr").Value)
|
||||
|
||||
Dim typeOfGoodsAndService As String = ""
|
||||
If listOfLeistungstyp.Count > 0 Then
|
||||
Select Case listOfLeistungstyp(0)
|
||||
Case "maut" : typeOfGoodsAndService = "Road tolls and road user charge"
|
||||
Case "diesel" : typeOfGoodsAndService = "Fuel"
|
||||
Case "rest" : typeOfGoodsAndService = "Other"
|
||||
Case "übernachtung" : typeOfGoodsAndService = "Accommodation"
|
||||
Case "zubehör" : typeOfGoodsAndService = "Other"
|
||||
Case "parkplatz" : typeOfGoodsAndService = "Travel expenses, such as taxi fares, public transport fares"
|
||||
End Select
|
||||
End If
|
||||
|
||||
|
||||
Blatt.Range("B" & zeile).Value = typeOfGoodsAndService
|
||||
|
||||
End If
|
||||
|
||||
Datei.Save
|
||||
|
||||
|
||||
counter += 1
|
||||
zeile += 1
|
||||
|
||||
Next
|
||||
|
||||
Datei.Save
|
||||
|
||||
.Visible = True
|
||||
|
||||
|
||||
End With
|
||||
|
||||
Catch ex As Exception
|
||||
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
||||
End Try
|
||||
|
||||
Me.Cursor = Cursors.Default
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
Private Function PDFInvoicesPath(ByRef posId As String) As String
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
Imports System.ComponentModel
|
||||
Imports System.Data.SqlClient
|
||||
Imports System.Reflection
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports System.Threading
|
||||
@@ -317,7 +318,7 @@ Public Class cProgramFunctions
|
||||
Case 1, 7 : Return openThereforeNavigatorZollvollmachten_DE(KundenNr)
|
||||
Case 2, 8 : Return openThereforeNavigatorFiskalVM_DE(KundenNr)
|
||||
Case 4, 9 : Return openThereforeNavigatorFiskalVM_AT(KundenNr)
|
||||
Case 12, 13 : Return openThereforeNavigatorVM_AT(KundenNr)
|
||||
' Case 12, 13 : Return openThereforeNavigatorVM_AT(KundenNr)
|
||||
End Select
|
||||
Return False
|
||||
End Function
|
||||
@@ -395,28 +396,74 @@ Public Class cProgramFunctions
|
||||
End Function
|
||||
|
||||
|
||||
Shared Function openThereforeNavigatorVM_AT(KundenNr As String)
|
||||
Try
|
||||
Dim srch = KundenNr & "%"
|
||||
Dim docid As String = ""
|
||||
docid = SQL_VERAG.getValueTxtBySql("SELECT TOP 1 isnull([DocNo],-1) FROM [Therefore].[dbo].[TheCat76] WHERE [String] LIKE '" & srch & "' ORDER BY [Eingabedatum] DESC", "SCANCANON")
|
||||
Public Shared Function ValidateSQLFieldLengths(parameters As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable), tableName As String, Info As String, Optional conn_art As String = "FMZOLL", Optional showError As Boolean = True) As Boolean
|
||||
|
||||
Try
|
||||
|
||||
Dim sql As String =
|
||||
"SELECT COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '" & tableName & "' AND DATA_TYPE IN ('varchar','nvarchar','char','nchar')"
|
||||
|
||||
Dim dt As DataTable =
|
||||
(New SQL).loadDgvBySql(sql, conn_art)
|
||||
|
||||
If dt Is Nothing Then Return False
|
||||
|
||||
Dim fieldLengths As New Dictionary(Of String, Integer)(StringComparer.OrdinalIgnoreCase)
|
||||
|
||||
For Each r As DataRow In dt.Rows
|
||||
|
||||
fieldLengths(r!COLUMN_NAME.ToString) =
|
||||
CInt(r!CHARACTER_MAXIMUM_LENGTH)
|
||||
|
||||
Next
|
||||
|
||||
Dim errors As New List(Of String)
|
||||
|
||||
For Each p As SQLVariable In parameters
|
||||
|
||||
If p Is Nothing Then Continue For
|
||||
If p.Value() Is Nothing Then Continue For
|
||||
If p.Text() Is Nothing Then Continue For
|
||||
|
||||
Dim fieldName As String = p.Text().TrimStart("@"c)
|
||||
|
||||
If Not fieldLengths.ContainsKey(fieldName) Then Continue For
|
||||
|
||||
Dim maxLen As Integer = fieldLengths(fieldName)
|
||||
|
||||
' varchar(max) / nvarchar(max)
|
||||
If maxLen = -1 Then Continue For
|
||||
|
||||
Dim value As String = p.Value().ToString
|
||||
|
||||
If value.Length > maxLen Then
|
||||
|
||||
errors.Add(fieldName & " -> " & value.Length & "/" & maxLen)
|
||||
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
If errors.Count > 0 Then
|
||||
Info = "Folgende SQL-Felder sind zu lang:" & vbCrLf & vbCrLf & String.Join(vbCrLf, errors)
|
||||
If showError Then
|
||||
MsgBox(Info, MsgBoxStyle.Exclamation)
|
||||
End If
|
||||
|
||||
Return False
|
||||
|
||||
End If
|
||||
|
||||
Return True
|
||||
|
||||
If IsNumeric(docid) AndAlso docid > 0 Then
|
||||
' Process.Start("theviewer.exe -" & docid)
|
||||
' Process.Start("C:\Program Files (x86)\Therefore\theviewer.exe -" & docid)
|
||||
Try
|
||||
Shell("C:\Program Files (x86)\Therefore\theviewer.exe -d" & docid)
|
||||
Catch ex As Exception
|
||||
Shell("C:\Program Files\Therefore\theviewer.exe -d" & docid)
|
||||
End Try
|
||||
Else
|
||||
MsgBox("Das Dokument konnte nicht gefunden werden.")
|
||||
End If
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
MsgBox("Fehler beim Öffnen!" & vbNewLine & ex.Message & ex.StackTrace)
|
||||
|
||||
MsgBox("ValidateSQLFieldLengths:" & vbCrLf & ex.Message)
|
||||
|
||||
Return False
|
||||
|
||||
End Try
|
||||
Return False
|
||||
|
||||
End Function
|
||||
|
||||
Shared Function openThereforeNavigatorFiskalVM_AT(KundenNr As String)
|
||||
|
||||
@@ -449,6 +449,12 @@ Public Class cUStVPositionen
|
||||
Public Function SAVE() As Boolean
|
||||
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
|
||||
|
||||
|
||||
If VERAG_PROG_ALLGEMEIN.cProgramFunctions.ValidateSQLFieldLengths(list, "tblUStVPositionen", "", "FMZOLL") Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
|
||||
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblUStVPositionen WHERE UStVAn_ID=@UStVAn_ID AND UStVPo_ID=@UStVPo_ID) " &
|
||||
" BEGIN " & getUpdateCmd() & " END " &
|
||||
" Else " &
|
||||
|
||||
@@ -2458,9 +2458,15 @@ Public Class DATENVERVER_OPTIONS
|
||||
|
||||
Using pdf As New iText.Kernel.Pdf.PdfDocument(New iText.Kernel.Pdf.PdfReader(pdfPath), New iText.Kernel.Pdf.PdfWriter(tempFile))
|
||||
|
||||
|
||||
|
||||
Dim xmlBytes = File.ReadAllBytes(xmlPath)
|
||||
Dim fileName As String = "factur-x.xml"
|
||||
|
||||
If HasAttachment(pdf, fileName) Then
|
||||
Return pdfPath
|
||||
End If
|
||||
|
||||
Dim fs = PdfFileSpec.CreateEmbeddedFileSpec(
|
||||
pdf,
|
||||
xmlBytes,
|
||||
@@ -2490,6 +2496,32 @@ Public Class DATENVERVER_OPTIONS
|
||||
|
||||
End Function
|
||||
|
||||
Private Shared Function HasAttachment(pdf As iText.Kernel.Pdf.PdfDocument, fileName As String) As Boolean
|
||||
|
||||
Dim catalog = pdf.GetCatalog().GetPdfObject()
|
||||
Dim afObj = catalog.Get(iText.Kernel.Pdf.PdfName.AF)
|
||||
|
||||
If afObj Is Nothing Then Return False
|
||||
|
||||
Dim afArray = TryCast(afObj, iText.Kernel.Pdf.PdfArray)
|
||||
If afArray Is Nothing Then Return False
|
||||
|
||||
For i As Integer = 0 To afArray.Size() - 1
|
||||
Dim fsObj = afArray.Get(i)
|
||||
Dim fsDict = TryCast(fsObj, iText.Kernel.Pdf.PdfDictionary)
|
||||
|
||||
If fsDict Is Nothing Then Continue For
|
||||
|
||||
Dim fName = fsDict.GetAsString(iText.Kernel.Pdf.PdfName.F)
|
||||
|
||||
If fName IsNot Nothing AndAlso fName.ToString().Equals(fileName, StringComparison.OrdinalIgnoreCase) Then
|
||||
Return True
|
||||
End If
|
||||
Next
|
||||
|
||||
Return False
|
||||
End Function
|
||||
|
||||
|
||||
Public Shared Function ConvertToPdfA3(inputPdf As String) As String
|
||||
|
||||
|
||||
@@ -366,6 +366,76 @@ Public Class cProgramFunctions
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Public Shared Function ValidateSQLFieldLengths(parameters As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable), tableName As String, Info As String, Optional conn_art As String = "FMZOLL", Optional showError As Boolean = True) As Boolean
|
||||
|
||||
Try
|
||||
|
||||
Dim sql As String =
|
||||
"SELECT COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '" & tableName & "' AND DATA_TYPE IN ('varchar','nvarchar','char','nchar')"
|
||||
|
||||
Dim dt As DataTable =
|
||||
(New SQL).loadDgvBySql(sql, conn_art)
|
||||
|
||||
If dt Is Nothing Then Return False
|
||||
|
||||
Dim fieldLengths As New Dictionary(Of String, Integer)(StringComparer.OrdinalIgnoreCase)
|
||||
|
||||
For Each r As DataRow In dt.Rows
|
||||
|
||||
fieldLengths(r!COLUMN_NAME.ToString) =
|
||||
CInt(r!CHARACTER_MAXIMUM_LENGTH)
|
||||
|
||||
Next
|
||||
|
||||
Dim errors As New List(Of String)
|
||||
|
||||
For Each p As SQLVariable In parameters
|
||||
|
||||
If p Is Nothing Then Continue For
|
||||
If p.Value() Is Nothing Then Continue For
|
||||
If p.Text() Is Nothing Then Continue For
|
||||
|
||||
Dim fieldName As String = p.Text().TrimStart("@"c)
|
||||
|
||||
If Not fieldLengths.ContainsKey(fieldName) Then Continue For
|
||||
|
||||
Dim maxLen As Integer = fieldLengths(fieldName)
|
||||
|
||||
' varchar(max) / nvarchar(max)
|
||||
If maxLen = -1 Then Continue For
|
||||
|
||||
Dim value As String = p.Value().ToString
|
||||
|
||||
If value.Length > maxLen Then
|
||||
|
||||
errors.Add(fieldName & " -> " & value.Length & "/" & maxLen)
|
||||
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
If errors.Count > 0 Then
|
||||
Info = "Folgende SQL-Felder sind zu lang:" & vbCrLf & vbCrLf & String.Join(vbCrLf, errors)
|
||||
If showError Then
|
||||
MsgBox(Info, MsgBoxStyle.Exclamation)
|
||||
End If
|
||||
|
||||
Return False
|
||||
|
||||
End If
|
||||
|
||||
Return True
|
||||
|
||||
Catch ex As Exception
|
||||
|
||||
MsgBox("ValidateSQLFieldLengths:" & vbCrLf & ex.Message)
|
||||
|
||||
Return False
|
||||
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Public Shared Function fktEuro(varBetrag As Object, varVonWährung As Object, varNachWährung As Object) As Object
|
||||
'(FixeTaxe, "ATS", RECHNUNG.Währungscode)
|
||||
'Dim varVonWährung As Object
|
||||
@@ -948,11 +1018,19 @@ BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, [Control], New Object(
|
||||
Return SQL.getValueTxtBySql(sqlstr, "FMZOLL")
|
||||
End Function
|
||||
|
||||
Shared Function getISO1Land(LandKz As String)
|
||||
Dim sqlstr = "SELECT TOP 1 isnull(Währungstabelle.LandKz,'') AS LandKzISO1 FROM [Länderverzeichnis für die Außenhandelsstatistik] LEFT JOIN Währungstabelle ON [Länderverzeichnis für die Außenhandelsstatistik].LandNr = Währungstabelle.Währungsschlüssel WHERE [Länderverzeichnis für die Außenhandelsstatistik].LandKz='" & LandKz & "' "
|
||||
Shared Function getLandEnglFromISO2Land(Iso2Land As String)
|
||||
Dim sqlstr = "SELECT TOP 1 isnull(Land_EN,'') AS LandBez FROM [Währungstabelle] LEFT JOIN [Länderverzeichnis für die Außenhandelsstatistik] ON [Länderverzeichnis für die Außenhandelsstatistik].LandNr = Währungstabelle.Währungsschlüssel WHERE [Länderverzeichnis für die Außenhandelsstatistik].LandKz='" & Iso2Land & "' "
|
||||
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
||||
Return SQL.getValueTxtBySql(sqlstr, "FMZOLL")
|
||||
End Function
|
||||
|
||||
Shared Function getISO1Land(LandKz As String)
|
||||
Dim sqlstr = "SELECT TOP 1 isnull(Währungstabelle.Land_EN,'') AS LandBez FROM [Länderverzeichnis für die Außenhandelsstatistik] LEFT JOIN Währungstabelle ON [Länderverzeichnis für die Außenhandelsstatistik].LandNr = Währungstabelle.Währungsschlüssel WHERE [Länderverzeichnis für die Außenhandelsstatistik].LandKz='" & LandKz & "' "
|
||||
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
||||
Return SQL.getValueTxtBySql(sqlstr, "FMZOLL")
|
||||
End Function
|
||||
|
||||
|
||||
Shared Function convertToIso(s) As String
|
||||
Return s
|
||||
|
||||
|
||||
Reference in New Issue
Block a user