Skip to content

baumann-at/at-registrierkassen-mustercode

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 

Repository files navigation

Change Log

  • 14.10.2015: Release 0.3 veröffentlicht
    • Features:
      • Demo:
        • Simulation von beschädigter Signatureinrichtung in Demo, Standard Ergebnis für DEP-Export-Format enthält nun Belege die nicht signiert werden konnten
        • Simulation von Zertifikatwechsel, Standard Ergebnis für DEP-Export-Format enthält nun immer zwei Zertifikate
        • AES Schlüssel wird bei Demo mitausgegeben, damit ist Prüfung von Umsatzzähler möglich
      • Prüfung:
        • Prüfung von DEP-Export-Dateien die Belege von ausgefallenen Signatureinrichtungen beinhalten
        • Prüfung akzeptiert nun "0,00" und "0.00" als Dezimalformat (Spezifikation sieht nur "0,00" vor)
        • Prüfung überprüft nun ob in DEP-Export Kassen-ID/Belegnummer Kombination eindeutig (darf nur einmal vorkommen)
        • Prüfung von korrekter Abbildung des Umsatzzählers (AES Schlüssel benötigt)
        • Prüfung von DEP-Export-Files die mehr als ein Signaturzertifikat enthalten
    • Behobene Bugs:
  • 12.10.2015: Release 0.2 veröffentlicht
    • Wichtige Änderungen:
      • Erweiterung der Prüfwerkzeuge
        • Detaillierte Prüfung von einzelnen Belegen (vor allem Format)
        • Detaillierte Prüfung des DEP-Export-Formats (vor allem Format)
        • Detaillierte Rückmeldungen zu Formatfehlern (MWST-Sätze, BASE64, RK Suite etc.)
    • Detailänderungen
      • Hinzufügen von Provider-unabhängigen Nimbus JWS Library (Demo-Code noch nicht Provider-unabhängig)
      • Entfernen des rudimentären Prüf-Codes
  • 02.10.2015: Release 0.1 auf GitHub veröffentlicht

Planung für weitere Releases:

  • Qualitätssicherung, Integration von rudimentärer Kartenunterstützung
  • FAQ-Erstellung und Erweiterung, Qualitätskontrolle, hinzufügen von Hinweisen/Informationen, Erweiterungen

Überblick

Dieses Projekt stellt Demo-Code als Begleitung zur Registrierkassensicherheitsverordnung (RKSV) (https://www.bmf.gv.at/steuern/Registrierkassensicherheitsverordnung.html) zur Verfügung. Der Demo-Code zeigt

  • wie die wesentlichen Elemente der Detailspezifikation der Verordnung in Software implementiert werden können,
  • gibt zusätzliche Erläuterungen zu Aspekten der Detailspezifikation die noch Interpretationsspielraum zulassen,
  • und stellt Prüfwerkzeuge zur Verfügung, die es erleichtern die korrekte Umsetzung einer Registrierkasse im Sinne der Detailspezifikation zu überprüfen (diese Werkzeuge werden ständig erweitert, siehe ChangeLog).

In diesem Projekt werden vorwiegend technische Aspekte der Verordnung betrachtet. Die Informationen und der Code werden laufend erweitert und mit typischen Fragen/Antworten ergänzt.

Wichtige Anmerkungen/Einschränkungen

  • Wichtige Anmerkung: Die Versionen 0.1 und 0.2 und 0.3 demonstrieren wie mit den unterschiedlichen Elementen (Signature, QR-Code etc.) umgegangen werden muss. Obwohl hier nach bestem Gewissen vorgegangen wurde, kann keine GARANTIE für die korrekte Funktionsweise übernommen werden. Um hier in den nächsten Versionen mehr Klarheit bieten zu können, werden vom aktuellen Code unabhängige Prüfwerkzeuge geschaffen. Diese ermöglichen den Kassaherstellern die jeweiligen Produkte (und auch diesen Demo-Code) so weit wie möglich auf das korrekte Verhalten mit Relevanz für die Verordnung zu überprüfen.
  • Sprache: Diese Projektseite verwendet Deutsch als Sprache. In den textuellen Ergänzungen im Source Code wird Englisch verwendet.

##Weiteres Vorgehen Diese Plattform wird für die weitere Bereitstellung von Demo-Code, für das Bereitstellen von Prüfwerkzeugen und für die Erstellung von FAQs verwendet. Die weiteren Versionen des Codes werden demnächst veröffentlicht und fokussieren sich auf erweiterte Verwendungsmuster (z.B. Ausfall Sicherheitseinrichtung) und das Bereitstellen von Prüfwerkzeugen die es ermöglichen erstellte Belege, DEP-Export-Dateien auf Ihre Korrektheit zu prüfen. Auch wird dieses Projekt laufend um Antworten zu häufig gestellten Fragen ergänzt.

##Kontakt/Fragen Es wurde dazu eine Projektseite von der WKO eingerichtet. Es ist dazu eine Registrierung bei der WKO notwendig.

https://communities.wko.at/Kassensoftware/default.aspx

Etwaige Fragen sollten dort im Forum gestellt werden, um eine möglichst effizient die Beantwortung durchführen zu können.

https://communities.wko.at/Kassensoftware/Lists/Forum/

Ausgewählte Fragen/Antworten werden aus diesem Forum übernommen und auf der hier verfügbaren WIKI Seite eingetragen.

https://github.com/a-sit-plus/at-registrierkassen-mustercode/wiki/Erläuterungen-FAQ

Lizenz

Der gesamte Code wird unter der Apache 2.0 Lizenz zur Verfügung gestellt.(http://www.apache.org/licenses/LICENSE-2.0).

Alle verwendeten Dritt-Bibliotheken und deren Lizenzen sind in den Maven Build Dateien (pom.xml) der einzelnen Module ersichtlich und auf der folgenden WIKI Seite zusammengefasst:

https://github.com/a-sit-plus/at-registrierkassen-mustercode/wiki/Lizenzen-Dritt-Bibiliotheken

Verwendung des Democodes und der Demokassa

##Ausführen des Codes (Verwenden der Downloadpakete) Neben dem Source Code wird auch immer eine ZIP Datei der ausführbaren Dateien zur Verfügung gestellt. Die neueste Version ist immer unter Releases zu finden.

###Voraussetzungen

  • Java VM: Es wird eine aktuelle Java VM (JRE ausreichend) mit Version >= 1.7 benötigt.
  • Kryptographie: Der Registrierkassen-Demo-Code verwendet starke Kryptographie (z.B. AES mit 256 bit Schlüssel), der mit den Standard-Export Policies der Java VM nicht ausgeführt werden kann. Es muss daher die "Unlimited Strength Policy" von Oracle installiert werden. Siehe: "http://www.oracle.com/technetwork/java/javase/downloads/index.html"

###Verwendung des Demo-Codes - Demokassa Der Demo Code enthält aktuell eine einfache Testklasse die eine Demokassa ansteuert. Diese Demokassa bietet die Möglichkeit eine angegeben Anzahl von Belegen zu erstellen, diese in das DEP Export Format zu exportieren, und einfache Test-Belege als PDF zu erstellen, die die Daten als QR-Code oder OCR-Code beinhalten.

Download und entpacken von regkassen-demo-release-0.3.zip (siehe https://github.com/a-sit-plus/at-registrierkassen-mustercode/releases).

Ausführen der Demokasse mit

  java -jar regkassen-demo-0.3.jar -o OUTPUT_DIR -n 20 -g -s

Wobei

  • "OUTPUT_DIR" ein Verzeichnis ist, in dem die vom Demo-Code erstellten Daten/Belege geschrieben werden. Es wird in der aktuellen Version dazu ein zufällig genierter Signaturschlüssel verwendet. Wenn die Option -o nicht angegeben wird, dann wird im aktuellen Verzeichnis eines mit dem Prefix CashBox ersteerlällt.
  • Die Option -n gibt die Anzahl der zu erstellenden Belege an. Wenn sie nicht angegeben wird, werden 15 Belege erstellt.
  • Die Option -s gibt an, dass nur mit einem Signaturzertifikat gearbeitet werden soll. Wird die Option weggelassen wird mit zwei Signaturzertifikaten gearbeitet, um das Handling dieses Falles im Export-Format abbilden zu können.
  • Die Option -g gibt an, dass die Signatureinrichtung nicht ausfallen kann. Wird die Option weggelassen fällt die Signatureinrichtung zufällig aus und die Vorgehensweise bzw. die Recovery-Prozedur wird gezeigt.

Das Output-Verzeichnis enthält folgende Dateien/Verzeichnisse:

  • Datei dep-export.txt: Die generierten Belege im DEP Export Format (Detailspezifikation, Abs 3)
  • Datei qr-code-rep.txt: Die textuelle Representation der maschinenlesbaren QR-Codes (der Inhalt der QR-Codes). Eine Zeile der Datei entspricht der QR-Code Repräsentation eines Belegs.
  • Datei ocr-code-rep.txt: Die textuelle Representation der maschinenlesbaren OCR-Codes. Eine Zeile der Datei entspricht der OCR-Code Repräsentation eines Belegs.
  • Datei signatureCertificates.txt: Die/das verwendete(n) Signatur-Zertifikat(e) im BASE64-kodierten DER-Format
  • Datei signatureCertificateChains.txt: Die zu dem/den Signatur-Zertifikat(en) passende(n) Zertifikatsketten
  • Datei aesKeyBase64.txt: Der BASE64-kodierte AES-Schlüssel für die Ver/Entschlüsselung des Umsatzzählers im Beleg
  • Verzeichnis ocr-code-dir: PDF-Belege die mit dem OCR-Code bedruckt wurden
  • Verzeichnis qr-code-dir: PDF-Belege die mit dem QR-Code bedruckt wurden

Ein Beispiel für den Output ist auch direkt verfügbar: example-output-0.3.zip (siehe https://github.com/a-sit-plus/at-registrierkassen-mustercode/releases). Code dazu: siehe Klasse SimpleDemo.

###Verwendung des Prüfwerkzeugs In Version 0.3 wurden die Prüfwerkzeuge um weitere Prüfungen erweitert (Ausgefallene Signatureinrichtung, Veschlüsselter Umsatzzähler, etc.). Neben dem DEP Export Format können nun auch einzelne QR-Code-Bsp von Belegen geprüft werden. Download und entpacken von regkassen-demo-release-0.3.zip (siehe https://github.com/a-sit-plus/at-registrierkassen-mustercode/releases).

DEP-Export Format

java -jar regkassen-verification-depformat-0.3.jar -i DEP-EXPORT-FILE -k AES-KEY-FILE

Wobei

  • DEP-EXPORT-FILE der im vorigen Beispiel erstellten dep-export.txt Datei entspricht. Für den schnellen Test kann die Datei dep-export.txt aus dem Beipspiel übernommen werden.
  • AES-KEY-FILE der im vorigen Beispiel erstellen "aesKeyBase64.txt" Datei entspricht. Für den schnellen Test kann die Datei aesKeyBase64.txt aus dem Beipspiel übernommen werden.

QR-Code-Repräsentation eines einzelnen Belegs oder mehrerer Belege

java -jar regkassen-verification-receipts-0.3.jar -i QR-CODE-REP-FILE -s SIGNATURE-CERTIFICATES-FILE

Wobei

  • QR-CODE-REP-FILE der im vorigen Beispiel erstellen qr-code-rep.txt Datei Datei entspricht. Für den schnellen Test kann die Datei qr-code-rep.txt aus dem Beispiel übernommen werden.
  • SIGNATURE-CERTIFICATE-FILE der im vorigen Beispiel erstellen signatureCertificates.txt Datei entspricht. Für den schnellen Test kann die Datei signatureCertificates.txt aus dem Beispiel übernommen werden.

Anmerkung: Sollten sich mehrere Belege in der Datei QR-CODE-REP-FILE befinden, so wird deren Verkettung NICHT überprüft. Diese Prüfung wird nur bei der DEP-Export-Format Prüfung durchgeführt.

##BUILD Prozess, Details zum Code Das Projekt ist in drei Maven Module aufgeteilt:

  • regkassen-core: Dieses Modul enthält den Code der für die Erstellung und Signatur der Belege notwendig ist.
  • regkassen-democashbox: Dieses Modul verwendet das regkassen-core Modul und setzt Demo-Use Cases um.

###Übersicht über den Code

  • at.sitplus.regkassen.core.base: Diese Package enthält Basisdatenstrukturen, Hilfsfunktionen und die in der Detailspezifikation definierten RegKassen Suite. (Detailspezifikation, Abs 2). Link zu Code
  • at.asitplus.regkassen.core.modules: In diesem Package sind die Module der Kassa enthalten.
    • DEP: Modul für die Implementierung des Datenerfassungsprotokolls. Wesentliche Funktionalität hier ist der EXPORT des DEPs (implementiert in SimpleMemoryDEPModule)
    • init: Parameter für die Initialisierung der Registrierkasse
    • print: Einfache Version eines PDF Druckers, der QR-Codes und OCR-Codes auf Belege druckt.
    • signature: Dieses Package besteht aus zwei Hauptkomponenten:
      • jws: Mit dem Modul OrgBitbucketBcJwsModule oder ComNimbusdsJwsModule werden die JWS Signaturen erstellt. Die Module greifen auf das folgende Package zu:
      • rawsignatureprovider: Dieses Modul erstellt die wirkliche Signatur und kann eine Smartcard, ein HSM, ein Cloud-Dienst oder ein anderes Modul (im geschlossenen System) darstellen. Wichtige Anmerkung: In der aktuellen DEMO-Kassa ist nur ein simples Software-basiertes Modul enthalten (DemoSoftwareSignatureModule). Dieses DARF AUF KEINEN FALL in einer echten Kasse verwendet werden. In weiteren Demo-Code Versionen wird hier die Ansteuerung der Karte gezeigt.
  • at.sitplus.regkassen.core: In diesem Package befindet sich Demo-Registrierkasse (DemoCashBox). Diese Klasse verwendet die oben genannten Module um Belege zu speichern, zu signieren und zu drucken (als PDF).

###Maven Build Um den Maven Build-Prozess eigenständig durchzuführen, sind in den jeweiligen Verzeichnissen folgende Schritte notwendig:

  regkassen-core: mvn install
  regkassen-democashbox: mvn install

In den Verzeichnissen regkassen-democashbox, regkassen-verification befinden sich nach dem erfolgreichen Build-Prozess die JAR Dateien (im Unterverzeichnis "target"), die zum Ausführen benötigt werden (siehe Punkte zur Verwendung des Demo-Codes weiter oben).

#Erläuterungen zur Detailspezifikation der Verordnung/FAQs Werden laufend ergänzt: https://github.com/a-sit-plus/at-registrierkassen-mustercode/wiki/Erläuterungen-FAQ

Impressum

Informationen zu A-SIT und A-SIT Plus unter http://www.a-sit.at

A-SIT Plus GmbH A-1030 Wien, Seidlgasse 22 / 9 1030 Wien FN 436920 f, Handelsgericht Wien

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 100.0%