Do serwisu można wysyłać dowolne polecenia sterujące, jednak dla wygody użytkowania najczęściej używane funkcje (jak np. wydruk paragonów) mają dedykowane restpointy.

Pojedynczy Paragon

Aby wydrukować paragon, wystarczy wysłać poniższy request z konsoli (lub z dowolnego programu do wysyłania requestów HTTP, np Fiddler lub Postman).

Polecenie wydrukuje poniższy paragon na drukarce:

A w odpowiedzi zwróci przykładowy response:

Opis poszczególnych pól znajduje się w sekcji “STATUS WYDRUKU PARAGONU” poniżej, a poniżej krótki materiał prezentujący jak wysłać request za pomocą panelu swagger:

Paczka dystrybucyjna zawiera katalog docs/ a w nim pliki HTML z przykładowymi requestami do serwisu.

W poprzednim przykładzie fiskalizacja nastąpiła z użyciem stawki 23%, czyli zazwyczaj stawki oznaczonej literą “A“, będącej pierwszą stawką zdefiniowaną w drukarce (parametr “vt” ma wartość 0). W praktyce nie zawsze wiadomo który indeks stawki odpowiada jakiej stawce VAT. Aby nie odpytywać za każdym razem drukarki o stawki VAT lub tym bardziej nie trzymać listy stawek w kodzie tworzonej przez nas aplikacji, PosnetServer pozwala wygodnie przekazać stawkę VAT w formacie “23,00”, “8,00” lub “A”, “B” itd. W strukturze “lines” możemy używać jednego z trzech parametrów: “vt“, “vtp” lub “vtn” do określenia stawki VAT, w zależności od naszej wygody. Należy bezwzględnie unikać przekazywania wszystkich trzech parametrów lub dwóch z nich, gdyż w przyszłości (w nowych wersjach PosnetServer) może to spowodować, że towary będą fiskalizowane pod inną stawką VAT niż oczekiwana.

Alternatywne requesty, które spowodują dokładnie taki sam wydruk jak w poprzednim przykładzie:

STATUS WYDRUKU PARAGONU

O sukcesie wydruku paragonu mówi nam pole “ok” w response, ale w odpowiedzi z serwisu znajduje się więcej pól: To jest standardowa odpowiedź serwisu., Wszystkie Pola poza “ok” są opcjonalne.

  • ok – Pole informujące o sukcesie lub błędzie wydruku. Jeśli ok=true , to proces fiskalizacji przebiegł pomyślnie, paragon się wydrukował i jego numer można odczytać z pola “hn“. Jeśli ok=”false” to pola “code” i “message” informują o tym co poszło nie tak.
  • bn – numer porządkowy wydruku
  • eparagon – identyfikator eParagonu, jeśli fiskalizujemy paragon jako eParagon,
  • took – czas fiskalizacji w ms
  • ts – znacznik czasu rozpoczęcia fiskalizacji
  • tsend – znacznik czasu zakończenia fiskalizacji. Pole “took” to różnica pomiędzy tsend i ts,
  • transaction – identyfikator requestu. Uzupełniany jedynie w przypadku wydruku asynchronicznego (flaga async=true w request, domyślnie async=false)
  • userdata – dowolne dane użytkownika. Jest to wykorzystywane w przypadku requestów asynchronicznych lub requestów z callbackiem 

Wiele paragonów

Często chcemy wydrukować wiele paragonów na raz. W takiej sytuacji możemy skorzystać z requestu /paragony.

Powyższy request wydrukuje 2 paragony na drukarce.

Drukowanie asynchroniczne (opcja 1)

Drukarki fiskalne nie należą do najszybszych, stąd pojedynczy request do serwisu może trwać od kilku do nawet kilkunastu sekund, blokując tym samym proces requestujący. Aby otrzymać szybko zwrot i nie czekać na zakończenie drukowania, należy dodać w URL “?async=true“. Dzięki temu PostnetServer przyjmie request i doda go do kolejki, zwracając niezwłocznie 200OK do procesu requetsującego. Drukowanie paragonu rozpocznie się jak tylko drukarka będzie gotowa. Status requestu asynchronicznego można sprawdzić odpytując restpoint /paragon podając identyfikator transakcji asynchronicznej.

Sprawdzenie statusu (gdzie 5f1c29d0-3284-4bb7-878c-4cf6f992591b to identyfikator transakcji asynchronicznej zwrócony w odpowiedzi na poprzedni request):

W przypadku wydruku asynchronicznego możliwe jest przekazanie URL jaki ma zostać wykonany po zakończeniu wydruku, dzięki czemu nie musimy sprawdzać co pewien czas czy nasz paragon już się wydrukował

DRUKOWANIE ASYNCHRONICZNE (OPCJA 2)

Node.js działa w jednym wątku, co oznacza że kolejne wołanie asynchroniczne (z parametrem ?async=true) będzie i tak oczekiwało na zakończenie aktualnego wydruku. Najlepszym rozwiązaniem aby zapewnić pełną asynchroniczność jest użycie kolejki requestów w formie “proxy” przed PostnetServer’em. Jest wiele sposobów na stworzenie takiej architektury, niemniej jednak w naszym publicznym repozytorium github, zamieszczamy kod przykładowego rozwiązania

https://github.com/bigdotsoftware/posnetserver-async-proxy

dodatkowe linie

Aby wstawić dodatkowe linie pod paragonem, wyślij następujący request:

Gdzie ID linii może być jedną z poniższych wartości:

IDOpisTyp
0Nr transakcjialfanumeryczny
1Punktyalfanumeryczny
2Suma punktówalfanumeryczny
3Nr rejestracyjnyalfanumeryczny
4Nazwiskoalfanumeryczny
5Kartaalfanumeryczny
6Numer kartyalfanumeryczny
7Ważna doalfanumeryczny
8Kasjeralfanumeryczny
9Nazw. kasjeraalfanumeryczny
10Zaliczkaalfanumeryczny
11Walutaalfanumeryczny
12Przelicznikalfanumeryczny
13Nr zamówieniaalfanumeryczny
14Nr Pracownikaalfanumeryczny
15Nazw. Pracownikaalfanumeryczny
16Konto przed tr.alfanumeryczny
17Przyznanoalfanumeryczny
18Wykorzystanoalfanumeryczny
19Konto po trans.alfanumeryczny
20Klienta stałyalfanumeryczny
21Voucheralfanumeryczny
22Wartość Voucheralfanumeryczny
23Zapłata Voucheralfanumeryczny
24napis predefiniowanybez parametru
25linia bez słowa kluczowego (15 spacji)alfanumeryczny
26Ilość sprzedanych towarówalfanumeryczny
27Numer pracownikaalfanumeryczny
28Numer klientaalfanumeryczny
29Udzielono łącznie rabatówalfanumeryczny
30Numeralfanumeryczny
31Kodalfanumeryczny
32Nazwaalfanumeryczny
33Opisalfanumeryczny
34Liczbaalfanumeryczny
35Klientalfanumeryczny
36Kwotaalfanumeryczny
37Promocjaalfanumeryczny
38Infoalfanumeryczny
39Do fakturyalfanumeryczny
40Ad.alfanumeryczny
41napis predefiniowany z uwzględnieniem znaków formatującychbez parametru
42napis predefiniowany z małą czcionkąalfanumeryczny

Share This

What's your reaction?
0Smile0Lol0Wow0Love0Sad0Angry

Leave a comment