AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte cc.KassenSichV.* - Die Unitsammlung zur Kassensicherungverordnung des BMF

cc.KassenSichV.* - Die Unitsammlung zur Kassensicherungverordnung des BMF

Ein Thema von bernau · begonnen am 20. Jul 2020 · letzter Beitrag vom 25. Jun 2021
Antwort Antwort
Seite 12 von 13   « Erste     2101112 13   
Benutzerbild von bernau
bernau
Registriert seit: 1. Dez 2004
In einen anderen Thread hier in der Delphi-Praxis hatte ich wegen einem Gemeinschaftsprojekt zur Ansteuerung der SwissBit-TSE angefragt. Da es nicht wirklich ein bestehendes Projekt gab, habe ich einfach mal angefangen. Ist stehe etwas unter Zeitdruck, deshalb wollte ich nicht erst ein Gemeinschaftsprojekt organisieren. Zwischenzeitlich habe ich einige Anfragen von Personen erhalten, die auch noch am Anfang der Entwicklung stehen. Die KassenSichV ist ein heikles Thema und ich denke mehrere Augen sehen mehr als Zwei. Deshalb möchte ich hiermit meine Unit-Sammlung, die ich in den letzten Tagen geschrieben habe, der Allgemeinheit zur Verfügung stellen.

Etwas zur Lizenz:

Es wird die Beerware-Lizenz verwendet. https://de.wikipedia.org/wiki/Beerware

Kurz gesagt, mach mit der Unitsammlung was du willst. Wenn es möglich ich, dann sende mir einfach eine Flasche Bier aus deiner Region zu. Vielleicht noch einen zugehörigen Bierdeckel.

Es kann auf einem gemeinsammen Delphi-Event (z.B. die Foren-Tage https://forentage.de) auch gerne ein Bier ausgegeben werden.

Gegen einen Leckeren Single-Malt-Whiskey hätte ich auch nichts einzuwenden

Grundsätzlich erfolgt die Nutzung dieser Unitsammlung auf eigenes Risiko. Ich weise ausdrücklich darauf hin, dass bei falscher Nutzung die Hardware (TSE) unbrauchbar gemacht werden kann.

SwissBit-TSE / DsFinV-K

Ursprünglich wollte ich nur einen kleinen Wrapper für die DLL der SwissBit-TSE. Nun ist noch eine Klasse hinzugekommen, mit der die DLL noch etwas komfortabler angesprochen werden kann. Eine Kassenbeleg in mit wenigen Zeilen Quellcode erstellt und die benötigten Rückgabewerte für den Kassenbon werden in einem einfachen Record inkl. dem Inhalt des QR-Codes zurückgegeben. Da aber auch vieles davon in die DsFinV-K übergeht, werde ich ziemlich zügig noch weitere Klassen erstellen, die einen ordentlichen Export für die DsFinV-K ermöglicht. Die entsprechenden Units werde ich nachreichen.

Demo-Programm

Damit die Units von Interessenten einfach getestet werden können, habe ich ein kleines VCL-Programm beigefügt. Nichts besonderes. Soll nur zeigen, wie Funktionen angesprochen werden. Hier zwei Screenshots:

Version 0.2

Die DLL kann nun dynamisch geladen werden. Informationen dazu stehen in der Datei "cc.KassenSichV.License"

Diverse Fehler behoben.

Version 0.4

Event OnSelftestNotify zugefügt.

Automatisch Steuersatzzuordnung.

Kontrolle ob Bruttoumsatz und Zahlungen stimmig sind.

Compilerdirective WORMAPIDLL_STATIC zugefügt.

Verschiedene Hilfsfunktionen

Singleton-Funktion

Version 1.0

Neue Funktionen neuerer SDK > 5.7.1

keepalive_configure

LAN-TSE (von Uwe Koch)

Log-Funktionen

Weitere Events

Details stehen in der Datei "cc.KassensichV.ChangeLog.pas"

Erweiterung der SwissbitGui. (Siehe Bilder)
Miniaturansicht angehängter Grafiken
swissbitgui1.png   swissbitgui2.png   swissbitgui3.png   swissbitgui4.png   swissbitgui5.png  

Angehängte Dateien
Dateityp: zip cc.KassenSichV.0.4.zip (39,0 KB, 124x aufgerufen)
Dateityp: zip cc.KassenSichV.1.0.zip (66,3 KB, 128x aufgerufen)
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de

Geändert von bernau (27. Jan 2021 um 23:15 Uhr)
 
mlc42
 
#111
  Alt 17. Mär 2021, 09:21
Vielen Dank für die Erläuterung,

wie schön das ich es nur mit € zu tun habe und ohne Durchschnittssätze.
  Mit Zitat antworten Zitat
mlc42
 
#112
  Alt 25. Mär 2021, 11:15
Nun bin ich auch beim Export angekommen. Leider finde ich in den Dokus
und diversen Webseiten keine genaue Erklärung.
Beispieldateien und eine Validierungssoftware wie z.B. bei xRechnung gibt
es ja scheinbar nicht.



Formale Fragen zur DsFinVK Dateierstellung

index.xml enthält ja die mehr oder weniger genauen Beschreibungen der CSV Dateien.
Die Dateinamen sind nicht die in dem DsFinV PDF angegebenen sondern die im
Feld Description in der index.xml angegebenen z.B.: BonPos <-> lines.csv


1) CSV Datei als UTF8 oder Ansi. In dem xml steht immer <UTF8 /> ?
2) Muss eine Headerzeile mit den Feldnamen ausgegeben werden ?
3) Fließkommadarstellung mit 1000er Trennung z.B. 1.1000,20 ?
3) Nur AlphaNumeric Felder in "" ?
4) <RecordDelimiter>&#xD;&#xA;</RecordDelimiter> was genau wird da verlangt tatsächlich "CarriageReturn ; Linefeed ;" ?
5) <Range> <From>2</From> was hat das zu bedeuten ?
6) <Accuracy>3</Accuracy> was bedeutet das ? Anzahl der Nachkommastellen ?
7) Leere Dateien z.B. Agentur müssen auch erstellt werden ?
8) Für jeden Tage einen Satz der CSV Dateien erstellen ?

Die inhaltlichen Fragen sind dann ja nochmal eine andere Nummer.
  Mit Zitat antworten Zitat
mlc42
 
#113
  Alt 26. Mär 2021, 15:08
In der index.xml ist folgendes angegeben

<DecimalSymbol>,</DecimalSymbol>
<DigitGroupingSymbol>.</DigitGroupingSymbol>

in der DsFinVK Beschreibung steht aber folgendes Beispiel

Mengenangabe der einzelnen Position: 2.000

Was stimmt den nun ?

Bei Stk_BR dann wieder Preis pro Maßeinheit: 5,00 wobei ich da keine 5 Nachkommastellen sehe.

<Accuracy> ist demnach wohl die Angabe der Nachkommstellen

Geändert von mlc42 (26. Mär 2021 um 15:17 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
buko

 
Delphi 10.3 Rio
 
#114
  Alt 19. Apr 2021, 18:40
Hallo,

ich hätte gerne eure Meinung dazu wie ich die TSE Anbindung am besten umsetzen sollte.
Wir sind eine kleine Genossenschaft und beliefern Endkunden mit Tiefkühlware so ähnl.
wie Eismann oder Bofrost das auch tun.
Das heißt wir fahren mit dem LKW eine Tour in der Stammkunden regelmäßig beliefert werden.
Der Fahrer nimmt an der Tür oder bei einem Kaffee die Bestellung entgegen was mit Beratung schon mal
bis zu einer 3/4 Stunde dauern kann. Alle Kundenwünsche werden bis dahin einzeln erfasst.

Er geht zum Fahrzeug druckt dort die Bestellung aus, sucht die Ware zusammen ( der Beleg ist bisher offen geblieben! )
bringt Sie dem Kunden in die Truhe und dann kassiert er das Geld.

Die Problematik ist folgende:

1. jetzt kommt der Kunde auf die Idee das er was vergessen hat (natürlich 3 Stock)
2. jetzt ändert der Kunde seine Zahlweise (Bar, Karte, Abbuchung, offene Rechnung)
3. die Ware passt nicht komplett in die Tiefkühltruhe ein Teil muss storniert werden

erst als alle Unklarheiten beseitigt waren und der Fahrer zurück im LKW war wurde der Beleg abgeschlossen.

So der bisherige Ablauf

Die Warenwirtschaft ist in den letzten 2 Jahre entstanden, vorher gab es überhaupt nix, und hatte zunächst
(sagen wir mal) nicht den Anspruch eine Kasse zu sein.

Wie würdet Ihr die TSE umsetzen:
- Artikel als Bestellung buchen und dann wirklich beim Druck den Beleg sofort abschließen
- Den Bon in einem Rutsch buchen am Ende der Bestellung und bis dahin
das ganze als Warenkorb sehen wie bei einer Online-Bestellung
oder gibt es noch eine Variante von der ich nix weiß.


Bin Dankbar für eure Meinungen
Jürgen
  Mit Zitat antworten Zitat
Frickler

 
Delphi XE6 Enterprise
 
#115
  Alt 19. Apr 2021, 18:52
Nun bin ich auch beim Export angekommen. Leider finde ich in den Dokus
und diversen Webseiten keine genaue Erklärung.
Beispieldateien und eine Validierungssoftware wie z.B. bei xRechnung gibt
es ja scheinbar nicht.
Validierungssoftware gibts (von der Firma "Gastro-MIS"), ist aber nicht kostenlos.
  Mit Zitat antworten Zitat
BlueStarHH

 
Delphi 10.3 Rio
 
#116
  Alt 28. Mai 2021, 08:04
Hallo zusammen,

erstmal Danke an Bernau und alle hier für diese tolle Arbeit!

Ich habe folgende Fragen dazu:
Was ist der Unterschied zwischen Admin und Timeadmin?
Wofür ist der Schalter "Update Timestamp" in Deiner Demo da? Warum/wann muss man den updaten?
In Deiner Demo wird nach dem Kassieren die Startszeit ausgegeben aber nicht die Endzeit. Wie bekomme ich die Endzeit?
Muss ich beim Kassieren Zahlungsmittel (mit Betrag) angeben? Ich möchte nur den Bruttoumsatz erfassen.
Warum erhöht sich in Deiner Demo der Signaturzähler nach dem Kassieren um 2 statt wie vermutet um 1?

Danke!
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

 
Delphi 10.3 Rio
 
#117
  Alt 28. Mai 2021, 09:08
Was ist der Unterschied zwischen Admin und Timeadmin?
In regelmäßigen Abständen muss die Zeit der TSE synchronisiert werden. Dazu wird die TimeAdmin-PIN benötigt. Diese PIN darf auch in der Konfiguration deines Programmes gespeichert werden. Andere Funktionen (z.B. zufügen eines Client) benötigen auch eine PIN. Diese PIN darf nicht in der Konfiguration gespeichert werden.

Sobald hasValidTime=false ist, muss du die Zeit Synchronisieren. Macht die Komponente automatisch.


In Deiner Demo wird nach dem Kassieren die Startzeit ausgegeben aber nicht die Endzeit. Wie bekomme ich die Endzeit?
LogTime ist die Endzeit.

Muss ich beim Kassieren Zahlungsmittel (mit Betrag) angeben? Ich möchte nur den Bruttoumsatz erfassen.
Es muss das Zahlungsmittel (Bar/Unbar) angegeben werden UND der Bruttoumsatz (Aufgeteilt in den verschiedenen MWST-Sätzen) angegeben werden. Das Ergebnis wird als ProcessData der TSE übergeben.

Warum erhöht sich in Deiner Demo der Signaturzähler nach dem Kassieren um 2 statt wie vermutet um 1?
Der Start bekommt eine Signatur und das Ende bekommt auch eine Signatur. Alles zusammen ist eine Transaktion.
  Mit Zitat antworten Zitat
BlueStarHH

 
Delphi 10.3 Rio
 
#118
  Alt 28. Mai 2021, 09:57
Danke, für die vorherigen Antworten.

Ist bekannt welche maximalen Länge die TSE-Seriennummer und die TSE-Signatur haben können?
  Mit Zitat antworten Zitat
noisy_master

 
Delphi XE5 Professional
 
#119
  Alt 28. Mai 2021, 11:14
Danke, für die vorherigen Antworten.

Ist bekannt welche maximalen Länge die TSE-Seriennummer und die TSE-Signatur haben können?
Laut DSFin ist zumindest der Export wie folgt definiert:

TSE_TA_SIG
Feldtyp: Zeichen
Feldlänge max.: 512
Kurzbeschreibung:
Die Signatur der FinishTransaction-Operation in base64-Codierung

und

TSE_SERIAL
Feldtyp: Zeichen
Feldlänge: 68
Kurzbeschreibung:
Seriennummer der TSE (Entspricht laut TR-03153 Abschnitt 7.5. dem Hashwert des im
Zertifikat enthaltenen Schlüssels; Octet-String in Hexadezimal-Darstellung)

Ich hoffe das hilft weiter....
Dirk
  Mit Zitat antworten Zitat
BlueStarHH

 
Delphi 10.3 Rio
 
#120
  Alt 28. Mai 2021, 11:18
Ich hoffe das hilft weiter....
Ja, danke!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 01:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf