Fiskaluebersicht, Faktu, etc.

This commit is contained in:
2026-10-27 15:22:19 +01:00
parent d9cc9b0951
commit 761ce93d25
7 changed files with 230 additions and 38 deletions

View File

@@ -2279,10 +2279,9 @@ Public Class usrCntlBH
Blatt = Datei.Worksheets(1) Blatt = Datei.Worksheets(1)
' Header einlesen
Dim headerMap As New Dictionary(Of String, Integer)(StringComparer.OrdinalIgnoreCase) 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 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 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 ' 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 For i As Integer = 0 To headers.Length - 1
Dim header As String = headers(i).Replace(ChrW(160), " "c).Trim().TrimEnd("."c).Trim() 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"} requiredHeaders = {"Umsatz-ID", "Datum", "IBAN", "BIC", "Buchungstext", "Währung", "Betrag", "Kontoauszug"}
End Select End Select
For Each h As String In requiredHeaders For Each h As String In requiredHeaders
If Not headerMap.ContainsKey(h) Then 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 Exit Sub
End If End If
Next Next
@@ -2335,24 +2337,84 @@ Public Class usrCntlBH
visibleKdNrCheck = True visibleKdNrCheck = True
End If 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 If TYP = "Q" Then
Dim Umsatz_ID As String = Convert.ToString(Blatt.Cells(row, headerMap("Umsatz-ID")).Value) Dim Umsatz_ID As String = Convert.ToString(d("Umsatz-ID"))
Dim Datum As String = Convert.ToString(Blatt.Cells(row, headerMap("Datum")).Value) Dim Datum As String = Convert.ToString(d("Datum"))
Dim IBAN As String = Convert.ToString(Blatt.Cells(row, headerMap("IBAN")).Value) Dim IBAN As String = Convert.ToString(d("IBAN"))
Dim BIC As String = Convert.ToString(Blatt.Cells(row, headerMap("BIC")).Value) Dim BIC As String = Convert.ToString(d("BIC"))
Dim Buchungstext As String = Convert.ToString(Blatt.Cells(row, headerMap("Buchungstext")).Value) Dim Buchungstext As String = Convert.ToString(d("Buchungstext"))
Dim Währung As String = Convert.ToString(Blatt.Cells(row, headerMap("Währung")).Value) Dim Währung As String = Convert.ToString(d("Währung"))
Dim Kontoauszug As String = Convert.ToString(Blatt.Cells(row, headerMap("Kontoauszug")).Value) Dim Kontoauszug As String = Convert.ToString(d("Kontoauszug"))
Dim Betrag As Double = Convert.ToDouble(Blatt.Cells(row, headerMap("Betrag")).Value) Dim Betrag As Double = Convert.ToDouble(d("Betrag"))
Dim KundenNrCheck As String = "" Dim KundenNrCheck As String = ""
If headerMap.ContainsKey("KDNR") Then If headerMap.ContainsKey("KDNR") Then
KundenNrCheck = Convert.ToString(Blatt.Cells(row, headerMap("KDNR")).Value) KundenNrCheck = Convert.ToString(d("KDNR"))
End If End If
@@ -2415,13 +2477,13 @@ Public Class usrCntlBH
Else Else
Dim Umsatz_ID As String = Convert.ToString(Blatt.Cells(row, headerMap("Belegnr")).Value) Dim Umsatz_ID As String = Convert.ToString(d("Belegnr"))
Dim Datum As String = Convert.ToString(Blatt.Cells(row, headerMap("Belegdat")).Value) Dim Datum As String = Convert.ToString(d("Belegdat"))
Dim Buchungstext As String = Convert.ToString(Blatt.Cells(row, headerMap("BuchText")).Value) Dim Buchungstext As String = Convert.ToString(d("BuchText"))
Dim Währung As String = "EUR" Dim Währung As String = "EUR"
Dim SollBetrag As String = Convert.ToString(Blatt.Cells(row, headerMap("Soll EUR")).Value) Dim SollBetrag As String = Convert.ToString(d("Soll EUR"))
Dim HabenBetrag As String = Convert.ToString(Blatt.Cells(row, headerMap("Haben EUR")).Value) Dim HabenBetrag As String = Convert.ToString(d("Haben EUR"))
Dim Betrag As Double = 0 Dim Betrag As Double = 0
If SollBetrag <> "" AndAlso IsNumeric(SollBetrag) Then If SollBetrag <> "" AndAlso IsNumeric(SollBetrag) Then
@@ -2433,7 +2495,7 @@ Public Class usrCntlBH
Dim KundenNrCheck As String = "" Dim KundenNrCheck As String = ""
If headerMap.ContainsKey("Gegenkto") Then If headerMap.ContainsKey("Gegenkto") Then
KundenNrCheck = Convert.ToString(Blatt.Cells(row, headerMap("Gegenkto")).Value) KundenNrCheck = Convert.ToString(d("Gegenkto"))
End If End If
If String.IsNullOrWhiteSpace(Umsatz_ID) Then If String.IsNullOrWhiteSpace(Umsatz_ID) Then

View File

@@ -96,6 +96,8 @@ Partial Class usrcntlFiskaluebersicht
Me.txtUID = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.txtUID = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.Label15 = New System.Windows.Forms.Label() Me.Label15 = New System.Windows.Forms.Label()
Me.cbxArt = New VERAG_PROG_ALLGEMEIN.MyComboBox() 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() CType(Me.picLocked, System.ComponentModel.ISupportInitialize).BeginInit()
Me.MyPanel1.SuspendLayout() Me.MyPanel1.SuspendLayout()
CType(Me.dgvFiskaluebersicht, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.dgvFiskaluebersicht, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -107,6 +109,7 @@ Partial Class usrcntlFiskaluebersicht
CType(Me.picEORIOK, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picEORIOK, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.picOK, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.picOK, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.dgvUnterlagen, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.dgvUnterlagen, System.ComponentModel.ISupportInitialize).BeginInit()
Me.ContextMenuStrip1.SuspendLayout()
Me.SuspendLayout() Me.SuspendLayout()
' '
'btnAdd 'btnAdd
@@ -1184,6 +1187,18 @@ Partial Class usrcntlFiskaluebersicht
Me.cbxArt.Size = New System.Drawing.Size(70, 21) Me.cbxArt.Size = New System.Drawing.Size(70, 21)
Me.cbxArt.TabIndex = 140 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 'usrcntlFiskaluebersicht
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) 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.picEORIOK, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.picOK, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.picOK, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.dgvUnterlagen, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.dgvUnterlagen, System.ComponentModel.ISupportInitialize).EndInit()
Me.ContextMenuStrip1.ResumeLayout(False)
Me.ResumeLayout(False) Me.ResumeLayout(False)
Me.PerformLayout() Me.PerformLayout()
@@ -1296,4 +1312,6 @@ Partial Class usrcntlFiskaluebersicht
Friend WithEvents lblUmsatz As Label Friend WithEvents lblUmsatz As Label
Friend WithEvents Label15 As Label Friend WithEvents Label15 As Label
Friend WithEvents cbxArt As VERAG_PROG_ALLGEMEIN.MyComboBox Friend WithEvents cbxArt As VERAG_PROG_ALLGEMEIN.MyComboBox
Friend WithEvents ContextMenuStrip1 As ContextMenuStrip
Friend WithEvents KopierenToolStripMenuItem As ToolStripMenuItem
End Class End Class

View File

@@ -144,4 +144,10 @@
<metadata name="cbxHomepage.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="cbxHomepage.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="cbxHomepage.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ContextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root> </root>

View File

@@ -959,17 +959,10 @@ Public Class usrcntlFiskaluebersicht
MsgBox("Fiskalübersicht ist bereits abgeschlossen und kann nicht gelöscht werden!") MsgBox("Fiskalübersicht ist bereits abgeschlossen und kann nicht gelöscht werden!")
Exit Sub Exit Sub
End If 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() Dim anh_list = New cFiskalkundenAnhaenge()
anh_list.DELETEALL(dgvFiskaluebersicht.SelectedRows(0).Cells("fk_Kdnr").Value, dgvFiskaluebersicht.SelectedRows(0).Cells("fk_Id").Value) anh_list.DELETEALL(dgvFiskaluebersicht.SelectedRows(0).Cells("fk_Kdnr").Value, dgvFiskaluebersicht.SelectedRows(0).Cells("fk_Id").Value)
fk.deleteEntry(fk.FK_Id) 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) init(kdNr)
initDGVFiskaluebersicht() initDGVFiskaluebersicht()
End If End If
@@ -1034,10 +1027,6 @@ Public Class usrcntlFiskaluebersicht
ANH.fka_Name = "Website" ANH.fka_Name = "Website"
ANH.SAVE() ANH.SAVE()
'If path Then
' fk.FK_Homepage_PDF = DS.da_id
'End If
fk.FK_Website_URL = txtHomepage.Text fk.FK_Website_URL = txtHomepage.Text
fk.SAVE() fk.SAVE()
@@ -1259,5 +1248,89 @@ Public Class usrcntlFiskaluebersicht
End Function 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 End Class

View File

@@ -2585,6 +2585,7 @@ Public Class usrcntlFakturierung
"<br><br>Created on: " & Now.ToShortDateString & " at " & Now.ToShortTimeString & "<br><br>Created on: " & Now.ToShortDateString & " at " & Now.ToShortTimeString &
"<br><br><br>Automatically generated email. Please do not reply to this email." "<br><br><br>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, " ") 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 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() API.UPDTAE_OK()
brnSR_abgeschlossen.Enabled = False brnSR_abgeschlossen.Enabled = False

View File

@@ -1,5 +1,6 @@
Imports System.Data.SqlClient Imports System.Data.SqlClient
Imports System.Reflection Imports System.Reflection
Imports com.sun.security.auth
Public Class cFiskalkunden Public Class cFiskalkunden
@@ -93,6 +94,21 @@ Public Class cFiskalkunden
Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list) Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list)
End Function 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() Public Sub LOAD()
Try Try
hasEntry = False hasEntry = False

View File

@@ -64,6 +64,22 @@ Public Class cFiskalkundenAnhaenge
End Function 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 Public Function SAVE(Optional errHinweis = "") As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()