Closed grafuzzi closed 5 years ago
Hab das nur mal kurz gecheckt, der Umsatzähler steht bei allen Datensätzen auf 0
Danke an Flanelli für die Antwort.
Ich konnte den Fehler weiter eingrenzen:
es hat anscheinend mit der Verschlüsselung des Umsatzzählers zu tun - wie schon in der Einleitung beschrieben. Der Fehler das die BIG-Endian Verschlüsselung nicht korrekt umgesetzt ist.
Vom Code habe ich mich an das Beispiel des SEE Herstellers gehalten: https://labs.a-trust.at/developer/ShowSource.aspx?id=126 Diese wird auch hier im Forum mehrmals angewendet.
Schön langsam habe ich die Vermutung das es hier eine Diskrepanz gibt.
Hat jemande die gleiche Erfahrung gemacht? Vielleicht mit C#?
Danke
Nach weiteren Stunden habe ich jetzt folgendes Ergebnis des Umsatzzaehlers
{ "verificationId" : "DEP_TURNOVER_COMPARE", "version" : 1, "verificationName" : "Entwicklung des Umsatzzählers", "verificationTextualDescription" : "In diesem Modul wird überprüft, ob die Entwicklung des verschlüsselten Umsatzzählers mit den Belegbeträgen übereinstimmt.", "verificationState" : "FAIL", "verificationResultDetailedMessage" : "Der berechnete Umsatzzähler entspricht nicht dem verschlüsselten Umsatzzähler (siehe Parameter DECRYPTED_TURNOVER_VALUE). Bitte überprüfen Sie die Kodierung des Umsatzzählers (BIG-Endian, Zweierkomplement), oder den verwendeten AES-Schlüssel.", "input" : { "DECRYPTED_TURNOVER_VALUE" : "3600", "TURNOVER_SUM" : "1750", "SUM_TAX_SET_ERMAESSIGT2" : "1,00", "SUM_TAX_SET_ERMAESSIGT1" : "1,14", "SUM_TAX_SET_NORMAL" : "18,50", "TYPE_RECEIPT" : "STANDARD_BELEG", "SUM_TAX_SET_NULL" : "0,00", "SUM_TAX_SET_BESONDERS" : "0,00" }, "output" : { "TURNOVER_SUM" : "3600" }, "verificationTimestamp" : "2019-02-22T21:13:31.555+01:00" } ] }
DECRYPTED_TURNOVER_VALUE enthält nun den Umsatz der auch richtig ist. Jedoch wird vom Prüftool noch immer ein Fail angezeigt
Durch die Verwendung des Codes aus https://github.com/BMF-RKSV-Technik/at-registrierkassen-mustercode/issues/91 und des Links daraus https://dotnetfiddle.net/8FT29H
Was ist noch falsch? Warum nimmt das Prüftool den Umsatzzähler nicht an? Bitte um Hilfe
Danke, grafuzzi
Der summierte Umsatzzähler bis zum letzten Beleg wurde mit "TURNOVER_SUM" : "1750" errechnet. Im aktuellen Beleg kommen Beträge mit "SUM_TAX_SET_ERMAESSIGT2" : "1,00", "SUM_TAX_SET_ERMAESSIGT1" : "1,14", "SUM_TAX_SET_NORMAL" : "18,50", dazu. 1750 + 100 + 114 + 1850 ergibt 3814 und nicht 3600.
Herr Ing. Freitag, wie immer höchst kompetent, rasch und präzise....
Chapeau !
Küss die Hand, @Flanelli würde ich unter anderen Umständen sagen/schreiben.
Danke an Herrn Ing. Freitag - das hat mein Problem gelöst.
Guten Abend,
nach dem der Startbeleg und alle Einzelbelege erfolgreich geprüft werden. Hänge ich jetzt leider doch mit der Fehlermeldung: "verificationResultDetailedMessage" : "Der berechnete Umsatzzähler entspricht nicht dem verschlüsselten Umsatzzähler (siehe Parameter DECRYPTED_TURNOVER_VALUE). Bitte überprüfen Sie die Kodierung des Umsatzzählers (BIG-Endian, Zweierkomplement), oder den verwendeten AES-Schlüssel."
Nach dem ich das Dokument "20160905-Detailfragen-RKSV-V1.2.pdf" nochmal durchgearbeitet habe und auch den Test für die "Anwenden des Hashalgorithmus/Extraktion des Verkettungswerts" Kap. 2.4.1 für den Startbeleg erfolgreich getestet habe muss der Code für die Hashberechnung stimmen. Beispiel: Kassen-ID "A12347" -> Hash (Base64) OeSKQjO4zKI=
Des weiteren ist in der 001_cashbox (Standardbeleg) der Fehler { "verificationId" : "TYPE_OF_RECEIPT_STANDARD", "version" : 1, "verificationName" : "Belegtyp: Standardbeleg", "verificationTextualDescription" : "Es werden folgende Eigenschaften überprüft: Mindestens ein Steuersatz-Wert muss ungleich 0 sein, es muss ein Umsatzzähler im maschinenlesbaren Code vorhanden sein (es dürfen nicht die BASE64-kodierten Zeichenketten von \"TRA\" oder \"STO\" statt dem Umsatzzähler vorhanden ein), der Verkettungswert darf nicht auf die Kassen-ID zeigen.", "verificationState" : "FAIL", "verificationResultDetailedMessage" : "Der Verkettungswert ist von der Kassen-ID abgeleitet.", "verificationTimestamp" : "2019-02-18T21:37:45.471+01:00"
Es muss ja so sein das der Verkettungswert des Startbelegs (die Kassenid) gehasht und 8 byte davon in BASE64 erzeugt werden. Das ist dann Verschlüsselte Umsatzzähler für den Startbeleg.
Für alle anderen Belegarten wird die Repräsentation der JWS-Signatur, des vorangegangen Belegs oder der DEP Eintrag anstelle der KassenID genommen und wieder gehasht davon 8 bytes und ge-BASE64. oder bin ich hier auf den holzweg???
danke im voraus, grafuzzi
exportDEP.txt exportQR.txt 0001_app_json.txt 0001_cashbox_full_json.txt 0001_cashbox_json.txt cryptographicMaterialContainer_json.txt 0000_app_json.txt 0000_cashbox_full_json.txt 0000_cashbox_json.txt
Anbei meine Dateien