Symulator Drukarki Fiskalnej Posnet

PosnetServer od wersji 5.0 został rozbudowany o symulator drukarki fiskalnej. Dzięki nowej funkcjonalności testowanie dowolnego oprogramowania z drukarką fiskalną nie wymaga posiadania drukarki fiskalnej. Dopiero po zakończeniu pisania kodu i przed gotowością wdrożenia, można wygodnie przejść z trybu symulacji do trybu pracy z fizycznym urządzeniem. Warto wspomnieć że nawet jeśli PosnetServer jest podłączony do drukarki, to w trybie symulacji urządzenie nie jest używane, co daje dodatkowe możliwości pisania oprogramowania lub budowanie testów integracyjnych.

Symulator a emulator

Na wstępnie warto wyjaśnić różnicę między symulatorem drukarki fiskalnej a emulatorem. Jedynym dostępnym emulatorem dostępnym na rynku jest POSEmu dostępny na stronie Posnet. PosnetServer natomiast symuluje wydruki na drukarce fiskalnej i może być swobodnie stosowany w nowych wdrożeniach, w których mamy wpływ na kod źródłowy. Nie da się go jednak użyć jako emulatora drukarki z oprogramowaniem które już jest przystosowane do bezpośredniej pracy z drukarką fiskalną, jak np. Subiekt GT.

Jak używać?

Requesty symulatora są praktycznie identyczne z typowymi wydrukami, jednak aby PosnetServer wiedział ze dany request jest tylko symulacją wydruku, należy dodatkowo przekazać obiekt “simulation” i flagę “simulation” w URL, w następujący sposób:

Obiekt “simulation” zawiera ustawienia drukarki, które typowo są zapisane w jej pamięci, informacje o kolejnych numerach generowanego wydruku, oraz ścieżce do pliku gdzie ma zostać zapisany wygenerowany wydruk. Dodatkowo można wymusić sytuacje awaryjne, jak brak papieru lub błąd komunikacji z urządzeniem.

Opis struktury “parameters”:

  • header – nazwa firmy na którą zarejestrowana jest drukarka fiskalna
  • footer – domyślne parametry stopki, typowo zapisane w pamięci drukarki fiskalnej. Jeśli request zawiera strukturę “footer” wraz z parametrem “cashier”, wówczas wartość ta będzie użyta zamiast “simulation.footer.cashier”
  • vatrates – informacje o stawkach VAT typowo zapisane w pamięci drukarki fiskalnej. Parametr jest opcjonalny, jeśli nie zostanie podany, wówczas zostaną użyte następujące stawki VAT A-23%, B-8%, C-5%, D-0%, G-zw.
  • tid – NIP firmy na którą zarejestrowana jest drukarka fiskalna
  • number – kolejny numer wydruku fiskalnego, widoczny w nagłówku wydruku fiskalnego
  • fiscal – flaga do testowania wydruków w trybie fiskalnym i niefiskalnym

Opis struktury “output”:

  • filepath – ścieżka do pliku gdzie zapisać wygenerowany wydruk w formacie PNG. Parametr jest opcjonalny, jeśli nie zostanie podany, wówczas plik PNG w jako base64 zostanie zwrócony w response.

Opis struktury “errors”:

  • type – typ błędu jaki ma wystąpić podczas symulacji wydruku, aktualne wspierane wartości to ‘paper_ended’, ‘paper_ending’, ‘communication_error’, ‘vat_error’.

Przełączenie na drukarkę fiskalną

Po przełączeniu parametru “simulation” w URL na “false“. Request zostanie wysłany do drukarki fiskalnej skonfigurowanej w pliku config.json. Domyślna wartość parametru “simulation” to “false“.

Pobierz wersję 5.x

Przejdź do artykułu: “Instalacja PosnetServer“.

JEŚLI NIE DZIAŁA SYMULATOR DRUKARKI FISKALNEJ

Zazwyczaj problemy z używaniem symulatora drukarki fiskalnej pojawiają się dla wdrożeń pod Windows, gdyż Windows domyślnie nie posiada kompilatora i bibliotek niezbędnych dla polecenia “npm install”. Należy pamiętać, że symulator jest komponentem opcjonalnym i błędy podczas uruchomiania informujące że symulator nie może zostać załadowany nie wpływają na stabilność PosnetServera, jedynie funkcje symulacji nie będą dostępne.

  1. Na początku należy zainstalować Pythona w wersji 3, szczegóły tego procesu można znaleźć tutaj: https://github.com/nodejs/node-gyp#on-windows
  2. Jeśli używany Python jest w wersji >= 3.12, należy koniecznie doinstalować pakiet setuptools poleceniem “pip install setuptools
  3. Na końcu należy zainstalować Microsoft Visual Studio, ale wystarczy wybrać jedynie pakiety do kompilacji C++ (MSVC i Windows SDK)

Share This

What's your reaction?
0Smile0Lol0Wow0Love0Sad0Angry