750 lines
32 KiB
VB.net
750 lines
32 KiB
VB.net
Imports System.IO
|
|
Imports System.Windows.Forms
|
|
Imports Parkzeit.cMeineFunktionen
|
|
Imports System.Data.SqlClient
|
|
Imports System.ComponentModel
|
|
Imports System.Text
|
|
Imports VERAG_PROG_ALLGEMEIN
|
|
|
|
Public Class frmMain
|
|
Public Shared ConnStr As String
|
|
Public Shared ConnStrInfo As String
|
|
Public Shared Aktive_ID As Integer
|
|
Public Shared Optionen As New cOptionen
|
|
Public Shared Ausgewählte_Zeile As Integer = 0
|
|
Private Parkzeiten As New cParkzeitenDAL
|
|
Private locZeilen As Integer = -1
|
|
Private Anzahl As Integer
|
|
Private Grid_aktiv As Boolean = False
|
|
Private Suche_freigegeben As Boolean = False
|
|
|
|
Dim LEISTUNGSNR_PARKEN As Integer = 313
|
|
Dim OFFERETNNR_PARKEN As Integer = 18
|
|
|
|
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
|
Private Sub frmMain_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
|
|
'InitializeComponent()
|
|
Icon = GetProgrammIcon()
|
|
|
|
|
|
cboTarif.fillWithSQL("SELECT distinct([TarifArt]) ,TarifArt FROM [Parkzeiten]", False, "PARKZEIT")
|
|
|
|
''aktuelle DB zuweisen
|
|
'Dim pfadDatei As String = "C:\Projekte.NET\Verag\Parkzeit\Parkzeit.accdb"
|
|
' If Not File.Exists(pfadDatei) Then
|
|
'MsgBox("nicht gefunden: " & pfadDatei)
|
|
'Sonderfall zum Debuggen
|
|
'pfadDatei = Application.StartupPath & "\Parkzeit.accdb"
|
|
' End If
|
|
|
|
' If Not File.Exists(pfadDatei) Then
|
|
'MsgBox("Auf die Datenbank '" & pfadDatei & "' konnte nicht zugegriffen werden!" & vbCrLf & vbCrLf & _
|
|
' "Bitte verständigen Sie den zuständigen Administrator.", vbExclamation, "Fehler Datenbank")
|
|
' Environment.Exit(0)
|
|
'Me.Close()
|
|
' End If
|
|
'ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & pfadDatei
|
|
'ConnStr = "Provider=SQLOLEDB;Server=DEVELOPER\DEVSQL;Database=Parkzeit;uid=sa;Password=BmWr501956;"
|
|
'Dim tmp As String
|
|
'tmp = "Provider=SQLOLEDB;Server=DEVELOPER\DEVSQL;Database=Parkzeit;"
|
|
|
|
' ConnStrInfo = tmp & "uid=**;password=*********"
|
|
' ConnStr = tmp & "uid=sa;password=BmWr501956"
|
|
'Server=DEVELOPER\DEVSQL;database=Parkzeit;User ID=sa;Pwd=BmWr501956
|
|
'jetzt noch Optionen laden
|
|
Dim OptionenDAL As New cOptionenDAL
|
|
Optionen = OptionenDAL.LesenOptionen()
|
|
If IsNothing(Optionen) Then
|
|
MsgBox("Fehler beim Laden der Optionen. Standardwerte werden eventuell nicht richtig vorgegeben.", vbCritical)
|
|
Me.Close()
|
|
End If
|
|
|
|
'Position+Größe wird in ApplicationSettings vom Formular gespeichert
|
|
Try
|
|
' Me.Size = My.Settings.frmMainSize
|
|
' Me.Location = My.Settings.frmMainPosition
|
|
Catch ex As Exception
|
|
'nix tun - Standardgröße wird somit automatisch gesetzt
|
|
End Try
|
|
|
|
'Vorschlagswerte vergeben
|
|
dtpVon.Value = DateSerial(Now.Date.AddMonths(-1).Year, Now.Date.AddMonths(-1).Month, 1)
|
|
dtpBis.Value = Now.Date.AddDays(1)
|
|
'txtKosten.Text = Format(Optionen.Kosten_je_Stunde, "#0.00")
|
|
dtpVon.Refresh()
|
|
dtpBis.Refresh()
|
|
'txtKosten.Refresh()
|
|
|
|
Grid_aktiv = True
|
|
Tabelle_anzeigen()
|
|
|
|
|
|
' Spalten_festlegen() 'AL: Hat Fehler beim Start ausgelöst, wenn keine Daten vorhanden.
|
|
|
|
|
|
Suche_freigegeben = True
|
|
|
|
End Sub
|
|
|
|
Private Sub frmMain_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
|
|
My.Settings.frmMainSize = Me.Size
|
|
My.Settings.frmMainPosition = Me.Location
|
|
My.Settings.Save()
|
|
' Application.Exit()
|
|
End Sub
|
|
|
|
Public Sub Tabelle_anzeigen()
|
|
Dim msStart As Long = CLng((DateTime.Now - New DateTime(1970, 1, 1)).TotalMilliseconds)
|
|
'Paint wieder reaktivieren
|
|
locZeilen = -1
|
|
If Not Grid_aktiv Then Exit Sub
|
|
|
|
|
|
'je nach Auswahl SQL anpassen
|
|
Dim hSQL As String = "SELECT * FROM Parkzeiten WHERE Von >= " & SQLDatum(dtpVon.Value) &
|
|
" AND Von <= " & SQLDatum(dtpBis.Value.AddDays(1))
|
|
|
|
If txtSuche.Text <> "" Then
|
|
hSQL += " AND Kennzeichen LIKE '%" & txtSuche.Text & "%'"
|
|
End If
|
|
|
|
If txtKdNr.Visible AndAlso txtKdNr.Text <> "" Then
|
|
hSQL += " AND KundenNr LIKE '%" & txtKdNr.Text & "%'"
|
|
End If
|
|
|
|
hSQL += " AND TarifArt='" & cboTarif._value & "'"
|
|
hSQL += " ORDER BY Laufende_Nr, Von"
|
|
|
|
gridParkzeiten.DataSource = Parkzeiten.AnzeigeTabelle(hSQL)
|
|
|
|
'Tabelle Kommt/Geht bereinigen
|
|
If gridParkzeiten.RowCount = 0 Then
|
|
gridParkzeiten.DataSource = Nothing
|
|
Else
|
|
Spalten_festlegen()
|
|
'AL: Sortierung nach Ausfahrt (Zeit)
|
|
gridParkzeiten.Sort(gridParkzeiten.Columns(3), ListSortDirection.Descending)
|
|
End If
|
|
|
|
'Anzeige der Anzahl gewählter/aller Datensätze
|
|
lblAnzahl.Text = Format(gridParkzeiten.RowCount, "#,##0") & " ausgewählt"
|
|
lblAnzahl.Refresh()
|
|
|
|
Dim msEnd As Long = CLng((DateTime.Now - New DateTime(1970, 1, 1)).TotalMilliseconds)
|
|
Label1.Text = "" & (msEnd - msStart) & " ms"
|
|
|
|
End Sub
|
|
|
|
Private Sub Spalten_festlegen()
|
|
With gridParkzeiten
|
|
.Columns(0).Visible = False 'ID nicht anzeigen
|
|
|
|
.Columns(1).Width = 50
|
|
.Columns(1).HeaderText = "lfd.Nr"
|
|
.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
|
|
|
|
.Columns(2).Width = 120
|
|
.Columns(2).HeaderText = "Einfahrt"
|
|
.Columns(2).DefaultCellStyle.Format = "dd.MM.yyyy HH:mm"
|
|
|
|
.Columns(3).Width = 120
|
|
.Columns(3).HeaderText = "Ausfahrt"
|
|
.Columns(3).DefaultCellStyle.Format = "dd.MM.yyyy HH:mm"
|
|
|
|
.Columns(4).Width = 80
|
|
.Columns(4).HeaderText = "Dauer Std"
|
|
.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
|
|
|
|
.Columns(5).Visible = False 'Dauer in Minuten wird nicht angezeigt
|
|
|
|
.Columns(6).Width = 300
|
|
.Columns(6).HeaderText = "LKW-Kennzeichen"
|
|
End With
|
|
|
|
End Sub
|
|
|
|
Private Sub btnInfo_Click(sender As System.Object, e As System.EventArgs) Handles btnInfo.Click
|
|
Dim f As New frmInfo
|
|
f.ShowDialog(Me)
|
|
End Sub
|
|
|
|
Private Sub btnErfassen_Click(sender As System.Object, e As System.EventArgs) Handles btnErfassen.Click
|
|
Dim f As New frmEintragParkzeit
|
|
Aktive_ID = 0 'neue Einträge
|
|
f.ShowDialog(Me)
|
|
End Sub
|
|
|
|
Private Sub btnAuswerten_Click(sender As System.Object, e As System.EventArgs) Handles btnAuswerten.Click
|
|
Dim f As New frmAuswahl_Abrechnung
|
|
f.cboTarif.changeItem(cboTarif._value)
|
|
f.ShowDialog(Me)
|
|
End Sub
|
|
|
|
Private Sub dtpDatum_ValueChanged(sender As System.Object, e As System.EventArgs) Handles dtpVon.ValueChanged, dtpBis.ValueChanged
|
|
If Not Suche_freigegeben Then Exit Sub
|
|
|
|
Tabelle_anzeigen()
|
|
End Sub
|
|
|
|
Private Sub txtSuche_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtSuche.TextChanged, txtKdNr.TextChanged
|
|
If Not Suche_freigegeben Then Exit Sub
|
|
|
|
Tabelle_anzeigen()
|
|
End Sub
|
|
|
|
Private Sub gridParkzeiten_CellMouseClick(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles gridParkzeiten.CellMouseClick
|
|
'Bei Rechtsklick mit Maus die betroffene Zeile markieren
|
|
|
|
If e.RowIndex < 0 Then Exit Sub 'Es wurde außerhalb einer gültigen Datenzeile geklickt
|
|
|
|
If e.Button = Windows.Forms.MouseButtons.Right Then
|
|
gridParkzeiten.CurrentCell = gridParkzeiten.Rows(e.RowIndex).Cells(e.ColumnIndex)
|
|
ContextMenuStrip1.Show(Windows.Forms.Cursor.Position)
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Sub gridParkzeiten_DoubleClick(sender As Object, e As System.EventArgs) Handles gridParkzeiten.DoubleClick
|
|
Try
|
|
|
|
Aktive_ID = CInt(gridParkzeiten.Rows(gridParkzeiten.CurrentRow.Index).Cells("ParkzeitID").Value)
|
|
|
|
Ausgewählte_Zeile = gridParkzeiten.CurrentRow.Index
|
|
Dim f As New frmEintragParkzeit
|
|
f.ShowDialog(Me)
|
|
|
|
'falls Änderung, dann die neuen Werte in Grid anzeigen
|
|
If Ausgewählte_Zeile >= 0 Then
|
|
Dim hParkzeit As cParkzeit = Parkzeiten.LesenParkzeit(Aktive_ID, "")
|
|
If Not IsNothing(hParkzeit) Then
|
|
gridParkzeiten.Rows(Ausgewählte_Zeile).Cells(1).Value = hParkzeit.Laufende_Nr
|
|
gridParkzeiten.Rows(Ausgewählte_Zeile).Cells(2).Value = hParkzeit.Von
|
|
gridParkzeiten.Rows(Ausgewählte_Zeile).Cells(3).Value = hParkzeit.Bis
|
|
gridParkzeiten.Rows(Ausgewählte_Zeile).Cells(4).Value = hParkzeit.Dauer
|
|
gridParkzeiten.Rows(Ausgewählte_Zeile).Cells(5).Value = hParkzeit.Dauer_Minuten
|
|
gridParkzeiten.Rows(Ausgewählte_Zeile).Cells(6).Value = hParkzeit.Kennzeichen
|
|
End If
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End Sub
|
|
|
|
|
|
Private Sub mnuLöschen_Click(sender As System.Object, e As System.EventArgs) Handles mnuLöschen.Click
|
|
Aktive_ID = CInt(gridParkzeiten.Rows(gridParkzeiten.CurrentRow.Index).Cells("ParkzeitID").Value)
|
|
|
|
Dim antwort = MsgBox("Möchten Sie die ausgewählte Parkzeit wirklich löschen?", CType(vbQuestion + vbYesNo + vbDefaultButton2, MsgBoxStyle), "Bilanzeintrag löschen")
|
|
If antwort = vbNo Then Exit Sub
|
|
|
|
Parkzeiten.LöschenParkZeit(Aktive_ID)
|
|
|
|
Tabelle_anzeigen()
|
|
End Sub
|
|
|
|
|
|
Private Sub Button1_Click(sender As Object, e As EventArgs)
|
|
Dim conString As String
|
|
'conString = "Server=BEVPC\SQLExpress;database=MSDNSolve;Integrated Security=true"
|
|
conString = "Server=DEVELOPER\DEVSQL;database=Parkzeit;User ID=sa;Pwd=BmWr501956;" 'Application Name=MyApp
|
|
Dim con As SqlConnection = Nothing
|
|
Try
|
|
con = New SqlConnection(conString)
|
|
con.Open()
|
|
MessageBox.Show("Offen")
|
|
|
|
Catch ex As Exception
|
|
MessageBox.Show(ex.Message)
|
|
Finally
|
|
If con.State <> ConnectionState.Closed Then con.Close()
|
|
End Try
|
|
con.Dispose()
|
|
|
|
' myConnection.ConnectionString = "Server=DEVELOPER\DEVSQL;Database=Parkzeit;Uid=sa;Pwd=BmWr501956;"
|
|
|
|
End Sub
|
|
|
|
Private Sub cboTarif_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboTarif.SelectedIndexChanged
|
|
If Not Suche_freigegeben Then Exit Sub
|
|
|
|
Tabelle_anzeigen()
|
|
|
|
Select Case cboTarif._value
|
|
Case "WABERERS"
|
|
picLogo.Image = My.Resources.Logo_Waberer
|
|
Label5.Visible = False
|
|
txtKdNr.Visible = False
|
|
Case Else
|
|
picLogo.Image = My.Resources.Verag_AG_Logo
|
|
Label5.Visible = True
|
|
txtKdNr.Visible = True
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub btnDatenEinlesen_Click(sender As Object, e As EventArgs) Handles btnDatenEinlesen.Click
|
|
Dim f As New frmParkzeitImport
|
|
f.ShowDialog(Me)
|
|
Tabelle_anzeigen()
|
|
End Sub
|
|
|
|
Private Sub frmMain_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
|
cboTarif.changeItem("WABERERS")
|
|
End Sub
|
|
|
|
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
|
|
doRechnungslauf(True)
|
|
End Sub
|
|
Sub doRechnungslauf(Optional fakturieren As Boolean = False)
|
|
|
|
Try
|
|
ProgressBar1.Visible = True
|
|
Me.Cursor = Cursors.WaitCursor
|
|
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
|
|
|
|
Dim rootFolder = ""
|
|
If Not fakturieren Then
|
|
'"Bitte geben
|
|
Dim fd As New FolderBrowserDialog
|
|
If fd.ShowDialog(Me) = DialogResult.OK Then
|
|
rootFolder = fd.SelectedPath
|
|
End If
|
|
If rootFolder = "" Then Me.Cursor = Cursors.Default : Exit Sub
|
|
End If
|
|
|
|
If cboTarif._value = "WABERERS" Then
|
|
'========================================
|
|
'Alle Waberers-Einträge mit der Waberers KdNr ergänzen
|
|
SQL.doSQL("UPDATE [Parkzeit].[dbo].[Parkzeiten] set KundenNr='717981' WHERE TarifArt='WABERERS' AND KundenNr is null", "PARKZEIT")
|
|
'========================================
|
|
End If
|
|
|
|
'Kunden durchlaufen:
|
|
Dim hSQLKd As String = "SELECT DISTINCT(KundenNr) FROM Parkzeiten WHERE Von >= " & SQLDatum(dtpVon.Value) & " AND Von <= " & SQLDatum(dtpBis.Value.AddDays(1)) & " AND TarifArt='" & cboTarif._value & "' "
|
|
If txtSuche.Text <> "" Then hSQLKd += " AND Kennzeichen LIKE '%" & txtSuche.Text & "%'"
|
|
If txtKdNr.Visible AndAlso txtKdNr.Text <> "" Then hSQLKd += " AND KundenNr LIKE '%" & txtKdNr.Text & "%'"
|
|
|
|
|
|
Dim dtKd = SQL.loadDgvBySql(hSQLKd, "PARKZEIT")
|
|
|
|
If dtKd Is Nothing OrElse dtKd.Rows.Count = 0 Then
|
|
MsgBox("Keine Daten!")
|
|
Me.Cursor = Cursors.Default : Exit Sub
|
|
End If
|
|
|
|
If fakturieren Then
|
|
If Not vbYes = MsgBox("Es werden " & dtKd.Rows.Count & " Kunden abgerechnet. Möchten Sie fortfahren?", vbYesNoCancel) Then
|
|
MsgBox("Keine Daten!")
|
|
Me.Cursor = Cursors.Default : Exit Sub
|
|
End If
|
|
End If
|
|
|
|
|
|
ProgressBar1.Minimum = 1
|
|
ProgressBar1.Maximum = dtKd.Rows.Count
|
|
ProgressBar1.Value = 1
|
|
|
|
For Each r As DataRow In dtKd.Rows
|
|
Dim KdNr = r("KundenNr")
|
|
'Zusammenbau der SQL-Abfrage
|
|
Dim hSQL As String = "SELECT * FROM Parkzeiten WHERE Von >= " & SQLDatum(dtpVon.Value) & " AND Von <= " & SQLDatum(dtpBis.Value.AddDays(1))
|
|
|
|
Dim hauswahl As String = "Auswahl: "
|
|
|
|
|
|
If cboTarif._value = "WABERERS" Then
|
|
hauswahl &= "alle"
|
|
Else
|
|
hauswahl = "Kunde: " & KdNr.ToString & " " & SQL.getValueTxtBySql("SELECT TOP 100 [Name 1] + isnull([Name 2],'')+ ', ' + isnull(ort,'') FROM [Adressen] where adressennr='" & KdNr.ToString & "' ", "FMZOLL",,, "0")
|
|
End If
|
|
|
|
hSQL += " AND TarifArt='" & cboTarif._value & "' "
|
|
If KdNr.ToString <> "" Then hSQL += " AND KundenNr='" & KdNr.ToString & "' "
|
|
hSQL += " AND TarifArt='" & cboTarif._value & "' "
|
|
|
|
If txtSuche.Text <> "" Then
|
|
hSQL += " AND Kennzeichen LIKE '%" & txtSuche.Text & "%'"
|
|
End If
|
|
|
|
If txtKdNr.Visible AndAlso txtKdNr.Text <> "" Then
|
|
hSQL += " AND KundenNr LIKE '%" & txtKdNr.Text & "%'"
|
|
End If
|
|
|
|
hSQL += " ORDER BY Laufende_Nr"
|
|
|
|
Dim Auswertung As New frmDruckansicht
|
|
Dim Parkzeiten = New cParkzeitenDAL
|
|
|
|
Dim Kosten As Double = 0.4 '!!!!!!!Standard!!!!!!!
|
|
If KdNr.ToString = "717981" Then Kosten = 0.3 'Waberers
|
|
If KdNr.ToString = "402608" Then Kosten = 0.3 'Nexways
|
|
If KdNr.ToString = "402507" Then Kosten = 0.5 'TP Omerbasic
|
|
|
|
Dim KostenTmp = SQL.getValueTxtBySql("SELECT TOP 1 Preis FROM [Offertenpositionen] where KundenNr='" & KdNr.ToString & "' and OffertenNr='" & OFFERETNNR_PARKEN.ToString & "' and LeistungsNr='" & LEISTUNGSNR_PARKEN.ToString & "' and Preis is not null", "FMZOLL",,, -1)
|
|
If CDbl(KostenTmp) >= 0 Then
|
|
Kosten = CDbl(KostenTmp)
|
|
End If
|
|
hauswahl &= vbNewLine & "Tarif: " & Kosten.ToString("C2") & " / Stunde "
|
|
|
|
Dim hKosten As Double = 0
|
|
Dim hSummeZeit = 0
|
|
Dim hAnzahl = 0
|
|
Using conn As SqlConnection = cDatenbank.GetNewOpenConnection()
|
|
Using cmd As New SqlCommand(hSQL, conn)
|
|
Dim dr = cmd.ExecuteReader() 'AL: ERR
|
|
If Not IsNothing(dr) Then
|
|
While dr.Read()
|
|
hSummeZeit += VarToInt(dr.Item("Dauer_Minuten"))
|
|
hAnzahl += 1
|
|
End While
|
|
End If
|
|
End Using
|
|
End Using
|
|
|
|
Dim studnen2St As Double = CDbl(CDbl(hSummeZeit / 60).ToString("N2"))
|
|
hKosten = studnen2St * VarToDbl(Kosten)
|
|
Dim hGesamtdauer As String = Minuten_auf_Text(hSummeZeit)
|
|
Dim hGesamtkosten As String = Format(hKosten, "€ #,##0.00")
|
|
|
|
Select Case cboTarif._value
|
|
Case "WABERERS"
|
|
Auswertung.BefüllenAbrechnung("Auswertung Parkzeiten Waberer's LKWs", Parkzeiten.LeseParkzeitenFürDruck(hSQL, VarToDbl(Kosten)), cboTarif._value, hauswahl, hGesamtdauer, hGesamtkosten)
|
|
Case "VERAG"
|
|
Auswertung.BefüllenAbrechnung("Auswertung Parkzeiten LKWs", Parkzeiten.LeseParkzeitenFürDruck(hSQL, VarToDbl(Kosten)), cboTarif._value, hauswahl, hGesamtdauer, hGesamtkosten)
|
|
|
|
End Select
|
|
|
|
If Not fakturieren Then
|
|
'========================================
|
|
'nur PDFs in selektierten Ordner
|
|
'========================================
|
|
|
|
Dim fileName = KdNr.ToString & "_Parking_" & dtpVon.Value.ToShortDateString & "-" & dtpBis.Value.ToShortDateString
|
|
Dim filePath = rootFolder & "\" & fileName & ".pdf"
|
|
Auswertung.genPDF(filePath)
|
|
|
|
Else
|
|
'========================================
|
|
'SpedBucheintrag
|
|
'========================================
|
|
Dim SPEDBUCH As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch
|
|
genPARK_SPEDBUCH_ByKdNr(KdNr.ToString, dtpVon.Value, dtpBis.Value, SPEDBUCH)
|
|
|
|
'========================================
|
|
'Rechnungserstellung
|
|
'========================================
|
|
Dim RECHNUNG As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang
|
|
If genPARK_RECHNUNG_BySPEDBUCH(KdNr.ToString, SPEDBUCH, dtpVon.Value, dtpBis.Value, Kosten, studnen2St, RECHNUNG) Then
|
|
'========================================
|
|
'Rechnungsanhang
|
|
'========================================
|
|
Dim fileName = "Parking_" & dtpVon.Value.ToShortDateString & "-" & dtpBis.Value.ToShortDateString & ".pdf"
|
|
Dim filePath = DATENVERVER_OPTIONS.getTMPPath(fileName, ".pdf", False, False)
|
|
|
|
If Auswertung.genPDF(filePath) Then
|
|
If IO.File.Exists(filePath) Then
|
|
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "PARPLATZ_ABRECHNUNG", "", "", fileName, KdNr.ToString, False) 'Now.ToString("ddMMyy_HHmmss.ffff")
|
|
If Not DS.uploadDataToDATENSERVER(filePath) Then MsgBox("Fehler beim Speichern: Datenserver! KDNR:" & KdNr.ToString)
|
|
If CInt(DS.da_id) <= 0 Then MsgBox("Keine DocId!")
|
|
Dim da_id = DS.da_id
|
|
Dim destPath = DS.GET_TOP1_PATH
|
|
|
|
'If AvisoId > 0 And SendungsId > 0 Then
|
|
' Dim fi As New FileInfo(PdfTmp)
|
|
' Dim ANH As New VERAG_PROG_ALLGEMEIN.cAvisoAnhaenge(AvisoId, fileName, DS.da_id, "EORI", "PDF", SendungsId, , fi.Length)
|
|
' If Not ANH.SAVE Then MsgBox("Fehler beim Anhang speichern!") : Return False
|
|
' Dim anhId = ANH.anh_id
|
|
'End If
|
|
'Return destPath
|
|
If RECHNUNG IsNot Nothing Then
|
|
RECHNUNG.ANHAENGE.Clear()
|
|
Dim ANH As New VERAG_PROG_ALLGEMEIN.cRechnungsausgangAnhaenge
|
|
ANH.dsId = CInt(DS.da_id)
|
|
ANH.Bezeichnung = fileName
|
|
RECHNUNG.ANHAENGE.Add(ANH)
|
|
RECHNUNG.SAVE_ANHAENGE(RECHNUNG.RK_ID)
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
|
|
'========================================
|
|
'========================================
|
|
|
|
End If
|
|
|
|
ProgressBar1.PerformStep()
|
|
Me.Refresh()
|
|
Next
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
ProgressBar1.Visible = False
|
|
End Try
|
|
Me.Cursor = Cursors.Default
|
|
End Sub
|
|
|
|
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
|
doRechnungslauf(False)
|
|
End Sub
|
|
|
|
|
|
Function genPARK_SPEDBUCH_ByKdNr(KdNr As String, von As Date, bis As Date, ByRef SPEDBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch) As Boolean
|
|
Try
|
|
|
|
Dim Abfertigungsdatum = bis
|
|
|
|
Dim AD As New VERAG_PROG_ALLGEMEIN.cAdressen(KdNr)
|
|
SPEDBUCH = New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch
|
|
Select Case cboTarif._value
|
|
Case "WABERERS"
|
|
AD = New VERAG_PROG_ALLGEMEIN.cAdressen(402608)
|
|
End Select
|
|
Dim OffertenNr = OFFERETNNR_PARKEN
|
|
Dim Abfertigungsart = 10
|
|
|
|
SPEDBUCH.FilialenNr = 4819
|
|
SPEDBUCH.AbfertigungsNr = VERAG_PROG_ALLGEMEIN.cAllgemein.getMaxPosNrIncrement(SPEDBUCH.FilialenNr, Now.Year)
|
|
SPEDBUCH.NewUNTER_NR()
|
|
|
|
SPEDBUCH.Vermittler = AD.Ordnungsbegriff.ToString
|
|
SPEDBUCH.VermittlerKundenNr = KdNr
|
|
SPEDBUCH.VermittlerOffertenNr = OffertenNr
|
|
SPEDBUCH.Abfertigungsdatum = Abfertigungsdatum.ToShortDateString
|
|
|
|
SPEDBUCH.Abfertigungsart = Abfertigungsart
|
|
SPEDBUCH.Bar = False
|
|
SPEDBUCH.Fakturiert = True
|
|
SPEDBUCH.AnzahlSonstiges = 1
|
|
SPEDBUCH.Abfertigungsanzahl = 1
|
|
|
|
SPEDBUCH.Währungsschlüssel = 900
|
|
SPEDBUCH.Packstücke = "Parkplatzgebühr " & von.ToShortDateString & " - " & bis.ToShortDateString
|
|
SPEDBUCH.AvisUhrzeit = Nothing
|
|
SPEDBUCH.Umrechnungskurs = Nothing
|
|
SPEDBUCH.veoerz_basbtg = Nothing
|
|
SPEDBUCH.Sicherheitsbetrag = Nothing
|
|
|
|
SPEDBUCH.Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
|
|
|
|
|
|
Return SPEDBUCH.SAVE
|
|
|
|
Catch ex As System.Exception
|
|
MsgBox(ex.Message & ex.StackTrace)
|
|
End Try
|
|
Return False
|
|
|
|
End Function
|
|
|
|
Function genPARK_RECHNUNG_BySPEDBUCH(KdNr As String, SPEDBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch, von As Date, bis As Date, KostenStd As Double, Std As Double, ByRef RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang) As Boolean
|
|
Try
|
|
Dim AD As New VERAG_PROG_ALLGEMEIN.cAdressen(SPEDBUCH.VermittlerKundenNr)
|
|
Dim KD As New VERAG_PROG_ALLGEMEIN.cKunde(SPEDBUCH.VermittlerKundenNr)
|
|
Dim RG As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang
|
|
|
|
Select Case cboTarif._value
|
|
Case "WABERERS"
|
|
AD = New VERAG_PROG_ALLGEMEIN.cAdressen(402608)
|
|
KD = New VERAG_PROG_ALLGEMEIN.cKunde(402608)
|
|
End Select
|
|
Dim OffertenNr = OFFERETNNR_PARKEN
|
|
Dim Abfertigungsart = 10
|
|
|
|
RG.FilialenNr = SPEDBUCH.FilialenNr
|
|
RG.AbfertigungsNr = SPEDBUCH.AbfertigungsNr
|
|
RG.SpeditionsbuchUnterNr = SPEDBUCH.UnterNr
|
|
RG.UnterNr = RG.getMaxRGUnterNr()
|
|
|
|
RG.Buchungsjahr = getGJ(CDate(SPEDBUCH.Abfertigungsdatum)) 'If(Now.Month = 1, Now.Year - 1, Now.Year)
|
|
RG.FilialenNr = SPEDBUCH.FilialenNr
|
|
RG.Abfertigungsdatum = CDate(SPEDBUCH.Abfertigungsdatum)
|
|
RG.Sammelrechnung = 0 'EINZELRG!'
|
|
RG.BelegartenKz = "AR"
|
|
RG.BelegartenNr = 70
|
|
RG.BelegartenBez = "Rechnung"
|
|
RG.Vorzeichen = "+"
|
|
RG.Packstücke_und_Warenbezeichnung = SPEDBUCH.Packstücke
|
|
|
|
RG.VermittlerKundenNr = AD.AdressenNr
|
|
RG.VermittlerLandKz = AD.LandKz
|
|
RG.VermittlerName_1 = AD.Name_1
|
|
RG.VermittlerName_2 = AD.Name_2
|
|
RG.VermittlerOffertenNr = OffertenNr
|
|
RG.VermittlerOrt = (If(AD.LandKz.ToString, "") & " " & If(AD.PLZ.ToString, "") & " " & If(AD.Ort.ToString, ""))
|
|
RG.VermittlerStraße = AD.Straße
|
|
RG.Rechnung_an = 3
|
|
RG.OffertenNr = OffertenNr
|
|
|
|
RG.KundenNrZentrale = KD.KundenNrZentrale
|
|
RG.RechnungsKundenNr = CInt(AD.AdressenNr)
|
|
RG.RechnungsLandKz = AD.LandKz
|
|
RG.RechnungsName_1 = AD.Name_1
|
|
RG.RechnungsName_2 = AD.Name_2
|
|
RG.RechnungsOrt = (If(AD.LandKz.ToString, "") & " " & If(AD.PLZ.ToString, "") & " " & If(AD.Ort.ToString, ""))
|
|
RG.RechnungsStraße = AD.Straße
|
|
|
|
RG.RechnungsUstIdKz = AD.UstIdKz
|
|
RG.RechnungsUstIdNr = AD.UstIdNr
|
|
RG.RechnungsUstIdGeprüft = AD.UstIdGeprüft
|
|
|
|
RG.Lastschrift = KD.Lastschrift
|
|
RG.Kunden_SVS = KD.SVS
|
|
RG.Steuerschlüssel = CInt(KD.Steuerschlüssel)
|
|
RG.ForceSteuerschlüssel = 19 ' Überschrieben --> IMMER 19% verwenden!!
|
|
RG.Vorkasse = KD.Vorkasse
|
|
RG.Vorlageprovision_Proz = KD.Vorlageprovision
|
|
RG.Kreditaufwendungen_Proz = KD.Kreditaufwendungen
|
|
RG.RechnungSprache = "DE"
|
|
|
|
|
|
RG.Anlage_1 = "Aufstellung Parkgebühren"
|
|
RG.Anlage_2 = ""
|
|
RG.Anlage_3 = ""
|
|
RG.Anlage_4 = ""
|
|
RG.Anlage_5 = ""
|
|
RG.Anlage_6 = ""
|
|
|
|
|
|
RG.Text = ""
|
|
RG.EMailRechnungstext = Nothing ' ""
|
|
|
|
RG.Firma_ID = 4
|
|
RG.Nettozahlungsziel = KD.Zahlungsziel
|
|
|
|
RG.SteuerpflichtigerGesamtbetrag = 0
|
|
RG.SteuerfreierGesamtbetrag = 0
|
|
RG.Status = 0
|
|
|
|
RG.[Vorkosten] = 0
|
|
RG.[Erlös] = 0
|
|
RG.[Buchungsjahr] = 0
|
|
RG.[Währungscode] = "EUR"
|
|
RG.ReErfZeitstempel = Now
|
|
|
|
|
|
RG.Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
|
|
|
|
RG.Buchungsjahr = getGJ(CDate(SPEDBUCH.Abfertigungsdatum))
|
|
|
|
Dim dtSt As DataTable = SQL.loadDgvBySql("SELECT TOP 1 isnull([Steuersatz %],0),isnull([Steuerbezeichnung],'') FROM [Steuertabelle] WHERE [Steuerschlüssel]='" & RG.Steuerschlüssel & "'", "FMZOLL")
|
|
If dtSt IsNot Nothing AndAlso dtSt.Rows.Count > 0 Then
|
|
RG.Steuersatz_Proz = CDbl(dtSt.Rows(0)(0))
|
|
End If
|
|
|
|
'==================================================
|
|
'====================POSITIONEN====================
|
|
'==================================================
|
|
|
|
|
|
'==================================================
|
|
'== Standard laden:
|
|
Dim dtBestPOS = SQL.loadDgvBySql("SELECT * FROM [Offertenpositionen] where OffertenNr='" & OffertenNr & "' and KundenNr='" & KdNr & "' and Anzahl>0 and preis>0 ", "FMZOLL")
|
|
If dtBestPOS IsNot Nothing Then
|
|
|
|
For Each r As DataRow In dtBestPOS.Rows
|
|
Dim POS_TMP As New VERAG_PROG_ALLGEMEIN.cRechnungsausgangPositionen
|
|
POS_TMP.LeistungsNr = CInt(r("LeistungsNr"))
|
|
POS_TMP.LeistungsBez = If(r("LeistungsBez").ToString, "")
|
|
POS_TMP.BerechnungsartNr = CInt(r("BerechnungsartNr"))
|
|
POS_TMP.Preis = If(r("Preis") Is DBNull.Value, 0, CDbl(r("Preis").ToString.Replace(".", "")))
|
|
POS_TMP.Anzahl = If(r("Anzahl") Is DBNull.Value, 0, r("Anzahl"))
|
|
POS_TMP.BGebLeistungsNr = r("BGebLeistungsNr")
|
|
POS_TMP.BGebProzent = r("BGebProzent")
|
|
POS_TMP.BGebMinBetrag = r("BGebMinBetrag")
|
|
POS_TMP.Steuerpflichtig = True 'CBool(LEISTUNG.Steuerpflichtig)
|
|
Dim NettobetragTMP As Double = CDbl(POS_TMP.Preis) * CDbl(POS_TMP.Anzahl)
|
|
Dim BruttoBetragTMP As Double = CDbl((NettobetragTMP + (NettobetragTMP * RG.Steuersatz_Proz / 100)).ToString("N2"))
|
|
POS_TMP.BGebBgl = NettobetragTMP
|
|
If POS_TMP.Steuerpflichtig Then
|
|
POS_TMP.SteuerpflichtigerBetrag = CDec(NettobetragTMP)
|
|
Else
|
|
POS_TMP.SteuerfreierBetrag = CDec(BruttoBetragTMP)
|
|
End If
|
|
|
|
RG.POSITIONEN.Add(POS_TMP)
|
|
Next
|
|
End If
|
|
'==================================================
|
|
|
|
|
|
Dim POS As New VERAG_PROG_ALLGEMEIN.cRechnungsausgangPositionen()
|
|
Dim LEISTUNG As New VERAG_PROG_ALLGEMEIN.cLeistungen(LEISTUNGSNR_PARKEN)
|
|
'Dim POS = RECHNUNG.POSITIONEN.Find(Function(x) x.LeistungsNr = 313)
|
|
'If POS Is Nothing Then
|
|
' POS = New VERAG_PROG_ALLGEMEIN.cRechnungsausgangPositionen()
|
|
' RG.POSITIONEN.Add(POS)
|
|
'End If
|
|
|
|
POS.LeistungsNr = LEISTUNGSNR_PARKEN
|
|
POS.LeistungsBez = "Parkplatz " & Std & " Std x " & KostenStd.ToString("C2")
|
|
|
|
Dim Nettobetrag As Double = CDbl((KostenStd * Std).ToString("N2"))
|
|
Dim BruttoBetrag As Double = CDbl((Nettobetrag + (Nettobetrag * RG.Steuersatz_Proz / 100)).ToString("N2"))
|
|
|
|
POS.BerechnungsartNr = CInt(LEISTUNG.BerechnungsartNr)
|
|
'POS.Preis = BruttoBetrag
|
|
POS.Anzahl = 1
|
|
POS.Steuerpflichtig = True 'CBool(LEISTUNG.Steuerpflichtig)
|
|
POS.BGebBgl = Nettobetrag
|
|
|
|
|
|
If POS.Steuerpflichtig Then
|
|
POS.SteuerpflichtigerBetrag = CDec(Nettobetrag)
|
|
|
|
POS.Preis = Nettobetrag
|
|
Else
|
|
POS.SteuerfreierBetrag = CDec(BruttoBetrag)
|
|
POS.Preis = CDec(BruttoBetrag)
|
|
End If
|
|
|
|
POS.BGebLeistungsNr = LEISTUNGSNR_PARKEN
|
|
POS.BGebProzent = Nothing
|
|
POS.BGebMinBetrag = Nothing
|
|
|
|
|
|
'==================================================
|
|
RG.SteuerpflichtigerGesamtbetrag = POS.SteuerpflichtigerBetrag
|
|
RG.SteuerfreierGesamtbetrag = POS.SteuerfreierBetrag
|
|
|
|
RG.POSITIONEN.Add(POS)
|
|
' cFakturierung.setGesamtBetraege(RG) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
' RG.Text = (cFakturierung.przRechnungstextTXT(RG, SPEDBUCH) & vbNewLine & cFakturierung.przRechnungstextZZ(RG)).Trim
|
|
|
|
'Call usrCntlFaktAbrechnung.przFixeTaxe(RG) ' Fixe Taxe errechnen
|
|
'Call usrCntlFaktAbrechnung.przPP(RG) ' Porto/Papiere errechnen
|
|
|
|
'Call usrCntlFaktAbrechnung.przBS415(RG) ' Bankspesen errechnen
|
|
|
|
If RG.SAVE Then
|
|
' FAKTURIERT eintragen
|
|
RECHNUNG = RG
|
|
Return True
|
|
Else
|
|
Return False
|
|
End If
|
|
|
|
Catch ex As System.Exception
|
|
MsgBox(ex.Message & ex.StackTrace)
|
|
End Try
|
|
Return False
|
|
|
|
End Function
|
|
|
|
|
|
Shared Function getGJ(BelegDat As Date, Optional FIRMA_ID As Integer = -1) As Integer
|
|
'If FIRMA = "" Then FIRMA = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
|
|
Select Case FIRMA_ID
|
|
Case -1, 1, 3, 11, 7, 19, 15 'Abweichendes WJ
|
|
Return If(BelegDat.Month = 1, BelegDat.Year - 1, BelegDat.Year)
|
|
Case Else
|
|
Return BelegDat.Year
|
|
End Select
|
|
End Function
|
|
|
|
Private Sub PictureBox6_Click(sender As Object, e As EventArgs) Handles PictureBox6.Click
|
|
Dim webAddress As String = "https://wiki.verag.ag/abteilungen/mdm/parkplatz/abrechnungDauerparker"
|
|
Process.Start(webAddress)
|
|
End Sub
|
|
End Class
|