2206 lines
119 KiB
VB.net
2206 lines
119 KiB
VB.net
Imports System.Globalization
|
|
Imports System.IO
|
|
Imports System.Web.UI.WebControls.Expressions
|
|
Imports VERAG_PROG_ALLGEMEIN
|
|
|
|
Public Class usrcntlFakturierung
|
|
|
|
Dim FMZOLL_SQL As New FMZOLL_SQL
|
|
Dim PathMautberichte = ""
|
|
Dim countCSV As Integer = 0
|
|
Dim countPDF As Integer = 0
|
|
|
|
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")
|
|
|
|
cbxMautanh.Checked = False
|
|
|
|
'PathMautberichte = "C:\Users\d.breimaier\Desktop\MDM\Mautgesamtberichte\"
|
|
|
|
Dim FaktAbt As Boolean = IIf(VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG("MDM_FAKTURIERUNG", "SDL") = 0, True, False)
|
|
|
|
countCSV = 0
|
|
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
|
|
Else
|
|
If FaktAbt Then MsgBox("Mautbericht-Pfad " & PathMautberichte & " nicht verfügbar!")
|
|
End If
|
|
|
|
lblAnzahlMautberichte.Text = countCSV + countPDF & "x Mautberichte (" & countCSV & "x CSV " & countPDF & "x PDF )"
|
|
|
|
If FaktAbt Then
|
|
|
|
btnMDMSammelrechnung.Enabled = True
|
|
GBMautberichte.Enabled = True
|
|
GBSammelrechnung.Enabled = True
|
|
btnFakturierung.Enabled = True
|
|
btnRechnugnsdaten.Enabled = True
|
|
btnLieferantenrechnungen.Enabled = True
|
|
GroupBox1.Enabled = True
|
|
btnAbfdruck.Enabled = True
|
|
btnREJdruck.Enabled = True
|
|
|
|
End If
|
|
|
|
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG("MDM_LIEFERANTENRECHNUNGEN", "SDL") = 0 Then
|
|
GroupBox1.Enabled = True
|
|
btnLieferantenrechnungen.Enabled = True
|
|
btnMDMSammelrechnung.Enabled = False
|
|
btnFakturierung.Enabled = False
|
|
btnRechnugnsdaten.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 btn_Mautanh_entfernen.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ühren' 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 btnRePos.Click
|
|
|
|
Label70.Text = "7. Hängt Mautgesamtbericht an Sammelrechnungen 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
|
|
PictureBox7.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
|
|
|
|
'es sollen alle RE der letzen 3 Monate gesetzt werden (warum, weil das schon immer so war....)
|
|
'ok = SQL.doSQL("update [Rechnungsausgang] set Sachbearbeiter='" & Sachbearbeiter & "' where Sammelrechnung=6 and Firma_ID=19 and Abfertigungsdatum = '" & dtRechnungsdatum.Value & "'", "FMZOLL")
|
|
|
|
ok = SQL.doSQL("update [Rechnungsausgang] set Sachbearbeiter='" & Sachbearbeiter & "' where Firma_ID = 19 And Sammelrechnung = 6 And Abfertigungsdatum > DateAdd(Month, -3, GETDATE())", "FMZOLL")
|
|
|
|
showPic(ok, PictureBox1)
|
|
|
|
If Not ok Then Exit Sub
|
|
|
|
|
|
Dim rechnungenMitAbwAbfDat 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))
|
|
|
|
If rechnungenMitAbwAbfDat > 0 Then
|
|
Dim res As MsgBoxResult
|
|
res = MsgBox("Es gibt noch " & rechnungenMitAbwAbfDat & " Rechnungen mit abweichenden Abfertigungsdatum (Abfertigungsdatum ist nicht " & rechnungsdatum & ")" & vbNewLine & "Möchten Sie fortfahren (Abfertigungsdatum wird automatisch auf " & rechnungsdatum & " gesetzt) ?", vbYesNoCancel)
|
|
Select Case res
|
|
Case MsgBoxResult.Yes : SQL.doSQL("update [Rechnungsausgang] set Abfertigungsdatum = '" & rechnungsdatum & "' WHERE [Status] = 0 AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) <> '" & rechnungsdatum & "'", "FMZOLL")
|
|
Case MsgBoxResult.No
|
|
Case MsgBoxResult.Cancel : Exit Sub
|
|
End Select
|
|
|
|
|
|
End If
|
|
|
|
|
|
|
|
Dim rechnungenMitGesamtmautanhangCSV 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 rechnungenMitGesamtmautanhangPDF 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 rechnungenMitGesamtmautanhangPDF <> "" Then
|
|
MsgBox("Bei " & rechnungenMitGesamtmautanhangPDF & " Rechnungen befindet sich noch eine PDF-Gesamtmaut" & vbNewLine & "Diesen bitte vorher entfernen über MAUTBERICHTE ENTFERNEN, weil erst im Zuge der RE-Pos-Berechnung die Gesamtmaut angehängt wird." & vbNewLine & "Vorang wird abgebrochen!")
|
|
Exit Sub
|
|
|
|
End If
|
|
|
|
If rechnungenMitGesamtmautanhangCSV <> "" Then
|
|
MsgBox("Bei " & rechnungenMitGesamtmautanhangCSV & " Rechnungen befindet sich noch eine CSV-Gesamtmaut" & vbNewLine & "Diesen bitte vorher entfernen über MAUTBERICHTE ENTFERNEN, weil erst im Zuge der RE-Pos-Berechnung die Gesamtmaut angehängt wird." & vbNewLine & "Vorang wird abgebrochen!")
|
|
Exit Sub
|
|
|
|
End If
|
|
|
|
|
|
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")
|
|
|
|
|
|
If Not vbYes = MsgBox("Möchten Sie mit der Erstellung der " & dtREGU.Rows.Count & " Sammelrechnungen vorfahren?", vbYesNoCancel) Then
|
|
Exit Sub
|
|
End If
|
|
|
|
'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 Single = r("Steuersatz %") 'Single same as real-datatype in SQL (wichtig, sonst findet er den wert nicht!!!)
|
|
|
|
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.ToString.Replace(",", ".") & " 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)
|
|
|
|
'--NICHT BENÖTIGT!
|
|
' Porto/Papiere berechnen.
|
|
'showPic(PortoPapiere(Sachbearbeiter, rechnungsdatum), PictureBox4)
|
|
'--NICHT BENÖTIGT!
|
|
|
|
'Berechnet Banküberweisung/Bankspesen.
|
|
showPic(Bankspesen(Sachbearbeiter, rechnungsdatum), PictureBox5)
|
|
|
|
'Berechnet FixeTaxe.
|
|
showPic(FixeTaxe(Sachbearbeiter, rechnungsdatum), PictureBox6)
|
|
|
|
|
|
'Gesamtmautberichte an Sammelrechnung anhängen
|
|
Dim okMaut As Boolean = False
|
|
okMaut = setMautgesamtberichtInRechnung(Sachbearbeiter, rechnungsdatum, dtSammelrechnungen)
|
|
|
|
showPic(okMaut, PictureBox7)
|
|
|
|
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 Single = r("Steuersatz %") 'Single same as real-datatype in SQL (wichtig, sonst findet er den wert nicht!!!)
|
|
'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 UPPER(Rechnungsausgang.Sachbearbeiter) = '" & Sachbearbeiter & "'
|
|
And Rechnungsausgang.RechnungsKundenNr = " & r("RechnungsKundenNr") & "
|
|
And Rechnungsausgang.BelegartenNr = " & r("BelegartenNr") & "
|
|
And Rechnungsausgang.Währungscode = '" & r("Währungscode") & "'
|
|
And Rechnungsausgang.[Steuersatz %] = " & steuersatz.ToString.Replace(",", ".") & "
|
|
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 FixeTaxe(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=441.
|
|
|
|
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 = 441 THEN Anzahl ELSE 0 END) AS AnzahlFT,
|
|
SUM(CASE WHEN LeistungsNr = 441 THEN 0 ELSE SteuerpflichtigerBetrag + SteuerfreierBetrag END) AS BetragExclusivFT
|
|
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 = 441 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 dtFT As DataTable = (New SQL).loadDgvBySql(sqlString, "FMZOLL")
|
|
|
|
If dtFT.Rows.Count > 0 Then
|
|
|
|
For Each r In dtFT.Rows
|
|
|
|
Dim intZlr As Integer = 0
|
|
|
|
If r("RechnungsKundenNr") = "401715" Or r("RechnungsKundenNr") = "401943" Or r("RechnungsKundenNr") = "402179" Or r("RechnungsKundenNr") = "402598" Or r("RechnungsKundenNr") = "402656" Or r("RechnungsKundenNr") = "402688" Or r("RechnungsKundenNr") = "402719" Or r("RechnungsKundenNr") = "402888" Or r("RechnungsKundenNr") = "402933" Or r("RechnungsKundenNr") = "401733" Or r("RechnungsKundenNr") = "402245" Or r("RechnungsKundenNr") = "402712" Or r("RechnungsKundenNr") = "402065" Or r("RechnungsKundenNr") = "402712" Or r("RechnungsKundenNr") = "401908" Or r("RechnungsKundenNr") = "401829" Or r("RechnungsKundenNr") = "203083" Then
|
|
'MsgBox("Test")
|
|
End If
|
|
|
|
|
|
' Bei BetragExclusivFT kleiner als 500€ wird 1x fixe Taxe verrechnet, bei grösser/gleich 500€ wird kein fixe Taxe verrechnet.
|
|
' Zähler auf die Anzahl der fixe Taxe Löschungen einstellen.
|
|
|
|
If Not IsDBNull(r("BetragExclusivFT")) AndAlso r("BetragExclusivFT") > 0 Then
|
|
|
|
If r("BetragExclusivFT") < 500 Then
|
|
intZlr = r("AnzahlFT") - 1
|
|
Else
|
|
intZlr = r("AnzahlFT")
|
|
End If
|
|
|
|
Else
|
|
|
|
If (0 - r("BetragExclusivFT")) < 500 Then
|
|
intZlr = r("AnzahlFT") - 1
|
|
Else
|
|
intZlr = r("AnzahlFT") - 1
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
If intZlr > 0 Then
|
|
|
|
|
|
Dim steuersatz As Single = r("Steuersatz %") 'Single same as real-datatype in SQL (wichtig, sonst findet er den wert nicht!!!)
|
|
'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 UPPER(Rechnungsausgang.Sachbearbeiter) = '" & Sachbearbeiter & "'
|
|
And Rechnungsausgang.RechnungsKundenNr = " & r("RechnungsKundenNr") & "
|
|
And Rechnungsausgang.BelegartenNr = " & r("BelegartenNr") & "
|
|
And Rechnungsausgang.Währungscode = '" & r("Währungscode") & "'
|
|
And Rechnungsausgang.[Steuersatz %] = " & steuersatz.ToString.Replace(",", ".") & "
|
|
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 = 441", "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 intZlr < 0 Then Exit For
|
|
|
|
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 = True
|
|
|
|
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 Single = r("Steuersatz %") 'Single same as real-datatype in SQL (wichtig, sonst findet er den wert nicht!!!)
|
|
'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 %] =" & steuersatz.ToString.Replace(",", ".") & ")
|
|
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 %] =" & steuersatz.ToString.Replace(",", ".") & ")
|
|
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
|
|
|
|
'TODO: Übersetzung in Fakt.Sprache
|
|
NEWPOS.LeistungsBez = "Überweisungs/Bankspesen"
|
|
|
|
Dim preis As Double = 0
|
|
If rowBS("Bankspesen %") > 0 Then
|
|
|
|
If sumCurrenRow > 0 Then
|
|
|
|
preis = CInt(Math.Round(sumCurrenRow * rowBS("Bankspesen %") + 0.5, MidpointRounding.AwayFromZero))
|
|
Else
|
|
preis = CInt(Math.Round(0 - sumCurrenRow * rowBS("Bankspesen %") + 0.5, MidpointRounding.AwayFromZero))
|
|
|
|
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()
|
|
If RK_ID > 0 Then
|
|
Dim RECHNUNG As New cRechnungsausgang(RK_ID)
|
|
attachmentIsSet = AddAttachementToRE(FileCSV.FullName, KundenNr, RECHNUNG, rechnungsdatum)
|
|
If attachmentIsSet Then counterCSV = counterCSV + 1
|
|
End If
|
|
|
|
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()
|
|
If RK_ID > 0 Then
|
|
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
|
|
End If
|
|
Next
|
|
|
|
End If
|
|
|
|
Label70.Text = "7. 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 = "7. 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, automMailversand As Boolean) 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, , ,,, ,, ,,, automMailversand)
|
|
|
|
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 btn_setRENr.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
|
|
|
|
|
|
|
|
Dim listPDFs As New List(Of String)
|
|
|
|
'Dim SQLString = "SELECT [Firma_ID], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr]
|
|
' 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], RechnungsNr,Buchungsjahr,DruckDatumZeit,[Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr]
|
|
' ORDER BY [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr]"
|
|
|
|
|
|
Dim SQLString = "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]
|
|
ORDER BY [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr]"
|
|
|
|
|
|
|
|
|
|
Dim dtSammelrechnungenGruppiert As DataTable = (New SQL).loadDgvBySql(SQLString, "FMZOLL")
|
|
|
|
If dtSammelrechnungenGruppiert.Rows.Count > 0 Then
|
|
|
|
If Not vbYes = MsgBox("Möchten Sie die Rechnungsnummern für " & dtSammelrechnungenGruppiert.Rows.Count & " Rechnungen 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 reNrisSet = setStatus2(Sachbearbeiter, rechnungsdatum, dtSammelrechnungenGruppiert, cbxStatusAUTOMAIL.Checked)
|
|
|
|
showPic(reNrisSet, PictureBox8)
|
|
|
|
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 -> ORIGINAL-RE Ausdruck
|
|
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(rowRE("RechnungsNr"), rowRE("Firma_ID"), rowRE("Buchungsjahr"), rowRE("DruckDatumZeit"), "", True, True, 7, path,, , , , , , ,,, cbxMautanh.Checked, False)
|
|
Else
|
|
'MWST Kunde -> wenn kein MWST-Betrag ->Original sonst Kopie Ausdruck!
|
|
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 -> ORIGINAL-RE Ausdruck
|
|
cFakturierung.doSAMMELRechnungsDruck_Abschnitt(rowRE("RechnungsNr"), rowRE("Firma_ID"), rowRE("Buchungsjahr"), rowRE("DruckDatumZeit"), "", True, True, 7, path,, , , , , , ,,, cbxMautanh.Checked, False)
|
|
Else
|
|
'MWST Kunde -> wenn kein MWST-Betrag ->Original sonst Kopie Ausdruck!
|
|
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
|
|
|
|
|
|
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, PictureBox9)
|
|
Else
|
|
showPic(True, PictureBox9)
|
|
Process.Start(pathPDFMerge)
|
|
End If
|
|
|
|
Else
|
|
showPic(True, PictureBox9)
|
|
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)
|
|
REJournaByCountrylExcel(Sachbearbeiter, rechnungsdatum, -1)
|
|
End If
|
|
|
|
If cbxAbfVerbotdrucken.Checked Then AbfVerbotExcel(Sachbearbeiter, rechnungsdatum, -1)
|
|
|
|
|
|
|
|
|
|
|
|
Else
|
|
|
|
showPic(False, PictureBox9)
|
|
|
|
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
|
|
If Not Directory.Exists(PathMautberichte) Then MsgBox("Pfad " & PathMautberichte & " nicht verfügbar" & vbNewLine & "Vorgang wird abgebrochen!") : Exit Sub
|
|
|
|
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]
|
|
ORDER BY tblMautbericht.[Licence Plate Number] , tblMautbericht.[Transaction Country], tblMautbericht.[Transaction date] ", "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) & "' AND cast(BillingDate as Date) = '" & cbxDateMautbericht._value & "'
|
|
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
|
|
|
|
|
|
countCSV = 0
|
|
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
|
|
|
|
|
|
Dim dtSummen As DataTable = (New SQL).loadDgvBySql("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")
|
|
|
|
Dim sumNetto As Double = 0
|
|
Dim sumVAT As Double = 0
|
|
Dim sumBrutto As Double = 0
|
|
|
|
For Each row As DataRow In dtSummen.Rows
|
|
If Not IsDBNull(row("Netto")) AndAlso IsNumeric(row("Netto")) Then sumNetto += CDbl(row("Netto"))
|
|
If Not IsDBNull(row("VAT")) AndAlso IsNumeric(row("VAT")) Then sumVAT += CDbl(row("VAT"))
|
|
If Not IsDBNull(row("Brutto")) AndAlso IsNumeric(row("Brutto")) Then sumBrutto += CDbl(row("Brutto"))
|
|
Next
|
|
|
|
Dim drLast = dtSummen.NewRow
|
|
|
|
If dtSummen.Columns.Contains("Lieferant") Then drLast.Item("Lieferant") = "SUMME"
|
|
If dtSummen.Columns.Contains("Netto") Then drLast.Item("Netto") = sumNetto
|
|
If dtSummen.Columns.Contains("VAT") Then drLast.Item("VAT") = sumVAT
|
|
If dtSummen.Columns.Contains("Brutto") Then drLast.Item("Brutto") = sumBrutto
|
|
|
|
dtSummen.Rows.InsertAt(drLast, dtSummen.Rows.Count)
|
|
|
|
|
|
With dgvMautbericht
|
|
|
|
.Columns.Clear()
|
|
|
|
.DataSource = dtSummen
|
|
|
|
If dtSummen.Columns.Contains("Netto") Then
|
|
.Columns(1).DefaultCellStyle.Format = "c2"
|
|
.Columns(1).DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("de-DE")
|
|
.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
|
|
End If
|
|
|
|
If .Columns.Contains("VAT") Then
|
|
.Columns(2).DefaultCellStyle.Format = "c2"
|
|
.Columns(2).DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("de-DE")
|
|
.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
|
|
End If
|
|
|
|
If .Columns.Contains("Brutto") Then
|
|
.Columns(3).DefaultCellStyle.Format = "c2"
|
|
.Columns(3).DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("de-DE")
|
|
.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
|
|
End If
|
|
|
|
.AllowUserToAddRows = False
|
|
.Columns("Lieferant").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
|
|
|
|
|
|
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.Height = Screen.FromRectangle(Me.Bounds).WorkingArea.Size.Height
|
|
f.Top = 0
|
|
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 btnMautanh_pruefen.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)
|
|
|
|
If Directory.GetFiles(PathMautberichte) IsNot Nothing Then
|
|
If Directory.GetFiles(PathMautberichte).Count = (countCSV + countPDF) OrElse (rechnungenMitGesamtmautanhantCSV = "0" AndAlso rechnungenMitGesamtmautanhantPDF = "0") Then Exit Sub
|
|
End If
|
|
|
|
|
|
Dim sqlCSV = "SELECT VermittlerKundenNr 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') order by VermittlerKundenNr "
|
|
|
|
|
|
Dim sqlPDF = "SELECT VermittlerKundenNr 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') order by VermittlerKundenNr "
|
|
|
|
Dim dtVorhandeneCSV As DataTable = (New SQL).loadDgvBySql(sqlCSV, "FMZOLL")
|
|
|
|
Dim dtVorhandenePDF As DataTable = (New SQL).loadDgvBySql(sqlPDF, "FMZOLL")
|
|
|
|
Dim dtMissing As New DataTable()
|
|
dtMissing.Columns.Add("name", GetType(String))
|
|
|
|
If Directory.GetFiles(PathMautberichte) IsNot Nothing Then
|
|
For Each f In Directory.GetFiles(PathMautberichte)
|
|
If f.ToString.ToLower.EndsWith(".pdf") Then
|
|
Dim fileInfo As New FileInfo(f.ToString)
|
|
Dim KdNr As Integer = CInt(fileInfo.Name.ToString.Substring(0, 6))
|
|
If Not CheckValue(dtVorhandenePDF, Function(x) x("VermittlerKundenNr") = KdNr) Then
|
|
dtMissing.Rows.Add(fileInfo.Name)
|
|
End If
|
|
End If
|
|
|
|
|
|
If f.ToString.ToLower.EndsWith(".csv") Then
|
|
Dim fileInfo As New FileInfo(f.ToString)
|
|
Dim KdNr As Integer = CInt(fileInfo.Name.ToString.Substring(0, 6))
|
|
If Not CheckValue(dtVorhandeneCSV, Function(x) x("VermittlerKundenNr") = KdNr) Then
|
|
dtMissing.Rows.Add(fileInfo.Name)
|
|
End If
|
|
End If
|
|
|
|
|
|
|
|
Next
|
|
|
|
|
|
|
|
|
|
If dtMissing.Rows.Count > 0 Then
|
|
|
|
Dim b = New System.Text.StringBuilder()
|
|
For Each resultRow In dtMissing.Rows
|
|
b.Append(resultRow(0) & vbNewLine)
|
|
Next
|
|
|
|
MsgBox("Folgende Anhänge wurden NICHT an die Rechnung angehängt:" & vbNewLine & b.ToString)
|
|
|
|
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
|
|
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))
|
|
|
|
btnRePos.Enabled = sammelrechnung0vorhanden
|
|
'Button19.Enabled = sammelrechnung0vorhanden wenn RE bereits Status 2 wird sie nur gedruckt!!!!
|
|
btn_Mautanh_entfernen.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(distinct(RechnungsKundenNr)) 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))
|
|
|
|
Dim rechnungenErledigt As Integer = CInt((New SQL).getValueTxtBySqlVarList("SELECT COUNT(distinct(RechnungsKundenNr)) 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))
|
|
|
|
lblAnzRE.Text = rechnungenMitStatus0 & " /" & rechnungenErledigt & " (" & rechnungenMitStatus0 + rechnungenErledigt & ")"
|
|
|
|
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!!!!
|
|
btnRePos.Enabled = True 'sammelrechnung0vorhanden
|
|
btn_Mautanh_entfernen.Enabled = sammelrechnung0vorhanden
|
|
|
|
End Sub
|
|
|
|
Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click, Button3.Click, btnREJdruck.Click, btnAbfdruck.Click, btnFixeTaxe.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)
|
|
REJournaByCountrylExcel(Sachbearbeiter, rechnungsdatum, kdNr)
|
|
|
|
Case "btnAbfdruck"
|
|
|
|
AbfVerbotExcel(Sachbearbeiter, rechnungsdatum, kdNr)
|
|
|
|
Case "btnFixeTaxe"
|
|
|
|
showPic(FixeTaxe(Sachbearbeiter, rechnungsdatum, kdNr), PictureBox6)
|
|
|
|
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] in (2,4) 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
|
|
|
|
createSumFunciton(dtEbfertigungsverbot)
|
|
|
|
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 count(distinct(Rechnungsausgang.RechnungsKundenNr)) as Anzahl,
|
|
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] in (2,4) 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
|
|
createSumFunciton(dtRechnungsjournal)
|
|
|
|
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
|
|
|
|
Private Sub REJournaByCountrylExcel(Sachbearbeiter, rechnungsdatum, kdnr)
|
|
|
|
Dim dtLaender As DataTable = (New SQL).loadDgvBySql("SELECT count(distinct(Rechnungsausgang.RechnungsKundenNr)) as Anzahl,
|
|
Rechnungsausgang.Buchungsjahr,
|
|
Rechnungsausgang.Währungscode,
|
|
Rechnungsausgang.RechnungsLandKz,
|
|
SUM(RechnungsausgangPositionen.SteuerpflichtigerBetrag) AS SteuerpflichtigerGesamtbetrag,
|
|
SUM(RechnungsausgangPositionen.SteuerfreierBetrag) AS SteuerfreierGesamtbetrag
|
|
FROM
|
|
Rechnungsausgang
|
|
INNER JOIN
|
|
Filialen ON Rechnungsausgang.FilialenNr = Filialen.FilialenNr
|
|
INNER JOIN
|
|
RechnungsausgangPositionen ON Rechnungsausgang.RK_ID = RechnungsausgangPositionen.RK_ID
|
|
WHERE
|
|
[Status] in (2,4) 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
|
|
|
|
ORDER BY
|
|
Rechnungsausgang.Buchungsjahr,
|
|
Rechnungsausgang.Währungscode,
|
|
Rechnungsausgang.RechnungsLandKz ", "FMZOLL")
|
|
|
|
If dtLaender.Rows.Count > 0 Then
|
|
createSumFunciton(dtLaender)
|
|
|
|
cProgramFunctions.genExcelFromDT_NEW(dtLaender, {"DI1:D" & (dtLaender.Rows.Count + 1), "E1:E" & (dtLaender.Rows.Count + 1)},, "RECHNUNGSJOURNAL LÄNDER VOM " & rechnungsdatum.ToShortDateString,,, True)
|
|
|
|
Else
|
|
MsgBox("Keine Daten für Rechnungsjournal")
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
Private Sub createSumFunciton(dt As DataTable)
|
|
|
|
|
|
Dim SteuerpflichtigerBetrag As Double = 0
|
|
Dim SteuerfreierBetrag As Double = 0
|
|
Dim Anzahl As Integer = 0
|
|
For Each row In dt.Rows
|
|
If Not IsDBNull(row("SteuerpflichtigerGesamtbetrag")) AndAlso IsNumeric(row("SteuerpflichtigerGesamtbetrag")) Then SteuerpflichtigerBetrag += CDbl(row("SteuerpflichtigerGesamtbetrag"))
|
|
If Not IsDBNull(row("SteuerfreierGesamtbetrag")) AndAlso IsNumeric(row("SteuerfreierGesamtbetrag")) Then SteuerfreierBetrag += CDbl(row("SteuerfreierGesamtbetrag"))
|
|
If dt.Columns.Contains("Anzahl") AndAlso Not IsDBNull(row("Anzahl")) AndAlso IsNumeric(row("Anzahl")) Then Anzahl += CInt(row("Anzahl"))
|
|
Next
|
|
|
|
|
|
Dim drLast = dt.NewRow
|
|
If dt.Columns.Contains("Anzahl") Then drLast.Item("Anzahl") = Anzahl
|
|
If dt.Columns.Contains("Währungscode") Then drLast.Item("Währungscode") = DBNull.Value
|
|
If dt.Columns.Contains("RechnungsLandKz") Then drLast.Item("RechnungsLandKz") = DBNull.Value
|
|
If dt.Columns.Contains("RechnungsNr") Then drLast.Item("RechnungsNr") = DBNull.Value
|
|
If dt.Columns.Contains("RechnungsDatum") Then drLast.Item("RechnungsDatum") = DBNull.Value
|
|
If dt.Columns.Contains("KundenNrZentrale") Then drLast.Item("KundenNrZentrale") = DBNull.Value
|
|
If dt.Columns.Contains("RechnungsKundenNr") Then drLast.Item("RechnungsKundenNr") = DBNull.Value
|
|
If dt.Columns.Contains("RechnungsName 1") Then drLast.Item("RechnungsName 1") = DBNull.Value
|
|
If dt.Columns.Contains("Abfertigungsdatum") Then drLast.Item("Abfertigungsdatum") = DBNull.Value
|
|
If dt.Columns.Contains("Steuersatz %") Then drLast.Item("Steuersatz %") = DBNull.Value
|
|
If dt.Columns.Contains("Status") Then drLast.Item("Status") = DBNull.Value
|
|
If dt.Columns.Contains("DruckDatumZeit") Then drLast.Item("DruckDatumZeit") = DBNull.Value
|
|
If dt.Columns.Contains("Sachbearbeiter") Then drLast.Item("Sachbearbeiter") = DBNull.Value
|
|
If dt.Columns.Contains("SteuerpflichtigerGesamtbetrag") Then drLast.Item("SteuerpflichtigerGesamtbetrag") = SteuerpflichtigerBetrag
|
|
If dt.Columns.Contains("SteuerfreierGesamtbetrag") Then drLast.Item("SteuerfreierGesamtbetrag") = SteuerfreierBetrag
|
|
|
|
dt.Rows.InsertAt(drLast, dt.Rows.Count)
|
|
|
|
|
|
End Sub
|
|
|
|
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles btnLieferantenrechnungen.Click
|
|
|
|
Dim frm As New frmMDMLieferantenrechnungen
|
|
frm.Show(Me)
|
|
|
|
End Sub
|
|
|
|
|
|
Shared Function CheckValue(myTable As DataTable, checkFunc As Func(Of DataRow, Boolean)) As Boolean
|
|
For Each row As DataRow In myTable.Rows
|
|
If checkFunc(row) Then Return True
|
|
Next
|
|
Return False
|
|
End Function
|
|
|
|
Private Sub btnWikiStatusmails_Click(sender As Object, e As EventArgs) Handles btnWikiStatusmails.Click
|
|
Dim webAddress As String = "https://wiki.verag.ag/software/sdl/sammelrechnung"
|
|
Process.Start(webAddress)
|
|
End Sub
|
|
|
|
|
|
End Class
|