diff --git a/SDL/buchhaltung/usrCntlBH.vb b/SDL/buchhaltung/usrCntlBH.vb
index a9c4f1fc..ca7b8649 100644
--- a/SDL/buchhaltung/usrCntlBH.vb
+++ b/SDL/buchhaltung/usrCntlBH.vb
@@ -2279,10 +2279,9 @@ Public Class usrCntlBH
Blatt = Datei.Worksheets(1)
- ' Header einlesen
Dim headerMap As New Dictionary(Of String, Integer)(StringComparer.OrdinalIgnoreCase)
- Dim startHeaderRow As Integer = If(TYP = "M", 7, 1)
+ Dim startHeaderRow As Integer = If(TYP = "M", 8, 1)
For col As Integer = 1 To Blatt.UsedRange.Columns.Count
@@ -2290,9 +2289,15 @@ Public Class usrCntlBH
If String.IsNullOrWhiteSpace(rawHeader) Then Continue For
- If rawHeader.Contains(";") Then
+ ' 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(";"c)
+ 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()
@@ -2320,14 +2325,11 @@ Public Class usrCntlBH
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)
+ MsgBox("Pflichtspalte nicht gefunden: " & h & vbNewLine & "Spaltenkopf muss sich an der " & startHeaderRow & " Zeile befinden!")
Exit Sub
End If
-
Next
@@ -2335,24 +2337,84 @@ Public Class usrCntlBH
visibleKdNrCheck = True
End If
- Dim letzteZeile As Integer = Blatt.UsedRange.Rows.Count
- For row As Integer = startHeaderRow + 1 To letzteZeile
+ 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
+
+ For Each d In dataRows
If TYP = "Q" Then
- Dim Umsatz_ID As String = Convert.ToString(Blatt.Cells(row, headerMap("Umsatz-ID")).Value)
- Dim Datum As String = Convert.ToString(Blatt.Cells(row, headerMap("Datum")).Value)
- Dim IBAN As String = Convert.ToString(Blatt.Cells(row, headerMap("IBAN")).Value)
- Dim BIC As String = Convert.ToString(Blatt.Cells(row, headerMap("BIC")).Value)
- Dim Buchungstext As String = Convert.ToString(Blatt.Cells(row, headerMap("Buchungstext")).Value)
- Dim Währung As String = Convert.ToString(Blatt.Cells(row, headerMap("Währung")).Value)
- Dim Kontoauszug As String = Convert.ToString(Blatt.Cells(row, headerMap("Kontoauszug")).Value)
- Dim Betrag As Double = Convert.ToDouble(Blatt.Cells(row, headerMap("Betrag")).Value)
+ 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(Blatt.Cells(row, headerMap("KDNR")).Value)
+ KundenNrCheck = Convert.ToString(d("KDNR"))
End If
@@ -2415,13 +2477,13 @@ Public Class usrCntlBH
Else
- Dim Umsatz_ID As String = Convert.ToString(Blatt.Cells(row, headerMap("Belegnr")).Value)
- Dim Datum As String = Convert.ToString(Blatt.Cells(row, headerMap("Belegdat")).Value)
- Dim Buchungstext As String = Convert.ToString(Blatt.Cells(row, headerMap("BuchText")).Value)
+ 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(Blatt.Cells(row, headerMap("Soll EUR")).Value)
- Dim HabenBetrag As String = Convert.ToString(Blatt.Cells(row, headerMap("Haben EUR")).Value)
+ 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
@@ -2433,7 +2495,7 @@ Public Class usrCntlBH
Dim KundenNrCheck As String = ""
If headerMap.ContainsKey("Gegenkto") Then
- KundenNrCheck = Convert.ToString(Blatt.Cells(row, headerMap("Gegenkto")).Value)
+ KundenNrCheck = Convert.ToString(d("Gegenkto"))
End If
If String.IsNullOrWhiteSpace(Umsatz_ID) Then
diff --git a/SDL/kunden/usrcntlFiskaluebersicht.Designer.vb b/SDL/kunden/usrcntlFiskaluebersicht.Designer.vb
index a009c7e2..6504db57 100644
--- a/SDL/kunden/usrcntlFiskaluebersicht.Designer.vb
+++ b/SDL/kunden/usrcntlFiskaluebersicht.Designer.vb
@@ -96,6 +96,8 @@ Partial Class usrcntlFiskaluebersicht
Me.txtUID = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.Label15 = New System.Windows.Forms.Label()
Me.cbxArt = New VERAG_PROG_ALLGEMEIN.MyComboBox()
+ Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components)
+ Me.KopierenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
CType(Me.picLocked, System.ComponentModel.ISupportInitialize).BeginInit()
Me.MyPanel1.SuspendLayout()
CType(Me.dgvFiskaluebersicht, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -107,6 +109,7 @@ Partial Class usrcntlFiskaluebersicht
CType(Me.picEORIOK, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.picOK, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.dgvUnterlagen, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.ContextMenuStrip1.SuspendLayout()
Me.SuspendLayout()
'
'btnAdd
@@ -1184,6 +1187,18 @@ Partial Class usrcntlFiskaluebersicht
Me.cbxArt.Size = New System.Drawing.Size(70, 21)
Me.cbxArt.TabIndex = 140
'
+ 'ContextMenuStrip1
+ '
+ Me.ContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.KopierenToolStripMenuItem})
+ Me.ContextMenuStrip1.Name = "ContextMenuStrip1"
+ Me.ContextMenuStrip1.Size = New System.Drawing.Size(181, 48)
+ '
+ 'KopierenToolStripMenuItem
+ '
+ Me.KopierenToolStripMenuItem.Name = "KopierenToolStripMenuItem"
+ Me.KopierenToolStripMenuItem.Size = New System.Drawing.Size(180, 22)
+ Me.KopierenToolStripMenuItem.Text = "kopieren"
+ '
'usrcntlFiskaluebersicht
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -1217,6 +1232,7 @@ Partial Class usrcntlFiskaluebersicht
CType(Me.picEORIOK, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.picOK, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.dgvUnterlagen, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.ContextMenuStrip1.ResumeLayout(False)
Me.ResumeLayout(False)
Me.PerformLayout()
@@ -1296,4 +1312,6 @@ Partial Class usrcntlFiskaluebersicht
Friend WithEvents lblUmsatz As Label
Friend WithEvents Label15 As Label
Friend WithEvents cbxArt As VERAG_PROG_ALLGEMEIN.MyComboBox
+ Friend WithEvents ContextMenuStrip1 As ContextMenuStrip
+ Friend WithEvents KopierenToolStripMenuItem As ToolStripMenuItem
End Class
diff --git a/SDL/kunden/usrcntlFiskaluebersicht.resx b/SDL/kunden/usrcntlFiskaluebersicht.resx
index 2e79f648..a5591fe6 100644
--- a/SDL/kunden/usrcntlFiskaluebersicht.resx
+++ b/SDL/kunden/usrcntlFiskaluebersicht.resx
@@ -144,4 +144,10 @@
True
+
+ True
+
+
+ 17, 17
+
\ No newline at end of file
diff --git a/SDL/kunden/usrcntlFiskaluebersicht.vb b/SDL/kunden/usrcntlFiskaluebersicht.vb
index 7462f41d..6db14c2f 100644
--- a/SDL/kunden/usrcntlFiskaluebersicht.vb
+++ b/SDL/kunden/usrcntlFiskaluebersicht.vb
@@ -959,17 +959,10 @@ Public Class usrcntlFiskaluebersicht
MsgBox("Fiskalübersicht ist bereits abgeschlossen und kann nicht gelöscht werden!")
Exit Sub
End If
- If vbYes = MsgBox("Möchten Sie die Fiskalübersicht vom " & dgvFiskaluebersicht.SelectedRows(0).Cells("fk_datum").Value & " inkl. Anhänge wirklich löschen?", vbYesNo) Then
+ If vbYes = MsgBox("Möchten Sie die Fiskalübersicht vom " & dgvFiskaluebersicht.SelectedRows(0).Cells("fk_datum").Value & " inkl. Anhänge wirklich löschen?", vbYesNo) Then
Dim anh_list = New cFiskalkundenAnhaenge()
anh_list.DELETEALL(dgvFiskaluebersicht.SelectedRows(0).Cells("fk_Kdnr").Value, dgvFiskaluebersicht.SelectedRows(0).Cells("fk_Id").Value)
fk.deleteEntry(fk.FK_Id)
- 'If dgvFiskaluebersicht.Rows.Count > 1 Then
- ' initDGVFiskaluebersicht()
- 'ElseIf dgvFiskaluebersicht.Rows.Count = 1 Then
- ' init(kdNr)
- ' initDGVFiskaluebersicht()
- 'End If
-
init(kdNr)
initDGVFiskaluebersicht()
End If
@@ -1034,10 +1027,6 @@ Public Class usrcntlFiskaluebersicht
ANH.fka_Name = "Website"
ANH.SAVE()
- 'If path Then
- ' fk.FK_Homepage_PDF = DS.da_id
- 'End If
-
fk.FK_Website_URL = txtHomepage.Text
fk.SAVE()
@@ -1259,5 +1248,89 @@ Public Class usrcntlFiskaluebersicht
End Function
+ Private Sub dgvFiskaluebersicht_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvFiskaluebersicht.CellMouseClick
+
+ If e.RowIndex < 0 Then Exit Sub 'Es wurde außerhalb einer gültigen Datenzeile geklickt
+ If e.ColumnIndex < 0 Then Exit Sub
+
+ DirectCast(sender, DataGridView).Rows(e.RowIndex).Selected = True
+ If e.Button = MouseButtons.Right Then
+
+
+ If sender Is dgvFiskaluebersicht Then
+
+ If dgvFiskaluebersicht.SelectedCells.Count = 0 Then Exit Sub 'Es wurde außerhalb einer gültigen Datenzeile geklickt
+ dgvFiskaluebersicht.CurrentCell = dgvFiskaluebersicht.Rows(e.RowIndex).Cells(e.ColumnIndex)
+
+ If dgvFiskaluebersicht.CurrentRow.Cells("FK_Id").Value IsNot Nothing AndAlso IsNumeric(dgvFiskaluebersicht.CurrentRow.Cells("FK_Id").Value) AndAlso CInt(dgvFiskaluebersicht.CurrentRow.Cells("FK_Id").Value) > 0 Then
+
+ ContextMenuStrip1.Show(Cursor.Position)
+
+ End If
+
+
+
+ End If
+
+
+
+ End If
+
+ End Sub
+
+ Private Sub KopierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles KopierenToolStripMenuItem.Click
+
+
+ Dim FISK_SOURCE As New cFiskalkunden(dgvFiskaluebersicht.CurrentRow.Cells("FK_Id").Value)
+
+ Dim f As New frmDatumsabfrage("Datum der neuen Due Diligence:", True)
+
+
+ f.ShowDialog()
+ If f.DialogResult = DialogResult.OK Then
+ Dim fisDate As Date = CDate(f.Datum)
+
+ fk = New VERAG_PROG_ALLGEMEIN.cFiskalkunden()
+ fk.FK_Datum = fisDate
+ fk.FK_Kdnr = FISK_SOURCE.FK_Kdnr
+ fk.FK_Art = FISK_SOURCE.FK_Art
+ fk.FK_Land = FISK_SOURCE.FK_Land
+
+ If FISK_SOURCE.FK_WebsiteSt_URL IsNot Nothing AndAlso FISK_SOURCE.FK_WebsiteSt_URL <> "" Then
+ fk.FK_WebsiteSt_URL = FISK_SOURCE.FK_WebsiteSt_URL
+ End If
+
+ If FISK_SOURCE.FK_Steuerberater IsNot Nothing AndAlso FISK_SOURCE.FK_Steuerberater <> "" Then
+ fk.FK_Steuerberater = FISK_SOURCE.FK_Steuerberater
+ End If
+
+ If FISK_SOURCE.FK_Website_URL IsNot Nothing AndAlso FISK_SOURCE.FK_Website_URL <> "" Then
+ fk.FK_Website_URL = FISK_SOURCE.FK_Website_URL
+ End If
+
+ Dim ID = fk.SAVE_ID()
+
+ Dim anh_list = New cFiskalkundenAnhaenge().LOAD_LIST_ByKdNr(FISK_SOURCE.FK_Kdnr, FISK_SOURCE.FK_Id)
+
+ For Each ANH_SOURCE In anh_list
+
+ Dim ANH = New VERAG_PROG_ALLGEMEIN.cFiskalkundenAnhaenge()
+ ANH.fka_fkId = ID
+ ANH.fka_Datum = ANH_SOURCE.fka_Datum
+ ANH.fka_Art = ANH_SOURCE.fka_Art
+ ANH.fka_docId = ANH_SOURCE.fka_docId
+ ANH.fka_KdNr = ANH_SOURCE.fka_KdNr
+ ANH.fka_Name = ANH_SOURCE.fka_Name
+ ANH.SAVE()
+
+ Next
+
+
+ dgvFiskaluebersicht.GetOrder()
+ initDGVFiskaluebersicht()
+ dgvFiskaluebersicht.SetOrder()
+ End If
+
+ End Sub
End Class
diff --git a/SDL/seriendruck/usrCntlFakturierung.vb b/SDL/seriendruck/usrCntlFakturierung.vb
index 50ca353b..0fbdb4d2 100644
--- a/SDL/seriendruck/usrCntlFakturierung.vb
+++ b/SDL/seriendruck/usrCntlFakturierung.vb
@@ -2585,6 +2585,7 @@ Public Class usrcntlFakturierung
"
Created on: " & Now.ToShortDateString & " at " & Now.ToShortTimeString &
"
Automatically generated email. Please do not reply to this email."
+ betreff = "VERAG360 Invoice-Report " & von.Month & "/" & von.Year
betreff = betreff.Replace(vbNewLine, "").Replace(vbCr, "").Replace(vbLf, "").Replace(vbCrLf, "").Replace(System.Environment.NewLine, " ")
@@ -2597,7 +2598,7 @@ Public Class usrcntlFakturierung
API.api_EMailAttCnt = pfadList.Count
- If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(EMails, betreff, Body,, False, False, EMails_CC, EMails_BCC, pfadList) Then
+ If VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(EMails, betreff, Body, VERAG_PROG_ALLGEMEIN.cEmailBenachrichtigung.getAbsenderEmail(), False, False, EMails_CC, EMails_BCC, pfadList) Then
API.UPDTAE_OK()
brnSR_abgeschlossen.Enabled = False
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cFiskalkunden.vb b/VERAG_PROG_ALLGEMEIN/Classes/cFiskalkunden.vb
index 8994c84b..42214cf7 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/cFiskalkunden.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/cFiskalkunden.vb
@@ -1,5 +1,6 @@
Imports System.Data.SqlClient
Imports System.Reflection
+Imports com.sun.security.auth
Public Class cFiskalkunden
@@ -93,6 +94,21 @@ Public Class cFiskalkunden
Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list)
End Function
+ Public Function SAVE_ID() As Integer
+ Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
+
+ Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM [tblFiskalkunden] WHERE FK_Id=@FK_Id) " &
+ " BEGIN " & getUpdateCmd() & " END " &
+ " Else " &
+ " BEGIN " & getInsertCmd() & " END " &
+ " commit tran "
+
+
+ Dim id = SQL.doSQLVarListID(FK_Id, sqlstr, "FMZOLL", , list)
+ Return id
+
+ End Function
+
Public Sub LOAD()
Try
hasEntry = False
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cFiskalkundenAnhaenge.vb b/VERAG_PROG_ALLGEMEIN/Classes/cFiskalkundenAnhaenge.vb
index 85ba9ec8..3fa7cdfc 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/cFiskalkundenAnhaenge.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/cFiskalkundenAnhaenge.vb
@@ -64,6 +64,22 @@ Public Class cFiskalkundenAnhaenge
End Function
+ Shared Function LOAD_LIST_ByKdNr(fka_KdNr As Integer, fka_fkId As Integer) As List(Of cFiskalkundenAnhaenge)
+ Dim ANH_LIST = New List(Of cFiskalkundenAnhaenge)
+ ANH_LIST.Clear()
+ Dim SQL As New SQL
+ Dim dgv = SQL.loadDgvBySql("SELECT fka_id FROM [tblFiskalkundenAnhaenge] WHERE fka_KdNr=" & fka_KdNr & " And fka_fkId = " & fka_fkId & " ORDER BY fka_Datum desc", "AVISO")
+ If dgv IsNot Nothing Then
+ For Each r In dgv.Rows
+
+ ANH_LIST.Add(New VERAG_PROG_ALLGEMEIN.cFiskalkundenAnhaenge(r("fka_id")))
+ Next
+ End If
+
+ Return ANH_LIST
+
+ End Function
+
Public Function SAVE(Optional errHinweis = "") As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()