barverkauf, etc.

This commit is contained in:
2026-07-31 15:28:27 +02:00
parent 90fffa9572
commit 3f54bba380
10 changed files with 249 additions and 158 deletions

View File

@@ -282,6 +282,9 @@ Public Class EABeleg
Property ECZahlungsPerAPI As Boolean = False
Property ECTerminalreturnCode As Object = Nothing
Property EC_daid As Integer = 0
Property FT_ReceiptReference As Object = Nothing
Property FT_ReceiptReference_Storno As Object = Nothing
Property POS As New List(Of EABelegPositionen)
@@ -362,6 +365,8 @@ Public Class EABeleg
Me.ECZahlungsPerAPI = cSqlDb.checkNullReturnValue(dr.Item("ECZahlungsPerAPI"), Nothing)
Me.ECTerminalreturnCode = cSqlDb.checkNullReturnValue(dr.Item("ECTerminalreturnCode"), Nothing)
Me.EC_daid = cSqlDb.checkNullReturnValue(dr.Item("EC_daid"), Nothing)
Me.FT_ReceiptReference = cSqlDb.checkNullReturnValue(dr.Item("FT_ReceiptReference"), Nothing)
Me.FT_ReceiptReference_Storno = cSqlDb.checkNullReturnValue(dr.Item("FT_ReceiptReference_Storno"), Nothing)
If loadPosAswell Then POS = LOAD_POS_List(Mandant, Niederlassung, Benutzer, BelegNr, BelegDat)
' MsgBox(POS.Count)
@@ -547,6 +552,8 @@ Public Class EABeleg
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("ECZahlungsPerAPI", ECZahlungsPerAPI))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("ECTerminalreturnCode", ECTerminalreturnCode))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("EC_daid", EC_daid))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_ReceiptReference", FT_ReceiptReference))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_ReceiptReference_Storno", FT_ReceiptReference_Storno))
'For Each p As System.Reflection.PropertyInfo In Me.GetType().GetProperties()
'If p.CanRead Then

View File

@@ -1,9 +1,13 @@

Imports System.Data.SqlClient
Imports System.IO
Imports System.Reflection
Imports Chilkat
Imports Gma.QrCodeNet.Encoding
Imports GrapeCity.DataVisualization.Chart
Imports itextsharp.text.pdf.qrcode
Imports Newtonsoft.Json
Imports QRCoder
Public Class FtReceiptCases
@@ -257,71 +261,71 @@ Public Class cFiskaltrustClient_chilkat
json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o"))
Dim receipCase As Long
Select Case _receiptCase
Dim receipCase As Long
Select Case _receiptCase
Case "Storno"
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction 'Storno
Case "Storno"
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction 'Storno
Case Else
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction 'Verkauf
Case Else
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction 'Verkauf
End Select
End Select
json.UpdateString("ftReceiptCase", receipCase)
json.UpdateString("ftReceiptCase", receipCase)
Dim chargeItems = json.AppendArray("cbChargeItems")
Dim chargeItems = json.AppendArray("cbChargeItems")
For Each p In POS
For Each p In POS
If chargeItems.AddObjectAt(-1) Then
Dim item As Chilkat.JsonObject = chargeItems.ObjectAt(chargeItems.Size - 1)
item.UpdateInt("Quantity", p.Anzahl)
item.UpdateNumber("Amount", p.Preis.ToString().Replace(",", "."))
item.UpdateNumber("VATRate", vat.ToString().Replace(",", "."))
item.UpdateString("Description", p.LeistungsBez)
If chargeItems.AddObjectAt(-1) Then
Dim item As Chilkat.JsonObject = chargeItems.ObjectAt(chargeItems.Size - 1)
item.UpdateInt("Quantity", p.Anzahl)
item.UpdateNumber("Amount", p.Preis.ToString().Replace(",", "."))
item.UpdateNumber("VATRate", vat.ToString().Replace(",", "."))
item.UpdateString("Description", p.LeistungsBez)
Dim ChargeItemCase As Long
Select Case vat
Dim ChargeItemCase As Long
Select Case vat
Case 19D
ChargeItemCase = FtChargeItemCase.RevenueNormal
Case 19D
ChargeItemCase = FtChargeItemCase.RevenueNormal
Case 7D
ChargeItemCase = FtChargeItemCase.RevenueReduced
Case 7D
ChargeItemCase = FtChargeItemCase.RevenueReduced
Case 0D
ChargeItemCase = FtChargeItemCase.RevenueTaxFree
Case 0D
ChargeItemCase = FtChargeItemCase.RevenueTaxFree
Case Else
Throw New Exception("Unbekannter Steuersatz")
End Select
Case Else
Throw New Exception("Unbekannter Steuersatz")
End Select
item.UpdateString("ftChargeItemCase", ChargeItemCase)
End If
item.UpdateString("ftChargeItemCase", ChargeItemCase)
End If
Next
Next
Dim payItems = json.AppendArray("cbPayItems")
payItems.AddObjectAt(-1)
Dim pay As Chilkat.JsonObject = payItems.ObjectAt(payItems.Size - 1)
pay.UpdateInt("Quantity", 1)
pay.UpdateNumber("Amount", amount.ToString().Replace(",", "."))
pay.UpdateString("Description", kindOfPayment)
Dim payItems = json.AppendArray("cbPayItems")
payItems.AddObjectAt(-1)
Dim pay As Chilkat.JsonObject = payItems.ObjectAt(payItems.Size - 1)
pay.UpdateInt("Quantity", 1)
pay.UpdateNumber("Amount", amount.ToString().Replace(",", "."))
pay.UpdateString("Description", kindOfPayment)
Select Case kindOfPayment
Case "Cash"
pay.UpdateString("ftPayItemCase", FtPayItemCases.Cash)
Case "Card"
pay.UpdateString("ftPayItemCase", FtPayItemCases.DebitCard)
End Select
Select Case kindOfPayment
Case "Cash"
pay.UpdateString("ftPayItemCase", FtPayItemCases.Cash)
Case "Card"
pay.UpdateString("ftPayItemCase", FtPayItemCases.DebitCard)
End Select
Return json
Return json
End Function
@@ -460,7 +464,7 @@ Public Class cFiskaltrustClient_chilkat
Return Terminal_ID & "_" & Application.ProductVersion
End Function
Public Function saveRKSV_FT(ByRef result_zahlung As String, ByRef QR_CodeString As String) As Boolean
Public Function saveRKSV_FT(ByRef result_zahlung As String, ByRef QR_CodeString As String, ByRef beleg_temp As EABeleg, ByRef isStorno As Boolean) As Boolean
If result_zahlung <> "" Then
Dim json As New Chilkat.JsonObject
@@ -498,6 +502,18 @@ Public Class cFiskaltrustClient_chilkat
.ftState = json.StringOf("ftState")
saved = .SAVE()
If saved AndAlso beleg_temp IsNot Nothing Then
If isStorno Then
beleg_temp.FT_ReceiptReference_Storno = .cbReceiptReference
beleg_temp.SAVE()
Else
beleg_temp.FT_ReceiptReference = .cbReceiptReference
End If
End If
End With
@@ -525,10 +541,29 @@ Public Class cFiskaltrustClient_chilkat
.ftSignatureFormat = SignObj.StringOf("ftSignatureFormat")
.ftSignatureType = SignObj.StringOf("ftSignatureType")
saved = .SAVE()
If IsNumeric(.ftSignatureType) AndAlso CInt(.ftSignatureType) = IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True, 0, 3) Then
'QR_CodeString = .ftData
End If
'If IsNumeric(.ftSignatureType) AndAlso CInt(.ftSignatureType) = IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True, 0, 3) Then
' QR_CodeString = .ftData
'End If
'https://receipts.fiskaltrust.eu/{ftQueueID}/{ftQueueItemID}
Dim URL_FT As String = ""
If Not String.IsNullOrWhiteSpace(ftSig.ftQueueID) AndAlso Not String.IsNullOrWhiteSpace(ftSig.ftQueueItemID) Then
URL_FT = $"https://receipts.fiskaltrust.eu/{ftSig.ftQueueID}/{ftSig.ftQueueItemID}"
Using qrGenerator As New QRCodeGenerator()
Using qrData As QRCodeData = qrGenerator.CreateQrCode(URL_FT, QRCodeGenerator.ECCLevel.Q)
Dim qrCode As New PngByteQRCode(qrData)
Dim qrBytes As Byte() = qrCode.GetGraphic(20)
Dim qrBase64 As String = Convert.ToBase64String(qrBytes)
QR_CodeString = qrBase64
End Using
End Using
End If
End With
Next

View File

@@ -1,10 +1,7 @@
Imports System.Net.Http
Imports System.Text
Imports GrapeCity.ActiveReports
Imports GrapeCity.DataVisualization.Options
Imports Newtonsoft.json
Imports GrapeCity.ActiveReports
Imports SDL.RKSVServer
Imports VERAG_PROG_ALLGEMEIN.DSFinVKService
Imports VERAG_PROG_ALLGEMEIN.RKSV_DE_DSFinVKService
Public Class cRKSV
Shared SQL As New SQL
@@ -92,7 +89,7 @@ Public Class cRKSV
End Function
Shared Function insertRKSVFiskaltrustAsync(ByVal kasse As cRKSV_Kasse, CompanyGUID As String, ByVal umsatzZaehler As Double, ByVal belegDat As DateTime, ByVal steuerSchluessel As Integer, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, POS As List(Of EABelegPositionen), ByRef QR_CodeString As String, ByRef LastJWS As String) As Boolean
Shared Function insertRKSVFiskaltrustAsync(ByVal kasse As cRKSV_Kasse, beleg_temp As EABeleg, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, ByRef QR_CodeString As String, ByRef LastJWS As String) As Boolean
Try
@@ -103,7 +100,7 @@ Public Class cRKSV
credentials.Username = "Admin"
credentials.Password = "verag#2"
credentials.CashboxID = kasse.rksv_FT_CashboxID
credentials.CompanyGUID = CompanyGUID
credentials.CompanyGUID = kasse.rksv_CompanyGUID
Dim AccessToken As String = kasse.rksv_FT_AccessToken
Dim jws As String = String.Empty
@@ -112,16 +109,18 @@ Public Class cRKSV
'Dim answer As String = String.Empty
Dim Belegnummer = RKSV_Beleg_Id
Dim BelegDatumUhrzeit = belegDat ' BELEG.BelegDat
Dim BelegDatumUhrzeit = beleg_temp.BelegDat
Dim steuersatz As Double = SQL.getValueTxtBySql("SELECT isnull(tblSteuersätze.Steuersatz,0) FROM tblSteuersätze WHERE tblSteuersätze.Nr='" & steuerSchluessel & "' ", "FMZOLL")
Dim steuersatz As Double = SQL.getValueTxtBySql("SELECT isnull(tblSteuersätze.Steuersatz,0) FROM tblSteuersätze WHERE tblSteuersätze.Nr='" & beleg_temp.Steuerschlüssel & "' ", "FMZOLL")
Dim BetragSatzNormal = IIf(steuersatz = 0.2, summeBRUTTO, 0.0) 'summe
Dim BetragSatzErm1 = IIf(steuersatz = 0.1, summeBRUTTO, 0.0)
Dim BetragSatzErm2 = IIf(steuersatz = 0.13, summeBRUTTO, 0.0)
Dim BetragSatzNull = IIf(steuersatz = 0.0, summeBRUTTO, 0.0)
Dim BetragSatzBesonders = IIf(steuersatz = 0.19, summeBRUTTO, 0.0)
Dim StandUmsatzzaehler = umsatzZaehler 'KASSE.rksv_Umsatzzaehler
Dim StandUmsatzzaehler = kasse.rksv_Umsatzzaehler
Dim kindOfPayment As String = getKindOfPayment(beleg_temp)
If False Then
'Dim client As New cFiskaltrustClient(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country)
@@ -134,9 +133,9 @@ Public Class cRKSV
'End If
Else
Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country)
Dim result = client.SignReceipt(summeBRUTTO, steuersatz, POS, "Cash", kasse.rksv_id)
Dim result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id)
If result <> "" Then
Return client.saveRKSV_FT(result, QR_CodeString)
Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, False)
Else
Return False
End If
@@ -144,11 +143,6 @@ Public Class cRKSV
End If
Catch ex As Exception
MsgBox("Es ist ein Fehler bei der Signatur aufgetreten (insertRKSV): " & vbNewLine & ex.Message & ex.StackTrace)
Return False
@@ -915,18 +909,13 @@ Public Class cRKSV
Dim client As RKSVWcfClient = New RKSVWcfClient()
client.Endpoint.Address = New System.ServiceModel.EndpointAddress(getRKSVLink(kasse))
client.Open()
' svcRKSV.DBUserCredentials m_credentials = new svcRKSV.DBUserCredentials();
Dim credentials As New SDL.RKSVServer.DBUserCredentials
credentials.Database = "RKSVWcfDB"
credentials.Server = "AVISO\SQLEXPRESS"
credentials.Username = "Admin"
credentials.Password = "verag#2"
'credentials.CashboxID = kasse '"VERAG-SUB-KASSE-ZOLL"
'credentials.CompanyGUID = CompanyGUID ' "9119d9ae-f549-4a0f-a50f-0500ec7ca059"
credentials.CashboxID = kasse.rksv_bez '"VERAG-SUB-KASSE-ZOLL"
credentials.CompanyGUID = kasse.rksv_CompanyGUID ' "9119d9ae-f549-4a0f-a50f-0500ec7ca059"
@@ -952,23 +941,6 @@ Public Class cRKSV
Dim BetragSatzBesonders = IIf(steuersatz = 0.19, summeBRUTTO, 0.0)
Dim StandUmsatzzaehler = kasse.rksv_Umsatzzaehler 'KASSE.rksv_Umsatzzaehler
' Dim BetragSatzNormal = summe * -1
' Dim BetragSatzErm1 = IIf(steuersatz = 0.1, summe, 0.0) * -1
' Dim BetragSatzErm2 = IIf(steuersatz = 0.13, summe, 0.0) * -1
' Dim BetragSatzNull = IIf(steuersatz = 0.0, summe, 0.0) * -1
' Dim BetragSatzBesonders = IIf(steuersatz = 0.19, summe, 0.0) * -1
' Dim StandUmsatzzaehler = kasse.rksv_Umsatzzaehler
' Dim BetragSatzBesonders = 0
' Dim BetragSatzBesonders = 0
' Dim BetragSatzBesonders = 0
'client.ExportJWS
' MsgBox(credentials.CashboxID & " credentials.CashboxID")
' MsgBox(credentials.CompanyGUID & " credentials.CompanyGUID")
If (client.SignStornoReceipt(credentials, Belegnummer, BelegDatumUhrzeit, BetragSatzNormal, BetragSatzErm1, BetragSatzErm2, BetragSatzBesonders, BetragSatzNull, jws, qr, ocra, answer)) Then
QR_CodeString = qr
@@ -996,6 +968,82 @@ Public Class cRKSV
End Try
Return False
End Function
Shared Function stornoRKSV_FT(ByVal kasse As cRKSV_Kasse, ByVal beleg_temp As EABeleg, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef answer As String) As Boolean
Try
If beleg_temp.rksv_BelegId <= 0 Then
MsgBox("Keine RKSV-Beleg-ID")
Return False
End If
Dim credentials As New SDL.RKSVServer.DBUserCredentials
credentials.Database = "RKSVWcfDB"
credentials.Server = "AVISO\SQLEXPRESS"
credentials.Username = "Admin"
credentials.Password = "verag#2"
credentials.CashboxID = kasse.rksv_bez '"VERAG-SUB-KASSE-ZOLL"
credentials.CompanyGUID = kasse.rksv_CompanyGUID ' "9119d9ae-f549-4a0f-a50f-0500ec7ca059"
Dim jws As String = String.Empty
Dim qr As String = String.Empty
Dim ocra As String = String.Empty
'Dim answer As String = String.Empty
Dim Belegnummer = beleg_temp.rksv_BelegId
Dim BelegDatumUhrzeit = beleg_temp.BelegDat
Dim steuersatz As Double = SQL.getValueTxtBySql("SELECT isnull(tblSteuersätze.Steuersatz,0) FROM tblSteuersätze WHERE tblSteuersätze.Nr='" & beleg_temp.Steuerschlüssel & "' ", "FMZOLL")
Dim BetragSatzNormal = IIf(steuersatz = 0.2, beleg_temp.rksv_umsatz, 0.0) 'summe
Dim BetragSatzErm1 = IIf(steuersatz = 0.1, beleg_temp.rksv_umsatz, 0.0)
Dim BetragSatzErm2 = IIf(steuersatz = 0.13, beleg_temp.rksv_umsatz, 0.0)
Dim BetragSatzNull = IIf(steuersatz = 0.0, beleg_temp.rksv_umsatz, 0.0)
Dim BetragSatzBesonders = IIf(steuersatz = 0.19, beleg_temp.rksv_umsatz, 0.0)
Dim StandUmsatzzaehler = kasse.rksv_Umsatzzaehler 'KASSE.rksv_Umsatzzaehler
Dim kindOfPayment As String = getKindOfPayment(beleg_temp)
If False Then
Else
Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country)
Dim result = client.ChancelReceipt(beleg_temp.FT_ReceiptReference, beleg_temp.rksv_umsatz, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id)
If result <> "" Then
Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, True)
Else
Return False
End If
End If
Return True
Catch ex As Exception
MsgBox("Es ist ein Fehler bei der Signatur aufgetreten (insertRKSV): " & vbNewLine & ex.Message & ex.StackTrace)
End Try
Return False
End Function
Private Shared Function getKindOfPayment(beleg As EABeleg) As String
If beleg Is Nothing Then Return ""
Dim kindOfPayment As String = "Cash"
If beleg.ECZahlungsNr IsNot Nothing AndAlso IsNumeric(beleg.ECZahlungsNr) AndAlso beleg.ECZahlungsNr > 0 Then
kindOfPayment = "Card"
End If
Return kindOfPayment
End Function
'Beleg storno und Kassenbuch Gegenbuchung
Shared Function STORNO(BELEG As EABeleg, ByVal grund As String, Firma As String, Optional stornoGegenbuchen As Boolean = False) As EABeleg

View File

@@ -470,6 +470,9 @@
<Reference Include="QRCode">
<HintPath>..\..\..\dll\QRCode.dll</HintPath>
</Reference>
<Reference Include="QRCoder, Version=1.8.0.0, Culture=neutral, PublicKeyToken=c4ed5b9ae8358a28, processorArchitecture=MSIL">
<HintPath>..\..\..\Aviso\AVISO\packages\QRCoder.1.8.0\lib\net40\QRCoder.dll</HintPath>
</Reference>
<Reference Include="Registrierkasse">
<HintPath>..\..\..\dll\Registrierkasse.dll</HintPath>
</Reference>

View File

@@ -148,7 +148,6 @@ Partial Class frmMDM_USTVAntrag
Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStripMenuItem3 = New System.Windows.Forms.ToolStripMenuItem()
Me.FakturiertToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.txtWarning = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.UstCntlUSTV_AntragPosition1 = New SDL.ustCntlUSTV_AntragPosition()
Me.UstCntlUSTV_AntragErstattungen1 = New SDL.ustCntlUSTV_ErstattungPosition()
Me.pnlBottom.SuspendLayout()
@@ -430,7 +429,6 @@ Partial Class frmMDM_USTVAntrag
'pnlHeader
'
Me.pnlHeader.BackColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
Me.pnlHeader.Controls.Add(Me.txtWarning)
Me.pnlHeader.Controls.Add(Me.cbxRGretour)
Me.pnlHeader.Controls.Add(Me.lblGesamtUSteuer)
Me.pnlHeader.Controls.Add(Me.lblDiffernezbetrag)
@@ -529,7 +527,7 @@ Partial Class frmMDM_USTVAntrag
Me.KdSearchBox1.KdNr = "-1"
Me.KdSearchBox1.kdNrField = Nothing
Me.KdSearchBox1.KdNrNullInt = Nothing
Me.KdSearchBox1.Location = New System.Drawing.Point(298, 10)
Me.KdSearchBox1.Location = New System.Drawing.Point(284, 12)
Me.KdSearchBox1.Name = "KdSearchBox1"
Me.KdSearchBox1.nurAktive = True
Me.KdSearchBox1.searchActive = True
@@ -1935,34 +1933,6 @@ Partial Class frmMDM_USTVAntrag
Me.FakturiertToolStripMenuItem.Text = "Fakturiert zurücksetzen"
Me.FakturiertToolStripMenuItem.Visible = False
'
'txtWarning
'
Me.txtWarning._DateTimeOnly = False
Me.txtWarning._numbersOnly = False
Me.txtWarning._numbersOnlyKommastellen = ""
Me.txtWarning._numbersOnlyTrennzeichen = False
Me.txtWarning._Prozent = False
Me.txtWarning._ShortDateNew = False
Me.txtWarning._ShortDateOnly = False
Me.txtWarning._TimeOnly = False
Me.txtWarning._TimeOnly_Seconds = False
Me.txtWarning._value = ""
Me.txtWarning._Waehrung = False
Me.txtWarning._WaehrungZeichen = False
Me.txtWarning.BackColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
Me.txtWarning.BorderStyle = System.Windows.Forms.BorderStyle.None
Me.txtWarning.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.txtWarning.ForeColor = System.Drawing.Color.Black
Me.txtWarning.Location = New System.Drawing.Point(475, 36)
Me.txtWarning.MaxLength = 10
Me.txtWarning.MaxLineLength = -1
Me.txtWarning.MaxLines_Warning = ""
Me.txtWarning.MaxLines_Warning_Label = Nothing
Me.txtWarning.Multiline = True
Me.txtWarning.Name = "txtWarning"
Me.txtWarning.Size = New System.Drawing.Size(88, 40)
Me.txtWarning.TabIndex = 61
'
'UstCntlUSTV_AntragPosition1
'
Me.UstCntlUSTV_AntragPosition1.Dock = System.Windows.Forms.DockStyle.Fill
@@ -2153,5 +2123,4 @@ Partial Class frmMDM_USTVAntrag
Friend WithEvents btnSortNachLeist As Button
Friend WithEvents txtVZOffen As VERAG_PROG_ALLGEMEIN.MyTextBox
Friend WithEvents Label19 As Label
Friend WithEvents txtWarning As VERAG_PROG_ALLGEMEIN.MyTextBox
End Class

View File

@@ -57,18 +57,16 @@ Public Class frmMDM_USTVAntrag
lblGesamtErstattungFW.Text = "-"
lblDiffernezbetragFW.Text = "-"
txtWarning.Text = ""
lblGesamtUSteuer.Text = "-"
lblGesamtUSteuer.Text="-"
lblGesamtErstattung.Text = "-"
lblDiffernezbetrag.Text = "-"
btnAntrageeinarbeiten.Enabled = Not UStVAn_ID <= 0
FlowLayoutPanel.Enabled = Not UStVAn_ID <= 0
btnEintragloeschen.Enabled = Not UStVAn_ID <= 0
btnNeuerEintrag.Enabled = Not UStVAn_ID <= 0
UstCntlUSTV_AntragPosition1.Enabled = Not UStVAn_ID <= 0
cbxLand.Visible = UStVAn_ID <= 0
FlowLayoutPanel.Enabled= Not UStVAn_ID <= 0
btnEintragloeschen.Enabled= Not UStVAn_ID <= 0
btnNeuerEintrag.Enabled= Not UStVAn_ID <= 0
UstCntlUSTV_AntragPosition1.Enabled= Not UStVAn_ID <= 0
cbxLand.Visible= UStVAn_ID <= 0
With dgvUSTVPositionen
@@ -76,11 +74,6 @@ Public Class frmMDM_USTVAntrag
If UStVAn_ID <= 0 Then Exit Sub
'.SET_SQL("SELECT [UStVAn_ID] ,[UStVPo_ID] ,[UStVPo_ReDat],[UStVPo_ReNr],[UStVPo_Leistungsbezeichnung],[UStVPo_Leistender],leist.[UstV_Leistender_Strasse] + ' ' + leist.[UstV_Leistender_StrasseNr] as [UstV_Leistender_Strasse],leist.[UstV_Leistender_PLZ],leist.[UstV_Leistender_Stadt],leist.[UstV_Leistender_Land],leist.[UstV_Leistender_UstNr],[UStVPo_USteuerbetrag],[UStVPo_Schnittstelle],[UStVPo_SchnittstellenNr],[UStVPo_Umrechnungskurs],[UStVPo_USteuerbetragEUR],[UStVPo_Sachbearbeiter], [UStVPo_daId]
' FROM [tblUStVPositionen]
' left join [tblUStVLeistender] as leist on leist.UStV_Leistender = [tblUStVPositionen].[UStVPo_Leistender]
' where UStVAn_ID='" & UStVAn_ID & "' ORDER BY UStVPo_ID", "FMZOLL")
.SET_SQL("SELECT [UStVAn_ID] ,[UStVPo_ID] " & IIf(cbxInterneNr.Checked, ",[UStVPo_interneNr] as intNr", "") & " ,[UStVPo_ReDat],[UStVPo_ReNr],[UStVPo_Leistungsbezeichnung],[UStVPo_Nettobetrag],[UStVPo_NettobetragEUR],[UStVPo_Leistender],leist.[UstV_Leistender_Strasse] + ' ' + leist.[UstV_Leistender_StrasseNr] as [UstV_Leistender_Strasse],leist.[UstV_Leistender_Strasse] as StrasseOnly,leist.[UstV_Leistender_StrasseNr] as StrassenNrOnly,leist.[UstV_Leistender_PLZ],leist.[UstV_Leistender_Stadt],leist.[UstV_Leistender_Land],leist.[UstV_Leistender_UstNr],[UStVPo_USteuerbetrag],[UStVPo_Schnittstelle],[UStVPo_SchnittstellenNr],[UStVPo_Umrechnungskurs],[UStVPo_USteuerbetragEUR],[UStVPo_Sachbearbeiter], [UStVPo_daId], [UStVPo_daId_loeschbar] ,[UStVPo_VZ],[UStVPo_VZ_RKID] ,cast(case when isnull([UStVPo_VZ_RKID],0) = 0 then 0 else 1 end as bit) as VZabrechnet
FROM [tblUStVPositionen]
LEFT JOIN [tblUStVLeistender] as leist
@@ -207,17 +200,18 @@ Public Class frmMDM_USTVAntrag
DirectCast(r.Cells("clmnPDF"), DataGridViewImageCell).Value = My.Resources.pdf
End If
If Not (r.Cells("UStVPo_SchnittstellenNr").Value = 4 OrElse r.Cells("UStVPo_SchnittstellenNr").Value = 9) AndAlso Not r.Cells("UStVPo_ReNr").Value.ToString.ToLower.StartsWith("bis") Then 'MSE und "SAMMELBERIFF" ausnehmen
Dim rechnungsNr = CStr(r.Cells("UStVPo_ReNr").Value)
Dim rechnungsNr = CStr(r.Cells("UStVPo_ReNr").Value)
If Not String.IsNullOrWhiteSpace(rechnungsNr) Then
If Not invoiceNumbers.Add(rechnungsNr) Then
txtWarning.Text = "dopp. Rechnungsnr!"
Exit For
If Not String.IsNullOrWhiteSpace(rechnungsNr) Then
If Not invoiceNumbers.Add(rechnungsNr) Then
r.Cells("UStVPo_ReNr").Style.BackColor = Color.IndianRed
End If
End If
End If
Next
If .Columns.Count > 1 Then
@@ -1832,7 +1826,7 @@ Public Class frmMDM_USTVAntrag
If UStVAn_ID > 0 Then
Dim invoiceNumbers As New HashSet(Of String)
dgvUSTVPositionen.GetOrder()
@@ -1844,6 +1838,18 @@ Public Class frmMDM_USTVAntrag
VERAG_PROG_ALLGEMEIN.cMDMFunctionsAllgemein.Update_UStVASummenNeuBerechnen_USTVA(USTV_ANTRAG.UStVAn_ID)
Dim invoiceNumbers As New HashSet(Of String)
For Each r In dgvUSTVPositionen.Rows
Dim rechnungsNr = CStr(r.Cells("UStVPo_ReNr").Value)
If Not String.IsNullOrWhiteSpace(rechnungsNr) Then
If Not invoiceNumbers.Add(rechnungsNr) Then
MessageBox.Show($"Doppelt erfasste RechnungsNr vorhanden: {rechnungsNr}")
Exit For
End If
End If
Next
If USTV_ANTRAG.UStVAn_Währungscode IsNot Nothing AndAlso USTV_ANTRAG.UStVAn_Währungscode <> "EUR" AndAlso USTV_ANTRAG.UStVAn_Währungscode <> "" Then
Dim averageUmrechnungskurs As Double = 1
Dim invoicedateOK As Boolean = True
@@ -1859,14 +1865,7 @@ Public Class frmMDM_USTVAntrag
PosNr = row.Cells("UStVPo_ID").Value
End If
Dim rechnungsNr = CStr(row.Cells("UStVPo_ReNr").Value)
If Not String.IsNullOrWhiteSpace(rechnungsNr) Then
If Not invoiceNumbers.Add(rechnungsNr) Then
MessageBox.Show($"Doppelt erfasste RechnungsNr: {rechnungsNr}")
Exit For
End If
End If
Next
averageUmrechnungskurs = averageUmrechnungskurs / dgvUSTVPositionen.Rows.Count

View File

@@ -802,7 +802,7 @@ Public Class usrCntlUSTV
Dim sqlStr = "SELECT [UStVAn_ID] as AntragsID,cast([UStVPo_ReDat] as date) as Rechnungsdatum,[UStVPo_ReNr] as RechnungsNr
FROM [VERAG].[dbo].[tblUStVPositionen] where Year([UStVPo_ReDat]) >= " & RechnungsjahrVon & " and Year([UStVPo_ReDat]) >= " & RechnungsjahrBis & "
FROM [VERAG].[dbo].[tblUStVPositionen] where Year([UStVPo_ReDat]) >= " & RechnungsjahrVon & " and Year([UStVPo_ReDat]) <= " & RechnungsjahrBis & "
group by [UStVAn_ID] ,[UStVPo_ReNr], [UStVPo_ReDat]
HAVING COUNT(*) > 1
order by [UStVAn_ID] desc"

View File

@@ -1704,7 +1704,7 @@ Public Class frmBelegNeu
Dim verarbeitet As Boolean = False
If KASSE.rksv_FT_RestServiceURL <> "" Then
Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, BELEG.POS, QR_CodeString, LastJWS)
Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS)
'result.Wait()
verarbeitet = result
Else
@@ -2028,7 +2028,7 @@ Public Class frmBelegNeu
If vbYes = MsgBox(result & vbNewLine & vbNewLine & "Testdaten in DB speichern?", vbYesNoCancel) Then
Dim QR_CodeString As String = ""
client_chilkat.saveRKSV_FT(result, QR_CodeString)
client_chilkat.saveRKSV_FT(result, QR_CodeString, Nothing, False)
End If
Else
Return False

View File

@@ -207,6 +207,8 @@ Public Class frmKassenbuch
' " ORDER BY b.rksv_BelegId DESC;", "FMZOLL")
.LOAD()
If .Rows.Count = 0 Then Exit Sub
.Columns("Betrag").DefaultCellStyle.Format = "C"
.Columns("Betrag").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight
.Columns("Ordnungsbegriff").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
@@ -273,6 +275,8 @@ Public Class frmKassenbuch
' " " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' ORDER BY JournalNr DESC", "FMZOLL")
.LOAD()
If .Rows.Count = 0 Then Exit Sub
.Columns("JournalNr").Width = 55
.Columns("JournalNr").DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopCenter
.Columns("Brutto").DefaultCellStyle.Format = "C"
@@ -1007,10 +1011,24 @@ Public Class frmKassenbuch
Dim LastJWS As String = ""
Dim answer = ""
If KASSETmp.rksv_aktiv Then
If Not cRKSV.stornoRKSV(KASSETmp, BELEGTmp.BelegDat, BELEGTmp.Steuerschlüssel, BELEGTmp.rksv_BelegId, BELEGTmp.rksv_umsatz, QRQString, LastJWS, answer) Then
MessageBox.Show("Fehler bei der RKSV-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso IsNumeric(KASSETmp.rksv_FT_CashboxID) AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country)
If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer) Then
MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
Else
If Not cRKSV.stornoRKSV(KASSETmp, BELEGTmp.BelegDat, BELEGTmp.Steuerschlüssel, BELEGTmp.rksv_BelegId, BELEGTmp.rksv_umsatz, QRQString, LastJWS, answer) Then
MessageBox.Show("Fehler bei der RKSV-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
End If
End If
If KASSETmp.rksvDE_aktiv Then
Dim PERSONALTmp1 As cPersonal = FMZOLL_SQL.getPersonalById(BELEGTmp.Benutzer)
@@ -1075,14 +1093,25 @@ Public Class frmKassenbuch
Dim LastJWS As String = ""
Dim answer = ""
If KASSETmp.rksv_aktiv Then
If Not cRKSV.stornoRKSV(KASSETmp, BELEGTmp.BelegDat, BELEGTmp.Steuerschlüssel, If(BELEGTmp.rksv_BelegIdStorno, BELEGTmp.rksv_BelegId), BELEGTmp.rksv_umsatz, QRQString, LastJWS, answer) Then
'FEHLER!!
If KASSETmp.rksv_StornoIncreaseBelegCnt Then BELEGTmp.rksv_BelegIdStorno = Nothing
BELEGTmp = cRKSV.STORNO_RUECKGAENGIG(BELEGTmp, grund, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung
MessageBox.Show("Fehler bei der RKSV-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country)
If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer) Then
MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
Else
If Not cRKSV.stornoRKSV(KASSETmp, BELEGTmp.BelegDat, BELEGTmp.Steuerschlüssel, If(BELEGTmp.rksv_BelegIdStorno, BELEGTmp.rksv_BelegId), BELEGTmp.rksv_umsatz, QRQString, LastJWS, answer) Then
'FEHLER!!
If KASSETmp.rksv_StornoIncreaseBelegCnt Then BELEGTmp.rksv_BelegIdStorno = Nothing
BELEGTmp = cRKSV.STORNO_RUECKGAENGIG(BELEGTmp, grund, KASSETmp.rksv_firma) 'Beleg storno und Kassenbuch Gegenbuchung
MessageBox.Show("Fehler bei der RKSV-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
End If
End If
If KASSETmp.rksvDE_aktiv Then
If Not cRKSV.stornoRKSV_DE(PERSONALTmp, BELEGTmp, KASSETmp, If(BELEGTmp.rksv_BelegIdStorno, BELEGTmp.rksv_BelegId), BELEGTmp.rksv_BelegId, BELEGTmp.rksv_umsatz, QRQString, LastJWS, False, answer) Then
'FEHLER!!

View File

@@ -71,6 +71,7 @@
<package id="Microsoft.Extensions.Primitives" version="5.0.0" targetFramework="net48" />
<package id="Newtonsoft.Json" version="13.0.4" targetFramework="net48" />
<package id="Portable.BouncyCastle" version="1.8.5" targetFramework="net48" />
<package id="QRCoder" version="1.8.0" targetFramework="net48" />
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
<package id="System.Diagnostics.DiagnosticSource" version="5.0.0" targetFramework="net48" />
<package id="System.Interactive.Async" version="4.0.0" targetFramework="net48" />