Barverkauf, etc.

This commit is contained in:
2026-09-16 15:48:00 +02:00
parent 43257416fd
commit 7c0c1ea1a3
5 changed files with 395 additions and 188 deletions

View File

@@ -1,4 +1,5 @@
Imports Chilkat Imports Chilkat
Imports io.konik.zugferd.unqualified
Imports QRCoder Imports QRCoder
Imports VERAG_PROG_ALLGEMEIN Imports VERAG_PROG_ALLGEMEIN
@@ -19,6 +20,10 @@ Public Class FtReceiptCases
Public Const YearlyClosing As Long = &H4445000000000006L Public Const YearlyClosing As Long = &H4445000000000006L
Public Const DailyClosing As Long = &H4445000000000007L Public Const DailyClosing As Long = &H4445000000000007L
' Kasseneinzahlung / Kassenauszahlung / Geldtransfer
Public Const CashDepositOrWithdrawal As Long = &H4445000000000011L
' Flags ' Flags
Public Const ImplicitTransaction As Long = &H100000000L Public Const ImplicitTransaction As Long = &H100000000L
Public Const ReversalReceipt As Long = &H40000L Public Const ReversalReceipt As Long = &H40000L
@@ -34,11 +39,29 @@ End Class
Public Class FtChargeItemCase Public Class FtChargeItemCase
'DE ' DE – Verkaufsbelege
Public Const RevenueNormal As Long = &H4445000000000001L ' 19 % Public Const RevenueNormal As Long = &H4445000000000001L ' 19 % Regelsteuersatz
Public Const RevenueReduced As Long = &H4445000000000002L ' 7 %
Public Const RevenueNotTaxable As Long = &H4445000000000005L 'nicht steuerbar Public Const RevenueReduced As Long = &H4445000000000002L ' 7 % ermäßigter Steuersatz
Public Const RevenueTaxFree As Long = &H4445000000000006L '0%
Public Const RevenueNotTaxable As Long = &H4445000000000005L ' Nicht steuerbar
Public Const RevenueTaxFree As Long = &H4445000000000006L ' Umsatzsteuerfrei, 0 %
' DE – Kassenbewegungen
Public Const Anfangsbestand As Long = &H4445000000000090L ' Anfangsbestand
Public Const Privatentnahme As Long = &H4445000000000091L ' Privatentnahme
Public Const Privateinlage As Long = &H4445000000000092L ' Privateinlage
Public Const Geldtransit As Long = &H4445000000000093L ' Geldtransit
Public Const Lohnzahlung As Long = &H4445000000000094L ' Lohnzahlung
Public Const Einzahlung As Long = &H4445000000000095L ' Einzahlung
Public Const Auszahlung As Long = &H4445000000000096L ' Auszahlung
End Class End Class
@@ -53,10 +76,26 @@ End Class
Public Class ReceiptCaseIntern Public Class ReceiptCaseIntern
Public Const STORNO As String = "Storno"
Public Const VERKAUF As String = "Verkauf" Public Const VERKAUF As String = "Verkauf"
Public Const EINGANG As String = "Eingang" Public Const EINGANG As String = "Eingang"
Public Const AUSGANG As String = "Ausgang" Public Const AUSGANG As String = "Ausgang"
Public Const WIEDERHOLUNG As String = "Retry" Public Const WIEDERHOLUNG As String = "Retry"
Public Const NULLBELEG As String = "NULL-BELEG"
Public Const STARTBELEG As String = "START-BELEG"
Public Const OUTOFOPERATIONBELEG As String = "END-BELEG"
Public Const TEMP_OUTOFOPERATIONBELEG As String = "TEMP-AUSFALL"
Public Const DAILYCLOSING As String = "TAGESABSCHLUSS"
End Class
Public Class PayItemCasesIntern
Public Const Cash As String = "Cash"
Public Const DebitCard As String = "DebitCard"
Public Const Kasseneinzahlungen_Auszahlungen As String = "Kasseneinzahlungen_Auszahlungen"
End Class End Class
@@ -81,6 +120,9 @@ Public Class FtPayItemCases
' Gutschein ' Gutschein
Public Const Voucher As Long = &H4445000000000007L Public Const Voucher As Long = &H4445000000000007L
'Cash transfer from/to cash book
Public Const Kasseineinzahlung_Auszahlung As Long = &H4445000000000016L
End Class End Class
Public Class cFiskaltrustClient_chilkat Public Class cFiskaltrustClient_chilkat
@@ -387,21 +429,23 @@ Public Class cFiskaltrustClient_chilkat
json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o")) json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o"))
Dim receipCase Dim receiptCaseValue As Long
If _receiptCase = "Storno" Then If _receiptCase = "Storno" Then
' Neue Referenz für den Stornobeleg
json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString())
' Referenz auf den ursprünglichen Beleg
json.UpdateString("cbPreviousReceiptReference", _reference) json.UpdateString("cbPreviousReceiptReference", _reference)
If TSEisOnline Then If TSEisOnline Then
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction
Else Else
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction
End If End If
ElseIf _receiptCase = "Retry" Then ElseIf _receiptCase = ReceiptCaseIntern.WIEDERHOLUNG Then
'Receipt-Request nach Kommunikationsfehler 'Receipt-Request nach Kommunikationsfehler
'dieselbe cbReceiptReference verwenden 'dieselbe cbReceiptReference verwenden
@@ -409,87 +453,115 @@ Public Class cFiskaltrustClient_chilkat
'optional dieselbe cbTerminalID 'optional dieselbe cbTerminalID
json.UpdateString("cbReceiptReference", _reference) json.UpdateString("cbReceiptReference", _reference)
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReceiptRequest receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ReceiptRequest
' Kasseneinzahlung (ohne Positionen) / Kassenauszahlung (ohne Positionen)
ElseIf (_receiptCase = ReceiptCaseIntern.EINGANG OrElse _receiptCase = ReceiptCaseIntern.AUSGANG) AndAlso POS.Count = 0 Then
kindOfPayment = PayItemCasesIntern.Kasseneinzahlungen_Auszahlungen
json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString())
If TSEisOnline Then
receiptCaseValue = FtReceiptCases.CashDepositOrWithdrawal Or FtReceiptCases.ImplicitTransaction
Else
receiptCaseValue = FtReceiptCases.CashDepositOrWithdrawal Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction
End If
Else Else
' New reference for a normal receipt ' New reference for a normal receipt
json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString())
If TSEisOnline Then If TSEisOnline Then
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction
Else Else
receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction
End If End If
End If End If
json.UpdateString("ftReceiptCase", receipCase.ToString()) json.UpdateString("ftReceiptCase", receiptCaseValue.ToString())
Dim chargeItems = json.AppendArray("cbChargeItems") Dim chargeItems = json.AppendArray("cbChargeItems")
For Each p In POS If POS.Count > 0 Then
If chargeItems.AddObjectAt(-1) Then For Each p In POS
If chargeItems.AddObjectAt(-1) Then
Dim quantity As Double = p.Anzahl Dim quantity As Double = p.Anzahl
Dim unitPrice As Double = p.Preis Dim unitPrice As Double = p.Preis
Dim lineAmount As Double = p.Betrag Dim lineAmount As Double = p.Betrag
'bei Storno negieren (BEI DE nur einen Teil)! 'bei Storno negieren (BEI DE nur einen Teil)!
'To cancel a receipt, resend it with this flag added to the ftReceiptCase and inverse the cbPayItems OR cbChargeItems (This is not the same behavior as described in the general part — in Germany, this flag requires only one of cbPayItems or cbChargeItems to be negative, and both must not be negative at the same time)' 'To cancel a receipt, resend it with this flag added to the ftReceiptCase and inverse the cbPayItems OR cbChargeItems (This is not the same behavior as described in the general part — in Germany, this flag requires only one of cbPayItems or cbChargeItems to be negative, and both must not be negative at the same time)'
'https://docs.fiskaltrust.cloud/docs/poscreators/middleware-doc/germany/reference-tables/ftreceiptcase 'https://docs.fiskaltrust.cloud/docs/poscreators/middleware-doc/germany/reference-tables/ftreceiptcase
If _receiptCase = "Storno" Then If _receiptCase = ReceiptCaseIntern.STORNO Then
quantity = quantity * -1 quantity = quantity * -1
lineAmount = lineAmount * -1 lineAmount = lineAmount * -1
End If
Dim item As Chilkat.JsonObject = chargeItems.ObjectAt(chargeItems.Size - 1)
item.UpdateInt("Quantity", quantity)
item.UpdateNumber("Amount", lineAmount)
item.UpdateNumber("VATRate", vat)
item.UpdateString("Description", p.LeistungsBez)
Dim ChargeItemCase As Long
Select Case vat
Case 19D
ChargeItemCase = FtChargeItemCase.RevenueNormal
Case 7D
ChargeItemCase = FtChargeItemCase.RevenueReduced
Case 0D
ChargeItemCase = FtChargeItemCase.RevenueTaxFree
Case Else
Throw New Exception("Unbekannter Steuersatz")
End Select
item.UpdateString("ftChargeItemCase", ChargeItemCase)
End If End If
Dim item As Chilkat.JsonObject = chargeItems.ObjectAt(chargeItems.Size - 1)
item.UpdateInt("Quantity", quantity)
item.UpdateNumber("Amount", lineAmount)
item.UpdateNumber("VATRate", vat)
item.UpdateString("Description", p.LeistungsBez)
Dim ChargeItemCase As Long Next
Select Case vat
Case 19D End If
ChargeItemCase = FtChargeItemCase.RevenueNormal
Case 7D
ChargeItemCase = FtChargeItemCase.RevenueReduced
Case 0D
ChargeItemCase = FtChargeItemCase.RevenueTaxFree
Case Else
Throw New Exception("Unbekannter Steuersatz")
End Select
item.UpdateString("ftChargeItemCase", ChargeItemCase)
End If
Next
Dim payItems = json.AppendArray("cbPayItems") Dim payItems = json.AppendArray("cbPayItems")
payItems.AddObjectAt(-1) payItems.AddObjectAt(-1)
Dim pay As Chilkat.JsonObject = payItems.ObjectAt(payItems.Size - 1) Dim pay As Chilkat.JsonObject = payItems.ObjectAt(payItems.Size - 1)
pay.UpdateInt("Quantity", 1) pay.UpdateInt("Quantity", 1)
pay.UpdateNumber("Amount", amount.ToString().Replace(",", ".")) pay.UpdateNumber("Amount", amount.ToString().Replace(",", "."))
pay.UpdateString("Description", kindOfPayment) Dim Description As String = ""
Select Case kindOfPayment Select Case kindOfPayment
Case "Cash" Case PayItemCasesIntern.Cash
pay.UpdateString("ftPayItemCase", FtPayItemCases.Cash) pay.UpdateString("ftPayItemCase", FtPayItemCases.Cash)
Case "Card" Description = "Bar"
Case PayItemCasesIntern.DebitCard
pay.UpdateString("ftPayItemCase", FtPayItemCases.DebitCard) pay.UpdateString("ftPayItemCase", FtPayItemCases.DebitCard)
Description = "ECKarte"
Case PayItemCasesIntern.Kasseneinzahlungen_Auszahlungen
pay.UpdateString("ftPayItemCase", FtPayItemCases.Kasseineinzahlung_Auszahlung)
If amount > 0 Then
Description = "Kasseneingang"
ElseIf amount < 0 Then
Description = "Kassenausgang"
End If
End Select End Select
pay.UpdateString("Description", Description)
Return json Return json
End Function End Function

View File

@@ -1,4 +1,5 @@
Imports GrapeCity.ActiveReports 
Imports GrapeCity.ActiveReports
Imports SDL.RKSVServer Imports SDL.RKSVServer
Imports VERAG_PROG_ALLGEMEIN.DSFinVKService Imports VERAG_PROG_ALLGEMEIN.DSFinVKService
Imports VERAG_PROG_ALLGEMEIN.RKSV_DE_DSFinVKService Imports VERAG_PROG_ALLGEMEIN.RKSV_DE_DSFinVKService
@@ -122,25 +123,37 @@ Public Class cRKSV
Dim kindOfPayment As String = getKindOfPayment(beleg_temp) 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)
'Dim result = Await client.SignReceiptAsync(summeBRUTTO, steuersatz, POS, "Cash", kasse.rksv_id) Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country)
'If result <> "" Then
' Return client.saveRKSV_FT(result, QR_CodeString) Dim result As String = ""
'Else
' Return False Select Case typOfReceiptCase
'End If Case ReceiptCaseIntern.NULLBELEG
Else result = client.SignNullReceipt(kasse.rksv_id)
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, beleg_temp.POS, kindOfPayment, kasse.rksv_id, typOfReceiptCase, reference, TSEisOnline) Case ReceiptCaseIntern.STARTBELEG
If result <> "" Then result = client.SignInitialOperationReceipt(kasse.rksv_id)
Case ReceiptCaseIntern.OUTOFOPERATIONBELEG
result = client.SignOutOfOrderReceipt(kasse.rksv_id)
Case ReceiptCaseIntern.TEMP_OUTOFOPERATIONBELEG
result = client.SignTempOutOfOrderReceipt(kasse.rksv_id)
Case ReceiptCaseIntern.DAILYCLOSING
result = client.SignClosingReceipt("daily", kasse.rksv_id, "daily")
Case Else
result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, typOfReceiptCase, reference, TSEisOnline)
End Select
If result <> "" Then
Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, False) Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, False)
Else Else
Return False Return False
End If End If
End If
Catch ex As Exception Catch ex As Exception
@@ -1826,6 +1839,188 @@ Public Class cRKSV
End Function End Function
Public Shared Function printStatusBelegFiskaltrust(KASSE As cRKSV_Kasse, PERSONAL As cPersonal, AUTODRUCK As Boolean, Firma As String, fiskaltrustReceiptCasTypIntern As String) As Boolean
Try
If PERSONAL Is Nothing Then
Dim FMZOLL_SQL As New FMZOLL_SQL
PERSONAL = FMZOLL_SQL.getPersonalById(274)
End If
Dim ib = ""
Dim TESTBUCHUNG = False
Dim oldBelegZaehler = KASSE.rksv_BelegIdZaehler
Dim summe As Double = 0
Dim RKSV_Beleg_Id = KASSE.INCREASE_BELEG_UMSATZ(If(TESTBUCHUNG, 0, summe))
If RKSV_Beleg_Id < 0 Then
'Exit Function
Return False
End If
Dim belegBez As String = fiskaltrustReceiptCasTypIntern
Dim BELEG As New EABeleg(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID)
' Dim GJ = New cGeschaeftsjahr(BELEG.Mandant, BELEG.Niederlassung, BELEG.Benutzer, cRKSV.getGJ(BELEG.BelegDat))
BELEG.Ordnungsbegriff = "*** " & belegBez & " ***"
BELEG.Beleg_TYP = "0"
BELEG.Belegart = "0"
BELEG.Name1 = "*** " & belegBez & " ***"
BELEG.Steuerschlüssel = 3510
BELEG.BelegNr = cRKSV.getNewBelegNr(BELEG, Firma) 'GJ.INCREASE_BELEG() 'Vergabe der Belegnummer '
' Beleg noch nicht gespeichert.... BELEG.DEL_POS_List()' Positionen löschen, da BelegNr Neu vergeben
For Each p In BELEG.POS
p.BelegNr = BELEG.BelegNr
Next
BELEG.gebucht = True
BELEG.SAVE()
' QR_Image = Nothing
Dim QR_CodeString As String = ""
Dim LastJWS As String = ""
Dim isFiskaltrust As Boolean = False
Dim verarbeitet As Boolean = False
If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV gilt
Dim answer = ""
If KASSE IsNot Nothing AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
isFiskaltrust = client_chilkat.isFiskaltrust()
End If
If isFiskaltrust Then
Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, 0, TESTBUCHUNG, QR_CodeString, LastJWS, fiskaltrustReceiptCasTypIntern)
verarbeitet = result
End If
If Not verarbeitet Then
If Not TESTBUCHUNG Then
KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summe * -1)
cRKSV.DELETE(BELEG, KASSE.rksv_firma)
End If
MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
' Me.Cursor = Cursors.Default
'BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
' MsgBox("Programmfehler bei der digitalen Signatur.")
Return False
End If
' If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
End If
If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die DEUTSCHLAND gilt
Dim answer = ""
'*Nullbelg-POS*
Dim POS As New EABelegPositionen
POS.Abfertigungsart = 10 '"Sonstiges"
POS.Mandant = BELEG.Mandant
POS.Niederlassung = BELEG.Niederlassung
POS.Benutzer = BELEG.Benutzer
POS.BelegDat = BELEG.BelegDat
POS.BelegNr = BELEG.BelegNr
POS.PreislistenPos = -1
POS.LeistungsNr = 499
POS.LeistungsBez = belegBez
POS.Leistungsbeschreibung = belegBez
POS.PreislistenNr = -1
POS.PreistabellenNr = -1
POS.Preis = 0
POS.Anzahl = 1
POS.Anzahlmultiplikator = 1
POS.Betrag = 0
POS.Preisbindung = 0
' POS.AbfertigungsNr = 000
BELEG.POS.Add(POS)
If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, 0, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
If Not TESTBUCHUNG Then
KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summe * -1)
cRKSV.DELETE(BELEG, KASSE.rksv_firma)
End If
MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
' Me.Cursor = Cursors.Default
'BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
' MsgBox("Programmfehler bei der digitalen Signatur.")
Return False
End If
KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
If KASSE.rksv_KassaGuid = "KASSE_01" Then
BELEG.rksv_jws = Nothing
BELEG.rksv_qr = Nothing
End If
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
End If
'RKSV-Daten beim Beleg ergänzen:
BELEG.rksv_jws = LastJWS
BELEG.rksv_qr = QR_CodeString
BELEG.rksv_BelegId = RKSV_Beleg_Id
BELEG.rksv_id = KASSE.rksv_id
BELEG.rksv_umsatz = summe
BELEG.rksv_aktiv = (KASSE.rksv_aktiv Or KASSE.rksvDE_aktiv)
BELEG.SAVE()
Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id)
Select Case fiskaltrustReceiptCasTypIntern
Case ReceiptCaseIntern.NULLBELEG
rksv.SET_NULLBELEG()
Case ReceiptCaseIntern.STARTBELEG
rksv.SET_INITIALSTARTBELEG()
Case ReceiptCaseIntern.OUTOFOPERATIONBELEG
rksv.SET_OUTOFORDERBELEG()
Case ReceiptCaseIntern.TEMP_OUTOFOPERATIONBELEG
rksv.SET_OUTOFORDERBELEG()
Case ReceiptCaseIntern.DAILYCLOSING
SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfDayReceipt = getDate() where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL")
End Select
If isFiskaltrust Then
End If
'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken
If AUTODRUCK Then
Dim pName = ""
For Each sPrinter As String In System.Drawing.Printing.PrinterSettings.InstalledPrinters
If sPrinter = "AUTODRUCK_MAIL" Then pName = sPrinter : Exit For
Next
If pName = "" Then
Dim oPS As New System.Drawing.Printing.PrinterSettings
pName = oPS.PrinterName
End If
cRKSV.printKundenBeleg(BELEG, KASSE, PERSONAL, pName, False) 'Beleg drucken
Else
cRKSV.printKundenBeleg(BELEG, KASSE, PERSONAL, "", False) 'Beleg drucken
End If
Return True
' End If
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
Return False
End Function
Public Shared Function getCardSerialInReader(kasse_id As Integer, reader As String) Public Shared Function getCardSerialInReader(kasse_id As Integer, reader As String)
Try Try

View File

@@ -228,7 +228,6 @@ Public Class frmFremdbeleg
Dim isFiskaltrust = False Dim isFiskaltrust = False
If KASSE IsNot Nothing AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then If KASSE IsNot Nothing AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country) Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
isFiskaltrust = client_chilkat.isFiskaltrust() isFiskaltrust = client_chilkat.isFiskaltrust()
End If End If
@@ -238,16 +237,16 @@ Public Class frmFremdbeleg
Dim verarbeitet As Boolean = False Dim verarbeitet As Boolean = False
If KASSE.rksv_FT_RestServiceURL <> "" Then If isFiskaltrust Then
Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, ReceiptCaseIntern.EINGANG, ReceiptCaseIntern.AUSGANG)) Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, ReceiptCaseIntern.EINGANG, ReceiptCaseIntern.AUSGANG))
'result.Wait() 'result.Wait()
verarbeitet = result verarbeitet = result
Else Else
verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
End If End If
If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
If Not isFiskaltrust Then If Not isFiskaltrust Then

View File

@@ -206,8 +206,6 @@ Public Class frmKassenbuch
End If End If
lbldailyCashboxClosing.Text = ""
If PERSONAL.cRKSV_Kasse IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country IsNot Nothing Then If PERSONAL.cRKSV_Kasse IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country IsNot Nothing Then
Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country)
@@ -253,51 +251,47 @@ Public Class frmKassenbuch
TSEIsOnline = False TSEIsOnline = False
MiddlewareIsOnline = False MiddlewareIsOnline = False
InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) End If
InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated)
InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated) If Not MiddlewareIsOnline Then
diasableBarverkauf("MIDDLEWARE")
If Not MiddlewareIsOnline Then ElseIf Not InitialStartIsCreated Then
diasableBarverkauf("MIDDLEWARE") diasableBarverkauf("INITIALSTART")
ElseIf Not InitialStartIsCreated Then ElseIf tagesabschlussIsSet Then
diasableBarverkauf("INITIALSTART") diasableBarverkauf("TAGESABSCHLUSS")
ElseIf tagesabschlussIsSet Then ElseIf OutOfOrderIsCreated Then
diasableBarverkauf("TAGESABSCHLUSS") diasableBarverkauf("OUTOFORDER")
ElseIf OutOfOrderIsCreated Then Else
diasableBarverkauf("OUTOFORDER") lbldailyCashboxClosing.Text = ""
Else If Not TSEIsOnline Then
lbldailyCashboxClosing.Text = "" lbldailyCashboxClosing.Text = "TSE ist OFFLINE: Belege werden nachträglich signiert!"
If Not TSEIsOnline Then End If
lbldailyCashboxClosing.Text = "TSE ist OFFLINE: Belege werden nachträglich signiert!"
End If
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then
btnBelegKunde.Enabled = True
btnBelegAusgang.Enabled = True
btnBelegEingang.Enabled = True
btnBelegGSKunde.Enabled = True
btnBelegLeihgeld.Enabled = True
btnStorno.Enabled = True
End If
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then
btnBelegKunde.Enabled = True
btnBelegAusgang.Enabled = True
btnBelegEingang.Enabled = True
btnBelegGSKunde.Enabled = True
btnBelegLeihgeld.Enabled = True
btnStorno.Enabled = True
End If End If
lbldailyCashboxClosing.Visible = False
Button11.Visible = False
End If End If
End If End If
Else
lbldailyCashboxClosing.Text = ""
Button11.Visible = False
End If End If
' Label9.Text = PERSONAL.Name ' Label9.Text = PERSONAL.Name
DataGridView2.ClearSelection() DataGridView2.ClearSelection()
End Sub End Sub
@@ -1368,16 +1362,17 @@ Public Class frmKassenbuch
Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox
If KASSE.rksv_FT_RestServiceURL <> "" Then If KASSE.rksv_FT_Country IsNot Nothing AndAlso KASSE.rksv_FT_Country = "DE" Then
Dim client As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
Dim result = Await client.SignNullReceiptAsync(RKSV.rksv_id) cRKSV.printStatusBelegFiskaltrust(KASSE, PERSONAL, True, KASSE.rksv_firma, ReceiptCaseIntern.NULLBELEG)
Dim QR_CodeString As String = ""
client.saveRKSV_FT(result, QR_CodeString)
Else Else
cRKSV.printNULLBeleg(KASSE, PERSONAL, True, KASSE.rksv_firma) cRKSV.printNULLBeleg(KASSE, PERSONAL, True, KASSE.rksv_firma)
End If End If
init()
' End If ' End If
End Sub End Sub
@@ -1609,11 +1604,11 @@ Public Class frmKassenbuch
End If End If
If Not cm_FT.Items.ContainsKey("null") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then 'If Not cm_FT.Items.ContainsKey("null") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then
Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} ' Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
cm_FT.Items.Add(plose) ' cm_FT.Items.Add(plose)
AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked ' AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked
End If 'End If
If Not cm_FT.Items.ContainsKey("outoforder") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then If Not cm_FT.Items.ContainsKey("outoforder") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then
Dim plose = New ToolStripMenuItem() With {.Text = "Out Of Order", .Name = "outoforder", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} Dim plose = New ToolStripMenuItem() With {.Text = "Out Of Order", .Name = "outoforder", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
@@ -1704,31 +1699,7 @@ Public Class frmKassenbuch
Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country) Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country)
If item.Name = "null" Then If item.Name = "setMissingSignatures" Then
Dim info As String = "Möchten Sie einen 0-Beleg an die TSE schicken?"
If NULLBelegIsCreated Then
info = "Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein 0-Beleg erstellt, sind Sie wirklich sicher?"
End If
If vbYes = MsgBox(info, vbYesNoCancel) Then
Dim result As String = client_chilkat.SignNullReceipt(PERSONAL.cRKSV_Kasse.rksv_id)
If result <> "" Then
MsgBox(client_chilkat.PrettyPrintJson(result))
Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id)
rksv.SET_NULLBELEG()
init()
End If
End If
ElseIf item.Name = "setMissingSignatures" Then
Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE [rksv_id]='" & PERSONAL.cRKSV_KasseID & "' AND isnull(FT_MissingSignature,0)=1", "FMZOLL") Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE [rksv_id]='" & PERSONAL.cRKSV_KasseID & "' AND isnull(FT_MissingSignature,0)=1", "FMZOLL")
@@ -1802,16 +1773,8 @@ Public Class frmKassenbuch
If vbYes = MsgBox("Möchten Sie einen temp. Ausfall an die TSE schicken?" & vbNewLine & "Falls die TSE zwar Online ist, jedoch ein technischer Fehler beim Signieren besteht", vbYesNoCancel) Then If vbYes = MsgBox("Möchten Sie einen temp. Ausfall an die TSE schicken?" & vbNewLine & "Falls die TSE zwar Online ist, jedoch ein technischer Fehler beim Signieren besteht", vbYesNoCancel) Then
Dim result As String = client_chilkat.SignOutOfOrderReceipt(PERSONAL.cRKSV_Kasse.rksv_id) cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.TEMP_OUTOFOPERATIONBELEG)
init()
If result <> "" Then
MsgBox(client_chilkat.PrettyPrintJson(result))
Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id)
rksv.SET_OUTOFORDERBELEG()
init()
End If
End If End If
@@ -1821,18 +1784,9 @@ Public Class frmKassenbuch
If vbYes = MsgBox("Möchten Sie einen OutOfOrder an die TSE schicken?" & vbNewLine & "Die Queue wird dauerhaft geschlossen und kann NICHT reaktiviert werden!", vbYesNoCancel) Then If vbYes = MsgBox("Möchten Sie einen OutOfOrder an die TSE schicken?" & vbNewLine & "Die Queue wird dauerhaft geschlossen und kann NICHT reaktiviert werden!", vbYesNoCancel) Then
cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.OUTOFOPERATIONBELEG)
init()
Dim result As String = client_chilkat.SignOutOfOrderReceipt(PERSONAL.cRKSV_Kasse.rksv_id)
If result <> "" Then
MsgBox(client_chilkat.PrettyPrintJson(result))
Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id)
rksv.SET_OUTOFORDERBELEG()
init()
End If
End If End If
@@ -1842,17 +1796,8 @@ Public Class frmKassenbuch
If vbYes = MsgBox("Möchten Sie einen Start an die TSE schicken?", vbYesNoCancel) Then If vbYes = MsgBox("Möchten Sie einen Start an die TSE schicken?", vbYesNoCancel) Then
Dim result As String = client_chilkat.SignInitialOperationReceipt(PERSONAL.cRKSV_Kasse.rksv_id) cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.STARTBELEG)
init()
If result <> "" Then
MsgBox(client_chilkat.PrettyPrintJson(result))
Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id)
rksv.SET_INITIALSTARTBELEG()
init()
End If
End If End If
@@ -1949,22 +1894,18 @@ Public Class frmKassenbuch
If vbYes = MsgBox("Möchten Sie einen Tagesabschluss durchführen, anschließend kann heute kein Beleg mehr signiert werden!", vbYesNoCancel) Then If vbYes = MsgBox("Möchten Sie einen Tagesabschluss durchführen, anschließend kann heute kein Beleg mehr signiert werden!", vbYesNoCancel) Then
If PERSONAL.cRKSV_Kasse.rksv_FT_Country = "DE" Then If PERSONAL.cRKSV_Kasse.rksv_FT_Country = "DE" Then
Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name)
If result <> "" Then cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.DAILYCLOSING)
MsgBox(client_chilkat.PrettyPrintJson(result)) init()
SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfDayReceipt = getDate() where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL")
init()
End If
Else Else
MsgBox("nicht für AT-Kassen möglich!") MsgBox("nicht für AT-Kassen möglich!")
End If End If
End If End If
Else
MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Tagesabschluss erstellt!") MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Tagesabschluss erstellt!")
End If End If

View File

@@ -375,9 +375,9 @@ Public Class frmNacherfassungLeihgeld
Dim verarbeitet As Boolean = False Dim verarbeitet As Boolean = False
If isFiskaltrust Then If isFiskaltrust Then
Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, ReceiptCaseIntern.VERKAUF)
'result.Wait() 'result.Wait()
verarbeitet = result verarbeitet = result
Else Else
verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
End If End If