BMF-RKSV-Technik / at-registrierkassen-mustercode

111 stars 39 forks source link

Startbeleg ungültig in v1.1.1 und beim FON #651

Closed wpichler closed 6 years ago

wpichler commented 6 years ago

Hallo,

ich habe hier gerade folgendes Problem - ich habe eine neue Kasse angemeldet - Kasse über FON registriert - dann wollte ich den Startbeleg einreichen. Das schlägt fehl bei der Prüfung TYPE_OF_RECEIPT_START - mit "- Startbeleg: Verkettung mit Kassenidentifikationsnummer / Umsatzz\u00e4hler = 0,00 / Belegbetr\u00e4ge = 0,00 / Signatur-Siegelerstellungseinheit nicht ausgefallen"

Also habe ich einen DEP Export erzeugt - und das Prüftool in der Version 1.0.0 drüber laufen lassen - und siehe da - das Prüftool behauptet das alles in Ordnung ist.

Daher prüfe ich das ganze nochmals mit dem Prüftool in der Version 1.1.1 - und diesesmal bekomme ich einen Fehler. Es wird behauptet das sich am Anfang des DEP's kein Startbeleg befindet. Also sehe ich am Anfang der Datei nach - wo die Prüfung des Startbeleges stattfindet. Dort gibt es den Check der überprüft um welche Art von Beleg es sich handelt - und dieser Check hat gültig erkannt das es ein START_BELEG ist - in Summe STATE_CONSOLIDATED=PASS !

Die Datei 0000_cashbox.json sagt ebenfalls das alles Ok ist - ebenso die _full Datei !

Also zusammengefasst:

Problem Nummer 4 könnte mit den "Optimierungen" für geringeren Speicherbedarf zu tun haben - hat das Prüftool da möglicherweise etwas zu viel an Daten vergessen ?

Aber mein Problem ist vor allem - warum ist der Starbeleg lt. FON nicht in Ordnung - und was soll diese komsiche Fehlermeldung vom FON bedeuten ?

AxelKutschera commented 6 years ago

Hoffentlich keine unpassende Frage: Ist die SEE in FON gemeldet?

wpichler commented 6 years ago

Die ist gemeldet - habe auch den Status der SEE und der Kasse mehrmals überprüft

ErichFreitag commented 6 years ago

Was genau ist die Fehlermeldung in FON? Ich kann das oben nicht eindeutig herauslesen.

Ein Unterschied kann sein, dass der AES-Schlüssel in FON anders lautet als im Prüftool angegeben ist.

wpichler commented 6 years ago

\n"verificationResult": [ \n{ \n"verificationId": "TYPE_OF_RECEIPT_START", \n"verificationName": "Belegtyp: Startbeleg", \n"verificationResultDetailedMessage": "- Startbeleg: Verkettung mit Kassenidentifikationsnummer / Umsatzz\\u00e4hler = 0,00 / Belegbetr\\u00e4ge = 0,00 / Signatur-Siegelerstellungseinheit nicht ausgefallen", \n"verificationState": "FAIL", \n"verificationTextualDescription": "Es werden folgende Eigenschaften \\u00fcberpr\\u00fcft: Entschl\\u00fcsselter Umsatzz\\u00e4hler gleich 0, Verkettungswert zeigt auf die Kassen-ID, alle Werte der Steuers\\u00e4tze sind 0, Signatureinrichtung darf nicht ausgefallen sein.", \n"verificationTimestamp": "2018-01-23T14:31:56.787000+01:00", \n"version": 1\n },

wpichler commented 6 years ago

Direkt ins FON habe ich leider keinen Einblick - kann daher den AES Schlüssel nicht prüfen. Es müsste aber doch eine andere Fehlermeldung sein wenn etwas mit dem AES Schlüssel falsch wäre

wpichler commented 6 years ago

Ich habe jetzt auch Testweise mit der selben Software eine Kasse mit meiner ATU im Produktiv Betrieb angemeldet - das hat wunderbar funktioniert.

ErichFreitag commented 6 years ago

Ich sehe auch hier nur das Vorgangslog und nicht die eigentliche Fehlermeldung.

wpichler commented 6 years ago

Das ist ja das Problem das ich damit habe - ich finde da keine wirkliche Fehlermeldung die darauf hindeuten würde was wirklich falsch ist.

Hier der gesamte Response: { \n"paket_nr": 1, \n"result": [ \n{ \n"kundeninfo": "Beleg STARTBELEG", \n"rkdbMessage": [ \n{ \n"msg": "Der \\u00fcbermittelte Beleg ist fehlerhaft.", \n"rc": "43"\n }\n ], \n"satznr": 1, \n"verificationResultList": { \n"verificationResult": [ \n{ \n"input": { \n"RECEIPT": [ \n"_R1-AT1_17_1_2018-01-23T10:34:40_0,00_0,00_0,00_0,00_0,00_txF7RPj4/8E=_161aee65_RSNUDxUEzRc=_pNNif3Y+sPnSY6fUD43N91hVZwLc666VCsfq9lhlrxeIAlwQDmDtF3uzaca0w81vFO7TMv0PeukuPbCrR6S4Xg=="\n ]\n }, \n"verificationId": "VERIFICATION_FROM_CASHBOX", \n"verificationName": "Pr\\u00fcfergebnis - Kasse", \n"verificationResultDetailedMessage": "Der vorliegende Beleg weist Fehler im maschinenlesbaren Code auf. Die Fehlerursachen sind nachfolgend angef\\u00fchrt:", \n"verificationResultList": { \n"verificationResult": [ \n{ \n"verificationId": "RECEIPT_FULL", \n"verificationName": "Detailpr\\u00fcfung des maschinenlesbaren Codes", \n"verificationResultList": { \n"verificationResult": [ \n{ \n"verificationId": "TYPE_OF_RECEIPT", \n"verificationName": "Feststellen des Belegtyps", \n"verificationResultDetailedMessage": "Die Pr\\u00fcfung des Beleges ergab einen Fehler, da der \\u00fcbermittelte Beleg keinem der nachfolgenden Belegtypen zugeordnet werden konnte. Bitte vergewissern Sie sich, dass die Registrierkasse mit der korrekten Kassenidentifikationsnummer sowie dem korrekten AES-256 Benutzerschl\\u00fcssel \\u00fcber FinanzOnline registriert wurde. Hinweis: sollte dieser Fehler trotz richtiger Registrierung der Kasse auftreten, wenden Sie sich mit dieser Fehlermeldung an Ihren Kassenhersteller.", \n"verificationResultList": { \n"verificationResult": [ \n{ \n"verificationId": "TYPE_OF_RECEIPT_START", \n"verificationName": "Belegtyp: Startbeleg", \n"verificationResultDetailedMessage": "- Startbeleg: Verkettung mit Kassenidentifikationsnummer / Umsatzz\\u00e4hler = 0,00 / Belegbetr\\u00e4ge = 0,00 / Signatur-Siegelerstellungseinheit nicht ausgefallen", \n"verificationState": "FAIL", \n"verificationTextualDescription": "Es werden folgende Eigenschaften \\u00fcberpr\\u00fcft: Entschl\\u00fcsselter Umsatzz\\u00e4hler gleich 0, Verkettungswert zeigt auf die Kassen-ID, alle Werte der Steuers\\u00e4tze sind 0, Signatureinrichtung darf nicht ausgefallen sein.", \n"verificationTimestamp": "2018-01-23T14:31:56.787000+01:00", \n"version": 1\n }, \n{ \n"verificationId": "TYPE_OF_RECEIPT_STANDARD", \n"verificationName": "Belegtyp: Standardbeleg", \n"verificationResultDetailedMessage": "- Standardbeleg: Keine Verkettung mit Kassenidentifikationsnummer / Min. ein Betrag des Beleges ungleich 0,00 / Umsatzz\\u00e4hler enth\\u00e4lt Zahlenwert (nicht \\"STO\\" bzw. \\"TRA\\")", \n"verificationState": "FAIL", \n"verificationTextualDescription": "Es werden folgende Eigenschaften \\u00fcberpr\\u00fcft: Mindestens ein Steuersatz-Wert muss ungleich 0 sein, es muss ein Umsatzz\\u00e4hler im maschinenlesbaren Code vorhanden sein (es d\\u00fcrfen nicht die BASE64-kodierten Zeichenketten von \\"TRA\\" oder \\"STO\\" statt dem Umsatzz\\u00e4hler vorhanden ein), der Verkettungswert darf nicht auf die Kassen-ID zeigen.", \n"verificationTimestamp": "2018-01-23T14:31:56.787000+01:00", \n"version": 1\n }, \n{ \n"verificationId": "TYPE_OF_RECEIPT_TRA", \n"verificationName": "Belegtyp: Trainingsbeleg", \n"verificationResultDetailedMessage": "- Trainingsbeleg: Keine Verkettung mit Kassenidentifikationsnummer / Umsatzz\\u00e4hler enth\\u00e4lt den Wert \\"TRA\\"", \n"verificationState": "FAIL", \n"verificationTextualDescription": "Es werden folgende Eigenschaften \\u00fcberpr\\u00fcft: BASE64-kodierter Wert \\"TRA\\" steht im Umsatzz\\u00e4hler, der Verkettungswert darf nicht auf die Kassen-ID zeigen.", \n"verificationTimestamp": "2018-01-23T14:31:56.787000+01:00", \n"version": 1\n }, \n{ \n"verificationId": "TYPE_OF_RECEIPT_STO", \n"verificationName": "Belegtyp: Stornobeleg", \n"verificationResultDetailedMessage": "- Stornobeleg: Keine Verkettung mit Kassenidentifikationsnummer / Umsatzz\\u00e4hler enth\\u00e4lt den Wert \\"STO\\"", \n"verificationState": "FAIL", \n"verificationTextualDescription": "Es werden folgende Eigenschaften \\u00fcberpr\\u00fcft: BASE64-kodierter Wert \\"STO\\" steht im Umsatzz\\u00e4hler, der Verkettungswert darf nicht auf die Kassen-ID zeigen.", \n"verificationTimestamp": "2018-01-23T14:31:56.787000+01:00", \n"version": 1\n }, \n{ \n"verificationId": "TYPE_OF_RECEIPT_NULL", \n"verificationName": "Belegtyp: Nullbeleg", \n"verificationResultDetailedMessage": "- Nullbeleg: Keine Verkettung mit Kassenidentifikationsnummer / Belegbetr\\u00e4ge = 0,00 / Umsatzz\\u00e4hler enth\\u00e4lt Zahlenwert (nicht \\"STO\\" bzw. \\"TRA\\")", \n"verificationState": "FAIL", \n"verificationTextualDescription": "Es werden folgende Eigenschaften \\u00fcberpr\\u00fcft: Die Werte f\\u00fcr alle Steuers\\u00e4tze m\\u00fcssen 0 sein, es muss ein Umsatzz\\u00e4hler im maschinenlesbaren Code vorhanden sein (es d\\u00fcrfen nicht die BASE64-kodierten Zeichenketten von \\"TRA\\" oder \\"STO\\" statt dem Umsatzz\\u00e4hler vorhanden ein), der Verkettungswert darf nicht auf die Kassen-ID zeigen.", \n"verificationTimestamp": "2018-01-23T14:31:56.787000+01:00", \n"version": 1\n }\n ]\n }, \n"verificationState": "FAIL", \n"verificationTextualDescription": "Dieses Modul und die dazugeh\\u00f6rigen Submodule \\u00fcberpr\\u00fcfen unterschiedliche Eigenschaften des maschinenlesbaren Codes und leiten anhand dieser Eigenschaften den Belegtyp ab: Start-, Normal-, Training-, Storno- oder Nullbeleg.", \n"verificationTimestamp": "2018-01-23T14:31:56.787000+01:00", \n"version": 1\n }\n ]\n }, \n"verificationState": "FAIL", \n"verificationTextualDescription": "Dieses Modul und die dazugeh\\u00f6rigen Submodule \\u00fcberpr\\u00fcfen die G\\u00fcltigkeit des Belegs. Dabei werden sowohl Formatpr\\u00fcfungen, kryptographische Pr\\u00fcfungen (verschl\\u00fcsselter Umsatzz\\u00e4hler, Signatur) als auch Pr\\u00fcfungen im Zusammenhang mit dem Status der Kasse bzw. der Signatur-/Siegelerstellungseinheit durchgef\\u00fchrt.", \n"verificationTimestamp": "2018-01-23T14:31:56.745000+01:00", \n"version": 1\n }\n ]\n }, \n"verificationState": "FAIL", \n"verificationTextualDescription": "Bei der Belegpr\\u00fcfung wird untersucht, ob die Vorgaben der RKSV in Bezug auf den maschinenlesbaren Code am Beleg und auf die meldepflichtigen Metadaten der Sicherheitseinrichtung befolgt werden. Im Fehlerfall sind die genauen Fehlerinformationen nachfolgend angef\\u00fchrt.", \n"verificationTimestamp": "2018-01-23T14:31:56.417000+01:00", \n"version": 1\n }\n ]\n }\n }\n ], \n"ts_erstellung": "2018-01-23T13:31:55.535496"\n }

wpichler commented 6 years ago

Wenn ich übrigens die darauffolgenden Belege (Standardbelege) prüfe - dann meldet mir das FON einen Erfolg ;-)

ErichFreitag commented 6 years ago

In Kürze: ich bleibe vorerst bei "falscher (anderer) AES-Schlüssel in FON". Der Startbeleg kann nicht erkannt werden.

wpichler commented 6 years ago

Das klingt soweit logisch - aber...

Bei der selbe Kasse - bei welcher der Startbeleg lt. FON nicht korrekt ist - habe ich einen weiteren Standard Beleg geprüft - der ist lt. FON korrekt ! Der wäre - wenn der AES Schlüssel falsch ist - ja dann auch nicht korrekt - bzw. wenn der Startbeleg nicht korrekt vorhanden ist - dann kann ja eigentlich ein folgender Beleg auch nicht korrekt sein.

Oder sehe ich das falsch ?

ErichFreitag commented 6 years ago

Das kann schon sein, weil bei den anderen Belegen der AES-Schlüssel nicht für die Prüfung benötigt wird. Nur beim Startbeleg, um den Umsatzzähler auf 0 zu prüfen.

wpichler commented 6 years ago

Es war eine Kasse mit der selben KassenID an einem anderen Standort - die war bereits gemeldet - und dadurch ist es zu diesen Problemen gekommen. Nachdem ich die KassenID's neu generiert hatte - konnte ich diese Kassen auch wieder ganz normal anmelden...