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

@@ -1234,7 +1234,7 @@ Public Class frmMDMDatenverarbetiung
For Each csv As DataRow In distinctDT_CSV.Rows
Dim dt_CSV_selected = SQL.loadDgvBySql_Param("SELECT * FROM tblUTAImportNew where [Rechnungsdatum] = '" & DateTimePicker2.Text & "' and Kundennummer = " & csv.Item("Customer ID"), "FMZOLL")
Dim dt_CSV_selected = SQL.loadDgvBySql_Param("SELECT * FROM tblUTAImportNew where [Rechnungsdatum] = '" & DateTimePicker2.Text & "' and Kundennummer = " & csv.Item("Customer ID"), "FMZOLL")
dt_CSV_selected.ParentRelations.Clear()
dt_CSV_selected.ChildRelations.Clear()
dt_CSV_selected.Constraints.Clear()
@@ -1305,7 +1305,7 @@ Public Class frmMDMDatenverarbetiung
End If
If Not Directory.Exists(dirAnhang) Then Directory.CreateDirectory(dirAnhang)
For Each f In Directory.GetFiles(dir)
File.Copy(f, dirAnhang & (New FileInfo(f)).Name)
File.Copy(f, dirAnhang & (New FileInfo(f)).Name, True)
Next
pbPloseAnh_Proz.Value = 100
txtPloseAnh_Einarbeitung.Text = dt_Main.Rows.Count & " / " & dt_Main.Rows.Count
@@ -1457,7 +1457,7 @@ Public Class frmMDMDatenverarbetiung
End If
For Each f In Directory.GetFiles(dir)
File.Copy(f, dirAnhang & "\" & (New FileInfo(f)).Name)
File.Copy(f, dirAnhang & "\" & (New FileInfo(f)).Name, True)
Next
'IN FMZOLL / DB MautD einfügen --> Mautbericht
@@ -1603,7 +1603,7 @@ Public Class frmMDMDatenverarbetiung
End If
For Each f In Directory.GetFiles(dir)
File.Copy(f, dirAnhang & "\" & (New FileInfo(f)).Name)
File.Copy(f, dirAnhang & "\" & (New FileInfo(f)).Name, True)
Next
pbPloseAnh_Proz.Value = 100
@@ -4061,6 +4061,7 @@ Public Class frmMDMDatenverarbetiung
sum(trans.transaction_gross_amount) As [Summe Transaction Amount ( EUR )],
sum(trans.msts_fee_amount) As [Summe Admin Fee Amount ( EUR )],
sum(trans.msts_fee_amount) As [Summe Fees And Costs Amount ( EUR )],
sum(trans.msts_vat_amount) As [Summe VAT Amount ( EUR )],
sum(trans.transaction_gross_amount) As [Summe Total Amount ( EUR )]
From [VERAG].[dbo].[tblMSESettlements] as bills

View File

@@ -141,6 +141,15 @@ Partial Class usrCntlMDMAuswertungen
Me.Button18 = New System.Windows.Forms.Button()
Me.Label44 = New System.Windows.Forms.Label()
Me.GroupBox13 = New System.Windows.Forms.GroupBox()
Me.Button20 = New System.Windows.Forms.Button()
Me.Label72 = New System.Windows.Forms.Label()
Me.KdSearchBox3 = New VERAG_PROG_ALLGEMEIN.KdSearchBox()
Me.rbkunde = New System.Windows.Forms.RadioButton()
Me.rbAlleKunden = New System.Windows.Forms.RadioButton()
Me.txtPloseAnh_Einarbeitung = New System.Windows.Forms.TextBox()
Me.Label71 = New System.Windows.Forms.Label()
Me.pbPloseAnh_Proz = New System.Windows.Forms.ProgressBar()
Me.lblPloseAnh_Proz = New System.Windows.Forms.Label()
Me.Button19 = New System.Windows.Forms.Button()
Me.Label70 = New System.Windows.Forms.Label()
Me.cboSachbearbeiter = New VERAG_PROG_ALLGEMEIN.MyComboBox()
@@ -199,6 +208,7 @@ Partial Class usrCntlMDMAuswertungen
Me.btnContractdaten = New System.Windows.Forms.Button()
Me.Button15 = New System.Windows.Forms.Button()
Me.pnl = New System.Windows.Forms.Panel()
Me.lblAnzahlMautberichte = New System.Windows.Forms.Label()
Me.GroupBox1.SuspendLayout()
Me.GroupBox2.SuspendLayout()
CType(Me.pic, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -1476,6 +1486,7 @@ Partial Class usrCntlMDMAuswertungen
'
'GroupBox19
'
Me.GroupBox19.Controls.Add(Me.lblAnzahlMautberichte)
Me.GroupBox19.Controls.Add(Me.cbxDateMautbericht)
Me.GroupBox19.Controls.Add(Me.Label69)
Me.GroupBox19.Controls.Add(Me.Label68)
@@ -1512,7 +1523,7 @@ Partial Class usrCntlMDMAuswertungen
'
Me.Label68.Location = New System.Drawing.Point(142, 57)
Me.Label68.Name = "Label68"
Me.Label68.Size = New System.Drawing.Size(541, 20)
Me.Label68.Size = New System.Drawing.Size(333, 20)
Me.Label68.TabIndex = 30
Me.Label68.Text = "Generiert Mautbericht und hängt sie an den Sammelrechnungen an."
'
@@ -1561,6 +1572,15 @@ Partial Class usrCntlMDMAuswertungen
'
'GroupBox13
'
Me.GroupBox13.Controls.Add(Me.Button20)
Me.GroupBox13.Controls.Add(Me.Label72)
Me.GroupBox13.Controls.Add(Me.KdSearchBox3)
Me.GroupBox13.Controls.Add(Me.rbkunde)
Me.GroupBox13.Controls.Add(Me.rbAlleKunden)
Me.GroupBox13.Controls.Add(Me.txtPloseAnh_Einarbeitung)
Me.GroupBox13.Controls.Add(Me.Label71)
Me.GroupBox13.Controls.Add(Me.pbPloseAnh_Proz)
Me.GroupBox13.Controls.Add(Me.lblPloseAnh_Proz)
Me.GroupBox13.Controls.Add(Me.Button19)
Me.GroupBox13.Controls.Add(Me.Label70)
Me.GroupBox13.Controls.Add(Me.cboSachbearbeiter)
@@ -1574,19 +1594,123 @@ Partial Class usrCntlMDMAuswertungen
Me.GroupBox13.Controls.Add(Me.Button14)
Me.GroupBox13.Location = New System.Drawing.Point(14, 298)
Me.GroupBox13.Name = "GroupBox13"
Me.GroupBox13.Size = New System.Drawing.Size(697, 168)
Me.GroupBox13.Size = New System.Drawing.Size(697, 278)
Me.GroupBox13.TabIndex = 10
Me.GroupBox13.TabStop = False
'
'Button20
'
Me.Button20.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button20.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
Me.Button20.Location = New System.Drawing.Point(10, 28)
Me.Button20.Name = "Button20"
Me.Button20.Size = New System.Drawing.Size(121, 49)
Me.Button20.TabIndex = 43
Me.Button20.Text = "Mautanh. löschen"
Me.Button20.UseVisualStyleBackColor = True
'
'Label72
'
Me.Label72.Location = New System.Drawing.Point(97, 226)
Me.Label72.Name = "Label72"
Me.Label72.Size = New System.Drawing.Size(541, 17)
Me.Label72.TabIndex = 42
Me.Label72.Text = "* bei der Vorschau wird bereits eine RE-NR erzeugt und kann nicht mehr geändert w" &
"erden."
'
'KdSearchBox3
'
Me.KdSearchBox3._AlleFirmenCLUSTER = False
Me.KdSearchBox3._AllowSetValue = True
Me.KdSearchBox3._autoSizeGross = False
Me.KdSearchBox3._display_Name1 = False
Me.KdSearchBox3._displayAVISO_Email = False
Me.KdSearchBox3._displayFullName = False
Me.KdSearchBox3._displayWoelflKd = False
Me.KdSearchBox3._hideIfListEmpty = True
Me.KdSearchBox3._loadKdData = False
Me.KdSearchBox3._searchName1 = True
Me.KdSearchBox3._UseFIRMA = ""
Me.KdSearchBox3._ValueKdAndName = True
Me.KdSearchBox3.dgvpos = "LEFT"
Me.KdSearchBox3.KdName = ""
Me.KdSearchBox3.KdNr = "-1"
Me.KdSearchBox3.kdNrField = Nothing
Me.KdSearchBox3.KdNrNullInt = Nothing
Me.KdSearchBox3.Location = New System.Drawing.Point(88, 248)
Me.KdSearchBox3.Name = "KdSearchBox3"
Me.KdSearchBox3.nurAktive = True
Me.KdSearchBox3.searchActive = True
Me.KdSearchBox3.Size = New System.Drawing.Size(350, 20)
Me.KdSearchBox3.TabIndex = 41
Me.KdSearchBox3.TIMER_SEARCH = True
Me.KdSearchBox3.usrcntl = Nothing
'
'rbkunde
'
Me.rbkunde.AutoSize = True
Me.rbkunde.Location = New System.Drawing.Point(10, 249)
Me.rbkunde.Name = "rbkunde"
Me.rbkunde.Size = New System.Drawing.Size(59, 17)
Me.rbkunde.TabIndex = 40
Me.rbkunde.Text = "Kunde:"
Me.rbkunde.UseVisualStyleBackColor = True
'
'rbAlleKunden
'
Me.rbAlleKunden.AutoSize = True
Me.rbAlleKunden.Checked = True
Me.rbAlleKunden.Location = New System.Drawing.Point(10, 226)
Me.rbAlleKunden.Name = "rbAlleKunden"
Me.rbAlleKunden.Size = New System.Drawing.Size(81, 17)
Me.rbAlleKunden.TabIndex = 39
Me.rbAlleKunden.TabStop = True
Me.rbAlleKunden.Text = "alle Kunden"
Me.rbAlleKunden.UseVisualStyleBackColor = True
'
'txtPloseAnh_Einarbeitung
'
Me.txtPloseAnh_Einarbeitung.BackColor = System.Drawing.Color.White
Me.txtPloseAnh_Einarbeitung.BorderStyle = System.Windows.Forms.BorderStyle.None
Me.txtPloseAnh_Einarbeitung.Location = New System.Drawing.Point(216, 186)
Me.txtPloseAnh_Einarbeitung.Name = "txtPloseAnh_Einarbeitung"
Me.txtPloseAnh_Einarbeitung.Size = New System.Drawing.Size(106, 13)
Me.txtPloseAnh_Einarbeitung.TabIndex = 38
'
'Label71
'
Me.Label71.AutoSize = True
Me.Label71.Location = New System.Drawing.Point(151, 186)
Me.Label71.Name = "Label71"
Me.Label71.Size = New System.Drawing.Size(56, 13)
Me.Label71.TabIndex = 35
Me.Label71.Text = "Fortschritt:"
'
'pbPloseAnh_Proz
'
Me.pbPloseAnh_Proz.Location = New System.Drawing.Point(154, 157)
Me.pbPloseAnh_Proz.Name = "pbPloseAnh_Proz"
Me.pbPloseAnh_Proz.Size = New System.Drawing.Size(283, 23)
Me.pbPloseAnh_Proz.TabIndex = 36
'
'lblPloseAnh_Proz
'
Me.lblPloseAnh_Proz.Location = New System.Drawing.Point(368, 186)
Me.lblPloseAnh_Proz.Name = "lblPloseAnh_Proz"
Me.lblPloseAnh_Proz.Size = New System.Drawing.Size(69, 13)
Me.lblPloseAnh_Proz.TabIndex = 37
Me.lblPloseAnh_Proz.Text = "0%"
Me.lblPloseAnh_Proz.TextAlign = System.Drawing.ContentAlignment.TopRight
'
'Button19
'
Me.Button19.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button19.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
Me.Button19.Location = New System.Drawing.Point(6, 91)
Me.Button19.Location = New System.Drawing.Point(10, 157)
Me.Button19.Name = "Button19"
Me.Button19.Size = New System.Drawing.Size(121, 49)
Me.Button19.TabIndex = 32
Me.Button19.Text = "Vorschau"
Me.Button19.Text = "Vorschau*"
Me.Button19.UseVisualStyleBackColor = True
'
'Label70
@@ -1672,7 +1796,7 @@ Partial Class usrCntlMDMAuswertungen
'
Me.Button14.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button14.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
Me.Button14.Location = New System.Drawing.Point(10, 21)
Me.Button14.Location = New System.Drawing.Point(10, 94)
Me.Button14.Name = "Button14"
Me.Button14.Size = New System.Drawing.Size(121, 49)
Me.Button14.TabIndex = 4
@@ -2173,6 +2297,14 @@ Partial Class usrCntlMDMAuswertungen
Me.pnl.Size = New System.Drawing.Size(1057, 54)
Me.pnl.TabIndex = 26
'
'lblAnzahlMautberichte
'
Me.lblAnzahlMautberichte.AutoSize = True
Me.lblAnzahlMautberichte.Location = New System.Drawing.Point(481, 57)
Me.lblAnzahlMautberichte.Name = "lblAnzahlMautberichte"
Me.lblAnzahlMautberichte.Size = New System.Drawing.Size(0, 13)
Me.lblAnzahlMautberichte.TabIndex = 33
'
'usrCntlMDMAuswertungen
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -2421,4 +2553,14 @@ Partial Class usrCntlMDMAuswertungen
Friend WithEvents cbxDateMautbericht As VERAG_PROG_ALLGEMEIN.MyComboBox
Friend WithEvents Label70 As Label
Friend WithEvents Button19 As Button
Friend WithEvents Label71 As Label
Friend WithEvents pbPloseAnh_Proz As ProgressBar
Friend WithEvents lblPloseAnh_Proz As Label
Friend WithEvents txtPloseAnh_Einarbeitung As TextBox
Friend WithEvents KdSearchBox3 As VERAG_PROG_ALLGEMEIN.KdSearchBox
Friend WithEvents rbkunde As RadioButton
Friend WithEvents rbAlleKunden As RadioButton
Friend WithEvents Label72 As Label
Friend WithEvents Button20 As Button
Friend WithEvents lblAnzahlMautberichte As Label
End Class

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