From e4db935edc99724003495b248a9f7cdb0b56461f Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Tue, 3 Nov 2026 14:41:10 +0100 Subject: [PATCH] abrechnung, BH, Fakt, Auswertung, etc. --- .../frmAbrechnungsMaske.Designer.vb | 53 +- SDL/Fakturierung/frmAbrechnungsMaske.vb | 17 +- SDL/buchhaltung/usrCntlBH.vb | 787 +++++++++--------- SDL/kunden/usrcntlKundeBearbeitenFull.vb | 4 + SDL/mdm/frmMDMDatenverarbetiung.vb | 69 +- SDL/seriendruck/usrCntlFakturierung.vb | 60 +- SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb | 61 +- SDL/zoll/usrCntlZOLLAuswertungen.vb | 84 +- VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb | 16 + 9 files changed, 643 insertions(+), 508 deletions(-) diff --git a/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb b/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb index 5b744c90..39d545ad 100644 --- a/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb +++ b/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb @@ -114,7 +114,7 @@ Partial Class frmAbrechnungsMaske Me.pnl.Dock = System.Windows.Forms.DockStyle.Fill Me.pnl.Location = New System.Drawing.Point(0, 0) Me.pnl.Name = "pnl" - Me.pnl.Size = New System.Drawing.Size(1442, 646) + Me.pnl.Size = New System.Drawing.Size(1487, 646) Me.pnl.TabIndex = 0 ' 'SplitContainer @@ -133,8 +133,8 @@ Partial Class frmAbrechnungsMaske 'SplitContainer.Panel2 ' Me.SplitContainer.Panel2.Controls.Add(Me.UsrCntlFaktAbrechnung1) - Me.SplitContainer.Size = New System.Drawing.Size(1442, 646) - Me.SplitContainer.SplitterDistance = 575 + Me.SplitContainer.Size = New System.Drawing.Size(1487, 646) + Me.SplitContainer.SplitterDistance = 620 Me.SplitContainer.TabIndex = 0 ' 'tbcntr @@ -144,7 +144,7 @@ Partial Class frmAbrechnungsMaske Me.tbcntr.Location = New System.Drawing.Point(0, 187) Me.tbcntr.Name = "tbcntr" Me.tbcntr.SelectedIndex = 0 - Me.tbcntr.Size = New System.Drawing.Size(575, 459) + Me.tbcntr.Size = New System.Drawing.Size(620, 459) Me.tbcntr.TabIndex = 3 ' 'TabPage1 @@ -156,7 +156,7 @@ Partial Class frmAbrechnungsMaske Me.TabPage1.Location = New System.Drawing.Point(4, 22) Me.TabPage1.Name = "TabPage1" Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage1.Size = New System.Drawing.Size(567, 433) + Me.TabPage1.Size = New System.Drawing.Size(612, 433) Me.TabPage1.TabIndex = 0 Me.TabPage1.Text = "Rechnungen" Me.TabPage1.UseVisualStyleBackColor = True @@ -200,7 +200,7 @@ Partial Class frmAbrechnungsMaske Me.dgvRechnungen.RowHeadersVisible = False Me.dgvRechnungen.RowTemplate.Height = 28 Me.dgvRechnungen.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect - Me.dgvRechnungen.Size = New System.Drawing.Size(561, 334) + Me.dgvRechnungen.Size = New System.Drawing.Size(606, 334) Me.dgvRechnungen.TabIndex = 1 ' 'Panel2 @@ -231,7 +231,7 @@ Partial Class frmAbrechnungsMaske Me.Panel2.Location = New System.Drawing.Point(3, 337) Me.Panel2.Margin = New System.Windows.Forms.Padding(2) Me.Panel2.Name = "Panel2" - Me.Panel2.Size = New System.Drawing.Size(561, 93) + Me.Panel2.Size = New System.Drawing.Size(606, 93) Me.Panel2.TabIndex = 0 ' 'txtMailanzeigen @@ -371,7 +371,7 @@ Partial Class frmAbrechnungsMaske Me.btn.BackgroundImage = Global.SDL.My.Resources.Resources.plus Me.btn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom Me.btn.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.btn.Location = New System.Drawing.Point(505, 10) + Me.btn.Location = New System.Drawing.Point(550, 10) Me.btn.Name = "btn" Me.btn.Size = New System.Drawing.Size(53, 36) Me.btn.TabIndex = 4 @@ -381,7 +381,7 @@ Partial Class frmAbrechnungsMaske ' Me.Label6.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.Label6.Font = New System.Drawing.Font("Microsoft Sans Serif", 7.0!) - Me.Label6.Location = New System.Drawing.Point(502, 46) + Me.Label6.Location = New System.Drawing.Point(547, 46) Me.Label6.Name = "Label6" Me.Label6.Size = New System.Drawing.Size(56, 26) Me.Label6.TabIndex = 13 @@ -509,7 +509,7 @@ Partial Class frmAbrechnungsMaske Me.Panel1.Location = New System.Drawing.Point(0, 0) Me.Panel1.Margin = New System.Windows.Forms.Padding(2) Me.Panel1.Name = "Panel1" - Me.Panel1.Size = New System.Drawing.Size(575, 187) + Me.Panel1.Size = New System.Drawing.Size(620, 187) Me.Panel1.TabIndex = 0 ' 'txtRechnungsdatumAutomail @@ -528,7 +528,7 @@ Partial Class frmAbrechnungsMaske Me.txtRechnungsdatumAutomail._WaehrungZeichen = True Me.txtRechnungsdatumAutomail.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.txtRechnungsdatumAutomail.ForeColor = System.Drawing.Color.Black - Me.txtRechnungsdatumAutomail.Location = New System.Drawing.Point(442, 42) + Me.txtRechnungsdatumAutomail.Location = New System.Drawing.Point(485, 42) Me.txtRechnungsdatumAutomail.MaxLength = 10 Me.txtRechnungsdatumAutomail.MaxLineLength = -1 Me.txtRechnungsdatumAutomail.MaxLines_Warning = "" @@ -542,7 +542,7 @@ Partial Class frmAbrechnungsMaske ' Me.dtp_RD_automail.CustomFormat = "''" Me.dtp_RD_automail.Format = System.Windows.Forms.DateTimePickerFormat.Custom - Me.dtp_RD_automail.Location = New System.Drawing.Point(442, 42) + Me.dtp_RD_automail.Location = New System.Drawing.Point(485, 42) Me.dtp_RD_automail.Margin = New System.Windows.Forms.Padding(0) Me.dtp_RD_automail.Name = "dtp_RD_automail" Me.dtp_RD_automail.RightToLeft = System.Windows.Forms.RightToLeft.No @@ -560,6 +560,7 @@ Partial Class frmAbrechnungsMaske Me.KdSearchBox1._displayFullName = False Me.KdSearchBox1._displayWoelflKd = False Me.KdSearchBox1._hideIfListEmpty = True + Me.KdSearchBox1._hideMDMKd = False Me.KdSearchBox1._loadKdData = False Me.KdSearchBox1._searchName1 = True Me.KdSearchBox1._UseFIRMA = "" @@ -581,7 +582,7 @@ Partial Class frmAbrechnungsMaske 'lblRechnungsdatumAUTOMAIL ' Me.lblRechnungsdatumAUTOMAIL.AutoSize = True - Me.lblRechnungsdatumAUTOMAIL.Location = New System.Drawing.Point(331, 45) + Me.lblRechnungsdatumAUTOMAIL.Location = New System.Drawing.Point(374, 45) Me.lblRechnungsdatumAUTOMAIL.Name = "lblRechnungsdatumAUTOMAIL" Me.lblRechnungsdatumAUTOMAIL.Size = New System.Drawing.Size(74, 13) Me.lblRechnungsdatumAUTOMAIL.TabIndex = 60 @@ -614,7 +615,7 @@ Partial Class frmAbrechnungsMaske Me.cboRechnungsdruck._value = "" Me.cboRechnungsdruck.DropDownWidth = 120 Me.cboRechnungsdruck.FormattingEnabled = True - Me.cboRechnungsdruck.Location = New System.Drawing.Point(442, 23) + Me.cboRechnungsdruck.Location = New System.Drawing.Point(485, 23) Me.cboRechnungsdruck.Margin = New System.Windows.Forms.Padding(2) Me.cboRechnungsdruck.Name = "cboRechnungsdruck" Me.cboRechnungsdruck.Size = New System.Drawing.Size(106, 21) @@ -623,7 +624,7 @@ Partial Class frmAbrechnungsMaske 'Label14 ' Me.Label14.AutoSize = True - Me.Label14.Location = New System.Drawing.Point(329, 26) + Me.Label14.Location = New System.Drawing.Point(372, 26) Me.Label14.Name = "Label14" Me.Label14.Size = New System.Drawing.Size(108, 13) Me.Label14.TabIndex = 52 @@ -634,7 +635,7 @@ Partial Class frmAbrechnungsMaske Me.cbx.AutoSize = True Me.cbx.Checked = True Me.cbx.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbx.Location = New System.Drawing.Point(313, 65) + Me.cbx.Location = New System.Drawing.Point(356, 65) Me.cbx.Name = "cbx" Me.cbx.Size = New System.Drawing.Size(139, 17) Me.cbx.TabIndex = 34 @@ -647,7 +648,7 @@ Partial Class frmAbrechnungsMaske Me.cboER_SR._allowFreiText = False Me.cboER_SR._value = "" Me.cboER_SR.FormattingEnabled = True - Me.cboER_SR.Location = New System.Drawing.Point(442, 3) + Me.cboER_SR.Location = New System.Drawing.Point(485, 3) Me.cboER_SR.Margin = New System.Windows.Forms.Padding(2) Me.cboER_SR.Name = "cboER_SR" Me.cboER_SR.Size = New System.Drawing.Size(106, 21) @@ -656,7 +657,7 @@ Partial Class frmAbrechnungsMaske 'Label5 ' Me.Label5.AutoSize = True - Me.Label5.Location = New System.Drawing.Point(329, 6) + Me.Label5.Location = New System.Drawing.Point(372, 6) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(103, 13) Me.Label5.TabIndex = 32 @@ -730,7 +731,7 @@ Partial Class frmAbrechnungsMaske Me.MyPanel1.Dock = System.Windows.Forms.DockStyle.Bottom Me.MyPanel1.Location = New System.Drawing.Point(0, 100) Me.MyPanel1.Name = "MyPanel1" - Me.MyPanel1.Size = New System.Drawing.Size(575, 87) + Me.MyPanel1.Size = New System.Drawing.Size(620, 87) Me.MyPanel1.TabIndex = 51 Me.MyPanel1.Visible = False ' @@ -750,7 +751,7 @@ Partial Class frmAbrechnungsMaske Me.MyTextBox2._WaehrungZeichen = False Me.MyTextBox2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.MyTextBox2.ForeColor = System.Drawing.Color.Black - Me.MyTextBox2.Location = New System.Drawing.Point(374, 34) + Me.MyTextBox2.Location = New System.Drawing.Point(415, 34) Me.MyTextBox2.MaxLength = 10 Me.MyTextBox2.MaxLineLength = -1 Me.MyTextBox2.MaxLines_Warning = "" @@ -776,7 +777,7 @@ Partial Class frmAbrechnungsMaske Me.MyTextBox3.Enabled = False Me.MyTextBox3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) Me.MyTextBox3.ForeColor = System.Drawing.Color.Black - Me.MyTextBox3.Location = New System.Drawing.Point(374, 63) + Me.MyTextBox3.Location = New System.Drawing.Point(415, 63) Me.MyTextBox3.MaxLength = 10 Me.MyTextBox3.MaxLineLength = -1 Me.MyTextBox3.MaxLines_Warning = "" @@ -788,7 +789,7 @@ Partial Class frmAbrechnungsMaske 'Label9 ' Me.Label9.AutoSize = True - Me.Label9.Location = New System.Drawing.Point(345, 38) + Me.Label9.Location = New System.Drawing.Point(386, 38) Me.Label9.Name = "Label9" Me.Label9.Size = New System.Drawing.Size(28, 13) Me.Label9.TabIndex = 57 @@ -797,7 +798,7 @@ Partial Class frmAbrechnungsMaske 'Label11 ' Me.Label11.AutoSize = True - Me.Label11.Location = New System.Drawing.Point(345, 66) + Me.Label11.Location = New System.Drawing.Point(386, 66) Me.Label11.Name = "Label11" Me.Label11.Size = New System.Drawing.Size(23, 13) Me.Label11.TabIndex = 56 @@ -807,7 +808,7 @@ Partial Class frmAbrechnungsMaske ' Me.Label8.AutoSize = True Me.Label8.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.Label8.Location = New System.Drawing.Point(345, 13) + Me.Label8.Location = New System.Drawing.Point(386, 13) Me.Label8.Name = "Label8" Me.Label8.Size = New System.Drawing.Size(114, 13) Me.Label8.TabIndex = 52 @@ -1048,7 +1049,7 @@ Partial Class frmAbrechnungsMaske 'cbxGutschriftenAnVerag ' Me.cbxGutschriftenAnVerag.AutoSize = True - Me.cbxGutschriftenAnVerag.Location = New System.Drawing.Point(454, 65) + Me.cbxGutschriftenAnVerag.Location = New System.Drawing.Point(497, 65) Me.cbxGutschriftenAnVerag.Name = "cbxGutschriftenAnVerag" Me.cbxGutschriftenAnVerag.Size = New System.Drawing.Size(118, 17) Me.cbxGutschriftenAnVerag.TabIndex = 54 @@ -1076,7 +1077,7 @@ Partial Class frmAbrechnungsMaske ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(1442, 646) + Me.ClientSize = New System.Drawing.Size(1487, 646) Me.Controls.Add(Me.pnl) Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.KeyPreview = True diff --git a/SDL/Fakturierung/frmAbrechnungsMaske.vb b/SDL/Fakturierung/frmAbrechnungsMaske.vb index e15174be..9dcf2f07 100644 --- a/SDL/Fakturierung/frmAbrechnungsMaske.vb +++ b/SDL/Fakturierung/frmAbrechnungsMaske.vb @@ -202,7 +202,7 @@ Public Class frmAbrechnungsMaske Dim sqlstr = "" If cbxGutschriftenAnVerag.Checked AndAlso cboFirma._value <> "" AndAlso cboFirma._value = "24" Then - sqlstr &= " SELECT Rechnungsausgang.Rechnungsdatum, isnull(R1.RechnungsNr,'-') as ReNr, R1.FilialenNr, R1.AbfertigungsNr, cast(R1.FilialenNr as varchar) + ' ' + cast(R1.AbfertigungsNr as varchar) as PosNr, R1.UnterNr, Firma_ID,R1.Sammelrechnung as Art, [RechnungsName 1] as Rechnungsempfänger, (isnull(SteuerpflichtigerGesamtbetrag,0) + isnull(SteuerfreierGesamtbetrag,0)) as Betrag, RK_ID,RechnungsLandKz,RechnungsKundenNr FROM Rechnungsausgang as R1 INNER JOIN Adressen ON AdressenNr=R1.RechnungsKundenNr inner Join Speditionsbuch on Speditionsbuch.FilialenNr = R1.FilialenNr And Speditionsbuch.AbfertigungsNr = R1.AbfertigungsNr and Speditionsbuch.UnterNr = R1.SpeditionsbuchUnterNr " + sqlstr &= " SELECT Rechnungsausgang.Rechnungsdatum, isnull(R1.RechnungsNr,'-') as ReNr, R1.FilialenNr, R1.AbfertigungsNr, cast(R1.FilialenNr as varchar) + ' ' + cast(R1.AbfertigungsNr as varchar) as PosNr, R1.UnterNr, Firma_ID,R1.Sammelrechnung as Art,RechnungsKundenNr, [RechnungsName 1] as Rechnungsempfänger, (isnull(SteuerpflichtigerGesamtbetrag,0) + isnull(SteuerfreierGesamtbetrag,0)) as Betrag, RK_ID,RechnungsLandKz FROM Rechnungsausgang as R1 INNER JOIN Adressen ON AdressenNr=R1.RechnungsKundenNr inner Join Speditionsbuch on Speditionsbuch.FilialenNr = R1.FilialenNr And Speditionsbuch.AbfertigungsNr = R1.AbfertigungsNr and Speditionsbuch.UnterNr = R1.SpeditionsbuchUnterNr " sqlstr &= " WHERE 1=1 AND R1.Firma_ID=24 " sqlstr &= getRGWhere(cboER_SR._value, FilialNrRestriction) sqlstr &= " and (SELECT COUNT(*) FROM Rechnungsausgang as R2 where" @@ -213,7 +213,7 @@ Public Class frmAbrechnungsMaske Else ' sqlstr &= " SELECT FilialenNr, AbfertigungsNr, UnterNr, Firma_ID, Status, Sammelrechnung, Sachbearbeiter, SteuerpflichtigerGesamtbetrag, SteuerfreierGesamtbetrag, RechnungsNr, RechnungsDatum, DruckDatumZeit, Buchungsjahr, RK_ID" - sqlstr &= " SELECT cast(isnull(Automailversand_sent, 0) as bit) as AUTO_sent,Rechnungsausgang.Rechnungsdatum, isnull(Rechnungsausgang.RechnungsNr,'-') as ReNr, FilialenNr, AbfertigungsNr, cast(FilialenNr as varchar) + ' ' + cast(AbfertigungsNr as varchar) as PosNr,UnterNr, Firma_ID,Rechnungsausgang.Sammelrechnung as Art, [RechnungsName 1] as Rechnungsempfänger, (isnull(SteuerpflichtigerGesamtbetrag,0) + isnull(SteuerfreierGesamtbetrag,0)) as Betrag, RK_ID,RechnungsLandKz,RechnungsKundenNr, ReErfZeitstempel" + sqlstr &= " SELECT cast(isnull(Automailversand_sent, 0) as bit) as AUTO_sent,Rechnungsausgang.Rechnungsdatum, isnull(Rechnungsausgang.RechnungsNr,'-') as ReNr, FilialenNr, AbfertigungsNr, cast(FilialenNr as varchar) + ' ' + cast(AbfertigungsNr as varchar) as PosNr,UnterNr, Firma_ID,Rechnungsausgang.Sammelrechnung as Art,RechnungsKundenNr, [RechnungsName 1] as Rechnungsempfänger, (isnull(SteuerpflichtigerGesamtbetrag,0) + isnull(SteuerfreierGesamtbetrag,0)) as Betrag, RK_ID,RechnungsLandKz, ReErfZeitstempel" sqlstr &= ",(CASE WHEN Rechnungsdruck =0 THEN 'POST' WHEN Rechnungsdruck=1 THEN 'FAX' WHEN Rechnungsdruck=2 THEN 'E-MAIL' WHEN Rechnungsdruck=5 THEN 'MAIL+KOPIE' ELSE '-' END) as Rechnungsdruck, isnull(BelegartenKz, '') as BelegartenKz " sqlstr &= " FROM Rechnungsausgang INNER JOIN Adressen ON AdressenNr=Rechnungsausgang.RechnungsKundenNr" sqlstr &= " WHERE 1=1 " @@ -231,7 +231,13 @@ Public Class frmAbrechnungsMaske .Columns("AbfertigungsNr").Visible = False .Columns("Firma_ID").Visible = False .Columns("RechnungsLandKz").Visible = False - .Columns("RechnungsKundenNr").Visible = False + '.Columns("RechnungsKundenNr").Visible = False + + + .Columns("RechnungsKundenNr").Visible = True + .Columns("RechnungsKundenNr").Width = 75 + .Columns("RechnungsKundenNr").HeaderText = "KdNr" + .Columns("Rechnungsdatum").Visible = False .Columns("ReErfZeitstempel").Visible = False .Columns("PosNr").HeaderText = "Pos-Nr." @@ -277,6 +283,11 @@ Public Class frmAbrechnungsMaske If cboFirma._value <> "" AndAlso cboFirma._value = "19" Then + .Columns("RechnungsLandKz").HeaderText = "Land" + .Columns("RechnungsLandKz").Width = 50 + .Columns("RechnungsLandKz").Visible = True + + For Each r In .Rows If r.Cells("Betrag").Value IsNot DBNull.Value AndAlso IsNumeric(r.Cells("Betrag").Value) Then diff --git a/SDL/buchhaltung/usrCntlBH.vb b/SDL/buchhaltung/usrCntlBH.vb index 3f9e28c0..82d92092 100644 --- a/SDL/buchhaltung/usrCntlBH.vb +++ b/SDL/buchhaltung/usrCntlBH.vb @@ -2,6 +2,7 @@ Imports System.Globalization Imports System.Text Imports System.Web.UI.WebControls.Expressions +Imports Microsoft.Office.Interop.Excel Imports QRCoder.PayloadGenerator.SwissQrCode Imports VERAG_PROG_ALLGEMEIN @@ -492,7 +493,7 @@ Public Class usrCntlBH If (dummycount Mod 2) = 0 Then rpt.Detail.BackColor = Color.FromArgb(240, 240, 240) Else - rpt.Detail.BackColor = Drawing.Color.White + rpt.Detail.BackColor = System.Drawing.Color.White End If End Sub @@ -622,7 +623,7 @@ Public Class usrCntlBH If fd.ShowDialog = DialogResult.OK Then If fd.FileName.ToUpper.EndsWith(".CSV") Then - Dim Lines As String() = My.Computer.FileSystem.ReadAllText(fd.FileName, System.Text.Encoding.Default).split(vbCr) + Dim Lines As String() = My.Computer.FileSystem.ReadAllText(fd.FileName, System.Text.Encoding.Default).Split(vbCr) Dim LineCount As Integer = Lines.Length ' fd.FileName.EndsWith(".csv") @@ -697,7 +698,7 @@ Public Class usrCntlBH cnt += 1 If cnt Mod 10 = 0 Then - Application.DoEvents() + My.Application.DoEvents() Label30.Text = (cnt) & " / " & LineCount End If @@ -967,7 +968,7 @@ Public Class usrCntlBH MsgBox("In der Zinsberechnung befinden sich " & counter & " Positionen, die bereits abgerechnet wurden!" & vbNewLine & "Diese werden übersprungen bzw. nicht nochmals verrechnet!") End If - Dim dtTemp As New DataTable + Dim dtTemp As New System.Data.DataTable dtTemp = dt.Select("Zinsbetrag > 0").CopyToDataTable @@ -977,7 +978,7 @@ Public Class usrCntlBH If dtTemp.Columns.Contains("ZZinTage") Then dtTemp.Columns.Remove("ZZinTage") If dtTemp.Columns.Contains("ReZielZahlungsdatum") Then dtTemp.Columns.Remove("ReZielZahlungsdatum") - Dim dtTemp2 As New DataTable + Dim dtTemp2 As New System.Data.DataTable dtTemp2.Columns.Add("KDNR", GetType(Int32)) dtTemp2.Columns.Add("Name", GetType(String)) dtTemp2.Columns.Add("Zinsbetrag", GetType(Decimal)) @@ -1175,7 +1176,7 @@ Public Class usrCntlBH Dim OFFERTE As New VERAG_PROG_ALLGEMEIN.cOfferte(KdNr, OffertenNr, True) RG.LOAD_OFFERT_POSITIONEN() ' --> OFFERTE MIT ANZAHL >0 und Preis >0 - Dim dt As New DataTable + Dim dt As New System.Data.DataTable cMDMZinsberechnung.GET_NICHTABGERECHNETE_ZB(dt, KdNr) For Each r In dt.Rows @@ -1543,7 +1544,7 @@ Public Class usrCntlBH If txtUID_Monat.Text = "" OrElse txtUID_Monat.Text <> "" AndAlso IsNumeric(txtUID_Monat.Text) AndAlso CInt(txtUID_Monat.Text) > 0 AndAlso CInt(txtUID_Monat.Text) < 13 Then - Dim dt As New DataTable + Dim dt As New System.Data.DataTable Dim Month As Integer = CInt(txtUID_Monat.Text).ToString("D2") Dim Year As Integer = CInt(txtUID_Jahr.Text) @@ -2234,11 +2235,8 @@ Public Class usrCntlBH Exit Sub End If - Dim exclApp As Object = Nothing - Dim Datei As Object = Nothing - Dim Blatt As Object = Nothing - Dim dt As New DataTable + Dim dt As New System.Data.DataTable Dim visibleKdNrCheck As Boolean = False Dim missingKdNr As Integer = 0 @@ -2261,443 +2259,412 @@ Public Class usrCntlBH End If + Dim dataRows As New List(Of Dictionary(Of String, String)) + + Dim requiredHeaders As String() + + Select Case TYP + Case "M" + requiredHeaders = {"Belegdat", "Belegnr", "BuchText", "Soll EUR", "Haben EUR", "Gegenkto"} + Case "Q" + requiredHeaders = {"Umsatz-ID", "Datum", "IBAN", "BIC", "Buchungstext", "Währung", "Betrag", "Kontoauszug"} + End Select + Try - exclApp = CreateObject("Excel.Application") - exclApp.DisplayAlerts = False - exclApp.CutCopyMode = False + Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(fd.FileName, Encoding.Default) + MyReader.TextFieldType = FileIO.FieldType.Delimited + MyReader.SetDelimiters(";") + MyReader.HasFieldsEnclosedInQuotes = True ' <— Important line! (semicolon inside quotes will be ignored) - 'Try to open exclusively - Datei = exclApp.Workbooks.Open(Filename:=fd.FileName, ReadOnly:=False, IgnoreReadOnlyRecommended:=True, Notify:=False, Format:=6, Delimiter:=";") + Dim headerMap As New Dictionary(Of String, Integer)(StringComparer.OrdinalIgnoreCase) + Dim startHeaderRow As Integer = 1 + Dim counterFile As Integer = 1 + Dim currentRow As String() - If Datei.ReadOnly Then - MessageBox.Show("Die Datei wird bereits von einem anderen Benutzer oder einer anderen Excel-Instanz verwendet, bitte Datei vor dem Import schließen!") - Exit Sub - End If + While Not MyReader.EndOfData + currentRow = MyReader.ReadFields() - Blatt = Datei.Worksheets(1) + If counterFile = 1 Then - Dim headerMap As New Dictionary(Of String, Integer)(StringComparer.OrdinalIgnoreCase) + For Each rawHeader In currentRow + Dim countHeader As Integer = 0 + If String.IsNullOrWhiteSpace(rawHeader) Then Continue For - Dim startHeaderRow As Integer = If(TYP = "M", 8, 1) - - For col As Integer = 1 To Blatt.UsedRange.Columns.Count - - Dim rawHeader As String = Convert.ToString(Blatt.Cells(startHeaderRow, col).Value2) - - If String.IsNullOrWhiteSpace(rawHeader) Then Continue For - - ' Trennzeichen erkennen: Semikolon oder Tab - Dim sep As Char = ";"c - If Not rawHeader.Contains(";") AndAlso rawHeader.Contains(ChrW(9)) Then - sep = ChrW(9) - End If - - If rawHeader.Contains(sep) Then - ' Gesamte Kopfzeile steht in einer Zelle - Dim headers As String() = rawHeader.Split(sep) - - For i As Integer = 0 To headers.Length - 1 - Dim header As String = headers(i).Replace(ChrW(160), " "c).Trim().TrimEnd("."c).Trim() - - If header <> "" AndAlso Not headerMap.ContainsKey(header) Then - headerMap.Add(header, i + 1) - End If - Next - Else - Dim header As String = rawHeader.Replace(ChrW(160), " "c).Trim().TrimEnd("."c).Trim() - - If header <> "" AndAlso Not headerMap.ContainsKey(header) Then - headerMap.Add(header, col) - End If - End If - Next - - ' Pflichtspalten prüfen - Dim requiredHeaders As String() - - Select Case TYP - Case "M" - requiredHeaders = {"Belegdat", "Belegnr", "BuchText", "Soll EUR", "Haben EUR", "Gegenkto"} - Case "Q" - requiredHeaders = {"Umsatz-ID", "Datum", "IBAN", "BIC", "Buchungstext", "Währung", "Betrag", "Kontoauszug"} - End Select - - For Each h As String In requiredHeaders - If Not headerMap.ContainsKey(h) Then - MsgBox("Pflichtspalte nicht gefunden: " & h & vbNewLine & "Spaltenkopf muss sich an der " & startHeaderRow & " Zeile befinden!") - Exit Sub - End If - Next - - - If headerMap.ContainsKey("KDNR") Then - visibleKdNrCheck = True - End If - - - Dim dataRows As New List(Of Dictionary(Of String, String)) - - Dim lastRow As Integer = Blatt.UsedRange.Row + Blatt.UsedRange.Rows.Count - 1 - - For row As Integer = startHeaderRow + 1 To lastRow - - Dim rawLine As String = Convert.ToString(Blatt.Cells(row, 1).Value2) - - ' Fall b/c: ganze Zeile in einer Zelle (mit ; oder Tab getrennt) - If Not String.IsNullOrWhiteSpace(rawLine) AndAlso - (rawLine.Contains(";") OrElse rawLine.Contains(ChrW(9))) Then - - Dim sep As Char = If(rawLine.Contains(";"), ";"c, ChrW(9)) - Dim parts As String() = rawLine.Split(sep) - - Dim dict As New Dictionary(Of String, String)(StringComparer.OrdinalIgnoreCase) - - For Each kvp In headerMap - Dim idx As Integer = kvp.Value - 1 ' Header-Position ist 1-basiert - dict(kvp.Key) = If(idx < parts.Length, parts(idx).Replace(ChrW(160), " "c).Trim(), "") - Next - - dataRows.Add(dict) - - ' Fall a: Werte stehen in einzelnen Zellen - Else - ' Überspringen, falls Zeile komplett leer - Dim rowEmpty As Boolean = True - For Each kvp In headerMap - Dim v As String = Convert.ToString(Blatt.Cells(row, kvp.Value).Value2) - If Not String.IsNullOrWhiteSpace(v) Then - rowEmpty = False - Exit For - End If - Next - If rowEmpty Then Continue For - - Dim dict As New Dictionary(Of String, String)(StringComparer.OrdinalIgnoreCase) - - For Each kvp In headerMap - Dim v As String = Convert.ToString(Blatt.Cells(row, kvp.Value).Value2) - dict(kvp.Key) = If(v Is Nothing, "", v.Replace(ChrW(160), " "c).Trim()) - Next - - dataRows.Add(dict) - End If - Next - - - - - - - - - - - 'Dim letzteZeile As Integer = Blatt.UsedRange.Rows.Count - - 'For row As Integer = startHeaderRow + 1 To letzteZeile - Dim countMissingFields As Integer = 0 - For Each d In dataRows - - If TYP = "Q" Then - - Dim Umsatz_ID As String = Convert.ToString(d("Umsatz-ID")) - Dim Datum As String = Convert.ToString(d("Datum")) - Dim IBAN As String = Convert.ToString(d("IBAN")) - Dim BIC As String = Convert.ToString(d("BIC")) - Dim Buchungstext As String = Convert.ToString(d("Buchungstext")) - Dim Währung As String = Convert.ToString(d("Währung")) - Dim Kontoauszug As String = Convert.ToString(d("Kontoauszug")) - Dim Betrag As Double = Convert.ToDouble(d("Betrag")) - Dim KundenNrCheck As String = "" - - If headerMap.ContainsKey("KDNR") Then - KundenNrCheck = Convert.ToString(d("KDNR")) - End If - - - If String.IsNullOrWhiteSpace(Umsatz_ID) Then - countMissingFields += 1 - Continue For - End If - - If IsNumeric(Umsatz_ID) AndAlso IsNumeric(Betrag) AndAlso Not String.IsNullOrWhiteSpace(Kontoauszug) Then - - - Dim R As DataRow = dt.NewRow - R("Umsatz-ID") = Umsatz_ID - R("Datum") = Datum - R("IBAN") = IBAN - R("BIC") = BIC - R("Buchungstext") = Buchungstext - R("Währung") = Währung - R("Betrag") = Betrag - R("Kontoauszug") = Kontoauszug - - Dim BuchungstextOnlyNr As String = System.Text.RegularExpressions.Regex.Replace(Buchungstext, "[^0-9]", "") - Dim KundeNr = CInt(sql.DLookup("bnk_KundenNr", "tblBankverbindungen", "bnk_iban like '%" & BuchungstextOnlyNr & "%' and isnull(bnk_archiv,0) = 0", "FMZOLL", "-1")) - - R("KdNr") = KundeNr - - If visibleKdNrCheck Then - - R("KdNrCheck") = KundenNrCheck - - If KundenNrCheck <> "" AndAlso IsNumeric(KundenNrCheck) Then - If CInt(KundenNrCheck) = KundeNr Then - R("KdNrValid") = True - Else - R("KdNrValid") = False - End If - End If - End If - - - If KundeNr = -1 Then - missingKdNr += 1 - End If - - 'Betrag laut folgendem Schema berechnen: - - Betrag = Betrag * -1 - Betrag = Betrag + 1 - Dim aufgerundet As Double = Math.Ceiling(Betrag / 5) * 5 - - R("Gebühr") = aufgerundet - - dt.Rows.Add(R) - - Else - countMissingFields += 1 - Continue For - - End If - - Else - - - Dim Umsatz_ID As String = Convert.ToString(d("Belegnr")) - Dim Datum As String = Convert.ToString(d("Belegdat")) - Dim Buchungstext As String = Convert.ToString(d("BuchText")) - Dim Währung As String = "EUR" - - Dim SollBetrag As String = Convert.ToString(d("Soll EUR")) - Dim HabenBetrag As String = Convert.ToString(d("Haben EUR")) - - Dim Betrag As Double = 0 - If SollBetrag <> "" AndAlso IsNumeric(SollBetrag) Then - Betrag = CDbl(SollBetrag) - ElseIf HabenBetrag <> "" AndAlso IsNumeric(HabenBetrag) Then - Betrag = CDbl(HabenBetrag) - End If - - Dim KundenNrCheck As String = "" - - If headerMap.ContainsKey("Gegenkto") Then - KundenNrCheck = Convert.ToString(d("Gegenkto")) - End If - - If String.IsNullOrWhiteSpace(Umsatz_ID) Then - Continue For - End If - - If IsNumeric(Betrag) AndAlso Not String.IsNullOrWhiteSpace(Buchungstext) AndAlso Not String.IsNullOrWhiteSpace(Datum) AndAlso IsDate(Datum) Then - - - Dim R As DataRow = dt.NewRow - R("Umsatz-ID") = Umsatz_ID - R("Datum") = Datum - R("Buchungstext") = Buchungstext - R("Währung") = Währung - R("Betrag") = Betrag - R("KdNr") = 0 - - If visibleKdNrCheck Then - - R("KdNrCheck") = KundenNrCheck - - If KundenNrCheck <> "" AndAlso IsNumeric(KundenNrCheck) Then - If CInt(KundenNrCheck) = R("KdNr") Then - R("KdNrValid") = True - Else - R("KdNrValid") = False - End If - End If - End If - - - If R("KdNr") = -1 Then - missingKdNr += 1 - End If - - 'Betrag laut folgendem Schema berechnen: - - If Betrag < 0 Then Betrag = Betrag * -1 - Betrag = Betrag + 1 - Dim aufgerundet As Double = Math.Ceiling(Betrag / 5) * 5 - - R("Gebühr") = aufgerundet - - dt.Rows.Add(R) - - Else - countMissingFields += 1 - Continue For - - End If - - - End If - - Next - - If dt.Rows.Count > 0 Then - Dim Warning As String = "" - If countMissingFields > 0 Then - If TYP = "Q" Then - Warning = countMissingFields & " Einträge mit fehlenden Datum/Kontoauszug/Umsatz_ID/Betrag" - Else - Warning = countMissingFields & " Einträge mit fehlenden Betrag/Buchungstext/Datum" - End If - - End If - Using frm As New frmAbrechnungHandling(dt, Nothing, "Import " & dt.Rows.Count & " Buchungsdaten " & cbxBankspesentyp.SelectedItem.Text & IIf(missingKdNr > 0, missingKdNr & " Kundenkonten konnten nicht gefunden werden!", ""), Warning) - - With frm - .btnPreisliste.Visible = False - .dgvHandling.RowHeadersVisible = False - .Button2.Text = "Importieren" - .cbxDivers.Visible = True - .cbxDivers.Text = "KundenNr aus Excel übernehmen" - - If visibleKdNrCheck Then - .cbxDivers.Checked = True - Else - .cbxDivers.Checked = False - .cbxDivers.Enabled = False - End If - - - - - End With - - frm.ShowDialog() - - If frm.DialogResult = DialogResult.OK Then - - - Dim counter = 0 - Dim dateTemp - For Each r As DataGridViewRow In frm.dgvHandling.SelectedRows - - Dim Datum = r.Cells("Datum").Value - - Dim KdNr = 0 - - If frm.cbxDivers.Checked AndAlso visibleKdNrCheck Then - If r.Cells("KdNrCheck").Value <> "" AndAlso IsNumeric(r.Cells("KdNrCheck").Value) Then KdNr = CInt(r.Cells("KdNrCheck").Value) - Else - KdNr = r.Cells("KdNr").Value + ' Trennzeichen erkennen: Semikolon oder Tab + Dim sep As Char = ";"c + If Not rawHeader.Contains(";") AndAlso rawHeader.Contains(ChrW(9)) Then + sep = ChrW(9) End If + If rawHeader.Contains(sep) Then + ' Gesamte Kopfzeile steht in einer Zelle + Dim headers As String() = rawHeader.Split(sep) - dateTemp = Datum - If KdNr > 0 Then + For i As Integer = 0 To headers.Length - 1 + Dim header As String = headers(i).Replace(ChrW(160), " "c).Trim().TrimEnd("."c).Trim() - Dim Bankspesen = New VERAG_PROG_ALLGEMEIN.cMDM_Bankspesen(KdNr, Datum, TYP) - - If Not Bankspesen.hasEntry Then - - - Bankspesen.IBAN = r.Cells("IBAN").Value - Bankspesen.BIC = r.Cells("BIC").Value - Bankspesen.umsatzID = r.Cells("Umsatz-ID").Value - Bankspesen.buchungstext = r.Cells("Buchungstext").Value - Bankspesen.waehrung = r.Cells("Währung").Value - Bankspesen.betrag = r.Cells("Betrag").Value - Bankspesen.gebuehr = r.Cells("Gebühr").Value - Bankspesen.kontoauszug = r.Cells("Kontoauszug").Value - - If Bankspesen.SAVE() Then - counter += 1 + If header <> "" AndAlso Not headerMap.ContainsKey(header) Then + headerMap.Add(header, i + 1) End If + Next + Else + Dim header As String = rawHeader.Replace(ChrW(160), " "c).Trim().TrimEnd("."c).Trim() - - txtBankspesen.Text = counter & " / " & frm.dgvHandling.SelectedRows.Count - + If header <> "" AndAlso Not headerMap.ContainsKey(header) Then + headerMap.Add(header, countHeader) End If - - End If + countHeader += 1 + Next + For Each h As String In requiredHeaders + If Not headerMap.ContainsKey(h) Then + MsgBox("Pflichtspalte nicht gefunden: " & h & vbNewLine & "Spaltenkopf muss sich an der " & startHeaderRow & " Zeile befinden!") + Exit Sub + End If Next - Dim MDMEinarb As New cMDMEinarbeitung("BANK", Now()) - MDMEinarb.invoicedate = CDate(dateTemp) - MDMEinarb.import_date = Now() - MDMEinarb.importfilename = fd.FileName - MDMEinarb.ds_count += counter - MDMEinarb.ds_total += frm.dgvHandling.SelectedRows.Count - MDMEinarb.completed = 1 - MDMEinarb.completed_date = Now() - MDMEinarb.SAVE() + If headerMap.ContainsKey("KDNR") OrElse headerMap.ContainsKey("Gegenkto") Then + visibleKdNrCheck = True + End If - importiert = True - MsgBox(counter & " von " & dt.Rows.Count & " erfolgreich importiert!") + Else + + + For Each rawLine As String In currentRow + + ' Fall b/c: ganze Zeile in einer Zelle (mit ; oder Tab getrennt) + If Not String.IsNullOrWhiteSpace(rawLine) AndAlso (rawLine.Contains(";") OrElse rawLine.Contains(ChrW(9))) Then + + Dim sep As Char = If(rawLine.Contains(";"), ";"c, ChrW(9)) + Dim parts As String() = rawLine.Split(sep) + + Dim dict As New Dictionary(Of String, String)(StringComparer.OrdinalIgnoreCase) + + For Each kvp In headerMap + Dim idx As Integer = kvp.Value - 1 ' Header-Position ist 1-basiert + dict(kvp.Key) = If(idx < parts.Length, parts(idx).Replace(ChrW(160), " "c).Trim(), "") + Next + + dataRows.Add(dict) + + ' Fall a: Werte stehen in einzelnen Zellen + Else + ' Überspringen, falls Zeile komplett leer + Dim rowEmpty As Boolean = True + For Each kvp In headerMap + Dim v As String = Convert.ToString(rawLine) + If Not String.IsNullOrWhiteSpace(v) Then + rowEmpty = False + Exit For + End If + Next + If rowEmpty Then Continue For + + Dim dict As New Dictionary(Of String, String)(StringComparer.OrdinalIgnoreCase) + + For Each kvp In headerMap + Dim v As String = Convert.ToString(rawLine) + dict(kvp.Key) = If(v Is Nothing, "", v.Replace(ChrW(160), " "c).Trim()) + Next + + dataRows.Add(dict) + End If + + + Next + + End If + counterFile += 1 + End While + + + + + + 'Dim letzteZeile As Integer = Blatt.UsedRange.Rows.Count + + 'For row As Integer = startHeaderRow + 1 To letzteZeile + Dim countMissingFields As Integer = 0 + For Each d In dataRows + + If TYP = "Q" Then + + Dim Umsatz_ID As String = Convert.ToString(d("Umsatz-ID")) + Dim Datum As String = Convert.ToString(d("Datum")) + Dim IBAN As String = Convert.ToString(d("IBAN")) + Dim BIC As String = Convert.ToString(d("BIC")) + Dim Buchungstext As String = Convert.ToString(d("Buchungstext")) + Dim Währung As String = Convert.ToString(d("Währung")) + Dim Kontoauszug As String = Convert.ToString(d("Kontoauszug")) + Dim Betrag As Double = Convert.ToDouble(d("Betrag")) + Dim KundenNrCheck As String = "" + + If headerMap.ContainsKey("KDNR") Then + KundenNrCheck = Convert.ToString(d("KDNR")) + End If + + + If String.IsNullOrWhiteSpace(Umsatz_ID) Then + countMissingFields += 1 + Continue For + End If + + If IsNumeric(Umsatz_ID) AndAlso IsNumeric(Betrag) Then + + + Dim R As DataRow = dt.NewRow + R("Umsatz-ID") = Umsatz_ID + R("Datum") = Datum + R("IBAN") = IBAN + R("BIC") = BIC + R("Buchungstext") = Buchungstext + R("Währung") = Währung + R("Betrag") = Betrag + R("Kontoauszug") = Kontoauszug + + Dim BuchungstextOnlyNr As String = System.Text.RegularExpressions.Regex.Replace(Buchungstext, "[^0-9]", "") + Dim KundeNr = CInt(sql.DLookup("bnk_KundenNr", "tblBankverbindungen", "bnk_iban like '%" & BuchungstextOnlyNr & "%' and isnull(bnk_archiv,0) = 0", "FMZOLL", "-1")) + + R("KdNr") = KundeNr + + If visibleKdNrCheck Then + + R("KdNrCheck") = KundenNrCheck + + If KundenNrCheck <> "" AndAlso IsNumeric(KundenNrCheck) Then + If CInt(KundenNrCheck) = KundeNr Then + R("KdNrValid") = True + Else + R("KdNrValid") = False + End If + End If + End If + + + If KundeNr = -1 Then + missingKdNr += 1 + End If + + 'Betrag laut folgendem Schema berechnen: + + Betrag = Betrag * -1 + Betrag = Betrag + 1 + Dim aufgerundet As Double = Math.Ceiling(Betrag / 5) * 5 + + R("Gebühr") = aufgerundet + + dt.Rows.Add(R) + + Else + countMissingFields += 1 + Continue For + + End If + + Else + + + Dim Umsatz_ID As String = Convert.ToString(d("Belegnr")) + Dim Datum As String = Convert.ToString(d("Belegdat")) + Dim Buchungstext As String = Convert.ToString(d("BuchText")) + Dim Währung As String = "EUR" + + Dim SollBetrag As String = Convert.ToString(d("Soll EUR")) + Dim HabenBetrag As String = Convert.ToString(d("Haben EUR")) + + Dim Betrag As Double = 0 + If SollBetrag <> "" AndAlso IsNumeric(SollBetrag) Then + Betrag = CDbl(SollBetrag) + ElseIf HabenBetrag <> "" AndAlso IsNumeric(HabenBetrag) Then + Betrag = CDbl(HabenBetrag) + End If + + Dim KundenNrCheck As String = "" + + If headerMap.ContainsKey("Gegenkto") Then + KundenNrCheck = Convert.ToString(d("Gegenkto")) + End If + + If String.IsNullOrWhiteSpace(Umsatz_ID) Then + Continue For + End If + + If IsNumeric(Betrag) AndAlso Not String.IsNullOrWhiteSpace(Buchungstext) AndAlso Not String.IsNullOrWhiteSpace(Datum) AndAlso IsDate(Datum) Then + + + Dim R As DataRow = dt.NewRow + R("Umsatz-ID") = Umsatz_ID + R("Datum") = Datum + R("Buchungstext") = Buchungstext + R("Währung") = Währung + R("Betrag") = Betrag + R("KdNr") = 0 + + If visibleKdNrCheck Then + + R("KdNrCheck") = KundenNrCheck + + If KundenNrCheck <> "" AndAlso IsNumeric(KundenNrCheck) Then + If CInt(KundenNrCheck) = R("KdNr") Then + R("KdNrValid") = True + Else + R("KdNrValid") = False + End If + End If + End If + + + If R("KdNr") = -1 Then + missingKdNr += 1 + End If + + 'Betrag laut folgendem Schema berechnen: + + If Betrag < 0 Then Betrag = Betrag * -1 + Betrag = Betrag + 1 + Dim aufgerundet As Double = Math.Ceiling(Betrag / 5) * 5 + + R("Gebühr") = aufgerundet + + dt.Rows.Add(R) + + Else + countMissingFields += 1 + Continue For + + End If - pb_bankspesen.Value = 100 - txtBankspesen.Text = frm.dgvHandling.SelectedRows.Count & " / " & frm.dgvHandling.SelectedRows.Count - lblBankspesen.Text = "100.00 %" End If + Next - End Using + If dt.Rows.Count > 0 Then + Dim Warning As String = "" + If countMissingFields > 0 Then + If TYP = "Q" Then + Warning = countMissingFields & " Einträge mit fehlenden Datum/Umsatz_ID/Betrag" + Else + Warning = countMissingFields & " Einträge mit fehlenden Betrag/Buchungstext/Datum" + End If + + End If + + Using frm As New frmAbrechnungHandling(dt, Nothing, "Import " & dt.Rows.Count & " Buchungsdaten " & cbxBankspesentyp.SelectedItem.Text & IIf(missingKdNr > 0, missingKdNr & " Kundenkonten konnten nicht gefunden werden!", ""), Warning) + + With frm + .btnPreisliste.Visible = False + .dgvHandling.RowHeadersVisible = False + .Button2.Text = "Importieren" + .cbxDivers.Visible = True + .cbxDivers.Text = "KundenNr aus Excel übernehmen" + + If visibleKdNrCheck Then + .cbxDivers.Checked = True + Else + .cbxDivers.Checked = False + .cbxDivers.Enabled = False + End If - Else + End With + + frm.ShowDialog() + + If frm.DialogResult = DialogResult.OK Then + + + Dim counter = 0 + Dim dateTemp + For Each r As DataGridViewRow In frm.dgvHandling.SelectedRows + + Dim Datum = r.Cells("Datum").Value + + Dim KdNr = 0 + + If frm.cbxDivers.Checked AndAlso visibleKdNrCheck Then + If r.Cells("KdNrCheck").Value <> "" AndAlso IsNumeric(r.Cells("KdNrCheck").Value) Then KdNr = CInt(r.Cells("KdNrCheck").Value) + Else + KdNr = r.Cells("KdNr").Value + End If + + + dateTemp = Datum + If KdNr > 0 Then + + Dim Bankspesen = New VERAG_PROG_ALLGEMEIN.cMDM_Bankspesen(KdNr, Datum, TYP) + + If Not Bankspesen.hasEntry Then + + + Bankspesen.IBAN = r.Cells("IBAN").Value + Bankspesen.BIC = r.Cells("BIC").Value + Bankspesen.umsatzID = r.Cells("Umsatz-ID").Value + Bankspesen.buchungstext = r.Cells("Buchungstext").Value + Bankspesen.waehrung = r.Cells("Währung").Value + Bankspesen.betrag = r.Cells("Betrag").Value + Bankspesen.gebuehr = r.Cells("Gebühr").Value + Bankspesen.kontoauszug = r.Cells("Kontoauszug").Value + + If Bankspesen.SAVE() Then + counter += 1 + End If + + + txtBankspesen.Text = counter & " / " & frm.dgvHandling.SelectedRows.Count + + End If + + + End If + + Next + + + Dim MDMEinarb As New cMDMEinarbeitung("BANK", Now()) + MDMEinarb.invoicedate = CDate(dateTemp) + MDMEinarb.import_date = Now() + MDMEinarb.importfilename = fd.FileName + MDMEinarb.ds_count += counter + MDMEinarb.ds_total += frm.dgvHandling.SelectedRows.Count + MDMEinarb.completed = 1 + MDMEinarb.completed_date = Now() + MDMEinarb.SAVE() + + + importiert = True + MsgBox(counter & " von " & dt.Rows.Count & " erfolgreich importiert!") + + pb_bankspesen.Value = 100 + txtBankspesen.Text = frm.dgvHandling.SelectedRows.Count & " / " & frm.dgvHandling.SelectedRows.Count + lblBankspesen.Text = "100.00 %" + + End If + + + End Using + + + + + Else MsgBox("keine zu importierende Daten vorhanden!") - Exit Sub - - End If + Exit Sub + End If + End Using Finally - If Datei IsNot Nothing Then - Datei.Close(False) - End If - - If exclApp IsNot Nothing Then - exclApp.Quit() - End If - - If Blatt IsNot Nothing Then - Runtime.InteropServices.Marshal.ReleaseComObject(Blatt) - End If - - If Datei IsNot Nothing Then - Runtime.InteropServices.Marshal.ReleaseComObject(Datei) - End If - - If exclApp IsNot Nothing Then - Runtime.InteropServices.Marshal.ReleaseComObject(exclApp) - End If - - Blatt = Nothing - Datei = Nothing - exclApp = Nothing - - GC.Collect() - GC.WaitForPendingFinalizers() If importiert Then diff --git a/SDL/kunden/usrcntlKundeBearbeitenFull.vb b/SDL/kunden/usrcntlKundeBearbeitenFull.vb index e73bf1c1..7c19cd54 100644 --- a/SDL/kunden/usrcntlKundeBearbeitenFull.vb +++ b/SDL/kunden/usrcntlKundeBearbeitenFull.vb @@ -931,6 +931,10 @@ Public Class usrcntlKundeBearbeitenFull txtERROR.Text = "Grund für Abfertigungsverbot angeben!" : Exit Sub End If + If isVerag360 AndAlso (KUNDE_ERW.kde_BezFIBU Is Nothing OrElse KUNDE_ERW.kde_BezFIBU = "") Then + txtERROR.Text = "FIBU-Kürzel angeben!" : Exit Sub + End If + If ADRESSE.SAVE() Then If KUNDE.SAVE() Then diff --git a/SDL/mdm/frmMDMDatenverarbetiung.vb b/SDL/mdm/frmMDMDatenverarbetiung.vb index 10827efe..363dc930 100644 --- a/SDL/mdm/frmMDMDatenverarbetiung.vb +++ b/SDL/mdm/frmMDMDatenverarbetiung.vb @@ -1055,6 +1055,8 @@ Public Class frmMDMDatenverarbetiung txtPruefsummeBrutto.Text = CDbl(sumBto).ToString("C2") .ClearSelection() + setLabelTTR("PLOSE") + End With End Sub @@ -1108,6 +1110,8 @@ Public Class frmMDMDatenverarbetiung txtPruefsummeBrutto.Text = CDbl(sumBto).ToString("C2") .ClearSelection() + setLabelTTR("UTA") + End With End Sub @@ -1151,11 +1155,7 @@ Public Class frmMDMDatenverarbetiung txtPruefsummeBrutto.Text = CDbl(sumGes).ToString("C2") txtTTRSum.Text = CDbl(sumFee).ToString("C2") - lblTTRSum.Visible = True - txtTTRSum.Visible = True - txtTTRSum._WaehrungZeichen = True - - lblTTRSum.Text = "Tr-Kosten" + setLabelTTR("MSE") .ClearSelection() @@ -1193,9 +1193,7 @@ Public Class frmMDMDatenverarbetiung txtPruefsummeNetto.Text = CDbl(sumTr).ToString("C2") txtPruefsummeBrutto.Text = CDbl(sumGes).ToString("C2") - lblTTRSum.Visible = False - txtTTRSum.Visible = True - txtTTRSum._WaehrungZeichen = True + setLabelTTR("BANK") .ClearSelection() @@ -1303,12 +1301,8 @@ Public Class frmMDMDatenverarbetiung txtPruefsummeBrutto.Text = CDbl(sumGes).ToString("C2") txtTTRSum.Text = CDbl(sumTr).ToString("C2") - lblTTRSum.Visible = True - txtTTRSum.Visible = True - txtTTRSum._WaehrungZeichen = False - - lblTTRSum.Text = "Liter" + setLabelTTR("IDS") .ClearSelection() @@ -1361,6 +1355,8 @@ Public Class frmMDMDatenverarbetiung txtPruefsummeNetto.Text = CDbl(sumNto).ToString("C2") txtPruefsummeBrutto.Text = CDbl(sumBto).ToString("C2") + setLabelTTR("ASFINAG") + .ClearSelection() @@ -5487,11 +5483,6 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land Dim pruefSumTTR = SQL.getValueTxtBySql("select sum(checksumAmounntInclVAT) from [ASFINAG].[dbo].[TTRTrailer] where PKHistory = 0 and [TTRTrailer].PKFileName in (select distinct([TTRBody].PKFileName) as Test from [ASFINAG].[dbo].[TTRBody] where (TTRBody.PKHistory = 0) And (TTRBody.PKFileName Like N'" & checkifTestfiles() & ".%') AND TTRBody.abrechnungsdatum = '" & f.Datum.ToShortDateString & "')", "ASFINAG") If pruefSumTTR IsNot Nothing AndAlso IsNumeric(pruefSumTTR) Then txtTTRSum.Text = CDbl(pruefSumTTR).ToString("C2") - lblTTRSum.Visible = True - lblTTRSum.Text = "Prüfsumme TTR:" - txtTTRSum._WaehrungZeichen = True - Else - lblTTRSum.Visible = False End If @@ -5897,6 +5888,48 @@ RabattBerechnen: End If Return checkDate + End Function + + Private Function setLabelTTR(Lieferant As String) + txtTTRSum.Visible = False + lblTTRSum.Visible = False + txtTTRSum._WaehrungZeichen = False + + + Select Case Lieferant + Case "IDS" + lblTTRSum.Visible = True + txtTTRSum.Visible = True + lblTTRSum.Text = "Liter" + + Case "ASFINAG" + txtTTRSum.Visible = True + txtTTRSum._WaehrungZeichen = True + lblTTRSum.Text = "Prüfsumme TTR:" + lblTTRSum.Visible = True + + Case "MSE" + + lblTTRSum.Visible = True + txtTTRSum.Visible = True + txtTTRSum._WaehrungZeichen = True + lblTTRSum.Text = "Tr-Kosten" + + + Case "BANK" + + txtTTRSum.Visible = True + txtTTRSum._WaehrungZeichen = True + lblTTRSum.Visible = True + lblTTRSum.Text = "Gebühr" + + End Select + + + + + + End Function Private Function checkFixeTaxeImOffert(Lieferant As String, dt As DataTable) As Boolean diff --git a/SDL/seriendruck/usrCntlFakturierung.vb b/SDL/seriendruck/usrCntlFakturierung.vb index 0fbdb4d2..6e58104e 100644 --- a/SDL/seriendruck/usrCntlFakturierung.vb +++ b/SDL/seriendruck/usrCntlFakturierung.vb @@ -1,7 +1,6 @@ Imports System.Globalization Imports System.IO Imports System.Web.UI.WebControls.Expressions -Imports java.util Imports VERAG_PROG_ALLGEMEIN Public Class usrcntlFakturierung @@ -623,38 +622,59 @@ Public Class usrcntlFakturierung Dim intZlr As Integer = 0 + Dim betrag As Decimal = 0 + + If Not IsDBNull(r("BetragExclusivFT")) Then + betrag = Math.Abs(CDec(r("BetragExclusivFT"))) + End If + + Dim anzahlFT As Integer = CInt(r("AnzahlFT")) + + If cbxFixeTaxe.Checked AndAlso betrag < 500 Then + ' Eine fixe Taxe soll verbleiben + intZlr = Math.Max(0, anzahlFT - 1) + Else + ' Alle fixen Taxen löschen + intZlr = anzahlFT + End If + + + '-----------------------------------------OLD! + '-----------------------------------------OLD! + '-----------------------------------------OLD! + ' Bei BetragExclusivFT kleiner als 500€ wird 1x fixe Taxe verrechnet, bei grösser/gleich 500€ oder cbxFixeTaxe nicht gesetzt 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 Not IsDBNull(r("BetragExclusivFT")) AndAlso r("BetragExclusivFT") > 0 Then - If r("BetragExclusivFT") < 500 AndAlso cbxFixeTaxe.Checked Then - intZlr = r("AnzahlFT") - 1 - Else - intZlr = r("AnzahlFT") - End If + ' If r("BetragExclusivFT") < 500 AndAlso cbxFixeTaxe.Checked Then + ' intZlr = r("AnzahlFT") - 1 + ' Else + ' intZlr = r("AnzahlFT") + ' End If - Else + 'Else - If cbxFixeTaxe.Checked Then + ' If cbxFixeTaxe.Checked Then - If (0 - r("BetragExclusivFT")) < 500 Then - intZlr = r("AnzahlFT") - 1 - Else - intZlr = r("AnzahlFT") - 1 - End If + ' If (0 - r("BetragExclusivFT")) < 500 Then + ' intZlr = r("AnzahlFT") - 1 + ' Else + ' intZlr = r("AnzahlFT") - 1 + ' End If - Else + ' Else - intZlr = r("AnzahlFT") + ' intZlr = r("AnzahlFT") - End If + ' End If - End If + 'End If - If intZlr > 0 Then + If intZlr > 0 Then Dim steuersatz As Single = r("Steuersatz %") 'Single same as real-datatype in SQL (wichtig, sonst findet er den wert nicht!!!) @@ -693,8 +713,6 @@ Public Class usrcntlFakturierung 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 diff --git a/SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb b/SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb index f8d2fe0f..d601c82f 100644 --- a/SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb +++ b/SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb @@ -238,6 +238,7 @@ Partial Class usrCntlZOLLAuswertungen Me.UsrCntlAuswertungenFiskal_IntrastatMeldung1 = New SDL.usrCntlAuswertungenFiskal_IntrastatMeldung() Me.UsrCntlAuswertungenFiskalvertretung_42001 = New SDL.usrCntlAuswertungenFiskalvertretung_4200() Me.TabPage4 = New System.Windows.Forms.TabPage() + Me.PictureBox14 = New System.Windows.Forms.PictureBox() Me.UsrCntlAuswertungenAufschub_AbgabenKontrolleTRIER1 = New SDL.usrCntlAuswertungenAufschub_AbgabenKontrolleTRIER() Me.UsrCntlAuswertungenAufschub_Abgabenliste1 = New SDL.usrCntlAuswertungenAufschub_Abgabenliste() Me.TabPage5 = New System.Windows.Forms.TabPage() @@ -287,7 +288,8 @@ Partial Class usrCntlZOLLAuswertungen Me.Label104 = New System.Windows.Forms.Label() Me.Label97 = New System.Windows.Forms.Label() Me.pnl = New System.Windows.Forms.Panel() - Me.PictureBox14 = New System.Windows.Forms.PictureBox() + Me.cbxAndereTarifnummern = New System.Windows.Forms.CheckBox() + Me.TextBox1 = New System.Windows.Forms.TextBox() Me.GroupBox1.SuspendLayout() Me.grpDurmaz.SuspendLayout() CType(Me.picDurmaz, System.ComponentModel.ISupportInitialize).BeginInit() @@ -327,6 +329,7 @@ Partial Class usrCntlZOLLAuswertungen Me.TabPage2.SuspendLayout() Me.TabPage3.SuspendLayout() Me.TabPage4.SuspendLayout() + CType(Me.PictureBox14, System.ComponentModel.ISupportInitialize).BeginInit() Me.TabPage5.SuspendLayout() Me.GroupBox9.SuspendLayout() CType(Me.PictureBox8, System.ComponentModel.ISupportInitialize).BeginInit() @@ -334,7 +337,6 @@ Partial Class usrCntlZOLLAuswertungen Me.GroupBox6.SuspendLayout() Me.GroupBox2.SuspendLayout() Me.pnl.SuspendLayout() - CType(Me.PictureBox14, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'Label3 @@ -1334,7 +1336,7 @@ Partial Class usrCntlZOLLAuswertungen Me.tbcntr.Location = New System.Drawing.Point(0, 57) Me.tbcntr.Name = "tbcntr" Me.tbcntr.SelectedIndex = 0 - Me.tbcntr.Size = New System.Drawing.Size(1007, 1829) + Me.tbcntr.Size = New System.Drawing.Size(990, 1829) Me.tbcntr.TabIndex = 22 ' 'TabPage1 @@ -1377,7 +1379,7 @@ Partial Class usrCntlZOLLAuswertungen Me.TabPage1.Location = New System.Drawing.Point(4, 22) Me.TabPage1.Name = "TabPage1" Me.TabPage1.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage1.Size = New System.Drawing.Size(999, 1803) + Me.TabPage1.Size = New System.Drawing.Size(982, 1803) Me.TabPage1.TabIndex = 0 Me.TabPage1.Text = "Bürgschaften" Me.TabPage1.UseVisualStyleBackColor = True @@ -2574,7 +2576,7 @@ Partial Class usrCntlZOLLAuswertungen Me.TabPage2.Location = New System.Drawing.Point(4, 22) Me.TabPage2.Name = "TabPage2" Me.TabPage2.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage2.Size = New System.Drawing.Size(1016, 1803) + Me.TabPage2.Size = New System.Drawing.Size(999, 1803) Me.TabPage2.TabIndex = 1 Me.TabPage2.Text = "Kunden" Me.TabPage2.UseVisualStyleBackColor = True @@ -2604,7 +2606,7 @@ Partial Class usrCntlZOLLAuswertungen Me.TabPage3.Location = New System.Drawing.Point(4, 22) Me.TabPage3.Name = "TabPage3" Me.TabPage3.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage3.Size = New System.Drawing.Size(1016, 1803) + Me.TabPage3.Size = New System.Drawing.Size(999, 1803) Me.TabPage3.TabIndex = 2 Me.TabPage3.Text = "Fiskalvertretung / EV-Veranlagung" Me.TabPage3.UseVisualStyleBackColor = True @@ -2645,6 +2647,16 @@ Partial Class usrCntlZOLLAuswertungen Me.TabPage4.Text = "Aufschubdaten" Me.TabPage4.UseVisualStyleBackColor = True ' + 'PictureBox14 + ' + Me.PictureBox14.BackgroundImage = Global.SDL.My.Resources.Resources.fragezeichen + Me.PictureBox14.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.PictureBox14.Location = New System.Drawing.Point(693, 3) + Me.PictureBox14.Name = "PictureBox14" + Me.PictureBox14.Size = New System.Drawing.Size(18, 19) + Me.PictureBox14.TabIndex = 131 + Me.PictureBox14.TabStop = False + ' 'UsrCntlAuswertungenAufschub_AbgabenKontrolleTRIER1 ' Me.UsrCntlAuswertungenAufschub_AbgabenKontrolleTRIER1.BackColor = System.Drawing.Color.White @@ -2669,7 +2681,7 @@ Partial Class usrCntlZOLLAuswertungen Me.TabPage5.Location = New System.Drawing.Point(4, 22) Me.TabPage5.Name = "TabPage5" Me.TabPage5.Padding = New System.Windows.Forms.Padding(3) - Me.TabPage5.Size = New System.Drawing.Size(1016, 1803) + Me.TabPage5.Size = New System.Drawing.Size(999, 1803) Me.TabPage5.TabIndex = 4 Me.TabPage5.Text = "UNISPED" Me.TabPage5.UseVisualStyleBackColor = True @@ -2879,13 +2891,15 @@ Partial Class usrCntlZOLLAuswertungen Me.TabPage6.Controls.Add(Me.Label97) Me.TabPage6.Location = New System.Drawing.Point(4, 22) Me.TabPage6.Name = "TabPage6" - Me.TabPage6.Size = New System.Drawing.Size(999, 1803) + Me.TabPage6.Size = New System.Drawing.Size(982, 1803) Me.TabPage6.TabIndex = 5 Me.TabPage6.Text = "CBAM/Stahlverordnung" Me.TabPage6.UseVisualStyleBackColor = True ' 'GroupBox6 ' + Me.GroupBox6.Controls.Add(Me.TextBox1) + Me.GroupBox6.Controls.Add(Me.cbxAndereTarifnummern) Me.GroupBox6.Controls.Add(Me.cbxStahlverordnung_SNDdet) Me.GroupBox6.Controls.Add(Me.Label105) Me.GroupBox6.Controls.Add(Me.Button26) @@ -3168,18 +3182,25 @@ Partial Class usrCntlZOLLAuswertungen Me.pnl.Dock = System.Windows.Forms.DockStyle.Top Me.pnl.Location = New System.Drawing.Point(0, 0) Me.pnl.Name = "pnl" - Me.pnl.Size = New System.Drawing.Size(1007, 57) + Me.pnl.Size = New System.Drawing.Size(990, 57) Me.pnl.TabIndex = 23 ' - 'PictureBox14 + 'cbxAndereTarifnummern ' - Me.PictureBox14.BackgroundImage = Global.SDL.My.Resources.Resources.fragezeichen - Me.PictureBox14.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom - Me.PictureBox14.Location = New System.Drawing.Point(693, 3) - Me.PictureBox14.Name = "PictureBox14" - Me.PictureBox14.Size = New System.Drawing.Size(18, 19) - Me.PictureBox14.TabIndex = 131 - Me.PictureBox14.TabStop = False + Me.cbxAndereTarifnummern.AutoSize = True + Me.cbxAndereTarifnummern.Location = New System.Drawing.Point(165, 81) + Me.cbxAndereTarifnummern.Name = "cbxAndereTarifnummern" + Me.cbxAndereTarifnummern.Size = New System.Drawing.Size(209, 17) + Me.cbxAndereTarifnummern.TabIndex = 43 + Me.cbxAndereTarifnummern.Text = "andere Tarifnummern* komma-getrennt" + Me.cbxAndereTarifnummern.UseVisualStyleBackColor = True + ' + 'TextBox1 + ' + Me.TextBox1.Location = New System.Drawing.Point(165, 103) + Me.TextBox1.Name = "TextBox1" + Me.TextBox1.Size = New System.Drawing.Size(431, 20) + Me.TextBox1.TabIndex = 44 ' 'usrCntlZOLLAuswertungen ' @@ -3190,7 +3211,7 @@ Partial Class usrCntlZOLLAuswertungen Me.Controls.Add(Me.tbcntr) Me.Controls.Add(Me.pnl) Me.Name = "usrCntlZOLLAuswertungen" - Me.Size = New System.Drawing.Size(1007, 1174) + Me.Size = New System.Drawing.Size(990, 1174) Me.GroupBox1.ResumeLayout(False) Me.GroupBox1.PerformLayout() Me.grpDurmaz.ResumeLayout(False) @@ -3244,6 +3265,7 @@ Partial Class usrCntlZOLLAuswertungen Me.TabPage2.ResumeLayout(False) Me.TabPage3.ResumeLayout(False) Me.TabPage4.ResumeLayout(False) + CType(Me.PictureBox14, System.ComponentModel.ISupportInitialize).EndInit() Me.TabPage5.ResumeLayout(False) Me.TabPage5.PerformLayout() Me.GroupBox9.ResumeLayout(False) @@ -3257,7 +3279,6 @@ Partial Class usrCntlZOLLAuswertungen Me.GroupBox2.PerformLayout() Me.pnl.ResumeLayout(False) Me.pnl.PerformLayout() - CType(Me.PictureBox14, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) End Sub @@ -3527,4 +3548,6 @@ Partial Class usrCntlZOLLAuswertungen Friend WithEvents GroupBox2 As GroupBox Friend WithEvents cbxStahlverordnung_SNDdet As CheckBox Friend WithEvents PictureBox14 As PictureBox + Friend WithEvents TextBox1 As TextBox + Friend WithEvents cbxAndereTarifnummern As CheckBox End Class diff --git a/SDL/zoll/usrCntlZOLLAuswertungen.vb b/SDL/zoll/usrCntlZOLLAuswertungen.vb index f66c5cd3..5e6a951f 100644 --- a/SDL/zoll/usrCntlZOLLAuswertungen.vb +++ b/SDL/zoll/usrCntlZOLLAuswertungen.vb @@ -1067,10 +1067,11 @@ Public Class usrCntlZOLLAuswertungen End Sub - Private Function getDAkosySQL(von As Date, bis As Date, mitDetaildatensaetze As Boolean, type As String) + Private Function getDAkosySQL(von As Date, bis As Date, mitDetaildatensaetze As Boolean, type As String, Optional andereTarifnummernList As List(Of String) = Nothing) Dim sqlWhere = "" + Select Case type Case "CBAM" sqlWhere = " /* Eisen & Stahl */ @@ -1101,7 +1102,21 @@ Public Class usrCntlZOLLAuswertungen Or ezaWP_WarennummerEZT Like '280410%'" Case Else - sqlWhere = "ezaWP_WarennummerEZT LIKE '72081000%' OR ezaWP_WarennummerEZT LIKE '72082500%' OR + + If andereTarifnummernList IsNot Nothing AndAlso andereTarifnummernList.Count > 0 Then + + For Each row In andereTarifnummernList + sqlWhere &= "ezaWP_WarennummerEZT LIKE '" & row & "%' OR " + Next + + sqlWhere = sqlWhere.ToString.Substring(0, sqlWhere.Length - 3) + + Else + + + + + sqlWhere = "ezaWP_WarennummerEZT LIKE '72081000%' OR ezaWP_WarennummerEZT LIKE '72082500%' OR ezaWP_WarennummerEZT LIKE '72082600%' OR ezaWP_WarennummerEZT LIKE '72082700%' OR ezaWP_WarennummerEZT LIKE '72083600%' OR ezaWP_WarennummerEZT LIKE '72083700%' OR ezaWP_WarennummerEZT LIKE '72083800%' OR ezaWP_WarennummerEZT LIKE '72083900%' OR @@ -1141,6 +1156,8 @@ Public Class usrCntlZOLLAuswertungen OR ezaWP_WarennummerEZT LIKE '73042400%' OR ezaWP_WarennummerEZT LIKE '73042910%' OR ezaWP_WarennummerEZT LIKE '73042930%' OR ezaWP_WarennummerEZT LIKE '73042990%' OR ezaWP_WarennummerEZT LIKE '73043120%' OR ezaWP_WarennummerEZT LIKE '73043180%' OR ezaWP_WarennummerEZT LIKE '73043950%' OR ezaWP_WarennummerEZT LIKE '73043982%' OR ezaWP_WarennummerEZT LIKE '73043983%' OR ezaWP_WarennummerEZT LIKE '73043988%' OR ezaWP_WarennummerEZT LIKE '73044100%' OR ezaWP_WarennummerEZT LIKE '73044983%' OR ezaWP_WarennummerEZT LIKE '73044985%' OR ezaWP_WarennummerEZT LIKE '73045181%' OR ezaWP_WarennummerEZT LIKE '73045189%' OR ezaWP_WarennummerEZT LIKE '73045930%' OR ezaWP_WarennummerEZT LIKE '73045982%' OR ezaWP_WarennummerEZT LIKE '73045983%' OR ezaWP_WarennummerEZT LIKE '73045989%' OR ezaWP_WarennummerEZT LIKE '73049000%' OR ezaWP_WarennummerEZT LIKE '73051100%' OR ezaWP_WarennummerEZT LIKE '73051200%' OR ezaWP_WarennummerEZT LIKE '73051900%' OR ezaWP_WarennummerEZT LIKE '73052000%' OR ezaWP_WarennummerEZT LIKE '73053100%' OR ezaWP_WarennummerEZT LIKE '73053900%' OR ezaWP_WarennummerEZT LIKE '73059000%' OR ezaWP_WarennummerEZT LIKE '73061100%' OR ezaWP_WarennummerEZT LIKE '73061900%' OR ezaWP_WarennummerEZT LIKE '73062100%' OR ezaWP_WarennummerEZT LIKE '73062900%' OR ezaWP_WarennummerEZT LIKE '73063012%' OR ezaWP_WarennummerEZT LIKE '73063018%' OR ezaWP_WarennummerEZT LIKE '73063041%' OR ezaWP_WarennummerEZT LIKE '73063049%' OR ezaWP_WarennummerEZT LIKE '73063072%' OR ezaWP_WarennummerEZT LIKE '73063077%' OR ezaWP_WarennummerEZT LIKE '73063080%' OR ezaWP_WarennummerEZT LIKE '73064020%' OR ezaWP_WarennummerEZT LIKE '73064080%' OR ezaWP_WarennummerEZT LIKE '73065021%' OR ezaWP_WarennummerEZT LIKE '73065029%' OR ezaWP_WarennummerEZT LIKE '73065080%' OR ezaWP_WarennummerEZT LIKE '73066110%' OR ezaWP_WarennummerEZT LIKE '73066192%' OR ezaWP_WarennummerEZT LIKE '73066199%' OR ezaWP_WarennummerEZT LIKE '73066910%' OR ezaWP_WarennummerEZT LIKE '73066990%' OR ezaWP_WarennummerEZT LIKE '73069000%' " + End If + End Select @@ -1177,7 +1194,7 @@ Public Class usrCntlZOLLAuswertungen End Function - Private Function getDHFSQL(von As Date, bis As Date, mitDetaildatensaetze As Boolean, type As String) + Private Function getDHFSQL(von As Date, bis As Date, mitDetaildatensaetze As Boolean, type As String, Optional andereTarifnummernList As List(Of String) = Nothing) @@ -1200,7 +1217,18 @@ Public Class usrCntlZOLLAuswertungen OR ComCd like '280410%'" Case Else - sqlWhere = "ComCd LIKE '72081000%' OR ComCd LIKE '72082500%' OR + + If andereTarifnummernList IsNot Nothing AndAlso andereTarifnummernList.Count > 0 Then + + For Each row In andereTarifnummernList + sqlWhere &= "ComCd LIKE '" & row & "%' OR " + Next + + sqlWhere = sqlWhere.ToString.Substring(0, sqlWhere.Length - 3) + + Else + + sqlWhere = "ComCd LIKE '72081000%' OR ComCd LIKE '72082500%' OR ComCd LIKE '72082600%' OR ComCd LIKE '72082700%' OR ComCd LIKE '72083600%' OR ComCd LIKE '72083700%' OR ComCd LIKE '72083800%' OR ComCd LIKE '72083900%' OR @@ -1234,6 +1262,8 @@ Public Class usrCntlZOLLAuswertungen OR ComCd LIKE '72209080%' OR ComCd LIKE '72210010%' OR ComCd LIKE '72210090%' OR ComCd LIKE '72221111%' OR ComCd LIKE '72221119%' OR ComCd LIKE '72221181%' OR ComCd LIKE '72221189%' OR ComCd LIKE '72221910%' OR ComCd LIKE '72221990%' OR ComCd LIKE '72222011%' OR ComCd LIKE '72222019%' OR ComCd LIKE '72222021%' OR ComCd LIKE '72222029%' OR ComCd LIKE '72222031%' OR ComCd LIKE '72222039%' OR ComCd LIKE '72222081%' OR ComCd LIKE '72222089%' OR ComCd LIKE '72223051%' OR ComCd LIKE '72223091%' OR ComCd LIKE '72223097%' OR ComCd LIKE '72224010%' OR ComCd LIKE '72224050%' OR ComCd LIKE '72224090%' OR ComCd LIKE '72251910%' OR ComCd LIKE '72251990%' OR ComCd LIKE '72253010%' OR ComCd LIKE '72253030%' OR ComCd LIKE '72253090%' OR ComCd LIKE '72254012%' OR ComCd LIKE '72254015%' OR ComCd LIKE '72254040%' OR ComCd LIKE '72254060%' OR ComCd LIKE '72254090%' OR ComCd LIKE '72255020%' OR ComCd LIKE '72255080%' OR ComCd LIKE '72259100%' OR ComCd LIKE '72261910%' OR ComCd LIKE '72261980%' OR ComCd LIKE '72262000%' OR ComCd LIKE '72269120%' OR ComCd LIKE '72269191%' OR ComCd LIKE '72269199%' OR ComCd LIKE '72269200%' OR ComCd LIKE '72269910%' OR ComCd LIKE '72271000%' OR ComCd LIKE '72272000%' OR ComCd LIKE '72279010%' OR ComCd LIKE '72279050%' OR ComCd LIKE '72279095%' OR ComCd LIKE '72281020%' OR ComCd LIKE '72281090%' OR ComCd LIKE '72282010%' OR ComCd LIKE '72282091%' OR ComCd LIKE '72282099%' OR ComCd LIKE '72283020%' OR ComCd LIKE '72283041%' OR ComCd LIKE '72283049%' OR ComCd LIKE '72283061%' OR ComCd LIKE '72283070%' OR ComCd LIKE '72283089%' OR ComCd LIKE '72285020%' OR ComCd LIKE '72285040%' OR ComCd LIKE '72285061%' OR ComCd LIKE '72285069%' OR ComCd LIKE '72285080%' OR ComCd LIKE '72286020%' OR ComCd LIKE '72286080%' OR ComCd LIKE '72287010%' OR ComCd LIKE '72287090%' OR ComCd LIKE '72288000%' OR ComCd LIKE '73011000%' OR ComCd LIKE '73021022%' OR ComCd LIKE '73021028%' OR ComCd LIKE '73021040%' OR ComCd LIKE '73021050%' OR ComCd LIKE '73024000%' OR ComCd LIKE '73041100%' OR ComCd LIKE '73041910%' OR ComCd LIKE '73041930%' OR ComCd LIKE '73041990%' OR ComCd LIKE '73042200%' OR ComCd LIKE '73042300%' OR ComCd LIKE '73042400%' OR ComCd LIKE '73042910%' OR ComCd LIKE '73042930%' OR ComCd LIKE '73042990%' OR ComCd LIKE '73043120%' OR ComCd LIKE '73043180%' OR ComCd LIKE '73043950%' OR ComCd LIKE '73043982%' OR ComCd LIKE '73043983%' OR ComCd LIKE '73043988%' OR ComCd LIKE '73044100%' OR ComCd LIKE '73044983%' OR ComCd LIKE '73044985%' OR ComCd LIKE '73045181%' OR ComCd LIKE '73045189%' OR ComCd LIKE '73045930%' OR ComCd LIKE '73045982%' OR ComCd LIKE '73045983%' OR ComCd LIKE '73045989%' OR ComCd LIKE '73049000%' OR ComCd LIKE '73051100%' OR ComCd LIKE '73051200%' OR ComCd LIKE '73051900%' OR ComCd LIKE '73052000%' OR ComCd LIKE '73053100%' OR ComCd LIKE '73053900%' OR ComCd LIKE '73059000%' OR ComCd LIKE '73061100%' OR ComCd LIKE '73061900%' OR ComCd LIKE '73062100%' OR ComCd LIKE '73062900%' OR ComCd LIKE '73063012%' OR ComCd LIKE '73063018%' OR ComCd LIKE '73063041%' OR ComCd LIKE '73063049%' OR ComCd LIKE '73063072%' OR ComCd LIKE '73063077%' OR ComCd LIKE '73063080%' OR ComCd LIKE '73064020%' OR ComCd LIKE '73064080%' OR ComCd LIKE '73065021%' OR ComCd LIKE '73065029%' OR ComCd LIKE '73065080%' OR ComCd LIKE '73066110%' OR ComCd LIKE '73066192%' OR ComCd LIKE '73066199%' OR ComCd LIKE '73066910%' OR ComCd LIKE '73066990%' OR ComCd LIKE '73069000%' " + End If + End Select @@ -1266,7 +1296,7 @@ Public Class usrCntlZOLLAuswertungen End Function - Private Function getTELOTECSQL(von As Date, bis As Date, mitDetaildatensaetze As Boolean, type As String) + Private Function getTELOTECSQL(von As Date, bis As Date, mitDetaildatensaetze As Boolean, type As String, Optional andereTarifnummernList As List(Of String) = Nothing) Dim sqlWhere = "" @@ -1288,7 +1318,18 @@ Public Class usrCntlZOLLAuswertungen OR Item_ComCd like '280410%' " Case Else - sqlWhere = "Item_ComCd LIKE '72081000%' OR Item_ComCd LIKE '72082500%' OR + + If andereTarifnummernList IsNot Nothing AndAlso andereTarifnummernList.Count > 0 Then + + For Each row In andereTarifnummernList + sqlWhere &= "Item_ComCd LIKE '" & row & "%' OR " + Next + + sqlWhere = sqlWhere.ToString.Substring(0, sqlWhere.Length - 3) + + Else + + sqlWhere = "Item_ComCd LIKE '72081000%' OR Item_ComCd LIKE '72082500%' OR Item_ComCd LIKE '72082600%' OR Item_ComCd LIKE '72082700%' OR Item_ComCd LIKE '72083600%' OR Item_ComCd LIKE '72083700%' OR Item_ComCd LIKE '72083800%' OR Item_ComCd LIKE '72083900%' OR @@ -1321,6 +1362,7 @@ Public Class usrCntlZOLLAuswertungen Item_ComCd LIKE '72191100%' OR Item_ComCd LIKE '72191210%' OR Item_ComCd LIKE '72191290%' OR Item_ComCd LIKE '72191310%' OR Item_ComCd LIKE '72191390%' OR Item_ComCd LIKE '72191410%' OR Item_ComCd LIKE '72191490%' OR Item_ComCd LIKE '72192110%' OR Item_ComCd LIKE '72192190%' OR Item_ComCd LIKE '72192210%' OR Item_ComCd LIKE '72192290%' OR Item_ComCd LIKE '72192300%' OR Item_ComCd LIKE '72192400%' OR Item_ComCd LIKE '72193100%' OR Item_ComCd LIKE '72193210%' OR Item_ComCd LIKE '72193290%' OR Item_ComCd LIKE '72193310%' OR Item_ComCd LIKE '72193390%' OR Item_ComCd LIKE '72193410%' OR Item_ComCd LIKE '72193490%' OR Item_ComCd LIKE '72193510%' OR Item_ComCd LIKE '72193590%' OR Item_ComCd LIKE '72199020%' OR Item_ComCd LIKE '72199080%' OR Item_ComCd LIKE '72201100%' OR Item_ComCd LIKE '72201200%' OR Item_ComCd LIKE '72202021%' OR Item_ComCd LIKE '72202029%' OR Item_ComCd LIKE '72202041%' OR Item_ComCd LIKE '72202049%' OR Item_ComCd LIKE '72202081%' OR Item_ComCd LIKE '72202089%' OR Item_ComCd LIKE '72209020%' OR Item_ComCd LIKE '72209080%' OR Item_ComCd LIKE '72210010%' OR Item_ComCd LIKE '72210090%' OR Item_ComCd LIKE '72221111%' OR Item_ComCd LIKE '72221119%' OR Item_ComCd LIKE '72221181%' OR Item_ComCd LIKE '72221189%' OR Item_ComCd LIKE '72221910%' OR Item_ComCd LIKE '72221990%' OR Item_ComCd LIKE '72222011%' OR Item_ComCd LIKE '72222019%' OR Item_ComCd LIKE '72222021%' OR Item_ComCd LIKE '72222029%' OR Item_ComCd LIKE '72222031%' OR Item_ComCd LIKE '72222039%' OR Item_ComCd LIKE '72222081%' OR Item_ComCd LIKE '72222089%' OR Item_ComCd LIKE '72223051%' OR Item_ComCd LIKE '72223091%' OR Item_ComCd LIKE '72223097%' OR Item_ComCd LIKE '72224010%' OR Item_ComCd LIKE '72224050%' OR Item_ComCd LIKE '72224090%' OR Item_ComCd LIKE '72251910%' OR Item_ComCd LIKE '72251990%' OR Item_ComCd LIKE '72253010%' OR Item_ComCd LIKE '72253030%' OR Item_ComCd LIKE '72253090%' OR Item_ComCd LIKE '72254012%' OR Item_ComCd LIKE '72254015%' OR Item_ComCd LIKE '72254040%' OR Item_ComCd LIKE '72254060%' OR Item_ComCd LIKE '72254090%' OR Item_ComCd LIKE '72255020%' OR Item_ComCd LIKE '72255080%' OR Item_ComCd LIKE '72259100%' OR Item_ComCd LIKE '72261910%' OR Item_ComCd LIKE '72261980%' OR Item_ComCd LIKE '72262000%' OR Item_ComCd LIKE '72269120%' OR Item_ComCd LIKE '72269191%' OR Item_ComCd LIKE '72269199%' OR Item_ComCd LIKE '72269200%' OR Item_ComCd LIKE '72269910%' OR Item_ComCd LIKE '72271000%' OR Item_ComCd LIKE '72272000%' OR Item_ComCd LIKE '72279010%' OR Item_ComCd LIKE '72279050%' OR Item_ComCd LIKE '72279095%' OR Item_ComCd LIKE '72281020%' OR Item_ComCd LIKE '72281090%' OR Item_ComCd LIKE '72282010%' OR Item_ComCd LIKE '72282091%' OR Item_ComCd LIKE '72282099%' OR Item_ComCd LIKE '72283020%' OR Item_ComCd LIKE '72283041%' OR Item_ComCd LIKE '72283049%' OR Item_ComCd LIKE '72283061%' OR Item_ComCd LIKE '72283070%' OR Item_ComCd LIKE '72283089%' OR Item_ComCd LIKE '72285020%' OR Item_ComCd LIKE '72285040%' OR Item_ComCd LIKE '72285061%' OR Item_ComCd LIKE '72285069%' OR Item_ComCd LIKE '72285080%' OR Item_ComCd LIKE '72286020%' OR Item_ComCd LIKE '72286080%' OR Item_ComCd LIKE '72287010%' OR Item_ComCd LIKE '72287090%' OR Item_ComCd LIKE '72288000%' OR Item_ComCd LIKE '73011000%' OR Item_ComCd LIKE '73021022%' OR Item_ComCd LIKE '73021028%' OR Item_ComCd LIKE '73021040%' OR Item_ComCd LIKE '73021050%' OR Item_ComCd LIKE '73024000%' OR Item_ComCd LIKE '73041100%' OR Item_ComCd LIKE '73041910%' OR Item_ComCd LIKE '73041930%' OR Item_ComCd LIKE '73041990%' OR Item_ComCd LIKE '73042200%' OR Item_ComCd LIKE '73042300%' OR Item_ComCd LIKE '73042400%' OR Item_ComCd LIKE '73042910%' OR Item_ComCd LIKE '73042930%' OR Item_ComCd LIKE '73042990%' OR Item_ComCd LIKE '73043120%' OR Item_ComCd LIKE '73043180%' OR Item_ComCd LIKE '73043950%' OR Item_ComCd LIKE '73043982%' OR Item_ComCd LIKE '73043983%' OR Item_ComCd LIKE '73043988%' OR Item_ComCd LIKE '73044100%' OR Item_ComCd LIKE '73044983%' OR Item_ComCd LIKE '73044985%' OR Item_ComCd LIKE '73045181%' OR Item_ComCd LIKE '73045189%' OR Item_ComCd LIKE '73045930%' OR Item_ComCd LIKE '73045982%' OR Item_ComCd LIKE '73045983%' OR Item_ComCd LIKE '73045989%' OR Item_ComCd LIKE '73049000%' OR Item_ComCd LIKE '73051100%' OR Item_ComCd LIKE '73051200%' OR Item_ComCd LIKE '73051900%' OR Item_ComCd LIKE '73052000%' OR Item_ComCd LIKE '73053100%' OR Item_ComCd LIKE '73053900%' OR Item_ComCd LIKE '73059000%' OR Item_ComCd LIKE '73061100%' OR Item_ComCd LIKE '73061900%' OR Item_ComCd LIKE '73062100%' OR Item_ComCd LIKE '73062900%' OR Item_ComCd LIKE '73063012%' OR Item_ComCd LIKE '73063018%' OR Item_ComCd LIKE '73063041%' OR Item_ComCd LIKE '73063049%' OR Item_ComCd LIKE '73063072%' OR Item_ComCd LIKE '73063077%' OR Item_ComCd LIKE '73063080%' OR Item_ComCd LIKE '73064020%' OR Item_ComCd LIKE '73064080%' OR Item_ComCd LIKE '73065021%' OR Item_ComCd LIKE '73065029%' OR Item_ComCd LIKE '73065080%' OR Item_ComCd LIKE '73066110%' OR Item_ComCd LIKE '73066192%' OR Item_ComCd LIKE '73066199%' OR Item_ComCd LIKE '73066910%' OR Item_ComCd LIKE '73066990%' OR Item_ComCd LIKE '73069000%' " + End If End Select @@ -1376,19 +1418,27 @@ Public Class usrCntlZOLLAuswertungen Dim SQLString As String = "" Dim Quelle As String = "FMZOLL" + Dim ListOfAndereTarifnummern As New List(Of String) + + Dim HEADER As String = "Stahlverordnungsbericht aus " + + If TextBox1.Text <> "" AndAlso TextBox1.Text.Contains(",") Then + ListOfAndereTarifnummern.AddRange(TextBox1.Text.Split(","c).Select(Function(x) x.Trim()).Where(Function(x) x <> "")) + HEADER = "andere Tarifnummern (" & TextBox1.Text & ") aus " + End If Select Case cbxQuelle._value - Case "DAKOSY" : SQLString = getDAkosySQL(von_stahlverordnung.Value, bis_stahlverordnung.Value, cbxStahlverordnung_SNDdet.Checked, "STAHLVO") : Quelle = "FMZOLL" - Case "DHF" : SQLString = getDHFSQL(von_stahlverordnung.Value, bis_stahlverordnung.Value, cbxStahlverordnung_SNDdet.Checked, "STAHLVO") : Quelle = "EZOLL" - Case "DHF-UNI" : SQLString = getDHFSQL(von_stahlverordnung.Value, bis_stahlverordnung.Value, cbxStahlverordnung_SNDdet.Checked, "STAHLVO") : Quelle = "EZOLL_UNISPED" - Case "TELOTEC" : SQLString = getTELOTECSQL(von_stahlverordnung.Value, bis_stahlverordnung.Value, cbxStahlverordnung_SNDdet.Checked, "STAHLVO") : Quelle = "FMZOLL" + Case "DAKOSY" : SQLString = getDAkosySQL(von_stahlverordnung.Value, bis_stahlverordnung.Value, cbxStahlverordnung_SNDdet.Checked, "STAHLVO", ListOfAndereTarifnummern) : Quelle = "FMZOLL" + Case "DHF" : SQLString = getDHFSQL(von_stahlverordnung.Value, bis_stahlverordnung.Value, cbxStahlverordnung_SNDdet.Checked, "STAHLVO", ListOfAndereTarifnummern) : Quelle = "EZOLL" + Case "DHF-UNI" : SQLString = getDHFSQL(von_stahlverordnung.Value, bis_stahlverordnung.Value, cbxStahlverordnung_SNDdet.Checked, "STAHLVO", ListOfAndereTarifnummern) : Quelle = "EZOLL_UNISPED" + Case "TELOTEC" : SQLString = getTELOTECSQL(von_stahlverordnung.Value, bis_stahlverordnung.Value, cbxStahlverordnung_SNDdet.Checked, "STAHLVO", ListOfAndereTarifnummern) : Quelle = "FMZOLL" End Select Dim dt As DataTable = SQL.loadDgvBySql(SQLString, Quelle, 700) If dt IsNot Nothing Then - cProgramFunctions.genExcelFromDT_NEW(dt,,, "Stahlverordnungsbericht aus " & cbxQuelle._value & " " & von_stahlverordnung.Value.ToShortDateString & " - " & bis_stahlverordnung.Value.ToShortDateString) + cProgramFunctions.genExcelFromDT_NEW(dt,,, HEADER & cbxQuelle._value & " " & von_stahlverordnung.Value.ToShortDateString & " - " & bis_stahlverordnung.Value.ToShortDateString) End If End Sub @@ -1401,6 +1451,18 @@ Public Class usrCntlZOLLAuswertungen Process.Start(webAddress) End Sub + Private Sub cbxAndereTarifnummern_CheckedChanged(sender As Object, e As EventArgs) Handles cbxAndereTarifnummern.CheckedChanged + If cbxAndereTarifnummern.Checked Then + + TextBox1.Enabled = True + + Else + TextBox1.Enabled = False + TextBox1.Text = "" + + End If + End Sub + diff --git a/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb b/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb index fbd0a0a7..8cb843bd 100644 --- a/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb +++ b/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb @@ -12,6 +12,7 @@ Imports com.sun.xml.internal.rngom Imports GrapeCity.ActiveReports Imports GrapeCity.ActiveReports.SectionReportModel Imports GrapeCity.Documents.Imaging +Imports iText.IO.Util Imports Microsoft.Office.Interop Imports ThoughtWorks.QRCode.Codec @@ -885,6 +886,21 @@ BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, [Control], New Object( End Try End Function + Public Shared Sub createMail(eMailTo As String, betreff As String, text As String, Optional email_CC As String = "", Optional email_BCC As String = "") + Dim outl As New Outlook.Application + Dim Mail As Microsoft.Office.Interop.Outlook.MailItem + Mail = outl.CreateItem(0) + + Mail.To = eMailTo + Mail.CC = email_CC + Mail.BCC = email_BCC + Mail.HTMLBody = text + Mail.Subject = betreff + + Mail.Display() + + End Sub + Public Shared Function sendMail(eMailTo, betreff, text, Optional eMailfrom = "support@verag.ag", Optional prio = False, Optional uhrzeitAngeben = True, Optional cc = "", Optional bcc = "", Optional anhaenge = Nothing, Optional art = 0, Optional furtherMailAdress = "") Dim Msg As New MailMessage Dim myCredentials As New System.Net.NetworkCredential