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)
' 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

View File

@@ -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

View File

@@ -144,4 +144,10 @@
<metadata name="cbxHomepage.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</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>

View File

@@ -963,13 +963,6 @@ Public Class usrcntlFiskaluebersicht
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

View File

@@ -2585,6 +2585,7 @@ Public Class usrcntlFakturierung
"<br><br>Created on: " & Now.ToShortDateString & " at " & Now.ToShortTimeString &
"<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, " ")
@@ -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

View File

@@ -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

View File

@@ -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()