Nach den Änderungen zu 54- sind seit Juli dieses Jahres fast alle Handelsunternehmen verpflichtet, Online-Kassen zu nutzen, die Daten über das Internet an den Steuerdienst übermitteln. Um einen solchen Apparat zu erwerben, müssen Sie eine Kasse und eine Steuerbehörde kaufen, eine Vereinbarung unterzeichnen und die Dienste eines Steuerdatenbetreibers bezahlen, sich in zwei persönlichen Büros des Bundessteuerdienstes und des OFD registrieren, die Daten an die Kasse senden und einen Papierregistrierungsbericht erhalten. Nun, Sie benötigen auch eine elektronische digitale Signatur, andernfalls müssen Sie zum Bundessteuerdienst kommen und persönlich in der Schlange stehen.

Wir haben uns entschlossen, unsere Kunden vor all diesem Horror zu bewahren, indem wir einen Service entwickelt haben, der fast automatisch alles mit einem Klick registriert. Wir werden jetzt darüber sprechen.
Warum brauchen wir es?
Sie haben bereits erkannt, dass die Registrierung eines Ticketschalters eine mühsame mehrstufige Aufgabe ist, aber dies ist nicht das einzige Problem. In jeder Phase wartet der Zoo auf Schnittstellen, deren Formulare manuell mit Registrierungsdaten für jedes Ticketbüro ausgefüllt werden müssen, sowie auf einen vollständigen Satz relevanter Fehler (separate Begrüßung der Steueranforderungen für die Verwendung von IE-, Yandex.Browser- oder Sputnik-Browsern). Hunderte von Möglichkeiten, einen Fehler zu machen, das Verfahren zu ruinieren und von vorne zu beginnen. Und wenn Sie 5-10 Registrierkassen einstellen, steigt die Wahrscheinlichkeit eines Fehlers bei der Eingabe derselben Details mitunter. Ganz zu schweigen von der unproduktiven Zeitverschwendung und der Frage, warum das persönliche Finanzamt die Annahme des Tokens ablehnt, der erst gestern perfekt „verschluckt“ wurde.

Und als wir die Hauptlast der oben genannten Tragödie spürten, beschlossen wir, die Entwicklung aufzunehmen.
Registrierungsschritte
An der Registrierung einer Registrierkasse sind mehrere Parteien gleichzeitig beteiligt. Dies ist der Steuerdienst (FTS), OFD - der Betreiber von Steuerdaten, über die Registrierkassen mit der Steuerbehörde interagieren, ein Zertifizierungszentrum, das elektronische Signaturen ausstellt, und in der Regel ein wenig verwirrter Geschäftsmann, der sich in bürokratischen Umwälzungen verirrt hat. Wir wollten in ihre Beziehung eingreifen, um alle Schwierigkeiten auf uns zu nehmen.
Bedingt ist das Verfahren in zwei Phasen unterteilt:
Kassenregistrierung - Die Daten eines bestimmten Geräts werden an den Bundessteuerdienst gesendet, und die Registrierungsnummer wird beantwortet.
Fiskalisierung - Aktivierung des Kassierers unter Verwendung der vom Bundessteuerdienst vergebenen Fahrzeugregistrierungsnummer.
Zunächst gingen wir zu unseren Partnern, um mit ihnen die erste Phase zu erarbeiten.
API für den Federal Tax Service
Wir waren nicht die ersten, die über die Automatisierung der Registrierung nachdachten. Viele sagten, dass sie etwas in diesem Bereich tun, dass die Entwicklung im Gange ist, aber niemand hatte eine vorgefertigte externe Schnittstelle. Einer der Steuerdatenbetreiber wurde von der API bereitgestellt - fast bereit, mit der Steuer zu interagieren.
Zu diesem Zeitpunkt wurden nur etwa 80 Testanwendungen mit dem Protokoll gesendet. Wir glaubten, dass die Schnittstelle bald voll ausgelastet sein würde, und begannen mit der Implementierung und dem Testen der „Stubs“.
Als wir zum Produkt gingen, stellten wir fest, dass unsere Tests und die tatsächliche Anwendung unterschiedlich sind, wie Tag und Nacht. Die „Stubs“, die wir vom OFD erhalten haben, enthielten nur Erfolgsmock und reproduzierten ein erfolgreiches Skript. Tatsächlich war es nicht einfach, diesen „Erfolg“ zu erzielen.
Zu den Treffern gehörten: Anträge von Seiten von Partnern, die mehrere Tage lang nicht bearbeitet wurden, mangelndes Feedback von Federal Tax Service und OFD, Signaturfehler und unser bevorzugter „unbekannter Fehler“. Das FTS-Protokoll erwies sich als schlecht dokumentiert und reagierte häufig mit nicht spezifizierten Fehlern, für die nicht klar ist, was sie verursacht hat. Eine eindeutige Spezifikation existiert noch nicht. Als wir das Protokoll zum ersten Mal testeten, trafen wir zusammen mit dem OFD Entscheidungen darüber, wie auf bestimmte Antworten des Bundessteuerdienstes in bestimmten Fällen reagiert werden soll.
Kassierer-API
Während ein Teil des Teams das Verhalten der Bundessteuerdienstsysteme in der Praxis untersuchte, blieb die Arbeit nicht stehen. Parallel dazu haben wir Verhandlungen mit Registrierkassenherstellern geführt, sie aufgefordert, Daten von uns auf ihre Plattform, von Plattform zu Registrierkasse und in umgekehrter Reihenfolge für die Einrichtung der automatischen Fiskalisierung von Registrierkassen auszutauschen.
Wir haben ein Paar universeller einteiliger Lösungen ausgewählt. Kassen Evotor mit Touchscreen und DreamCas sind für Kunden gedacht, die an die guten alten Tasten gewöhnt sind und die zusätzliche Funktionalität für überflüssig halten. Die Modelle sind unterschiedlich: mit und ohne Scanner.
Wenn das OFD eine eigene API bereit hatte, musste diese für die Registrierkassen von Grund auf neu entwickelt werden. Andernfalls ist es unmöglich, alle Registrierungsdaten ohne manuelle Eingabe automatisch in die Registrierkasse zu bringen.
Kollegen konnten die Interaktion über ihre Plattform einrichten und waren bald bereit: eine API zum Eröffnen des persönlichen Kontos eines Kunden und ein proprietäres Protokoll zum Verwalten einer Registrierkasse.

Unsere Lieferanten haben als erste die automatische Übermittlung von Registrierungsinformationen an die Kasse eingerichtet. Und bald wird es die API genauso einfach machen, Registrierkassen abzumelden und neu zu registrieren.
Wenn wir jetzt mit anderen Geldanbietern verhandeln, wird genau die Unterstützung dieser Schnittstelle zu einer der wichtigsten Anforderungen.
Anatomie der automatischen Registrierung
Nachdem wir gelernt hatten, wie man mit dem Federal Tax Service zusammenarbeitet und APIs mit Anbietern für die Übertragung von Registrierungsdaten an die Kasse implementiert, war es an der Zeit, all dies in einem einzigen System zu verbinden und ein Registrierungsverfahren einzurichten.
Dies ist die Aufgabe der Auswahl der richtigen Architektur, die es uns ermöglichen würde, die asynchrone Registrierung von Registrierkassen im OFD sowohl beim Federal Tax Service als auch beim Verkäufer zu steuern. Da sie verzögert auf Anfragen reagieren, ist der Prozess zeitaufwändig und weist eine große Anzahl von Integrationen in externe Systeme auf. Aus diesem Grund mussten wir zwei Anwendungen in Java schreiben.
Der Jobdienst kommuniziert direkt mit CRF und Systemen von Registrierkassenherstellern. Zum Beispiel senden wir Kundendaten an das OFD und erwarten als Antwort eine Registrierungsnummer.
Der Jobdienst fragt den Jobstatus in bestimmten Intervallen ab. Er fragt erneut und fragt erneut, bis das Ergebnis zurückkommt. Die Registrierungsnummer wird gespeichert, Job überträgt die Bewerbung auf die nächste Stufe und die Fiskalisierung beginnt.
Wenn wir zunächst den Durchgang von Anwendungen sorgfältig überwacht und jeden vom System verursachten Fehler manuell untersucht haben, ist der Prozess jetzt automatisiert.
Wir ermitteln sofort die Fehlerursache. Und im Falle massiver Probleme wurden Überwachungssysteme eingerichtet, die Anomalien aufzeichnen, die auf schwerwiegende Fehler beim Federal Tax Service (OFD) hinweisen. Der Kunde erfährt jedoch im einzigen Fall von den Problemen: Wenn wir als Antwort auf eine Anfrage ein bestimmtes Redject erhalten, eine begründete Ablehnung der Registrierung.
Die zweite Anwendung, CashReg, ist ein Verarbeitungssystem, in dem ein Statusmodell verwaltet wird, das in einer relationalen Form dargestellt wird.
Es wurde basierend auf den von den Anbietern und dem CRF bereitgestellten APIs entwickelt und enthielt alle möglichen Übergänge für jede am Registrierungsprozess teilnehmende Klasse. Das Statusmodell vermeidet interne Fehler und eliminiert Abweichungen vom Standardalgorithmus für die Anwendungsverarbeitung.
Wenn sich die Anwendung beispielsweise zu lange im selben Status befindet, erhält sie mehrere Stunden lang keine Registrierungsnummer oder das CRF antwortet mit einer falschen Phase oder einem falschen Status der Anwendung. CashReg meldet einen Fehler.
Natürlich wurde ein Administrator benötigt, um das Verfahren zu verwalten. Eine Unterstützungsgruppe für Handelsentscheidungen arbeitet mit ihr zusammen und bedient und begleitet Registrierkassen bei der Registrierung. Jetzt sind nur noch zwei Mitarbeiter damit beschäftigt, aber ihre Arbeitsoberfläche ist nicht kompliziert, und der Vorbereitungsprozess für die Kasse ist dank der Ablehnung der manuellen Dateneingabe einfach. So können wir die Abteilung schnell und einfach skalieren.
Alle drei Komponenten des Registrierungssystems bedeuten keine hohen Lasten, da sie in virtuellen Umgebungen bereitgestellt werden.
Wie ist die Antragsbearbeitung
All dies war erforderlich, damit der Kunde einige Tage später, nachdem er eine Anfrage auf seinem persönlichen Konto hinterlassen hatte, die aktivierte Kasse für die Arbeit hinter der Theke bereitstellte.
Aus Sicht der Haushaltsküche wirkt die Magie der automatischen Registrierung etwas komplizierter. Wenn der Kunde den Antrag in Ihrem persönlichen Konto belässt, erteilt er uns die rechtliche Zustimmung, eine elektronische Signatur auszustellen und das gesamte Verfahren in seinem Namen durchzuführen.
Informationen über das Unternehmen, Registrierungsdaten für ein bestimmtes Geschäft und den Unterzeichner (z. B. an den Generaldirektor) werden aus Bankdatenbanken extrahiert. Sie werden in SPARK aktualisiert, durchlaufen die Wertung und betreten das Mastersystem an der Abendkasse.
Dann wird eine Anwendung in CASHREG gebildet. Es wird als neue Aufgabe im Admin-Bereich eines Mitarbeiters der Support-Gruppe für Handelslösungen angezeigt. Er sieht, welche Kasse und welchen Steuerantrieb der Kunde benötigt. Der Mitarbeiter findet das erforderliche Gerät im Lager, wählt das Steuerlaufwerk aus, codiert seine Seriennummern und bestätigt die Anwendung. Es sind also bestimmte Geräte angeschlossen, die an den Client geliefert werden. Zu diesem Zeitpunkt erhält der OFD eine Anfrage: "Bilden Sie einen Antrag auf Registrierung einer solchen und einer solchen Kasse für eine solche und eine solche Firma."
Die vom OFD als Antwort gesendete Datei wird durch elektronische Signatur authentifiziert und unter Verwendung der OFD-API an die Steuerbehörden gesendet. Dort wird der Kasse eine Registrierungsnummer zugewiesen.
Jetzt geht das vollständige Paket der Dokumente an der Kasse beim Hersteller der Registrierkasse ein (ja, sie sind auch hier beteiligt). Gleichzeitig wird im Admin-Bereich eine Aufgabe angezeigt, denselben Kassierer zu fiskalisieren. Dies bedeutet, dass der Mitarbeiter lediglich den Kassierer einbezieht. Das System des Anbieters „erkennt“, dass das Gerät in Kontakt ist, und lädt alle erforderlichen Registrierungsdaten automatisch in seinen Speicher. Fehler bei der manuellen Eingabe sind ausgeschlossen, die gleichen Angaben gehen an den Bundessteuerdienst und die Kasse.
Die Kassiererin druckt einen Registrierungsbericht - etwas, für das alles gestartet wurde. Steuerdaten aus dem Bericht: Druckdatum, Unterschrift, Steuerzeichen dienen als Bestätigung, dass die Kasse betriebsbereit ist. Diese Daten werden erneut an das OFD gesendet.
Unmittelbar nachdem das OFD einen Registrierungsbericht erstellt hat, unterschreiben wir ihn für den Kunden und die Abendkasse geht mit dem Kurier.

OFD hat noch keine Registrierungskarte vorbereitet, aber Sie können es kaum erwarten. Es wird in zwei bis drei Tagen in elektronischer Form auf dem persönlichen Konto des Kunden verfügbar sein.
Fazit
Um dieses Projekt umzusetzen, wurden etwa zwanzig Mitarbeiter aus der ganzen Bank und viele weitere Spezialisten unserer Partner, OFD und Geldverkäufer von ihren üblichen Aufgaben abgelenkt, aber ihre Bemühungen waren nicht umsonst.
Die durchschnittliche Zeit, um eine Registrierungsnummer zu erhalten, beträgt mit Ausnahme der negativsten Fälle drei Stunden. Im Allgemeinen dauert der gesamte Vorgang 5 bis 6 Stunden. 90% der Registrierungen sind erfolgreich. Derzeit wurden bereits rund 1000 Anträge bearbeitet.
Wie Sie verstehen, lieben wir in unserem Unternehmen im Allgemeinen solche Fälle, die das Leben einer großen Anzahl von Menschen erheblich vereinfachen können. Wenn Sie solche Probleme lösen, haben Sie das Gefühl, etwas wirklich Nützliches zu tun.
PS Wenn Sie interessiert sind, können Sie lesen, wie wir selbst
unseren Geldautomaten heruntergespült haben . Darüber hinaus zusammen mit Datenaustauschprotokollen.