Abrechnungslogik Sammelrechnungen MDM

This commit is contained in:
2025-01-21 10:01:06 +01:00
parent dbb13dffb0
commit 627f48826e
11 changed files with 670 additions and 294 deletions

View File

@@ -1,6 +1,10 @@
Imports System.Data.SqlClient
Imports System.DirectoryServices.ActiveDirectory
Imports System.IO
Imports com.sun.org.apache.bcel.internal.generic
Imports com.sun.tools.internal.ws.wsdl.framework
Imports java.awt.geom
Imports javax.print.attribute.standard
Imports Microsoft.Office.Interop.Outlook
Imports Microsoft.VisualBasic.FileIO
Imports VERAG_PROG_ALLGEMEIN
@@ -39,6 +43,7 @@ Public Class usrCntlMDMAuswertungen
datUeberfaelligeBestVon.Value = CDate("01." & Now.AddMonths(-2).Month & "." & Now.AddMonths(-2).Year)
datUeberfaelligeBestBis.Value = Now
kdUeberfaelligeBest.initKdBox(Me.FindForm)
KdSearchBox3.initKdBox(Me.FindForm)
KdSearchBox1.initKdBox(Me.FindForm)
@@ -78,7 +83,17 @@ Public Class usrCntlMDMAuswertungen
datLeereOBUVon.Value = CDate("01." & Now.AddMonths(-2).Month & "." & Now.AddMonths(-2).Year)
datLeereOBUbis.Value = Now
PathMautberichte = "C:\Users\d.breimaier\Desktop\MDM\Mautgesamtberichte"
PathMautberichte = (New SQL).getValueTxtBySql("SELECT TOP 1 [Param_value] FROM [tblPartnersystem_Paramter] WHERE Param_system='GESAMTMAUT' AND [Param_name]='ANLAGE_PFAD' AND Param_testsystem = " & IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, 1, 0), "FMZOLL")
Dim count = 0
If Directory.Exists(PathMautberichte) Then
If Directory.GetFiles(PathMautberichte) IsNot Nothing Then
For Each f In Directory.GetFiles(PathMautberichte)
If f.ToString.ToLower.EndsWith("_Maut.csv") Or f.ToString.ToLower.EndsWith("_Maut.pdf") Then count += 1
Next
End If
End If
lblAnzahlMautberichte.Text = count & "x Mautberichte"
End Sub
@@ -989,6 +1004,8 @@ Public Class usrCntlMDMAuswertungen
Dim Sachbearbeiter = cboSachbearbeiter._value
Dim rechnungsdatum As Date = CDate(dtRechnungsdatum.Text)
If rechnungsdatum > Today() Then
MsgBox("Rechnungsdatum liegt in der Zukunft, nicht möglich")
Exit Sub
@@ -1059,7 +1076,7 @@ Public Class usrCntlMDMAuswertungen
ok = SQL.doSQL("update [Rechnungsausgang] set Sachbearbeiter='" & Sachbearbeiter & "' where Sammelrechnung=6 and Firma_ID=19 and UPPER([Sachbearbeiter])<>'" & Sachbearbeiter & "' and Abfertigungsdatum = '" & dtRechnungsdatum.Value & "'", "FMZOLL")
If Not VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Exit Sub
'If Not VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Exit Sub
If Not ok Then MsgBox("Fehler") : Exit Sub
@@ -1125,8 +1142,8 @@ Public Class usrCntlMDMAuswertungen
'Gesamtmautberichte an Sammelrechnung anhängen
If Not setMautgesamtberichtInRechnung(Sachbearbeiter, rechnungsdatum, dtSammelrechnungen) Then
MsgBox("Fehler beim Setzen der Gesamtmautberichte")
Exit Sub
'MsgBox("Fehler beim Setzen der Gesamtmautberichte")
'Exit Sub
End If
'Druckinformationen
@@ -1589,7 +1606,7 @@ Public Class usrCntlMDMAuswertungen
Private Function setMautgesamtberichtInRechnung(Sachbearbeiter As String, rechnungsdatum As Date, dtSammelRechnugen As DataTable)
Try
Dim attachmentIsSet As Boolean = False
If dtSammelRechnugen.Rows.Count = 0 Then
MsgBox("Keine Rechnungen für die Anlage der Mautgesamtberichte gefunden!" & vbNewLine & "Vorgang wird abgebrochen.")
Return False
@@ -1604,20 +1621,20 @@ Public Class usrCntlMDMAuswertungen
If IsNumeric(KundenNr) Then
Dim RK_ID As Integer = dtSammelRechnugen.AsEnumerable().Where(Function(r) r.Field(Of Integer)("RechnungsKundenNr") = KundenNr).Select(Function(r) r.Field(Of Integer)("RK_ID")).FirstOrDefault()
Dim RECHNUNG As New cRechnungsausgang(RK_ID)
AddAttachementToRE(FileCSV.FullName, KundenNr, RECHNUNG, rechnungsdatum)
attachmentIsSet = AddAttachementToRE(FileCSV.FullName, KundenNr, RECHNUNG, rechnungsdatum)
End If
End If
ElseIf f.Contains("Maut.pdf") Then
ElseIf f.Contains("_Maut.pdf") Then
Dim FilePDF = New FileInfo(f)
If FilePDF.Name.Length > 10 Then
Dim KundenNr = FilePDF.Name.ToString.Substring(0, 6)
If IsNumeric(KundenNr) Then
Dim RK_ID As Integer = dtSammelRechnugen.AsEnumerable().Where(Function(r) r.Field(Of Integer)("RechnungsKundenNr") = CInt(KundenNr)).Select(Function(r) r.Field(Of Integer)("RK_ID")).FirstOrDefault()
Dim RECHNUNG As New cRechnungsausgang(RK_ID)
AddAttachementToRE(FilePDF.FullName, KundenNr, RECHNUNG, rechnungsdatum)
attachmentIsSet = AddAttachementToRE(FilePDF.FullName, KundenNr, RECHNUNG, rechnungsdatum)
End If
End If
End If
@@ -1625,6 +1642,8 @@ Public Class usrCntlMDMAuswertungen
End If
Return attachmentIsSet
Catch ex As SystemException
End Try
@@ -1633,7 +1652,7 @@ Public Class usrCntlMDMAuswertungen
Private Function AddAttachementToRE(pathFile As String, kdNr As Integer, RECHNUNG As cRechnungsausgang, rechnungsdatum As Date) As Boolean
'TODO: Prüfung, damit anhänge nicht doppelt eingearbeitet werden!
'TODO: Prüfung, damit anhänge nicht doppelt eingearbeitet werden! -> ist DBteschnisch unterbunden mit PrimaryKey-Einschränkung!!!
If Not IO.File.Exists(pathFile) Then Return False
@@ -1657,7 +1676,7 @@ Public Class usrCntlMDMAuswertungen
ANH.dsId = CInt(DS.da_id)
ANH.Bezeichnung = DS.da_name
RECHNUNG.ANHAENGE.Add(ANH)
Return RECHNUNG.SAVE_ANHAENGE(RECHNUNG.RK_ID, False)
Return RECHNUNG.SAVE_ANHAENGE(RECHNUNG.RK_ID, False, False)
Else
Return False
End If
@@ -1666,6 +1685,7 @@ Public Class usrCntlMDMAuswertungen
Private Function setStatus4(Sachbearbeiter As String, rechnungsdatum As Date, dtSammelRechnugen As DataTable) As Boolean
Dim cnt = 0
'strParameter = ParameterBereitstellen(Me![Firma_ID], 0, 6, Me![fldSachbearbeiter], Year(Me!fldRechnungsDatum), Me![fldRechnungsDatum], varDatumZeit)
'Return (New SQL).doSQL("UPDATE [Rechnungsausgang] SET [Status] = 4 WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "'", "FMZOLL")
@@ -1677,11 +1697,24 @@ Public Class usrCntlMDMAuswertungen
If Not reIsSet Then Return reIsSet
If True Then 'cnt Mod 10 = 0 Then
txtPloseAnh_Einarbeitung.Text = cnt & " / " & dtSammelRechnugen.Rows.Count
Dim proz As Double = (cnt / dtSammelRechnugen.Rows.Count) * 100
pbPloseAnh_Proz.Value = proz
lblPloseAnh_Proz.Text = proz.ToString("N2") & " %"
'GroupBox12.Refresh()
My.Application.DoEvents()
End If
cnt += 1
Next
End If
pbPloseAnh_Proz.Value = 100
txtPloseAnh_Einarbeitung.Text = dtSammelRechnugen.Rows.Count & " / " & dtSammelRechnugen.Rows.Count
lblPloseAnh_Proz.Text = "100.00 %"
Return reIsSet
@@ -2130,110 +2163,128 @@ Public Class usrCntlMDMAuswertungen
If cbxMautbericht._value = "" Then Exit Sub
If cbxDateMautbericht._value = "" Then Exit Sub
Try
Select Case cbxMautbericht._value
Select Case cbxMautbericht._value
'nur intern
Case "Gesamtbericht_EXCEL"
Case "Gesamtbericht_EXCEL"
Dim dtGesamtbericht As DataTable = (New SQL).loadDgvBySql("SELECT tblMautbericht.[Customer No], Adressen.Ordnungsbegriff AS [Customer name], tblMautbericht.[Net Amount], tblMautbericht.[VAT Amount], tblMautbericht.[Total Amount] From tblMautbericht INNER Join Adressen On tblMautbericht.[Customer No] = Adressen.AdressenNr Where cast(BillingDate as Date) = '" & cbxDateMautbericht._value & "'", "FMZOLL")
cProgramFunctions.genExcelFromDT_NEW(dtGesamtbericht, {"C1:C" & (dtGesamtbericht.Rows.Count + 1), "D1:D" & (dtGesamtbericht.Rows.Count + 1), "E1:E" & (dtGesamtbericht.Rows.Count + 1)},,,,, True)
Dim dtGesamtbericht As DataTable = (New SQL).loadDgvBySql("SELECT tblMautbericht.[Customer No], Adressen.Ordnungsbegriff AS [Customer name], tblMautbericht.[Net Amount], tblMautbericht.[VAT Amount], tblMautbericht.[Total Amount] From tblMautbericht INNER Join Adressen On tblMautbericht.[Customer No] = Adressen.AdressenNr Where cast(BillingDate as Date) = '" & cbxDateMautbericht._value & "'", "FMZOLL")
cProgramFunctions.genExcelFromDT_NEW(dtGesamtbericht, {"C1:C" & (dtGesamtbericht.Rows.Count + 1), "D1:D" & (dtGesamtbericht.Rows.Count + 1), "E1:E" & (dtGesamtbericht.Rows.Count + 1)},,,,, True)
'für Kunde an RE anhängen
Case "Gesamtbericht_CSV"
Case "Gesamtbericht_CSV"
Dim dtBerichtkunden_CSV As DataTable = (New SQL).loadDgvBySql("SELECT [Customer No], [Licence Plate Number], [Transaction Country], [Transaction date], tblMautbericht.[Product description], tblMautbericht.[Card number], tblMautbericht.[Entry Terminal], tblMautbericht.[Exit Terminal], tblMautbericht.[Net Amount], tblMautbericht.[VAT Amount], tblMautbericht.[Total Amount]
Dim dtBerichtkunden_CSV As DataTable = (New SQL).loadDgvBySql("SELECT [Customer No], [Licence Plate Number], [Transaction Country], [Transaction date], tblMautbericht.[Product description], tblMautbericht.[Card number], tblMautbericht.[Entry Terminal], tblMautbericht.[Exit Terminal], tblMautbericht.[Net Amount], tblMautbericht.[VAT Amount], tblMautbericht.[Total Amount]
FROM Adressen
INNER JOIN tblMautbericht ON Adressen.AdressenNr = tblMautbericht.[Customer No]
WHERE Adressen.ExportMautberichtCSV=1 AND cast(BillingDate as Date) = '" & cbxDateMautbericht._value & "'
ORDER BY tblMautbericht.[Customer No], tblMautbericht.[Licence Plate Number], tblMautbericht.[Transaction Country], tblMautbericht.[Transaction date], tblMautbericht.[Product description], tblMautbericht.[Card number], tblMautbericht.[Entry Terminal], tblMautbericht.[Exit Terminal]", "FMZOLL")
If dtBerichtkunden_CSV.Rows.Count > 0 Then
If dtBerichtkunden_CSV.Rows.Count > 0 Then
Dim displayView = New DataView(dtBerichtkunden_CSV, "", "Customer No", DataViewRowState.CurrentRows)
Dim distinctDT_CSV As DataTable = displayView.ToTable(True, "Customer No")
Dim displayView = New DataView(dtBerichtkunden_CSV, "", "Customer No", DataViewRowState.CurrentRows)
Dim distinctDT_CSV As DataTable = displayView.ToTable(True, "Customer No")
'wenn bereits CSV-Datei im Ordner dann löschen!
If Directory.GetFiles(PathMautberichte) IsNot Nothing Then
For Each f In Directory.GetFiles(PathMautberichte)
If f.ToString.ToLower.EndsWith(".csv") Then File.Delete(f)
Next
End If
'wenn bereits CSV-Datei im Ordner dann löschen!
If Directory.GetFiles(PathMautberichte) IsNot Nothing Then
For Each f In Directory.GetFiles(PathMautberichte)
If f.ToString.ToLower.EndsWith(".csv") Then File.Delete(f)
Next
End If
For Each csv As DataRow In distinctDT_CSV.Rows
For Each csv As DataRow In distinctDT_CSV.Rows
Dim dt_CSV_selected = dtBerichtkunden_CSV.Select("[Customer No] ='" & csv.Item(0) & "'").CopyToDataTable
Dim dt_CSV_selected = dtBerichtkunden_CSV.Select("[Customer No] ='" & csv.Item(0) & "'").CopyToDataTable
Dim fn As String = PathMautberichte & "\" & csv.Item("Customer No") & "_Maut.csv"
Dim outFile As System.IO.StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(fn, False)
Dim clmns As String = ""
For i = 0 To dt_CSV_selected.Columns.Count - 1
clmns &= dt_CSV_selected.Columns(i).ColumnName.ToString().Replace(";", ", ") & ";"
Next
outFile.WriteLine(clmns)
For i = 0 To dt_CSV_selected.Rows.Count - 1
clmns = ""
For j = 0 To dt_CSV_selected.Columns.Count - 1
clmns &= dt_CSV_selected.Rows(i)(j).ToString.Replace(";", ", ") & ";"
Dim fn As String = PathMautberichte & "\" & csv.Item("Customer No") & "_Maut.csv"
Dim outFile As System.IO.StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(fn, False)
Dim clmns As String = ""
For i = 0 To dt_CSV_selected.Columns.Count - 1
clmns &= dt_CSV_selected.Columns(i).ColumnName.ToString().Replace(";", ", ") & ";"
Next
outFile.WriteLine(clmns)
For i = 0 To dt_CSV_selected.Rows.Count - 1
clmns = ""
For j = 0 To dt_CSV_selected.Columns.Count - 1
clmns &= dt_CSV_selected.Rows(i)(j).ToString.Replace(";", ", ") & ";"
Next
outFile.WriteLine(clmns)
Next
outFile.Close()
Next
outFile.Close()
Next
MsgBox("CSV-Berichte wurden unter " & PathMautberichte & "erzeugt.")
Else
MsgBox("Es wurden keine Daten bereitgestellt")
MsgBox("CSV-Berichte wurden unter " & PathMautberichte & "erzeugt.")
Else
MsgBox("Es wurden keine Daten bereitgestellt")
End If
End If
'für Kunde an RE anhängen (Tool Report to Verag Invoice aus FMZOLL)
Case "Lieferantenbericht_PDF"
Case "Lieferantenbericht_PDF"
Dim dtBerichtkunden_PDF As DataTable = (New SQL).loadDgvBySql("SELECT tblMautbericht.[Customer No], Adressen.Ordnungsbegriff AS [Customer name], tblMautbericht.[Licence Plate Number], tblMautbericht.[Transaction date], tblMautbericht.[Transaction Country], tblMautbericht.[Product description], tblMautbericht.[Card number], tblMautbericht.[Entry Terminal], tblMautbericht.[Exit Terminal], Sum(tblMautbericht.[Net Amount]) AS [Net Amount], Sum(tblMautbericht.[VAT Amount]) AS [VAT Amount], Sum(tblMautbericht.[Total Amount]) AS [Total Amount]
Dim dtBerichtkunden_PDF As DataTable = (New SQL).loadDgvBySql("SELECT tblMautbericht.[Customer No], Adressen.Ordnungsbegriff AS [Customer name], tblMautbericht.[Licence Plate Number], tblMautbericht.[Transaction date], tblMautbericht.[Transaction Country], tblMautbericht.[Product description], tblMautbericht.[Card number], tblMautbericht.[Entry Terminal], tblMautbericht.[Exit Terminal], Sum(tblMautbericht.[Net Amount]) AS [Net Amount], Sum(tblMautbericht.[VAT Amount]) AS [VAT Amount], Sum(tblMautbericht.[Total Amount]) AS [Total Amount]
FROM tblMautbericht INNER JOIN Adressen ON tblMautbericht.[Customer No] = Adressen.AdressenNr
WHERE cast(BillingDate as Date) = '" & cbxDateMautbericht._value & "'
GROUP BY tblMautbericht.[Customer No], Adressen.Ordnungsbegriff, tblMautbericht.[Licence Plate Number], tblMautbericht.[Transaction date], tblMautbericht.[Transaction Country], tblMautbericht.[Product description], tblMautbericht.[Card number], tblMautbericht.[Entry Terminal], tblMautbericht.[Exit Terminal] ", "FMZOLL")
If dtBerichtkunden_PDF.Rows.Count = 0 Then
MsgBox("Es wurden keine Daten bereitgestellt")
Exit Sub
End If
If dtBerichtkunden_PDF.Rows.Count = 0 Then
MsgBox("Es wurden keine Daten bereitgestellt")
Exit Sub
End If
Dim displayView = New DataView(dtBerichtkunden_PDF, "", "Customer No", DataViewRowState.CurrentRows)
Dim distinctDT_PDF As DataTable = displayView.ToTable(True, "Customer No")
Dim displayView = New DataView(dtBerichtkunden_PDF, "", "Customer No", DataViewRowState.CurrentRows)
Dim distinctDT_PDF As DataTable = displayView.ToTable(True, "Customer No")
'wenn bereits PDF-Datei im Ordner dann löschen!
'wenn bereits PDF-Datei im Ordner dann löschen!
If Directory.GetFiles(PathMautberichte) IsNot Nothing Then
For Each f In Directory.GetFiles(PathMautberichte)
If f.ToString.ToLower.EndsWith(".pdf") Then File.Delete(f)
Next
End If
If distinctDT_PDF.Rows.Count > 1 Then
For Each pdf As DataRow In distinctDT_PDF.Rows
Dim dt_PDF_selected = dtBerichtkunden_PDF.Select("[Customer No] ='" & pdf.Item(0) & "'").CopyToDataTable
createPDFMautbericht(pdf.Item(0), dt_PDF_selected, cbxDateMautbericht._value, PathMautberichte)
Next
MsgBox("PDF-Berichte wurden unter " & PathMautberichte & "erzeugt.")
Else
MsgBox("Es wurden keine Daten bereitgestellt")
End If
End Select
Dim count = 0
If Directory.Exists(PathMautberichte) Then
If Directory.GetFiles(PathMautberichte) IsNot Nothing Then
For Each f In Directory.GetFiles(PathMautberichte)
If f.ToString.ToLower.EndsWith(".pdf") Then File.Delete(f)
If f.ToString.ToLower.EndsWith("_Maut.csv") Or f.ToString.ToLower.EndsWith("_Maut.pdf") Then count += 1
Next
End If
End If
lblAnzahlMautberichte.Text = count & "x Mautberichte"
If distinctDT_PDF.Rows.Count > 1 Then
For Each pdf As DataRow In distinctDT_PDF.Rows
Dim dt_PDF_selected = dtBerichtkunden_PDF.Select("[Customer No] ='" & pdf.Item(0) & "'").CopyToDataTable
createPDFMautbericht(pdf.Item(0), dt_PDF_selected, cbxDateMautbericht._value, PathMautberichte)
Next
MsgBox("PDF-Berichte wurden unter " & PathMautberichte & "erzeugt.")
Else
MsgBox("Es wurden keine Daten bereitgestellt")
End If
End Select
Catch ex As System.Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
@@ -2412,34 +2463,138 @@ Public Class usrCntlMDMAuswertungen
Exit Sub
End If
Dim cnt = 0
Dim kdnr As Integer = -1
If rbkunde.Checked Then
If KdSearchBox3.KdNr > 0 Then
kdnr = KdSearchBox3.KdNr
Else
MsgBox("Kunde auswählen!")
Exit Sub
End If
End If
If Not vbYes = MsgBox("Möchten Sie die Vorschau der Rechnugnen erstellen?" & vbNewLine & "Es wird eine Rechnungsnummer vergeben, die Rechnungen gelten somit als gedruckt und können nicht mehr bearbeitet werden.", vbYesNoCancel) Then Exit Sub
Dim listPDFs As New List(Of String)
Dim dtSelectedSammelrechnungen As DataTable = (New SQL).loadDgvBySql("SELECT [Firma_ID], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], isnull([Steuersatz %],0) as [Steuersatz %], cast([Lastschrift] as bit) as Lastschrift, [RK_ID], [BelegartenNr],cast([Vorkasse] as bit) as Vorkasse, [Nettozahlungsziel], [OffertenNr], [RechnungsLandKz], [Text]
FROM Rechnungsausgang
WHERE [Status] = 2 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' and RechnungsNr is not null
ORDER BY [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], [Steuersatz %], [Lastschrift], [RK_ID]", "FMZOLL")
'Dim SQLString = "SELECT [Firma_ID], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], isnull([Steuersatz %],0) as [Steuersatz %], cast([Lastschrift] as bit) as Lastschrift, [RK_ID], [BelegartenNr],cast([Vorkasse] as bit) as Vorkasse, [Nettozahlungsziel], [OffertenNr], [RechnungsLandKz], [Text]
' FROM Rechnungsausgang
' WHERE [Status] = 2 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' and RechnungsNr is not null " & IIf(kdnr > 0, " AND RechnungsKundenNr = " & kdnr, "") & "
' ORDER BY [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], [Steuersatz %], [Lastschrift], [RK_ID]"
Dim SQLString = "SELECT [Firma_ID], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status]
FROM Rechnungsausgang
WHERE [Status] = 2 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' and RechnungsNr is not null " & IIf(kdnr > 0, " AND RechnungsKundenNr = " & kdnr, "") & "
group by [Firma_ID], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status]
ORDER BY [Firma_ID], [Status], RechnungsNr"
Dim dtSelectedSammelrechnungen As DataTable = (New SQL).loadDgvBySql(SQLString, "FMZOLL")
If dtSelectedSammelrechnungen.Rows.Count > 0 Then
For Each rowRE In dtSelectedSammelrechnungen.Rows
Dim path = ""
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(rowRE("RechnungsNr"), rowRE("Firma_ID"), rowRE("Buchungsjahr"), rowRE("DruckDatumZeit"), "", True, True, 7, path,, , , , , , , )
If path <> "" Then listPDFs.Add(path)
If True Then 'cnt Mod 10 = 0 Then
txtPloseAnh_Einarbeitung.Text = cnt & " / " & dtSelectedSammelrechnungen.Rows.Count
Dim proz As Double = (cnt / dtSelectedSammelrechnungen.Rows.Count) * 100
pbPloseAnh_Proz.Value = proz
lblPloseAnh_Proz.Text = proz.ToString("N2") & " %"
'GroupBox12.Refresh()
My.Application.DoEvents()
End If
cnt += 1
Next
If listPDFs.Count > 1 Then
Dim pathPDF = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("MDM_Sammelrechnung.pdf", ".pdf", False, False)
If FormularManagerNEU.MergePdfFiles(listPDFs, pathPDF) Then
Process.Start(pathPDF)
Else
MsgBox("Fehler beim zusammenführen der PDFs.")
If listPDFs.Count > 0 Then
Dim pathPDF = listPDFs(0).ToString
If listPDFs.Count > 1 Then
Dim pathPDFMerge = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("MDM_Sammelrechnung.pdf", ".pdf", False, False)
If Not FormularManagerNEU.MergePdfFiles(listPDFs, pathPDFMerge) Then
Exit Sub
MsgBox("Fehler beim Zusammenführen der PDFs.")
End If
End If
pbPloseAnh_Proz.Value = 100
txtPloseAnh_Einarbeitung.Text = dtSelectedSammelrechnungen.Rows.Count & " / " & dtSelectedSammelrechnungen.Rows.Count
lblPloseAnh_Proz.Text = "100.00 %"
Process.Start(pathPDF)
Else
MsgBox("Datei von " & rechnungsdatum.ToShortDateString & " konnte nicht erstellt werden!")
End If
Else
MsgBox("Keine Sammelrechnung zum " & rechnungsdatum.ToShortDateString & " von " & Sachbearbeiter & " vorhanden!")
End If
End Sub
Private Sub KdSearchBox3_TextChanged(sender As Object, e As EventArgs) Handles KdSearchBox3.TextChanged
rbkunde.Checked = True
End Sub
Private Sub Button20_Click_1(sender As Object, e As EventArgs) Handles Button20.Click
Dim Sachbearbeiter = cboSachbearbeiter._value
Dim rechnungsdatum As Date = CDate(dtRechnungsdatum.Text)
Dim deleted As Boolean = False
If rechnungsdatum > Today() Then
MsgBox("Rechnungsdatum liegt in der Zukunft, nicht möglich")
Exit Sub
End If
If Sachbearbeiter = "" Then
MsgBox("Sachbearbeiter auswählen!")
Exit Sub
End If
Dim rechnungenMitGesamtmautanhant As String = (New SQL).getValueTxtBySqlVarList("SELECT COUNT(*) FROM Rechnungsausgang
inner join RechnungsausgangAnhaenge on Rechnungsausgang.RK_ID = RechnungsausgangAnhaenge.RK_ID
WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "'
and (RechnungsausgangAnhaenge.Bezeichnung like '%Maut.pdf' or RechnungsausgangAnhaenge.Bezeichnung like '%Maut.csv')
group by [Firma_ID], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status], RechnungsausgangAnhaenge.Bezeichnung ", "FMZOLL",, 0)
If rechnungenMitGesamtmautanhant <> "" Then
If vbYes = MsgBox("Möchten Sie die " & rechnungenMitGesamtmautanhant & " Gesamtmautberichte (PDF und CSV) aus den Rechnungen vom entfernen?" & vbNewLine & "Die Mautberichte können erneut über 'Durchfüren' and die Rechnung gehängt werden.", vbYesNoCancel) Then
deleted = (New SQL).doSQL("delete from RechnungsausgangAnhaenge where RechnungsausgangAnhaenge.RK_ID IN (SELECT Rechnungsausgang.RK_ID
FROM Rechnungsausgang
inner join RechnungsausgangAnhaenge on Rechnungsausgang.RK_ID = RechnungsausgangAnhaenge.RK_ID
WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "'
and (RechnungsausgangAnhaenge.Bezeichnung like '%Maut.pdf' or RechnungsausgangAnhaenge.Bezeichnung like '%Maut.csv')) and (RechnungsausgangAnhaenge.Bezeichnung like '%Maut.pdf' or RechnungsausgangAnhaenge.Bezeichnung like '%Maut.csv')", "FMZOLL")
If deleted Then MsgBox("Anhänge wurden gelöscht")
End If
Else
MsgBox("In den Rechnungen vom " & rechnungsdatum & " sind keine Gesamtmautberichte angehängt!")
End If
End Sub
End Class