From 37ec656b8fb4e2f74137bd25ce5b79f1ee82e43a Mon Sep 17 00:00:00 2001 From: Andreas Luxbauer Date: Thu, 8 Aug 2024 13:43:13 +0200 Subject: [PATCH] initial Sync --- Parkzeit/My Project/Resources.Designer.vb | 10 + Parkzeit/My Project/Resources.resx | 25 +- Parkzeit/Parkzeit.vbproj | 9 +- Parkzeit/Resources/fragezeichen.png | Bin 0 -> 32173 bytes Parkzeit/frmAuswahl_Abrechnung.vb | 9 +- Parkzeit/frmDruckansicht.vb | 50 +- Parkzeit/frmMain.Designer.vb | 178 ++- Parkzeit/frmMain.vb | 467 +++++++- Parkzeit/rptAbrechnungVERAG2.rdlc | 1241 +++++++++++++++++++++ 9 files changed, 1928 insertions(+), 61 deletions(-) create mode 100644 Parkzeit/Resources/fragezeichen.png create mode 100644 Parkzeit/rptAbrechnungVERAG2.rdlc diff --git a/Parkzeit/My Project/Resources.Designer.vb b/Parkzeit/My Project/Resources.Designer.vb index 14185b5..41a73d9 100644 --- a/Parkzeit/My Project/Resources.Designer.vb +++ b/Parkzeit/My Project/Resources.Designer.vb @@ -87,6 +87,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + ''' + Friend ReadOnly Property fragezeichen() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("fragezeichen", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + ''' ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. ''' diff --git a/Parkzeit/My Project/Resources.resx b/Parkzeit/My Project/Resources.resx index 1ae9244..89b7e5a 100644 --- a/Parkzeit/My Project/Resources.resx +++ b/Parkzeit/My Project/Resources.resx @@ -117,24 +117,18 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ..\Resources\Parkschild.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + Data Source=SQLGUIDE01.verag.ost.dmn;Initial Catalog=Parkzeit;Integrated Security=false;User ID=sa;Password=BmWr501956; + ..\Resources\Logo_Waberer.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Versionsinfo.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - ..\Resources\parkzeit.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - Data Source=DEVELOPER\DEVSQL;Initial Catalog=Parkzeit;Integrated Security=false;User ID=sa;Password=BmWr501956; - - - Data Source=SQLGUIDE01.verag.ost.dmn;Initial Catalog=Parkzeit;Integrated Security=false;User ID=sa;Password=BmWr501956; + + ..\Resources\Parkschild.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -142,4 +136,13 @@ ..\Resources\Verag-AG-Logo.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + Data Source=DEVELOPER\DEVSQL;Initial Catalog=Parkzeit;Integrated Security=false;User ID=sa;Password=BmWr501956; + + + ..\Resources\Versionsinfo.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\fragezeichen.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Parkzeit/Parkzeit.vbproj b/Parkzeit/Parkzeit.vbproj index 30c83b5..0b1fc4b 100644 --- a/Parkzeit/Parkzeit.vbproj +++ b/Parkzeit/Parkzeit.vbproj @@ -90,6 +90,9 @@ bin\x64\Release\ + + ..\..\..\dll\DevExpress\DevExpress.Printing.v23.1.Core.dll + False ..\..\SICHERUNG\VERAG Parkzeiten_19.03.2015_vonF\Microsoft.ReportViewer.Common.dll @@ -224,10 +227,11 @@ Designer Resources.Designer.vb - + Always - + + Always @@ -249,6 +253,7 @@ + diff --git a/Parkzeit/Resources/fragezeichen.png b/Parkzeit/Resources/fragezeichen.png new file mode 100644 index 0000000000000000000000000000000000000000..db109278c8528abc75c09b0b46ed10a8c3dd688c GIT binary patch literal 32173 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ℑg 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 literal 0 HcmV?d00001 diff --git a/Parkzeit/frmAuswahl_Abrechnung.vb b/Parkzeit/frmAuswahl_Abrechnung.vb index d3b5909..ab4c12f 100644 --- a/Parkzeit/frmAuswahl_Abrechnung.vb +++ b/Parkzeit/frmAuswahl_Abrechnung.vb @@ -96,7 +96,13 @@ Public Class frmAuswahl_Abrechnung hSQL += " AND (((Left(CAST(Kennzeichen AS varchar),1))>='0' And (Left(CAST(Kennzeichen AS varchar),1))<='9') AND ((right(left(CAST(Kennzeichen AS varchar),2),1))>='0' And (right(left(CAST(Kennzeichen AS varchar),2),1))<='9'))" hauswahl += "sonstige LKWs" Else - hauswahl += "alle" + If txtKundenNr.Text <> "" Then + hauswahl += "Kunde: " & txtKundenNr.Text + Else + + hauswahl += "alle" + End If + End If @@ -155,6 +161,7 @@ Public Class frmAuswahl_Abrechnung Auswertung.BefüllenAbrechnung("Auswertung Parkzeiten Waberer's LKWs", Parkzeiten.LeseParkzeitenFürDruck(hSQL, VarToDbl(txtKosten.Text)), cboTarif._value, hauswahl, hGesamtdauer, hGesamtkosten) Case "VERAG" Auswertung.BefüllenAbrechnung("Auswertung Parkzeiten LKWs", Parkzeiten.LeseParkzeitenFürDruck(hSQL, VarToDbl(txtKosten.Text)), cboTarif._value, hauswahl, hGesamtdauer, hGesamtkosten) + ' Auswertung.genPDF() End Select Auswertung.Show() diff --git a/Parkzeit/frmDruckansicht.vb b/Parkzeit/frmDruckansicht.vb index ca202c5..a9de825 100644 --- a/Parkzeit/frmDruckansicht.vb +++ b/Parkzeit/frmDruckansicht.vb @@ -1,12 +1,17 @@ Imports System.IO Imports Microsoft.Reporting.WinForms +Imports DevExpress.XtraPrinting +Imports Microsoft.SqlServer +Imports DevExpress.XtraReports.UI +Imports DevExpress.Utils +Imports DevExpress.XtraPrinting.Caching Public Class frmDruckansicht Public Sub BefüllenAbrechnung(ByVal titel As String, ByVal ds As IList(Of cParkzeitDruck), ByVal tarif As String, ByVal hAuswahl As String, ByVal hGesamtdauer As String, ByVal hGesamtkosten As String) ' Dim rdlcName As String = "Parkzeit.rptAbrechnung.rdlc" - Dim rdlcName = "Parkzeit.rptAbrechnungVERAG.rdlc" + Dim rdlcName = "Parkzeit.rptAbrechnungVERAG2.rdlc" 'Dim rdlcName As String = "Parkzeit.rptAbrechnung.rdlc" 'Select Case tarif @@ -28,11 +33,11 @@ Public Class frmDruckansicht Try Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Titel", titel)) - Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("SelektionText", hAuswahl)) - Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Firmenname", "VERAG Spedition AG")) - Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Gesamtdauer", hGesamtdauer)) - Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Gesamtkosten", hGesamtkosten)) - Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("KostenJeStunde", "0")) + Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("SelektionText", hAuswahl)) + Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Firmenname", "VERAG Spedition AG")) + Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Gesamtdauer", hGesamtdauer)) + Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Gesamtkosten", hGesamtkosten)) + Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("KostenJeStunde", "0")) 'Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("Anwender", SystemInformation.UserName.ToString)) 'Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("SelektionText", "Selektion: angeforderte, aber nicht erhaltene Bilanzen; Sortierung nach Sachbearbeiter, Kundennr")) 'Me.ReportViewer1.LocalReport.SetParameters(New ReportParameter("GruppierungNachBetreuer", boolToJaNein(True))) @@ -45,8 +50,29 @@ Public Class frmDruckansicht Me.ReportViewer1.SetDisplayMode(DisplayMode.PrintLayout) Me.ReportViewer1.RefreshReport() + + End Sub + + Public Function genPDF(pathTo As String, Optional closeMe As Boolean = False) As Boolean + Try + Dim mybytes As Byte() = Me.ReportViewer1.LocalReport.Render("PDF") + + If mybytes IsNot Nothing AndAlso mybytes.Length > 0 Then + + Using fs As FileStream = File.Create(pathTo) + fs.Write(mybytes, 0, mybytes.Length) + End Using + + End If + If closeMe Then Me.Close() + Catch ex As Exception + MsgBox(ex.Message & ex.StackTrace) + Return False + End Try + Return True + End Function 'Private Sub reportVorbereiten(ByVal gruppierungNachBetreuer As Boolean, ByRef reportPath As String) ' Dim doc As XDocument = XDocument.Parse(My.Resources.rptBilanzenAuswertung) @@ -112,12 +138,12 @@ Public Class frmDruckansicht Private Function boolToJaNein(ByVal wert As Boolean) As String - If wert Then - Return "ja" - Else - Return "nein" - End If - End Function + If wert Then + Return "ja" + Else + Return "nein" + End If + End Function Private Sub frmDruckansicht_Load(sender As Object, e As EventArgs) Handles MyBase.Load diff --git a/Parkzeit/frmMain.Designer.vb b/Parkzeit/frmMain.Designer.vb index c8dbe80..e089694 100644 --- a/Parkzeit/frmMain.Designer.vb +++ b/Parkzeit/frmMain.Designer.vb @@ -27,6 +27,11 @@ Partial Class frmMain Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMain)) Me.Panel1 = New System.Windows.Forms.Panel() + Me.PictureBox6 = New System.Windows.Forms.PictureBox() + Me.txtKdNr = New System.Windows.Forms.TextBox() + Me.Label5 = New System.Windows.Forms.Label() + Me.ProgressBar1 = New System.Windows.Forms.ProgressBar() + Me.Button2 = New System.Windows.Forms.Button() Me.Button1 = New System.Windows.Forms.Button() Me.Label2 = New System.Windows.Forms.Label() Me.cboTarif = New VERAG_PROG_ALLGEMEIN.MyComboBox() @@ -48,22 +53,28 @@ Partial Class frmMain Me.gridParkzeiten = New System.Windows.Forms.DataGridView() Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.mnuLöschen = New System.Windows.Forms.ToolStripMenuItem() + Me.Panel3 = New System.Windows.Forms.Panel() + Me.Panel4 = New System.Windows.Forms.Panel() Me.Panel1.SuspendLayout() + CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picLogo, System.ComponentModel.ISupportInitialize).BeginInit() Me.Panel2.SuspendLayout() CType(Me.gridParkzeiten, System.ComponentModel.ISupportInitialize).BeginInit() Me.ContextMenuStrip1.SuspendLayout() + Me.Panel3.SuspendLayout() + Me.Panel4.SuspendLayout() Me.SuspendLayout() ' 'Panel1 ' - Me.Panel1.BackColor = System.Drawing.Color.Azure - Me.Panel1.Controls.Add(Me.Button1) + Me.Panel1.BackColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer)) + Me.Panel1.Controls.Add(Me.Panel3) + Me.Panel1.Controls.Add(Me.Label1) + Me.Panel1.Controls.Add(Me.txtKdNr) + Me.Panel1.Controls.Add(Me.Label5) Me.Panel1.Controls.Add(Me.Label2) Me.Panel1.Controls.Add(Me.cboTarif) - Me.Panel1.Controls.Add(Me.btnDatenEinlesen) Me.Panel1.Controls.Add(Me.lblAnzahl) - Me.Panel1.Controls.Add(Me.picLogo) Me.Panel1.Controls.Add(Me.Panel2) Me.Panel1.Controls.Add(Me.btnAuswerten) Me.Panel1.Controls.Add(Me.btnErfassen) @@ -74,26 +85,82 @@ Partial Class frmMain Me.Panel1.Controls.Add(Me.txtSuche) Me.Panel1.Controls.Add(Me.Label3) Me.Panel1.Controls.Add(Me.lblSuche) + Me.Panel1.Controls.Add(Me.Panel4) Me.Panel1.Dock = System.Windows.Forms.DockStyle.Top Me.Panel1.Location = New System.Drawing.Point(0, 0) Me.Panel1.Name = "Panel1" - Me.Panel1.Size = New System.Drawing.Size(994, 107) + Me.Panel1.Size = New System.Drawing.Size(1183, 124) Me.Panel1.TabIndex = 4 ' + 'PictureBox6 + ' + Me.PictureBox6.BackgroundImage = Global.Parkzeit.My.Resources.Resources.fragezeichen + Me.PictureBox6.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.PictureBox6.Cursor = System.Windows.Forms.Cursors.Hand + Me.PictureBox6.Location = New System.Drawing.Point(207, 11) + Me.PictureBox6.Name = "PictureBox6" + Me.PictureBox6.Size = New System.Drawing.Size(18, 19) + Me.PictureBox6.TabIndex = 133 + Me.PictureBox6.TabStop = False + ' + 'txtKdNr + ' + Me.txtKdNr.Location = New System.Drawing.Point(355, 73) + Me.txtKdNr.MaxLength = 7 + Me.txtKdNr.Name = "txtKdNr" + Me.txtKdNr.Size = New System.Drawing.Size(98, 20) + Me.txtKdNr.TabIndex = 3 + Me.txtKdNr.Visible = False + ' + 'Label5 + ' + Me.Label5.AutoSize = True + Me.Label5.ForeColor = System.Drawing.Color.White + Me.Label5.Location = New System.Drawing.Point(286, 76) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(58, 13) + Me.Label5.TabIndex = 77 + Me.Label5.Text = "Kunden Nr" + Me.Label5.Visible = False + ' + 'ProgressBar1 + ' + Me.ProgressBar1.Location = New System.Drawing.Point(11, 79) + Me.ProgressBar1.Name = "ProgressBar1" + Me.ProgressBar1.Size = New System.Drawing.Size(410, 24) + Me.ProgressBar1.Step = 1 + Me.ProgressBar1.TabIndex = 75 + Me.ProgressBar1.Visible = False + ' + 'Button2 + ' + Me.Button2.BackColor = System.Drawing.Color.White + Me.Button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Button2.Location = New System.Drawing.Point(11, 43) + Me.Button2.Name = "Button2" + Me.Button2.Size = New System.Drawing.Size(190, 30) + Me.Button2.TabIndex = 8 + Me.Button2.TabStop = False + Me.Button2.Text = "nur PDFs genereieren" + Me.Button2.UseVisualStyleBackColor = False + ' 'Button1 ' - Me.Button1.Location = New System.Drawing.Point(579, 42) + Me.Button1.BackColor = System.Drawing.Color.White + Me.Button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.Button1.Location = New System.Drawing.Point(11, 9) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(190, 30) - Me.Button1.TabIndex = 73 + Me.Button1.TabIndex = 7 Me.Button1.TabStop = False Me.Button1.Text = "SpedBuch + Rechnungserstellung" - Me.Button1.UseVisualStyleBackColor = True + Me.Button1.UseVisualStyleBackColor = False ' 'Label2 ' Me.Label2.AutoSize = True - Me.Label2.Location = New System.Drawing.Point(286, 78) + Me.Label2.ForeColor = System.Drawing.Color.White + Me.Label2.Location = New System.Drawing.Point(286, 101) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(28, 13) Me.Label2.TabIndex = 72 @@ -104,28 +171,32 @@ Partial Class frmMain Me.cboTarif._allowedValuesFreiText = Nothing Me.cboTarif._allowFreiText = False Me.cboTarif._value = "" + Me.cboTarif.BackColor = System.Drawing.Color.White Me.cboTarif.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cboTarif.DropDownWidth = 250 + Me.cboTarif.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.cboTarif.FormattingEnabled = True - Me.cboTarif.Location = New System.Drawing.Point(351, 74) + Me.cboTarif.Location = New System.Drawing.Point(355, 97) Me.cboTarif.Name = "cboTarif" Me.cboTarif.Size = New System.Drawing.Size(98, 21) - Me.cboTarif.TabIndex = 71 + Me.cboTarif.TabIndex = 4 ' 'btnDatenEinlesen ' - Me.btnDatenEinlesen.Location = New System.Drawing.Point(579, 8) + Me.btnDatenEinlesen.BackColor = System.Drawing.Color.White + Me.btnDatenEinlesen.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnDatenEinlesen.Location = New System.Drawing.Point(231, 10) Me.btnDatenEinlesen.Name = "btnDatenEinlesen" Me.btnDatenEinlesen.Size = New System.Drawing.Size(190, 30) - Me.btnDatenEinlesen.TabIndex = 70 + Me.btnDatenEinlesen.TabIndex = 9 Me.btnDatenEinlesen.TabStop = False Me.btnDatenEinlesen.Text = "Daten einlesen" - Me.btnDatenEinlesen.UseVisualStyleBackColor = True + Me.btnDatenEinlesen.UseVisualStyleBackColor = False ' 'lblAnzahl ' Me.lblAnzahl.AutoSize = True - Me.lblAnzahl.ForeColor = System.Drawing.SystemColors.HotTrack + Me.lblAnzahl.ForeColor = System.Drawing.SystemColors.GradientInactiveCaption Me.lblAnzahl.Location = New System.Drawing.Point(193, 33) Me.lblAnzahl.Name = "lblAnzahl" Me.lblAnzahl.Size = New System.Drawing.Size(82, 13) @@ -135,11 +206,12 @@ Partial Class frmMain 'picLogo ' Me.picLogo.BackColor = System.Drawing.Color.White + Me.picLogo.Dock = System.Windows.Forms.DockStyle.Fill Me.picLogo.Image = Global.Parkzeit.My.Resources.Resources.Verag_AG_Logo Me.picLogo.InitialImage = Nothing Me.picLogo.Location = New System.Drawing.Point(0, 0) Me.picLogo.Name = "picLogo" - Me.picLogo.Size = New System.Drawing.Size(183, 107) + Me.picLogo.Size = New System.Drawing.Size(187, 124) Me.picLogo.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom Me.picLogo.TabIndex = 68 Me.picLogo.TabStop = False @@ -148,11 +220,11 @@ Partial Class frmMain ' Me.Panel2.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Panel2.Controls.Add(Me.btnInfo) - Me.Panel2.Controls.Add(Me.Label1) - Me.Panel2.Location = New System.Drawing.Point(941, 0) + Me.Panel2.Location = New System.Drawing.Point(1130, 0) Me.Panel2.Name = "Panel2" Me.Panel2.Size = New System.Drawing.Size(53, 78) Me.Panel2.TabIndex = 67 + Me.Panel2.Visible = False ' 'btnInfo ' @@ -166,8 +238,10 @@ Partial Class frmMain ' 'Label1 ' + Me.Label1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label1.AutoSize = True - Me.Label1.Location = New System.Drawing.Point(0, 59) + Me.Label1.ForeColor = System.Drawing.Color.White + Me.Label1.Location = New System.Drawing.Point(1130, 105) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(50, 13) Me.Label1.TabIndex = 14 @@ -176,28 +250,32 @@ Partial Class frmMain ' 'btnAuswerten ' + Me.btnAuswerten.BackColor = System.Drawing.Color.White + Me.btnAuswerten.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.btnAuswerten.Location = New System.Drawing.Point(469, 42) Me.btnAuswerten.Name = "btnAuswerten" Me.btnAuswerten.Size = New System.Drawing.Size(80, 30) - Me.btnAuswerten.TabIndex = 4 + Me.btnAuswerten.TabIndex = 6 Me.btnAuswerten.TabStop = False Me.btnAuswerten.Text = "Auswerten" - Me.btnAuswerten.UseVisualStyleBackColor = True + Me.btnAuswerten.UseVisualStyleBackColor = False ' 'btnErfassen ' + Me.btnErfassen.BackColor = System.Drawing.Color.White + Me.btnErfassen.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.btnErfassen.Location = New System.Drawing.Point(469, 8) Me.btnErfassen.Name = "btnErfassen" Me.btnErfassen.Size = New System.Drawing.Size(80, 30) - Me.btnErfassen.TabIndex = 3 + Me.btnErfassen.TabIndex = 5 Me.btnErfassen.TabStop = False Me.btnErfassen.Text = "Erfassen" - Me.btnErfassen.UseVisualStyleBackColor = True + Me.btnErfassen.UseVisualStyleBackColor = False ' 'dtpBis ' Me.dtpBis.Format = System.Windows.Forms.DateTimePickerFormat.[Short] - Me.dtpBis.Location = New System.Drawing.Point(351, 31) + Me.dtpBis.Location = New System.Drawing.Point(355, 31) Me.dtpBis.Name = "dtpBis" Me.dtpBis.Size = New System.Drawing.Size(98, 20) Me.dtpBis.TabIndex = 1 @@ -205,7 +283,7 @@ Partial Class frmMain 'dtpVon ' Me.dtpVon.Format = System.Windows.Forms.DateTimePickerFormat.[Short] - Me.dtpVon.Location = New System.Drawing.Point(351, 9) + Me.dtpVon.Location = New System.Drawing.Point(355, 9) Me.dtpVon.Name = "dtpVon" Me.dtpVon.Size = New System.Drawing.Size(98, 20) Me.dtpVon.TabIndex = 0 @@ -213,6 +291,7 @@ Partial Class frmMain 'Label4 ' Me.Label4.AutoSize = True + Me.Label4.ForeColor = System.Drawing.Color.White Me.Label4.Location = New System.Drawing.Point(286, 33) Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(59, 13) @@ -222,6 +301,7 @@ Partial Class frmMain 'Label14 ' Me.Label14.AutoSize = True + Me.Label14.ForeColor = System.Drawing.Color.White Me.Label14.Location = New System.Drawing.Point(286, 11) Me.Label14.Name = "Label14" Me.Label14.Size = New System.Drawing.Size(64, 13) @@ -230,7 +310,7 @@ Partial Class frmMain ' 'txtSuche ' - Me.txtSuche.Location = New System.Drawing.Point(351, 52) + Me.txtSuche.Location = New System.Drawing.Point(355, 52) Me.txtSuche.MaxLength = 30 Me.txtSuche.Name = "txtSuche" Me.txtSuche.Size = New System.Drawing.Size(98, 20) @@ -239,6 +319,7 @@ Partial Class frmMain 'Label3 ' Me.Label3.AutoSize = True + Me.Label3.ForeColor = System.Drawing.Color.White Me.Label3.Location = New System.Drawing.Point(193, 11) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(50, 13) @@ -248,11 +329,12 @@ Partial Class frmMain 'lblSuche ' Me.lblSuche.AutoSize = True + Me.lblSuche.ForeColor = System.Drawing.Color.White Me.lblSuche.Location = New System.Drawing.Point(286, 55) Me.lblSuche.Name = "lblSuche" - Me.lblSuche.Size = New System.Drawing.Size(38, 13) + Me.lblSuche.Size = New System.Drawing.Size(69, 13) Me.lblSuche.TabIndex = 14 - Me.lblSuche.Text = "Suche" + Me.lblSuche.Text = "Kennzeichen" ' 'gridParkzeiten ' @@ -270,7 +352,7 @@ Partial Class frmMain Me.gridParkzeiten.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle1 Me.gridParkzeiten.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize Me.gridParkzeiten.Dock = System.Windows.Forms.DockStyle.Fill - Me.gridParkzeiten.Location = New System.Drawing.Point(0, 107) + Me.gridParkzeiten.Location = New System.Drawing.Point(0, 124) Me.gridParkzeiten.MultiSelect = False Me.gridParkzeiten.Name = "gridParkzeiten" Me.gridParkzeiten.ReadOnly = True @@ -280,7 +362,7 @@ Partial Class frmMain Me.gridParkzeiten.RowTemplate.Height = 18 Me.gridParkzeiten.RowTemplate.ReadOnly = True Me.gridParkzeiten.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect - Me.gridParkzeiten.Size = New System.Drawing.Size(994, 640) + Me.gridParkzeiten.Size = New System.Drawing.Size(1183, 717) Me.gridParkzeiten.TabIndex = 5 Me.gridParkzeiten.TabStop = False ' @@ -296,23 +378,48 @@ Partial Class frmMain Me.mnuLöschen.Size = New System.Drawing.Size(155, 22) Me.mnuLöschen.Text = "Eintrag löschen" ' + 'Panel3 + ' + Me.Panel3.BackColor = System.Drawing.Color.White + Me.Panel3.Controls.Add(Me.picLogo) + Me.Panel3.Location = New System.Drawing.Point(0, 0) + Me.Panel3.Name = "Panel3" + Me.Panel3.Size = New System.Drawing.Size(187, 124) + Me.Panel3.TabIndex = 134 + ' + 'Panel4 + ' + Me.Panel4.BackColor = System.Drawing.Color.SteelBlue + Me.Panel4.Controls.Add(Me.Button1) + Me.Panel4.Controls.Add(Me.PictureBox6) + Me.Panel4.Controls.Add(Me.btnDatenEinlesen) + Me.Panel4.Controls.Add(Me.Button2) + Me.Panel4.Controls.Add(Me.ProgressBar1) + Me.Panel4.Location = New System.Drawing.Point(610, 0) + Me.Panel4.Name = "Panel4" + Me.Panel4.Size = New System.Drawing.Size(435, 114) + Me.Panel4.TabIndex = 135 + ' 'frmMain ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(994, 747) + Me.ClientSize = New System.Drawing.Size(1183, 841) Me.Controls.Add(Me.gridParkzeiten) Me.Controls.Add(Me.Panel1) Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.Name = "frmMain" + Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen Me.Text = "Erfassung LKW Liste Parkplatz" Me.Panel1.ResumeLayout(False) Me.Panel1.PerformLayout() + CType(Me.PictureBox6, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.picLogo, System.ComponentModel.ISupportInitialize).EndInit() Me.Panel2.ResumeLayout(False) - Me.Panel2.PerformLayout() CType(Me.gridParkzeiten, System.ComponentModel.ISupportInitialize).EndInit() Me.ContextMenuStrip1.ResumeLayout(False) + Me.Panel3.ResumeLayout(False) + Me.Panel4.ResumeLayout(False) Me.ResumeLayout(False) End Sub @@ -338,4 +445,11 @@ Partial Class frmMain Friend WithEvents Label2 As Label Friend WithEvents cboTarif As VERAG_PROG_ALLGEMEIN.MyComboBox Friend WithEvents Button1 As Button + Friend WithEvents Button2 As Button + Friend WithEvents ProgressBar1 As ProgressBar + Friend WithEvents txtKdNr As TextBox + Friend WithEvents Label5 As Label + Friend WithEvents PictureBox6 As PictureBox + Friend WithEvents Panel3 As Panel + Friend WithEvents Panel4 As Panel End Class diff --git a/Parkzeit/frmMain.vb b/Parkzeit/frmMain.vb index 924ce25..68d2cd4 100644 --- a/Parkzeit/frmMain.vb +++ b/Parkzeit/frmMain.vb @@ -4,6 +4,7 @@ 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 @@ -17,6 +18,9 @@ Public Class frmMain 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() @@ -57,8 +61,8 @@ Public Class frmMain 'Position+Größe wird in ApplicationSettings vom Formular gespeichert Try - Me.Size = My.Settings.frmMainSize - Me.Location = My.Settings.frmMainPosition + ' Me.Size = My.Settings.frmMainSize + ' Me.Location = My.Settings.frmMainPosition Catch ex As Exception 'nix tun - Standardgröße wird somit automatisch gesetzt End Try @@ -104,6 +108,10 @@ Public Class frmMain 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" @@ -178,7 +186,7 @@ Public Class frmMain Tabelle_anzeigen() End Sub - Private Sub txtSuche_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtSuche.TextChanged + 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() @@ -265,8 +273,12 @@ Public Class frmMain 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 @@ -281,6 +293,455 @@ Public Class frmMain 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 + + 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 diff --git a/Parkzeit/rptAbrechnungVERAG2.rdlc b/Parkzeit/rptAbrechnungVERAG2.rdlc new file mode 100644 index 0000000..7c7e102 --- /dev/null +++ b/Parkzeit/rptAbrechnungVERAG2.rdlc @@ -0,0 +1,1241 @@ + + + 0 + + + + System.Data.DataSet + /* Local Connection */ + + 9a95dd35-ac23-48c7-b430-98358c7ae8dd + + + + + + ParkzeitDataSet + /* Local Query */ + + + + ParkzeitID + System.Int32 + + + Laufende_Nr + System.Int32 + + + Von + System.DateTime + + + Bis + System.DateTime + + + Dauer + System.String + + + Dauer_Minuten + System.Int32 + + + Kennzeichen + System.String + + + + ParkzeitDataSet + C:\Projekte.NET\Verag\Parkzeit\Parkzeit\ParkzeitDataSet.xsd + Parkzeiten + Fill + GetData + ParkzeitenTableAdapter + + + + + + + + + + + 1.41227cm + + + 3.85999cm + + + 4.13723cm + + + 1.86959cm + + + 5.47136cm + + + 0.28194cm + + + + + 0.55001cm + + + + + true + true + + + + + =Fields!Laufende_Nr.Value + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Von.Value + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Bis.Value + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Dauer.Value + + + + Dauer + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Kennzeichen.Value + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + + + + + + + + + + 0.6cm + + + + + true + true + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + ="Gesamtsumme" + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Gesamtdauer.Value + + + + + + + Textbox28 + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Parameters!Gesamtkosten.Value + + + + + + + + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + + + + Before + + + + DataSet1 + 0.09016cm + 0.07936cm + 1.15001cm + 17.03238cm + + + 8pt + + + + 0.48826in + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + lfd Nr + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Einfahrt + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Ausfahrt + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Dauer Std. + + + + + + + KundennummerHeader + 1.69965cm + 9.11868cm + 0.19968in + 0.77763in + 4 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!SelektionText.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + LKW-Kennzeichen + + + + + + + KundennummerHeader + 1.69965cm + 11.09386cm + 0.19968in + 1.30903in + 6 + + + 2pt + 2pt + 2pt + 2pt + + + + Embedded + VeragAGLogo + FitProportional + 0.15028cm + 12.083cm + 1.05548cm + 5.02876cm + 7 + + + + + + 2.20684cm + 0.11906cm + 0cm + 17.03238cm + 8 + + + + + + + + + + + 0.74083cm + true + true + + + true + true + + + + + =Parameters!Firmenname.Value + + + + + + + Textbox16 + 0.17637cm + 5.35161cm + 0.49445cm + 5.40723cm + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + ="Seite " & Globals!PageNumber & " von " & Globals!TotalPages + + + + + + + Textbox16 + 0.14109cm + 11.20053cm + 0.49445cm + 5.91122cm + 1 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + ="Druck erstellt am " & format(Globals!ExecutionTime,"dd.MM.yyyy HH:mm") + + + + + + 2pt + 2pt + 2pt + 2pt + + + + 0.07054cm + 0.15875cm + 0cm + 16.953cm + 3 + + 0.5pt + + + + + + + + + 29.7cm + 21cm + 2cm + 1cm + 1.5cm + 1cm + 0.13cm +