From 7c0c1ea1a3a21e2d833af5dfca025d447510bcc3 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 16 Sep 2026 15:48:00 +0200 Subject: [PATCH] Barverkauf, etc. --- SDL/Classes/cFiskaltrustClient_chilkat.vb | 178 +++++++++++----- SDL/Classes/cRKSV.vb | 223 +++++++++++++++++++-- SDL/kassenbuch/frmFremdbeleg.vb | 17 +- SDL/kassenbuch/frmKassenbuch.vb | 159 +++++---------- SDL/kassenbuch/frmNacherfassungLeihgeld.vb | 6 +- 5 files changed, 395 insertions(+), 188 deletions(-) diff --git a/SDL/Classes/cFiskaltrustClient_chilkat.vb b/SDL/Classes/cFiskaltrustClient_chilkat.vb index 60153005..ef1de0e9 100644 --- a/SDL/Classes/cFiskaltrustClient_chilkat.vb +++ b/SDL/Classes/cFiskaltrustClient_chilkat.vb @@ -1,4 +1,5 @@ Imports Chilkat +Imports io.konik.zugferd.unqualified Imports QRCoder Imports VERAG_PROG_ALLGEMEIN @@ -19,6 +20,10 @@ Public Class FtReceiptCases Public Const YearlyClosing As Long = &H4445000000000006L Public Const DailyClosing As Long = &H4445000000000007L + ' Kasseneinzahlung / Kassenauszahlung / Geldtransfer + Public Const CashDepositOrWithdrawal As Long = &H4445000000000011L + + ' Flags Public Const ImplicitTransaction As Long = &H100000000L Public Const ReversalReceipt As Long = &H40000L @@ -34,11 +39,29 @@ End Class Public Class FtChargeItemCase - 'DE - Public Const RevenueNormal As Long = &H4445000000000001L ' 19 % - Public Const RevenueReduced As Long = &H4445000000000002L ' 7 % - Public Const RevenueNotTaxable As Long = &H4445000000000005L 'nicht steuerbar - Public Const RevenueTaxFree As Long = &H4445000000000006L '0% + ' DE – Verkaufsbelege + Public Const RevenueNormal As Long = &H4445000000000001L ' 19 % Regelsteuersatz + + Public Const RevenueReduced As Long = &H4445000000000002L ' 7 % ermäßigter Steuersatz + + 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 @@ -53,10 +76,26 @@ End Class Public Class ReceiptCaseIntern + Public Const STORNO As String = "Storno" Public Const VERKAUF As String = "Verkauf" Public Const EINGANG As String = "Eingang" Public Const AUSGANG As String = "Ausgang" 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 @@ -81,6 +120,9 @@ Public Class FtPayItemCases ' Gutschein Public Const Voucher As Long = &H4445000000000007L + 'Cash transfer from/to cash book + Public Const Kasseineinzahlung_Auszahlung As Long = &H4445000000000016L + End Class Public Class cFiskaltrustClient_chilkat @@ -387,21 +429,23 @@ Public Class cFiskaltrustClient_chilkat json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o")) - Dim receipCase + Dim receiptCaseValue As Long If _receiptCase = "Storno" Then + ' Neue Referenz für den Stornobeleg json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) + ' Referenz auf den ursprünglichen Beleg json.UpdateString("cbPreviousReceiptReference", _reference) If TSEisOnline Then - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction + receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction 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 - ElseIf _receiptCase = "Retry" Then + ElseIf _receiptCase = ReceiptCaseIntern.WIEDERHOLUNG Then 'Receipt-Request nach Kommunikationsfehler 'dieselbe cbReceiptReference verwenden @@ -409,87 +453,115 @@ Public Class cFiskaltrustClient_chilkat 'optional dieselbe cbTerminalID 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 ' New reference for a normal receipt json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString()) If TSEisOnline Then - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction + receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction Else - receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction + receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction End If End If - json.UpdateString("ftReceiptCase", receipCase.ToString()) + json.UpdateString("ftReceiptCase", receiptCaseValue.ToString()) 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 unitPrice As Double = p.Preis - Dim lineAmount As Double = p.Betrag + Dim quantity As Double = p.Anzahl + Dim unitPrice As Double = p.Preis + Dim lineAmount As Double = p.Betrag - '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)' - 'https://docs.fiskaltrust.cloud/docs/poscreators/middleware-doc/germany/reference-tables/ftreceiptcase + '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)' + 'https://docs.fiskaltrust.cloud/docs/poscreators/middleware-doc/germany/reference-tables/ftreceiptcase - If _receiptCase = "Storno" Then - quantity = quantity * -1 - lineAmount = lineAmount * -1 + If _receiptCase = ReceiptCaseIntern.STORNO Then + quantity = quantity * -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 - 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 + Next - 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 - - - Next + End If 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 Description As String = "" Select Case kindOfPayment - Case "Cash" + Case PayItemCasesIntern.Cash pay.UpdateString("ftPayItemCase", FtPayItemCases.Cash) - Case "Card" + Description = "Bar" + Case PayItemCasesIntern.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 + pay.UpdateString("Description", Description) + + Return json End Function diff --git a/SDL/Classes/cRKSV.vb b/SDL/Classes/cRKSV.vb index 9a7d3684..7ba65c43 100644 --- a/SDL/Classes/cRKSV.vb +++ b/SDL/Classes/cRKSV.vb @@ -1,4 +1,5 @@ -Imports GrapeCity.ActiveReports + +Imports GrapeCity.ActiveReports Imports SDL.RKSVServer Imports VERAG_PROG_ALLGEMEIN.DSFinVKService Imports VERAG_PROG_ALLGEMEIN.RKSV_DE_DSFinVKService @@ -122,25 +123,37 @@ Public Class cRKSV 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) - 'If result <> "" Then - ' Return client.saveRKSV_FT(result, QR_CodeString) - 'Else - ' Return False - '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, beleg_temp.POS, kindOfPayment, kasse.rksv_id, typOfReceiptCase, reference, TSEisOnline) - If result <> "" Then + Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country) + + Dim result As String = "" + + Select Case typOfReceiptCase + Case ReceiptCaseIntern.NULLBELEG + result = client.SignNullReceipt(kasse.rksv_id) + + Case ReceiptCaseIntern.STARTBELEG + 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) Else Return False End If - End If + Catch ex As Exception @@ -1826,6 +1839,188 @@ Public Class cRKSV 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) Try diff --git a/SDL/kassenbuch/frmFremdbeleg.vb b/SDL/kassenbuch/frmFremdbeleg.vb index 5dc2c342..68f2b1e7 100644 --- a/SDL/kassenbuch/frmFremdbeleg.vb +++ b/SDL/kassenbuch/frmFremdbeleg.vb @@ -228,7 +228,6 @@ Public Class frmFremdbeleg 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 - 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 @@ -238,16 +237,16 @@ Public Class frmFremdbeleg Dim verarbeitet As Boolean = False - If KASSE.rksv_FT_RestServiceURL <> "" Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, ReceiptCaseIntern.EINGANG, ReceiptCaseIntern.AUSGANG)) - 'result.Wait() - verarbeitet = result - 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 - End If + If isFiskaltrust Then + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, ReceiptCaseIntern.EINGANG, ReceiptCaseIntern.AUSGANG)) + 'result.Wait() + verarbeitet = result + 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 + 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 diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb index 50aaa7d3..f78ba888 100644 --- a/SDL/kassenbuch/frmKassenbuch.vb +++ b/SDL/kassenbuch/frmKassenbuch.vb @@ -206,8 +206,6 @@ Public Class frmKassenbuch 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 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 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") - ElseIf Not InitialStartIsCreated Then - diasableBarverkauf("INITIALSTART") - ElseIf tagesabschlussIsSet Then - diasableBarverkauf("TAGESABSCHLUSS") - ElseIf OutOfOrderIsCreated Then - diasableBarverkauf("OUTOFORDER") - Else - lbldailyCashboxClosing.Text = "" - If Not TSEIsOnline Then - 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 Not MiddlewareIsOnline Then + diasableBarverkauf("MIDDLEWARE") + ElseIf Not InitialStartIsCreated Then + diasableBarverkauf("INITIALSTART") + ElseIf tagesabschlussIsSet Then + diasableBarverkauf("TAGESABSCHLUSS") + ElseIf OutOfOrderIsCreated Then + diasableBarverkauf("OUTOFORDER") + Else + lbldailyCashboxClosing.Text = "" + If Not TSEIsOnline Then + 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 - - lbldailyCashboxClosing.Visible = False - Button11.Visible = False End If - - End If + Else + lbldailyCashboxClosing.Text = "" + Button11.Visible = False End If + + ' Label9.Text = PERSONAL.Name DataGridView2.ClearSelection() End Sub @@ -1368,16 +1362,17 @@ Public Class frmKassenbuch Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox - If KASSE.rksv_FT_RestServiceURL <> "" 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) - Dim QR_CodeString As String = "" - client.saveRKSV_FT(result, QR_CodeString) + If KASSE.rksv_FT_Country IsNot Nothing AndAlso KASSE.rksv_FT_Country = "DE" Then + + cRKSV.printStatusBelegFiskaltrust(KASSE, PERSONAL, True, KASSE.rksv_firma, ReceiptCaseIntern.NULLBELEG) Else cRKSV.printNULLBeleg(KASSE, PERSONAL, True, KASSE.rksv_firma) - End If + + init() + + ' End If End Sub @@ -1609,11 +1604,11 @@ Public Class frmKassenbuch End If - 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)} - cm_FT.Items.Add(plose) - AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked - End If + '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)} + ' cm_FT.Items.Add(plose) + ' AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked + 'End If 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)} @@ -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) - If item.Name = "null" 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 + If 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") @@ -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 - 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 + cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.TEMP_OUTOFOPERATIONBELEG) + init() 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 + 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 @@ -1842,17 +1796,8 @@ Public Class frmKassenbuch 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) - - - 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 + cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.STARTBELEG) + init() 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 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 MsgBox("nicht für AT-Kassen möglich!") 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 diff --git a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb index b48bcd32..5db23dd8 100644 --- a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb +++ b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb @@ -375,9 +375,9 @@ Public Class frmNacherfassungLeihgeld Dim verarbeitet As Boolean = False If isFiskaltrust Then - Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, "Verkauf") - 'result.Wait() - verarbeitet = result + Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, ReceiptCaseIntern.VERKAUF) + 'result.Wait() + verarbeitet = result 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 End If