Kundensicherheiten, CBAM-Rechner, etc.

This commit is contained in:
2026-10-21 16:55:38 +02:00
parent c6c5b7d1c2
commit 11f432ec67
7 changed files with 391 additions and 124 deletions

View File

@@ -2,6 +2,7 @@
Imports System.Globalization
Imports System.Text
Imports System.Web.UI.WebControls.Expressions
Imports QRCoder.PayloadGenerator.SwissQrCode
Imports VERAG_PROG_ALLGEMEIN
Public Class usrCntlBH
@@ -2220,6 +2221,7 @@ Public Class usrCntlBH
End If
Dim importiert As Boolean = False
Dim TYP = cbxBankspesentyp._value
Dim fd As New OpenFileDialog
fd.InitialDirectory = "\\share01.verag.ost.dmn\F\19 VERAG 360 - MDM\Buchhaltung MDM\Bank\Subkonten"
@@ -2267,7 +2269,7 @@ Public Class usrCntlBH
exclApp.CutCopyMode = False
'Try to open exclusively
Datei = exclApp.Workbooks.Open(Filename:=fd.FileName, ReadOnly:=False, IgnoreReadOnlyRecommended:=True, Notify:=False)
Datei = exclApp.Workbooks.Open(Filename:=fd.FileName, ReadOnly:=False, IgnoreReadOnlyRecommended:=True, Notify:=False, Format:=6, Delimiter:=";")
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!")
@@ -2280,27 +2282,44 @@ Public Class usrCntlBH
' Header einlesen
Dim headerMap As New Dictionary(Of String, Integer)(StringComparer.OrdinalIgnoreCase)
Dim startHeaderRow As Integer = If(TYP = "M", 7, 1)
For col As Integer = 1 To Blatt.UsedRange.Columns.Count
Dim header As String = Convert.ToString(Blatt.Cells(1, col).Value).Trim()
Dim rawHeader As String = Convert.ToString(Blatt.Cells(startHeaderRow, col).Value2)
If header <> "" AndAlso Not headerMap.ContainsKey(header) Then
headerMap.Add(header, col)
If String.IsNullOrWhiteSpace(rawHeader) Then Continue For
If rawHeader.Contains(";") Then
' Gesamte Kopfzeile steht in einer Zelle
Dim headers As String() = rawHeader.Split(";"c)
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() = {
"Umsatz-ID",
"Datum",
"IBAN",
"BIC",
"Buchungstext",
"Währung",
"Betrag",
"Kontoauszug"
}
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
@@ -2316,86 +2335,64 @@ Public Class usrCntlBH
visibleKdNrCheck = True
End If
Dim letzteZeile As Integer = Blatt.UsedRange.Rows.Count
For row As Integer = startHeaderRow + 1 To letzteZeile
If TYP = "Q" Then
For row As Integer = 2 To letzteZeile
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 KundenNrCheck As String = ""
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 KundenNrCheck As String = ""
If headerMap.ContainsKey("KDNR") Then
KundenNrCheck = Convert.ToString(Blatt.Cells(row, headerMap("KDNR")).Value)
End If
If String.IsNullOrWhiteSpace(Umsatz_ID) Then
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
If headerMap.ContainsKey("KDNR") Then
KundenNrCheck = Convert.ToString(Blatt.Cells(row, headerMap("KDNR")).Value)
End If
If KundeNr = -1 Then
If String.IsNullOrWhiteSpace(Umsatz_ID) Then
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
@@ -2413,16 +2410,89 @@ Public Class usrCntlBH
Continue For
End If
End If
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 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 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(Blatt.Cells(row, headerMap("Gegenkto")).Value)
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
Continue For
End If
End If
Next
If dt.Rows.Count > 0 Then
Using frm As New frmAbrechnungHandling(dt, Nothing, "Import " & dt.Rows.Count & " Buchungsdaten " & cbxBankspesentyp.SelectedItem.Text & IIf(missingKdNr > 0, missingKdNr & " Kundenkonten konnten nicht gefunden werden!", ""))
With frm
@@ -2454,8 +2524,8 @@ Public Class usrCntlBH
For Each r As DataGridViewRow In frm.dgvHandling.SelectedRows
Dim Datum = r.Cells("Datum").Value
Dim TYP = cbxBankspesentyp._value
Dim KdNr = 0
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)

View File

@@ -1,5 +1,4 @@
Imports DAKOSY_Worker.DEERRE
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop
Imports VERAG_PROG_ALLGEMEIN
Public Class frmdynMailvorlagen

View File

@@ -2380,7 +2380,8 @@ Public Class frmMDMDatenverarbetiung
Function genPLOSEInsertMautD_NEW(von As Date, bis As Date) As Boolean
Try
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True
pic.Visible = False

View File

@@ -46,6 +46,7 @@ Partial Class usrcntlFakturierung
Me.Button18 = New System.Windows.Forms.Button()
Me.Label44 = New System.Windows.Forms.Label()
Me.GBSammelrechnung = New System.Windows.Forms.GroupBox()
Me.btnSR_zuruecksetzen = New System.Windows.Forms.Button()
Me.PictureBox13 = New System.Windows.Forms.PictureBox()
Me.Label15 = New System.Windows.Forms.Label()
Me.PictureBox12 = New System.Windows.Forms.PictureBox()
@@ -109,7 +110,7 @@ Partial Class usrcntlFakturierung
Me.btnWikiStatusmails = New System.Windows.Forms.Button()
Me.gb_MDM_Rechnungen = New System.Windows.Forms.GroupBox()
Me.Label14 = New System.Windows.Forms.Label()
Me.btnSR_zuruecksetzen = New System.Windows.Forms.Button()
Me.cbxFixeTaxe = New System.Windows.Forms.CheckBox()
Me.gb_fakturierung.SuspendLayout()
Me.GBMautberichte.SuspendLayout()
CType(Me.dgvMautbericht, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -356,6 +357,7 @@ Partial Class usrcntlFakturierung
'
'GBSammelrechnung
'
Me.GBSammelrechnung.Controls.Add(Me.cbxFixeTaxe)
Me.GBSammelrechnung.Controls.Add(Me.btnSR_zuruecksetzen)
Me.GBSammelrechnung.Controls.Add(Me.PictureBox13)
Me.GBSammelrechnung.Controls.Add(Me.Label15)
@@ -423,6 +425,18 @@ Partial Class usrcntlFakturierung
Me.GBSammelrechnung.TabIndex = 14
Me.GBSammelrechnung.TabStop = False
'
'btnSR_zuruecksetzen
'
Me.btnSR_zuruecksetzen.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.btnSR_zuruecksetzen.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
Me.btnSR_zuruecksetzen.Location = New System.Drawing.Point(744, 261)
Me.btnSR_zuruecksetzen.Name = "btnSR_zuruecksetzen"
Me.btnSR_zuruecksetzen.Size = New System.Drawing.Size(107, 32)
Me.btnSR_zuruecksetzen.TabIndex = 135
Me.btnSR_zuruecksetzen.Text = "SR-zurücksetzen"
Me.btnSR_zuruecksetzen.UseVisualStyleBackColor = True
Me.btnSR_zuruecksetzen.Visible = False
'
'PictureBox13
'
Me.PictureBox13.BackgroundImage = CType(resources.GetObject("PictureBox13.BackgroundImage"), System.Drawing.Image)
@@ -518,7 +532,7 @@ Partial Class usrcntlFakturierung
'
Me.Label11.Location = New System.Drawing.Point(168, 156)
Me.Label11.Name = "Label11"
Me.Label11.Size = New System.Drawing.Size(440, 17)
Me.Label11.Size = New System.Drawing.Size(262, 17)
Me.Label11.TabIndex = 125
Me.Label11.Text = "6. Fixe Taxe 441 (bei Belegsumme < 500) berechnen"
'
@@ -1063,17 +1077,16 @@ Partial Class usrcntlFakturierung
Me.Label14.TabIndex = 73
Me.Label14.Text = "Rechnungsdaten"
'
'btnSR_zuruecksetzen
'cbxFixeTaxe
'
Me.btnSR_zuruecksetzen.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.btnSR_zuruecksetzen.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
Me.btnSR_zuruecksetzen.Location = New System.Drawing.Point(744, 261)
Me.btnSR_zuruecksetzen.Name = "btnSR_zuruecksetzen"
Me.btnSR_zuruecksetzen.Size = New System.Drawing.Size(107, 32)
Me.btnSR_zuruecksetzen.TabIndex = 135
Me.btnSR_zuruecksetzen.Text = "SR-zurücksetzen"
Me.btnSR_zuruecksetzen.UseVisualStyleBackColor = True
Me.btnSR_zuruecksetzen.Visible = False
Me.cbxFixeTaxe.AutoSize = True
Me.cbxFixeTaxe.Checked = True
Me.cbxFixeTaxe.CheckState = System.Windows.Forms.CheckState.Checked
Me.cbxFixeTaxe.Location = New System.Drawing.Point(428, 156)
Me.cbxFixeTaxe.Name = "cbxFixeTaxe"
Me.cbxFixeTaxe.Size = New System.Drawing.Size(15, 14)
Me.cbxFixeTaxe.TabIndex = 136
Me.cbxFixeTaxe.UseVisualStyleBackColor = True
'
'usrcntlFakturierung
'
@@ -1201,4 +1214,5 @@ Partial Class usrcntlFakturierung
Friend WithEvents PictureBox13 As PictureBox
Friend WithEvents Label15 As Label
Friend WithEvents btnSR_zuruecksetzen As Button
Friend WithEvents cbxFixeTaxe As CheckBox
End Class

View File

@@ -1,6 +1,7 @@
Imports System.Globalization
Imports System.IO
Imports System.Web.UI.WebControls.Expressions
Imports java.util
Imports VERAG_PROG_ALLGEMEIN
Public Class usrcntlFakturierung
@@ -290,7 +291,7 @@ Public Class usrcntlFakturierung
GROUP BY [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], [Steuersatz %], [Lastschrift]", "FMZOLL")
If Not vbYes = MsgBox("Möchten Sie mit der Erstellung der " & dtREGU.Rows.Count & " Sammelrechnungen vorfahren?", vbYesNoCancel) Then
If Not vbYes = MsgBox("Möchten Sie mit der Erstellung der " & dtREGU.Rows.Count & " Sammelrechnungen vorfahren?" & vbNewLine & IIf(cbxFixeTaxe.Checked, "Fixe Taxe wird verrechnet!", "Fixe Taxe wird NICHT verrechnet!"), vbYesNoCancel) Then
MsgBox("Rechnungslauf wird abgebrochen!") : Exit Sub
End If
@@ -366,7 +367,7 @@ Public Class usrcntlFakturierung
showPic(Bankspesen(Sachbearbeiter, rechnungsdatum), PictureBox5)
'Berechnet FixeTaxe.
showPic(FixeTaxe(Sachbearbeiter, rechnungsdatum), PictureBox6)
If cbxFixeTaxe.Checked Then showPic(FixeTaxe(Sachbearbeiter, rechnungsdatum), PictureBox6)
'Gesamtmautberichte an Sammelrechnung anhängen
@@ -622,10 +623,6 @@ Public Class usrcntlFakturierung
Dim intZlr As Integer = 0
If r("RechnungsKundenNr") = "401715" Or r("RechnungsKundenNr") = "401943" Or r("RechnungsKundenNr") = "402179" Or r("RechnungsKundenNr") = "402598" Or r("RechnungsKundenNr") = "402656" Or r("RechnungsKundenNr") = "402688" Or r("RechnungsKundenNr") = "402719" Or r("RechnungsKundenNr") = "402888" Or r("RechnungsKundenNr") = "402933" Or r("RechnungsKundenNr") = "401733" Or r("RechnungsKundenNr") = "402245" Or r("RechnungsKundenNr") = "402712" Or r("RechnungsKundenNr") = "402065" Or r("RechnungsKundenNr") = "402712" Or r("RechnungsKundenNr") = "401908" Or r("RechnungsKundenNr") = "401829" Or r("RechnungsKundenNr") = "203083" Then
'MsgBox("Test")
End If
' Bei BetragExclusivFT kleiner als 500€ wird 1x fixe Taxe verrechnet, bei grösser/gleich 500€ wird kein fixe Taxe verrechnet.
' Zähler auf die Anzahl der fixe Taxe Löschungen einstellen.
@@ -1126,7 +1123,7 @@ Public Class usrcntlFakturierung
Dim hatFehler As Boolean = False
If dtSammelRechnugen.Rows.Count = 0 Then
MsgBox("Keine Rechnungen für die Anlage der ZNB-Berichte gefunden!" & vbNewLine & "Vorgang wird abgebrochen.")
MsgBox("Keine Rechnungen für die Anlage der ZNB-Berichte gefunden!" & vbNewLine & "Vorgang für die ZNB-liste wird übersprungen.")
Return False
End If
@@ -1141,7 +1138,7 @@ Public Class usrcntlFakturierung
End If
If dtSammelRechnugen_EZB.Rows.Count = 0 Then
MsgBox("Keine Rechnungen der Filiale 8001 für die Anlage der ZNB-Berichte gefunden!" & vbNewLine & "Vorgang wird abgebrochen.")
MsgBox("Keine Rechnungen der Filiale 8001 für die Anlage der ZNB-Berichte gefunden!" & vbNewLine & "Vorgang für die ZNB-liste wird übersprungen.")
Return False
End If
@@ -2615,30 +2612,63 @@ Public Class usrcntlFakturierung
If vbYes = MsgBox("Soll die Sammelrechnung für den " & rechnungsdatum & " zurückgesetzt werden?" & vbNewLine & "ACHTUNG, das darf nur von Administratoren durchgeführt werden!!!!", vbYesNoCancel) Then
Dim SQL As New SQL
Dim setBack As Boolean = False
Dim LIEFERANT As String = ""
'1. VZ zurücksetzen - wenn vorhanden!
SQL.doSQL("UPDATE [VERAG].[dbo].[tblMDM_Zinsberechnung] Set RK_ID = NULL,verrechnet = NULL where RK_ID in (select RK_ID from Rechnungsausgang where cast(RechnungsDatum as date) = '" & rechnungsdatum.ToShortDateString & "' and Firma_ID = 19 and Sammelrechnung = 6 )", "FMZOLL")
LIEFERANT = "VZ-Daten"
setBack = SQL.doSQL("UPDATE [VERAG].[dbo].[tblMDM_Zinsberechnung] Set RK_ID = NULL,verrechnet = NULL where RK_ID in (select RK_ID from Rechnungsausgang where cast(RechnungsDatum as date) = '" & rechnungsdatum.ToShortDateString & "' and Firma_ID = 19 and Sammelrechnung = 6 )", "FMZOLL")
If Not createInfo(setBack, LIEFERANT) Then Exit Sub
'2. SR löschen
SQL.doSQL("delete from Rechnungsausgang where cast(RechnungsDatum as date) = '" & rechnungsdatum.ToShortDateString & "' and Firma_ID = 19 and Sammelrechnung = 6 ", "FMZOLL")
LIEFERANT = "SR-Rechnung"
setBack = SQL.doSQL("delete from Rechnungsausgang where cast(RechnungsDatum as date) = '" & rechnungsdatum.ToShortDateString & "' and Firma_ID = 19 and Sammelrechnung = 6 ", "FMZOLL")
If Not createInfo(setBack, LIEFERANT) Then Exit Sub
'3. Lieferantendaten zurücksetzten
'PLOSE
SQL.doSQL("update tblPLOSE_Details set plose_Fakturiert = 0, plose_FakturiertDatum=NULL where isnull(plose_Fakturiert,0) = 1 and cast(plose_FakturiertDatum as Date) >= '" & rechnungsdatum.AddDays(1) & "'", "FMZOLL")
LIEFERANT = "PLOSE-Daten"
setBack = SQL.doSQL("update tblPLOSE_Details set plose_Fakturiert = 0, plose_FakturiertDatum=NULL where isnull(plose_Fakturiert,0) = 1 and cast(plose_FakturiertDatum as Date) >= '" & rechnungsdatum.AddDays(1) & "'", "FMZOLL")
If Not createInfo(setBack, LIEFERANT) Then Exit Sub
'UTA
SQL.doSQL("UPDATE [tblUTAImportNew] set charged=0,chargedDatetime=NULL where isnull(charged,0) = 1 and chargedDatetime >= '" & rechnungsdatum.AddDays(1) & "'", "FMZOLL")
LIEFERANT = "UTA-Daten"
setBack = SQL.doSQL("UPDATE [tblUTAImportNew] set charged=0,chargedDatetime=NULL where isnull(charged,0) = 1 and chargedDatetime >= '" & rechnungsdatum.AddDays(1) & "'", "FMZOLL")
'IDS
SQL.doSQL("UPDATE [tblIDSTransactionsNew] Set charged = 0 ,chargedDatetime = NULL where isnull(charged,0) = 1 and chargedDatetime >= '" & rechnungsdatum.AddDays(1) & "'", "FMZOLL")
If Not createInfo(setBack, LIEFERANT) Then Exit Sub
LIEFERANT = "IDS-Daten"
setBack = SQL.doSQL("UPDATE [tblIDSTransactionsNew] Set charged = 0 ,chargedDatetime = NULL where isnull(charged,0) = 1 and chargedDatetime >= '" & rechnungsdatum.AddDays(1) & "'", "FMZOLL")
If Not createInfo(setBack, LIEFERANT) Then Exit Sub
'MSE
SQL.doSQL("UPDATE [tblMSETransactions] Set charged = 0 , chargedDatetime = NULL where isnull(charged,0) = 1 and chargedDatetime >= '" & rechnungsdatum.AddDays(1) & "'", "FMZOLL")
setBack = SQL.doSQL("UPDATE [tblMSETransactions] Set charged = 0 , chargedDatetime = NULL where isnull(charged,0) = 1 and chargedDatetime >= '" & rechnungsdatum.AddDays(1) & "'", "FMZOLL")
LIEFERANT = "MSE-Daten"
If Not createInfo(setBack, LIEFERANT) Then Exit Sub
'BANK - Wenn vorhanden
SQL.doSQL("UPDATE [VERAG].[dbo].[tblMDM_Bankspesen] Set RK_ID = NULL,verrechnet = NULL, SR_datum = NULL where verrechnet >= '" & rechnungsdatum.AddDays(1) & "' and SR_datum = '" & rechnungsdatum.ToShortDateString & "'", "FMZOLL")
LIEFERANT = "BANK-Daten"
setBack = SQL.doSQL("UPDATE [VERAG].[dbo].[tblMDM_Bankspesen] Set RK_ID = NULL,verrechnet = NULL, SR_datum = NULL where verrechnet >= '" & rechnungsdatum.AddDays(1) & "' and SR_datum = '" & rechnungsdatum.ToShortDateString & "'", "FMZOLL")
If Not createInfo(setBack, LIEFERANT) Then Exit Sub
'MAUTDATEN
LIEFERANT = "Mautbericht-Daten"
setBack = SQL.doSQL("delete from tblMautbericht where Billingdate= '" & rechnungsdatum.ToShortDateString & "'", "FMZOLL")
If Not createInfo(setBack, LIEFERANT) Then Exit Sub
If setBack Then
MsgBox("Rücksetzung erfolgreich!")
End If
@@ -2649,4 +2679,16 @@ Public Class usrcntlFakturierung
End Sub
Private Function createInfo(setBack As Boolean, Lieferant As String) As Boolean
Dim INFO As String = "Achtung die Rücksetzung der " & Lieferant & " ist fehlgeschlagen, Rücksetzung wird abgebrochen!"
If Not setBack Then
MsgBox(INFO)
End If
Return setBack
End Function
End Class

View File

@@ -24,6 +24,9 @@ Public Class cKundenSicherheiten
Public Property sc_stornoDatum As Date? = Nothing
Public Property sc_stornoMaId As Integer? = Nothing
Public Property sc_cbam_jahr As Integer? = Nothing
Public Property sc_cbam_quartal As Integer? = Nothing
Public hasEntry As Boolean = False
@@ -34,6 +37,13 @@ Public Class cKundenSicherheiten
LOAD()
End Sub
Sub New(sc_kundenNr As String, sc_cbam_quartal As Integer, sc_cbam_jahr As Integer)
sc_kundenNr = sc_kundenNr
sc_cbam_quartal = sc_cbam_quartal
sc_cbam_jahr = sc_cbam_jahr
LOADCBAM()
End Sub
Public Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
@@ -57,6 +67,8 @@ Public Class cKundenSicherheiten
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sc_storno", sc_storno))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sc_stornoDatum", sc_stornoDatum))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sc_stornoMaId", sc_stornoMaId))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sc_cbam_jahr", sc_cbam_jahr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("sc_cbam_quartal", sc_cbam_quartal))
Return list
End Function
@@ -103,6 +115,33 @@ Public Class cKundenSicherheiten
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
Public Sub LOADCBAM()
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM tblKundenSicherheiten WHERE sc_kundenNr=@sc_kundenNr and sc_cbam_quartal = @sc_cbam_quartal and sc_cbam_jahr = @sc_cbamsc_cbam_jahr_year", conn)
cmd.Parameters.AddWithValue("@sc_kundenNr", sc_kundenNr)
cmd.Parameters.AddWithValue("@sc_cbam_quartal", sc_cbam_quartal)
cmd.Parameters.AddWithValue("@sc_cbam_jahr", sc_cbam_jahr)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each li In getParameterList()
Dim prop As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable)
If dr(li.Text) Is DBNull.Value Then
prop.SetValue(Me, Nothing)
Else
prop.SetValue(Me, dr(li.Text))
End If
Next
hasEntry = True
End If
dr.Close()
End Using
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
Public Function getUpdateCmd() As String
Dim list = getParameterList()

View File

@@ -1,8 +1,10 @@
Imports System.Data.SqlClient
Imports System.Reflection
Imports System.Runtime.InteropServices.ComTypes
Imports System.Windows.Forms
Imports com.sun.tools.javac.util
Imports java.lang.ProcessBuilder
Imports Org.BouncyCastle.Crypto.Agreement
Imports sun.util.resources.cldr.aa
Imports VERAG_PROG_ALLGEMEIN.TESTJSON
@@ -518,6 +520,9 @@ Public Class cVERAG_CustomsDeclarations
End Function
Public Sub checkfreshCBAMWarning()
'TODO: die CBAM-Kosten pro Quartal berechnen und als "Bankgarantie" in die tblKundenSicherheiten schreiben/aktualisieren (wird aktuell noch händisch gemacht, Fehleranfällig und
Try
Dim CBAM_ITEMS As New List(Of cVERAG_CustomsDeclarations_Item)
@@ -597,6 +602,10 @@ Public Class cVERAG_CustomsDeclarations
Dim dateCBAM = If(If(za_ReleaseDate, za_DeclarationDate), Now)
Dim eigenmasseSumme_YEAR As Decimal = getCBAM_KG(vertretenerEORI, CDate("01.01." & dateCBAM.Year), CDate("31.12." & dateCBAM.Year), za_MRN) / 1000
Dim quarter As Integer = Math.Ceiling(dateCBAM.Month / 3.0)
Dim Country As String = If(CBAM_ITEMS.FirstOrDefault()?.zaItem_OriginCountry, "")
createOrUpdateKundenSicherheitseintrag(KD_IND, Country, vertretenerEORI, quarter, dateCBAM.Year)
'Prüft, ob Vertrag vorliegt:
Dim hasValidVertrag_CBAM As Boolean =
@@ -679,6 +688,10 @@ Public Class cVERAG_CustomsDeclarations
Dim dateCBAM = If(If(za_ReleaseDate, za_DeclarationDate), Now)
Dim Country As String = If(CBAM_ITEMS.FirstOrDefault()?.zaItem_OriginCountry, "")
Dim quarter As Integer = Math.Ceiling(dateCBAM.Month / 3.0)
createOrUpdateKundenSicherheitseintrag(KD, Country, importerEORI, quarter, dateCBAM.Year)
Dim eigenmasseSumme_Shipment As Decimal = CBAM_ITEMS.Sum(Function(i) If(i.zaItem_NetMass, 0D)) / 1000
Dim eigenmasseSumme_YEAR As Decimal = getCBAM_KG(importerEORI, CDate("01.01." & dateCBAM.Year), CDate("31.12." & dateCBAM.Year)) / 1000
@@ -807,6 +820,95 @@ Public Class cVERAG_CustomsDeclarations
Return String.Join(", ", result)
End Function
Private Function createOrUpdateKundenSicherheitseintrag(KUNDE As cKunde, ImportCountry As String, EORI As String, cbamQquarter As Integer, cbamYear As Integer)
Dim von As Date
Dim bis As Date
Dim CBAMZertifikatKosten As Double = 0
If ImportCountry = "" Then Return False
Select Case cbamQquarter
Case "1"
von = New Date(cbamYear, 1, 1)
bis = New Date(cbamYear, 3, 31)
CBAMZertifikatKosten = 75.36
Case "2"
von = New Date(cbamYear, 4, 1)
bis = New Date(cbamYear, 6, 30)
CBAMZertifikatKosten = 75.28
Case "3"
von = New Date(cbamYear, 7, 1)
bis = New Date(cbamYear, 9, 30)
CBAMZertifikatKosten = 82.32
Case "4"
von = New Date(cbamYear, 10, 1)
bis = New Date(cbamYear, 12, 31)
CBAMZertifikatKosten = 0
End Select
Dim EORI_ = {EORI}
Dim LIST As List(Of VERAG_PROG_ALLGEMEIN.cVERAG_CustomsDeclarations) = VERAG_PROG_ALLGEMEIN.cVERAG_CustomsDeclarations.LOAD_List_CBAM(EORI_, ImportCountry, von, bis,, True)
Dim grouped = From za In LIST
Where za.Items IsNot Nothing
From it In za.Items
Let tarif = If(it.zaItem_HSCode IsNot Nothing AndAlso it.zaItem_HSCode.Length >= 8,
it.zaItem_HSCode.Substring(0, 8),
it.zaItem_HSCode)
Let country = it.zaItem_OriginCountry
Group By tarif, country
Into grp = Group
Select New With {
.Tarif = tarif,
.Country = country,
.Eigenmasse = grp.Sum(Function(x) If(x.it.zaItem_NetMass, 0D)),
.Rohmasse = grp.Sum(Function(x) If(x.it.zaItem_GrossMass, 0D)),
.RechnungswertEUR = grp.Sum(Function(x) If(x.it.zaItem_InvoiceValueEUR, 0D))
}
Dim gesamtBetrag As Double = 0
Dim cost As Double = 0
Dim emission As Double = 0
Dim benchmark As Double = 0
For Each r In grouped
cATEZ_Greenpulse_CBAM_CostCalculation.calcCBAM_ByCertificatePrice(r.Tarif, r.Rohmasse, r.Country, CBAMZertifikatKosten, cbamYear, cost, emission, benchmark)
gesamtBetrag += cost
Next
Dim Kunde_Sicherheit As New cKundenSicherheiten(KUNDE.KundenNr, cbamQquarter, cbamYear)
If Kunde_Sicherheit.hasEntry Then
Kunde_Sicherheit.sc_Betrag = gesamtBetrag
KUNDE.SAVE()
Else
Kunde_Sicherheit.sc_Bemerkung = "EUR"
Kunde_Sicherheit.sc_Bemerkung = "CBAM Kosten Q" & cbamQquarter & " " & cbamYear
Kunde_Sicherheit.sc_Art = "BANKGARANTIE"
Kunde_Sicherheit.sc_Betrag = gesamtBetrag
Kunde_Sicherheit.sc_datum = Today()
Kunde_Sicherheit.sc_Mitarbeiter = "AUTO"
KUNDE.SAVE()
End If
End Function
Public Function getCBAM_KG(EORI As String, von As Date, bis As Date, Optional without_MRN As String = "", Optional isDeclarant As Boolean = False) As Decimal
Try
If EORI = "" Then Return 0