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 2 von 14     12 3412     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 bernau
bernau

 
Delphi 12 Athens
 
#11
  Alt 22. Jul 2020, 12:38
@Bernau: Kann ich bei irgendwas mithelfen? Das Testprogramm um bestimmte Vorfälle erweitern oder ähnliches?
Beim Testprogramm. Gerne. Gute Idee.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#12
  Alt 22. Jul 2020, 19:22
Bei Bestellung wird jeder einzelne Artikel aufgelistet mit Menge, Bezeichnung und Betrag.
Ja, ok, das war falsch ausgedrückt. Aber wenn du z.B. den Artikel zwei mal stornierst, dann einmal mit einem erhöhten Preis buchst, dann schickst du das nicht einzeln, sondern eine Summe pro Artikel.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

 
Delphi 12 Athens
 
#13
  Alt 23. Jul 2020, 09:16
Bei Bestellung wird jeder einzelne Artikel aufgelistet mit Menge, Bezeichnung und Betrag.
Ja, ok, das war falsch ausgedrückt. Aber wenn du z.B. den Artikel zwei mal stornierst, dann einmal mit einem erhöhten Preis buchst, dann schickst du das nicht einzeln, sondern eine Summe pro Artikel.
Aber du schreibst es ja selber, bei der Stornierung gibst du die Menge, den Artikel und den Stornopreis an. Nur aufsummiert mit dem zusätzlich verkaufen Artikel mit dem erhöhen Preis. Das Sind die Werte (Menge, BEzeichnung, Preis) die in "Bestellung-V1" angegeben werden müssen.

Artikel Stornieren und dann den gleichen Artikel zu einem höheren Preis würde ich allerdings nicht aufsummieren, sondern in zwei Datensätzen (Einmal Storno und einmal Neuverkauf) angeben. Das aufsummierte wird ein Steuerprüfer nicht verstehen.

Grundsätzlich gilt. Bei ProcessType "Bestellung-V1" werden die einzelnen Artikel angegeben. Am Schluss wird "Kassenbeleg-V1" verwendet, in dem die Bruttosummen und die Zahlungsmittel angegeben werden.

"Bestellung-V1" wird aber Hauptsächlich in der Gastronomie angewendet. Nicht meine Branche und ich werden diesen ProcessType wahrscheinlich nie verwenden. Beim normalem Abkassieren (Kunde kommt an die Kasse und bezahlt mehrere Artikel) wird immer nur "Kassenbeleg-V1" mit den Entsprechenden Summen verwendet. Einzelne Artikel werden nicht angegeben.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#14
  Alt 23. Jul 2020, 10:09
Artikel Stornieren und dann den gleichen Artikel zu einem höheren Preis würde ich allerdings nicht aufsummieren, sondern in zwei Datensätzen (Einmal Storno und einmal Neuverkauf) angeben. Das aufsummierte wird ein Steuerprüfer nicht verstehen.
So haben wir es gelesen und in Präsentationen gehört. Vor allem in Bezug auf Rabatte. Man kann ja leider nicht angeben um was es sich handelt. Sprich wenn ein Artikel vorher mit 10,00€ gebucht war und nun 10% Rabatt gegeben werden, dann kann man ja nur schicken einmal Artikelname zu -1,00€. Schön und sinnvoll finde ich das auch nicht...
Sebastian Jänicke
  Mit Zitat antworten Zitat
noisy_master

 
Delphi XE5 Professional
 
#15
  Alt 23. Jul 2020, 10:35
Ich muss erstmal ein GANZ GROßES Lob loswerden:
Ich finde es absolut super, dass du eine "freie" Implementierung eines so häufig diskutierten Themas zur Verfügung stellst.

Da ich auch sehr interessiert an dem Thema bin möchte ich auch gerne meine Mithilfe anbieten.(Wenn du etwas konkretes hast schreib mich doch einfach per PN an).

Aber: einen kleinen Kritikpunkt habe ich doch: Du hast die Implementierung auf aktuelle Delphi Versionen ausgelegt (TArray<x> := TArray<x> + [x], Base64encoding) und diese Teile "könnten" vielleicht noch für ältere Delphi Versionen angepasst werden...

Gruß
Dirk
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

 
Delphi 12 Athens
 
#16
  Alt 23. Jul 2020, 10:46
So haben wir es gelesen und in Präsentationen gehört. Vor allem in Bezug auf Rabatte. Man kann ja leider nicht angeben um was es sich handelt. Sprich wenn ein Artikel vorher mit 10,00€ gebucht war und nun 10% Rabatt gegeben werden, dann kann man ja nur schicken einmal Artikelname zu -1,00€. Schön und sinnvoll finde ich das auch nicht...
Leider lässt die Doku dazu viele Fragen offen.

Was ist z.B. wenn auf alle Artikel ein Rabatt von 10% gewährt wird. Da kann man doch nicht jeden einzelnen Artikel noch mal mit einem geringeren Preis auflisten. Ich würde dann den Artikel Rabatt verwenden (Menge 1, Bezeichnung Rabatt, Preis -3.20).

Klar ist auch nicht, ob bei den Zahlungsmitteln gegebenes Geld (100€) und Rückgeld (15€) getrennt als einzelne Position als Zahlungsmittel angegeben werden, oder ob diese als Summe (85€) in einer Position angegeben werden.
  Mit Zitat antworten Zitat
herbstrot

 
Delphi 10.4 Sydney
 
#17
  Alt 23. Jul 2020, 12:39
Moin,

"Bestellung-V1" wird aber Hauptsächlich in der Gastronomie angewendet. Nicht meine Branche....
Muss nicht zwingend nur Gastronomie sein. Wir nutzen z.B. die Möglichkeit einen Bon zu parken und bilden das über "Bestellung-V1" ab.

Im übrigen gut, dass es eine freie Implementierung gibt
Thoren
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#18
  Alt 23. Jul 2020, 13:49
Was ist z.B. wenn auf alle Artikel ein Rabatt von 10% gewährt wird. Da kann man doch nicht jeden einzelnen Artikel noch mal mit einem geringeren Preis auflisten. Ich würde dann den Artikel Rabatt verwenden (Menge 1, Bezeichnung Rabatt, Preis -3.20).
Ja, klar ist nur, dass es unklar ist. Wir machen den Rabatt tatsächlich auch einzeln, fassen aber pro Artikel zusammen. Die Stelle im Quelltext ist aber bewusst von der restlichen Logik getrennt um dies ggf. leicht anpassen zu können...

Klar ist auch nicht, ob bei den Zahlungsmitteln gegebenes Geld (100€) und Rückgeld (15€) getrennt als einzelne Position als Zahlungsmittel angegeben werden, oder ob diese als Summe (85€) in einer Position angegeben werden.
Hier soll ja nach Bar und Unbar unterschieden werden und so fassen wir es auch zusammen.

Aber: einen kleinen Kritikpunkt habe ich doch: Du hast die Implementierung auf aktuelle Delphi Versionen ausgelegt (TArray<x> := TArray<x> + [x], Base64encoding) und diese Teile "könnten" vielleicht noch für ältere Delphi Versionen angepasst werden...
Das Thema ist bei uns auch aufgetaucht, weil wir ältere Versionen noch auf XE6 pflegen. Leider hat die Unterstützung für XE6 den Quelltext signifikant aufgebläht... schön ist das nicht.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

 
Delphi 12 Athens
 
#19
  Alt 24. Jul 2020, 09:37
Aber: einen kleinen Kritikpunkt habe ich doch: Du hast die Implementierung auf aktuelle Delphi Versionen ausgelegt (TArray<x> := TArray<x> + [x], Base64encoding) und diese Teile "könnten" vielleicht noch für ältere Delphi Versionen angepasst werden...
Ich bin da mal ganz egoistisch. Ich stehe etwas unter Zeitdruck und da mache ich mir dann weniger Gedanken darüber, ob ältere Versionen mit dem Code nicht zurech kommen. Das betrifft ja auch nur ein paar Wenige Funktionen.

Aber die neuen Sprachelemente von Delphi habe ich schon sehr lieb gewonnen. Generics, Exit mit Parametern etc. Ich freue mich schon auf den Umstieg auf die neuste Delphiversion. Managed Records finde ich klasse. Will aber "wegen dem Zeitdruck" keine Experimente machen.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

 
Delphi 12 Athens
 
#20
  Alt 24. Jul 2020, 09:40
"Bestellung-V1" wird aber Hauptsächlich in der Gastronomie angewendet. Nicht meine Branche....
Muss nicht zwingend nur Gastronomie sein. Wir nutzen z.B. die Möglichkeit einen Bon zu parken und bilden das über "Bestellung-V1" ab.
Aha? So rein Interesse halber, in welcher Situation muss man denn einen Bon parken?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 14     12 3412     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 08:55 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