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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
curl -XPOST 'http://localhost:3050/paragon?fulldebug=true&simulation=true' -H 'Content-type: application/json' -d ' { "lines" : [ { "na": "Towar 1", "il": 1.0, "vt": 0,"pr": 12356, "unit": "kg", "desc": "Dodatkowy opis"}, { "na": "Towar 2", "il": 1.0, "vt": 0,"pr": 34567} ], "summary" : { "to": 46923 }, "simulation" : { "parameters" : { "header" : { "company": "Moja Firma S.A.", "address": "02-280 Warszawa, ul.Długa 33" }, "footer" : { "cashier": "Jan Kowalski", "cashNumber": "12345678", "billNumber": 20, "uniqueNumber": "ZCJ2001027630" }, "tid" : "585-252-55-22", "number": 25, "fiscal": true }, "output" : { "filepath" : "/tmp/my_result.png" } } }' |
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.
- 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
- Jeśli używany Python jest w wersji >= 3.12, należy koniecznie doinstalować pakiet setuptools poleceniem “pip install setuptools“
- Na końcu należy zainstalować Microsoft Visual Studio, ale wystarczy wybrać jedynie pakiety do kompilacji C++ (MSVC i Windows SDK)