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 21. Jun 2024
Antwort Antwort
Seite 4 von 14   « Erste     234 56     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, 237x aufgerufen)
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de

Geändert von bernau (27. Jan 2021 um 23:15 Uhr)
 
michaelg
 
#31
  Alt 28. Jul 2020, 14:40
Ich bin auf der Seite von Gastro-MIS auf ein Fallbeispiel gestossen, welches mir nicht klar ist. Es geht dabei um eine Zahlung auf eine Kundenrechnung, d. h. der Kunde kommt in den Laden und begleicht seine Rechnung bar:

Zitat:
100€ Umsatz 19%, Kunde nimmt Rechnung mit, bzw. Abschluss auf Debitor...

Beleg^100.00_0.00_0.00_0.00_-100.00^


... Der Kunde kommt 2 Tage später wieder und bezahlt die mitgenommene Rechnung Bar.

Beleg^0.00_0.00_0.00_0.00_100.00^100.00:Bar
Ich verstehe dabei nicht, warum dort im Beleg 100 € auf den Regelsteuersatz gebucht werden und -100 € auf den Null-Steuersatz.


Die Zahlung mit 100.00 als Null-Prozent-Betrag und die 100.00 als Zahlung in Bar sind für mich dagegen einleuchtend.

Hat jemand eine Idee, warum das in dem Beispiel so ist? Wenn jemand eine Kundenrechnung mitnimmt, ist doch in der Kasse gar kein "bestandsändernder Vorfall" gelaufen. Wozu dann überhaupt der erste Beleg, der ja steuertechnisch sowieso Blödsinn wäre?
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

 
Delphi 12 Athens
 
#32
  Alt 28. Jul 2020, 18:24
Ich bin auf der Seite von Gastro-MIS auf ein Fallbeispiel gestossen, welches mir nicht klar ist.
Kannst du den Link hier posten?

Es geht dabei um eine Zahlung auf eine Kundenrechnung, d. h. der Kunde kommt in den Laden und begleicht seine Rechnung bar:
Genauer gesagt, der Kunde kommt in den Laden und nimmt seine Produkte und die Rechnung mit. Zwei Tage später (vieleicht im nächsten Monat) bezahlt er die Rechnung.

Das Ganze hat was mit der Wertstellung der Umsatzsteuer zu tun. Umsatzsteuer wird mit Aushändigung der Ware oder mit der Leistungserbringung fällig egal ob gezahlt wird oder nicht (Bei den meisten Unternehmen, aber nicht bei allen. Stichwort Sollbesteuerung und Istbesteuerung)

Das Beispiel interpretiere ich so: Wenn Ware abgeholt wird und kein (Bar-)Geld fließt, dann haben wir einen Brutto-Umsatz von 100€ und bei den Zahlungsmitteln haben wir 0€. Bruttoumsatz 100€ und Zahlungsmittel 0€ passt nicht zusammen.

Es gibt zwei Möglichkeiten Brutto-Umsatz und Zahlungsmittel auf einen Nenner zu bekommen.

1) Wie im Beispiel den Bruttoumsatz auf 0€ bringen. Dazu wird 100€ für die Ware mit Regelsteuersatz angegeben und ein Kredit von 100€ (angegeben mit -100€) mit 0% Steuersatz. Damit müssen 100€ versteuert werden. Wenn ein paar Tage tatsächlich das Geld fließt, dann gibt es einen neuen Bon mit Einzahlung von 100€ auf das Kreditkonto. Dazu gibt es dann einen Bruttoumsatz von 100€ zu 0% und einen Geldfluss von 100€ in Bar. Hier sind Bruttoumsatz und Zahlungsmittel wieder gleich, was wir ja wollen. In Summe heben sich die 0%-Umsätze auf. Wichtig ist, dass im dem ersten Kassiervorgang die MwSt ausgewiesen wird.

2) Das oben angegebene Szenario kommt bei meinen Kunden auch vor, ich habe es aber etwas anders (schon vor Jahren) gelößt. Es gibt bei mir das (Unbare) Zahlungsmittel Kredit. Wenn ein Kunde die Ware ohne Zahlung mitnimmt, dann wird mit dem Zahlungsmittel "Kredit" kassiert. Damit haben wir dann einen Bruttoumsatz von 100€ und verwendete Zahlungsmittel von 100€. Wenn der Kunde später wieder kommt um zu zahlen, dann gibt es eine Position "Einzahlung Kredit". Dazu wird das dann verwendete Zahlungsmittel angegeben. Somit sind Bruttoumsatz und Zahlungsmittel wieder gleich. In er Auswertung für das Finanzamt werden gegebene Kredite und eingezahlte Kredite separat aufgelistet. Hat bisher jedes Finanzamt bei einer Steuerprüfung das so akzeptiert.

Für die TSE verwende ich dann das Zahlungsmittel Kredit als Unbar.

Meine Einträge würden dann so aussehen:

Zahlung 1:Beleg^100.00_0.00_0.00_0.00_0.00^100.00:Unbar
Zahlung 2:Beleg^0.00_0.00_0.00_0.00_0.00^100.00:Bar_-100.00:Unbar

Diese Angabe klingt für mich etwas logischer, weil die Bruttoumsätze und die zu entrichtende Steuer zusammenpassen.

Ob ich nun die Version von Gastro-Mis oder meine Version für die TSE verwende, muss ich mir noch überlegen. Gut das du dieses Thema angesprochen hast

na ja... Mal sehen
  Mit Zitat antworten Zitat
michaelg
 
#33
  Alt 29. Jul 2020, 10:08
@Bernau: Es ist wohl genauso, wie Du es erklärt hast. Da die Leistung schon erbracht wurde, wird das so gemacht, denn die MwSt. ist dann fällig (auch wenn noch kein Geld geflossen ist.)

Hier ist der Link:
https://support.gastro-mis.de/suppor...sichert-werden

Ich hatte bei Gastro-MIS auch nachgefragt und habe schnell eine Antwort bekommen:

Zitat:
die Vermögenszusammensetzung ändert sich schon, die Leistung wurde ja erbracht (Ware an Kunden übergeben). Somit ist auch zu diesem Zeitpunkt die Umsatzsteuer fällig - und die 100€ auf 19% korrekt. Da aber keine Zahlung erfolgt, wird der Vorgang als Forderungsentstehung abgeschlossen, mit -100€ auf 0% Steuer. Anders wäre der Ausgleich Summe Steuercontainer = Summe Zahlungen auch gar nicht möglich.
  Mit Zitat antworten Zitat
u2020

 
Delphi 11 Alexandria
 
#34
  Alt 31. Jul 2020, 16:33
Hallo zusammen

ich bin neu in diesem Forum und auch neu in Delphi (habe erst Delphi Rio angefangen.

@Bernau: Vielen Dank für dein Testprogramm.

Für das korrekte erzeugen des QR-Codes musste ich in deinem Testprogramm ein paar Änderungen vornehmen:
Unit: cc.KassenSichV.DsFinVK.ProcessTypeData.types;
Code:
   Function TDsFinVKFormatProcs.ProcessDataBetragAsString(const aBetrag: Double): string;
  begin
      ...
   //  Result := FloatToStrF(aBetrag, ffGeneral, 15, 2, lFormatSettings);
       Result := FloatToStrF(aBetrag, ffFixed, 15, 2, lFormatSettings);  // Udo 31.07.2020  ffGeneral durch ffFixed ersetzt
  end;
                     

Function TDsFinVKFormatProcs.TransactionDateTimeAsString(const aDateTime: TDatetime): string;
begin
//Result := FormatDateTime('YYYY-MM-DDThh:mm:ss:fffZ', aDateTime);
  Result := FormatDateTime('yyyy-mm-dd"T"hh:nn:ss.zzz"Z"', aDateTime);      // udo 31.07.2020
end;

function TccDsFinVkTransactionData.QrCode: string;
begin
  Result :=
    'V0;' + // qr-code-version
    KassenSeriennummer + ';' +
    TccDsFinVkProcessTypeProc.EnumAsString(ProcessType) + ';' +
    ProcessData + ';' +
    IntToStr(TransaktionsNummer) + ';' +
    IntToStr(SignaturZaehler) + ';' +
    //IntToStr(TransaktionsNummer) + ';' +     // udo 31.07.2020               <---  diese Zeile muss raus
    TDsFinVKFormatProcs.TransactionDateTimeAsString(StartZeit) + ';' +
    TDsFinVKFormatProcs.TransactionDateTimeAsString(LogTime) + ';' +
    SigAlg + ';' +
    LogTimeFormat + ';' +
    Signatur + ';' +
    PublicKey;
end;
Nach diesen Änderungen war die Prüfung des QR-Code OK.

Gruß
Udo
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

 
Delphi 12 Athens
 
#35
  Alt 31. Jul 2020, 17:25
Für das korrekte erzeugen des QR-Codes musste ich in deinem Testprogramm ein paar Änderungen vornehmen:
Super Danke.

Ich werde es einarbeiten.
  Mit Zitat antworten Zitat
michaelg
 
#36
  Alt 4. Aug 2020, 12:16
Die WormAPI.DLL benutzt die VCRuntime140.dll, die Bestandteil des "Visual C++ Redistributable für Visual Studio 2015" ist.

95% unserer Anwender haben gar nicht das Kassenmodul. Es wäre blöd, wenn alle Anwender das nachinstallieren müssten, damit ihre Software weiter ordnungsgemäß startet.

Ich sehe bei der Art der DLL-Anbindung jedoch keine Chance, die DLL erst zu laden, wenn sie benötigt wird. Sehe ich das richtig oder gibt es einen Trick?
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

 
Delphi 12 Athens
 
#37
  Alt 4. Aug 2020, 12:41
Da mein Kassenprogramm ein eigenständiges Programm, abgetrennt von unserer anderen Software ist, habe ich die Implementation mit der statischen Bindung einfach gemacht. Das setzt natürlich das vorhanden sein der DLL voraus. Es gibt auch die Möglichkeit mit LoadLibrary die DLL Dynamisch zu laden, dann muss aber viel umgeschrieben werden. Dafür fehlt mir leider die Zeit. Wobei mir das Dynamische Laden auch lieber ist.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

 
Delphi 12 Athens
 
#38
  Alt 4. Aug 2020, 14:24
Das Ganze dynamisch einzubinden war doch nicht so zeitaufwändig, wie ich dachte.

Es gibt jetzt Sie Version 0.2
  Mit Zitat antworten Zitat
michaelg
 
#39
  Alt 4. Aug 2020, 15:36
Meio mio, bist Du schnell...ich hatte vorhin einen DLL-Konverter angefangen, der war auch schon fast fertig...egal, was solls, wenigstens mal wieder was dazugelernt über die Unterschiede der DLL-Deklarationen.

Vielen Dank für Deine Mühe!!!!
  Mit Zitat antworten Zitat
danielgrant007
 
#40
  Alt 5. Aug 2020, 11:07
yes
we are in a hurry as well.
Are you trying to add or include Bundesdruckerei TSE?
It'd be much helpful.

Geändert von danielgrant007 ( 5. Aug 2020 um 11:11 Uhr)
  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 +1. Es ist jetzt 21:42 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