Drukarka fiskalna ewidencjuje sprzedaż nadając każdemu dokumentowi unikalny numer, zwiększając go o 1 po każdym wydruku. Czyli pierwszy paragon ma numer 1, kolejny numer 2 itd. Z racji że na drukarce możliwe jest drukowanie nie tylko paragonów, ale też wydruków niefiskalnych, faktur i raportów, drukarka globalnie ewidencjonuje niezależnie numery nagłówków jak i samego dokumentu. Dzięki temu zawsze można określić jaki wydruk nastąpił po którym, nawet jeśli data i czas na drukarce zostały zmienione. Przykładowo, na poniższym paragonie nagłówek ma numer 48, a sam paragon ma numer 5.

Po wydrukowaniu powyższego paragonu (w odpowiedzi na request /paragon), numer 48 (z nagłówka) zwracany jest w polu “hn“, a numer 5 (ze stopki, wydrukowany w formacie 00005) w polu “bn“.

Może się zdarzyć, że na skutek niepotrzebnego ponowienia requestu do PosnetServer (np w skutek niekontrolowanego odświeżenia strony WWW lub błędów sieci) wydrukowany zostanie kolejny paragon z takimi samymi danymi jak poprzedni, przez co do pamięci fiskalnej trafią duplikaty. Dlatego w wersji 4.3 wprowadzony został mechanizm tzw. “Optimistic locking” dla wydruku paragonów. Mechanizm działa w ten sposób że PosnetServer przed rozpoczęciem wydruku sprawdza poprzedni numer paragonu i jeśli jest on różny od oczekiwanego, zwrócony zostanie błąd.

PRZYKŁADOWE UŻYCIE

Aby wykorzystać tę funkcjonalność, należy w pierwszym kroku sprawdzić wartości totalizatorów i odczytać aktualny numer paragonu.

Przykładowa odpowiedź może wyglądać nastepujaco:

Wartości “hn” i “bn” określają odpowiednio ostatni numer nagłówka i ostatni numer paragonu. Teraz aby wydrukować paragon, wystarczy przekazać w request parametr “previousHn” lub “previousBn” (jeden z nich, w zależności od preferencji), w następujący sposób:

Po wydrukowaniu paragonu, numeracja dokumentów w drukarce fiskalnej zwiększy się o 1 i wartości te zostaną zwrócone w response:

Czyli ostatni nagłówek ma teraz numer 49 a ostatni paragon ma numer 6, stad ponowne wykonanie powyższego requestu zwróciło błąd do aplikacji. Aby teraz drukować kolejne paragony, nie ma konieczności ponownego wołania metody /counters, wystarczy że odczytamy wartość pola “hn” lub “bn” z response po wydruku paragonu, przechowamy w aplikacji i wykorzystamy do wydruku kolejnego paragonu:

Share This

What's your reaction?
0Smile0Lol0Wow0Love0Sad0Angry

Leave a comment