Imports System.IO Imports Microsoft.Office.Interop Imports VERAG_PROG_ALLGEMEIN Public Class usrcntlFakturierung Dim FMZOLL_SQL As New FMZOLL_SQL Dim PathMautberichte = "" Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnFakturierung.Click Me.Cursor = Cursors.WaitCursor Dim f As New SDL.frmAbrechnungsMaske f.Show(Me) Me.Cursor = Cursors.Default End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Dim f As New SDL.frmRechnungenSuche f.Show(Me) End Sub Private Sub usrCntlFakturierung_Load(sender As Object, e As EventArgs) Handles Me.Load KdSearchBox3.initKdBox(Me.FindForm) cbxMautbericht.Items.Clear() cbxMautbericht.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Mautsummenbericht", "Gesamtbericht_EXCEL")) cbxMautbericht.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Mautbericht AT DE MSE UTA", "Lieferantenbericht_PDF")) cbxMautbericht.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Mautsummenbericht als CSV-Datei", "Gesamtbericht_CSV")) cbxDateMautbericht.Items.Clear() cbxDateMautbericht.fillWithSQL("select distinct(cast(BillingDate as Date)) From tblMautbericht order by cast(BillingDate as Date) desc", False, "FMZOLL") cboSachbearbeiter.fillWithSQL("select distinct(UPPER(sachbearbeiter)) from Rechnungsausgang where Sammelrechnung=6 and Firma_ID=19", False, "FMZOLL", True) 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") 'PathMautberichte = "C:\Users\d.breimaier\Desktop\MDM\Mautgesamtberichte\" Dim countCSV = 0 Dim countPDF = 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") Then countCSV += 1 If f.ToString.ToLower.EndsWith("_maut.pdf") Then countPDF += 1 Next End If End If lblAnzahlMautberichte.Text = countCSV + countPDF & "x Mautberichte (" & countCSV & "x CSV " & countPDF & "x PDF )" If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG("MDM_FAKTURIERUNG", "SDL") = 0 Then btnMDMSammelrechnung.Enabled = True GBMautberichte.Enabled = True GBSammelrechnung.Enabled = True btnFakturierung.Enabled = True btnRechnugnsdaten.Enabled = True btnAbfdruck.Enabled = True btnREJdruck.Enabled = True End If If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ADMINFUNCTIONS", "SDL") Then Button2.Visible = True Button3.Visible = True End If End Sub Private Sub Button20_Click(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." & vbNewLine & "Nur bei Rechnungen mit Status 0 möglich!", 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 Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click Label70.Text = "6. Hängt Mautgesamtbericht an Sammenrechnungen an." Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim ok As Boolean = True Dim Sachbearbeiter = cboSachbearbeiter._value Dim rechnungsdatum As Date = CDate(dtRechnungsdatum.Text) PictureBox1.Visible = False PictureBox2.Visible = False PictureBox3.Visible = False PictureBox4.Visible = False PictureBox5.Visible = False PictureBox6.Visible = 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 If PathMautberichte = "" OrElse Not Directory.Exists(PathMautberichte) Then MsgBox("Pfad zu den Mautberichten nicht vorhanden!" & vbNewLine & "Vorang wird abgebrochen!") Exit Sub ElseIf Directory.Exists(PathMautberichte) Then If Directory.GetFiles(PathMautberichte) Is Nothing Then MsgBox("Pfad " & PathMautberichte & " enthält keine Daten!" & vbNewLine & "Vorang wird abgebrochen!") Exit Sub End If End If Dim rechnungenMitGesamtmautanhantCSV 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.csv') group by [Firma_ID], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status], RechnungsausgangAnhaenge.Bezeichnung ", "FMZOLL",, 0) Dim rechnungenMitGesamtmautanhantPDF 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') group by [Firma_ID], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status], RechnungsausgangAnhaenge.Bezeichnung ", "FMZOLL",, 0) If rechnungenMitGesamtmautanhantPDF <> "" Then MsgBox("Bei " & rechnungenMitGesamtmautanhantPDF & " Rechnungen befindet sich noch eine PDF-Gesamtmaut" & vbNewLine & "Diesen bitte vorher entfernen über MAUTBERICHTE ENTFERNEN " & vbNewLine & "Vorang wird abgebrochen!") Exit Sub End If If rechnungenMitGesamtmautanhantCSV <> "" Then MsgBox("Bei " & rechnungenMitGesamtmautanhantCSV & " Rechnungen befindet sich noch eine CSV-Gesamtmaut" & vbNewLine & "Diesen bitte vorher entfernen über MAUTBERICHTE ENTFERNEN " & vbNewLine & "Vorang wird abgebrochen!") Exit Sub End If '---------------DONE ' ' Sachbearbeiter im RK eintragen. '140 Call SysCmd(acSysCmdSetStatus, "Sachbearbeiter im RK eintragen...") '150 Call ReDruSchnSachbearbeiter 'Update [Rechnungsausgang] SET [Sachbearbeiter] = @Sachbearbeiter WHERE([Firma_ID] = 1 Or [Firma_ID] = 15) And [Status] = 0 And [Sammelrechnung] = 6 And [Sachbearbeiter] <> @Sachbearbeiter And (SteuerpflichtigerGesamtbetrag <> 0 Or SteuerfreierGesamtbetrag <> 0); '---------------DONE ' ' Firma_ID im RK eintragen. '180 Call SysCmd(acSysCmdSetStatus, "Firma_ID im RK eintragen...") '190 Call ReDruSchnFirma_ID 'Update [Rechnungsausgang] SET [Firma_ID] = @Firma_ID WHERE [Firma_ID] <> @Firma_ID And [Status] = 0 And [Sammelrechnung] = 6 And [Sachbearbeiter] = @Sachbearbeiter And (SteuerpflichtigerGesamtbetrag <> 0 Or SteuerfreierGesamtbetrag <> 0); ' ' Rechnung oder Gutschrift im RK eintragen. '220 Call SysCmd(acSysCmdSetStatus, "Re/Gu im RK eintragen...") '230 Call ReDruSumReGu '---------------DONE ' ' Rechnungstext im RK eintragen. '260 Call SysCmd(acSysCmdSetStatus, "Text im RK eintragen...") '270 Call Rechnungstext '---------------DONE ' ' Porto/Papiere berechnen. '300 Call SysCmd(acSysCmdSetStatus, "Porto/Papiere berechnen...") '310 Call ReDruSchnPP '---------------DONE ' ' Banküberweisung/Bankspesen berechnen '340 Call SysCmd(acSysCmdSetStatus, "Banküberweisung/Bankspesen berechnen...") '350 Call ReDruSchnBB ' ' Druckinformationen im RK eintragen----- ALTER.......... '380 Call SysCmd(acSysCmdSetStatus, "Druckinformationen im RK eintragen...") '390 varDatumZeit = Now 'Druckdatum/Uhrzeit merken. ' ' Parameter übergeben: Firma_ID, Status, Sammelrechnung, Sachbearbeiter, Buchungsjahr, Rechnungsdatum, DruckDatumZeit. '400 strParameter = ParameterBereitstellen(Me![Firma_ID], 0, 6, Me![fldSachbearbeiter], Year(Me!fldRechnungsDatum), Me![fldRechnungsDatum], varDatumZeit) '410 Set qdf = dbs.CreateQueryDef("") ok = SQL.doSQL("update [Rechnungsausgang] set Sachbearbeiter='" & Sachbearbeiter & "' where Sammelrechnung=6 and Firma_ID=19 and [Status] = 0 and (UPPER([Sachbearbeiter])<>'" & Sachbearbeiter & "' or [Sachbearbeiter]<>'" & Sachbearbeiter & "') and Abfertigungsdatum = '" & dtRechnungsdatum.Value & "'", "FMZOLL") showPic(ok, PictureBox1) 'If Not VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then Exit Sub If Not ok Then Exit Sub Dim dtREGU As DataTable = SQL.loadDgvBySql("SELECT [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], isnull([Steuersatz %],0) as [Steuersatz %], cast([Lastschrift] as bit) as Lastschrift, Sum([SteuerpflichtigerGesamtbetrag]+[SteuerfreierGesamtbetrag]) AS Sammelrechnungsbetrag FROM Rechnungsausgang WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' GROUP BY [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], [Steuersatz %], [Lastschrift]", "FMZOLL") 'RECHNUNG ODER GUTSCHRIFT 'Rechnung oder Gutschrift im RK eintragen, abhängig vom Sammelrechnungsbetrag (+/-) If dtREGU.Rows.Count > 0 Then For Each r In dtREGU.Rows Dim BelegartenNr As Integer Dim BelegartenKz As String Dim BelegartenBez As String Dim Vorzeichen As String If r("Sammelrechnungsbetrag") >= 0 Then BelegartenNr = 70 BelegartenKz = "AR" BelegartenBez = "Rechnung" Vorzeichen = "+" Else BelegartenNr = 71 BelegartenKz = "AG" BelegartenBez = "Gutschrift" Vorzeichen = "-" End If Dim steuersatz As Double = Math.Floor(r("Steuersatz %")) ok = SQL.doSQL("UPDATE [Rechnungsausgang] SET [BelegartenNr] = " & BelegartenNr & ", [BelegartenKz] = '" & BelegartenKz & "' , [BelegartenBez] = '" & BelegartenBez & "' , [Vorzeichen] = '" & Vorzeichen & "' WHERE [Firma_ID] = 19 AND [Status] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter])= '" & Sachbearbeiter & "' AND [RechnungsKundenNr] = " & r("RechnungsKundenNr") & " AND [Währungscode] = '" & r("Währungscode") & "' AND [Steuersatz %] = " & steuersatz & " AND [Lastschrift] = " & IIf(r("Lastschrift"), 1, 0) & "AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "'", "FMZOLL") If Not ok Then MsgBox("Rechnungsdruck wird abgebrochen." & vbCrLf & "Rechnungen/Gutschriften nicht gefunden.") : Exit Sub Next showPic(ok, PictureBox2) Else showPic(ok, PictureBox2) MsgBox("Rechnungsdruck wird abgebrochen." & vbCrLf & "Rechnungen/Gutschriften nicht gefunden.") : Exit Sub End If Dim dtSammelrechnungen As New DataTable 'Rechnungstext im RK eintragen showPic(setRechnungstext(Sachbearbeiter, rechnungsdatum, dtSammelrechnungen), PictureBox3) ' Porto/Papiere berechnen. showPic(PortoPapiere(Sachbearbeiter, rechnungsdatum), PictureBox4) 'Berechnet Banküberweisung/Bankspesen. showPic(Bankspesen(Sachbearbeiter, rechnungsdatum), PictureBox5) 'Gesamtmautberichte an Sammelrechnung anhängen Dim okMaut As Boolean = False okMaut = setMautgesamtberichtInRechnung(Sachbearbeiter, rechnungsdatum, dtSammelrechnungen) showPic(okMaut, PictureBox6) If Not okMaut Then MsgBox("Fehler beim Setzen der Gesamtmautberichte") End If End Sub Private Function PortoPapiere(Sachbearbeiter As String, rechnungsdatum As Date, Optional kdNr As Integer = -1) As Boolean ' Die Abfrage ermittelt aus den Rechnungspositonen, ' das Vorkommen (Anzahl Porto/Papiere) pro RechnungsKundenNr ' Status=0, Sammelrechnung=6, LeistungsNr=440. Dim isSet As Boolean = False Dim sqlString = "SELECT Rechnungsausgang.Firma_ID, Rechnungsausgang.Status, Rechnungsausgang.Sammelrechnung, Rechnungsausgang.Sachbearbeiter, Rechnungsausgang.RechnungsKundenNr, Rechnungsausgang.BelegartenNr, Rechnungsausgang.Währungscode, isnull(Rechnungsausgang.[Steuersatz %],0) as [Steuersatz %], cast(Rechnungsausgang.Lastschrift as bit) as Lastschrift, SUM(CASE WHEN LeistungsNr = 440 THEN Anzahl ELSE 0 END) AS AnzahlPP, SUM(CASE WHEN LeistungsNr = 440 THEN 0 ELSE SteuerpflichtigerBetrag + SteuerfreierBetrag END) AS BetragExclusivPP FROM Rechnungsausgang INNER JOIN RechnungsausgangPositionen ON Rechnungsausgang.RK_ID = RechnungsausgangPositionen.RK_ID WHERE Rechnungsausgang.Status in " & If(kdNr > 0, "(0,2)", "(0)") & " AND Rechnungsausgang.Sammelrechnung = 6 AND UPPER(Rechnungsausgang.Sachbearbeiter) = '" & Sachbearbeiter & "' AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' " & IIf(kdNr > 0, " AND RechnungsKundenNr = " & kdNr, "") & " GROUP BY Rechnungsausgang.Firma_ID, Rechnungsausgang.Status, Rechnungsausgang.Sammelrechnung, Rechnungsausgang.Sachbearbeiter, Rechnungsausgang.RechnungsKundenNr, Rechnungsausgang.BelegartenNr, Rechnungsausgang.Währungscode, Rechnungsausgang.[Steuersatz %], Rechnungsausgang.Lastschrift HAVING SUM(CASE WHEN LeistungsNr = 440 THEN Anzahl ELSE 0 END) > 0 ORDER BY Rechnungsausgang.Firma_ID, Rechnungsausgang.Status, Rechnungsausgang.Sammelrechnung, Rechnungsausgang.Sachbearbeiter, Rechnungsausgang.RechnungsKundenNr, Rechnungsausgang.BelegartenNr, Rechnungsausgang.Währungscode, Rechnungsausgang.[Steuersatz %], Rechnungsausgang.Lastschrift" Dim dtPP As DataTable = (New SQL).loadDgvBySql(sqlString, "FMZOLL") If dtPP.Rows.Count > 0 Then For Each r In dtPP.Rows Dim intZlr As Integer = 0 ' Bei BetragExclusivPP kleiner als 150€ wird 1x P.P. verrechnet, bei grösser/gleich 150€ wird kein P.P. verrechnet. ' Zähler auf die Anzahl der P.P. Löschungen einstellen. If Not IsDBNull(r("BetragExclusivPP")) AndAlso r("BetragExclusivPP") > 0 Then If r("BetragExclusivPP") < 150 Then intZlr = r("AnzahlPP") - 1 Else intZlr = r("AnzahlPP") End If Else If (0 - r("BetragExclusivPP")) < 150 Then intZlr = r("AnzahlPP") - 1 Else intZlr = r("AnzahlPP") - 1 End If End If If intZlr > 0 Then Dim steuersatz As Double = Math.Round(r("Steuersatz %"), 2) Dim SteuersatzString As String = steuersatz.ToString.Replace(",", ".") ' Die Abfrage liest in der Tabelle Rechnungsausgang, ' passend zu den durch die vorherige Abfrage bereitgestellten Parametern. Dim sqlStringRechnungen As String = "Select DISTINCT Rechnungsausgang.OffertenNr, Rechnungsausgang.RK_ID, Rechnungsausgang.SteuerpflichtigerGesamtbetrag, Rechnungsausgang.SteuerfreierGesamtbetrag, Rechnungsausgang.upsize_ts FROM Rechnungsausgang WHERE Rechnungsausgang.Firma_ID = " & r("Firma_ID") & " And Rechnungsausgang.Status = " & r("Status") & " And Rechnungsausgang.Sammelrechnung = " & r("Sammelrechnung") & " And Rechnungsausgang.UPPER(Sachbearbeiter) = '" & Sachbearbeiter & "' And Rechnungsausgang.RechnungsKundenNr = " & r("RechnungsKundenNr") & " And Rechnungsausgang.BelegartenNr = " & r("BelegartenNr") & " And Rechnungsausgang.Währungscode = '" & r("Währungscode") & "' And Rechnungsausgang.[Steuersatz %] = " & SteuersatzString & " And Rechnungsausgang.Lastschrift = " & IIf(r("Lastschrift"), 1, 0) & " AND cast(Rechnungsausgang.Abfertigungsdatum as Date) = '" & rechnungsdatum & "' ORDER by Rechnungsausgang.OffertenNr" Dim dtRechnungen As DataTable = (New SQL).loadDgvBySql(sqlStringRechnungen, "FMZOLL") If dtRechnungen.Rows.Count > 0 Then For Each re In dtRechnungen.Rows Dim dtREPOSANZ As DataTable = (New SQL).loadDgvBySql("Select [RK_ID], [LeistungsNr], cast([Steuerpflichtig] as bit) as Steuerpflichtig, [LeistungsBez],[IndexZkteing], Anzahl, SteuerpflichtigerBetrag, SteuerfreierBetrag,upsize_ts From RechnungsausgangPositionen Where RechnungsausgangPositionen.RK_ID = " & re("RK_ID") & " And RechnungsausgangPositionen.LeistungsNr = 440", "FMZOLL") If dtREPOSANZ.Rows.Count > 0 Then Dim stgesBetr = re("SteuerpflichtigerGesamtbetrag") Dim stfregesBetr = re("SteuerfreierGesamtbetrag") Dim RECHNUNG As New cRechnungsausgang(re("RK_ID")) For Each row In dtREPOSANZ.Rows intZlr = intZlr - row("Anzahl") If Not IsDBNull(row("SteuerpflichtigerBetrag")) AndAlso IsNumeric(row("SteuerpflichtigerBetrag")) Then stgesBetr = stgesBetr - CDbl(row("SteuerpflichtigerBetrag")) If Not IsDBNull(row("SteuerfreierBetrag")) AndAlso IsNumeric(row("SteuerfreierBetrag")) Then stfregesBetr = stfregesBetr - CDbl(row("SteuerfreierBetrag")) If RECHNUNG.DELETE_POSITIONEN(RECHNUNG.RK_ID, row("LeistungsNr"), row("Steuerpflichtig"), row("LeistungsBez"), row("IndexZkteing")) Then RECHNUNG.SteuerfreierGesamtbetrag = stfregesBetr RECHNUNG.SteuerpflichtigerGesamtbetrag = stgesBetr isSet = RECHNUNG.SAVE(False) End If If intZlr = 0 Then Exit For Next End If Next End If End If Next Else isSet = True End If Return isSet End Function Private Function setRechnungstext(Sachbearbeiter As String, rechnungsdatum As Date, ByRef sammelRechnungen As DataTable) As Boolean Dim varText As String = "" Dim varNettozahlungsziel As Integer = 0 Dim strFälligkeitsdatum As String Dim strZahlbar As String Dim ok As Boolean = False Dim dtSelectedSammelrechnungen As DataTable = (New SQL).loadDgvBySql("SELECT [Firma_ID], [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] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' ORDER BY [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], [Steuersatz %], [Lastschrift], [RK_ID]", "FMZOLL") Try If dtSelectedSammelrechnungen.Rows.Count > 0 Then sammelRechnungen = dtSelectedSammelrechnungen For Each rowRE In dtSelectedSammelrechnungen.Rows Select Case rowRE("BelegartenNr") Case 70 'RECHNUNG If Not rowRE("Vorkasse") Then If rowRE("Lastschrift") Then varText = varText & "Der Rechnungsbetrag wurde durch erteilten Abbuchungsauftrag eingezogen." & vbCrLf Else If Not IsDBNull(rowRE("RechnungsKundenNr")) Then 'Zahlungsziel aus Kundenstamm. Dim ZZ = (New SQL).getValueTxtBySql("SELECT Kunden.Zahlungsziel from Kunden WHERE Kunden.KundenNr=" & rowRE("RechnungsKundenNr") & " AND Kunden.Zahlungsziel Is Not Null", "FMZOLL") If ZZ <> "" AndAlso IsNumeric(ZZ) Then varNettozahlungsziel = ZZ strFälligkeitsdatum = DateAdd("d", varNettozahlungsziel, dtRechnungsdatum.Value).ToString("dd.MM.yyyy") End If End If 'Zahlungsziel aus Offertenstamm. If strFälligkeitsdatum = "" Then If Not IsDBNull(rowRE("OffertenNr")) Then Dim ZZOffert = (New SQL).getValueTxtBySql("SELECT Offertenstamm.Zahlungsziel FROM Offertenstamm WHERE Offertenstamm.OffertenNr = " & rowRE("OffertenNr") & " AND Offertenstamm.Zahlungsziel IS NOT NULL", "FMZOLL") If ZZOffert <> "" AndAlso IsNumeric(ZZOffert) Then varNettozahlungsziel = ZZOffert strFälligkeitsdatum = DateAdd("d", varNettozahlungsziel, dtRechnungsdatum.Value).ToString("dd.MM.yyyy") End If End If End If 'Zahlungsziel ermitteln. If strFälligkeitsdatum = "" Then If Not IsDBNull(rowRE("RK_ID")) Then 'Zahlungsziel bei Kreditaufwendungen. Dim ZZRKID = (New SQL).getValueTxtBySql("Select Case [Preis], [Anzahl] From [RechnungsausgangPositionen] Where [RK_ID] = " & rowRE("RK_ID") & " And [LeistungsNr] = 750 And [BerechnungsartNr] = 9", "FMZOLL") If ZZRKID <> "" Then strZahlbar = "Zahlbar innerhalb 10 Tagen abzüglich Pos. 750; ab 10 Tagen netto fällig." Else varNettozahlungsziel = 25 strFälligkeitsdatum = DateAdd("d", varNettozahlungsziel, dtRechnungsdatum.Value).ToString("dd.MM.yyyy") End If End If End If 'Fälligkeitstext in Landessprache If strFälligkeitsdatum <> "" Then strZahlbar = "Rechnung zahlbar spätestens bis " & strFälligkeitsdatum & "!" If Not IsDBNull(rowRE("RechnungsLandKz")) Then Dim ZZRLandKZ = (New SQL).getValueTxtBySql("SELECT tblZahlungszieltexte.Text FROM tblZahlungszieltexte WHERE tblZahlungszieltexte.LandKz='" & rowRE("RechnungsLandKz") & "' AND tblZahlungszieltexte.Text Is Not Null", "FMZOLL") If ZZRLandKZ <> "" Then strZahlbar = ZZRLandKZ & " " & strFälligkeitsdatum & "!" End If End If varText &= strZahlbar & vbCrLf End If End If ' Text bei Zoll oder EUSt drucken Dim Zoll = (New SQL).getValueTxtBySql("Select LeistungsNr From dbo.RechnungsausgangPositionen Where RK_ID = " & rowRE("RK_ID") & " And LeistungsNr In (10, 60, 70)", "FMZOLL") If Not IsDBNull(Zoll) AndAlso Zoll <> "" Then varText = varText & "Alle Zollbelege bitte sofort auf Richtigkeit prüfen da Einspruch gemäß § 355 AO nur 1 Monat nach Datum des Zollbescheides möglich." & vbCrLf End If Case 71 'GUTSCHRIFT If rowRE("Lastschrift") Then varText = varText & "Der Gutschriftsbetrag wurde mit erteilten Abbuchungsauftrag verrechnet." & vbCrLf End If End Select ok = (New SQL).doSQL("Update [Rechnungsausgang] Set [Text] = '" & varText & "', [Nettozahlungsziel] = " & varNettozahlungsziel & " WHERE [RK_ID] = " & rowRE("RK_ID"), "FMZOLL") If Not ok Then MsgBox("Fehler") : Return False varText = "" varNettozahlungsziel = 0 strFälligkeitsdatum = "" Next End If Return ok Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return False End Function Private Function Bankspesen(Sachbearbeiter As String, rechnungsdatum As Date, Optional kdNr As Integer = -1) Dim isSet As Boolean = False Dim sqlBB = " Select Firma_ID, Status, Sammelrechnung, Sachbearbeiter, RechnungsKundenNr, BelegartenNr, Währungscode, [Steuersatz %], Lastschrift From dbo.Rechnungsausgang Where Status IN " & If(kdNr > 0, "(0,2)", "(0)") & " And Sammelrechnung = 6 And UPPER([Sachbearbeiter]) ='" & Sachbearbeiter & "' AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "'" & If(kdNr > 0, " AND RechnungsKundenNr = " & kdNr, "") & " Group By Firma_ID, Status, Sammelrechnung, Sachbearbeiter, RechnungsKundenNr, BelegartenNr, Währungscode, [Steuersatz %], Lastschrift Order By Firma_ID, Status, Sammelrechnung, Sachbearbeiter, RechnungsKundenNr, BelegartenNr, Währungscode, [Steuersatz %], Lastschrift" Dim dtBB As DataTable = (New SQL).loadDgvBySql(sqlBB, "FMZOLL") Try If dtBB.Rows.Count > 0 Then For Each r In dtBB.Rows 'spSelectReDruSchnSumBS415 Dim steuersatz As Double = Math.Round(r("Steuersatz %"), 2) Dim SteuersatzString As String = steuersatz.ToString.Replace(",", ".") Dim sum As DataTable = (New SQL).loadDgvBySql("SELECT ISNULL(SUM(dbo.RechnungsausgangPositionen.Preis * dbo.RechnungsausgangPositionen.Anzahl),0) AS [Summe von Preis] FROM dbo.Rechnungsausgang INNER JOIN dbo.RechnungsausgangPositionen ON dbo.Rechnungsausgang.RK_ID = dbo.RechnungsausgangPositionen.RK_ID INNER JOIN dbo.Leistungen ON dbo.RechnungsausgangPositionen.LeistungsNr = dbo.Leistungen.LeistungsNr WHERE (dbo.Rechnungsausgang.Firma_ID = " & r("Firma_ID") & ") AND (dbo.Rechnungsausgang.Status = " & r("Status") & ") AND (dbo.Rechnungsausgang.Sammelrechnung = " & r("Sammelrechnung") & ") AND (UPPER(dbo.Rechnungsausgang.[Sachbearbeiter]) = '" & r("Sachbearbeiter") & "') AND (dbo.Rechnungsausgang.RechnungsKundenNr = " & r("RechnungsKundenNr") & ") AND (dbo.Rechnungsausgang.BelegartenNr =" & r("BelegartenNr") & ") AND (dbo.Rechnungsausgang.Währungscode = '" & r("Währungscode") & "') AND (dbo.Rechnungsausgang.[Steuersatz %] =" & SteuersatzString & ") AND (dbo.Rechnungsausgang.Lastschrift =" & IIf(r("Lastschrift"), 1, 0) & ") AND (dbo.Leistungen.BS415 = 1)", "FMZOLL",) If sum.Rows.Count > 0 Then For Each rowsum In sum.Rows Dim sumCurrenRow As Double = rowsum("Summe von Preis") If sumCurrenRow <> 0 Then Dim dtBankspesen As DataTable = (New SQL).loadDgvBySql("SELECT KundenNr, [Bankspesen %], [Bankspesen Mindestbetrag] FROM dbo.Kunden where KundenNr = " & r("RechnungsKundenNr"), "FMZOLL") If dtBankspesen.Rows.Count > 0 Then For Each rowBS In dtBankspesen.Rows If rowBS("Bankspesen %") = 0 And rowBS("Bankspesen Mindestbetrag") = 0 Then Else Dim query As String = "SELECT DISTINCT OffertenNr, RK_ID, SteuerpflichtigerGesamtbetrag, SteuerfreierGesamtbetrag, upsize_ts FROM Rechnungsausgang WHERE (dbo.Rechnungsausgang.Firma_ID = " & r("Firma_ID") & ") AND (Status = " & r("Status") & ") AND (Sammelrechnung = " & r("Sammelrechnung") & ") AND (UPPER([Sachbearbeiter]) = '" & r("Sachbearbeiter") & "') AND (RechnungsKundenNr = " & r("RechnungsKundenNr") & ") AND (BelegartenNr =" & r("BelegartenNr") & ") AND (Währungscode = '" & r("Währungscode") & "') AND ([Steuersatz %] =" & SteuersatzString & ") AND (Lastschrift =" & IIf(r("Lastschrift"), 1, 0) & ") ORDER BY OffertenNr" Dim dtRechnung As DataTable = (New SQL).loadDgvBySql(query, "FMZOLL") If dtRechnung.Rows.Count > 0 Then For Each re In dtRechnung.Rows Dim steuerpflichtigerGesamtbetrag As Double = CDbl(re("SteuerpflichtigerGesamtbetrag")) Dim steuerfreiegerGesamtbetrag As Double = CDbl(re("SteuerfreierGesamtbetrag")) Dim dt415 As DataTable = (New SQL).loadDgvBySql("Select [RK_ID], [LeistungsNr], cast([Steuerpflichtig] as bit) as Steuerpflichtig, [LeistungsBez],[IndexZkteing],SteuerpflichtigerBetrag, SteuerfreierBetrag, upsize_ts From RechnungsausgangPositionen Where RechnungsausgangPositionen.RK_ID = " & re("RK_ID") & " And RechnungsausgangPositionen.LeistungsNr = 415", "FMZOLL") If dt415.Rows.Count > 0 Then For Each r415 In dt415.Rows If Not IsDBNull(r415("SteuerpflichtigerBetrag")) AndAlso IsNumeric(r415("SteuerpflichtigerBetrag")) Then steuerpflichtigerGesamtbetrag = steuerpflichtigerGesamtbetrag - CDbl(r415("SteuerpflichtigerBetrag")) If Not IsDBNull(r415("SteuerfreierBetrag")) AndAlso IsNumeric(r415("SteuerfreierBetrag")) Then steuerfreiegerGesamtbetrag = steuerfreiegerGesamtbetrag - CDbl(r415("SteuerfreierBetrag")) Dim RECHNUNG As New cRechnungsausgang(re("RK_ID")) If RECHNUNG.DELETE_POSITIONEN(RECHNUNG.RK_ID, r415("LeistungsNr"), r415("Steuerpflichtig"), r415("LeistungsBez"), r415("IndexZkteing")) Then RECHNUNG.SteuerfreierGesamtbetrag = steuerfreiegerGesamtbetrag RECHNUNG.SteuerpflichtigerGesamtbetrag = steuerpflichtigerGesamtbetrag isSet = RECHNUNG.SAVE(False) End If Next End If Next If sumCurrenRow > 0 Then Dim RElastEntry As DataRow = dtRechnung.Rows(dtRechnung.Rows.Count - 1) Dim NEWPOS As New cRechnungsausgangPositionen(RElastEntry("RK_ID")) NEWPOS.Anzahl = 1 NEWPOS.LeistungsNr = 415 If steuersatz = 0 Then NEWPOS.Steuerpflichtig = False Else Dim sql As New SQL NEWPOS.Steuerpflichtig = (New VERAG_PROG_ALLGEMEIN.SQL).DLookup("Steuerpflichtig", "Leistungen", "LeistungsNr= 415", "FMZOLL") End If NEWPOS.LeistungsBez = "Überweisungs/Bankspesen" Dim preis As Double = 0 If rowBS("Bankspesen %") > 0 Then If sumCurrenRow > 0 Then preis = Math.Round(sumCurrenRow * rowBS("Bankspesen %") + 0.5, 2) Else preis = Math.Round(0 - sumCurrenRow * rowBS("Bankspesen %") + 0.5, 2) End If Else preis = 0 End If If preis < rowBS("Bankspesen Mindestbetrag") Then preis = rowBS("Bankspesen Mindestbetrag") End If If sumCurrenRow < 0 Then preis = 0 - preis End If Dim RECHNUNG As New cRechnungsausgang(RElastEntry("RK_ID")) If NEWPOS.Steuerpflichtig Then NEWPOS.SteuerpflichtigerBetrag = preis RECHNUNG.SteuerpflichtigerGesamtbetrag = RECHNUNG.SteuerpflichtigerGesamtbetrag + preis Else NEWPOS.SteuerfreierBetrag = preis RECHNUNG.SteuerfreierGesamtbetrag = RECHNUNG.SteuerfreierGesamtbetrag + preis End If NEWPOS.Preis = preis If NEWPOS.INSERT(RElastEntry("RK_ID")) Then RECHNUNG.SAVE(False) End If End If End If Next End If End If Next Else isSet = True End If Next Else isSet = True End If Return isSet Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Return False End Function Private Function setMautgesamtberichtInRechnung(Sachbearbeiter As String, rechnungsdatum As Date, dtSammelRechnugen As DataTable) Try Dim counterPDF As Integer = 0 Dim counterCSV As Integer = 0 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 End If If Directory.Exists(PathMautberichte) Then For Each f In Directory.GetFiles(PathMautberichte) If f.Contains("_Maut.csv") Then Dim FileCSV = New FileInfo(f) If FileCSV.Name.Length > 10 Then Dim KundenNr = FileCSV.Name.ToString.Substring(0, 6) 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) attachmentIsSet = AddAttachementToRE(FileCSV.FullName, KundenNr, RECHNUNG, rechnungsdatum) If attachmentIsSet Then counterCSV = counterCSV + 1 End If End If 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) attachmentIsSet = AddAttachementToRE(FilePDF.FullName, KundenNr, RECHNUNG, rechnungsdatum) If attachmentIsSet Then counterPDF = counterPDF + 1 End If End If End If Next End If Label70.Text = "6. Hängt Mautgesamtbericht an Sammenrechnungen an." & " CSV: " & counterCSV & " PDF: " & counterPDF Return attachmentIsSet Catch ex As SystemException VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Label70.Text = "6. Hängt Mautgesamtbericht an Sammenrechnungen an." Return False End Function 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! -> ist DBteschnisch unterbunden mit PrimaryKey-Einschränkung!!! If Not IO.File.Exists(pathFile) Then Return False Dim fi As New System.IO.FileInfo(pathFile) Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "GESAMTBERICHT", rechnungsdatum.ToString("ddMMyyyy"), kdNr, "", fi.Name, kdNr) If Not DS.uploadDataToDATENSERVER(pathFile, fi.Name, fi.Extension,,,, True) Then MsgBox("Fehler beim Speichern: Datenserver! KDNR:" & kdNr) Return False End If If CInt(DS.da_id) <= 0 Then MsgBox("Keine DocId!") Return False End If Dim da_id = DS.da_id Dim destPath = DS.GET_TOP1_PATH If RECHNUNG IsNot Nothing Then RECHNUNG.ANHAENGE.Clear() Dim ANH As New VERAG_PROG_ALLGEMEIN.cRechnungsausgangAnhaenge ANH.dsId = CInt(DS.da_id) ANH.Bezeichnung = DS.da_name RECHNUNG.ANHAENGE.Add(ANH) Return RECHNUNG.SAVE_ANHAENGE(RECHNUNG.RK_ID, False, False) Else MsgBox("Rechnung nicht initialisiert.") Return False End If End Function Private Function setStatus2(Sachbearbeiter As String, rechnungsdatum As Date, dtSammelRechnugen As DataTable) As Boolean Dim cnt = 0 Dim reIsSet As Boolean = False If dtSammelRechnugen.Rows.Count > 0 Then For Each re In dtSammelRechnugen.Rows reIsSet = cFakturierung.doSAMMELRechnungsDruck(19, 6, rechnungsdatum, rechnungsdatum, "", False, False, re("RechnungsKundenNr"), 7, , , , Nothing, , ,,, ,, ) If Not reIsSet Then Return reIsSet End If 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() 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 End Function Private Sub Button19_Click(sender As Object, e As EventArgs) Handles Button19.Click Dim Sachbearbeiter = cboSachbearbeiter._value Dim rechnungsdatum As Date = CDate(dtRechnungsdatum.Text) Dim rechnungsstatus As Integer = 0 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 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 Rechnungsnummern setzen?" & 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 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] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' ORDER BY [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], [Steuersatz %], [Lastschrift], [RK_ID]" Dim dtSammelrechnungen As DataTable = (New SQL).loadDgvBySql(SQLString, "FMZOLL") If dtSammelrechnungen.Rows.Count > 0 Then Dim reNrisSet = setStatus2(Sachbearbeiter, rechnungsdatum, dtSammelrechnungen) showPic(reNrisSet, PictureBox7) If Not reNrisSet Then MsgBox("Fehler beim Setzen der Rechnungsnummer" & vbNewLine & "Vorgang wird abgebrochen!") Exit Sub End If End If Dim SQLStringGruppierteSammelrechnung = "SELECT [Firma_ID], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status], RechnungsKundenNr, Adressen.LandKz, isnull(kde_keineMWSt,0) as keinMWSTKunde, SUM(Rechnungsausgang.SteuerpflichtigerGesamtbetrag) as Steuer FROM Rechnungsausgang INNER JOIN Adressen on AdressenNr = RechnungsKundenNr LEFT JOIN tblKundenErweitert on kde_KundenNr = RechnungsKundenNr WHERE [Status] = 2 AND [Sammelrechnung] = 6 AND UPPER(Rechnungsausgang.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], RechnungsKundenNr, Adressen.LandKz, isnull(kde_keineMWSt,0) ORDER BY [Firma_ID], [Status], RechnungsNr" Dim dtSelectedSammelrechnungen As DataTable = (New SQL).loadDgvBySql(SQLStringGruppierteSammelrechnung, "FMZOLL") If dtSelectedSammelrechnungen.Rows.Count > 0 Then If cbxVorschau.Checked Then Dim nurNICHTEUKunden As Boolean = False If rbAlleKunden.Checked Then nurNICHTEUKunden = MsgBox("Sollen nur die Rechnungen der NICHT-EU Kunden gedruckt werden?" & vbNewLine & "Ja -> nur NICHT-EU KUNDEN" & vbNewLine & "Nein -> alle KUNDEN", vbYesNo) End If Dim dTLANDEU As DataTable = (New SQL).loadDgvBySql("select LandKz, MitgliedslandEU from Währungstabelle where LandKz is not null", "FMZOLL") Dim R As DataRow = dTLANDEU.NewRow R("LandKz") = "MK" R("MitgliedslandEU") = False dTLANDEU.Rows.Add(R) For Each rowRE In dtSelectedSammelrechnungen.Rows Dim path = "" Dim isEU As Boolean = dTLANDEU.AsEnumerable().Where(Function(res) res.Field(Of String)("LandKz") = rowRE("LandKZ")).Select(Function(res) res.Field(Of Boolean)("MitgliedslandEU")).FirstOrDefault() 'für nicht MWST-Kunde Originalrechnung (ohne Kopie) ausdrucken (die müssen die Originalrechnung per Post bekommen)! If nurNICHTEUKunden Then If Not isEU Then If rowRE("keinMWSTKunde") Then 'kein MWST Kunde -> OROGINAL-RE cFakturierung.doSAMMELRechnungsDruck_Abschnitt(rowRE("RechnungsNr"), rowRE("Firma_ID"), rowRE("Buchungsjahr"), rowRE("DruckDatumZeit"), "", True, True, 7, path,, , , , , , ,,, cbxMautanh.Checked, False) Else 'MWST Kunde -> wenn ohne MWST-BEtrag ->Original sonst Kopie! cFakturierung.doSAMMELRechnungsDruck_Abschnitt(rowRE("RechnungsNr"), rowRE("Firma_ID"), rowRE("Buchungsjahr"), rowRE("DruckDatumZeit"), "", True, True, 7, path,, , , , , , ,,, cbxMautanh.Checked, rowRE("Steuer") <> 0) End If End If Else If rowRE("keinMWSTKunde") Then 'kein MWST Kunde -> OROGINAL-RE cFakturierung.doSAMMELRechnungsDruck_Abschnitt(rowRE("RechnungsNr"), rowRE("Firma_ID"), rowRE("Buchungsjahr"), rowRE("DruckDatumZeit"), "", True, True, 7, path,, , , , , , ,,, cbxMautanh.Checked, False) Else 'MWST Kunde -> wenn ohne MWST-BEtrag ->Original sonst Kopie! cFakturierung.doSAMMELRechnungsDruck_Abschnitt(rowRE("RechnungsNr"), rowRE("Firma_ID"), rowRE("Buchungsjahr"), rowRE("DruckDatumZeit"), "", True, True, 7, path,, , , , , , ,,, cbxMautanh.Checked, rowRE("Steuer") <> 0) End If End If 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 'Exit For Next 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.") showPic(False, PictureBox8) Else showPic(True, PictureBox8) Process.Start(pathPDFMerge) End If Else showPic(True, PictureBox8) Process.Start(pathPDF) End If pbPloseAnh_Proz.Value = 100 txtPloseAnh_Einarbeitung.Text = dtSelectedSammelrechnungen.Rows.Count & " / " & dtSelectedSammelrechnungen.Rows.Count lblPloseAnh_Proz.Text = "100.00 %" Else MsgBox("Datei von " & rechnungsdatum.ToShortDateString & " konnte nicht erstellt werden!") End If End If If cbxRechnungsjournaldrucken.Checked Then REJournalExcel(Sachbearbeiter, rechnungsdatum, -1) If cbxAbfVerbotdrucken.Checked Then AbfVerbotExcel(Sachbearbeiter, rechnungsdatum, -1) Else showPic(False, PictureBox8) If kdnr > 0 Then MsgBox("Keine Sammelrechnung zum " & rechnungsdatum.ToShortDateString & " von " & Sachbearbeiter & " für Kundennummer " & kdnr & " vorhanden!") Else MsgBox("Keine Sammelrechnung zum " & rechnungsdatum.ToShortDateString & " von " & Sachbearbeiter & " vorhanden!") End If End If End Sub Private Sub Button18_Click(sender As Object, e As EventArgs) Handles Button18.Click If cbxMautbericht._value = "" Then Exit Sub If cbxDateMautbericht._value = "" Then Exit Sub Try Select Case cbxMautbericht._value 'nur intern 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) 'für Kunde an RE anhängen Case "Gesamtbericht_CSV" Dim AnzahlCSV_Berichte As Integer = CInt((New SQL).getValueTxtBySql("SELECT count(distinct(tblMautbericht.[Customer No])) FROM Adressen INNER JOIN tblMautbericht ON Adressen.AdressenNr = tblMautbericht.[Customer No] WHERE Adressen.ExportMautberichtCSV=1 AND cast(BillingDate as Date) = '" & cbxDateMautbericht._value & "'", "FMZOLL")) 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 Dim displayView = New DataView(dtBerichtkunden_CSV, "", "Customer No", DataViewRowState.CurrentRows) Dim distinctDT_CSV As DataTable = displayView.ToTable(True, "Customer No") Dim cnt As Integer = 0 '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 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(";", ", ") & ";" Next outFile.WriteLine(clmns) Next outFile.Close() If True Then 'cnt Mod 10 = 0 Then TextBox1.Text = cnt & " / " & AnzahlCSV_Berichte Dim proz As Double = (cnt / AnzahlCSV_Berichte) * 100 pbMautAnh_Proz.Value = proz lblMautAnh_Proz.Text = proz.ToString("N2") & " %" 'GroupBox12.Refresh() My.Application.DoEvents() End If cnt += 1 Next pbMautAnh_Proz.Value = 100 TextBox1.Text = AnzahlCSV_Berichte & " / " & AnzahlCSV_Berichte lblMautAnh_Proz.Text = "100.00 %" MsgBox("CSV-Berichte wurden unter " & PathMautberichte & "erzeugt.") Else MsgBox("Es wurden keine Daten bereitgestellt") End If 'für Kunde an RE anhängen (Tool Report to Verag Invoice aus FMZOLL) Case "Lieferantenbericht_PDF" Dim AnzahlPDF_Berichte As Integer = CInt((New SQL).getValueTxtBySql("SELECT count(distinct(tblMautbericht.[Customer No])) FROM tblMautbericht WHERE cast(BillingDate as Date) = '" & cbxDateMautbericht._value & "'", "FMZOLL")) 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 Dim cnt = 0 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! 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 'If pdf.Item(0) = 401026 Then ' MsgBox("Test") 'End If Dim dt_PDF_selected = dtBerichtkunden_PDF.Select("[Customer No] ='" & pdf.Item(0) & "'").CopyToDataTable Dim dtLaender As DataTable = (New SQL).loadDgvBySql("SELECT tblMautbericht.[Customer No], tblMautbericht.[Transaction Country], sum(tblMautbericht.[Net Amount]) as Netto, sum(tblMautbericht.[VAT Amount]) as MWST, sum(tblMautbericht.[Total Amount]) as Brutto FROM tblMautbericht WHERE [Customer No] ='" & pdf.Item(0) & "' GROUP BY [Customer No], [Transaction Country] ORDER BY tblMautbericht.[Customer No], tblMautbericht.[Transaction Country]", "FMZOLL") createPDFMautbericht(pdf.Item(0), dt_PDF_selected, cbxDateMautbericht._value, PathMautberichte, dtLaender) If True Then 'cnt Mod 10 = 0 Then TextBox1.Text = cnt & " / " & AnzahlPDF_Berichte Dim proz As Double = (cnt / AnzahlPDF_Berichte) * 100 pbMautAnh_Proz.Value = proz lblMautAnh_Proz.Text = proz.ToString("N2") & " %" 'GroupBox12.Refresh() My.Application.DoEvents() End If cnt += 1 Next pbMautAnh_Proz.Value = 100 TextBox1.Text = AnzahlPDF_Berichte & " / " & AnzahlPDF_Berichte lblMautAnh_Proz.Text = "100.00 %" MsgBox("PDF-Berichte wurden unter " & PathMautberichte & "erzeugt.") Else MsgBox("Es wurden keine Daten bereitgestellt") End If End Select Dim countCSV = 0 Dim countPDF = 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") Then countCSV += 1 If f.ToString.ToLower.EndsWith("_maut.pdf") Then countPDF += 1 Next End If End If lblAnzahlMautberichte.Text = countCSV + countPDF & "x Mautberichte (" & countCSV & "x CSV " & countPDF & "x PDF )" Catch ex As System.Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Private Function createPDFMautbericht(kdnr As Integer, dt As DataTable, anhangsdatum As Date, path As String, dtLaender As DataTable) As String Dim rpt As New rptPLOSE_Anhang Dim sql As New VERAG_PROG_ALLGEMEIN.SQL rpt.DataSource = dt rpt.txtKunde.Text = kdnr & " " & New VERAG_PROG_ALLGEMEIN.cAdressen(kdnr).FullName rpt.lblRgDatum.Text = anhangsdatum.ToShortDateString rpt.GroupHeaderKz.DataField = "Licence Plate Number" 'rpt.txtNettoKzSum.Visible = False 'rpt.txtNettoGesSum.Visible = False 'rpt.txtNetto.Visible = False 'rpt.txtNettoKatSum.Visible = False 'rpt.lblNetto.Visible = False 'rpt.txtMWSTKzSum.Visible = False 'rpt.txtMWSTGEsSum.Visible = False 'rpt.txtMWST.Visible = False 'rpt.txtMWSTKatSum.Visible = False 'rpt.lblMWST.Visible = False 'rpt.lblBrutto.Text = "Total Amount ( EUR )" 'rpt.Label4.Text = bis.ToShortDateString 'rpt.Label2.Text = "UTA-KundenNr:" rpt.TextBox1.Text = kdnr ' rpt.Label1.Text = " UTA Fleet Management Service" rpt.lblSummeKennzeichen.Visible = False rpt.lblService.Visible = False rpt.Label2.Visible = False rpt.TextBox1.Visible = False rpt.Label3.Visible = False rpt.Label4.Visible = False rpt.lblFirmaFax.Visible = False rpt.lblFirmaEmail.Visible = False rpt.Label16.Visible = False 'rpt.lblSummeKennzeichen.Location = New PointF(rpt.lblSummeKennzeichen.Location.X + 4.5, rpt.lblSummeKennzeichen.Location.Y) 'rpt.lblSumKategorie.Location = New PointF(rpt.lblSumKategorie.Location.X + 4.5, rpt.lblSumKategorie.Location.Y) 'rpt.lblGessumme.Location = New PointF(rpt.lblGessumme.Location.X + 4.5, rpt.lblGessumme.Location.Y) Dim sumNetto As Double = 0 Dim sumMWST As Double = 0 Dim sumBrutto As Double = 0 Dim sumNettoKat As Double = 0 Dim sumMWSTKat As Double = 0 Dim sumBruttoKat As Double = 0 Dim sumNettoGes As Double = 0 Dim sumMWSTGes As Double = 0 Dim sumBruttoGes As Double = 0 Dim cntKat = 0 Dim cnt = 0 rpt.GroupFooterKat.Visible = False AddHandler rpt.Detail.Format, Sub() rpt.txtKunde.Text = sql.isDbnullEmpty(rpt.Fields.Item("Customer No").Value, "") rpt.txtKunde.Text &= " " & sql.isDbnullEmpty(rpt.Fields.Item("Customer name").Value, "") rpt.txtProdukt.Text = sql.isDbnullEmpty(rpt.Fields.Item("Product description").Value, "") 'sql.isDbnullEmpty(rpt.Fields.Item("plose_ProduktCode").Value, "") & " - " & sql.isDbnullEmpty(rpt.Fields.Item("plose_Produktbeschreibung").Value, "") rpt.txtKartennummer.Text = sql.isDbnullEmpty(rpt.Fields.Item("Card number").Value, "") rpt.txtEingang.Text = sql.isDbnullEmpty(rpt.Fields.Item("Entry Terminal").Value, "") rpt.txtAusgang.Text = sql.isDbnullEmpty(rpt.Fields.Item("Exit Terminal").Value, "") rpt.txtLand.Text = sql.isDbnullEmpty(rpt.Fields.Item("Transaction Country").Value, "") rpt.txtDatum.Text = sql.isDbnullEmpty(rpt.Fields.Item("Transaction date").Value, "") rpt.txtNetto.Text = sql.isDbnullEmptyDbl(rpt.Fields.Item("Net Amount").Value, 2, "") rpt.txtMWST.Text = sql.isDbnullEmptyDbl(rpt.Fields.Item("VAT Amount").Value, 2, "") rpt.txtBrutto.Text = sql.isDbnullEmptyDbl(rpt.Fields.Item("Total Amount").Value, 2, "") sumNetto += sql.isDbnullEmptyDbl(rpt.Fields.Item("Net Amount").Value, 4, 0) sumMWST += sql.isDbnullEmptyDbl(rpt.Fields.Item("VAT Amount").Value, 4, 0) sumBrutto += sql.isDbnullEmptyDbl(rpt.Fields.Item("Total Amount").Value, 4, 0) cnt += 1 End Sub AddHandler rpt.GroupHeaderKz.Format, Sub() rpt.txtKennzeichen.Text = sql.isDbnullEmpty(rpt.Fields.Item("Licence Plate Number").Value, "") If rpt.txtKennzeichen.Text = "" Then rpt.lblKennzeichen.Visible = False End Sub AddHandler rpt.GroupHeaderKat.Format, Sub() rpt.lblKategorie.Text = "MAUT REPORT" End Sub AddHandler rpt.GroupFooterKz.Format, Sub() rpt.txtNettoKzSum.Text = sumNetto.ToString("N2") rpt.txtMWSTKzSum.Text = sumMWST.ToString("N2") rpt.txtBruttoKzSum.Text = sumBrutto.ToString("N2") sumNettoGes += sumNetto sumMWSTGes += sumMWST sumBruttoGes += sumBrutto sumNetto = 0 sumMWST = 0 sumBrutto = 0 rpt.lblSummeKennzeichen.Text = rpt.lblSummeKennzeichen.Text.Replace("Kennzeichen", sql.isDbnullEmpty(rpt.Fields.Item("Licence Plate Number").Value, "")) End Sub AddHandler rpt.GroupFooterKat.Format, Sub() sumNettoKat += sumNetto sumMWSTKat += sumMWST sumBruttoKat += sumBrutto sumNetto = 0 sumMWST = 0 sumBrutto = 0 rpt.txtNettoKatSum.Text = sumNettoKat.ToString("N2") rpt.txtMWSTKatSum.Text = sumMWSTKat.ToString("N2") rpt.txtBruttoKatSum.Text = sumBruttoKat.ToString("N2") cntKat += 1 rpt.lblSumKategorie.Text = rpt.lblSumKategorie.Text.Replace("Kunde", sql.isDbnullEmpty(rpt.Fields.Item("Customer No").Value, "")) End Sub AddHandler rpt.ReportFooter1.Format, Sub() 'sumNettoGes += sumNettoKat 'sumMWSTGes += sumMWSTKat 'sumBruttoGes += sumBruttoKat sumNettoKat = 0 sumMWSTKat = 0 sumBruttoKat = 0 sumNetto = 0 sumMWST = 0 sumBrutto = 0 rpt.txtNettoGesSum.Text = sumNettoGes.ToString("N2") rpt.txtMWSTGEsSum.Text = sumMWSTGes.ToString("N2") rpt.txtBruttoGesSum.Text = sumBruttoGes.ToString("N2") 'If cntKat <= 1 Then ' rpt.GroupFooterKat.Visible = False 'End If End Sub 'print.Viewer.LoadDocument(rpt) 'print.Viewer.ViewType = GrapeCity.Viewer.Common.Model.ViewType.Continuous 'print.Show() Dim tmpPath = path & "\" & kdnr & "_Maut.pdf" Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport rpt.Run(False) Dim rpt2 As New rptPLOSE_LaenderGesamt rpt2.DataSource = dtLaender rpt2.Label7.Visible = False rpt2.lblEU.Visible = False rpt2.lblUeberschrift.Text = "Länder Gesamt" Dim sum = 0 ' rpt.lblUeberschrift.Text = "PLOSE Summenbericht " & dat_Sum_Von.Text & " bis " & dat_Sum_Bis.Text rpt2.lblSachbearbeiter.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME 'rpt.lblMandantNiederlassung.Text = PERSONAL.Mandant & " / " & PERSONAL.Niederlassung 'Dim cnt As Integer = 0 rpt2.lblDat.Text = Now.ToLongDateString Dim sumPreis As Double = 0 Dim sumNettoLaender As Double = 0 Dim sumMWSTLaender As Double = 0 Dim sumBruttoLaender As Double = 0 Dim sumBruttoAlleLeistungen As Double = 0 Dim sumMenge As Double = 0 AddHandler rpt2.Detail.Format, Sub() rpt2.lblLand.Text = sql.isDbnullEmpty(rpt2.Fields.Item("Transaction Country").Value, "") rpt2.lblEU.Text = "" 'sql.isDbnullEmpty(rpt.Fields.Item("EU").Value, "") rpt2.lblNetto.Text = sql.isDbnullEmptyDbl(rpt2.Fields.Item("Netto").Value, 2, "") rpt2.lblMWST.Text = sql.isDbnullEmptyDbl(rpt2.Fields.Item("MWST").Value, 2, "") rpt2.lblBrutto.Text = sql.isDbnullEmptyDbl(rpt2.Fields.Item("Brutto").Value, 2, "") sumNetto += sql.isDbnullEmptyDbl(rpt2.Fields.Item("Netto").Value, 4, 0) sumMWST += sql.isDbnullEmptyDbl(rpt2.Fields.Item("MWST").Value, 4, 0) sumBrutto += sql.isDbnullEmptyDbl(rpt2.Fields.Item("Brutto").Value, 4, 0) End Sub AddHandler rpt2.ReportFooter1.Format, Sub() rpt2.lblSumNetto.Text = sumNetto.ToString("N2") rpt2.lblSumMwst.Text = sumMWST.ToString("N2") rpt2.lblSumBrutto.Text = sumBrutto.ToString("N2") End Sub rpt2.Run() For i = 0 To rpt2.Document.Pages.Count - 1 rpt.Document.Pages.Add(rpt2.Document.Pages(i)) Next p.NeverEmbedFonts = "" p.Export(rpt.Document, tmpPath) rpt.Dispose() Return tmpPath End Function Private Sub cbxDateMautbericht_SelectedValueChanged(sender As Object, e As EventArgs) Handles cbxDateMautbericht.SelectedValueChanged With MyDatagridview1 .Columns.Clear() .SET_SQL("SELECT [Datenquelle] as Lieferant,sum([Net Amount]) as Netto,sum([VAT Amount]) as VAT,sum([Total Amount]) as Brutto FROM [VERAG].[dbo].[tblMautbericht] where cast([Billingdate] as date) = '" & cbxDateMautbericht._value & "' group by [Datenquelle]", "FMZOLL") .LOAD() End With End Sub Private Sub KdSearchBox3_TextChanged(sender As Object, e As EventArgs) Handles KdSearchBox3.TextChanged rbkunde.Checked = True End Sub Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles btnMDMSammelrechnung.Click Dim f As New frmFaktSammelRgDrucken(19) f.ShowDialog(Me) End Sub Sub showPic(ok As Boolean, pic As PictureBox) pic.Visible = True If ok Then pic.BackgroundImage = My.Resources.ok Else pic.BackgroundImage = My.Resources.del End If End Sub Private Sub btnRechnugnsdaten_Click(sender As Object, e As EventArgs) Handles btnRechnugnsdaten.Click Dim f As New SDL.frmRechnungenSuche f.Show(Me) End Sub Private Sub Button1_Click_2(sender As Object, e As EventArgs) Handles Button1.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 rechnungenMitGesamtmautanhantCSV As String = (New SQL).getValueTxtBySqlVarList("SELECT COUNT(*) FROM Rechnungsausgang inner join RechnungsausgangAnhaenge on Rechnungsausgang.RK_ID = RechnungsausgangAnhaenge.RK_ID WHERE ([Status] = 0 or [Status] = 2 or [Status] = 4) AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' and (RechnungsausgangAnhaenge.Bezeichnung like '%Maut.csv')", "FMZOLL",, 0) Dim rechnungenMitGesamtmautanhantPDF As String = (New SQL).getValueTxtBySqlVarList("SELECT COUNT(*) FROM Rechnungsausgang inner join RechnungsausgangAnhaenge on Rechnungsausgang.RK_ID = RechnungsausgangAnhaenge.RK_ID WHERE ([Status] = 0 or [Status] = 2 or [Status] = 4) 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')", "FMZOLL",, 0) MsgBox("Anzahl CSV-Anhänge: " & rechnungenMitGesamtmautanhantCSV & vbNewLine & "Anzahl PDF-Anhänge: " & rechnungenMitGesamtmautanhantPDF) End Sub Private Sub dtRechnungsdatum_ValueChanged(sender As Object, e As EventArgs) Handles dtRechnungsdatum.ValueChanged Dim sammelrechnung0vorhanden As Boolean = True sammelrechnung0vorhanden = checkIfStatus0Sammelrechnugnenvorhanden(cboSachbearbeiter._value, CDate(dtRechnungsdatum.Text)) Button14.Enabled = sammelrechnung0vorhanden 'Button19.Enabled = sammelrechnung0vorhanden wenn RE bereits Status 2 wird sie nur gedruckt!!!! Button20.Enabled = sammelrechnung0vorhanden End Sub Private Function checkIfStatus0Sammelrechnugnenvorhanden(Sachbearbeiter As String, rechnungsdatum As Date) As Boolean If Sachbearbeiter = "" Then Return False If rechnungsdatum > Today() Then Return False Dim rechnungenMitStatus0 As Integer = CInt((New SQL).getValueTxtBySqlVarList("SELECT COUNT(*) From Rechnungsausgang Where [Status] = 0 And [Sammelrechnung] = 6 And UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "'", "FMZOLL",, 0)) Return rechnungenMitStatus0 > 0 End Function Private Sub cboSachbearbeiter_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboSachbearbeiter.SelectedIndexChanged Dim sammelrechnung0vorhanden As Boolean = True sammelrechnung0vorhanden = checkIfStatus0Sammelrechnugnenvorhanden(cboSachbearbeiter._value, CDate(dtRechnungsdatum.Text)) 'Button19.Enabled = sammelrechnung0vorhanden wenn RE bereits Status 2 wird sie nur gedruckt!!!! Button14.Enabled = sammelrechnung0vorhanden Button20.Enabled = sammelrechnung0vorhanden End Sub Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click, Button3.Click, btnREJdruck.Click, btnAbfdruck.Click Dim Sachbearbeiter = cboSachbearbeiter._value Dim rechnungsdatum As Date = CDate(dtRechnungsdatum.Text) Dim kdNr As Integer = -1 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 If rbkunde.Checked Then If KdSearchBox3.KdNr > 0 Then kdNr = KdSearchBox3.KdNr Else MsgBox("Kunde auswählen!") Exit Sub End If End If Select Case sender.Name Case "Button2" ' Porto/Papiere berechnen. showPic(PortoPapiere(Sachbearbeiter, rechnungsdatum, kdNr), PictureBox4) Case "Button3" 'Berechnet Banküberweisung/Bankspesen. showPic(Bankspesen(Sachbearbeiter, rechnungsdatum, kdNr), PictureBox5) Case "btnREJdruck" REJournalExcel(Sachbearbeiter, rechnungsdatum, kdNr) Case "btnAbfdruck" AbfVerbotExcel(Sachbearbeiter, rechnungsdatum, kdNr) End Select End Sub Private Sub AbfVerbotExcel(Sachbearbeiter, rechnungsdatum, kdnr) Dim dtEbfertigungsverbot As DataTable = (New SQL).loadDgvBySql("SELECT Rechnungsausgang.Buchungsjahr, Rechnungsausgang.Währungscode, Rechnungsausgang.RechnungsNr, Rechnungsausgang.RechnungsDatum, MIN(Rechnungsausgang.KundenNrZentrale) AS KundenNrZentrale, MIN(Rechnungsausgang.RechnungsKundenNr) AS RechnungsKundenNr, MIN(Rechnungsausgang.[RechnungsName 1]) AS [RechnungsName 1], MAX(Rechnungsausgang.Abfertigungsdatum) AS Abfertigungsdatum, SUM(RechnungsausgangPositionen.SteuerpflichtigerBetrag) AS SteuerpflichtigerGesamtbetrag, SUM(RechnungsausgangPositionen.SteuerfreierBetrag) AS SteuerfreierGesamtbetrag, MIN(Rechnungsausgang.[Steuersatz %]) AS [Steuersatz %], Rechnungsausgang.Status, Rechnungsausgang.DruckDatumZeit, Rechnungsausgang.Sachbearbeiter FROM Rechnungsausgang INNER JOIN Filialen ON Rechnungsausgang.FilialenNr = Filialen.FilialenNr INNER JOIN Kunden ON Rechnungsausgang.RechnungsKundenNr = Kunden.KundenNr INNER JOIN RechnungsausgangPositionen ON Rechnungsausgang.RK_ID = RechnungsausgangPositionen.RK_ID WHERE Kunden.Abfertigungsverbot = 1 AND [Status] = 2 AND Rechnungsausgang.[Sammelrechnung] = 6 AND UPPER(Rechnungsausgang.[Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "' and RechnungsNr is not null " & IIf(kdnr > 0, " AND Rechnungsausgang.RechnungsKundenNr = " & kdnr, "") & " GROUP BY Rechnungsausgang.Buchungsjahr, Rechnungsausgang.Währungscode, Rechnungsausgang.RechnungsNr, Rechnungsausgang.RechnungsDatum, Rechnungsausgang.Status, Rechnungsausgang.DruckDatumZeit, Rechnungsausgang.Sachbearbeiter ORDER BY Rechnungsausgang.Buchungsjahr, Rechnungsausgang.Währungscode, Rechnungsausgang.RechnungsNr;", "FMZOLL") If dtEbfertigungsverbot.Rows.Count > 0 Then cProgramFunctions.genExcelFromDT_NEW(dtEbfertigungsverbot, {"I1:I" & (dtEbfertigungsverbot.Rows.Count + 1), "J1:J" & (dtEbfertigungsverbot.Rows.Count + 1), "K1:K" & (dtEbfertigungsverbot.Rows.Count + 1)},, "RECHNUNGEN VOM " & rechnungsdatum.ToShortDateString & " MIT ABFERTIGUNGSVERBOT",,, True) Else MsgBox("Keine Daten für Abfertigungsverbot") End If End Sub Private Sub REJournalExcel(Sachbearbeiter, rechnungsdatum, kdnr) Dim dtRechnungsjournal As DataTable = (New SQL).loadDgvBySql("SELECT Rechnungsausgang.Währungscode, Rechnungsausgang.RechnungsLandKz, Rechnungsausgang.RechnungsNr, Rechnungsausgang.RechnungsDatum, MIN(Rechnungsausgang.KundenNrZentrale) AS KundenNrZentrale, MIN(Rechnungsausgang.RechnungsKundenNr) AS RechnungsKundenNr, MIN(Rechnungsausgang.[RechnungsName 1]) AS [RechnungsName 1], MAX(Rechnungsausgang.Abfertigungsdatum) AS Abfertigungsdatum, SUM(RechnungsausgangPositionen.SteuerpflichtigerBetrag) AS SteuerpflichtigerGesamtbetrag, SUM(RechnungsausgangPositionen.SteuerfreierBetrag) AS SteuerfreierGesamtbetrag, MIN(Rechnungsausgang.[Steuersatz %]) AS [Steuersatz %], Rechnungsausgang.Status, Rechnungsausgang.DruckDatumZeit, Rechnungsausgang.Sachbearbeiter FROM Rechnungsausgang INNER JOIN Filialen ON Rechnungsausgang.FilialenNr = Filialen.FilialenNr INNER JOIN RechnungsausgangPositionen ON Rechnungsausgang.RK_ID = RechnungsausgangPositionen.RK_ID 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 Rechnungsausgang.RechnungsKundenNr = " & kdnr, "") & " GROUP BY Rechnungsausgang.Buchungsjahr, Rechnungsausgang.Währungscode, Rechnungsausgang.RechnungsLandKz, Rechnungsausgang.RechnungsNr, Rechnungsausgang.RechnungsDatum, Rechnungsausgang.Status, Rechnungsausgang.DruckDatumZeit, Rechnungsausgang.Sachbearbeiter ORDER BY Rechnungsausgang.Buchungsjahr, Rechnungsausgang.Währungscode, Rechnungsausgang.RechnungsLandKz, Rechnungsausgang.RechnungsNr", "FMZOLL") If dtRechnungsjournal.Rows.Count > 0 Then cProgramFunctions.genExcelFromDT_NEW(dtRechnungsjournal, {"J1:J" & (dtRechnungsjournal.Rows.Count + 1), "K1:K" & (dtRechnungsjournal.Rows.Count + 1), "L1:L" & (dtRechnungsjournal.Rows.Count + 1)},, "RECHNUNGSJOURNAL VOM" & rechnungsdatum.ToShortDateString,,, True) Else MsgBox("Keine Daten für Rechnungsjournal") End If End Sub End Class