AGB  ·  Datenschutz  ·  Impressum  







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

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

Ein Thema von bernau · begonnen am 20. Jul 2020 · letzter Beitrag vom 21. Jun 2024
Antwort Antwort
Seite 3 von 14     123 4513     Letzte »    
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, 154x aufgerufen)
Dateityp: zip cc.KassenSichV.1.0.zip (66,3 KB, 238x aufgerufen)
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de

Geändert von bernau (27. Jan 2021 um 23:15 Uhr)
 
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#21
  Alt 24. Jul 2020, 10:54
Aha? So rein Interesse halber, in welcher Situation muss man denn einen Bon parken?
- Der Kunde hat nicht genug Geld dabei und geht schnell etwas holen.
- Der Kunde hat einen falschen Artikel mitgenommen und geht diesen schnell umtauschen.
...

Dann braucht man nicht alles neu eingeben, sondern parkt den Beleg und setzt ihn fort, wenn der Kunde wieder da ist.
Sebastian Jänicke
  Mit Zitat antworten Zitat
michaelg
 
#22
  Alt 24. Jul 2020, 11:43
In der Datatypes-Unit habe ich beim Hinzufügen einer Bestellung eine Zeile hinzugefügt, pflegst Du die mit ein?

Code:
procedure TccDsFinVkProcessDataBestellung.AddBestellung(const aMenge: Double; const aBezeichnung: String; const aPreis: Double);
var
  lBestellung: TBestellung;
begin
  lBestellung.Menge := aMenge;
  lBestellung.Bezeichnung := aBezeichnung;
  lBestellung.Preis := aPreis;

  Bestellungen:=Bestellungen+[lBestellung];  //Michael Groß: 24.07.2020 sonst wird die Bestellung dem Array nicht hinzugefügt.
end;
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

 
Delphi 12 Athens
 
#23
  Alt 24. Jul 2020, 12:14
Code:
  Bestellungen:=Bestellungen+[lBestellung];  //Michael Groß: 24.07.2020 sonst wird die Bestellung dem Array nicht hinzugefügt.
Danke

Habe die Zeile zugefügt.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

 
Delphi 12 Athens
 
#24
  Alt 24. Jul 2020, 12:15
Dann braucht man nicht alles neu eingeben, sondern parkt den Beleg und setzt ihn fort, wenn der Kunde wieder da ist.
Das ist ein Argument!
  Mit Zitat antworten Zitat
michaelg
 
#25
  Alt 24. Jul 2020, 14:02
Ich habe im Testfenster eine Transaktion für eine Beispielbestellung eingebaut. Ein paar Artikel mit verschiedenen Steuersätzen werden dort an das TSE-Modul übergeben.

Hinweis: Bei der Processdata von Bestellungen sollte man sich nicht wundern, dass die einzelnen Artikel im Protokoll direkt nebeneinander kleben. Das vorgebenene Trennzeichen ist nur ein Wagenrücklauf (CR, \n oder auch#13), und das wird im Protokoll-Memofeld nicht angezeigt. Ich dachte erst es wäre ein Fehler, das CR ist aber definitiv mit drin.
Miniaturansicht angehängter Grafiken
swissbit_gui_screenshot_mg.jpg  
Angehängte Dateien
Dateityp: zip SwissbitGUI_v2_MG.zip (7,5 KB, 43x aufgerufen)
  Mit Zitat antworten Zitat
michaelg
 
#26
  Alt 24. Jul 2020, 15:32
Ich mache mir gerade Gedanken darüber, wie ein Anwender unserer Software das TSE-Modul möglichst einfach selbst einrichten kann. Wenn ich mir die Anleitung ansehe, scheint das für einen normalen Menschen doch recht komplex.

https://support.gastro-mis.de/suppor...-der-anbindung

Der Idealfall wäre, wenn er nur noch den Laufwerksbuchstabe in der Konfiguration der Kasse hinterlegen müsste, und der Rest geht von selbst. Aber so einfach wird es wohl nicht werden.

Welche Mittel stellt Ihr bei Euren Anwendern softwareseitig zu Verfügung?

1.Laufwerksbuchstabe
2. ClientID der Kasse
3. PIN und PUK von User und TimeAdmin eintragen und ggf. auch noch eine Set-Methode, um die individuell anpassen zu können?

Was ist, wenn ein Zertifikat mal abläuft? Stellt Ihr eine Möglichkeit bereit, um die PEM zu aktualisieren? Kann das überhaupt gehen, wenn die bisher erfassten Daten mit dem alten Zertifikat erstellt wurden?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#27
  Alt 24. Jul 2020, 20:51
Das ist ein Argument!
Ist also immer das Selbe, wie Überall und bei Allem...

Man hat was angefangen und dann kommt was Anderes mal eben kurz dazwischen.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

 
Delphi 12 Athens
 
#28
  Alt 27. Jul 2020, 20:11
Welche Mittel stellt Ihr bei Euren Anwendern softwareseitig zu Verfügung?

1.Laufwerksbuchstabe
2. ClientID der Kasse
3. PIN und PUK von User und TimeAdmin eintragen und ggf. auch noch eine Set-Methode, um die individuell anpassen zu können?
Wir haben uns für folgendes entschieden:
  • Die erste Einrichtung der TSE wird durch uns "bei uns" durchgeführt.
  • Der Anwender erhält mit der TSE die Admin-Pin und die TimeAdmin-Pin. Die PUK erhält er nur auf ausdrücklichen Wunsch.
  • In der Konfiguration wird der Laufwerksbuchstabe und die TimeAdmin-Pin hinterlegt. Für alle Funktionen, die den Admin-Pin benötigen, muss dieser über ein Passwortdialog vom Anwender eingegeben werden.
  • Sollte die PUK-Benötigt werden, dann geben wir diese per Fernwartung ein. Vorher lesen wir alle Parameter der TSE aus. Die Parameter der TSE werden regelmäßig protokolliert.



Was ist, wenn ein Zertifikat mal abläuft? Stellt Ihr eine Möglichkeit bereit, um die PEM zu aktualisieren? Kann das überhaupt gehen, wenn die bisher erfassten Daten mit dem alten Zertifikat erstellt wurden?
Das Zertifikat läuft in der Regel in 5 Jahren aus. Eine Verlängerung für die TSE ist nicht möglich. Die Frage ist, was hat sich die BMF neues einfallen lassen. In fünf Jahren diskutieren wir wahrscheinlich wieder hier, die "neue" TSE mit neuen Technischen Funktionen angesprochen wird.
  Mit Zitat antworten Zitat
herbstrot

 
Delphi 10.4 Sydney
 
#29
  Alt 28. Jul 2020, 08:29
Moin,

Kunde hat z.B. was vergessen. Bon Parken und nächsten Kunden bedienen. Im Suppermarkt wird man soetwas eher weniger nutzen. In Boutiquen wird das schon des öfteren genutzt.
Thoren
  Mit Zitat antworten Zitat
herbstrot

 
Delphi 10.4 Sydney
 
#30
  Alt 28. Jul 2020, 08:42
Welche Mittel stellt Ihr bei Euren Anwendern softwareseitig zu Verfügung?

1.Laufwerksbuchstabe
2. ClientID der Kasse
3. PIN und PUK von User und TimeAdmin eintragen und ggf. auch noch eine Set-Methode, um die individuell anpassen zu können?

Was ist, wenn ein Zertifikat mal abläuft? Stellt Ihr eine Möglichkeit bereit, um die PEM zu aktualisieren? Kann das überhaupt gehen, wenn die bisher erfassten Daten mit dem alten Zertifikat erstellt wurden?
Bei uns muss der Anweder den Laufwerksbuchstabe selbst angeben, PIN und PUK ist bei der Ersteinrichtung zu vergeben.
ClientId geben wir vor.

Das Ablaufen des Zertifikats hab ich mit 2 Entwickler-TSE nachgestellt (bei einer TSE war das Zertifikat abgelaufen). Da die Kasse bei jedem Start und bei jeder Aktion - Position buchen, Bezahlen, etc. - die TSE einbindet, kann man darauf reagieren das das Zertifikat abgelaufen ist.
Was allerdings in 5 Jahren ist wird man dann sehen.
Thoren

Geändert von herbstrot (28. Jul 2020 um 08:46 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 14     123 4513     Letzte »    


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 +1. Es ist jetzt 09:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz