You are on page 1of 135

POSNET

SYSTEMY KAS FISKALNYCH


02-281 Warszawa, ul. Municypalna 33

Tel.: (0-22) 868-68-88 w. 201..204 (Dział handlowy)


Tel.: (0-22) 868-68-88 w. 251..253 (Serwis)
Fax.: (0-22) 868-68-89

http://www.posnet.com.pl/serwis.htm
email: serwis@posnet.com.pl

DRUKARKI FISKALNE
POSNET THERMAL i POSNET 3001

INSTRUKCJA SERWISOWA

Nieustanny rozwój naszych produktów stwarza czasem konieczność


wprowadzenia zmian nie uwzględnionych w tym dokumencie.

Maj 1999
ver. 39.6
Drukarka Fiskalna POSNET Thermal i 3001

SPIS TREŚCI :
1. WSTĘP.......................................................................................................................................................................5

2. DRUKARKI FISKALNE - PODSTAWOWE INFORMACJE SERWISOWE..................................................6


ZAŁOŻENIA OGÓLNE.........................................................................................................................................................6
OPIS KONSTRUKCJI DRUKAREK...........................................................................................................................................7
Mechanizm drukujący.............................................................................................................................................8
Sterownik mechanizmu drukującego. ....................................................................................................................8
Główny procesor drukarki. ..................................................................................................................................9
Zegar czasu rzeczywistego. ..................................................................................................................................12
Wyświetlacze. .......................................................................................................................................................12
Pamięć fiskalna. ..................................................................................................................................................13
Zasilacze. .............................................................................................................................................................14
Klawiatury drukarek.............................................................................................................................................15
3. PLOMBOWANIE DRUKARKI FISKALNEJ.....................................................................................................17
PLOMBY PRODUCENTA...................................................................................................................................................17
PLOMBY SERWISOWE ..............................................................................................................................................17
4. FISKALIZACJA DRUKARKI..............................................................................................................................18

5. UREGULOWANIA PRAWNE DOTYCZĄCE KAS REJESTRUJĄCYCH.....................................................20

6. PROGRAMOWANIE DRUKARKI......................................................................................................................22
SYNTAKTYKA ROZKAZÓW. ..............................................................................................................................................22
OBSŁUGA SYTUACJI BŁĘDNYCH. ......................................................................................................................................23
USTAWIANIE ZEGARA......................................................................................................................................................24
TRANSAKCJA.................................................................................................................................................................26
TRYBY PRACY DRUKARKI................................................................................................................................................30
7. WYKAZ KOMUNIKATÓW WYŚWIETLANYCH NA WYŚWIETLACZU LCD DRUKARKI.................31
BŁĘDY FATALNE (POWODUJĄ KONIECZNOŚĆ WYŁĄCZENIA URZĄDZENIA)..................................................................................31
KOMUNIKATY BŁĘDÓW MECHANIZMU DRUKUJĄCEGO............................................................................................................32
OSTRZEŻENIA. ..............................................................................................................................................................33
KOMUNIKATY ZWIĄZANE Z SEKWENCJAMI STERUJĄCYMI......................................................................................................36
KOMUNIKATY ZWIĄZANE Z DRUKOWANIEM RAPORTÓW..........................................................................................................37
INNE KOMUNIKATY ........................................................................................................................................................40
8. FORMATY MOŻLIWYCH WYDRUKÓW REALIZOWANYCH PRZEZ DRUKARKĘ............................42
DOKUMENTY FISKALNE...................................................................................................................................................42
Paragon fiskalny standard....................................................................................................................................42
Paragon fiskalny z formami płatności..................................................................................................................46
Raport fiskalny dobowy........................................................................................................................................47
Raport fiskalny okresowy pełny............................................................................................................................49
DOKUMENTY NIEFISKALNE...............................................................................................................................................53
Raport okresowy drukowany jako podsumowanie...............................................................................................53
Raport bazy danych..............................................................................................................................................54
Raport kasy / zmiany.............................................................................................................................................56
Wpłata do kasy. ....................................................................................................................................................57
Wypłata z kasy.......................................................................................................................................................57
Stan kasy...............................................................................................................................................................57
Raport zmiany stawek PTU..................................................................................................................................58
Raport zerowania RAM........................................................................................................................................59
Wydruk kontrolny nagłówka.................................................................................................................................59
Zwrot towaru........................................................................................................................................................60
Wydruk raportu kasy / zmiany uwzględniającego formy płatności......................................................................60
Format wydruku pokwitowania sprzedaży...........................................................................................................61
Format wydruku transakcji uznania.....................................................................................................................62

Str. 2
Drukarka Fiskalna POSNET Thermal i 3001
Logowanie kasjera................................................................................................................................................63
Wylogowanie kasjera............................................................................................................................................63
Dokument "zwrot kaucji"......................................................................................................................................63
9. OPERACJE RACHUNKOWE WYKONYWANE PRZEZ DRUKARKĘ. .....................................................64
WSTĘP.........................................................................................................................................................................64
OBLICZENIA REALIZOWANE W TRAKCIE TRANSAKCJI.............................................................................................................64
OBLICZENIA REALIZOWANE W TRAKCIE DRUKOWANIA RAPORTU DOBOWEGO..............................................................................68
OBLICZENIA REALIZOWANE W TRAKCIE DRUKOWANIA RAPORTU OKRESOWEGO...........................................................................69
10. ZESTAW ROZKAZÓW DRUKAREK...............................................................................................................71
OGÓLNE ZASADY SYNTAKTYKI KOMEND.............................................................................................................................71
PROGRAMOWANIE PARAMETRÓW / STEROWANIE UKŁADEM ELEKTRONICZNYM...........................................................................73
[LBSETCK]: Ustawienie zegara. ........................................................................................................................73
[LBDSP]: Sterowanie wyświetlaczem / szufladą................................................................................................74
[LBSETPTU] : Zmiana stawek PTU...................................................................................................................74
[LBSETHDR] : Programowanie nagłówka / fiskalizacja....................................................................................75
[LBSNDMD] : Wyłączenie/ włączenie komunikatu głosowego...........................................................................76
[LBFEED] : Wysuw papieru................................................................................................................................76
[LBSERM]: Obsługa błędów................................................................................................................................76
TRANSAKCJA.................................................................................................................................................................77
[LBTRSHDR]: Początek transakcji (wejście w tryb transakcji)..........................................................................77
[LBTRSLN] : Linia paragonu. ............................................................................................................................78
[LBDSPDEP]: Kaucja pobrana..........................................................................................................................79
[LBTREXIT] : Anulowanie transakcji. ...............................................................................................................79
[LBTREXIT] : Standardowe zatwierdzenie transakcji. ......................................................................................80
[LBTRXEND] : Zatwierdzenie transakcji z formami płatności............................................................................81
[LBCSHREP1]: Rozkaz raportu kasy / zmiany uwzględniającego formy płatności............................................82
[LBTRSCARD] : Pokwitowanie sprzedaży..........................................................................................................83
[LBSTOCARD]: Transakcja uznania (zwrot towaru).........................................................................................84
DRUKOWANIE RAPORTÓW / KONTROLA BAZY DANYCH..........................................................................................................85
[LBINCCSH] : Wpłata do kasy............................................................................................................................85
[LBDECCSH]: Wypłata z kasy. ...........................................................................................................................86
[LBCSHSTS]: Stan kasy.......................................................................................................................................86
[LBCSHREP] : Raport kasy / zmiany..................................................................................................................86
[LBLOGIN] : Logowanie kasjera........................................................................................................................87
[LBLOGOUT]: Wylogowanie kasjera..................................................................................................................87
[LBOPAK] : Zwrot kaucji.....................................................................................................................................87
[LBSTOCSH] : Zwrot towaru...............................................................................................................................88
[LBFSKREP] : Drukowanie raportu okresowego...............................................................................................88
[LBDAYREP]: Drukowanie raportu dobowego...................................................................................................88
[LBDBREP]: Kontrola bazy danych. ..................................................................................................................89
ODCZYT STATUSU...........................................................................................................................................................89
[LBSENDCK]: Odeślij czas RTC.........................................................................................................................89
[LBFSTRQ]: Odeślij informacje kasowe.............................................................................................................90
[LBERNRQ] : Żądanie wysłania kodu błędu ostatniego rozkazu.......................................................................90
[LBIDRQ] : Sekwencja odsyłająca typ i wersje oprogramowania......................................................................91
11. OPIS SEKWENCJI DRUKARKI POSNET THERMAL-A (APTECZNA)...................................................92
NOWY FORMAT PARAGONU FISKALNEGO.............................................................................................................................92
MODYFIKACJE SEKWENCJI STERUJĄCYCH ZWIĄZANE Z DODATKOWYM FORMATEM PARAGONU FISKALNEGO.....................................94
[LBTRSORG] : Nagłówek „paragonu aptecznego”............................................................................................94
[LBTRSART]: Linia paragonu. ...........................................................................................................................95
[LBTREXIT]: Akceptacja/ anulowanie paragonu...............................................................................................96
FORMATY DODATKOWYCH (APTECZNYCH) WYDRUKÓW NIEFISKALNYCH...................................................................................97
Wycena leku - format wydruku.............................................................................................................................97
Raport kasowy. ....................................................................................................................................................99
Zamówienie na lek recepturowy.........................................................................................................................100
Związek między wydrukami niefiskalnymi wycen leków a wydrukiem paragonu fiskalnego.............................102
SEKWENCJE STERUJĄCE DLA UZYSKANIA DODATKOWYCH APTECZNYCH WYDRUKÓW NIEFISKALNYCH...........................................103

Str. 3
Drukarka Fiskalna POSNET Thermal i 3001
[LBRPDTA]: Wycena leku..................................................................................................................................103
[LBCLRDTA] : Kasowania zapamiętanych danych o wycenie leku („stornowanie wyceny”).........................105
[LBCLRALL] : Kasowanie całej zapamiętanej listy wycen leków.....................................................................105
[LBAPTREP] : Raport kasowy w formacie dla aptek........................................................................................105
[LBRPORD] : Zamówienie na lek recepturowy.................................................................................................106
[LBPRNTXT]: Opisu działania leku..................................................................................................................107
[LBCLRTXT] : Kasowanie opisu działania leku z tablicy wycen......................................................................108
[LBPRNDIR] : Sekwencja związana z obsługą dodatkowego portu szeregowego............................................108
12. OPIS INTERFEJSÓW DRUKAREK FISKALNYCH THERMAL I 3001..................................................109
UWAGI OGÓLNE...........................................................................................................................................................109
OPIS INTERFEJSU SZEREGOWEGO.....................................................................................................................................109
OKABLOWANIE. SYGNAŁY INTERFEJSU.............................................................................................................................109
Standardowe kable sygnałowe drukarek............................................................................................................110
WYMAGANIA PROGRAMOWE..........................................................................................................................................111
DODATKOWE ZŁĄCZE RS232C.....................................................................................................................................112
W wersji aptecznej drukarki................................................................................................................................112
Do podłączenia dodatkowego wyświetlacza VFD (Thermal, 3001 i Beetle 20).................................................112
SYGNALIZACJA STANÓW DRUKARKI NA INTERFEJSIE SZEREGOWYM........................................................................................112
Błędy drukarki ....................................................................................................................................................112
Błędy "programowe"...........................................................................................................................................113
13. OPIS ZŁĄCZ DRUKARKI POSNET THERMAL I POSNET 3001.............................................................114

14. KODY SEKWENCJI..........................................................................................................................................115

15. KODY BŁĘDÓW DRUKAREK........................................................................................................................116


DRUKARKI STANDARDOWE.............................................................................................................................................116
DRUKARKI APTECZNE....................................................................................................................................................117
16. POSNET THERMAL (FUNKCJE SERWISOWE).......................................................................................120
ELEMENTY DOSTĘPNE PO ZDJĘCIU OSŁONKI WEWNĄTRZ DRUKATKI ...............................................121
17. POSNET 3001 (FUNKCJE SERWISOWE)....................................................................................................122
ELEMENTY DOSTĘPNE PO ZDJĘCIU OSŁONKI WEWNĄTRZ DRUKARKI...............................................123
18. ZMIANY W DRUKARKACH POSNET THERMAL....................................................................................124
WYMIANA BATERII.......................................................................................................................................................124
WYMIANA MECHANIZMU DRUKUJĄCEGO ORYGINAŁU..........................................................................................................125
WYMIANA MECHANIZMU DRUKUJĄCEGO KOPII..................................................................................................................125
WYMIANA KLAWIATURY................................................................................................................................................126
19. ROK 2000 W DRUKARKACH FISKALNYCH POSNET............................................................................127

20. NOWE KONSTRUKCJE DRUKAREK..........................................................................................................128


DRUKARKA POSNET 3001 W OBUDOWIE PLASTIKOWEJ..................................................................................................128
DRUKARKA POSNET THERMAL W TECHNOLOGII SMD.................................................................................................129
21. WYKAZ PODZESPOŁÓW DRUKARKI FISKALNEJ POSNET THERMAL..........................................130

22. WYKAZ PODZESPOŁÓW DRUKARKI FISKALNEJ POSNET 3001......................................................131


POSNET THERMAL...................................................................................................................................................132
POSNET 3001........................................................................................................................................................133
POSNET THERMAL-A...............................................................................................................................................134

Str. 4
Drukarka Fiskalna POSNET Thermal i 3001

1. Wstęp
Niniejsza instrukcja serwisowa napisana została pod kątem drukarek POSNET Thermal i POSNET 3001.
Zawiera wszystkie niezbędne informacje potrzebne do serwisowania drukarek.
Od momentu powstania pierwszej drukarki fiskalnej (DF-300) zaszło wiele zmian w konstrukcji drukarek oraz
pojawiły się dodatkowe komendy których nie ‘znały’ drukarki DF-300. Dokładny opis sekwencji znaleźć można w
rozdziale 10 niniejszej instrukcji (na stronie 71); opis ten uwzględnia numeracje wersji oprogramowania (firmware)
wewnętrznego drukarki od którego obowiązuje dana sekwencja.
Drukarka POSNET 3001 to odpowiednik starszej wersji drukarki DF-301 z mechanizmem drukującym firmy STAR
(igłowa). Występuje w wersjach: 28.3, 29.3, 31.3, 39.3 i 39.6 (wersja drukarki w obudowie plastikowej).
Drukarka POSNET Thermal to wersja drukarki z mechanizmem drukującym termicznym. Występuje w wersjach:
28.1-3, 29.1, 31.1, 39.1.
‘Apteczna’ wersja drukarki to POSNET Thermal-A. Występuje w wersjach: 28.5A, 28.6A, 29.7A i 31.9A. Opis
sekwencji dla tej drukarki umieszczono w rozdziale 11.
Każda z produkowanych drukarek fiskalnych POSNET posiada wewnętrzny program tzw. firmware który posiada
specyficzny numer. Numer ten określa zakres sekwencji (komend) które obsługuje dany model drukarki (patrz
dokładny opis sekwencji zawarty w rozdziale 10)
W drukarkach POSNET Thermal i POSNET 3001 można zdefiniować 6 stawek PTU (A ... F), czyli drukarki mogą
pracować w systemach z maksimum 7 stawkami PTU (6 definiowanych plus stawka zwolniona ‘Z’).

Fiskalizację drukarek dokonuje się zapisując do pamięci fiskalnej tylko NIP; pozostałą część nagłówka (Nazwę
firmy i adres siedziby firmy) zapisuje się do pamięci RAM (podtrzymywanej baterią) co umożliwia w przyszłości
ich ew. korektę bez potrzeby wymiany modułu fiskalnego. Fiskalizacji dokonuje tylko i wyłącznie przeszkolony w
firmie POSNET serwis. Programistom nie wolno jest umieszczać sekwencji do fiskalizacji drukarki w swoich
aplikacjach!

W firmie POSNET produkowany jest także terminal UNIX-owy o nazwie POSNET 2000, który zawiera drukarkę
fiskalną będącą odpowiednikiem drukarki DF-301 (wcześniejszy model drukarki). Praktycznie z punktu widzenia
programisty jest to odpowiednik drukarki POSNET 3001. Zawarty w rozdziale 10 opis sekwencji dotyczy także
zawartej w kasie POSNET 2000 drukarki.
Przy współpracy z firmą Siemens powstała kasa fiskalna POSNET Beetle 20 będąca połączeniem w jednej
obudowie drukarki fiskalnej POSNET Thermal i opartej na architekturze komputera klasy PC kasy Beetle, a także
drukarka fiskalna POSNET SIEMENS-77 umożliwiająca dodatkowo wydruk dokumentu.
Umieszczona w kasie POSNET Beetle 20 drukarka (moduł drukarki) posiada numer firmware 28.1B, 32.1B lub
39.1B. Wersja najnowsza (39.1B) może współpracować ze specjalnym zewnętrznym wyświetlaczem
alfanumerycznym VFD podłączanym do dodatkowego wyjścia w module drukarki typu RS232C. Ten sam
wyświetlacz może współpracować także z drukarkami POSNET Thermal (od wersji 39.1) i POSNET 3001 (od
wersji 39.3).
Bliższe informacje dotyczące w/w. urządzeń firmy POSNET dostępne są na stronie WWW firmy pod adresem:
www.posnet.com.pl

Str. 5
Drukarka Fiskalna POSNET Thermal i 3001

2. Drukarki fiskalne - podstawowe informacje serwisowe

Założenia ogólne

Drukarka fiskalna jest przeznaczona w pierwszym rzędzie do fiskalizacji istniejących systemów


komputerowych. Jest adresowana przede wszystkim do użytkowników, którzy posiadają komputer klasy PC oraz
wykorzystują w swoim sklepie (hurtowni) oprogramowanie realizujące sprzedaż. Urządzenie jest tak pomyślane, że
jego podłączenie do istniejącego systemu sprzedaży (bądź finansowo - księgowego) jest proste, zarówno pod
względem sprzętowym, jak i programowym. Równocześnie, urządzenie zapewnia fiskalność całego systemu -
NIEZALEŻNIE OD WŁAŚCIWOŚCI pozostałych urządzeń i oprogramowania wykorzystywanego na użytym
komputerze. Wynika to z następujących faktów:
1). Drukarka posiada wszystkie elementy sprzętowe niezbędne dla fiskalności systemu (stanowiące
niepodzielną całość zawartą w jednej obudowie) tj.
• drukarkę paragonów z możliwością drukowania oryginału oraz kopii,
• pamięć fiskalną dla rejestracji obrotu,
• dwa wyświetlacze: dla klienta (LED) i dla obsługi (LCD),
• zegar czasu rzeczywistego (RTC,ang. Real Time Clock).
2). Oprogramowanie drukarki zapewnia wszystkie wymagane funkcje niezbędne w kasie fiskalnej,
a w szczególności:
• zapewnia poprawną rejestrację transakcji sprzedaży: drukowanie paragonu fiskalnego oraz
elektroniczna rejestracja obrotu są operacjami NIEPODZIELNYMI,
• samodzielnie formatuje paragon fiskalny oraz nalicza podatek VAT na podstawie danych o
transakcji przesłanych z systemu,
• dokonuje kontroli formalnej i obliczeniowej danych transakcji przesyłanych z systemu
wykrywając szereg sytuacji błędnych, w szczególności realizuje algorytm badania poprawności
przywiązania kodu stawki PTU do nazwy towaru,
• realizuje drukowanie raportu dobowego i okresowego.

Drukarka jest wyposażona w interfejs szeregowy (RS-232C napięciowy). Podłączenie urządzenia do


programu aplikacyjnego może być rozwiązane w różny sposób, zależnie od stopnia inwencji programisty i różnych
warunków wymaganych przez aplikacje. W najprostszych sytuacjach (niewielka sprzedaż, brak niezależnej
komputerowej ewidencji sprzedaży i towarów) wystarczy tylko transmisja danych z komputera do drukarki.

Komunikacja z urządzeniem jest komunikacją znakową (tzn. dane przesyłane do drukarki stanowią zawsze
ciąg znaków ASCII, co dotyczy też danych liczbowych !), przy czym drukarka realizuje pewien zestaw rozkazów /
sekwencji sterujących (posiada własny język programowania). Jest to najistotniejsza cecha urządzenia. Mówiąc
obrazowo: jeżeli wyślemy do zwykłej (niefiskalnej) drukarki kod litery "A" to zwykle zostanie on wydrukowany. W
przypadku drukarek fiskalnych kod ten (jeżeli nie stanowi istotnego elementu sekwencji sterującej) zostanie
zignorowany. W tym sensie nazwa "drukarka fiskalna" może być nieco myląca (należałoby raczej używać nazwy np.
"rejestrator transakcyjny"). Nie ma zatem dowolności danych przesyłanych do drukarki, muszą one spełniać
formalne (syntaktyczne) reguły jej języka programowania. Nie można też uzyskać dowolnych formatów wydruku.
Zestaw możliwych do uzyskania rodzajów wydruku jest ściśle określony przez oprogramowanie drukarki i obejmuje
wydruki fiskalne:
• paragon fiskalny,
• raport dobowy,
• raport okresowy,
oraz kilka dokumentów niefiskalnych o ściśle określonych formatach wynikających z przeznaczenia.

Język programowania drukarki obejmuje kilkanaście sekwencji sterujących dających możliwość


implementacji różnorodnych algorytmów komunikacji z urządzeniem. Do zrealizowania najprostszej sprzedaży
wystarczy wykorzystać podzbiór złożony z zaledwie sześciu (!) sekwencji sterujących:
• nastawianie / korekta zegara czasu rzeczywistego (sekwencja LBSETCK),
• sekwencje powodujące realizację transakcji (LBTRSHDR, LBTRSLN, LBDSPDEP,
LBTREXIT i LBTRXEND).
Tak prostą aplikację może praktycznie stworzyć nawet niezbyt zaawansowany programista.

Str. 6
Drukarka Fiskalna POSNET Thermal i 3001
Pozostałe sekwencje sterujące wzbogacają funkcje urządzenia oraz zapewniają niezbędne funkcje
serwisowe. Można je podzielić na następujące grupy:
• sekwencje modyfikujące w sposób trwały (poprzez zapis danych w pamięci fiskalnej) stan
wewnętrzny urządzenia: zmiana stawek PTU i fiskalizacja (LBSETPTU, LBSETHDR),
• sekwencje inicjujące różnego rodzaju raporty i wydruki niefiskalne: raport dobowy i okresowy,
raport bazy danych, raport kasy/ zmiany, raporty o gotówce w kasie ( LBDAYREP, LBFSKRE,
LBDBREP, LBCSHREP, LBINCCSH, LBDECCSH, LBCSHSTS),
• sekwencja ustawiania zegara (LBSETCK) i jego odczytu (LBSENDCK),
• rozkazy powodujące wysłanie statusu drukarki (LBFSTRQ ,ENQ i DLE) i numeru błędu
ostatniego rozkazu (LBERNRQ),
• sekwencja powodująca bezpośredni dostęp do układów elektronicznych (wyświetlacza i
szuflady, LBDSP)
• inne (LBSERM).
Sekwencje z pierwszej grupy są wykorzystywane w programach, którymi dysponuje serwis, przeprowadzając
fiskalizację urządzenia lub zmianę stawek PTU. Pozostałe sekwencje mogą być dowolnie wykorzystywane przez
programy aplikacyjne zależnie od potrzeb i inwencji programistów.

Reasumując: drukarka fiskalna może być wykorzystana do fiskalizacji systemu sprzedaży w różny sposób -
zależnie od potrzeb użytkownika i programu aplikacyjnego. Istotną zaletą tego rozwiązania jest możliwość
wykorzystania sprzętu (komputer klasy PC) i oprogramowania, który jest w posiadaniu podatnika. Jest również
istotny fakt, że wielu użytkowników posiada wdrożone (i wykorzystywane przez dłuższy czas) oprogramowanie
finansowo-księgowe bądź obsługi sprzedaży. W takiej sytuacji drogą stosunkowo niewielkich modyfikacji
istniejącego oprogramowania uzyskuje się fiskalizację całego systemu - bez konieczności uzyskania homologacji na
oprogramowanie !
Oczywiście niewielka cena urządzenia uzasadnia też wprowadzenie drukarki fiskalnej w sklepach
/hurtowniach, które nie były do tej pory skomputeryzowane, co wymaga skompletowania całego systemu od
początku (zakup komputera i aplikacji dostosowanej do współpracy z drukarką). W chwili obecnej szereg firm
software'owych dokonało już przystosowania oferowanych przez siebie pakietów do potrzeb współpracy z drukarką.
Dotychczasowe doświadczenia z tych prac wykazują, że nakład pracy i czasu jest w przypadku tego urządzenia
niewielki i należy oczekiwać, że ilość dostępnych na rynku programów wyposażonych w możliwość komunikacji z
tą drukarką będzie rosnąć.

Opis konstrukcji drukarek

Większość układu elektronicznego drukarki jest zlokalizowana na głównej płycie, do której dostęp jest możliwy po
odkręceniu (zabezpieczonej plombą producenta !) chassis drukarki. Dokonać tego może tylko i wyłącznie serwis
regionalny producenta i oczywiście sam producent czyli POSNET. Na płycie tej umieszczono:
• główny procesor drukarki wraz z układami interfejsów,
• kompletny sterownik mechanizmu drukującego,
• zegar czasu rzeczywistego.
Zespół ten jest wyposażony w złącza interfejsów, wyprowadzone z tyłu drukarki:
• złącze interfejsu szeregowego (RS-232), typu RJ45, opisane: "KOMP.",
• złącze interfejsu szeregowego dodatkowego opisane: "RS232",
• złącze dla wyświetlacza zewnętrznego, typu RJ45 (8p8), opisane: "WYŚW.",
• złącze do podłączenia szuflady, typu RJ, opisane: "SZUFL.",
• złącze zewnętrznego zasilacza opisane: „DC”.
Ponadto na płycie głównej są złącza dla wstążek przewodów (z mechanizmami "zapinającymi"):
• złącza mechanizmów drukujących,
• złącze pamięci fiskalnej - musi być ono plombowane specjalną nalepką jednorazowego użytku,
• złącza klawiatury i wyświetlacza LCD na pulpicie operatorskim,
• złącze mechanizmu obcinającego, zwijacza i czujnika obecności papieru (POSNET 3001).

Do głównego chassis drukarki są przymocowane pozostałe zespoły:


• od spodu, nad główną płytą, jest umieszczony moduł fiskalny, zlokalizowany wewnątrz
metalowej obudowy przymocowanej na trwałe do chassis drukarki (zespół "niewymienialny"
przez serwis !), moduł ten jest połączony z resztą urządzenia za pośrednictwem wstążki,

Str. 7
Drukarka Fiskalna POSNET Thermal i 3001
• od góry: zespół mechanizmu drukującego, wraz z zwijaczem kopii (POSNET 3001) lub dwa
mechanizmy termiczne (POSNET Thermal). Ponadto w prawej części mechanizmu drukującego
drukarki POSNET 3001 umieszczony jest mikro wyłącznik sygnalizujący zamknięcie pokrywy.
W przedniej części drukarki znajduje się klawiatura, na której umieszczono 4 klawisze i 3 diody LED w różnych
kolorach . Klawiatura jest połączona z główną płytą przy użyciu 10 żyłowej wstążki. W pulpicie operatorskim jest
ponadto zamontowany alfanumeryczny wyświetlacz LCD (2 x 20 znaków), który jest połączony z płytą główną przy
pomocy 10 żyłowej wstążki. Na środku tylnej części górnej pokrywy drukarki jest umocowany wspornik
wyświetlacza. Wychodzą z niego (POSNET 3001 i drukarki Thermal w obudowach metalowych) dwa przewody:
płaski 8-mio żyłowy kabel "telefoniczny" oraz przewód uziemiający w kolorze zielono-żółtym. Kabel płaski jest
wyprowadzony przez otwór w korpusie drukarki i dołączony wtykiem modularnym RJ45 do dostępnego z zewnątrz
gniazda z opisem "Wyśw.", natomiast przewód uziemiający jest doprowadzony do specjalnej śruby umieszczonej z
prawej strony zwijacza kopii. Należy zwrócić uwagę na poprawność tego podłączenia przy ewentualnych naprawach
drukarki także po jej zmontowaniu. Brak podłączenia przewodu uziemiającego może być nawet przyczyną
uszkodzenia w wyniku wyładowania statycznego do obudowy wyświetlacza ! Należy również zwrócić uwagę aby
przewody wychodzące z uchwytu wyświetlacza nie dotykały do kółka pasowego silnika zwijacza. Do trwałego
umocowania tych przewodów służy specjalny zaczep umocowany do tylnej ścianki drukarki.

Poniżej scharakteryzowano krótko poszczególne bloki funkcjonalne urządzenia. Przez "blok funkcjonalny"
rozumiemy tu fragment całego urządzenia realizujący określoną funkcję - niezależnie od jego fizycznej lokalizacji.

Mechanizm drukujący

W drukarce POSNET 3001 wykorzystano niezawodny mechanizm drukujący japońskiej firmy STAR typu
MP-342 (wykorzystywany w drukarkach paragonowych typu SP-300). Jest to mechanizm z głowicą
dziewięcioigłową, silnikiem prądu stałego do napędu głowicy oraz z silnikiem krokowym do przesuwu papieru.
Umożliwia drukowanie do 40 znaków w wierszu (15 CPI) na papierze z kopią, szerokości max. 82 mm.
Charakteryzuje się dobrą szybkością drukowania - około 3,2 linii na sekundę oraz dużą niezawodnością (około
100.000.000 znaków dla głowicy oraz 8.400.000 linii dla całego mechanizmu). Ponadto jest dosyć cichy (zwłaszcza
w porównaniu z mechanizmami wyposażonymi tylko w jeden silnik prądu stałego służący równocześnie do napędu
głowicy i przesuwu papieru). Wykorzystywana wersja mechanizmu jest fabrycznie wyposażona w obcinacz
paragonów napędzany dodatkowym silnikiem prądu stałego.
Oryginalny mechanizm został uzupełniony o zwijacz do kopii oraz czujnik obecności papieru.
W drukarce POSNET Thermal wykorzystano dwa wysokiej klasy mechanizmy termiczne (oryginał i kopia)
charakteryzujące się:
• Cichą pracą,
• Dużą prędkością drukowania (10 linii na sekundę),
• Dużą trwałością (30 km).
Do drukarek termicznych należy stosować specjalny papier (z nadrukiem POSNET) gwarantujący wysoką jakość
wydruku i co za tym idzie, dający gwarancje że wydruk zostanie zachowany nawet po upływie 5 lat (oczywiście w
przypadku zachowania reguł co do przechowywania papierów termicznych).

Sterownik mechanizmu drukującego.

Sterownik mechanizmu drukującego jest zmontowany na głównej płycie drukarki. Jego zadaniem jest
sterowanie wszystkimi funkcjami mechanizmu tzn. sterowanie głowicą, włączanie silnika napędu głowicy, realizacja
algorytmu sterowania silnikiem krokowym napędu przesuwu papieru, sterowanie silnikami zwijacza i obcinacza
paragonów (3001)oraz sterowanie wyjściem przeznaczonym do podłączenia szuflady.
Wszystkimi powyższymi funkcjami steruje główny mikroprocesor drukarki Z180 (opisany w następnym punkcie
instrukcji). Sterownik drukarki realizuje też pewien zestaw rozkazów (sekwencji sterujących), który umożliwia
między innymi:
• zmianę szerokości wydruku (CPI),
• drukowanie z podkreśleniem, druk "pogrubiony" itp.
• drukowanie danych graficznych.
Niektóre z opcji realizowanych przez sterownik są wykorzystywane w aktualnej wersji formatów wydruków (np.
druk o podwójnej szerokości, grafika itp.).
Sterownik jest wyposażony w generatory znaków z polskimi literami w standardzie MAZOWIA.
Pełen status drukarki oraz zawartość bufora komunikacyjnego są przechowywane w pamięci RAM podtrzymywanej
bateryjnie. Konsekwencją tego rozwiązania jest fakt, że o ile blok danych (paragon fiskalny !) został przesłany

Str. 8
Drukarka Fiskalna POSNET Thermal i 3001
poprawnie - to zostanie on na pewno wydrukowany, nawet jeżeli w trakcie drukowania zaniknie zasilanie. Po
powrocie zasilania drukowanie zostanie wznowione od miejsca, w którym zostało przerwane - a procedura
inicjalizacji całej drukarki zakończy się dopiero wtedy, gdy cała zawartość bufora ulegnie wydrukowaniu. Przyjęcie
takiego rozwiązania jest konieczne, ze względu na jednokrotność operacji drukowania paragonu fiskalnego (w
przypadku przerwy w zasilaniu nie można powtórzyć tej operacji, gdyż wymagałoby to powtórzenia całej
transakcji).
Procesor drukarki wykrywa szereg sytuacji awaryjnych, które mogą być usuwalne przez użytkownika (np.
brak papieru) lub przez serwis. Umieszcza wtedy odpowiednie komunikaty na wyświetlaczu LCD (są one omówione
w rozdziale 7). Są to następujące sytuacje:
• błąd jednego z napięć zasilających (uszkodzenie lub przeciążenie zasilacza),
• przegrzanie głowicy,
• zacięcie silnika napędu głowicy lub otwarta pokrywa drukarki,
• brak papieru,
• zacięcie lub uszkodzenie obcinacza (3001),
• zbyt niskie napięcie baterii podtrzymującej dane w RAM,
• inne błędy (np. przekłamanie pamięci programu lub błąd testu pamięci RAM).
Algorytmy sterowania mechanizmem drukującym są tak skonstruowane, aby uzyskać możliwie największą szybkość
wydruku (drukowanie w obu kierunkach ruchu głowicy w drukarce 3001 !) przy minimalizacji możliwości
uszkodzenia mechanizmu (np. specjalny algorytm sterowania obcinaczem eliminujący ewentualność uszkodzenia
silnika w przypadku blokady napędu 3001). Procesor główny jest ponadto zabezpieczony przed skutkami błędnego
działania programu poprzez zewnętrzny, sprzętowy układ „watchdog timera” .
Dla zapewnienia poprawnej pracy sterownik korzysta z sygnałów PG i PF ("Power Good" i "Power Fail")
generowanych we właściwej sekwencji przez elektronikę drukarki podczas komutacji napięcia zasilającego.
W szczególności sygnał PG zabezpiecza elementy mechanizmu / sterownika przed uszkodzeniem w wyniku stanu
nieustalonego podczas włączania drukarki. Z kolei sygnał PF daje możliwość właściwego zakończenia drukowania
w przypadku zaniku napięcia zasilającego - w sposób umożliwiający między innymi poprawne wznowienie wydruku
od miejsca, w którym został on przerwany (jeżeli w buforze sterownika coś jeszcze zostało).
Sterownik mechanizmu drukującego jest wyposażony w dodatkowe wyjście służące do podłączenia
szuflady na banknoty. Na wyjściu tym pojawia się impuls napięciowy pochodzący z kondensatora naładowanego do
napięcia 25V, wykorzystywany do uruchomienia elektromagnesu zwalniającego zapadkę szuflady - co powoduje jej
otwarcie. Uruchomienie wyjścia następuje w wyniku odebrania przez sterownik odpowiedniego rozkazu wysłanego
przez aplikację do drukarki.

Główny procesor drukarki.

Główny komputer sterujący drukarką został zrealizowany w oparciu o procesor Z180 (HD64180). Do jego
zadań należy obsługa obu interfejsów komunikacyjnych, analiza i wykonywanie rozkazów sterujących, realizacja
algorytmów związanych z transakcją, raportami dobowymi i okresowymi, a także komunikacja z pozostałymi
elementami z systemu (pamięć fiskalna, wyświetlacze, zegar czasu rzeczywistego). Procedury komunikacji
"wewnętrznej" są skonstruowane w sposób wykluczający wystąpienie błędów transmisji (transfery mają charakter
blokowy, są zabezpieczone bajtami lub bitami kontrolnymi itp.). Główny procesor drukarki poprzez wysyłanie
i odbieranie komunikatów od pozostałych procesorów systemu organizuje i kontroluje ich działanie.
W szczególności, dla zapewnienia wysokiej niezawodności całego urządzenia - odpytuje okresowo (co kilka sekund)
pozostałe układy, a w szczególności:
• pamięć fiskalną,
• zegar czasu rzeczywistego,
• wyświetlacz zewnętrzny LED.
Ponadto kontrolowany jest stan mechanizmu drukującego.
Wykrycie błędów w procedurze "odpytywania", wskazujące na awarię jednego z elementów, powoduje
bezwarunkowe przerwanie pracy drukarki wraz z odpowiednim komunikatem na wyświetlaczu LCD oraz dźwiękową
i optyczną (diody LED na klawiaturze) sygnalizacją tego stanu.
Główny procesor dysponuje obszarem pamięci RAM, którego zawartość jest podtrzymywana przy pomocy
baterii litowej 3V. W pamięci tej są przechowywane różne dane, które muszą być zachowane podczas wyłączenia
drukarki (np. totalizery i ilość gotówki w kasie), a także służy ona do przechowywania bazy danych o
sprzedawanych artykułach (służącej do kontroli poprawności przypisania kodów stawek PTU do nazw
sprzedawanych artykułów podczas transakcji).

Str. 9
Drukarka Fiskalna POSNET Thermal i 3001
Po włączeniu zasilania procesor główny wykonuje test poprawności działania całego systemu oraz inicjalizuje stan
drukarki na podstawie danych odczytanych z modułu fiskalnego i pamięci RAM podtrzymywanej bateryjnie.
Sekwencja startowa obejmuje następujące operacje (w poniższej kolejności):
• Test pamięci ROM programu (obliczenie i sprawdzenie sumy kontrolnej).
• Test pamięci RAM systemowej.
• Wypisanie zgłoszenia na wyświetlaczu (test wizualny):
' Drukarka fiskalna '
'POSNET Thermal/yy.x '
lub

' Drukarka fiskalna '


'POSNET 3001/yy.x '
• Sprawdzenie poprawności działania modułu fiskalnego oraz odczytanie z niego następujących
danych:
- ilość wolnego miejsca w module fiskalnym,
- nagłówek dla paragonu i raportów zawierający dane podatnika (NIP),
- aktualne wartości stawek podatkowych,
- ilość zarejestrowanych zerowań RAM,
- data ostatniego zapisu w pamięci fiskalnej.
• Odczyt stanu totalizerów drukarki i sprawdzenie ich sumy kontrolnej.
• Test optyczny wyświetlacza LED (zapalenie wszystkich segmentów).
• Kontrola poprawności działania mechanizmu drukującego, oczekiwanie na ewentualne zakończenie
drukowania zawartości bufora drukarki (podtrzymywanego bateryjnie), następnie sprowadzenie
sterownika mechanizmu drukującego do stanu początkowego.
• Jeżeli przed wyłączeniem zasilania drukarka była w trybie transakcji i transakcja nie została
zakończona poprawnie, to następuje drukowanie napisu: 'paragon anulowany' oraz
odcięcie anulowanego paragonu (ta sytuacja może wystąpić tylko, jeżeli paragon był drukowany w
trybie "On-Line", ponieważ nie chodzi tu o dokończenie drukowania paragonu, lecz brak
zamknięcia transakcji w sytuacji, gdy jego część - nagłówek i część pozycji już została
wydrukowana !).
• Badanie sumy kontrolnej danych pamięci RAM podtrzymywanej bateryjnie, a w przypadku błędu
wypisanie komunikatu:
' Błąd pamięci NVR '
' ( Naciśnij NIE ) ',
oraz, w tej sytuacji, inicjalizacja tego obszaru.
• Kontrola poprawności działania i odczyt statusu zegara czasu rzeczywistego, w celu wykrycia braku
jego zaprogramowania (np. w wyniku rozładowania baterii), a w takiej sytuacji wypisanie
komunikatu:
' Błąd zegara RTC'
'Prześlij z systemu !'.
• Badanie warunków uniemożliwiających pracę drukarki w ogóle (błędy fatalne testu, np. błąd sumy
kontrolnej ROM), gdzie w przypadku błędu wystąpi komunikat:
' Błąd fatalny testu: '
'ROM RAM RTC DSP FSK'.
(druga linia może mieć różny format, zależnie od przyczyny, która spowodowała fatalny błąd testu).

lub komunikat:
' Brak stawek PTU lub '
'numeru unikatowego '.
W obu w/w sytuacjach dalsze użytkowanie urządzenia nie jest możliwe.

• Badanie warunków umożliwiających pracę drukarki w trybie fiskalnym, a jeżeli praca w tym trybie
nie jest możliwa wypisanie ostrzeżenia:
' Tryb szkoleniowy ! '

Str. 10
Drukarka Fiskalna POSNET Thermal i 3001
' HDR FULL ERR CLR ',
(druga linia może mieć różny format, zależnie od sytuacji, która uniemożliwia pracę w trybie fiskalnym).
• Badanie poprawności bazy danych sygnalizowane komunikatem:
' KONTROLA BAZY '
' DANYCH... ',
W tym momencie procesor główny odczytuje i kontroluje całą bazę danych, prowadząc równocześnie jej
"regenerację" w przypadku wykrycia błędów. Jeżeli wykryto dużo błędów to proces ten może trwać do
kilku minut. Jeżeli został wykryty jakikolwiek błąd, to po zakończeniu testu pojawia się komunikat:
' Błąd bazy danych ! '
' ( Naciśnij NIE ) ',
(w trybie fiskalnym zostanie wówczas wykonany zapis w pamięci fiskalnej informacji o wystąpieniu błędu
w bazie danych).
• Wypisanie standardowego opisu na wyświetlaczu:

' --- Do zapłaty --- '


'Suma: 0. '
• Automatyczne wykonanie zerowania RAM (jeżeli wykryto wcześniej błąd totalizerów), przy czym
pojawia się wówczas komunikat:
' Błąd totalizerów ! '
' ( Naciśnij NIE ) '
(w trybie fiskalnym fakt ten zostanie też zarejestrowany w pamięci fiskalnej).
• Jeżeli ilość wolnych lokacji do zapisu (rekordów) w pamięci fiskalnej nie przekracza 20, to nastąpi
wypisanie ostrzeżenia:
' Ilość rekordów w '
' pam. fisk. = xx ',
gdzie 'xx' jest ilością "wolnych" rekordów.
• Generowanie pojedynczego sygnału dźwiękowego.
Po zakończeniu sekwencji startowej procesor główny przechodzi do głównej pętli, w której zachodzi analiza znaków
odbieranych z interfejsów i realizacja sekwencji sterujących.

Podobnie, jak w przypadku sterownika drukarki, procesor główny korzysta z sygnału PF ("Power Fail") w
celu poprawnego zakończenia wszystkich operacji i przechowania statusu w przypadku zaniku zasilania. Problem
ten został rozważony szczególnie starannie w konstrukcji całego urządzenia - właściwe wykorzystanie sygnału PF
przez procesor (oraz buforowanie pewnych informacji w pamięci nieulotnej), przy rozważeniu różnych sytuacji
szczególnych daje pewność, że awaria zasilania w dowolnym momencie nie spowoduje błędnego zadziałania
drukarki (np. naliczenie obrotu bez zakończenia wydruku paragonu lub odwrotnie, albo zapis raportu dobowego do
pamięci fiskalnej bez zakończenia jego wydrukowania lub, co gorsza, bez wyzerowania totalizerów). Co więcej,
przeprowadzono również analizę różnych sytuacji wynikających z awarii zasilania w kontekście komunikacji z
serwerem i aplikacją. Wyobraźmy sobie przykładowo sytuację, w której awaria zasilania następuje w chwilę po
wysłaniu przez aplikację sekwencji LBTREXIT, kończącej transakcję. Powstaje wtedy istotny problem - czy
drukarka zdążyła ją zrealizować czy nie ? Aby rozwiązać skutecznie to zadanie hardware i software drukarki
zapewnia spełnienie następujących założeń:
1. operacje wydruku paragonu i rejestracji obrotu (zwiększenie stanu totalizerów) są NIEROZDZIELNE,
nawet w warunkach awarii zasilania w dowolnym momencie !
2. w momencie wykonania obu tych operacji zostaje ustawiony znacznik (nazywany w dalszym opisie TRF) -
bit, który może być testowany przez aplikację w celu zbadania, czy ostatnia transakcja została zakończona
poprawnie (przy czym software wyklucza explicite możliwość zakończenia transakcji bez ustawienia bitu
TRF lub odwrotnie - tu też musi być nierozdzielność operacji),
3. stan tego bitu musi być przechowywany w pamięci nieulotnej.
Poprawne wykorzystanie stanu bitu TRF przez aplikację likwiduje w każdej sytuacji niepewność co do poprawnego
zakończenia transakcji (zatem nie ma możliwości, aby obliczanie obrotu przez drukarkę i komputer - program do
sprzedaży, dało różne rezultaty !).

Str. 11
Drukarka Fiskalna POSNET Thermal i 3001

Zegar czasu rzeczywistego.


Zegar czasu rzeczywistego wykonano na bazie układu PCF8573 (wersje ‘przewlekane’ płyty głównej) lub
V3021 (wersja SMD) .Pracują one z oscylatorem zegarkowym 32768 Hz. Działanie zegara czasu rzeczywistego jest
podtrzymane przez baterię litową 3V .
Prąd pobierany przez zegar zawiera się w granicach 3..5 µA, co zapewnia prawidłowe podtrzymanie zegara
przez około 5 lat.
Chociaż stan baterii jest kontrolowany (układ zegara wykrywa awarię własnego zasilania ) - może się
zdarzyć, że przy napięciu baterii "na granicy" poprawnego działania wystąpi np. znaczne "spóźnienie" zegara. Stąd
jest zalecane, aby każdorazowo na początku dnia pracy urządzenia sprawdzić stan zegara np. drukując stan kasy (na
tym dokumencie niefiskalnym jest data i czas) lub poprzez aplikację (sekwencja odczytu zegara LBSENDCK).
Nawet jeżeli wystąpi rozprogramowanie zegara, to dane w pamięciach nieulotnych będą nadal poprawne ponieważ
pamięć RAM podtrzymywana jest przez inną baterię. Należy też przyjąć, że wystąpienie przekłamania w bazie
danych lub w innym obszarze danych "nieulotnych" sygnalizowane komunikatami:
' Błąd pamięci NVR '
' ( Naciśnij NIE ) ',
i / lub:
' Błąd bazy danych ! '
' ( Naciśnij NIE ) ',
powinno być zgłaszane do serwisu, ze względu na możliwość zaistnienia defektu baterii. Komunikaty powyższe
spowodują także komunikat:
' Błąd zegara RTC '
'Prześlij z systemu ! '
ponieważ ‘rok’ zegara przechowywany jest w pamięci RAM.
Zegar czasu rzeczywistego komunikuje się z procesorem głównym. Komunikacja jest dwukierunkowa
(programowanie i odczyt stanu zegara) przy wykorzystaniu magistrali I2C. Zegar pracuje w trybie 24-godzinnym,
realizuje też wszystkie funkcje kalendarza, uwzględniając też lata przestępne .

Wyświetlacze.
Zastosowano nowoczesny, wbudowany w pulpit operatora wyświetlacz cyfrowy LCD posiadający dwie linie
po 20 znaków alfanumerycznych (dla obsługi) oraz dziesięcio-pozycyjny wyświetlacz cyfrowy dla klienta (LED).
Wyświetlacz LCD wbudowany w pulpit operatora jest połączony z główną płytą drukarki. Wyświetlacz LED jest
dołączany do gniazda płyty sterownika za pomocą kabla zaopatrzonego we wtyczkę typu RJ-45. Takie rozwiązanie
umożliwia dołączenie wyświetlacza zewnętrznego. W każdej sytuacji blokowana jest praca drukarki bez poprawnego
dołączenia wyświetlacza LED. Jest to realizowane przez odpytywanie wyświetlacza przez procesor główny co
pewien czas.
Urządzenie posiada możliwość wyświetlania polskich znaków na wyświetlaczu LCD, ograniczoną ze względów
sprzętowych do małych liter. Polskie litery są zakodowane według standardu MAZOWIA, przy czym wystąpienie
kodu "dużej" polskiej litery powoduje automatycznie przekodowanie na "zwykłą" literę np. zamiast "Ą" będzie "A".
Podstawową funkcją wyświetlacza LED jest informowanie klienta o należności do zapłaty, przy czym na
wyświetlaczu LCD operatora pojawia się komunikat:

' --- Do zapłaty --- '


'Suma: xxxxxxxx.xx'
Jest to realizowane na końcu transakcji obligatoryjnie przez drukarkę, a w jej trakcie narastająca suma transakcji jest
wyświetlana automatycznie na obu wyświetlaczach jednocześnie.
Począwszy od wersji 39.x do drukarek POSNET Thermal i 3001 można dołączyć dodatkowy, alfanumeryczny
wyświetlacz typu VFD. Dołącza go się do dodatkowego złącza RS232. Serwis powinien pamiętać o przestawieniu
zworki J7 (Thermal); J3 (3001) w pozycję 2xRS (zworka dostępna po zdjęciu zabezpieczonej plombą ołowianą
osłonki – patrz rozdział 16 i 17). Na wyświetlaczu tym pojawiają się dokładnie takie same teksty jak na
wyświetlaczu operatora LCD (chyba że programista ‘świadomie’ wysyła informacje tylko do wyświetlacza LCD
operatora). Jedyna różnica to wyświetlanie wszystkich znaków ‘polskich’ (także dużych liter) na wyświetlaczu VFD.
Wyświetlacz LCD (VFD) zapewnia rozbudowaną interakcję z operatorem systemu - tu są wypisywane
wszelkie ostrzeżenia, komunikaty o błędach, informacje diagnostyczne itp.

Str. 12
Drukarka Fiskalna POSNET Thermal i 3001

Pamięć fiskalna.

Pamięć fiskalna stanowi zamknięty w stalowej obudowie, przytwierdzony "na stałe" zespół. Realizuje on
zapis w pamięci stałej PROM różnych informacji (przede wszystkim informacji o sprzedaży dziennej).
Rejestracja sprzedaży przez urządzenie jest dokonywana w całości przez moduł fiskalny i przebiega dwuetapowo:
1. Po zatwierdzeniu transakcji jest zwiększany stan nieulotnych rejestrów, w których są akumulowane kwoty
sprzedaży z podziałem na grupy podatkowe. Jest to zestaw 7 rejestrów 28 bitowych (TOT_A..TOT_Z),
zawierających kwoty sprzedaży dla grup podatkowych A..F oraz Z (grupa zwolniona od podatku)
uzupełniony o 20 bitowy numer paragonu fiskalnego (PAR_NUM, zwiększany po każdej poprawnej
transakcji) oraz bajt sumy kontrolnej. Rejestry te są nazywane dalej totalizerami.
2. Na koniec dnia użytkownik jest zobowiązany wykonać tzw. raport dobowy. Wtedy zawartość totalizerów
jest przepisywana do pamięci stałej PROM. Równocześnie jest drukowany odpowiedni raport na drukarce
paragonowej, a stan totalizerów jest zerowany (z wyjątkiem licznika paragonów fiskalnych).
Na płytce modułu fiskalnego jest zatem zmontowana pamięć PROM (układ elektroniczny niezbędny do jej
programowania umieszczony jest na płycie głównej). Procesor główny może dokonać trwałego zapisu danych w tej
pamięci. Cały obszar pamięci PROM jest funkcjonalnie podzielony na dwa obszary:
1. Obszar adresowany "bezwzględnie", gdzie są zapisywane:
• dane testowe pamięci,
• numer unikatowy pamięci,
• nagłówek zawierający dane podatnika (NIP).
Każda z powyższych danych ma w pamięci PROM ściśle określoną lokalizację. Dane testowe są
zapisywane i kontrolowane automatycznie przez procesor modułu fiskalnego (podczas uruchamiania
modułu). Numer unikatowy pamięci jest równocześnie numerem unikatowym całej drukarki i jest
wpisywany przez producenta. Nagłówek jest wpisywany do pamięci podczas fiskalizacji urządzenia (numer
identyfikacyjny podatnika do modułu fiskalnego, reszta nagłówka do pamięci RAM).
2. Obszar zapisu sekwencyjnego. Po fiskalizacji urządzenia dalsze zapisy mogą dotyczyć wyłącznie tego
obszaru. Mechanizm zapisu jest tu podobny jak np. dla dysku lub taśmy magnetycznej. Kolejne informacje
są zgrupowane w pewne jednostki informacyjne (tak jak sektor na dysku) i zwane dalej rekordami. Są
zapisywane kolejno tzn. następny rekord jest zapisywany w pierwszej wolnej lokacji pamięci. Poszczególne
rekordy mogą nieść następujące informacje:
• raport dobowy (data oraz stan totalizerów),
• zmiana stawek PTU (data oraz nowe wartości stawek),
• zerowanie RAM (data i czas zerowania),
• błąd bazy danych (data wystąpienia błędu).
Typ rekordu jest zapisany w pierwszym bajcie rekordu, co umożliwia właściwą interpretację przez procesor
główny pozostałej jego zawartości.
Właściwą gospodarkę pamięcią zapewnia główny procesor drukarki, wyszukując pierwsze wolne miejsce do zapisu
rekordu, zapewniając sekwencyjny odczyt danych z PROM itd. Dodajmy, że podczas drukowania raportu
okresowego zawartość pamięci PROM jest odczytywana sekwencyjnie oraz analizowana i "przenoszona na papier"
przez procesor drukarki. Postać raportu okresowego jest zatem bezpośrednio związana ze sposobem zapisu
informacji w pamięci fiskalnej.
Po włączeniu zasilania procesor wykonuje test funkcjonalny pamięci fiskalnej, badając poprawność
działania całego układu elektronicznego, sprawdza także poprawność danych zawartych w pamięci stałej i
nieulotnej.
Podczas normalnego działania drukarki procesor kontroluje periodycznie (co kilka sekund) poprawność działania
modułu fiskalnego. Odłączenie modułu od głównej płyty lub jego awaria powoduje bezwzględnie zawieszenie pracy
drukarki wraz z komunikatem:

'Błąd fatalny testu: '


' FSK '.
Konstrukcja modułu zapewnia niezawodny zapis danych w pamięci stałej nawet jeżeli podczas zapisu
nastąpi awaria zasilania. Dokładniej: zapis zostanie wykonany poprawnie, nawet jeżeli wystąpi zanik zasilania 220V.

Str. 13
Drukarka Fiskalna POSNET Thermal i 3001

Zasilacze.
Zasilacze drukarek POSNET Thermal i POSNET 3001 to zamknięte w jednej obudowie, niezależne zewnętrzne
konstrukcje zasilaczy.
Wybrano wariant zasilacza optymalny pod względem niezawodnościowym: napięcie jest otrzymywane z
uzwojenia transformatora sieciowego o mocy znamionowej 50 VA. Napięcie to, po wyprostowaniu służy do
zasilenia ciągłego zasilacza stabilizowanego +25V (POSNET 3001 i POSNET Thermal wersja SMD) lub
bezpośrednio zasila drukarkę, dostarczając napięcie do obwodów wykonawczych drukarki (POSNET Thermal
wersja ‘przewlekana’).
Ograniczenie prądowe zasilacza drukarki POSNET 3001 jest ustalone na ok. 2A (ograniczenie ‘z podcięciem’ ; prąd
spada do zera przy zwarciu) - ponieważ średni prąd pobierany przez mechanizm (nawet przy ciągłym drukowaniu)
nie przekracza tej wartości. Z kolei prąd chwilowy może być znaczny (nawet do ok. 8A !) - stąd na wyjściu zasilacza
umieszczono znaczną pojemność. Napięcie +5V zasilające część cyfrową drukarek otrzymywane jest przy pomocy
stabilizatora impulsowego umieszczonego na głównej płycie sterownika drukarek. Takie rozwiązanie zasilacza daje
znaczną dynamikę pracy stabilizatora +5V, przy dużej sprawności. Duża dynamika (tzn. zakres napięć wejściowych
stabilizatora +5V) jest ważna o tyle, że daje duży czas od momentu zaniku napięcia sieciowego do momentu utraty
możliwości stabilizacji, co jest konieczne dla poprawnego zakończenia wszystkich operacji drukarki w przypadku
zaniku (awarii) zasilania. Zanik napięcia zasilającego jest sygnalizowany przy użyciu sygnału PF ("Power Fail"),
natomiast osiągnięcie poprawnego stanu napięć zasilających przy użyciu sygnału PG ("Power Good").

UWAGA: pisząc ‘zanik napięcia zasilającego’ mamy na myśli zanik napięcia na wejściu zasilacza drukarki, a nie
wyłączenie drukarki za pomocą jej przełącznika. Wyłączanie drukarki podczas realizacji wydruków
przy pomocy wyłącznika drukarki jest niedopuszczalne!

Zasilacz drukarki POSNET Thermal w wersji SMD jest zasilaczem impulsowym zaopatrzonym w inną wtyczkę od
stosowanych w zasilaczach przeznaczonych dla wersji ‘przewlekanych’.

Str. 14
Drukarka Fiskalna POSNET Thermal i 3001

Klawiatury drukarek.

Drukarka posiada cztery przyciski o różnorakich funkcjach które wykorzystywane są do:


- zakładania papieru,
- kasowania błędów,
- włączania pracy GOTOWA,
- wykonywania raportów fiskalnych dobowych i okresowych.
Działanie przycisku potwierdzone jest sygnałem dźwiękowym.

Rozmieszczenie poszczególnych klawiszy przedstawione jest na rysunkach poniżej (różne drukarki):

Klawiatura drukarki POSNET THERMAL (obudowa metalowa)

Klawiatura drukarki POSNET THERMAL (obudowa plastikowa)

Rysunek klawiatury drukarki POSNET 3001

Str. 15
Drukarka Fiskalna POSNET Thermal i 3001
OPIS KLAWIATURY:

Klawisz NIE:

1. Włącza/wyłącza tryb pracy GOTOWA. Drukarka jest "widziana" przez komputer gdy świeci się zielona lampka
opisana „GOTOWA“,
2. W celu dokonania wysuwu papieru, drukarkę należy wyprowadzić z trybu GOTOWA klawiszem NIE (zielona
lampka zgaśnie) i przy pomocy klawisza TAK (WYSUW) dokonać wysuwu papieru,
3. Klawisz NIE zezwala na wycofanie się z dowolnej opcji ustawień w przypadkach gdy wymagane jest
potwierdzenie lub zaprzeczenie ustawienia,
4. W przypadku definiowania zakresu (dat) dla raportu okresowego przy pomocy klawisza NIE możemy wybrać
pole, które chcemy zmienić (pełni on wtedy funkcję lewego kursora),
5. Klawisz ten służy także do kasowania ewentualnych sytuacji błędnych, które sygnalizowane są na wyświetlaczu
drukarki.
Klawisz TAK:
1. Umożliwia wysuw papieru (oryginału w drukarce THERMAL) w trybie NIE GOTOWA, wykorzystywany przy
zakładaniu nowej rolki papieru,
2. Zezwala na operacje związane z ewentualnym zapisem do modułu fiskalnego (raport dobowy, zmiana stawek
PTU) lub na wykonanie raportu okresowego,
3. W przypadku definiowania zakresu dat dla raportu okresowego przy jego pomocy możemy wybierać pole,
które chcemy zmienić (pełni wtedy funkcję prawego kursora),
4. W przypadku sygnalizowania przez drukarkę błędu przy pomocy tego klawisza można skasować w dowolnym
momencie sygnał dźwiękowy generowany przez wewnętrzny głośnik drukarki.
Klawisz R. D. (raport dobowy):
1. Przy jego pomocy wybieramy rodzaj raportu - RAPORT DOBOWY (przy włączaniu drukarki należy
przytrzymać wciśnięty jeden z dwóch klawiszy R.D. lub R.O.),
2. Służy także do zmiany wartości pól (roku, miesiąca lub dnia) w "dół" ("-" zmniejszenie wartości wyświetlonej)
w przypadku definiowania daty początkowej lub końcowej dla raportu okresowego. W przypadku
sygnalizowania przez drukarkę błędu przy pomocy tego klawisza można skasować w dowolnym momencie
sygnał dźwiękowy generowany przez wewnętrzny głośnik drukarki.
3. W przypadku sygnalizowania przez drukarkę błędu przy pomocy tego klawisza można skasować w dowolnym
momencie sygnał dźwiękowy generowany przez wewnętrzny głośnik drukarki,
4. Umożliwia wysuw kopii w drukarce THERMAL w trybie NIE GOTOWA, wykorzystywany przy zakładaniu
nowej rolki papieru,
Klawisz R. O. (raport okresowy):
1. Przy jego pomocy wybieramy rodzaj raportu - RAPORT OKRESOWY,
2. Służy także do zmiany wartości pól (roku, miesiąca lub dnia) w "górę" ("+" zwiększenie wartości wyświetlonej)
w przypadku definiowania daty początkowej lub końcowej dla raportu okresowego,
3. W przypadku sygnalizowania przez drukarkę błędu przy pomocy tego klawisza można skasować w dowolnym
momencie sygnał dźwiękowy generowany przez wewnętrzny głośnik drukarki,
4. Przy jego pomocy (w przypadku gdy lampka GOTOWA nie świeci) można wysunąć papier kopii w drukarce
POSNET Thermal.

Dodatkowo klawiatura wyposażona jest w trzy lampki typu LED:

- zieloną (GOTOWA), obok klawisza NIE, informującą, że drukarka jest w stanie gotowości do pracy z
komputerem (świeci w trybie ‘GOTOWA’),
- żółtą, z napisem SIEĆ informującą, że drukarka jest włączona (podłączona do sieci zasilającej i
włączony jest wyłącznik sieciowy),
- czerwoną, z napisem BŁĄD informującą o zaistnieniu błędu (dioda miga i słychać przerywany sygnał
dźwiękowy).
UWAGA: w przypadku wystąpienia błędu uniemożliwiającego dalsze działanie drukarki migają obie diody :
SIEĆ i BŁĄD.

Str. 16
Drukarka Fiskalna POSNET Thermal i 3001

3. Plombowanie drukarki fiskalnej

Plomby drukarki można podzielić na dwie grupy:


I - plomby producenta ,
II - plomby serwisowe .
Każdorazowa ingerencja serwisu wymaga odnotowania w książce serwisowej drukarki oraz, o ile
przewidują to odnośne przepisy szczegółowe, powiadomienia Urzędu Skarbowego. O wszelkich zauważonych
uszkodzeniach plomb, wskazujących na ingerencję osób niepowołanych, należy powiadomić Urząd Skarbowy
i producenta. Dokonywanie w takim przypadku otwierania lub naprawy drukarki - obciąża
odpowiedzialnością serwisanta.

Plomby producenta

Drukarka zawiera plombę producenta w postaci plastikowego klipsa z napisem POSNET, lub HOLOGRAMU także
zawierającego napis POSNET. Plomb tych nie może naruszać żaden serwisant za wyjątkiem przedstawiciela
regionalnego lub producenta, czyli POSNET S.C.
Pamięć fiskalna stanowi zamknięty, przytwierdzony "na stałe" zespół. Wymontowywanie pamięci fiskalnej, zgodnie
z obowiązującymi przepisami, nie może być dokonywane w żadnym przypadku przez serwis !!!. Uszkodzenia
drukarki polegające na niesprawności pamięci fiskalnej kwalifikują całą drukarkę do wymiany. Drukarkę
z uszkodzeniami pamięci fiskalnej należy dostarczyć do producenta (POSNET S.C.) lub najbliższego
przedstawiciela regionalnego POSNET.
Pamięć programu EPROM zainstalowana na pakiecie sterownika drukarki jest zabezpieczona specjalną,
jednorazowego użytku nalepką producenta. Nalepka ta zawiera dane o dacie produkcji i ewentualnie o wersji
oprogramowania. Wyjęcie układu pamięci powoduje zerwanie nalepki.
Wyjmowanie pamięci EPROM w celu jakiekolwiek kopiowania i analizowania zawartego w nich oprogramowania
są czynnościami zabronionymi dla serwisu !!!.

POSNET
Plomby serwisowe SERWIS
8777
Pamięć fiskalna jest połączona z płytą sterownika wstążką z nasadką, która jest zapinana do
złącza umieszczonego na płycie sterownika drukarki. Po włożeniu wtyczki do złącza należy na złącze nakleić
specjalną nalepką, która ulega uszkodzeniu przy próbie zrywania. Jest to nalepka jednorazowego użytku, na której
serwisant umieszcza swoje dane wraz z datą naprawy i odciskiem pieczęci serwisowej. Opisania nalepki należy
dokonać przed jej zdjęciem z papieru zabezpieczającego i nalepieniem na złącze. Odcisku pieczęci należy
dokonać poprzez umieszczenie nalepki na twardej gumie, przyłożenie indywidualnego stempla serwisanta i delikatne
uderzenie młotkiem. Nalepkę należy tak umieścić na złączu, aby można było na niej odczytać wpisane dane
i zidentyfikować stempel serwisanta. Nalepki na złącze pamięci fiskalnej dostarcza wyłącznie producent !!!.
W drukarkach POSNET Thermal i POSNET 3001 zastosowano specjalną osłonkę, mocowaną dwoma
wkrętami M3 do chasidrukarki. Pod jeden z nich podłożony jest metalowy kubek z uchwytem z owalnym wycięciem
(wkręt od strony klawiatury). Uchwyt kubka jest podwinięty pod spód osłonki tak, że wkręt mocujący przechodzi
kolejno przez: kubeczek, osłonkę, uchwyt, a następnie jest wkręcony w gwint konstrukcji drukarki. Zawsze po
wkręceniu wkrętów należy dokonać pełnego testu poprawności pracy drukarki. Po poprawnym wyniku testu
można dokonać zabicia plomb, które polega na:
• włożeniu do kubeczka plasterka ołowiu,
• zgnieceniu brzegów kubeczka poprzez nałożenie narzędzia o stożkowym otworze czołowym
(tzw. zagniataka) i kilkakrotnym delikatnym uderzeniu młotkiem,
• odciśnięciu w ołowiu pieczęci serwisanta poprzez przyłożenie narzędzia z indywidualnym
oznakowaniem serwisanta i jednorazowym, zdecydowanym (ale z wyczuciem !) uderzeniu
młotkiem.

Kubeczki do plombowania są jednorazowego użytku i są dostarczane wyłącznie przez producenta !.

Str. 17
Drukarka Fiskalna POSNET Thermal i 3001

4. Fiskalizacja drukarki.
Fiskalizację drukarki należy przeprowadzać przy użyciu oryginalnego serwisowego programu firmy
POSNET - „POSNET.EXE”, który jest udostępniany serwisantom po pomyślnym zdaniu egzaminu kończącego kurs
serwisowy drukarek (katalog VER17_1 na dyskietce fiskalnej dla firmware ≥17.1.

Używanie do fiskalizacji drukarki programów nie posiadających autoryzacji firmy POSNET może
spowodować nieodwracalny błąd w zapisie do pamięci fiskalnej, za co całą odpowiedzialność ponosi serwisant .

Program POSNET.EXE należy uruchamiać komendą :

POSNET 1 - w przypadku podłączenia drukarki do komputera poprzez port COM1,


POSNET 2 - w przypadku podłączenia drukarki do komputera poprzez port COM2,
POSNET 3 - w przypadku podłączenia drukarki do komputera poprzez port COM3,
POSNET 4 - w przypadku podłączenia drukarki do komputera poprzez port COM4.

Na czas fiskalizacji zalecane jest dołączenie drukarki do zasilacza UPS, zabezpieczającego


przed zanikami zasilania sieciowego. Zaniki zasilania w przypadku braku UPS-a mogą mieć
negatywny wpływ na przebieg fiskalizacji.

Fiskalizacja polega na zapisaniu numeru identyfikacyjnego podatnika NIP do pamięci fiskalnej (operacja
nieodwracalna), natomiast nazwę firmy i adres jego siedziby trzeba wprowadzać do pamięci RAM z możliwością
korekty tych danych w przyszłości.
W drukarkach fiskalizowanych wg. starych zasad tzn. z wpisanymi pełnymi danymi podatnika (dotyczy to także
drukarek z nową wersją firmware) istnieje możliwość ‘dostosowania’ ich do nowych zasad. W takim przypadku
należy skontaktować się z serwisem centralnym POSNET (serwis@posnet.com.pl).
Fiskalizacji drukarki (wer. ≥ 17.1) wg nowych zasad nie wolno dokonywać przy pomocy ‘starego’ programu
“POSNET.EXE” (katalog POSNET na dyskietce) !!!.
Fiskalizacji powinna przebiegać wg opisu poniżej (zalecamy dokonywanie fiskalizacji przy wykorzystaniu takiego
interfejsu na jakim ma pracować Użytkownik) :
1. Sprawdzić datę i czas w urządzeniu (musi być prawidłowa !);
2. Uzgodnić z użytkownikiem stawki PTU które ew. po fiskalizacji trzeba w drukarce zdefiniować (tryb
szkoleniowy umożliwia dokonanie dowolnych sprzedaży z programu użytkownika i określenie z jakich stawek
korzysta użytkownik);
3. Wybrać z menu programu opcję Programowanie Nagłówka (litera G);
4. W okienku edytora nagłówka zdefiniować nagłówek wg ‘starych’ zasad tzn. podać Nazwę firmy, adres firmy
i NIP (NIP musi być w ostatniej linii nagłówka tzn. w pierwszej wolnej linii po nazwie, adresie firmy).
Dopuszczalne jest umieszczanie w nagłówku innych informacji np. miejsca instalacji drukarki (niektóre urzędy
skarbowe tego wymagają), ale muszą się one znaleźć przed linią zawierającą NIP.
5. ‘Wysłać’ nagłówek do drukarki.
6. Drukarka wydrukuje kontrolny paragon z nagłówkiem.
7. Sprawdzić ten wydruk (jego poprawność); zwrócić uwagę na położenie trzech znaków zapytania ‘???’ - powinny
znaleźć się w następnej linii po NIP i od lewej krawędzi wydruku. Następnie program zada pytanie czy wykonać
fiskalizację. Jeżeli próbny wydruk jest prawidłowy można nacisnąć ‘T’ ; jeżeli stwierdzimy że jest błąd w
nagłówku trzeba się wycofać i nacisnąć klawisz ‘N’.

Format dla numeru NIP jest 'sztywny' i dopuszczalne są napisy zawierające na początku ciąg 'NIP' a dalej znak
odstępu (spacja),10 cyfr z max. trzema separatorami '-'. Program podpowiada co mu się ‘nie podoba’ w linii z
NIP (o ile popełnimy jakiś błąd) i nie zezwoli na fiskalizację drukarki dotąd aż błąd zostanie poprawiony !.

8. Po naciśnięciu ‘T’ drukarka wydrukuje kontrolny paragon z interesującym nas nagłówkiem; poniżej tego
paragonu pojawi się kontrolny wydruk zawierający tylko linię z NIP. Należy sprawdzić ten numer
(UŻYTKOWNIK), uzyskać potwierdzenie na odwrocie tego wydruku właściciela drukarki i dopiero po
uzyskaniu tego potwierdzenia dokonać fiskalizacji naciskając na klawiaturze drukarki klawisz ‘TAK’.

Str. 18
Drukarka Fiskalna POSNET Thermal i 3001
9. Po zakończeniu procesu fiskalizacji (ok. 10 sekund) należy sprawdzić poprawność fiskalizacji (opcja
TESTOWANIE), ‘wyjść’ z programu i uruchomić program ‘nazwa.bat’ (batch file) który to program ‘wyśle’ do
pamięci RAM drukarki pozostałą część nagłówka i wydrukowany zostanie próbny wydruk zawierający cały
nagłówek. (nazwa - nazwa pliku z nagłówkiem podawana podczas uruchamiania programu POSNET.EXE).
10. Od tego momentu urządzenie jest w trybie fiskalnym z możliwością zmiany nagłówka na przyszłość w
przypadku gdy NIP nie ulega zmianie (zapis NIP do pamięci fiskalnej jest operacją nieodwracalną !).

Po każdej fiskalizacji należy o ile jest to konieczne zdefiniować uzgodnione wcześniej stawki PTU (opcja ‘F’ z
programu) – ze względu na aplikacje pisane dla starszych wersji drukarek (firmware < 17.1) zaleca się
programowanie zawsze 4 stawek PTU, dokonać sprzedaży testowej i wykonać RAPORT DOBOWY; sprawdzamy
wtedy czy nagłówek zawiera wszystkie niezbędne informacje ( Nazwę ,adres siedziby i NIP) ze względu na
obowiązujące przepisy oraz czy drukarka po fiskalizacji działa poprawnie (sprzedaż, zapis do modułu raportu).
Zaleca się dołączenie wszystkich wykonanych wydruków do książki serwisowej drukarki.
Podczas operacji opisanych powyżej na dyskietce powstaną następujące pliki (tylko w przypadku ‘ufiskalnienia’
drukarki ) :
• plik nazwa.nag zawierający nagłówek dla RAM drukarki .
• plik nazwa.bat zawierający niezbędne elementy do wysłania do drukarki poprzez odpowiednie złącze treści
nagłówka (w przypadku gdy zostanie on np. ‘utracony’),
• nazwa.RAM zawierający ‘pełny’ nagłówek dla trybu szkoleniowego,
gdzie : nazwa - nazwa pliku podawana na wstępie przy uruchamianiu programu posnet.exe ;

Po fiskalizacji można skopiować użytkownikowi na jego komputer/ dyskietkę pliki ‘nazwa.nag’ oraz ‘nazwa.bat’
i poinformować co zrobić w przyszłości w przypadku utraty/ przekłamania w treści nagłówka.
Brak w RAM nagłówka (czyli nie uruchomienie pliku ‘nazwa.bat’ po fiskalizacji) spowoduje zgłoszenie przez
drukarkę błędu nr 40 w przypadku próby sprzedaży z ‘pustym’ nagłówkiem w RAM drukarki. Identyczny błąd
wystąpi w przypadku utracenia nagłówka (np. błąd pamięci NVR) .

Fragment nagłówka można zapisać zawsze do pamięci RAM deklarując przy uruchamianiu
programu posnet.exe że drukarka jest fiskalna (program nie wymaga wtedy definiowania linii z NIP).
W przypadku zmian w nagłówku jest to jedyna możliwość zmiany jego treści.
Po poprawnym zakończeniu wszystkich operacji drukarka zgłasza się w identyczny sposób jak po
włączeniu zasilania, tj. sygnałem dźwiękowym i sekwencją komunikatów :

‘ Drukarka fiskalna ‘
‘POSNET Thermal/xx.y ‘
.........
‘ --- Do zapłaty --- ‘
‘Suma: 0. ‘
11. Przed uzyskaniem sygnału akustycznego i ww. sekwencji komunikatów:
NIE WOLNO WYŁĄCZAĆ ZASILANIA DRUKARKI, PONIEWAŻ MOŻE TO
SPOWODOWAĆ BŁĘDNĄ FISKALIZACJĘ DRUKARKI !!!.

12. Jedyny błąd, jaki może wystąpić w trakcie fiskalizacji, to błąd zapisu do pamięci fiskalnej, objawiający się
komunikatem:

‘ Błąd zapisu !! ‘
‘ Wyłącz zasilanie. ‘.

Drukarka wymaga w tym przypadku interwencji serwisu producenta (przedstawiciela regionalnego).

13. Prawidłowo sfiskalizowane urządzenie charakteryzuje się następującymi cechami:


• na paragonach oraz na raportach dobowych i okresowych brak jest napisu „niefiskalny” na dole i na górze
paragonu oraz występuje pełne logo fiskalne na środku ostatniej linii ( stylizowane PL ),
• po włączeniu zasilania nie pojawia się żadne dodatkowe ostrzeżenie, w szczególności NIE MA
KOMUNIKATU:
‘Tryb szkoleniowy ! ‘
‘HDR ‘,
który w urządzeniu NIESFISKALIZOWANYM pojawia się po włączeniu zasilania na ok. 0,5s.

Str. 19
Drukarka Fiskalna POSNET Thermal i 3001

5. Uregulowania prawne dotyczące kas rejestrujących.


Serwisanci wykonujący obsługę kas rejestrujących mają obowiązek we własnym zakresie zapoznać się ze
wszelkimi dotychczasowymi uregulowaniami prawnymi dotyczącymi kas rejestrujących oraz powinni śledzić
wszelkie zmiany przepisów w tym zakresie.
W szczególności, należy bezwzględnie zapoznać się z rozporządzeniem Ministra Finansów z dnia 12 maja
1993 w sprawie kryteriów i warunków technicznych, którym muszą odpowiadać kasy rejestrujące, oraz warunków
stosowania tych kas przez podatników (Dz. U. Nr 39, poz. 178, Nr 91, poz. 422 i Nr 115, poz. 511 z 1993 r.).
W załączniku 2 do tego rozporządzenia podano większość informacji ważnych dla prawidłowego wykonywania
serwisu. Przepisy powyższe (link) oraz ich aktualizacje dostępne są na stronie WWW firmy POSNET, czyli pod
adresem:
http://www.posnet.com.pl/przepisy.htm

Poniżej podajemy podstawowe zasady organizacji serwisu POSNET wynikające z w/w przepisów.

1. Podatnicy oraz służby serwisowe obowiązani są poinformować właściwy dla podatnika urząd skarbowy
o zainstalowaniu kasy (w trybie fiskalnym) nie później niż w ciągu 14 dni od dnia zainstalowania (wzory
powiadomień zawarte są na dyskietce serwisowej w katalogu ‘URZAD_SK’). Podczas instalacji serwisant dokonuje
ponadto odpowiednich wpisów do książki kasy rejestrującej.

2. Wykonujący serwis musi co najmniej dwa razy w ciągu roku dokonać sprawdzenia prawidłowości funkcjonowania
kasy u każdego klienta bez jego wezwania oraz odnotowuje ten fakt w książce kasy rejestrującej.

3. Serwis dealera musi być tak zorganizowany, aby zapewniał podjęcie wykonania serwisu w czasie nie dłuższym niż
48 godzin, a zakończenie wykonania serwisu w czasie nie dłuższym niż 14 dni. Wykonujący serwis nie może
jednemu serwisantowi powierzyć do obsługi więcej niż 300 kas rejestrujących.

4. Wykonujący serwis kasy rejestrującej jest obowiązany zamieścić w książce kasy:


a) datę i godzinę żądania interwencji,
b) datę i godzinę rozpoczęcia interwencji,
c) opis stwierdzonych nieprawidłowości,
d) opis stanu plomb,
e) w przypadku konieczności zabrania kasy do punktu serwisowego w celu dokonania naprawy opisać
przyczyny, dla których nie jest możliwa naprawa w miejscu użytkowania kasy, oraz podać datę i godzinę
zabrania kasy do punktu serwisowego,
f) numer ostatnio wystawionego przez kasę dokumentu przed interwencją,
g) numery (początkowy i końcowy) dokumentów sprzedaży wystawionych przez kasę podczas operacji
próbnych (dokumenty te, podpisane przez serwisanta dokonującego naprawę, muszą być przechowywane
przez użytkownika kasy),
h) datę i godzinę ponownego zainstalowania kasy w przypadku, gdy naprawy dokonano w punkcie
serwisowym,
i) datę i godzinę ukończenia interwencji,
j) jakie elementy kasy zostały wymienione podczas naprawy (jeżeli posiadały numery - wpisać),
k) oświadczenie o prawidłowości funkcjonowania kasy (do serwisanta należy przeprowadzenie testów kasy
i potwierdzenie, że po wykonaniu naprawy kasa działa poprawnie) i jej zaplombowaniu pieczęcią
serwisanta z jego numerem identyfikacyjnym,
l) podpis czytelny wykonującego serwis oraz jego pieczęć.

5. Wykonujący serwis nie może dokonywać ingerencji w pamięć kasy rejestrującej bez udziału upoważnionego
pracownika urzędu skarbowego. Czynności tych nie można dokonywać przed odczytaniem i wydrukiem zawartości
pamięci kasy. W związku z tym, w przypadku sygnalizowania przez kasę (drukarkę fiskalną) błędu pamięci fiskalnej
należy, przed zabraniem kasy do punktu serwisowego, bezwzględnie w obecności upoważnionego pracownika
urzędu skarbowego (właściwego dla podatnika), wykonać raport okresowy z całej zawartości pamięci fiskalnej i (po
podpisaniu go przez serwis) wręczyć za pokwitowaniem: 1-wszy egzemplarz podatnikowi a 2-gi pracownikowi
urzędu skarbowego. W przypadku technicznej niemożności wykonania raportu należy sporządzić protokół
podpisany przez pracownika urzędu skarbowego, podatnika i serwisanta.

Str. 20
Drukarka Fiskalna POSNET Thermal i 3001
6. W przypadku konieczności odesłania kasy rejestrującej (drukarki) do serwisu centralnego POSNET lub
przedstawiciela regionalnego należy ten fakt uzgodnić z serwisem firmy POSNET (przedstawicielem regionalnym) .
Serwisant jest ponadto zobowiązany wypełnić książkę serwisową tak aby serwis producenta (przedstawiciela
regionalnego) mógł jednoznacznie stwierdzić jakie są objawy uszkodzenia drukarki.

7. Serwis centralny POSNET (przedstawiciel regionalny) po naprawieniu kasy odsyła kasę do punktu serwisowego
dealera dokonując uzupełniającego wpisu do książki serwisowej dostarczonej razem z drukarką do naprawy. Jeżeli
użytkownik posiada kasę rezerwową to w książce serwisowej kasy rezerwowej należy odnotować fakt zastąpienia
przez tę kasę kasy głównej, a w książce kasy głównej umieścić adnotację o podłączeniu do stanowiska sprzedaży
kasy rezerwowej podając jej nr unikatowy i fabryczny.

8. Serwisant po otrzymaniu naprawionej kasy instaluje ją .

9. Za zainstalowanie kasy rozumie się jej uruchomienie u podatnika w trybie fiskalnym. Wpisów w książce kasy
należy dokonywać tylko dla kasy sfiskalizowanej. Kasy rejestrujące nie pracujące w trybie fiskalnym są traktowane
jak inne urządzenia elektroniczne.

Uchybienia formalne i merytoryczne serwisantów wykonujących w terenie obsługę kas rejestrujących


(drukarek) mogą być podstawą do zerwania umowy dealerskiej, cofnięcia uprawnień autoryzowanego serwisanta, a
w skrajnym przypadku, mogą być podstawą do poniesienia przez dealera i jego serwisanta odpowiedzialności z
tytułu ewentualnych roszczeń zgłaszanych przez urzędy skarbowe i podatników.

W przypadku wątpliwości należy kontaktować się z przedstawicielem regionalnym POSNET lub serwisem
centralnym POSNET (serwis@posnet.com.pl)

Str. 21
Drukarka Fiskalna POSNET Thermal i 3001

6. Programowanie drukarki.

Syntaktyka rozkazów.

W rozdziale 10 podano zestaw sekwencji sterujących. W tym rozdziale wyjaśnimy podstawowe zasady
konstruowania oprogramowania dla drukarki.

Drukarka rozpoznaje 3 kody sterujące: ENQ ($05), BEL ($07), CAN ($18) i DLE ($10) oraz kilkanaście
rozkazów (sekwencji) sterujących. Wszystkie rozkazy mają jednolity format:
ESC P Ps ;...; Ps xx <string> cc ESC \
Po odebraniu prefiksu 'ESC P' ($1B $50) drukarka wczytuje ciąg (maksymalnie do 16-tu) parametrów
numerycznych (Ps ;... ; Ps) - oddzielonych średnikami. Dla niektórych sekwencji parametry te nie muszą
występować. Każdy z nich może mieć maksymalną wartość = 255. Następnie jest odbierany dwuznakowy
identyfikator rozkazu 'xx', przy czym pierwszy znak identyfikatora jest znakiem '$' , '#' lub ‘*’ (wersja apteczna), a
drugi jest małą literą (z zakresu $60..$7E).
Po odebraniu identyfikatora rozkazu drukarka wczytuje ciąg parametrów napisowych lub numerycznych <string>,
którego struktura zależy od konkretnego rozkazu. W obrębie ciągu mogą znaleźć się napisy - wówczas mogą składać
się z dowolnych znaków ASCII z wyłączeniem kodów kontrolnych (np. nazwa towaru). Długość napisu jest dla
konkretnej sekwencji indywidualnie ograniczona (np. nazwa towaru do 40 znaków) a jego terminatorem jest zwykle
kod CR ($0D). Mogą też wystąpić parametry numeryczne składające się z maksymalnie 10 cyfr, zwykle będą to
różnego rodzaju kwoty. Format kwot dopuszcza maks. 8 cyfr w części całkowitej i maksymalnie 2 cyfry części
ułamkowej. Część całkowita jest oddzielona od ułamkowej znakiem ‘.’ . Maksymalna kwota ma postać
99999999.99.
Dopuszczalna i zalecana jest kompresja zer nieznaczących w części całkowitej i ułamkowej, natomiast zerowa część
ułamkowa nie musi być w ogóle wysyłana (np. zamiast '5.00' można wysłać '5.0', '5.' a najlepiej po prostu '5').
Terminatorem wartości liczbowej jest z reguły '/' ($2F) (za wyjątkiem parametru <ilość>). Szersze możliwości
reprezentacji liczb w tej wersji dla ceny i ilości towaru (parametry sekwencji LBTRSLN) omówiono w rozdziale 10
opisującym dokładnie sekwencje drukarki.
Większość sekwencji jest uzupełniona dwoma znakami ('cc') - cyframi HEX (znaki ze zbioru: '0'..'9', 'A'..'F'), które
wyrażają w zapisie heksadecymalnym wartość bajtu kontrolnego liczonego dla całej sekwencji w specjalny sposób:
1. Na początku podstawiamy wartość bajtu kontrolnego:
<byte> := 255;
2. Począwszy od następnego znaku za ESC P obliczamy wartość wyrażenia:
<byte> := <byte> xor <kod danego znaku>;
aż do ostatniego znaku sekwencji (nie licząc znaków 'cc' i "końcówki" ESC \).
3. Tak uzyskany bajt kontrolny wyrażamy postaci w cyfr heksadecymalnych i dopisujemy do sekwencji wraz
z końcówką 'ESC \'.

UWAGA:
Oznaczenie "xor" użyte w procedurze oznacza funkcję logiczną Exclusive Or czyli: ”lub wykluczające”,
inaczej zwane "albo". Funkcja ta działa na pojedynczych bitach bajtu. Dla bitów o różnych wartościach
wynosi 1, a dla takich samych - 0. Jeśli w użytkowanym przez Państwa języku programowania brakuje
funkcji xor, to można ją zdefiniować następująco:

xor (a,b) := (( not a) and b) or (( not b) and a).

Oczywiście użycie nawiasów nie jest tu konieczne ze względu na przestrzeganą chyba we wszystkich
językach siłę wiązania poszczególnych funkcji.

Cyfry kontrolne obliczane w ten sposób dają dobre zabezpieczenie przed przekłamaniami transmisji. Przykładowa
procedura dopisująca te znaki, napisana w języku PASCAL jest pokazana w rozdziale „Ogólne zasady syntaktyki
komend.” Po odczytaniu i sprawdzeniu cyfr kontrolnych drukarka wczytuje "końcówkę" sekwencji w postaci dwóch
znaków: 'ESC \' ($1B $5C). Realizacja sekwencji z reguły rozpoczyna się dopiero po wczytaniu tych dwóch
ostatnich znaków. Jeżeli w trakcie analizy syntaktyki rozkazu wystąpi błąd, to drukarka ignoruje resztę sekwencji aż
do znaków 'ESC \'. Wystąpienie w dowolnym miejscu sekwencji kodu ESC powoduje również zignorowanie
sekwencji do końca, natomiast wystąpienie ciągu ESC P powoduje rozpoczęcie analizy sekwencji od początku.

Str. 22
Drukarka Fiskalna POSNET Thermal i 3001
Wystąpienie kodu CAN powoduje przerwanie interpretacji i analizy sekwencji, powrót do głównej pętli analizy (w
której są interpretowane kody ENQ i BEL oraz rozkazy rozpoczynające się prefiksem ESC P ). Kod DLE jest
rozpoznawany przez drukarkę w każdym momencie.

Obsługa sytuacji błędnych.

W wyniku odebrania przez drukarkę rozkazu sterującego mogą wystąpić następujące sytuacje błędne:
• "nierozpoznany rozkaz" - jeżeli odebrano prefiks ESC P, ale identyfikator sekwencji 'xx' był
niewłaściwy,
• błąd syntaktyki rozkazu (np. błędna lista parametrów Ps ; ... ; Ps), w takiej sytuacji rozkaz jest
ignorowany od momentu, gdzie wystąpił błąd do końca sekwencji,
• błąd wykonania rozkazu (może być np. obliczeniowy lub związany z błędnym działaniem sprzętu
drukarki itd.).
Standardowa obsługa takich sytuacji (zakłada się taką obsługę po włączeniu zasilania) powoduje, że na wyświetlaczu
ukazuje się komunikatu:
'Błąd rozkazu: "xx" '
'Kod błędu : kk ',
gdzie: "xx" jest dwuznakowym identyfikatorem rozkazu a 'kk' jest dwucyfrowym kodem błędu. Wykaz kodów
błędów poszczególnych sekwencji zawarto w rozdziale 10 (łącznie w wykazem sekwencji sterujących). W
przypadku rozkazu "nierozpoznanego" kod błędu wynosi 0 (zero). Po wyświetleniu komunikatu drukarka zatrzymuje
dalsze przetwarzanie znaków z bufora wejściowego i czeka na naciśnięcie klawisza NIE. Po naciśnięciu klawisza
wyświetlacz jest "odświeżany" i zostaje wznowione przetwarzanie. Zwróćmy uwagę, że w trakcie wyświetlania
komunikatu w buforze mogły znaleźć się kolejne rozkazy, które mogą dawać następne komunikaty. Przykładowo,
jeżeli błąd wystąpił na początku transakcji (w sekwencji LBTRSHDR) to kolejne sekwencje (LBTRSLN,
LBDSPDEP oraz LBTREXIT lub TBTRXEND) będą też powodować komunikaty o błędach. Wystąpi zatem seria
komunikatów.
Ten sposób obsługi błędów jest wystarczający w prostych aplikacjach oraz podczas uruchamiania
oprogramowania. W bardziej złożonych przypadkach można zrealizować pełną diagnostykę błędów przez aplikację,
wykorzystując rozkazy ENQ, DLE oraz LBFSTRQ i LBERNRQ. W tym celu należy najpierw wysłać sekwencję
LBSERM:
ESC P 1 #e 88 ESC \
co powoduje zmianę sposobu obsługi błędów przez drukarkę. Komunikaty o błędach zostają w ten sposób
zablokowane. Po wystąpieniu błędu dalsze przetwarzanie nie będzie blokowane (chociaż błędna sekwencja zostanie
zignorowana do końca). Daje to możliwość pełnej diagnostyki przez aplikacje według poniższych zasad.

1.) W odpowiedzi na kod sterujący ENQ ($05) drukarka wysyła jednobajtowy status, postaci:

7 6 5 4 3 2 1 0
0 1 1 0 FSK CMD PAR TRF

w którym bit CMD jest ustawiony, jeżeli ostatnio odebrany rozkaz był zrealizowany poprawnie.
W szczególności bit ten jest kasowany, gdy drukarka odebrała prefiks ESC P (jeżeli rozkaz następujący po
ESC P nie jest żądaniem odesłania statusu LBFSTRQ) oraz ustawiany po poprawnym wykonaniu rozkazu.

2.) W odpowiedzi na kod sterujący DLE ($10) drukarka wysyła jednobajtowy status postaci:

7 6 5 4 3 2 1 0
0 1 1 1 0 ONL PE ERR

gdzie:
ONL = 1: stan "On-Line",
PE = 1: stan "Brak Papieru",
ERR = 1: stan "Błąd mechanizmu/ sterownika".
Zwróćmy uwagę, że kod ten daje komunikaty z zakresu $70..$77, a więc inne niż pozostałe odpowiedzi statusowe (w
tym odpowiedz na ENQ). Kod ten jest realizowany ZAWSZE – nawet w trybie OFF-LINE !

3.) W odpowiedzi na rozkaz żądania wysłania statusu LBFSTRQ:

Str. 23
Drukarka Fiskalna POSNET Thermal i 3001
ESC P Ps #s ESC \

drukarka odsyła ciąg LBFSTRS (jeżeli zaprogramowano 4 stawki PTU):


ESC P 1#X Pe; Pm; Pt; Px; Pf; Pz; Py; Pm; Pd / PTU_A/ PTU_B / PTU_C / PTU_D /
PAR_NUM / TOT_A / TOT_B / TOT_C / TOT_D / TOT_Z / CASH / NNNNNNNNNN ESC \
w którym Pe jest kodem błędu wykonania ostatniego rozkazu (=0 jeżeli sekwencja została wykonana
poprawnie lub nie została rozpoznana), przy czym po wysłaniu ciągu LBFSTRS kod błędu Pe jest
zerowany.

4). W odpowiedzi na zapytanie LBERNRQ :

ESC P #n ESC \
wysyłana jest odpowiedź :
ESC P 1#E Pe ESC \

gdzie Pe jest numerem błędu. Ten rozkaz (LBERNRQ) w odróżnieniu od powyższego (LBFSTRQ) nie powoduje
zerowania numeru błędu Pe i może być wykonywany wielokrotnie.
Zachodzą zatem następujące przypadki:
* CMD = 1, Pe = x - poprawne wykonanie sekwencji (Pe jest nieistotne),
* CMD = 0, Pe = 0 - rozkaz nie został rozpoznany,
* CMD = 0, Pe > 0 - rozkaz został rozpoznany ale w trakcie analizy lub wykonania
wystąpił błąd o kodzie Pe.

Na zakończenie zwróćmy uwagę, że w trakcie wykonania rozkazu teoretycznie może wystąpić "błąd
fatalny" wykonania (np. błąd zapisu do pamięci fiskalnej) - wtedy dalsze działanie drukarki zostaje zawieszone wraz
z komunikatem np.:
'Błąd fatalny testu: '
'ROM RAM RTC DSP FSK '
(druga linia ma postać zależną od rodzaju błędu). W takiej sytuacji odpowiedź na żądanie statusu ENQ lub
LBFSTRQ nie zostanie odesłana (ale drukarka odpowie na żądanie statusu DLE które ‘działa’ także w trybie OFF-
LINE). Podobny przypadek zachodzi w momencie przełączenia drukarki w tryb OFF-LINE (wygaszona lampka
GOTOWA) w wyniku wystąpienia błędu mechanizmu drukującego - np. braku papieru. Z tego względu, w ogólnym
przypadku nie można założyć w oprogramowaniu aplikacyjnym, że odpowiedź na żądanie odesłania statusu
przyjdzie w ściśle określonym czasie. Należy zatem przewidzieć inny niż przekroczenie limitu czasowego
mechanizm wyjścia przez aplikację z powstającej w ten sposób "nieskończonej pętli" (np. przerwanie operacji z
klawiatury) lub przy pomocy kodu DLE. Dodatkowo trzeba zwrócić uwagę, że operacja drukowania raportu
okresowego (inicjowana przez wysłanie sekwencji sterującej) może angażować procesor główny drukarki na bardzo
długi czas. W takiej sytuacji, jeżeli wystąpi błąd sekwencji, to status zostanie odesłany prawie natychmiast,
natomiast w przypadku poprawnego wykonania sekwencji aplikacja może oczekiwać na status przez długi czas.

Ustawianie zegara
Nastawianie / korekcja zegara czasu rzeczywistego jest funkcją, która w zasadzie powinna być realizowana
przez każdą aplikację. Wynika to z faktu, że zegary wbudowane w drukarkę i komputer (w obu przypadkach
stosowany jest rezonator ceramiczny "zegarkowy" 32768 Hz) mają niezbyt dobrą dokładność (szczególnie zegar
komputera klasy PC !) i ich odczyty będą po pewnym czasie znacznie się różniły. Stąd sensowna jest korekcja zegara
drukarki (chociaż z reguły jest on dokładniejszy, gdyż jest regulowany w procesie produkcji) co pewien czas (np. raz
dziennie lub każdorazowo przy uruchamianiu aplikacji). Ponadto daje to zabezpieczenie przed sytuacją
przypadkowego rozprogramowania zegara drukarki (rozładowana bateria!). W tej sytuacji wysłanie czasu i daty z
systemu powoduje jego zaprogramowanie. Zaleca się aby o fakcie ew. korekty zegara decydowała obsługa
stanowiska sprzedaży (program powinien odczytać czas i datę drukarki ; odczytać datę i czas systemowy
komputera i zasygnalizować ‘problem’ różnicy na ekranie monitora). Decyzja o tym co zrobić powinna
należeć do obsługi programu (właściciela urządzenia).

Str. 24
Drukarka Fiskalna POSNET Thermal i 3001
Nastawianie zegara jest realizowane przez sekwencję LBSETCK:
ESC P Py ; Pm ; Pd ; Ph ; Pmn ; Ps $c <check> ESC \
gdzie:
Py; Pm; Pd - data w następującym formacie:
Py = numer roku = 0..99, (dwie najmłodsze cyfry, 1950..2049),
Pm = numer miesiąca = 1..12,
Pd = dzień = 1..31,
Ph; Pmn; Ps - czas w następującym formacie:
Ph = godzina = 0..23,
Pmn = minuta = 0..59,
Ps = sekunda = 0..59 (parametr ignorowany),
<check> - 2 znaki HEX, bajt kontrolny.

Sekwencja jest realizowana w różny sposób, w zależności od tego, czy zegar jest zainicjalizowany czy nie (główny
procesor drukarki podczas sekwencji startowej odczytuje status zegara drukarki i wykrywa stan braku jego
inicjalizacji):

1. Zegar niezainicjalizowany. Po włączeniu zasilania wyświetla się komunikat:


' Błąd zegara RTC '
'Prześlij z systemu ! '
Sekwencja umożliwia w takiej sytuacji ustawienie zarówno daty jak i czasu, z następującymi
ograniczeniami:
• data i czas muszą być formalnie poprawne (procedura kontroli uwzględnia też wszystkie
szczególne przypadki np. można ustawić 29-ty luty tylko dla roku przestępnego),
• nie można ustawić daty wcześniejszej niż data ostatniego zapisu w pamięci fiskalnej (zapisy
w module fiskalnym muszą być uszeregowane według rosnących dat !).
2. Zegar zainicjalizowany. Nie było powyższego komunikatu. W takiej sytuacji nie można zmienić daty,
natomiast korekta czasu jest możliwa. Ponadto dla korekty czasu wymagany jest stan zerowy totalizerów
(czyli korekta zegara jest możliwa tylko bezpośrednio po raporcie dobowym , przed pierwszą transakcją).
Aplikacja może sprawdzić stan zegara wysyłając sekwencję LBSENDCK :

ESC P #c ESC \

Drukarka odsyła stan zegara w następującym formacie:

ESC P 1#C Py;Pm;Pd;Ph;Pmn;0 ESC \

gdzie Py .... Pmn parametry identyczne jak w sekwencji LBSETCK (stan licznika sekund jest odsyłany zawsze jako
równy zero).

Str. 25
Drukarka Fiskalna POSNET Thermal i 3001

Transakcja.

Podstawową funkcją drukarki jest oczywiście rejestracja sprzedaży, czyli transakcji. Realizację transakcji
można podzielić na trzy etapy, realizowane w wyniku przesłania 3 sekwencji sterujących:
* zapoczątkowanie transakcji - sekwencja LBTRSHDR,
* przesłanie kolejnych pozycji sprzedaży - ciąg sekwencji LBTRSLN,
* zatwierdzenie transakcji - sekwencja LBTREXIT.

Po odebraniu sekwencji LBTRSHDR urządzenie przełącza się w tryb "transakcyjny". W trybie tym zachodzą
następujące ograniczenia funkcji drukarki:
* zbiór realizowanych rozkazów ograniczony do:
- LBTRSLN (pozycja paragonu),
- LBDSPDEP (Kaucja pobrana).
- LBTREXIT (koniec transakcji),
- LBTRXEND (koniec transakcji z formami płatności),
- LBDSP (obsługa wyświetlacza LCD),
- LBFSTRQ (żądanie wysłania statusu),
- LBERNRQ (pytanie o numer błędu),
- kody sterujące ENQ , BEL, CAN, DLE,

Tryb transakcyjny jest sygnalizowany w odpowiedziach na żądanie wysłania statusu w następujący sposób.
1.) W odpowiedzi na kod sterujący ENQ ($05), postaci:

7 6 5 4 3 2 1 0
0 1 1 0 FSK CMD PAR TRF

bit PAR = 1 a bit TRF= 0 (zostaje wyzerowany po odebraniu LBTRSHDR).


2.) W odpowiedzi na rozkaz żądania wysłania statusu LBFSTRQ:
ESC P Ps #s ESC \
w postaci ciągu LBFSTRS (dla zdefiniowanych czterech stawek PTU):
ESC P 1#x Pe ; Pm ; Pt ; Px ; 1 ; Pz ; Py ; Pm ; Pd / PTU_A / PTU_B / PTU_C / PTU_D /
PAR_NUM / TOT_A / TOT_B / TOT_C / TOT_D / TOT_Z / CASH / NNNNNNNNNN ESC \

jest:
Pt = 1 - tryb transakcyjny,
Px = 0 - stan znacznika TRF.

Sekwencja LBTRSHDR może występować w dwóch formatach:


ESC P Pl $h <check> ESC \
lub:
ESC P Pl ; Pn $h <linia1> CR <linia2> CR <linia3> CR <check> ESC \

Najbardziej istotne znaczenie ma występujący w obu formatach parametr Pl. Parametr ten wybiera jeden z dwóch
możliwych trybów realizacji transakcji:
1.) Pl = 0 : tzw. tryb "On-Line". W trybie tym po odebraniu poprawnej sekwencji LBTRSHDR natychmiast
jest drukowany nagłówek paragonu zawierający: dane podatnika, datę oraz ewentualnie dodatkowe 3 linie
przesłane przez aplikację. Od tego momentu urządzenie pamięta, że drukowanie paragonu zostało
rozpoczęte, stąd anulowanie transakcji przez aplikację lub wyłączenie zasilania przed jej zakończeniem
powoduje wydrukowanie napisu: ' paragon anulowany !' oraz odcięcie anulowanego paragonu
(POSNET 3001). Anulowanie paragonu zachodzi również automatycznie jeżeli otwarta transakcja nie
zostanie zakończona w ciągu 15 minut .
W trybie "On-Line" kolejne linie transakcji są drukowane natychmiast po odebraniu (jeżeli nie ma błędu).
Z tego względu przewidziano możliwość anulowania już wydrukowanej pozycji (tzw. "stornowanie").
W tym celu aplikacja wysyła jeszcze raz dane błędnej linii (w sekwencji LBTRSLN o nieco

Str. 26
Drukarka Fiskalna POSNET Thermal i 3001
zmodyfikowanym formacie). Linia taka jest drukowana ponownie i poprzedzona opisem: '#storno#',
ponadto kwota wartości pozycji jest w takiej sytuacji drukowana ze znakiem '-'. Istnieje również możliwość
anulowania całej transakcji.
Ten tryb realizacji transakcji charakteryzuje się dużą szybkością działania kasy. Przykładowo na
stanowiskach "sprzedaży przelotowej" (duże sklepy samoobsługowe) w zasadzie transakcje muszą być
realizowane w trybie "On-Line" - ponieważ z reguły jest nie do przyjęcia, aby "blokować" kasę na czas
wydruku całego paragonu (co może trwać kilkadziesiąt sekund przy dużej ilości pozycji). Ponadto długość
całego paragonu - ilość pozycji nie jest w zasadzie limitowana (może być maksimum 255 pozycji - co
wynika z reguł syntaktyki). Wadą tego rozwiązania jest konieczność "stornowania" pozycji w przypadku
błędu. Dodajmy, że drukarka nie sprawdza, czy pozycja "stornowana" wystąpiła na paragonie wcześniej,
lub czy np. odjęta wartość jest poprawna (np. czy nie odejmujemy większej ilości towarów od poprzednio
sprzedanej). Wynika to z faktu, że paragon drukowany w trybie "On-Line" nie jest w całości
magazynowany w pamięci. Oczywiście są na bieżąco kontrolowane kwoty sprzedaży w grupach
podatkowych, które nie mogą stać się ujemne w wyniku "stornowania" - wystąpi wtedy błąd #22 sekwencji
LBTRSLN. W trybie "On-Line" w momencie zatwierdzenia transakcji (po sekwencji LBTREXIT)
drukowana jest tylko stopka paragonu - co powoduje jej szybkie zakończenie.
2.) Pl > 0 : tzw. tryb "blokowy", "Off-Line". W tym trybie cała zawartość paragonu jest buforowana
w pamięci drukarki. Po odebraniu sekwencji LBTRSHDR do pomocniczego bufora wpisywany jest
nagłówek paragonu. Podobnie każda pozycja transakcji (sekwencja LBTRSLN) jest sprawdzana,
formatowana stosownie do postaci właściwej do wydruku i wpisywana do bufora. Dotyczy to również
stopki paragonu generowanej po sekwencji LBTREXIT. Tak więc cały paragon jest buforowany w pamięci
głównego procesora drukarki w postaci takiej, jak ma wyglądać na wydruku. Długość bufora wynosi 3840
bajtów - co limituje długość drukowanego w ten sposób paragonu. Z tego względu ilość pozycji zawartych
na paragonie w trybie "blokowym" ograniczono arbitralnie do 48. Ponadto w szczególnych przypadkach
(maksymalna długość nazw we wszystkich pozycjach) teoretycznie może pojawić się przepełnienie bufora
drukarki (błąd #24 sekwencji LBTREXIT).
Po zatwierdzeniu transakcji cały paragon jest transmitowany do bufora sterownika mechanizmu
drukującego (równocześnie ze zwiększeniem stanu totalizerów). Po poprawnym zakończeniu transmisji
sterownik mechanizmu rozpoczyna drukowanie paragonu, a procesor może już rozpocząć dalszą analizę
rozkazów sterujących.
Zwróćmy uwagę, że w przypadku wykorzystania trybu "blokowego" może zachodzić przepełnienie bufora
wejściowego interfejsów drukarki - ma on długość 2 kB, podczas gdy paragon zawierający 48 pozycji, wraz
z sekwencją rozpoczynającą i kończącą może wymagać wysłania większej liczby znaków. Z tego względu w tym
przypadku zastosowanie protokołu transmisji XON-XOFF jest niezbędne !

Parametr Pn sekwencji LBTRSHDR określa ilość dodatkowych linii tekstu, które umieszcza aplikacja na
paragonie bezpośrednio za nagłówkiem Jeżeli Pn = 0 , lub parametr nie występuje, to linie nie są drukowane.
Parametr Pn może wynosić maksymalnie 3. Umożliwia to wydrukowanie maksymalnie 3 dodatkowych linii
wysłanych przez aplikację jako napisy <linia1>, <linia2> i <linia3>. Mogą to być dowolne informacje, np.
adnotacja na temat numeru faktury / rachunku uproszczonego, jeżeli paragon fiskalny jest drukowany łącznie z tego
rodzaju dokumentem. Napisy <linia1>..<linia3> nie mogą zawierać żadnych znaków sterujących (mogą być
natomiast polskie litery w kodzie MAZOWIA).

UWAGA:
Nie można wysyłać nazwy firmy i jej adresu w obrębie trzech dodatkowych linii. Dane te muszą być
bezwzględnie umieszczone w nagłówku zapisanym w pamięci fiskalnej (nieulotnej pamięci RAM) -
ponieważ muszą również znaleźć się na raporcie dobowym i okresowym. Serwis jest zobowiązany do
kontroli, czy w trakcie fiskalizacji w nagłówku został zapisany prawidłowo adres i nazwa firmy (RAM)
oraz numer NIP (moduł FSK) !

Po włączeniu trybu transakcyjnego aplikacja przesyła do drukarki ciąg sekwencji LBTRSLN, które definiują kolejne
pozycje transakcji:
ESC P Pi $l <nazwa> CR <ilość> CR <ptu> / CENA / BRUTTO / <check> ESC \

Parametr Pl to kolejne numery pozycji paragonu = 1,2... . Jeżeli został włączony tryb "blokowy" - i została tym
samym określona w sekwencji LBTRSHDR ilość pozycji sprzedaży - musi zostać przesłana dokładnie taka ilość
pozycji, o kolejno rosnących numerach. Po przesłaniu każdej linijki można testować poprawność jej odebrania
(realizacji rozkazu) i w przypadku błędu np. wykonać retransmisję - ale z tym samym numerem. W trybie
"On-Line" parametr Pl może być równy 0, wtedy linijka zostanie zinterpretowana jako pozycja "stornowana".

Str. 27
Drukarka Fiskalna POSNET Thermal i 3001
W takiej sytuacji sekwencja numerów linii również musi zachować "ciągłość", np. poprawna jest sekwencja: 1,2,0,4
(gdzie trzecia linijka jest "stornowana"). Pozostałe parametry sekwencji to:
<nazwa> = ciąg dowolnych znaków drukowalnych, długości nie większej niż 40 znaków, interpretowany
jako nazwa artykułu (drukowany na paragonie bez zmian),
<ilość> = ciąg nie więcej niż 16-u znaków drukowany na paragonie bez zmian w polu zarezerwowanym dla
ilości towaru (musi spełniać pewne reguły syntaktyki - por. rozdz. F ),
<ptu> = jeden znak = 'A'...'F' lub ' ' lub 'Z' (oba ostatnie oznaczenia dla towarów zwolnionych od podatku)
- kod stawki PTU,
BRUTTO = wartość pozycji sprzedaży BRUTTO, maksymalnie 10 cyfr, syntaktyka zgodnie z opisanymi
wyżej regułami dla wszystkich kwot, musi być > 0,
CENA = cena jednostkowa towaru, musi spełniać reguły syntaktyki dla kwot (dokładny opis w rozdziale F),
<check> = dwie cyfry kontrolne, obliczone według reguł opisanych na wstępie.

UWAGA: począwszy od wersji 17.1 istnieje możliwość wzbogacenia linii o RABAT(DOPŁATĘ) kwotowy lub
procentowy (patrz opis komendy LBTRSLN na stronie 78).

Po odebraniu każdej linii drukarka sprawdza jej poprawność pod względem formalnym, następnie kontroluje
zgodność nazwy towaru i kodu stawki PTU. Jest to realizowane poprzez odszukanie w bazie danych drukarki kodu
stawki PTU dla danej nazwy, przy czym istotne jest 40 znaków nazwy (z wyłączeniem spacji wewnątrz nazwy,
a także nie są rozróżniane małe i duże litery). Drukarka fiskalna nie wymaga specjalnego "ładowania bazy danych" -
informacja o towarach jest automatycznie aktualizowana podczas sprzedaży. Jeżeli w trakcie realizacji transakcji
zostanie napotkany nowy artykuł (którego jeszcze nie ma w bazie), jego nazwa oraz kod stawki PTU zostanie
dopisany do bazy danych. Późniejsze pojawienie się identycznej nazwy powoduje skontrolowanie zgodności kodu
stawki PTU z zapamiętaną wcześniej wartością. Drukarka dopuszcza sytuację, gdy stawka PTU dla danego towaru
zostanie zmniejszona lub zwiększona (np. przesunięcie towaru z grupy A do B lub z B do A). Zabroniona jest
natomiast operacja polegająca na czasowym obniżeniu stawki podatkowej np.: towar z grupy A jest sprzedawany w
grupie B (taką sekwencję zdarzeń odnotuje drukarka !) a potem znowu próbujemy go sprzedać w grupie A. Podczas
próby ponownej sprzedaży towaru w grupie A transakcja zostanie zablokowana (sprawdzenie polega na porównaniu
wartości liczbowych zakodowanych w drukarce):
* w trybie "On-Line" pojawią się (bezpośrednio za linią gdzie wykryto taką sytuację) napisy:
| ! błąd PTU ! |
| paragon anulowany ! |,
i transakcja zostanie anulowana (tryb transakcyjny wyłączony),
* w trybie "blokowym" zostanie zgłoszony błąd sekwencji LBTRSLN #18.
Podobna sytuacja wyniknie, gdy towar z grupy B będziemy sprzedawać przykładowo jako zwolniony Z, a potem
znowu w grupie B.
Algorytm obsługi bazy danych jest wysoce efektywny i nie powoduje zauważalnego spowolnienia tempa
działania drukarki nawet przy znacznej liczbie towarów - czas analizy jest w każdej sytuacji znacznie krótszy niż
czas drukowania linii !
Dodajmy ponadto, że maksymalna ilość towarów w bazie danych może wynosić nawet 100.000. Baza danych
drukarki jest schowana w pamięci RAM podtrzymanej bateryjnie.
Opisywana wersja oprogramowania drukarki realizuje ponadto kontrolę poprawności wyrażenia :
< cena > * < ilość > = < wartość >
zgodnie z regułami opisanymi na stronie 78 (opis sekwencji LBTRSLN ).
Jeżeli test stawki PTU wypadł pozytywnie oraz linia jest zgodna pod względem formalnym, to zawartość
pozycji sprzedaży przechodzi przez specjalny algorytm formatujący ją do wydruku. Algorytm ten tworzy jedną lub
dwie linie tekstu -zależnie od tego, czy wszystkie informacje zmieszczą się w 40 znakach dostępnych w linii, czy nie.
W przypadku "krótkich" nazw i niezbyt dużych wartości wykorzystanie tej opcji prowadzi do znacznej oszczędności
papieru i zwiększenia szybkości działania kasy. Jeżeli z kolei zależy nam na jednolitej formie wydruków można
"zablokować" ten algorytm wymuszając "długie nazwy" (np. dopełnienie spacjami do około 30..40 znaków)
powodując zawsze wydruk pozycji paragonu w dwóch linijkach.
W trybie "On-Line" sformatowana linia jest od razu drukowana, a pierwsze 20 znaków nazwy artykułu
pojawia się w górnej linii wyświetlacza LCD. W drugiej linii automatycznie jest aktualizowana suma transakcji;
suma ta jest także wyświetlana na wyświetlaczu LED dla klienta. Operacje te nie wykonują się w trybie blokowym.
W obu trybach zwiększana jest naliczana przez drukarkę suma transakcji oraz kwota sprzedaży
w wyspecyfikowanej grupie podatkowej (jeżeli nie jest to operacja "storno" - dozwolona tylko w trybie "On-Line"
– wtedy sumy te są zmniejszane).

Str. 28
Drukarka Fiskalna POSNET Thermal i 3001
Po wysłaniu wszystkich linii transakcji (w trybie "blokowym" ich ilość musi być równa zadeklarowanej)
aplikacja może zatwierdzić lub anulować transakcję. Jest to ostatni, najważniejszy, etap realizacji transakcji. W tym
celu wysyłana jest sekwencja LBTREXIT, która może mieć różne formaty:
ESC P 0 $e <check> ESC \ - anulowanie transakcji,

ESC P 1 ; Pr $e <kod> CR WPLATA / TOTAL / <check> ESC \ - zatwierdzenie transakcji.


W trybie "blokowym" anulowanie transakcji nie powoduje żadnej akcji oprócz wyłączenia trybu
transakcyjnego, natomiast w trybie "On-Line" drukowany jest napis:
| paragon anulowany !|
i paragon zostaje odcięty (POSNET 3001). Sekwencja w drugim z wymienionych formatów sygnalizuje, że aplikacja
zmierza do zatwierdzenia transakcji. Parametr Pr jest interpretowany jako rabat procentowy - jeżeli nie jest
stosowany to można go nie wysyłać, sekwencja ma wtedy format:
ESC P 1 $e <kod> CR WPLATA / TOTAL / <check> ESC \
Pozostałe parametry mają następujące znaczenie:
<kod> = 3 znaki drukowalne (kod terminala/kasjera) drukowane w stopce paragonu bez zmian,
WPLATA = kwota wpłacona przez klienta,
TOTAL = łączna należność .
<check> = dwie cyfry kontrolne, obliczone według reguł opisanych na wstępie.

UWAGA: sekwencja LBTREXIT ma w tej wersji jeszcze inne warianty, opisane na stronie 81.

W tym momencie drukarka sprawdza szereg warunków określających poprawność transakcji (por. kody błędów
sekwencji LBTREXIT strona 80 ). Do najważniejszych należy zgodność kwoty należności TOTAL z obliczoną
przez drukarkę w trakcie transakcji. Jeżeli nie wykryto żadnego błędu, to transakcja zostaje zatwierdzona przez
drukarkę. W trybie "On-Line" jest drukowana stopka transakcji, natomiast w trybie "blokowym" cały paragon jest
przesyłany do sterownika drukarki. Równocześnie zwiększany jest stan totalizerów oraz ustawiany znacznik TRF i
kasowany tryb transakcyjny w odpowiedziach statusowych na rozkazy ENQ i LBFSTRS:
1.) W odpowiedzi na kod sterujący ENQ ($05) ustawiany jest w bajcie odpowiedzi bit PAR=0 a bit TRF=1,
2.) W odpowiedzi na LBFSTRS:
ESC P 1#x Pe ; Pm ; Pt ; Px ; 1 ; Pz ; Py ; Pm ; Pd / PTU_A / PTU_B / PTU_C / PTU_D /
PAR_NUM / TOT_A / TOT_B / TOT_C / TOT_D / TOT_Z / CASH / NNNNNNNNNN ESC \
jest odsyłane:
Pt = 0 : tryb transakcyjny WYŁĄCZONY,
Px = 1 : (stan znacznika TRF).
Znacznik TRF jest "nieulotny", tzn. po poprawnym zatwierdzeniu transakcji, nawet jeżeli zostanie wyłączone
zasilanie, to drukarka "pamięta", że ostatnia transakcja była poprawna. Dodajmy, że przerwanie drukowania
paragonu przez awarię zasilania 220V również nie jest groźne - ponieważ status i zawartość bufora sterownika
mechanizmu drukującego również są podtrzymywane przez baterię.

UWAGA: przez awarię zasilania należy rozumieć zanik napięcia 220V na wejściu zewnętrznego zasilacza
drukarki THERMAL lub 3001. Wyłączanie drukarki w trakcie realizowania wydruków przełącznikiem
umieszczonym z tyłu urządzenia jest NIEDOPUSZCZALNE !

Reasumując - jeżeli po wysłaniu sekwencji LBTREXIT drukarka zacznie drukować paragon (w trybie
"blokowym") lub stopkę paragonu (w trybie "On-Line") to jest pewność, że transakcja została zarejestrowana w
totalizerach, a paragon zostanie poprawnie wydrukowany (z wyjątkiem oczywiście sytuacji awaryjnych, np. końca
papieru /paragon zostanie dokończony po zmianie papieru/ lub uszkodzenia mechanizmu).

Str. 29
Drukarka Fiskalna POSNET Thermal i 3001

Tryby pracy drukarki


Drukarka charakteryzuje się dwoma trybami pracy :
• pracą w trybie szkoleniowym,
• oraz pracą w trybie fiskalnym.
W zasadzie w każdym z tych trybów drukarka zachowuje się identycznie za wyjątkiem:
• w trybie szkoleniowym wykonanie raportu dobowego nie związane jest z zapisem informacji do modułu
fiskalnego;
• w trybie szkoleniowym raport okresowy generowany przez drukarkę ma zawsze taki sam format (niezależnie
od okresu którego dotyczy raport); wynika to z faktu, że raport okresowy jest drukowany zawsze na
podstawie informacji zawartych w module fiskalnym (w trybie szkoleniowym brak jest informacji
o sprzedaży - jedyną informacją, która jest w module jest informacja o stawkach PTU umieszczona przez
producenta ) .W związku z powyższym pozycje z informacją o sprzedaży mają zawsze wartość zero.
• w trybie szkoleniowym na początku i na końcu paragonu drukowane są napisy ‘# niefiskalny’.
• w trybie szkoleniowym zablokowany jest zapis jakichkolwiek informacji do modułu fiskalnego .
• zmiana stawek PTU zapisuje się w sposób nietrwały o ile w tzw. setupie drukarki nie zostanie zadeklarowane
‘pobieranie’ stawek w trybie szkoleniowym z pamięci RAM. Jest to możliwe po wejściu w tryb serwisowy
drukarek. Wejście w ten tryb polega na wciskaniu jednocześnie klawiszy NIE i TAK podczas włączania
drukarki i przestawienie w opcji „KONFIGURACJE/ STAWKI PTU” kursora na pole ‘RAM’. Po takiej
operacji należy pamiętać o zaprogramowaniu stawek PTU w drukarce; w przeciwnym razie po włączeniu
drukarki przyjmie ona jako wiążące stawki zapisane w pamięci fiskalnej.

Str. 30
Drukarka Fiskalna POSNET Thermal i 3001
7. Wykaz komunikatów wyświetlanych na wyświetlaczu LCD drukarki.

Błędy fatalne (powodują konieczność wyłączenia urządzenia).

W każdym z wymienionych niżej przypadków dalsza praca urządzenia jest zablokowana. Stan ten jest
sygnalizowany przez migotanie diod SIEĆ i BŁĄD oraz przerywany sygnał akustyczny, trwający 10 sekund. Sygnał
akustyczny można wyłączyć klawiszem NIE, ale skasowanie tego stanu nie jest możliwe. Można jedynie wyłączyć
zasilanie, odczekać kilka sekund i włączyć ponownie. Powtórzenie się po ponownym włączeniu sytuacji błędnej
wskazuje na konieczność wezwania serwisu.

Komunikat:
'Błąd fatalny testu: '
'ROM RAM RTC DSP FSK '
(ponadto migotanie diod SIEĆ i BŁĄD oraz przerywany sygnał dźwiękowy).
Przyczyna:
Wystąpił błąd układu elektronicznego podczas testu wstępnego drukarki lub podczas okresowego (co kilka
sekund) 'odpytywania' urządzeń przez główny procesor drukarki. Druga linia wyświetlacza zawiera co
najmniej jeden w powyższych opisów błędu, które mają następujące znaczenie:

• ROM: błąd sumy kontrolnej pamięci ROM programu (może wystąpić tylko w trakcie testu wstępnego),
• RAM: błąd testu RAM procesora głównego (nie dotyczy bazy danych, może również wystąpić tylko
podczas testu wstępnego),
• RTC: błąd komunikacji z wbudowanym zegarem czasu rzeczywistego (może wystąpić w dowolnym
momencie),
• DSP: błąd komunikacji z wyświetlaczem LED (może wystąpić w dowolnym momencie),
• FSK: błąd komunikacji z modułem pamięci fiskalnej (może wystąpić w dowolnym momencie),

Sposób usunięcia:
Nieusuwalny. Można tylko wyłączyć zasilanie. Jeżeli po ponownym włączeniu uzyskamy podobny
komunikat, to należy wezwać serwis.

Komunikat:
'Brak stawek PTU lub '
'numeru unikatowego! '
(ponadto migotanie diod SIEĆ i BŁĄD oraz przerywany sygnał dźwiękowy).
Przyczyna:
Pamięć fiskalna urządzenia jest błędnie zainicjalizowana - brak jest w niej zapisu numeru unikatowego
urządzenia i/lub nie ma zapisanego ani jednego rekordu zmiany stawek PTU - przez co nie są one
zdefiniowane. Ponieważ dane te są wpisywane w procesie produkcji, komunikat ten w zasadzie nie
powinien się pojawić w trakcie normalnej eksploatacji. Błąd ten może pojawić się tylko bezpośrednio po
włączeniu urządzenia.
Sposób usunięcia:
Nieusuwalny. Można tylko wyłączyć zasilanie. Jeżeli po ponownym włączeniu uzyskamy podobny
komunikat, to należy wezwać serwis.

Komunikat:
' Awaria drukarki '
' Wyłącz zasilanie. '
(ponadto migotanie diod SIEĆ i BŁĄD oraz przerywany sygnał dźwiękowy).
Przyczyna:
W tej wersji drukarki komunikat w zasadzie nie powinien się pojawić. Pojawienie się może wskazywać
na błędne zadziałanie oprogramowania (np. w wyniku zakłócenia zasilania).
Sposób usunięcia:
Nieusuwalny. Można tylko wyłączyć zasilanie. Jeżeli po ponownym włączeniu (szczególnie po ponowieniu
próby drukowania) uzyskamy podobny komunikat, to należy wezwać serwis.

Str. 31
Drukarka Fiskalna POSNET Thermal i 3001
Komunikat:
' Błąd zapisu !! '
' Wyłącz zasilanie. '
(ponadto migotanie diod SIEĆ i BŁĄD oraz przerywany sygnał dźwiękowy).
Przyczyna:
Wystąpił błąd zapisu do pamięci fiskalnej. Błąd może wystąpić jedynie w urządzeniu sfiskalizowanym lub
w trakcie fiskalizacji, podczas operacji związanej z trwałym zapisem danych w module fiskalnym
(fiskalizacja, raport dobowy, zmiana stawek PTU ).
Sposób usunięcia:
Nieusuwalny. Można tylko wyłączyć zasilanie. Jeżeli po ponownym włączeniu zasilania pojawi się
komunikat:
' Tryb szkoleniowy ! '
' ERR ',
to znaczy, że istotnie wystąpił błąd zapisu do pamięci fiskalnej (teraz jest błąd danych w pamięci fiskalnej)
i należy bezwzględnie wezwać serwis (dalsza eksploatacja urządzenia w trybie fiskalnym nie jest możliwa).

Komunikaty błędów mechanizmu drukującego.

Komunikaty z tej grupy mogą pojawić się jedynie w trakcie drukowania. Jeżeli bufor drukarki zawiera
dane, które nie zostały wydrukowane do momentu ostatniego wyłączenia zasilania - komunikat może również
pojawić się w momencie ponownego włączenia drukarki - ponieważ drukarka musi zakończyć poprawnie rozpoczętą
operację drukowania (nawet jeżeli w międzyczasie zanikło zasilanie). W każdym z wymienionych poniżej
przypadków drukarka przechodzi w stan NIE GOTOWA (gaśnie lampka GOTOWA), zostaje włączona dioda BŁĄD
oraz przerywany sygnał dźwiękowy (który trwa 10 sekund, ale można go wyłączyć dowolnym klawiszem). W stanie
NIE GOTOWA dane przychodzące z interfejsu RS-232 są buforowane, ale nie są przez drukarkę przetwarzane. W
stanie OFF-LINE drukarka nie odpowiada na żądanie wysłania statusu ENQ przez interfejs RS-232 (ale odpowiada
na żądanie odesłania statusu DLE) o czym należy pamiętać opracowując aplikację (możliwość "zawieszenia"
aplikacji). W tym stanie klawisz WYSUW powoduje uruchomienie przesuwu papieru (pojedyncze przyciśnięcie o
jedną linię, przytrzymanie na dłuższy czas powoduje "auto repetycję" wysuwu). Po usunięciu przyczyny klawiszem
NIE przełączamy drukarkę z powrotem w stan GOTOWA.

Komunikat:
'Błąd mechanizmu lub '
' otwarta pokrywa ! ' (POSNET 3001, POSNET 2000)
lub
'Błąd mechanizmu lub '
' podniesiona dźwignia ' (POSNET Thermal, POSNET Beetle 20)

(ponadto migotanie diody BŁĄD oraz przerywany sygnał dźwiękowy).


Przyczyna:
Podczas drukowania nastąpiło zablokowanie silnika napędu karetki. Ponieważ mikroprzełącznik (POSNET
3001 i POSNET 2000) kontrolujący zamknięcie pokrywy jest połączony szeregowo z silnikiem, dlatego
błąd ten może zachodzić w jednym z przypadków:
1. Pokrywa drukarki nie jest prawidłowo zamknięta (POSNET 3001, POSNET 2000).
2. Wystąpiła wadliwa praca mikro przełącznika (nie kontaktuje mimo przekręconego kluczyka).
3. Nastąpiło mechaniczne zablokowanie napędu głowicy (czasem zdarza się zahaczenie igły głowicy, jeżeli
np. papier jest pomarszczony lub uszkodzony, zwłaszcza, jeżeli głowica jest zbyt mocno dosunięta do
papieru).
Sposób usunięcia:
Zależy od tego, który z wyżej wymienionych przypadków ma miejsce. Należy sprawdzić domknięcie zamka
(przypadek 1), ewentualnie wyregulować działanie mikro przełącznika (w przypadku 2). W przypadku
zaczepienia igły o papier, należy odsunąć maksymalnie głowicę i wysunąć papier. Ustawić mniejszy docisk
głowicy dla zapobieżenia powtórzenia się awarii. Po usunięciu awarii nacisnąć klawisz NIE, drukarka
powinna rozpocząć (kontynuować) drukowanie.

Str. 32
Drukarka Fiskalna POSNET Thermal i 3001

Komunikat:
' Brak papieru ! '
' '
(ponadto migotanie diody BŁĄD oraz przerywany sygnał dźwiękowy).

Przyczyna:
Koniec lub brak papieru. Komunikat pojawia się tylko, jeżeli została zainicjowana operacja drukowania.
Jeżeli jest brak papieru, ale drukarka nie drukuje, to komunikat o błędzie nie jest zgłaszany, ale możliwość
przełączenia drukarki w stan GOTOWA jest zablokowana.
Sposób usunięcia:
Założyć papier zgodnie z instrukcją zakładania papieru umieszczoną na obudowie obcinacza drukarki.
Wsunięcie papieru do mechanizmu następuje przez naciśnięcie klawisza TAK (wysuw oryginału) lub R.O.
(wysuw kopii). Po naciśnięciu klawisza NIE drukarka powinna kontynuować drukowanie.

Komunikat:
'Błąd sterownika '
'Kod = xx '
(ponadto migotanie diody BŁĄD oraz przerywany sygnał dźwiękowy)
Przyczyna:
Wystąpił jeden z możliwych błędów układu elektronicznego sterownika drukarki paragonowej, 'xx' jest
kodem błędu, który stanowią dwie cyfry heksadecymalne przedstawiające odczytany z drukarki bajt
statusowy. Znaczenie poszczególnych bitów składających się na wartość bajtu kodu błędu jest następująca:
Kod = 01 : błąd napięcia +5V lub wyładowana bateria ,
Kod = 04 : błąd napięcia zewnętrznego zasilacza (25V),
Kod = 08 : przegrzanie głowicy,
Kod = 10 : zacięcie obcinacza (POSNET 3001 i POSNET 2000).
Sposób usunięcia:
Jeżeli naciskanie klawisza ”NIE” nie powoduje skasowania komunikatu oraz przejścia drukarki w stan
GOTOWA, albo po wznowieniu operacji drukowania komunikat ten powtarza się, to urządzenie (lub
zewnętrzny zasilacz) wymaga interwencji serwisu.

Ostrzeżenia.

Komunikaty z tej grupy sygnalizują pewne stany awaryjne urządzenia umożliwiające zwykle jego dalszą
pracę (ewentualnie z wyłączeniem trybu fiskalnego). Służą zatem do poinformowania użytkownika bądź serwisu
o zaistnieniu pewnej sytuacji. W pewnych przypadkach przyczyna komunikatu może być usunięta przez urządzenie
automatycznie, w innych może je usunąć aplikacja, w jeszcze innych konieczna jest interwencja serwisu. W każdej
sytuacji dalsze działanie drukarki jest wstrzymywane aż do naciśnięcia klawisza NIE.

Komunikat:
' Tryb szkoleniowy ! '
'HDR FULL ERR CLR'
(ponadto krótki sygnał dźwiękowy).
Przyczyna:
Jest to informacja dla użytkownika, że drukarka nie może pracować w trybie fiskalnym. Druga linia
komunikatu wskazuje na przyczynę:
HDR : nie jest wpisany nagłówek (lub NIP) do pamięci fiskalnej, stan normalny dla urządzenia w trybie
szkoleniowym,
FULL: nastąpiło całkowite zapełnienie pamięci fiskalnej,
ERR : wystąpił błąd danych w pamięci fiskalnej,
CLR : została przekroczona dopuszczalna ilość zerowań RAM (to jest 200).

Str. 33
Drukarka Fiskalna POSNET Thermal i 3001
Komunikat:
' Tryb szkoleniowy ! '
'HDR '
sygnalizujący stan prawidłowy w urządzeniu niesfiskalizowanym; jest wyświetlany po włączeniu zasilania
przez 0.5 sekundy i usuwany automatycznie.
Sposób usunięcia:
Zależy od przyczyny. Błędy: FULL, ERR, CLR wymagają bezwzględnie interwencji serwisu i ewentualnie
wymiany urządzenia na nowe. Dalsza praca urządzenia - w trybie szkoleniowym - jest możliwa po
naciśnięciu klawisza NIE z wyłączeniem realizacji transakcji !! (możliwe jest drukowanie raportów,
badanie statusu itp.).

Komunikat:

' Błąd pamięci NVR '


' ( Naciśnij NIE ) '
Przyczyna:
Mogą być dwie możliwe przyczyny:
1. Wystąpił błąd w obszarze danych pamięci podtrzymanej bateryjnie, wykorzystywanym podczas
drukowania raportu kasy / zmiany. W tej sytuacji następujące informacje zostaną zainicjalizowane
automatycznie w ustalony stan początkowy:
- znacznik TRF (ostatnia transakcja poprawna) = 0,
- ilość paragonów / dokumentów niefiskalnych = 0,
- stan kasy = 0,
- wpłaty do kasy = 0,
- wypłaty z kasy = 0,
- ilość paragonów fiskalnych (podczas zmiany !) = 0,
- ilość paragonów anulowanych = 0,
- ilość stornowanych pozycji = 0,
- obrót w trakcie zmiany = 0,
- data / czas rozpoczęcie zmiany = aktualna data / czas,
2. Nastąpiło przekłamanie nagłówka zapisanego w pamięci RAM podtrzymanej bateryjnie, nagłówek zostanie
zatem skasowany i powinien być przesłany ponownie przez aplikację.
Sposób usunięcia:
Błąd jest usuwany automatycznie. Naciśnięcie klawisza NIE usuwa komunikat i umożliwia dalszą pracę
drukarki .

1. Jeżeli komunikat pojawia się permanentnie po każdorazowym włączeniu zasilania, to należy oddać
urządzenie do serwisu .
2. Skasowanie nagłówka zapisanego w RAM wymaga jego odtworzenia w trybie fiskalnym pracy
drukarki (jeżeli podczas fiskalizacji w module fiskalnym został zapisany tylko NIP) - w tej sytuacji
sprzedaż będzie zablokowana (błąd #40 sekwencji LBTRSHDR).
3. Komunikat ten wymaga dosłania do drukarki daty i czasu ponieważ ‘rok ‘ zegara przechowywany jest
w pamięci RAM.

Komunikat:
' Błąd bazy danych ! '
' ( Naciśnij NIE ) '
Przyczyna:
Komunikat pojawia się po włączeniu zasilania, jeżeli wykryto błąd (błędy) w bazie danych drukarki. Jeżeli
urządzenie jest sfiskalizowane, to informacja o wykrytym błędzie zostanie zapisana jako rekord w pamięci
fiskalnej, który na raporcie okresowym zostanie opisany jako 'Odbudowa bazy'.
Sposób usunięcia:
Błąd jest usuwany automatycznie (regeneracja bazy danych). Naciśnięcie klawisza NIE usuwa komunikat i
umożliwia dalszą pracę drukarki.
UWAGA:
Jeżeli komunikat pojawia się permanentnie po każdorazowym włączeniu zasilania, to należy bezwzględnie
oddać urządzenie do serwisu (może być uszkodzenie baterii lub pamięci RAM bazy danych) !

Str. 34
Drukarka Fiskalna POSNET Thermal i 3001
Komunikat:
' Błąd zegara RTC '
'Prześlij z systemu ! '
Przyczyna:
Niezainicjalizowany zegar czasu rzeczywistego (RTC) drukarki. Stan ten uniemożliwia poprawną pracę
drukarki, ponieważ data i czas nie są określone.
Sposób usunięcia:
Należy przesłać właściwą datę i czas z systemu (pod kontrolą aplikacji).
UWAGA:
1. Po odebraniu i poprawnym wykonaniu sekwencji LBSETCK zostanie włączony krótki sygnał dźwiękowy,
a także będzie wyświetlona ustawiona data i czas (przez czas około 1sekundy) w formacie:
'Data: yyyy-mm-dd'
'Godzina: hh:mm'
2. Podczas pierwszego uruchomienia drukarki, a także po wymianie baterii, pojawią się następujące
komunikaty:
' Błąd pamięci NVR '
' ( Naciśnij NIE ) '
oraz
' Błąd zegara RTC '
'Prześlij z systemu !'
(po kontroli bazy)
' Błąd bazy danych ! '
' ( Naciśnij NIE ) '

Komunikat:
' Błąd totalizerów ! '
'( Naciśnij NIE ) '
(ponadto sygnał dźwiękowy i migotanie diody BŁĄD).
Przyczyna:
Podczas testu wstępnego wykryto błąd sumy kontrolnej totalizerów (nieulotnych rejestrów służących do
akumulowania wartości sprzedaży w poszczególnych grupach podatkowych). Jeżeli urządzenie jest
zafiskalizowane, to informacja o wykrytym błędzie zostanie zapisana jako rekord w pamięci fiskalnej, który
na raporcie okresowym zostanie opisany jako 'Zerowanie RAM'.
Sposób usunięcia:
Błąd jest usuwany automatycznie (zerowanie totalizerów). Naciśnięcie klawisza NIE usuwa komunikat
i umożliwia dalszą pracę drukarki.
UWAGA:
1. Jeżeli komunikat pojawia się często po włączeniu zasilania, to należy bezwzględnie oddać urządzenie do
serwisu !
2. Jeżeli powyższa sytuacja powtórzy się pewną liczbę razy (200), to pojawi się dalej komunikat:
' Tryb szkoleniowy ! '
' CLR'
i tryb fiskalny zostanie nieodwracalnie zablokowany !

Komunikat:
' Ilość rekordów w '
' pam. fisk. = xx '
(oraz sygnał dźwiękowy i migotanie diody BŁĄD).
Przyczyna:
Jest to ostrzeżenie o zbliżającym się całkowitym zapełnieniu pamięci fiskalnej. Jeżeli ilość wolnych
rekordów w pamięci fiskalnej spadnie poniżej 20, to każdorazowo po włączeniu zasilania urządzenie będzie
wyświetlać ten komunikat. Praktycznie oznacza to, że po wykonaniu podanej ilości raportów dobowych
(jeżeli nie zaistnieją inne zapisy do pamięci fiskalnej, np. w wyniku zerowania RAM lub błędu bazy
danych) trzeba będzie wymienić pamięć fiskalną. Komunikat ten może też pojawić się w trakcie normalnej
pracy drukarki, jeżeli ilość wolnych rekordów po wykonaniu zapisu (np. raportu dobowego) spadnie
poniżej 20.
Sposób usunięcia: Naciśnięcie klawisza NIE .

Str. 35
Drukarka Fiskalna POSNET Thermal i 3001
Komunikaty związane z sekwencjami sterującymi.

W tej grupie są dwa rodzaje komunikatów: komunikat o błędzie sekwencji sterującej (który może być
zablokowany przy użyciu sekwencji LBSERM) oraz grupa komunikatów, które zatwierdzają wykonanie operacji
inicjowanej przez sekwencje sterujące. Jako zasadę przyjęto konieczność potwierdzenia z klawiatury drukarki tych
operacji, które powodują zapis do pamięci fiskalnej tj. fiskalizacji, zmiany stawek PTU, a także raportu dobowego.
Pozytywne potwierdzenie operacji uzyskujemy przy użyciu klawisza TAK, natomiast naciśnięcie klawisza NIE
powoduje zignorowanie sekwencji sterującej.

Komunikat:
'Błąd rozkazu: "cc" '
'Kod błędu : xx '
Przyczyna:
Podczas analizy i/ lub realizacji sekwencji sterującej wykryto błąd. Znaki 'cc' identyfikują rozkaz (ogólna
postać syntaktyki komendy jest ESC P P1;P2;...Pn cc <napis> ESC \ , identyfikator rozkazu 'cc' składa się
z dwóch znaków, z których drugi jest literą, np. $f, #k ...). Kod błędu jest wyświetlany w postaci dwóch cyfr
'xx'. Kody błędów możliwe dla poszczególnych sekwencji wyszczególniono w opisie języka programowania
urządzenia. Błąd może pojawić się w wyniku błędów transmisji, błędu aplikacji, wyłączenia/ włączenia
zasilania urządzenia w trakcie działania aplikacji, niewłaściwego stanu urządzenia (np. brak inicjalizacji
zegara RTC) lub błędu wykonania rozkazu (np. błędu układu elektronicznego). Generalnie, częste
powtarzanie się błędów wykonania rozkazów w trakcie eksploatacji systemu może wymagać konsultacji
problemu zarówno z serwisem jak i producentem/ dystrybutorem oprogramowania systemowego
i aplikacyjnego. Wykaz możliwych parametrów wyświetlanych w komunikacie o błędach rozkazów został
podany w rozdziale „Kody sekwencji” na stronie 115.

UWAGA:
Po włączeniu zasilania urządzenia błędy wykonania rozkazów dają wyżej wymienione reakcje na
wyświetlaczu. Aplikacja może zablokować wyświetlanie komunikatów wysyłając sekwencje LBSERM i
realizując własną obsługę błędów bazującą na odczycie statusu drukarki i kodu błędu przez interfejs RS-
232 drukarki.

Sposób usunięcia:
Przetwarzanie danych z interfejsu jest wstrzymane aż do naciśnięcia klawisza NIE. Po naciśnięciu klawisza
drukarka wznawia pobieranie znaków z bufora interfejsu, co może w pewnych przypadkach powodować
następne komunikaty o błędach (np. błąd w trakcie realizacji sekwencji LBTRSHDR - nagłówek transakcji
powoduje, że drukarka nie wejdzie do trybu transakcji i będzie zgłaszać kolejne błędy odbierając sekwencję
LBTRSLN - pozycje transakcji, a także zgłosi błąd sekwencji kończącej LBTREXIT).

Komunikat:
' Drukować raport '
' dobowy ? '
Przyczyna:
Została odebrana sekwencja LBDAYREP (inicjalizacja raportu dobowego).
Sposób usunięcia:
Klawisz TAK powoduje wykonanie raportu (po zatwierdzeniu poprawności DATY), klawisz NIE powoduje
zawieszenie wykonania operacji, dając równocześnie komunikat o błędzie sekwencji.

Komunikat:
'Zapisać stawki PTU ? '
' '
Przyczyna:
Została odebrana sekwencja LBSETPTU (zmiana stawek PTU).
Sposób usunięcia:
Klawisz TAK powoduje zapis nowych wartości stawek PTU (po zatwierdzeniu poprawności DATY) do
pamięci fiskalnej oraz wydruk krótkiego raportu na drukarce paragonowej, klawisz NIE powoduje
zignorowanie sekwencji bez zgłoszenia błędu rozkazu.

Str. 36
Drukarka Fiskalna POSNET Thermal i 3001
Komunikat:
'Wykonać '
'fiskalizację? '
Przyczyna:
Została odebrana sekwencja LBSETHDR w formie powodującej zapis nagłówka do pamięci fiskalnej.
Jeżeli sekwencja jest poprawna, to na drukarce paragonowej zostanie wydrukowany odebrany nagłówek
jako krótki wydruk niefiskalny. W następnej linii za nagłówkiem (NIP-em) będą wydrukowane 3 znaki
zapytania ('???'). Umożliwia to kontrolę poprawności nagłówka (NIP-u) przed zatwierdzeniem operacji, co
jest istotne z uwagi na NIEODWRACALNOŚĆ operacji ! O ile fiskalizacja polega na zapisaniu do
pamięci fiskalnej tylo NIP to ‘???’ muszą się znaleźć bezpośrednio pod słowem NIP!!!

Sposób usunięcia:
Klawisz NIE powoduje zignorowanie sekwencji, klawisz TAK zatwierdza operację, powodując:
- zapis nagłówka (NIP) do pamięci fiskalnej,
- kasowanie totalizerów,
- inicjalizację zmiennych dla raportu/ kasy zmiany w identyczny sposób jak dla komunikatu:
' Błąd pamięci NVR '
' ( Naciśnij NIE ) '
- kasowanie bazy danych,
- włączenie fiskalnego trybu pracy drukarki,
- inicjalizację drukarki.
UWAGA:
Zapis nagłówka (NIP- u) jest JEDNORAZOWY, stąd popełnienie błędu w trakcie fiskalizacji spowoduje
nieodwracalny zapis tego błędu do modułu fiskalnego, a co za tym idzie, konieczność wymiany modułu pamięci
fiskalnej przed ponownym zapisem !!! Wymianę modułu fiskalnego z błędnymi danymi może wykonać tylko
producent, a koszt wymiany w tym przypadku ponosi podatnik lub serwisant.

Komunikaty związane z drukowaniem raportów.

W tej grupie znajdują się komunikaty informujące o realizacji przez urządzenie operacji związanych
z drukowaniem raportu, komunikaty związane z zatwierdzeniem operacji, a także komunikaty związane np.
z wprowadzaniem dat dla raportu okresowego.

Po włączeniu trybu drukowania raportu (w drukarkach dostęp do raportów uzyskujemy poprzez naciśniecie i
przytrzymanie klawisza R.D. lub R.O. podczas włączania drukarki, w kasie POSNET 2000 po przekręceniu
kluczyka w pozycję RAPORT) pojawia się komunikat:
1) ' Wybierz rodzaj '
' raportu. '
Po naciśnięciu klawisza R.D. (RAPORT DOBOWY) przechodzimy do drukowania raportu dobowego. Jeżeli
totalizery (rejestry sprzedaży bieżącej urządzenia) są zerowe pojawi się komunikat:
2) ' Zerowe totalizery ! '
' ( Naciśnij NIE ) '
(oraz krótki sygnał akustyczny).
Naciśniecie klawisza NIE kasuje komunikat i powoduje powrót do normalnego trybu pracy drukarki.
Jeżeli totalizery są niezerowe (jest zarejestrowana sprzedaż) drukarka pyta dalej:
3) ' Drukować raport '
' dobowy ? '.
Naciśnięcie klawisza NIE powoduje powrót do normalnego trybu pracy drukarki, natomiast klawisz TAK powoduje
przejście dalej, co jest sygnalizowane komunikatem:
4) ' Data: xxxx-xx-xx '
' jest poprawna ? ',
gdzie: "xxxx-xx-xx" jest aktualną datą według kalendarza zegara RTC urządzenia. Naciśnięcie klawisza NIE
powoduje powrót do normalnego trybu pracy drukarki, natomiast klawisz TAK powoduje przejście do drukowania

Str. 37
Drukarka Fiskalna POSNET Thermal i 3001
raportu. Jeżeli aktualnie nastawiona data jest wcześniejsza od daty ostatniego zapisu w pamięci fiskalnej (co może
mieć miejsce przy przekłamaniu zegara RTC w wyniku np. częściowego rozładowania baterii), drukarka nie wykona
raportu i wypisze komunikat:
5) ' Błędna data ! '
' ( Naciśnij NIE ) '
(oraz krótki sygnał akustyczny).
Naciśnięcie klawisza NIE kasuje komunikat i powoduje powrót do normalnego trybu pracy drukarki.
Jeżeli data jest poprawna (tzn. jest zachowana "narastająca" chronologia zapisów w pamięci fiskalnej), urządzenie
sprawdza, czy jest już w pamięci raport dobowy o tej dacie. Jeżeli tak, to drukarka pyta:
6) 'Raport już zapisany '
' powtórzyć (T/N) ? '.
W tej sytuacji klawisz NIE powoduje powrót do normalnego trybu pracy drukarki, natomiast klawisz TAK (operator
świadomie chce dokonać powtórnego zapisu), powoduje przejście dalej (rozpoczęcie drukowania). W tym celu
układ elektroniczny dokonuje przeszukania pamięci fiskalnej w celu wyznaczenia bieżącego numeru raportu
dobowego. Podczas przeszukiwania pamięci na wyświetlaczu pojawia się komunikat:
7) ' '
'Numer raportu: xxxx'.
Wyświetlany numer raportu "xxxx" jest zwiększany w trakcie przeszukiwania pamięci fiskalnej. Operacja ta może
trwać nawet do kilkudziesięciu sekund (po kilku latach eksploatacji urządzenia), tym nie mniej jest ona korzystna,
ponieważ umożliwia codzienną pełną kontrolę poprawności funkcjonowania modułu fiskalnego i zawartych w nim
zapisów. Po wyznaczeniu aktualnego (równego ostatniemu zapisanemu plus 1) numeru raportu pojawia się
komunikat:
8) ' DRUKOWANIE RAPORTU '
' '.
Następnie uruchamiany jest wydruk na drukarce paragonowej. Po zakończeniu wydruku następuje powrót do
normalnego trybu pracy drukarki.

UWAGA:
- Należy sprawdzić, czy data jest poprawna (komunikat 4), gdyż błędna data zapisu do pamięci
fiskalnej może spowodować późniejsze kłopoty, ponieważ przesunięcie daty "do przodu" -
spowoduje później blokadę zapisów po skorygowaniu daty (daty w pamięci fiskalnej muszą być
narastające, co jest kontrolowane przed każdym zapisem do pamięci fiskalnej !).
- Podana sekwencja komunikatów występuje w przypadku inicjowania raportu z klawiatury. W
przypadku inicjowania raportu przez sekwencję sterującą LBDAYREP, sekwencja komunikatów
jest skrócona do:
' Drukować raport '
' dobowy ? '

i ' Data: xxxx-xx-xx '


' jest poprawna ? ',

- Istnieje możliwość wykonania raportu dobowego przez sekwencję sterującą w formacie nie
wymagającym potwierdzania na klawiaturze (patrz dokładny opis sekwencji LBDAYREP
zawarty w rozdziale 10 ).

Każdy zapis do pamięci fiskalnej wymaga zatwierdzenia z klawiatury ! Występujące komunikaty o błędach mają
postać standardową dla błędów sekwencji sterujących:
'Błąd rozkazu: "#r" '
'Kod błędu : xx '.

Str. 38
Drukarka Fiskalna POSNET Thermal i 3001
Jeżeli wyświetlanie komunikatów o błędach nie zostało zablokowane przez aplikację, w szczególności, po
naciśnięciu klawisza NIE, może pojawić się komunikat:
'Błąd rozkazu: "#r" '
'Kod błędu : 37 ',
co oznacza przerwanie wykonania operacji z klawiatury.
UWAGA:
- Przy użyciu rozkazu LBDAYREP nie jest możliwe powtórne wykonanie raportu dobowego
(wystąpi wtedy błąd nr 36), tym nie mniej można tego dokonać z klawiatury.
- Należy unikać powtórnego drukowania raportu dobowego, ponieważ skraca to czas eksploatacji
urządzenia (ilość wszystkich możliwych zapisów w pamięci fiskalnej, nie licząc nagłówka, jest
limitowana do 2031 rekordów).
- Drukarka nie sygnalizuje konieczności wykonania raportu dobowego, obowiązek dokonywania
codziennego raportu spoczywa na użytkowniku. Przypomnienie o wykonaniu raportu (lub jego
wykonanie przez sekwencję sterującą) może realizować aplikacja, ponieważ jest dostępna
informacja o dacie ostatniego zapisu w pamięci fiskalnej).

W stanie selekcji raportu (komunikat 1) można też nacisnąć klawisz R.O. (RAPORT OKRESOWY), co spowoduje
przejście do drukowania raportu fiskalnego okresowego, co objawia się komunikatem:
9) ' Drukować raport '
' okresowy ? '.
Naciśnięcie klawisza NIE powoduje powrót do normalnego trybu pracy drukarki, natomiast klawisz TAK powoduje
przejście do wprowadzania dat dla raportu. Wprowadza się datę początkową i końcową dla raportu, a na
wyświetlaczu pojawiają się komunikaty:
10) ' Data początkowa ? '
'xxxx-xx-xx [wyjście]'
oraz

11) ' Data końcowa ? '


'xxxx-xx-xx [wyjście]'.
W obu sytuacjach na wyświetlaczu pojawia się kursor (migoczący prostokąt), który może być przesuwany w obrębie
trzech pól daty (rok, miesiąc, dzień), przy użyciu klawiszy oznaczonych strzałką w lewo, bądź w prawo (NIE i TAK).
Przesunięcie kursora maksymalnie w prawo (czyli naciśnięcie klawisza TAK wtedy, gdy wskazuje on na pole 'dzień')
powoduje zatwierdzenie wprowadzonej daty. Każde z 3 pól może być modyfikowane przy użyciu klawiszy
oznaczonych strzałką w dół lub w gorę (R.D. i R.O.), co powoduje zwiększanie lub zmniejszanie wybranej liczby
(tj. roku, dnia lub miesiąca).
Modyfikacja pola zachodzi z "autorepetycją", tj. przyciśnięcie klawisza na dłuższy czas powoduje automatyczne
zwiększanie/ zmniejszanie wartości. W trakcie modyfikacji kontrolowana jest cały czas poprawność formalna daty
i drukarka dokonuje ewentualnych korekt automatycznie - dotyczy do długości miesiąca, np. jeżeli ustawimy:
' Data początkowa ? '
'1996-12-31 [wyjście]'
i zmniejszymy numer miesiąca na 11, to drukarka automatycznie skoryguje dzień na 30.
Po wprowadzeniu obu dat drukarka pyta:
12) 'Daty: xxxx-xx-xx '
'poprawne? xxxx-xx-xx '.
Naciśnięcie klawisza NIE powrót do normalnego trybu pracy drukarki, natomiast klawisz TAK powoduje
wyświetlenie komunikatu:
13) ' TAK: pełny raport '
' NIE: podsumowanie'

Drukarka wykona pełny raport po naciśnięciu klawisza TAK lub raport w postaci podsumowania po naciśnięciu
klawisza NIE.
Po wyborze rodzaju raportu następuje przejście do analizy zawartości pamięci fiskalnej w zadanym okresie.
Wyświetlany jest wtedy komunikat:
14) 'Poczekaj... '

Str. 39
Drukarka Fiskalna POSNET Thermal i 3001
' '
W wyniku analizy zawartości pamięci fiskalnej może wystąpić błąd polegający na braku zapisów w zadanym okresie
i wówczas będzie wyświetlony komunikat:
15) ' Błędne daty ! '
' ( Naciśnij NIE ) ',
(oraz krótki sygnał akustyczny).
Naciśniecie klawisza NIE kasuje komunikat i powrót do normalnego trybu pracy drukarki.
Drugi możliwy błąd może polegać na ustawieniu daty końcowej wcześniejszej od daty początkowej, co jest
sygnalizowane komunikatem:
16) 'Błędna relacja dat! '
' ( Naciśnij NIE ) ',
(oraz krótki sygnał akustyczny).
Naciśnięcie klawisza NIE kasuje komunikat i powrót do normalnego trybu pracy drukarki.
W każdej innej poprawnej sytuacji algorytm przeszukiwania pamięci powoduje wyszukanie i wydrukowanie
wszystkich zapisów w pamięci fiskalnej w zadanym okresie. Algorytm ten jest dosyć rozbudowany, ze względu na
możliwe przypadki szczególne (np. zmiany stawek PTU, wielokrotne zapisy z tą samą datą), stąd poszczególne jego
etapy są sygnalizowane na wyświetlaczu komunikatami mającymi charakter informacyjno - diagnostyczny:
17) ' Szukanie wartości '
' stawek PTU... '

18) ' Wyznaczenie numeru '


' raportu dobowego. ',
Komunikat 17 (podobnie jak komunikat 7 dla raportu dobowego) jest związany z przeszukaniem całej pamięci od
początku do miejsca odpowiadającego dacie początkowej wraz z wyznaczeniem początkowego numeru raportu
dobowego, może zatem pojawić się na wyświetlaczu na długi czas (do kilkudziesięciu sekund po kilku latach pracy
urządzenia).
W dalszej kolejności jest uruchamiany mechanizm drukujący, co jest sygnalizowane komunikatem:
19) ' DRUKOWANIE RAPORTU '
' OKRESOWEGO '
Po zakończeniu wydruku następuje powrót do normalnego trybu pracy drukarki.

Inne komunikaty .

Po włączeniu zasilania urządzenie zgłasza się na wyświetlaczu z komunikatem:


' Drukarka fiskalna '
'POSNET nnnn/xx.y ',
gdzie:
'nnnn' oznacza typ drukarki: Thermal lub 3001,
'xx.y' oznacza wykonanie (numer wersji) urządzenia.

UWAGA: w przypadku zaistnienia problemów z drukarką i/lub aplikacją, w celu uzyskania kompetentnej
porady w firmie POSNET należy podać numer wersji urządzenia, której dotyczy wątpliwość.

Po włączeniu zasilania pojawia się również komunikat:


' KONTROLA BAZY '
' DANYCH.. ',
który może być wyświetlany przez czas zależny od stanu bazy danych. Jeżeli test nie wykrył błędów w bazie, to
komunikat ten pojawia się na krótko (około 1 sekundy), natomiast czas ten wydłuża się, jeżeli urządzenie wykryje
błędy w bazie danych. W przypadkach całkowitej utraty informacji bazy danych lub dla nowego urządzenia
komunikat ten może być wyświetlany nawet kilka minut, ze względu na czas wymagany na regenerację bazy danych.
Nie należy wówczas wyłączać zasilania, tylko czekać cierpliwie na zakończenie operacji, co w takiej sytuacji będzie
sygnalizowane komunikatem:

Str. 40
Drukarka Fiskalna POSNET Thermal i 3001
' Błąd bazy danych ! '
' ( Naciśnij NIE ) '.
W trybie fiskalnym zostanie wówczas wykonany zapis w pamięci fiskalnej informacji o wystąpieniu błędu w bazie
danych.
Po poprawnym zakończeniu inicjalizacji na wyświetlaczu pojawia się standardowy dla informacji
o sprzedaży komunikat:
' --- Do zapłaty --- '
'Suma: 0.'.

Podczas realizacji transakcji na wyświetlaczu mogą pojawiać się różne informacje, zależnie od trybu
realizacji transakcji. Automatyczna obsługa wyświetlacza przez drukarkę (realizowana w trybie "On-Line"
realizacji transakcji) zakłada, że pierwsza linia jest zarezerwowana na nazwy kolejnych towarów, a w drugiej linii
jest drukowany napis 'Suma:' i narastająca suma transakcji (wyświetlana jednocześnie na wyświetlaczu dla ‘klienta’).
W trybie "blokowym" realizacji transakcji, wyświetlacz (LCD) może być wyłącznie kontrolowany przez aplikację,
natomiast w momencie zakończenia transakcji (rozpoczęcie drukowania), w drugiej linii zostanie automatycznie
wyświetlona kwota do zapłaty (taka sama kwota zostanie wyświetlona na wyświetlaczu LED).
UWAGA: wyświetlacz cyfrowy LED nie może być modyfikowany przez aplikację. Dodatkowy wyświetlacz VFD
(o ile jest podłączony) nie może być modyfikowany przez aplikację po rozpoczęciu transakcji.

Komunikaty podczas realizacji transakcji będą zatem następujące:

1. W trybie "On-Line" :
- Początek transakcji (po sekwencji LBTRSHDR) - pierwsza linia wyświetlacza (LCD i VFD) jest kasowana,
suma końcowa w drugiej linii jest zerowana.
- Po wydrukowaniu każdej pozycji paragonu (odebraniu sekwencji LBTRSLN), w pierwszej linii jest
wyświetlana nazwa artykułu (pierwsze 20 znaków), a w drugiej automatycznie jest aktualizowana suma
narastająca.
- Po zakończeniu transakcji (realizacji sekwencji LBTREXIT), zostanie odtworzona standardowa postać
informacji na wyświetlaczu, oraz wyświetlona ostateczna suma transakcji (do zapłaty przez klienta, w obu
formatach jest to maksymalnie 10 cyfr):

2a) ' --- Do zapłaty --- '


'Suma: xxxxxxxx.xx'
UWAGA: po odebraniu ostatniej linijki paragonu na wyświetlaczu pojawi się suma wszystkich pozycji
transakcji. Jeżeli w transakcji uwzględniono rabat (dopłatę) po odebraniu sekwencji kończącej
(LBTREXIT, zatwierdzenie transakcji lub LBTRXEND ), suma ta zostanie skorygowana zgodnie z zadaną
wielkością rabatu/ dopłaty oraz kaucji_pobranej !

2. W trybie "blokowym":
- Początek transakcji (po sekwencji LBTRSHDR) - pierwsza linia wyświetlacza (LCD i VFD) jest kasowana,
suma końcowa w drugiej linii jest zerowana.
- Ponieważ odebranie każdej pozycji paragonu nie jest związane z jej drukowaniem (są one
gromadzone w pamięci) - zawartość wyświetlacza (LCD, VFD i LED) w trakcie przesyłania
treści paragonu nie ulega zmianie i dostęp do niego jest zabroniony (drukarka zgłosi błąd po
odebraniu rozkazu LBDSP dotyczącym wyświetlenia tekstu na wyświetlaczu LCD/ VFD).
- Po zakończeniu transakcji (realizacji sekwencji LBTREXIT), jak w punkcie 1.

Aplikacja może włączyć (przy pomocy sekwencji LBDSP) specjalny tryb obsługi wyświetlacza, w którym jest
wyświetlana data i godzina z zegara wbudowanego w drukarkę. Format wyświetlania daty i czasu jest następujący:
3) 'Data: xxxx-xx-xx'
'Godzina: xx:xx'
W tym trybie wyświetlacz jest cały czas aktualizowany zgodnie z bieżącym stanem zegara. Opcję tę można
wykorzystać do kontroli daty/ czasu lub włączać w przypadku dłuższych przerw między transakcjami. Po
rozpoczęciu transakcji (odebraniu sekwencji LBTRSHDR) drukarka automatycznie przywraca format 1a lub 1b na
wyświetlaczu.
Format 3 jest również wyświetlany (dla kontroli) przez czas około 1 sekundy po korekcie zegara przez aplikację
(odebranie sekwencji LBSETCK).

Str. 41
Drukarka Fiskalna POSNET Thermal i 3001
8. Formaty możliwych wydruków realizowanych przez drukarkę.

Dokumenty fiskalne.

Paragon fiskalny standard.

Paragon fiskalny jest drukowany podczas realizacji transakcji przez drukarkę. Składa się z pól opisanych
poniżej. Należy zwrócić uwagę, że mogą być różne warianty paragonów, co wynika z następujących faktów:
- poszczególne pozycje sprzedaży mogą być drukowane w jednej lub dwóch liniach (drukarka dokonuje tej
kompresji automatycznie),
- niektóre pola paragonu (linie) są opcjonalne np. linie: 'Gotówka:...','Reszta:....' oraz 'Rabat',
- aplikacja może drukować 3 linie dowolnego tekstu między polem daty / numeru paragonu a jego treścią.
W trybie szkoleniowym postać paragonu jest niemal identyczna jak w trybie fiskalnym. Są tylko następujące dwie
różnice:
- na początku i na końcu paragonu są napisy '# niefiskalny #',
- logo fiskalne (specjalny znaczek) nie jest drukowane, natomiast numer unikatowy jest drukowany od lewej
krawędzi paragonu (a nie na środku) oraz nie są drukowane litery zawarte w numerze unikatowym.
UWAGA:
W przedstawionych poniżej różnych formatach wydruków umieszczono na górze każdego przykładowego
wydruku dodatkową linię:
|0123456789012345678901234567890123456789|
umożliwiającą dokładną lokalizację wydruków względem 40-tu kolumn drukarki. Linia ta nie jest
oczywiście drukowana na wydrukach rzeczywistych.

Paragon fiskalny składa się z następujących pól:

1. Nagłówek:
- zawiera informacje odczytane z pamięci fiskalnej i/ lub z RAM (maksymalnie 217 znaków z RAM + linia z
NIP), łącznie z kodami sterującymi (mogą być znaki LF, ale również kody "wzbogacające" wydruk np.
podwójna szerokość linii), format nagłówka jest zatem dowolny - ustalony w procesie fiskalizacji drukarki
(linia z NIP- em jest przez drukarkę wytłuszczona i wyśrodkowana).
UWAGA:
1. Serwis musi skontrolować w trakcie fiskalizacji drukarki formalną poprawność nagłówka (np. czy zawiera
numer NIP), oraz zgodność danych z danymi podatnika, ponieważ drukarka nie dokonuje żadnej kontroli
informacji zawartych w nagłówku (kontrolowana jest linia z NIP). Ponadto operacja fiskalizacji jest
jednokrotna i nieodwracalna, stąd wpisanie do nagłówka błędnych informacji
( błędnego numeru NIP) będzie wymagać kosztownej naprawy modułu fiskalnego (możliwej do
przeprowadzenia tylko u producenta) !!

2. Data i kolejny numer paragonu:


- data odczytana z zegara drukarki :
|0123456789012345678901234567890123456789|
|yy-mm-dd www |
('www' - 3-znakowe oznaczenie dnia tygodnia dopisywane przez drukarkę).

3. Opcjonalne linie dodatkowego opisu paragonu:


- są stosowane np. w celu wpisania numeru określonego przez aplikację wiążącego ten paragon z rachunkiem
uproszczonym lub faktura,
- mogą zawierać maksymalnie 3 linie po 40 znaków,
- nie mogą zawierać żadnych znaków sterujących !

4. Opis paragonu w formie 2 linii:


|0123456789012345678901234567890123456789|
|- Nazwa --------------------------------------------------|
|----- Cena ----- Ilość --- -------------Wartość,PTU -|

Str. 42
Drukarka Fiskalna POSNET Thermal i 3001
5. Pozycje sprzedaży:
- może wystąpić ich dowolna ilość (do 255), w wariancie "jedno-" lub "dwulinijkowym", ponadto mogą
pojawić się pozycje "stornowane".

5.1. Wariant "dwulinijkowy":


- każda z pozycji sprzedaży zajmuje 2 linie na 40-znakowej drukarce:
- linia 1:
- nazwa = string[40], przesłana przez system (format ustalony przez aplikację):
|0123456789012345678901234567890123456789|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
- linia 2:
- CENA = wynik konwersji wartości numerycznej przesłanej przez system; w tej wersji jest to maksymalnie
10 cyfr z dowolnym położeniem przecinka ,
- ilość = string[16], przesyłany przez komputer,
- wartość sprzedaży BRUTTO (przesłana przez system) = wynik konwersji posiadający maksymalnie 10 cyfr
+ ewentualnie ',' przed pozycją groszy (maksymalnie 2 cyfry po przecinku),
- stawka podatkowa pobrana z pamięci fiskalnej na podstawie kodu stawki PTU = znak 'A'...'F' lub
'Z' dla towarów zwolnionych,
|0123456789012345678901234567890123456789|
|cccccccc,cc iiiiiiiiiiiiiiii wwwwwwww,wwp|

5.2. Wariant "jednolinijkowy":


Jeżeli łączna długość napisu:
<nazwa> + ' ' + <cena> + ' ' + <ilość> + ' ' + <wartość> + <ptu> ,
gdzie:
<nazwa> = string[40],
<cena> = string[11],
<ilość> = string[16],
<wartość> = string[11],
<ptu> = char,
po uwzględnieniu rzeczywistej długości pól <nazwa> i <ilość> oraz kompresji spacji i zer nieznaczących
w polach <cena> i <ilość> nie przekracza 40 znaków, to wówczas tworzony jest jeden napis o długości
40 znaków według następujących reguł:
- pole <nazwa> jest dosunięte do lewej strony,
- pole <wartość> + <ptu> jest dosunięte do prawej,
- zapewnione jest co najmniej po jednej spacji rozdzielającej (jak wyżej),
- dodatkowe spacje dopełniające do 40 znaków (jeżeli występują) będą wpisane między pole <ilość>
a <wartość> + <ptu> .
Przykładowy rozkład pól może być więc następujący:
|xxxxxxxx ccccccc iiiiiiii wwwwwwwwwp|
UWAGA:
1. Aplikacja może wymusić drukowanie zawsze wariantu "dwulinijkowego" wysyłając zawsze nazwy
o długości np. 30..40 znaków (dopełniając prawostronnie spacjami nazwy krótsze).
2. W zależności od wartości parametru Pr w sekwencji LBTRSLN na paragonie po linii określającej
sprzedawany towar w przypadku Pr<>0 zostanie wydrukowana dodatkowa linia w postaci :

|RABAT - xx.xx | (Pr=1)


lub
|RABAT yy.yy % - xx.xx| (Pr=2)
lub
|DOPŁATA xx.xx| (Pr=3)
lub
|DOPŁATA yy.yy % xx.xx| (Pr=4)

gdzie : yy.yy - rabat lub dopłata procentowa z dokładnością do 0.01% ;


xx.xx - wartość liczbowa kwoty rabatu (dopłaty) wyliczona przez drukarkę
w przypadku podania w procentach rabatu (dopłaty) lub wartość
kwoty rabatu (dopłaty) przesłana przez aplikację w polu RABAT sekwencji LBTRSLN .

Str. 43
Drukarka Fiskalna POSNET Thermal i 3001
5.3. Pozycja "stornowana":
- pole <wartość> ze znakiem '-', ponadto dodatkowa linia z napisem "storno" o podwójnej szerokości:

|0123456789012345678901234567890123456789|
| # storno # |

5.3.1. Wariant "dwulinijkowy":


|0123456789012345678901234567890123456789|
|cccccccc.cc iiiiiiiiiiiiiiii -wwwwwww,wwp|

5.3.2. Wariant "jednolinijkowy":


Przykładowy rozkład pól może być następujący:
|xxxxxxxx ccccccc iiiiiiii -wwwwwwwwwp|

6. Jedna linia (kreska) oddzielająca:


|------------------------------------------------------------|

7. Wartości sprzedaży w poszczególnych grupach podatkowych:


- od 1 do 7 linii, zawierających łączne kwoty sprzedaży BRUTTO w grupach A, B, C, D, E,F,Z, oraz stawki
podatkowe w grupach A, B, C, D, E, F:
|0123456789012345678901234567890123456789|
|Kwota ssssssss,ss PTU vv.vv% pppppppp,pp|
|Kwota ssssssss,ss PTU vv % pppppppp,pp|
|Łączna kwota PTU pppppppp,pp|

oraz format dla kwoty sprzedaży wolnej od podatku:


|Kwota zw. ssssssss,ss |

UWAGA:

1. Drukowane są tylko podsumowania dla tych stawek podatkowych, które występują w polu 5
(tzn. są drukowane wtedy, gdy odpowiednia kwota jest niezerowa).
2. Wprowadzenie możliwości drukowania jednolinijkowego podsumowania transakcji jeżeli jest sprzedaż tylko
w jednej grupie. Możliwość ta jest włączana parametrem Py w sekwencji LBTREXIT i LBTRXEND. W
przypadku gdy parametr Py=1 i na paragonie występuje(ą) towar(y) w jednej grupie towarowej drukarka drukuje
‘skróconą’ wersję paragonu tzn. zmienia się wydruk w podsumowaniu transakcji i przyjmuje postać jednej linijki
tak jak pokazano poniżej :
|Razem: xx.xx PTU pp.pp % yy.yy zł|
gdzie:
xx.xx kwota do zapłaty drukowana pogrubioną czcionką;
pp.pp wartość stawki PTU sprzedanego towaru;
yy.yy wyliczona przez drukarkę kwota PTU .
Jeżeli występuje tylko sprzedaż w grupie zwolnionej to linijka ta ma format :
|Razem: ssssssss,ss (zw.) zł |
3. Jeżeli występuje sprzedaż w jednej z grup A..F oraz sprzedaż zwolniona to podsumowanie jednolinijkowe nie jest
możliwe a linia ‘Łączna kwota PTU ...’ nie jest drukowana.
4. Jeżeli drukowane jest podsumowanie jednolinijkowe to występuje ono za ew. liniami dla rabatu (p. 9), ponadto
pozycje 8 i 10 nie są drukowane.

Wprowadzono także możliwość ‘oszczędzania’ papieru przez wydruk nagłówka nowej transakcji przed
odcięciem paragonu (jeżeli długość nagłówka jest nie większa od 4 linii) lub drukowanie paragonu bez jego
odcięcia (POSNET 3001 i POSNET 2000) (parametr Pc w sekwencji LBTREXIT i LBTRXEND).

Str. 44
Drukarka Fiskalna POSNET Thermal i 3001
8. Jedna linia (kreska) oddzielająca (nie występuje w przypadku podsumowania jednolinijkowego) :
|-------------------------------------------------------------|

9. Opcjonalne linie rabatu:


- jeżeli rabat procentowy (1..99%) transakcji jest różny od zera, to występują 2 dodatkowe linie:

|Kwota: pppppppp,pp|
|Rabat: rr %|
gdzie pierwsza linia określa należność klienta bez uwzględnienia rabatu, a druga wartość rabatu w
procentach (cyfry 'rr').
- jeżeli parametr Px<>0 (rabat lub dopłata procentowa) to występują 2 dodatkowe linie:

|Kwota: pppppppp,pp|
|Rabat: rr,rr %|
lub

|Kwota: pppppppp,pp|
|Dopłata: rr,rr %|
gdzie: rr,rr oznacza procentową stopę (dokładność 0.01%) rabatu lub dopłaty podawaną w polu RABAT
w sekwencji LBTREXIT.

10. Kwota należności dla klienta lub zamiennie podsumowanie jednolinijkowe :


- maksymalnie 10 cyfr (przesłana przez komputer, ale też skontrolowana lokalnie, z uwzględnieniem
ewentualnego rabatu), linia wydrukowana znakami o podwójnej szerokości:
|01234567890123456789|
|Suma zł uuuuuuuu,uu|

11. Opcjonalna linia reszty:


- jeżeli reszta obliczona przez drukarkę na podstawie przesłanych przez komputer wartości WPŁATA
i TOTAL jest nieujemna, to drukowane są dodatkowe 2 linie:

|Gotówka wwwwwwww,ww|
|Reszta: wwwwwwww,ww|

12. Stopka paragonu:


- numer paragonu fiskalnego, maksymalnie 6 cyfr, odczytany z totalizerów drukarki, numer drukarki + kod
kasjera (3 znaki ASCII przesłane przez komputer), oraz czas (przesłany z komputera):

|0123456789012345678901234567890123456789|
|nnnnnn #aaa hh:mm|

13. Logo fiskalne wraz z numerem unikatowym kasy:


- logo fiskalne jest drukowane w trybie graficznym z rozdzielczością 400 punktów w linii, według
następującego wzorca (w sumie 2 pola znakowe i kawałek):
|0123456789012345678901234567890
|...####################
|......##....##.......##
|.....##....##.......##.
|....################...
|...##....##............
|..##....##.............
|.##....############....
|00112233--00112233--001
- numer unikatowy kasy jest odczytany z pamięci fiskalnej i ma postać 10-ciu znaków ASCII, (2 litery + 8
cyfr):

Str. 45
Drukarka Fiskalna POSNET Thermal i 3001
|0123456789012345678901234567890123456789|
| lll kk nnnnnnnn |
UWAGA:
1. Pola numeryczne: daty, czasu, numerów paragonów (numer łączny oraz numer paragonu fiskalnego) są
drukowane bez kompresji zer nieznaczących.
2. Pola numeryczne dla kwot są drukowane z kompresją zer nieznaczących, przy czym zachodzi też
kompresja zer nieznaczących po prawej stronie punktu dziesiętnego (przy zerowej ilości groszy drukowane
jest ',-').

14. Opcjonalne linie dodatkowego opisu paragonu:


- są stosowane np. w celu wpisania dowolnego tekstu przez aplikację,
- mogą zawierać maksymalnie 5 linii po 40 znaków.

15. Paragon przerwany lub anulowany:


Anulowanie paragonu może zajść w dwóch przypadkach:
- anulowanie przez program systemu kasowego,
- wykryta została zabroniona manipulacja stawką PTU dla danego towaru,
- Wyłączenie i włączenie zasilania drukarki w trakcie transakcji.

Drukowanie paragonu może być przerwane w dowolnym momencie - po wydrukowaniu nagłówka lub
dowolnej linii paragonu, ale przed wydrukowaniem stopki ! Jeżeli wykryto błąd stawki PTU, to pojawi się
linia wydrukowana znakami o podwójnej szerokości:
|0123456789012345678901234567890123456789|
| ! błąd PTU ! |
W obu wyżej wymienionych przypadkach fakt anulowania paragonu jest sygnalizowany wydrukowaniem
linii (też o podwójnej szerokości):
|0123456789012345678901234567890123456789|
| paragon anulowany ! |

Paragon fiskalny z formami płatności.

Generalnie modyfikujemy 'stopkę' transakcji - część bezpośrednio za podsumowaniem kwot podatku. W nowym
formacie mogą wystąpić następujące linie /informacje - jeżeli paragon zostanie zakończony przy użyciu sekwencji
LBTRXEND (wg opisu na stronie 81):

1. Jedna linia (kreska) oddzielająca:


| |
2. Jeżeli występuje rabat procentowy to drukujemy linie z napisem 'Kwota',
która zawiera wartość transakcji bez uwzględnienia rabatu:
|0123456789012345678901234567890123456789|
|Kwota: pppppppp,pp|
oraz linie definiująca rabat/ dopłatę w jednej z możliwych postaci:
|Rabat: rr.rr%|
lub
|Dopłata: dd.dd%|

3. Kwota należności dla klienta - wartość nie uwzględniająca kaucji - tu zakładamy, ze obrót nie objęty VAT nie
może pojawić się przed logo !!
Linia wydrukowana znakami o podwójnej szerokości:
|0123456789012345678901234567890123456789|
|Suma zł ssssssss,ss|
4. Numer paragonu fiskalnego, kod kasjera, oraz czas:
|0123456789012345678901234567890123456789|
|nnnnnn #aaa hh:mm|

Str. 46
Drukarka Fiskalna POSNET Thermal i 3001
5. Logo fiskalne
|0123456789012345678901234567890
|...####################
|......##....##.......##
|.....##....##.......##.
|....################...
|...##....##............
|..##....##.............
|.##....############....
wraz z numerem unikatowym kasy.
|0123456789012345678901234567890123456789|
| lll kk nnnnnnnn |

blok informacji niefiskalnych:


6. Linie związane z obrotem kaucja za opakowania:
|0123456789012345678901234567890123456789|
|Kaucja za opakowania zwrotne: kkkkkkkk,kk|
i/ lub
|Zwrot kaucji: kkkkkkkk,kk|

7. Jeżeli występuje jedna z powyższych linii to tu drukujemy kwotę


do zapłaty/ zwrotu przez klienta, która jest obliczona jako:

SUMA := TOTAL + KAUCJA_POBRANA - KAUCJA_ZWROCONA,

wartość ta jest obliczana automatycznie przez drukarkę i wyświetlana


równocześnie na wyświetlaczu. Możliwe są 2 formaty linii:
|0123456789012345678901234567890123456789|
(SUMA >= 0) |Do zapłaty: kkkkkkkk,kk|
lub:
(SUMA < 0) |Do zwrotu: kkkkkkkk,kk|

8. Linie dla poszczególnych form płatności


W przypadku wykorzystania sekwencji LBTRXEND można uzyskać maksymalnie
5 linii:
|0123456789012345678901234567890123456789|
|Gotówka: gggggggg,gg|
|Karta xxxxxxxxxxxxxxxx : kkkkkkkk,kk|
|Czek yyyyyyyyyyyyyyyy : cccccccc,cc|
|Bon zzzzzzzzzzzzzzzz : bbbbbbbb,bb|
|Reszta: rrrrrrrr,rr|

gdzie: xx..x = string[16] = nazwa karty kredytowej,


yy..y,zz..z = nazwa czeku/ bonu (jw.),
9. Ewentualnie 0..5 linii dodatkowych dosyłanych przez aplikacje w sekwencji LBTRXEND.

Raport fiskalny dobowy.

Raport fiskalny dobowy jest drukowany na życzenie użytkownika z końcem dnia i może być inicjowany
z systemu lub klawiatury drukarki - po wejściu w opcję RAPORTY. Format raportu jest w zasadzie sztywny. Jedyne
możliwe warianty dotyczą następujących przypadków:
1. Drukowane są kwoty sprzedaży w tych grupach podatkowych A..F, dla których stawki podatkowe są
uaktywnione (por. opis sekwencji LBSETPTU 74). Standardowo są to stawki A,B,C ale można uzyskać 6
stawek (A..F plus stawka zwolniona Z).
2. drukowane są tylko te kwoty PTU A..PTU F , które są niezerowe.
W trybie szkoleniowym postać raportu jest niemal identyczna jak w trybie fiskalnym. Są tylko następujące dwie
różnice:
- na początku i na końcu raportu są napisy '# niefiskalny # ‘,

Str. 47
Drukarka Fiskalna POSNET Thermal i 3001
- logo fiskalne (specjalny znaczek) nie jest drukowane, natomiast numer unikatowy jest drukowany od lewej
krawędzi paragonu (a nie na środku) oraz nie są drukowane dwie litery umieszczone na początku numeru
unikatowego.
Ponadto w trybie szkoleniowym fakt wydrukowania raportu powoduje wyzerowanie totalizerów, ale nie powoduje
żadnego zapisu do pamięci fiskalnej !

Raport fiskalny dobowy składa się z następujących pól:

1. Nagłówek:
- identyczny jak dla paragonu fiskalnego.

2. Tytuł i numer raportu:

|0123456789012345678901234567890123456789|
|RAPORT FISKALNY DOBOWY Nr nnnn|
gdzie:
'nnnn' = 4 cyfrowy numer raportu (drukowany bez kompresji zer nieznaczących).

3. Aktualne wartości stawek PTU (drukowane po jednej linii odstępu):


|0123456789012345678901234567890123456789|
Standardowe:
|PTU A aa % |
|PTU B bb % |
|PTU C cc % |
oraz:
|PTU D dd % |
jeżeli zdefiniowano stawki E i F to pojawią się dodatkowe linie:
|PTU E ee % |
|PTU F ff % |

gdzie:
'aa',..'ff' = dwucyfrowe wartości stawek PTU wyrażone w procentach .

UWAGA:
- istnieje możliwość zdefiniowania stawek PTU z dokładnością do 0.1%, wtedy format drukowania stawki
jest następujący:
|0123456789012345678901234567890123456789|
|PTU A aa.aa% |

4. Dane numeryczne raportu dobowego:


(drukowane po jednej linii odstępu),
|0123456789012345678901234567890123456789|
|SPRZED. OPODATK. PTU A aaaaaaaaaa|
|SPRZED. OPODATK. PTU B bbbbbbbbbb|
|SPRZED. OPODATK. PTU C cccccccccc|
(te linie występują jeżeli zdefiniowano stawki PTU D, PTU E i PTU F )

|SPRZED. OPODATK. PTU D dddddddddd|


|SPRZED. OPODATK. PTU E eeeeeeee|
|SPRZED. OPODATK. PTU F fffffffffff|
(ta linia występuje zawsze)
|SPRZEDAŻ ZW. PTU zzzzzzzzzz|
(następujące linie są drukowane tylko, jeżeli odpowiednie kwoty są niezerowe)
|KWOTA PTU A gggggggggg |
|KWOTA PTU B hhhhhhhhhh|

Str. 48
Drukarka Fiskalna POSNET Thermal i 3001
|KWOTA PTU C iiiiiiiiiiiiiiiii|
|KWOTA PTU D jjjjjjjjjjjjjjjjj|
|KWOTA PTU E kkkkkkkkkk|
|KWOTA PTU F llllllllllllllllll|
|ŁĄCZNA KWOTA PTU pppppppppp|
|ŁĄCZNA NALEŻNOŚĆ tttttttttt|
|ILOŚĆ PARAGONÓW nnnnnn|

gdzie:
'aaa..a',..,'ffff..f' = 10-cio cyfrowe kwoty sprzedaży NETTO w grupach podatkowych,
drukowane z kompresją zer nieznaczących,
'zzz..z' = całkowita sprzedaż w grupie Z (towarów zwolnionych od podatku),
'ggg..g',..,'lll..l' = 10-cio cyfrowe kwoty sprzedaży należnego podatku w grupach
podatkowych, obliczone podczas drukowania raportu na podstawie akumulowanych w totalizerach wartości
sprzedaży BRUTTO, przy uwzględnieniu aktualnych stawek podatkowych, drukowane z kompresją zer
nieznaczących (zerowa ilość groszy jest drukowana jako ',- '),
'ppp..p' = całkowity należny podatek, suma kwot 'ggg..g'..'lll..l'
'ttt..t' = całkowity obrót dzienny zarejestrowany przez drukarkę, suma kwot
'aa..a',..,'ff..f','zz..z','ggg..',..,'lll..l'.
'nnnnnn' = ilość paragonów fiskalnych wydrukowana w czasie od ostatniego raportu dobowego
(drukowane jest 6 cyfr, bez kompresji zer nieznaczących).

5. Data i godzina wykonania raportu:


(po jednej linii pustej), w formacie:
|0123456789012345678901234567890123456789|
|rr-mm-dd gg:mm|
gdzie:
'rr' = dwie ostatnie cyfry roku,
'mm' = miesiąc,
'dd' = dzień,
'gg' = godzina,
'mm' = minuta.

6. Logo fiskalne wraz z numerem unikatowym kasy:


- jest identyczne jak dla paragonu fiskalnego.

Raport fiskalny okresowy pełny.

Raport fiskalny okresowy (pełny lub podsumowanie) może być inicjowany z systemu lub klawiatury
drukarki. Po określeniu daty początkowej i końcowej raportu drukarka przeszukuje pamięć fiskalną i drukuje
informacje o wszystkich zapisach w pamięci fiskalnej w zadanym okresie. Po wydrukowaniu wszystkich zapisów
jest drukowane podsumowanie raportu. Ponieważ pamięć fiskalna ma strukturę sekwencji rekordów rejestrujących,
różne informacje (raporty dobowe, zmiany stawek PTU i inne), będą występowały kolejno. Raport fiskalny
okresowy pełny składa się z 3 zasadniczych części:
- część wstępna: zawiera nagłówek, datę i czas wykonania raportu, tytuł, okres raportu i informacje
początkowe o wartościach stawek PTU,
- ciąg opisów poszczególnych rekordów (zapisów) pamięci fiskalnej: format każdego z opisów zależy od
rodzaju rekordu (zapisu), poszczególne opisy są na wydruku rozdzielone poziomymi kreskami,
- część końcowa: zawierająca podsumowania i logo fiskalne.
W trybie szkoleniowym postać raportu jest niemal identyczna jak w trybie fiskalnym. Są tylko następujące dwie
różnice:
- na początku i na końcu raportu są napisy '# niefiskalny #',
- logo fiskalne (specjalny znaczek) nie jest drukowane, natomiast numer unikatowy jest drukowany od lewej
krawędzi paragonu (a nie na środku) oraz nie są drukowane dwie litery w numerze unikatowym.
Zwróćmy ponadto uwagę, że ponieważ w trybie szkoleniowym nie są dokonywane zapisy do pamięci fiskalnej -
raport okresowy może zawierać zatem tylko jeden rekord: 'Zmiana stawek PTU' określający początkowe wartości
stawek PTU wpisane do pamięci fiskalnej w trakcie produkcji modułu fiskalnego.

Str. 49
Drukarka Fiskalna POSNET Thermal i 3001

Raport fiskalny okresowy pełny składa się z następujących pól:

1. Część wstępna:

1.1. Nagłówek:
- identyczny jak dla paragonu fiskalnego.

1.2. Data i godzina drukowania raportu:


|0123456789012345678901234567890123456789|
|rr-mm-dd gg:mm|

(znaczenia pól są jak dla raportu dobowego).

1.3. Tytuł raportu:


(po jednej linii pustej)
|0123456789012345678901234567890123456789|
|RAPORT FISKALNY OKRESOWY |

1.4. Okres czasu, którego dotyczy raport:


|0123456789012345678901234567890123456789|
|Za okres od: rr-mm-dd do: rr-mm-dd |
(format dat jest jak w raporcie dobowym).

1.5. Początkowe wartości stawek PTU:


(po jednej linii pustej):
|0123456789012345678901234567890123456789|
|POCZĄTKOWE WARTOŚCI STAWEK PTU: |
|PTU A aa % |
|PTU B bb % |
|PTU C cc % |

(te linie występują jeżeli zdefiniowano stawki PTU D, PTU E i PTU F ):

|PTU D dd % |
|PTU E ee % |
|PTU F ff % |

gdzie:
'aa',..,'ff' = dwucyfrowe wartości stawek PTU wyrażone w procentach
UWAGA:
1. Istnieje możliwość zdefiniowania stawek PTU z dokładnością większą od 1 %, wtedy przykładowy format
drukowania stawki (A) jest następujący:
|0123456789012345678901234567890123456789|
|PTU A aa.aa% |.
2. Jeżeli raport okresowy zaczyna się od początku pamięci fiskalnej, to wydrukowane początkowe wartości
stawek PTU będą zerowe (pierwszy rekord pamięci fiskalnej zawiera zawsze definicje stawek PTU) !

2. Zawartość pamięci fiskalnej w zadanym okresie:


Następuje tu ciąg opisów poszczególnych rekordów (zapisów) w pamięci fiskalnej, oddzielonych
poziomymi kreskami. Mogą wystąpić następujące warianty.

Str. 50
Drukarka Fiskalna POSNET Thermal i 3001
2.1. Raport dobowy:
Zapis w pamięci fiskalnej dotyczy rejestracji dziennej sprzedaży. Format opisu jest podobny do raportu
fiskalnego dobowego, opisanego wyżej i może wyglądać tak (dla zdefiniowanych w drukarce stawek A .. C):
|0123456789012345678901234567890123456789|
|rr-mm-dd Raport dobowy iiii|
|SPRZED. OPODATK. PTU A aaaaaaaaaa|
|SPRZED. OPODATK. PTU B bbbbbbbbbb|
|SPRZED. OPODATK. PTU C cccccccccc|
|KWOTA PTU A eeeeeeeeee|
|KWOTA PTU B ffffffffff|
|KWOTA PTU C gggggggggg|
|SPRZEDAŻ ZW. PTU zzzzzzzzzz|
|ŁĄCZNA KWOTA PTU pppppppppp|
|ŁĄCZNA NALEŻNOŚĆ tttttttttt|
|ILOŚĆ PARAGONÓW nnnnnn|
gdzie:
- znaczenie poszczególnych pól jest identyczne jak dla raportu dobowego, natomiast, 'rr-mm-dd' jest datą
zapisu tego raportu w pamięci fiskalnej, a 'iiii' stanowi numer kolejny raportu (w pamięci fiskalnej a
nie w obrębie raportu okresowego !),
- format opisu jest identyczny jak dla raportu dobowego.

2.2. Zmiana stawek PTU:


Zapis w pamięci fiskalnej dotyczy definicji nowych wartości stawek PTU, inicjowany jest z systemu):
|0123456789012345678901234567890123456789|
|rr-mm-dd Zmiana stawek PTU | Tyle linii ile zostało
|PTU A aa % | uaktywnionych stawek
|PTU B bb % | przez rozkaz
|PTU C cc % | LBSETPTU
|PTU D dd % |
|PTU E ee % |
|PTU F ff % |
gdzie:
'aa'..'ff' = nowe wartości stawek PTU (możliwy jest zapis dwu lub trzycyfrowy - zależnie od precyzji
określenia stawek, zgodnie z uwagami wyżej),
'rr-mm-dd' = data zapisu (wprowadzenia nowych stawek PTU).

2.3. Zerowanie RAM:

Zapis jest inicjowany automatycznie, jeżeli podczas auto testu drukarka wykryje błąd totalizerów. Wówczas
totalizery są automatycznie zerowane, na wyświetlaczu operatora pojawia się odpowiedni komunikat, natomiast w
pamięci fiskalnej jest zapisywany rekord danych zapamiętujący tę sytuację. Format opisu jest następujący:
|0123456789012345678901234567890123456789|
|rr-mm-dd Zerowanie RAM Nr nnnn gg:mm|
gdzie:
'rr-mm-dd' = data zapisu,
'nnnn' = aktualny numer zerowania RAM ustalonu na podstawie przejrzenia zapisów w pamięci
fiskalnej (numer aktualny = numer ostatni + 1),
'gg:mm' = godzina, o której wystąpiło zerowanie.

2.4. Odbudowa bazy:


Ten rekord jest wpisywany automatycznie, jeżeli urządzenie wykryje w czasie testu wstępnego błąd w bazie
danych o towarach. Baza danych jest wtedy "odbudowywana", a fakt ten oprócz komunikatu na wyświetlaczu jest
też rejestrowany w pamięci fiskalnej. Informacja o błędach w bazie danych jest istotna dla serwisu. Format opisu:
|0123456789012345678901234567890123456789|
|rr-mm-dd Odbudowa bazy |
gdzie:
'rr-mm-dd' = data zaistnienia zdarzenia (data ostatniego zapisu do pamięci fiskalnej).

Str. 51
Drukarka Fiskalna POSNET Thermal i 3001
UWAGA:
W przypadku gdy w drukarce zmieniano ilość stawek PTU na wydruku okresowym przed informacją
o zmianach stawek PTU pojawi się komunikat ‘Odbudowa bazy’. Jest on wtedy związany tylko i wyłącznie z faktem
zmiany stawek PTU (ilości) a nie z faktem błędu w bazie danych o towarach.

3. Cześć końcowa raportu :

3.1. Tytuł:
(po jednej linii pustej):
|0123456789012345678901234567890123456789|
|ŁĄCZNY RAPORT FISKALNY OKRESOWY |

3.2. Okres wydruku i zakres numerów raportów dobowych:


|0123456789012345678901234567890123456789|
|Za okres od: rr-mm-dd do: rr-mm-dd |
|Nr. raportu od: xxxx do: yyyy |
gdzie:
'xxxx' = numer pierwszego raportu dobowego w zadanym okresie,
'yyyy' = numer ostatniego raportu dobowego w zadanym okresie.

3.3. Podsumowanie raportu:


- format przykładowy jeżeli w zadanym okresie były zdefiniowane 3 stawki PTU:
|0123456789012345678901234567890123456789|
|SPRZED. OPODATK. PTU A aaaaaaaaaa|
|SPRZED. OPODATK. PTU B bbbbbbbbb|
|SPRZED. OPODATK. PTU C cccccccccc|
|SPRZEDAŻ ZW. PTU zzzzzzzzzz|
|KWOTA PTU A eeeeeeeeee|
|KWOTA PTU B ffffffffff|
|KWOTA PTU C gggggggggg|
|ŁĄCZNA KWOTA PTU pppppppppp|
|ŁĄCZNA NALEŻNOŚĆ tttttttttt|
|ILOŚĆ PARAGONÓW nnnnnn|

gdzie:
- znaczenie poszczególnych pól jest identyczne jak dla raportu dobowego
UWAGA: ilość drukowanych kwot sprzedaży i kwot PTU zależy w tym przypadku od tego ile jest uaktywnionych
stawek PTU dla daty końcowej raportu, ale może być większa jeżeli w analizowanym okresie było
uaktywnionych więcej stawek i była niezerowa sprzedaż w dodatkowych stawkach.

3.4. Logo fiskalne i numer unikatowy:


Po jednej linii oddzielającej, format jak dla paragonu fiskalnego.

Str. 52
Drukarka Fiskalna POSNET Thermal i 3001

Dokumenty niefiskalne.

Przewidziano szereg dokumentów niefiskalnych, których drukowanie jest z reguły inicjowane po odebraniu
odpowiedniej sekwencji sterującej. Są to np.:

• raport bazy danych (sekwencja LBDBREP),


• raport kasy/ zmiany (sekwencja LBCSHREP),
• wpłata do kasy (sekwencja LBINCCSH),
• wypłata z kasy (sekwencja LBDECSCH),
• stan kasy (sekwencja LBCSHSTS),
• zwrot towaru (sekwencja LBSTOCSH),
• zwrot kaucji (sekwencja LBOPAK),
• wydruki logowania/ wylogowania kasjera (sekwencje LBLOGIN I LBLOGOUT),
• wydruki związane z obsługą kart płatniczych (sekwencje LBTRSCARD i LBSTOCARD),

Pozostałe dokumenty niefiskalne mają postać wydruków kontrolnych, podczas wykonywania szczególnych operacji:
- zmiany stawek PTU,
- zerowania RAM,
- fiskalizacji.

UWAGA:

Dokumenty kontrolne dla zmiany stawek PTU powinny być dołączane przez serwis do książki serwisowej
urządzenia, natomiast dokumenty dla zerowania RAM powinny być przechowywane przez użytkownika
dla serwisu !

Wszystkie dokumenty niefiskalne mają na początku i na końcu napisy '# niefiskalny #', wydrukowane
znakami o podwójnej szerokości.

Raport okresowy drukowany jako podsumowanie.

1. Część wstępna:
- napis
|0123456789012345678901234567890123456789|
| # niefiskalny # |
1.1. Nagłówek:
- identyczny jak dla paragonu fiskalnego.

1.2. Data i godzina drukowania raportu:


|0123456789012345678901234567890123456789|
|rr-mm-dd gg:mm|
(znaczenia pól są jak dla raportu dobowego).

1.3. Tytuł raportu:


(po jednej linii pustej)
|0123456789012345678901234567890123456789|
|PODSUMOWANIE SPRZEDAŻY |

1.4. Okres czasu, którego dotyczy raport i numery raportów z zadanego okresu:

|0123456789012345678901234567890123456789|
|Za okres od: rr-mm-dd do: rr-mm-dd |
|-------------------------------------------------------------|

Str. 53
Drukarka Fiskalna POSNET Thermal i 3001
|Nr. raportu od: xxxx do: yyyy |
gdzie:
‘rr’- rok ; ’mm’- miesiąc ; ‘dd’ - dzień ,
'xxxx' = numer pierwszego raportu dobowego w zadanym okresie,
'yyyy' = numer ostatniego raportu dobowego w zadanym okresie.

1.5. Podsumowanie raportu:


( postać przykładowa dla 3 stawek aktywnych)
|0123456789012345678901234567890123456789|
|SPRZED. OPODATK. PTU A aaaaaaaaaa|
|SPRZED. OPODATK. PTU B bbbbbbbbbb|
|SPRZED. OPODATK. PTU C cccccccccc|
|SPRZEDAŻ ZW. PTU zzzzzzzzzz|
|KWOTA PTU A eeeeeeeeee|
|KWOTA PTU B ffffffffff|
|KWOTA PTU C gggggggggg|
|ŁĄCZNA KWOTA PTU pppppppppp|
|ŁĄCZNA NALEŻNOŚĆ tttttttttt|
|ILOŚĆ PARAGONÓW nnnnnn|

gdzie:
- znaczenie poszczególnych pól jest identyczne jak dla raportu okresowego (podsumowanie)

1.6. Numer unikatowy:


Po jednej linii oddzielającej, dosunięty do lewej krawędzi numer unikatowy bez napisu ‘DC’

|0123456789012345678901234567890123456789|
|xxxxxxxx |
gdzie:
xxxxxxxx - numer unikatowy urządzenia .

1.7. Część końcowa:


- napis
|0123456789012345678901234567890123456789|
| # niefiskalny # |

Raport bazy danych.

Raport bazy danych jest inicjowany przez ciąg sekwencji LBDBREP i składa się z następujących części:
- nagłówek (część wstępna) raportu,
- ciąg dowolnej liczby pozycji raportu (stawek PTU towarów),
- podsumowanie raportu.

Raport bazy danych składa się z następujących pól:

1. Część wstępna raportu bazy danych:

1.1. Napis 'niefiskalny':


(+ linia odstępu):
|0123456789012345678901234567890123456789|
| # niefiskalny # |

1.2. Nagłówek:
(jak w paragonie fiskalnym i np. raporcie dobowym).

Str. 54
Drukarka Fiskalna POSNET Thermal i 3001

1.3. Data i godzina drukowania raportu bazy danych:


|0123456789012345678901234567890123456789|
|rr-mm-dd gg:mm|

1.4. Tytuł raportu:


(po jednej linii pustej):
|0123456789012345678901234567890123456789|
|KONTROLA BAZY DANYCH |

1.5. Opis tabeli:


(po jednej linii pustej):
|0123456789012345678901234567890123456789|
|------ Nazwa --------------------------------------------|
|-- Numer -- PTU:serwer ------------PTU:drukarka -|
(druga linia drukowana z podkreśleniem).

2. Cześć informacyjna raportu bazy danych:


Część ta zawiera ciąg pozycji raportu, każda pozycja zawiera dwie linie tekstu, przy czym: w pierwszej linii
jest drukowana nazwa artykułu (przesłana z systemu !), a w drugiej linii numer pozycji (artykułu) na raporcie oraz
kod stawki PTU otrzymany z systemu (serwera), oraz kod w postaci ‘wagi’ stawki (A - najwyższa liczbowo stawka w
drukarce, F - najniższa liczbowo stawka ) według bazy danych drukarki:
|0123456789012345678901234567890123456789|
|nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn|
|iiiiii s dx|
gdzie:
'nnn..n' = maksymalnie 40-sto znakowa nazwa artykułu przesłana z systemu,
'iiiiii ' = 6-cio cyfrowy numer pozycji (drukowany bez kompresji zer),
's' = 'A' ... 'F','Z' = kod stawki PTU dla danego towaru przesłany z systemu,
'd' = 'A' ... 'F','Z','?' = kod priorytetu stawki w drukarce dla towaru o podanej nazwie
w bazie danych np. o ile stawka dla danego towaru jest liczbowo najwyższa to drukarka ‘zwróci’ na
wydruku znak ‘A’ ;
'?' - towar nieznany (nie był jeszcze sprzedawany !)
'x' = ' ' lub '*' = znacznik, przy czym gwiazdka '*' jest drukowana, jeżeli kod stawki PTU
przesłany z systemu oraz zawarty w bazie danych różnią się !

3. Podsumowanie raportu:

3.1. Jedna linia oddzielająca:


- pozioma kreska.

3.2. Zestawienie ilości towarów i ilości różnic:


|0123456789012345678901234567890123456789|
|Ilość towarów: tttttt|
|Ilość różnic: dddddd|
gdzie:
'tttttt' = 6-cio cyfrowa ilość towarów przesłana przez system w trakcie realizacji raportu,
'dddddd' = 6-cio cyfrowa ilość różnic wykrytych podczas analizy bazy danych.

3.3. Linia odstępu i końcowy napis: 'niefiskalny' (podwójna szerokość).

Str. 55
Drukarka Fiskalna POSNET Thermal i 3001

Raport kasy / zmiany.

Raport kasy / zmiany jest inicjowany przez sekwencje LBCSHREP.

Raport kasy/zmiany składa się z następujących pól:

1. Napis 'niefiskalny' (+ linia odstępu).

2. Nagłówek:
- jak w paragonie fiskalnym i np. raporcie dobowym.

3. Data i kolejny numer dokumentu NIEFISKALNEGO:


|0123456789012345678901234567890123456789|
|yy-mm-dd www kkkkkk|
gdzie:
'www' - 3 znakowe oznaczenie dnia tygodnia dopisywane przez drukarkę.

4. Linia odstępu i tytuł dokumentu:


|0123456789012345678901234567890123456789|
|RAPORT ZMIANOWY |

5. Linia odstępu i kolejne pozycje raportu:

|0123456789012345678901234567890123456789|
|Zmiana: zzzzzzzz |
|Kasjer: kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk|
|Sprzedaż: tttttttt,tt|
|Ilość paragonów fiskalnych: ffffff|
|Ilość paragonów anulowanych: aaaaaa|
|Ilość stornowanych pozycji ssssss|
|Wpłaty do kasy: iiiiiiii,ii|
|Wypłaty z kasy: dddddddd,dd|
|Stan kasy: cccccccc,cc|
|Początek zmiany: rr-mm-dd gg:mm|
|Koniec zmiany: rr-mm-dd gg:mm|
gdzie:
'zzz..z' = 8-mio znakowe oznaczenie zmiany (przesłane z systemu),
'kkk..k' = 32-wu znakowe oznaczenie (imię i nazwisko) kasjera (przesłane z systemu),
'ttt..t' = całkowity obrót na kasie w trakcie zmiany,
'ffffff' = 6-cio cyfrowa ilość paragonów fiskalnych wydrukowanych w trakcie zmiany,
'aaaaaa' = 6-cio cyfrowa ilość paragonów anulowanych wydrukowanych w trakcie zmiany,
'ssssss' = 6-cio cyfrowa ilość pozycji "stornowanych" wydrukowanych w trakcie zmiany,
'iii..i' = suma wpłat do kasy wykonanych w trakcie zmiany,
'ddd..d' = suma wypłat z kasy wykonanych w trakcie zmiany,
'ccc..c' = aktualny stan gotówki w kasie,
'rr-mm-dd','gg:mm' = data / godzina początku i końca zmiany.

6. Linia odstępu i końcowy napis: 'niefiskalny' (podwójna szerokość).

Str. 56
Drukarka Fiskalna POSNET Thermal i 3001

Wpłata do kasy.

Wpłata do kasy jest inicjowana przez sekwencje LBINCCSH i powoduje zwiększenie ilości gotówki
w kasie o przesłaną kwotę.

Raport niefiskalny wpłaty do kasy składa się z następujących pól:

1. Napis 'niefiskalny' (+ linia odstępu).

2. Data i godzina drukowania dokumentu:

|0123456789012345678901234567890123456789|
|rr-mm-dd gg:mm|

3. Linia odstępu i informacja o wpłaconej kwocie:


|0123456789012345678901234567890123456789|
|Wpłata do kasy: kkkkkkkk,kk|
gdzie:
'kkk..k' = wpłacona kwota, przesłana z systemu.

4. Linia odstępu i końcowy napis: 'niefiskalny' (podwójna szerokość).

Wypłata z kasy.

Wypłata z kasy jest inicjowana przez sekwencję LBDECCSH i powoduje zmniejszenie ilości gotówki
w kasie o przesłaną kwotę.

Raport niefiskalny wypłaty z kasy składa się z następujących pól:

1. Napis 'niefiskalny' (+ linia odstępu).

2. Data i godzina drukowania dokumentu:


|0123456789012345678901234567890123456789|
|rr-mm-dd gg:mm|

3. Linia odstępu i informacja o wypłaconej kwocie:


|0123456789012345678901234567890123456789|
|Wypłata z kasy: kkkkkkkk,kk|
gdzie:
'kkk..k' = wypłacona kwota, przesłana z systemu.

4. Linia odstępu i końcowy napis: 'niefiskalny' (podwójna szerokość).

Stan kasy.

Ten wydruk zawiera informację o ilości gotówki w kasie i jest inicjowany przez sekwencję LBCSHSTS.

Raport niefiskalny stanu kasy składa się z następujących pól:

1. Napis 'niefiskalny' (+ linia odstępu).

2. Data i godzina drukowania dokumentu:


w formacie:
|0123456789012345678901234567890123456789|

Str. 57
Drukarka Fiskalna POSNET Thermal i 3001
|rr-mm-dd gg:mm|

3. Linia odstępu i informacja o ilości gotówki w kasie:


|0123456789012345678901234567890123456789|
|Stan kasy: kkkkkkkk,kk|
gdzie:
'kkk..k' = ilość gotówki w kasie, obliczana na bieżąco przez drukarkę, na podstawie należności
uiszczonych przez klientów oraz wpłat i wypłat z kasy.

4. Linia odstępu i końcowy napis: 'niefiskalny' (podwójna szerokość).

Raport zmiany stawek PTU.

Jest to krótki, niefiskalny dokument kontrolny dla serwisu, drukowany po zrealizowaniu (poprawnym)
sekwencji sterującej LBSETPTU, powodującej zapis nowych stawek PTU (w trybie fiskalnym zapis jest trwały i
zapisywany w module fiskalnym).

Raport zmiany stawek PTU składa się z następujących pól:

1. Napis 'niefiskalny' (+ linia odstępu).

2. Tytuł dokumentu (+ linia odstępu):


|0123456789012345678901234567890123456789|
|Zmiana stawek PTU |

3. Nowe wartości stawek PTU:


przesłane z systemu (drukowane są tylko uaktywnione stawki):
|0123456789012345678901234567890123456789|
|PTU A aa % |
|PTU B bb % |
|PTU C cc % |
|PTU D dd % |
|PTU E ee % |
|PTU F ff % |

gdzie:
'aa',..'ff' = dwucyfrowe wartości stawek PTU wyrażone w procentach.
UWAGA:
- istnieje możliwość zdefiniowania stawek PTU z dokładnością większą niż 1% , wtedy format drukowania
stawki jest następujący:
|0123456789012345678901234567890123456789|
|PTU A aa,aa% |
- w drukarce można zdefiniować minimum jedną stawkę PTU (A), maksimum 6 stawek (A .. F).

4. Data i godzina wprowadzenia zmiany:


(po jednej linii odstępu):
|0123456789012345678901234567890123456789|
|rr-mm-dd gg:mm|

5. Numer unikatowy kasy:


|0123456789012345678901234567890123456789|
|XX nnnnnnnn |
gdzie:
'nnnnnnnnn' = 8-mio cyfrowa końcówka numeru unikatowego urządzenia (w tym przypadku 2 literowe
oznaczenie urządzenia XX jest drukowane także w trybie niefiskalnym),
‘XX’ – 2 literowe oznaczenie urządzenia.

Str. 58
Drukarka Fiskalna POSNET Thermal i 3001

6. Linia odstępu i końcowy napis: 'niefiskalny' (podwójna szerokość).

Raport zerowania RAM.

Jest to krótki, niefiskalny dokument kontrolny dla serwisu, drukowany po automatycznej realizacji
zerowania RAM, będącej wynikiem wykrycia błędu sumy kontrolnej totalizerów (test jest przeprowadzany po
włączeniu zasilania).

Raport zerowania RAM składa się z następujących pól:

1. Napis 'niefiskalny' (+ linia odstępu).

2. Tytuł dokumentu:
(+ linia odstępu).
|0123456789012345678901234567890123456789|
|Zerowanie RAM nr xx|

gdzie : xx - numer zerowania RAM (dopuszczalne max 49 zerowań).

3. Data i godzina zerowania RAM:


(po jednej linii odstępu):
|0123456789012345678901234567890123456789|
|rr-mm-dd gg:mm|

4. Numer unikatowy kasy:


|0123456789012345678901234567890123456789|
|DC nnnnnnnn |
gdzie:
'nnnnnnnnn' = 8-mio cyfrowa końcówka numeru unikatowego urządzenia.

5. Linia odstępu i końcowy napis 'niefiskalny' (podwójna szerokość).

Wydruk kontrolny nagłówka.

Wydruk ten składa się z początkowego napisu 'niefiskalny' (tak jak dla wszystkich dokumentów
niefiskalnych), następnie po jednej linii odstępu jest drukowana zawartość nagłówka paragonu przesłana przez
system do drukarki w sekwencji fiskalizującej LBSETHDR. Po wydrukowaniu nagłówka drukowane są 3 znaki
zapytania '???' - jeżeli nagłówek jest prawidłowo zakończony znakiem końca linii - powinny znaleźć się na
początku następnej linii. Następnie drukowany jest końcowy napis 'niefiskalny'. Wydruk ten umożliwia
wzrokową kontrolę poprawności przygotowania i przesłania nagłówka przed ostatecznym zatwierdzeniem
wykonania fiskalizacji (klawiszem TAK). Jeżeli są dostrzeżone jakiekolwiek błędy w wydrukowanym nagłówku, to
należy przerwać operację klawiszem NIE, ponieważ nie ma możliwości skorygowania nagłówka po jego trwałym
zapisie w module fiskalnym !!. Wydruk zatwierdzany przez serwisanta zawiera tylko linię z NIP i wtedy trzy znaki
zapytania ??? powinny znaleźć się bezpośrednio pod słowem NIP!. Pozostała część nagłówka zapisywana jest do
pamięci RAM i pomyłka w tej części zawsze może zostać poprawiona przez serwisanta; pomyłka w NIP oznacza
konieczność naprawy drukarki u producenta czyli w firmie POSNET.
UWAGA: Począwszy od wersji 17.1 wydruk kontrolny nagłówka jest drukowany również w przypadku, gdy jest on
wpisywany do pamięci RAM (w sposób nietrwały). Oczywiście nie ma wtedy komunikatu:
‘Wykonać fiskalizację T/N ?’
na wyświetlaczu operatora.

Str. 59
Drukarka Fiskalna POSNET Thermal i 3001

Zwrot towaru.
Format wydruku:

|0123456789012345678901234567890123456789|
| # niefiskalny # |
|0123456789012345678901234567890123456789|
| |
|rr-mm-dd gg:mm|
| |
|Zwrot towaru: kkkkkkkk,kk|
| |
| # niefiskalny # |

Wydruk raportu kasy / zmiany uwzględniającego formy płatności.


Ten raport kasy/ zmiany jest inicjowany przez sekwencje LBCSHREP1 i zawiera pozycje opisane poniżej:

1. Napis 'niefiskalny' (+ linia odstępu).


2. Nagłówek (jak w paragonie fiskalnym i np. raporcie dobowym).
3. Data i kolejny numer dokumentu NIEFISKALNEGO.
|0123456789012345678901234567890123456789|
|yy-mm-dd www kkkkkk|
4. Linia odstępu i tytuł dokumentu:
|0123456789012345678901234567890123456789|
|RAPORT ZMIANOWY |
5. Linia odstępu i kolejne pozycje raportu:
|0123456789012345678901234567890123456789|
|Zmiana: zzzzzzzz |
|Kasjer: kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk|
|PRZYCHODY: |
|Sprzedaż gotówkowa: zzzzzzzz,zz|
|Karta xxxxxxxxxxxxxxxx : aaaaaaaa,aa|
|Karta xxxxxxxxxxxxxxxx : bbbbbbbb,bb|
|Karta xxxxxxxxxxxxxxxx : cccccccc,cc|
|Karta xxxxxxxxxxxxxxxx : dddddddd,dd|
|Karta xxxxxxxxxxxxxxxx : eeeeeeee,ee|
|Karta xxxxxxxxxxxxxxxx : ffffffff,ff|
|Karta xxxxxxxxxxxxxxxx : gggggggg,gg|
|Karta xxxxxxxxxxxxxxxx : hhhhhhhh,hh| Linie opcjonalne
|Czek xxxxxxxxxxxxxxxx : iiiiiiii,ii| (nie muszą być
|Czek xxxxxxxxxxxxxxxx : jjjjjjjj,jj| drukowane !)
|Czek xxxxxxxxxxxxxxxx : kkkkkkkk,kk|
|Czek xxxxxxxxxxxxxxxx : llllllll,ll|
|Bon xxxxxxxxxxxxxxxx : mmmmmmmm,mm|
|Bon xxxxxxxxxxxxxxxx : nnnnnnnn,nn|
|Bon xxxxxxxxxxxxxxxx : oooooooo,oo|
|Bon xxxxxxxxxxxxxxxx : pppppppp,pp|
|Wpłaty do kasy: qqqqqqqq,qq|
|Kaucja pobrana: rrrrrrrr,rr|
|ROZCHODY: |
|Wypłaty z kasy: ssssssss,ss|
|Kaucja zwrócona: tttttttt,tt|
|STAN KASY: uuuuuuuu,uu|
|Ilość paragonów fiskalnych: vvvvv|
|Ilość paragonów anulowanych: wwwww|
|Ilość stornowanych pozycji xxxxx|
|Początek zmiany: rr-mm-dd gg:mm|
|Koniec zmiany: rr-mm-dd gg:mm|

Str. 60
Drukarka Fiskalna POSNET Thermal i 3001
6. Linia odstępu i końcowy napis 'niefiskalny' (podwójna szerokość).

Format wydruku pokwitowania sprzedaży.

1. Napis 'niefiskalny' (+ linia odstępu).


2. Nagłówek (jak w paragonie fiskalnym i np. raporcie dobowym).
3. Data, godzina i kolejny numer dokumentu niefiskalnego.
|0123456789012345678901234567890123456789|
|yy-mm-dd www gg:mm kkkkkk|
UWAGA: - w tej formatce drukujemy tez godzinę transakcji w tej linii
4. Linia odstępu
5. Linia identyfikująca stanowisko sprzedaży (jeżeli parametr Ps nie występu-
je lub jest równy 0).
|0123456789012345678901234567890123456789|
|Kasa: kk Kasjer: lllll |
gdzie: 'kk','lllll' - napisy przesłane w sekwencji.
6. Linia identyfikująca transakcje
|0123456789012345678901234567890123456789|
|Numer dowodu sprzedaży: nnnnnnnnnnnn|
gdzie: 'nnnnnnnnnnnnn' - napis przesłany w sekwencji.
7. Identyfikacja kontrahenta i urządzenia POLCARD'u.
|0123456789012345678901234567890123456789|
|TID: xxxxxxxx UID: yyyyyyyyyyyyyyy|
gdzie: 'xxxxxxxx','yyyyyyyyyyyyyyy' - napisy przesłane w sekwencji.
8. Linia odstępu
9. Identyfikacja karty kredytowej.
|0123456789012345678901234567890123456789|
|Karta: zzzzzzzzzzzzzzzz |
| cccccccccccccccccccc, Ważna do: mm/yy |
gdzie: 'zz..z','cc..c','mm','yy' - napisy przesłane w sekwencji.
10.Kod autoryzacji.
|0123456789012345678901234567890123456789|
|Numer autoryzacji: aaaaaaaaa |
gdzie: 'aaaaaaaaa' - napis przesłany w sekwencji.
11.Linia odstępu
12.Suma transakcji.
|0123456789012345678901234567890123456789|
|Sprzedaż: PLN ssssssss,ss|
13.Linia odstępu
14.Formula przyjęcia zobowiązania, 3 linie wolne i miejsce na podpis.
|0123456789012345678901234567890123456789|
|PROSZE OBCIAZYC MOJE KONTO |
| |
| |
| |
| ............................. |
| Podpis posiadacza karty |
15.Linia odstępu i końcowy napis 'niefiskalny' (podwójna szerokość)
lub linia odstępu i opis:
|0123456789012345678901234567890123456789|
|Oryginał dla sprzedawcy |
lub:
|Kopia dla kupującego |

Str. 61
Drukarka Fiskalna POSNET Thermal i 3001

Format wydruku transakcji uznania.


1. Napis 'niefiskalny' (+ linia odstępu).
2. Nagłówek (jak w paragonie fiskalnym i np. raporcie dobowym).
3. Data, godzina i kolejny numer dokumentu NIEFISKALNEGO.
|0123456789012345678901234567890123456789|
|yy-mm-dd www gg:mm kkkkkk|
UWAGA: - w tej formatce drukujemy tez godzinę transakcji w tej linii
4. Linia odstępu
5. Linia identyfikująca stanowisko sprzedaży (jeżeli parametr Ps nie występu-
je lub jest równy 0).
|0123456789012345678901234567890123456789|
|Kasa: kk Kasjer: lllll|
gdzie: 'kk','lllll' - napisy przesłane w sekwencji.
6. Linia identyfikująca transakcje
|0123456789012345678901234567890123456789|
|Numer dowodu sprzedaży: nnnnnnnnnnnn |
gdzie: 'nnnnnnnnnnnnn' - napis przesłany w sekwencji.
7. Identyfikacja kontrahenta i urządzenia POLCARD'u.
|0123456789012345678901234567890123456789|
|TID: xxxxxxxx UID: yyyyyyyyyyyyyyy|
gdzie: 'xxxxxxxx','yyyyyyyyyyyyyyy' - napisy przesłane w sekwencji.
8. Linia odstępu
9. Identyfikacja karty kredytowej.
|0123456789012345678901234567890123456789|
|Karta: zzzzzzzzzzzzzzzz |
| cccccccccccccccccccc, Ważna do: mm/yy |
gdzie: 'zz..z','cc..c','mm','yy' - napisy przesłane w sekwencji.
10.Kod autoryzacji.
|0123456789012345678901234567890123456789|
|Numer autoryzacji: aaaaaaaaa |
gdzie: 'aaaaaaaaa' - napis przesłany w sekwencji.
11.Linia odstępu
12.Suma transakcji uznania.
|0123456789012345678901234567890123456789|
|Uznanie: PLN ssssssss,ss|
13.Linia odstępu
14.Trzy linie wolne i miejsce na podpis.
|0123456789012345678901234567890123456789|
| |
| |
| |
| ............................. |
| Podpis posiadacza karty |
15.Linia odstępu i końcowy napis 'niefiskalny' (podwójna szerokość)
lub linia odstępu i opis:
|0123456789012345678901234567890123456789|
|Oryginał’ dla sprzedawcy |
lub:
|Kopia dla kupującego |

Str. 62
Drukarka Fiskalna POSNET Thermal i 3001

Logowanie kasjera.
Format wydruku:

|0123456789012345678901234567890123456789|
| # niefiskalny # |
(nagłówek)
|yy-mm-dd www gg:mm kkkkkk|
| Rozpoczęcie pracy kasjera |
|Kasjer: kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk|
|Numer kasy: nnnnnnnn|
| # niefiskalny # |

Wylogowanie kasjera.
Format wydruku:

|0123456789012345678901234567890123456789|
| # niefiskalny # |
(nagłówek)
|yy-mm-dd www gg:mm kkkkkk|
| Zakończenie pracy kasjera |
|Kasjer: kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk|
|Numer kasy: nnnnnnnn|
| # niefiskalny # |

Dokument "zwrot kaucji"

Format wydruku:

|0123456789012345678901234567890123456789|
| # niefiskalny # |
(nagłówek)
|yy-mm-dd www gg:mm kkkkkk|
|Zwrot kaucji: kkkkkkkkkkkkkkkkkkkk|
| # niefiskalny # |

Str. 63
Drukarka Fiskalna POSNET Thermal i 3001

9. Operacje rachunkowe wykonywane przez drukarkę.

Wstęp.

Różnego rodzaju obliczenia są wykonywane przez drukarkę w trakcie:


• realizacji transakcji (drukowania paragonu fiskalnego),
• drukowania raportu dobowego,
• drukowania raportu okresowego.

Można zastosować do obliczenia podatku VAT różne wyrażenia: zarówno wychodząc z kwoty NETTO lub
kwoty BRUTTO. Z uwagi na konieczność zaokrągleń numerycznych wyników cząstkowych (i stanu totalizerów !)
uzyskamy w obu przypadkach nieco różniące się wyniki. Dlatego przyjęto sposób realizacji obliczeń numerycznych
(wynikający z uzgodnień z Ministerstwem Finansów) oparty o założenie, że w systemie sprzedaży detalicznej
podstawowe znaczenie mają kwoty BRUTTO.
Stąd wynikają dwa fakty:
1. podczas wykonywania transakcji drukarka otrzymuje z systemu kwoty BRUTTO dla poszczególnych
pozycji paragonu (por. opis sekwencji LBTRSLN),
2. w totalizerach drukarki są akumulowane wartości BRUTTO sprzedaży w poszczególnych grupach
podatkowych (A, B, C, D, E, F, Z).

Punktem wyjścia do wszystkich obliczeń są aktualne wartości stawek podatkowych. Stawki te są


wyznaczane przez procesor drukarki na podstawie przeszukania pamięci fiskalnej wykonanego po włączeniu
zasilania. Wyszukiwany jest ostatni rekord (zapis) zmiany stawek PTU, odczytywane są z niego aktualne wartości
stawek PTU i chowane w tablicy STAWKA[A..F]. Zmiana stawek PTU powoduje zapis nowych wartości do pamięci
fiskalnej oraz wpisanie nowych wartości do tablicy.

Obliczenia realizowane w trakcie transakcji.

Podczas realizacji transakcji drukarka otrzymuje z systemu informację o kolejnych pozycjach paragonu
(sprzedanych artykułach). Informacje te są przesłane w formie ciągu sekwencji LBTRSLN. Z obliczeniowego
i fiskalnego punktu widzenia w odniesieniu do każdego artykułu istotne są następujące informacje:

• nazwa artykułu,
• cena jednostkowa
• ilość
• kod stawki PTU,
• rabat/ dopłata procentowa lub kwotowa,
• wartość pozycji BRUTTO.

W drukarkach POSNET realizowana jest kontrola zgodności wartości BRUTTO dla linijki paragonu z
wynikiem mnożenia <cena>*<ilość>. Kontrola działa w ten sposób, że wynik mnożenia (zaokrąglony do
dwóch miejsc po przecinku !) musi się zgadzać z dokładnością do +/- 1 % z przesłaną wartością BRUTTO.
Oczywiście do wydruku i obliczeń wartości transakcji zostanie przyjęta przesłana (a nie obliczona) wartość
BRUTTO. W przypadku gdy wynik mnożenia nie mieści się w przedziale <0.99*BRUTTO; 1.01*BRUTTO>
zostanie zgłoszony błąd #20.

Nazwa artykułu jest dla drukarki istotna ze względu na kontrolę poprawności kodu stawki PTU (drukarka posiada
bazę, danych gdzie zawarte są informacje o kodach stawek PTU dla towarów o danych nazwach).

Na początku realizacji transakcji (po odebraniu sekwencji LBTRSHDR) drukarka zeruje sumy sprzedaży w
grupach podatkowych dla paragonu, umieszczane w tablicy BRUTTO[A..F,Z], czyli wykonuje się:
BRUTTO[A] := 0;
BRUTTO[B] := 0;
BRUTTO[C] := 0;

Str. 64
Drukarka Fiskalna POSNET Thermal i 3001
BRUTTO[D] := 0;
BRUTTO[E] := 0;
BRUTTO[F] := 0;
BRUTTO[Z] := 0.
Zerowana jest też kwota należności dla klienta:
P_TOTAL := 0;
(przyjęto oznaczenie P_TOTAL aby odróżnić tę wartość od kwoty TOTAL otrzymanej z systemu w sekwencji
kończącej transakcję LBREXIT lub LBTRXEND).

Po otrzymaniu każdej pozycji (odebraniu sekwencji LBTRSLN) mamy wartość BRUTTO i kod stawki
PTU = A, B, C, D, E, F lub Z,

wykonujemy:
BRUTTO[PTU] := BRUTTO[PTU] + BRUTTO { Pr=0 brak rabatu/ dopłaty}
lub
BRUTTO[PTU] := BRUTTO[PTU] + BRUTTO - RABAT { Pr=1 rabat kwotowy }
lub
BRUTTO[PTU] := BRUTTO[PTU] + BRUTTO*(1 - RABAT/100) { Pr=2 rabat procentowy}
lub
BRUTTO[PTU] := BRUTTO[PTU] + BRUTTO + DOPŁATA { Pr=3 dopłata kwotowa}
lub
BRUTTO[PTU] := BRUTTO[PTU] + BRUTTO*(1 + DOPŁATA/100) { Pr=4 dopłata procentowa }

gdzie: RABAT,DOPŁATA wartość pola RABAT w sekwencji LBTRSLN (procentowa lub kwotowa)
umieszczana przez aplikację w zależności od parametru Pr (>0).

(czyli zwiększamy/zmniejszamy sprzedaż w wyspecyfikowanej grupie podatkowej), oraz:


P_TOTAL := P_TOTAL + BRUTTO { Pr=0 brak rabatu/dopłaty}
lub
P_TOTAL := P_TOTAL + BRUTTO - RABAT { Pr=1 rabat kwotowy }
lub
P_TOTAL := P_TOTAL + BRUTTO*(1 - RABAT/100) { Pr=2 rabat procentowy}
lub
P_TOTAL := P_TOTAL + BRUTTO + DOPŁATA { Pr=3 dopłata kwotowa}
lub
P_TOTAL := P_TOTAL + BRUTTO*(1 + DOPŁATA/100) { Pr=3 dopłata procentowa }

gdzie: RABAT,DOPŁATA wartość pola RABAT w sekwencji LBTRSLN (procentowa lub kwotowa)
umieszczana przez aplikację w zależności od parametru Pr (>0).

(czyli zwiększamy kwotę należności dla klienta).

Wszystkie wyżej wymienione obliczenia są prowadzone z precyzją 10-cyfrową. Wystąpienie nadmiaru


obliczeniowego spowoduje zgłoszenie błędu (w tym przypadku będzie to zgłoszone jako kod błędu 22 (błąd
operacji STORNO) ponieważ nadmiar stałoprzecinkowy powoduje zmianę znaku wyniku !).
Wartość chwilowa P_TOTAL jest też w przypadku realizacji transakcji w trybie "On-Line" wysyłana na
wyświetlacze LED i LCD/ VFD (wraz z nazwą towaru).

UWAGA:
Naliczanie podatku VAT w grupach A..F może być prowadzone na dwa sposoby
* sumowanie podatku VAT obliczonego dla poszczególnych pozycji paragonu (w grupach podatkowych),
* sumowanie kwot sprzedaży BRUTTO w grupach A..D i obliczenie kwot należnego podatku w grupach na
podstawie sum obliczanych jak wyżej.

W ogólnym przypadku obie te metody dają nieco różniące się wyniki, z uwagi na zaokrąglenia numeryczne. Obie są
również dopuszczalne, ponieważ kwoty VAT drukowane na paragonie mają charakter informacyjny (rozliczenie
podatnika następuje w oparciu o kwoty w raportach dobowych). W aktualnej wersji oprogramowania drukarki

Str. 65
Drukarka Fiskalna POSNET Thermal i 3001
przyjęto drugą z wymienionych metod - ponieważ poprawność naliczenia podatku jest w tym wariancie prostsza do
skontrolowania.

Po zakończeniu transakcji przez system (odebraniu poprawnej sekwencji LBTREXIT lub LBTRXEND)
mamy zatem obliczone wartości:
BRUTTO[A]...BRUTTO[F], BRUTTO[Z], P_TOTAL.
Wynik P_TOTAL porównujemy z wartością TOTAL otrzymaną z systemu w sekwencji LBTREXIT lub
LBTRXEND. Dla poprawnego zakończenia transakcji wymaga się, aby obie te kwoty były jednakowe.

Jeżeli w sekwencji LBTREXIT (lub LBTRXEND ) przesłano niezerową wartość rabatu Pr wyrażona w [%]
to dokonujemy korekcji sum BRUTTO[A]..BRUTTO[Z]:
BRUTTO[A] := BRUTTO[A] * (1 - Pr / 100),
BRUTTO[B] := BRUTTO[B] * (1 - Pr / 100),
BRUTTO[C] := BRUTTO[C] * (1 - Pr / 100),
BRUTTO[D] := BRUTTO[D] * (1 - Pr / 100),
BRUTTO[E] := BRUTTO[C] * (1 - Pr / 100),
BRUTTO[F] := BRUTTO[D] * (1 - Pr / 100),
BRUTTO[Z] := BRUTTO[Z] * (1 - Pr / 100).
Jeżeli w sekwencji LBTREXIT (lub LBTRXEND )przesłano niezerowy parametr Px (Px = rodzaj rabatu
(niezależny od parametru Pr !) = 0: brak,1: rabat procentowy,2: dopłata procentowa) to kwoty BRUTTO[PTU]
zostaną obliczone wg wzoru

BRUTTO[PTU]:= BRUTTO[PTU]*( 1 ± RABAT/100 )

gdzie: RABAT - wartość procentowa rabatu (Px=1) lub dopłaty (Px=2) przesłana w sekwencji LBTREXIT
w polu RABAT

Tak uzyskane wyniki zaokrąglamy do najmłodszej pozycji (0,01 zł). Następnie obliczamy wielkości pomocnicze:
NETTO[A] := BRUTTO[A] / (1 + STAWKA[A] / 100),
NETTO[B] := BRUTTO[B] / (1 + STAWKA[B] / 100),
NETTO[C] := BRUTTO[C] / (1 + STAWKA[C] / 100),
NETTO[D] := BRUTTO[D] / (1 + STAWKA[D] / 100),
NETTO[E] := BRUTTO[E] / (1 + STAWKA[E] / 100),
NETTO[F] := BRUTTO[F] / (1 + STAWKA[F] / 100).
(te wartości też zaokrąglamy do najmłodszej cyfry).

Ostatecznie obliczamy wartości podatku VAT w grupach podatkowych:


VAT[A] := BRUTTO[A] - NETTO[A],
VAT[B] := BRUTTO[B] - NETTO[B],
VAT[C] := BRUTTO[C] - NETTO[C],
VAT[D] := BRUTTO[D] - NETTO[D],
VAT[E] := BRUTTO[E] - NETTO[E],
VAT[F] := BRUTTO[F] - NETTO[F].

Teraz drukujemy na paragonie te wartości BRUTTO[A]...BRUTTO[F], oraz VAT[A]...VAT[F], które są niezerowe.


Podobnie drukujemy kwotę BRUTTO[Z], jeżeli jest niezerowa. Jeżeli nie występuje rabat, to drukujemy kwotę
końcową P_TOTAL (równą TOTAL) drukiem o podwójnej szerokości jako kwotę do zapłacenia przez klienta. Jeżeli
natomiast występuje rabat, to kwotę tę drukujemy w linii o pojedynczej szerokości (pod hasłem 'Kwota:'). W
następnej drukujemy linii wielkość rabatu Pr, natomiast sumę należności dla klienta wyliczamy jeszcze raz:
P_TOTAL := BRUTTO[A] + ...... + BRUTTO[F] + BRUTTO[Z];
(ponieważ kwoty po prawej stronie równania zostały przeliczone wcześniej przy uwzględnieniu wielkości rabatu).
Tak uzyskaną sumę drukujemy w linii o podwójnej szerokości (pod hasłem 'Suma zł'), jako ostateczną kwotę
należności dla klienta.
Jeżeli paragon kończono sekwencją LBTRXEND z uwzględnieniem kaucji, to ostateczna kwota do zapłaty przez
klienta jest liczona wg wzoru:

Str. 66
Drukarka Fiskalna POSNET Thermal i 3001

P_TOTAL := BRUTTO[A] + ...+ BRUTTO[F] + BRUTTO[Z] + KAUCJA_POBRANA -KAUCJA_ZWROCONA;

Jeżeli w sekwencji kończącej transakcję aplikacja przesłała też wartość wpłaty przez klienta (WPLATA), to
obliczamy:
RESZTA := WPLATA - P_TOTAL;
Jeżeli wynik jest dodatni, to drukujemy na paragonie dodatkowe dwie linie zawierające wielkość wpłaty oraz reszty.

Ostatnim etapem realizacji transakcji jest aktualizacja totalizerów. Totalizery drukarki zawierają
następujące lokacje:
* kwoty sprzedaży BRUTTO w grupach podatkowych:
TOT[A], TOT[B], TOT[C], TOT[D], TOT[E], TOT[F], TOT[Z], oraz
* licznik paragonów fiskalnych PAR_NUM.
Licznik paragonów fiskalnych ma zakres 0.. 999999 i jest zwiększany przed wydrukowaniem jego
wartości w stopce paragonu (ponieważ jego początkowa wartość, uzyskana podczas fiskalizacji lub
zerowania RAM wynosi 0).
Z kolei kwoty sprzedaży są aktualizowane zgodnie z kwotami BRUTTO obliczonymi dla paragonu
w grupach podatkowych:
TOT[A] := TOT[A] + BRUTTO[A],
TOT[B] := TOT[B] + BRUTTO[B],
TOT[C] := TOT[C] + BRUTTO[C],
TOT[D] := TOT[D] + BRUTTO[D],
TOT[E] := TOT[E] + BRUTTO[E],
TOT[F] := TOT[F] + BRUTTO[F],
TOT[Z] := TOT[Z] + BRUTTO[Z].
Zakres licznika paragonów na raporcie dobowym wynosi: 999999 ,zakresy każdej z kwot (sprzedaż dobowa)
wynoszą 2.684.354,55 (228-1) .

Jeżeli w wyniku wykonania sekwencji LBTREXIT (lub LBTRXEND ) wystąpi błąd nr 28 (przepełnienie
totalizerów), czyli obrót dzienny w co najmniej jednej z grup podatkowych przekracza powyższy zakres -
należy wykonać raport dobowy i ponowić wykonanie transakcji.

Str. 67
Drukarka Fiskalna POSNET Thermal i 3001

Obliczenia realizowane w trakcie drukowania raportu dobowego.

Wykonanie raportu dobowego jest związane z następującymi operacjami:


• dzienna sprzedaż BRUTTO w grupach podatkowych (wartości TOT[A]...TOT[Z] zostaje przepisana z
totalizerów drukarki (które stanowią fizycznie lokacje pamięci RAM nieulotnej), do pamięci fiskalnej
(pamięci trwałej PROM !),
• po dokonaniu tego zapisu lokacje totalizerów są zerowane,
• drukowany jest odpowiedni raport na drukarce paragonowej, zawierający kwoty NETTO sprzedaży w
grupach podatkowych, kwoty należnego podatku dla danych grup podatkowych, łączną kwotę należnego
podatku oraz łączny obrót.

Technika obliczania danych dla raportu dobowego ma fundamentalne znaczenie, ponieważ stanowią one
podstawę do rozliczenia podatnika VAT - w odróżnieniu od danych o należnym podatku zawartych na paragonach,
które mają charakter wyłącznie informacyjny.

Niezależnie od przyjętej implementacji obliczania VAT dla paragonów, z uwagi na zaokrąglenia numeryczne,
podatek VAT obliczany na podstawie dziennej sprzedaży w grupach podatkowych z reguły będzie nieco się różnić
od kwot uzyskanych ze zsumowania kwot należnego podatku drukowanych na paragonach w danym okresie.

Przyjęty sposób naliczania podatku dla raportu dobowego został uzgodniony z Ministerstwem Finansów i jest
następujący.
1.) Kwoty sprzedaży NETTO dla poszczególnych grup podatkowych są wyliczane na podstawie kwot sprzedaży
BRUTTO akumulowanych w totalizerach drukarki, zwiększanych z każdą transakcją (TOT[A]...TOT[D]), oraz
tablicy aktualnych stawek PTU (STAWKA[A]..STAWKA[F]) :
R_NETTO[A] := TOT[A] / (1 + STAWKA[A] / 100),
R_NETTO[B] := TOT[B] / (1 + STAWKA[B] / 100),
R_NETTO[C] := TOT[C] / (1 + STAWKA[C] / 100),
R_NETTO[D] := TOT[D] / (1 + STAWKA[D] / 100),
R_NETTO[E] := TOT[E] / (1 + STAWKA[E] / 100),
R_NETTO[F] := TOT[F] / (1 + STAWKA[F] / 100).
(przyjęto oznaczenia R_NETTO[A]...R_NETTO[F] dla odróżnienia od analogicznych kwot wyliczanych dla
paragonu). Wyniki powyższych wyrażeń są zaokrąglane do najmłodszej pozycji tj. 0,01 zł .
2.) Na raporcie są zawsze drukowane kwoty R_NETTO[A]..R_NETTO[F] dla „aktywnych” stawek PTU(nawet
jeżeli odpowiednie kwoty są zerowe !). Kwoty te są na raporcie opatrzone tytułem: 'SPRZED. OPODATK.
PTU x', gdzie 'x' = 'A'..'F' - identyfikuje grupę podatkową. Ponadto zawsze jest drukowana sprzedaż w grupie
zwolnionej od podatku, akumulowana w lokacji totalizera TOT[Z], oznaczona tytułem:
'SPRZEDAŻ ZW. PTU'.
3.) Obliczane są kwoty należnego podatku VAT dla poszczególnych grup A..F, wg wyrażeń:
R_VAT[A] := TOT[A] - R_NETTO[A],
R_VAT[B] := TOT[B] - R_NETTO[B],
R_VAT[C] := TOT[C] - R_NETTO[C],
R_VAT[D] := TOT[D] - R_NETTO[D],
R_VAT[E] := TOT[E] - R_NETTO[E],
R_VAT[F] := TOT[F] - R_NETTO[F].
(przyjęto oznaczenia R_VAT[A]...R_VAT[F] dla odróżnienia od analogicznych kwot wyliczanych dla
paragonu). Zwróćmy uwagę, że te kwoty już nie wymagają zaokrąglenia.
4.) Na raporcie dobowym są drukowane tylko te z kwot R_VAT[A]...R_VAT[F], które są niezerowe.
5.) Obliczamy łączną kwotę należnego podatku oraz łączną sprzedaż:
TOT_VAT := R_VAT[A] + .... + R_VAT[F],
R_TOTAL := TOT[A] + ....... + TOT[F] + TOT[Z],
(te obliczenia są prowadzone z precyzją 14-cyfrową, stąd nadmiar arytmetyczny nie może wystąpić, nawet jeżeli
wartości lokacji totalizerów TOT[A]..TOT[F] są bliskie maksymalnym).
6.) Obie kwoty są drukowane na raporcie dobowym i opatrzone tytułami:

Str. 68
Drukarka Fiskalna POSNET Thermal i 3001
'ŁĄCZNA KWOTA PTU'
oraz
'ŁĄCZNA NALEŻNOŚĆ'.

Na raporcie dobowym jest również drukowana ilość paragonów fiskalnych wydrukowanych od ostatniego
raportu dobowego. Ponieważ licznik paragonów fiskalnych drukarki (lokacja PAR_NUM totalizerów) zlicza
permanentnie paragony (nie jest zerowany w momencie drukowania raportu dobowego !) ilość ta jest wyznaczana
przez znalezienie poprzedniego raportu dobowego i odjęcie schowanej poprzednio wartości licznika od stanu
aktualnego (zwróćmy uwagę, że jeżeli poprzednio było zerowanie RAM to licznik paragonów był wyzerowany !).
Uzyskana różnica jest drukowana na paragonie pod tytułem:

'ILOŚĆ PARAGONÓW'.

Obliczenia realizowane w trakcie drukowania raportu okresowego.

Podstawowa część raportu okresowego składa się z sekwencyjnego opisu poszczególnych rekordów
(zapisów) w pamięci fiskalnej. Zapisy te mogą dotyczyć różnych sytuacji - mogą to być raporty dobowe, zmiany
stawek PTU, zerowania RAM i inne. Podstawowe znaczenie z fiskalnego i obliczeniowego punktu widzenia mają tu
oczywiście raporty dobowe. Technika obliczeniowa dla opisów poszczególnych raportów dobowych drukowanych
w obrębie raportu okresowego jest identyczna jak opisana w poprzednim punkcie. Jest to oczywiste zważywszy, że
wykonanie raportu dobowego polega między innymi na trwałym wpisaniu stanu totalizerów drukarki do pamięci
fiskalnej. W trakcie wykonywania raportu okresowego zapisy te są zatem odczytywane po kolei i wykonywane są
identyczne obliczenia jak dla raportu dobowego, z tą różnicą, że dane wejściowe (w powyższych wyrażeniach
TOT[A]...TOT[Z]) pochodzą w tym momencie nie z totalizerów drukarki (jak w raporcie dobowym), lecz z pamięci
fiskalnej. Druga istotna różnica dotyczy stawek PTU. Przed rozpoczęciem drukowania raportu drukarka przeszukuje
pamięć fiskalną w celu wyznaczenia stawek PTU na początku raportu. Znajdowany jest ostatni zapis o zmianach
stawek PTU przed datą początkową raportu. Wyznaczone stawki są drukowane w nagłówku raportu okresowego pod
tytułem: 'POCZĄTKOWE WARTOŚCI STAWEK PTU'. Obliczenia danych dla pierwszego raportu dobowego
ujętego w raporcie okresowym zakładają zapisane w nagłówku wartości stawek. Jeżeli w trakcie drukowania raportu
zostanie odkryty zapis o zmianie stawek (sygnalizowany opisem: "Zmiana stawek PTU"), to dalsze obliczenia dla
raportów dobowych będą prowadzone w oparciu o zmienione wartości stawek PTU.
Podczas drukowania raportu okresowego obliczane są na bieżąco sumy kwot NETTO i kwot VAT dla
całego raportu tj. po obliczeniu i wydrukowaniu danych dla każdego z odczytanych raportów dobowych obliczamy
(w przypadku zdefiniowania czterech stawek PTU ):
RO_NETTO[A] := RO_NETTO[A] + RD_NETTO[A],
RO_NETTO[B] := RO_NETTO[B] + RD_NETTO[B],
RO_NETTO[C] := RO_NETTO[C] + RD_NETTO[C],
RO_NETTO[D] := RO_NETTO[D] + RD_NETTO[D],
RO_NETTO[E] := RO_NETTO[E] + RD_NETTO[E],
RO_NETTO[F] := RO_NETTO[F] + RD_NETTO[F],
oraz:
RO_VAT[A] := RO_VAT[A] + RD_VAT[A],
RO_VAT[B] := RO_VAT[B] + RD_VAT[B],
RO_VAT[C] := RO_VAT[C] + RD_VAT[C],
RO_VAT[D] := RO_VAT[D] + RD_VAT[D],
RO_VAT[E] := RO_VAT[E] + RD_VAT[E],
RO_VAT[F] := RO_VAT[F] + RD_VAT[F],

wreszcie:
RO_TOT_VAT := RD_VAT[A] + RD_VAT[B] + ........ + RD_VAT[F],
RO_TOTAL := RD_TOT[A] + RD_TOT[B] + ....... + RD_TOT[F] + RD_TOT[Z],
gdzie RD_NETTO[A]..RD_NETTO_[F], RD_VAT[A]..RD_VAT[F] są wartościami obliczonymi dla danego raportu
dobowego zapisanego w pamięci fiskalnej, a wartości RD_TOT[A]...RD_TOT[F] są stanem totalizera odczytanym z
pamięci fiskalnej (kwoty BRUTTO !).

Str. 69
Drukarka Fiskalna POSNET Thermal i 3001
Wszystkie wyżej wymienione obliczenia są prowadzone z precyzją 14-cyfrową, co daje maksymalny możliwy obrót
na kasie w okresie objętym raportem okresowym równy: 999.999.999.999,99 zł nie należy zatem spodziewać się
nadmiaru arytmetycznego.
Uzyskane kwoty RO_NETTO[A]..RO_NETTO[F], RO_VAT[A]..RO_VAT[F], RD_TOT_VAT,
RD_TOTAL są zatem po prostu sumami odpowiednich pozycji z poszczególnych raportów cząstkowych. Zwróćmy
uwagę, że nie może być inaczej, ze względu na sygnalizowane wcześniej możliwe zmiany stawek PTU. Z tego
względu (nawet jeżeli stawki PTU w trakcie drukowania całego raportu są stałe) kontrola obliczenia kwot należnego
podatku w oparciu o sumy RO_NETTO[A]..RO_NETTO[F] może wykazać w ogólnym przypadku nieznaczny błąd
obliczeniowy (zaokrąglenia kwot cząstkowych RO_NETTO[A]..RO_NETTO[F] !).
Kwoty RO_NETTO[A]..RO_NETTO[F], RO_VAT[A]..RO_VAT[F], RD_TOT_VAT, RD_TOTAL są
drukowane na końcu raportu, w jego podsumowaniu zatytułowanym:

'ŁĄCZNY RAPORT FISKALNY OKRESOWY'.

Str. 70
Drukarka Fiskalna POSNET Thermal i 3001

10.Zestaw rozkazów drukarek.

Ogólne zasady syntaktyki komend.

W drukarce rozpoznawane są 3 kody sterujące:


ENQ ($05) - żądanie wysłania statusu (^E),

DLE ($10) – odczyt statusu drukarki działający także w trybie OFF-LINE !!!
Od wersji 39.1 (Thermal), 39.3 (POSNET 3001) i 39.1B (Beetle 20)

Daje to możliwość odczytu statusu - np. brak papieru lub sytuacje błędne.
W odpowiedzi na kod DLE ($10) drukarka odsyła jednobajtowy status w formacie:

7 6 5 4 3 2 1 0
0 1 1 1 0 ONL PE ERR

gdzie:
ONL = 1: stan "On-Line",
PE = 1: stan "Brak Papieru",
ERR = 1: stan "Błąd mechanizmu/ sterownika".
Zwróćmy uwagę, że kod ten daje komunikaty z zakresu $70..$77, a więc inne niż pozostałe odpowiedzi statusowe (w
tym odpowiedź na ENQ).

BEL ($07) - sygnał dźwiękowy (^G),


CAN ($18) - przerwanie interpretacji rozkazu (^X).

W odpowiedzi na żądanie wysłania statusu (ENQ) drukarka wysyła 1 bajt o następującym formacie:

7 6 5 4 3 2 1 0
0 1 1 0 FSK CMD PAR TRF

gdzie:
FSK = 0: drukarka jest w trybie szkoleniowym,
= 1: drukarka jest w trybie fiskalnym,
CMD = 1: ostatni rozkaz został wykonany poprawnie (bit jest kasowany po odebraniu ESC P, jeżeli rozkaz
następujący po ESC P nie jest żądaniem wysłania statusu LBFSTRQ i ustawiony po jego poprawnym
wykonaniu),
PAR = 1: drukarka jest w trybie transakcji (po wykonaniu sekwencji LBTRSHDR, przed wykonaniem sekwencji
LBTREXIT lub LBTRXEND),
TRF = 1: ostatnia transakcja została sfinalizowana poprawnie (bit ustawiony po poprawnej realizacji sekwencji
LBTREXIT lub LBTRXEND, a kasowany po poprawnej realizacji LBTRSHDR).

UWAGA:
1. Bit TRF jest przechowywany w pamięci, stąd nawet jeżeli wystąpi awaria zasilania 220V między
momentem zakończenia transakcji a testowaniem statusu - wartość tego bitu przetestowana przez aplikację
będzie poprawna (program pracy drukarki gwarantuje ponadto, że niezależnie od awarii zasilania operacje
wydrukowania paragonu, aktualizacji totalizerów i ustawienia TRF są NIEROZŁĄCZNE !).
2. Zwróćmy uwagę, że w przypadku anulowania paragonu oba bity zostaną w stanie 0.
3. Możliwe odpowiedzi statusowe (ENQ) są z zakresu $60..$6F (zakres małych liter), co pozwala zawsze na
ich identyfikację (małe litery nie mogą występować w odpowiedzi statusowej LBFSTRS).

Wszystkie pozostałe sekwencje mają jednolity format:


ESC P Ps ; ... ; Ps xx <string> cc ESC \
gdzie:
Ps - opcjonalna lista parametrów numerycznych w zakresie 0..255,
xx - 1 lub 2 znaki (z kolumn $2x,$4x..$7x) - identyfikator rozkazu,

Str. 71
Drukarka Fiskalna POSNET Thermal i 3001
<string> - parametr napisowy, ciąg parametrów napisowych, lub ciąg parametrów numerycznych (w zakresie
10-cyfrowym, ewentualnie z punktem dziesiętnym ),
cc - bajt kontrolny, zakodowany jako 2 cyfry HEX (EXOR wszystkich znaków za ESC P do tego bajtu
z wartością początkową = #255), dokładnie według następującego algorytmu w języku PASCAL:
begin
check := 255;
for i:= 3 to length(sekwencja)-4 do
check := check xor byte(sekwencja[i]);
end;
Z powyższego wynika, że do kontroli sekwencji nie bierzemy 2 pierwszych znaków (ESC P) oraz 4-ch
ostatnich (2 znaki kodujące bajt kontrolny oraz terminator sekwencji ESC \),
UWAGA :
1. Obliczoną w powyższej pętli liczbę check stanowiącą wartość bajtu kontrolnego należy przekodować na 2
znaki HEX (znaki ASCII ze zbioru: '0'..'9','A'..'F','a'..'f'), np. korzystając z poniższej funkcji byte_to_hex:
{ *** konwersja liczby na string 'hex' *** }
function word_to_hex (w: word) : string;
var
i : integer;
s : string;
b : byte;
c : char;
begin
s := '';
for i:= 0 to 3 do
begin
b := (hi(w) shr 4) and 15;
case b of
0..9 : c := char(b+$30);
10..15 : c := char(b+$41-10);
end;
s := s + c;
w := w shl 4;
end;
word_ to_hex := s;
end;

{*** konwersja bajtu na 2 znaki ***}


function byte_to_hex (b:byte) : string;
begin
byte_to_hex := copy(word_to_hex(word(b)),3,2);
end;
2. Sekwencje: LBDSP oraz LBFSTRQ nie wymagają wysłania cyfr kontrolnych 'cc'.
3. Po odebraniu sekwencji może się pojawić komunikat o błędzie:
'Błąd rozkazu: "xx" '
'Kod błędu : yy ',
gdzie:
xx = 2 litery identyfikujące rozkaz,
yy = 2 cyfry identyfikujące kod błędu, przy czym jeżeli yy = 00, to urządzenie odebrało
niezidentyfikowany rozkaz. Należy zwrócić uwagę, że rozkaz może być nie rozpoznany również ze
względu na niewłaściwy tryb pracy drukarki - np. podczas drukowania raportu bazy danych
drukarka nie rozpoznaje innych rozkazów niż związane z tym raportem.
4. Następujące kody błędów mogą dotyczyć różnych sekwencji sterujących:
1 : nie zainicjalizowany zegar RTC (blokada wszystkich sekwencji oprócz ustawiania zegara,
odsyłania statusu i programowania trybu obsługi błędów),
2 : błąd bajtu kontrolnego,
3 : zła ilość parametrów,
4 : błąd parametru (parametrów),
5 : błąd operacji z zegarem czasu rzeczywistego (RTC),

Str. 72
Drukarka Fiskalna POSNET Thermal i 3001
6 : błąd operacji z modułem fiskalnym,
7 : błąd daty - aktualnie ustawiona data jest wcześniejsza od daty ostatniego zapisu w pamięci
fiskalnej,
8 : błąd operacji: niezerowe totalizera (np. dla zmiany stawek PTU lub korekcji zegara !),
9 : błąd operacji I/O (np. z mechanizmem drukującym).
5. Numery błędów począwszy od 10 są specyficzne dla poszczególnych rozkazów. Możliwe litery
identyfikujące błędy podano na stronie 127.
6. Odebranie przez drukarkę nagłówka rozkazu: ESC P powoduje zawsze zawieszenie interpretacji
poprzedniego rozkazu (jeżeli nie uległ on jeszcze wykonaniu). Powrót do interpretacji znaków sterujących
ENQ, DLE i BEL wymaga odebrania przez drukarkę terminatora rozkazu: ESC \ . Przykładowo
interpretacja rozkazu LBDSP kończy się (niezależnie od jego wariantu) dopiero w momencie odebrania
terminatora, chociaż w niektórych wariantach tej komendy znaki pomiędzy jej identyfikatorem ( $d ) a
terminatorem ESC \ będą po prostu ignorowane. Wystąpienie błędu syntaktyki lub wykonania rozkazu
powoduje zawsze przerwanie interpretacji i wykonania oraz powrót do głównej pętli analizy syntaktyki (w
której wykrywamy kody ENQ i BEL).
7. Ze względu na zapewnienie jednoznaczności interpretacji i możliwość "synchronizacji blokowej" (np. przy
pomocy nagłówka ESC P), zwłaszcza wobec możliwych przekłamań przy transmisji danych, wszelkie
możliwe dane przesyłane do drukarki mają postać znaków ASCII - drukowalnych (z wyjątkiem np. kodów
ESC, ENQ, DLE, CR itp. mających specjalne znaczenie), dotyczy to również wszelkich danych
numerycznych, które należy przed wysłaniem poddać konwersji na ASCII (możliwa jest kompresja zer
nieznaczących).
8. Jeżeli parametr Ps jest ignorowany w kodach sterujących, to znaczy że może mieć dowolną wartość lub
też może nie występować, co jednak odpowiednio wpływa na wartość bajtu kontrolnego <check>.

Opisane dalej sekwencje sterujące uwzględniają informacje od jakiej wersji firmware drukarki obowiązują
(wersję firmware można odczytać obserwując wyświetlacz LCD drukarki po jej załączeniu). O ile przy opisie
sekwencji nie ma żadnej informacji o firmware oznacza to, że sekwencja ta obowiązuje dla każdej wersji
drukarki POSNET Thermal i POSNET 3001.

Programowanie parametrów / sterowanie układem elektronicznym.

[LBSETCK]: Ustawienie zegara.

ESC P Py ; Pm ; Pd ; Ph ; Pmn ; Ps $c <check> ESC \

gdzie:
- Py; Pm; Pd - data w następującym formacie:
Py = numer roku = 0...99, (dwie najmłodsze cyfry, 1950...2049),
Pm = numer miesiąca = 1...12,
Pd = dzień = 1...31,
- Ph; Pmn; Ps - czas w następującym formacie:
Ph = godzina = 0...23,
Pmn= minuta = 0...59,
Ps = sekunda = 0...59 (parametr ignorowany),
- <check> - 2 znaki HEX, bajt kontrolny.

Kod błędu:
=2: błąd bajtu kontrolnego,
=3: zła ilość parametrów,
=4: błąd danych,
=5: błąd wykonania (zapisu) do zegara RTC,
=6: błąd odczytu totalizerów,
=7: data wcześniejsza od daty ostatniego zapisu w pamięci fiskalnej (wykonanie niemożliwe !),
=8: błąd operacji - niezerowe totalizery !,

Str. 73
Drukarka Fiskalna POSNET Thermal i 3001
UWAGA:
1. Sekwencja LBSETCK działa zawsze, jeżeli zegar RTC wymaga inicjalizacji (przy pierwszym włączeniu
i po jego ewentualnym rozprogramowaniu w wyniku rozładowania baterii), co jest sygnalizowane przez
odpowiedni komunikat na wyświetlaczu:
' Błąd zegara RTC, '
' prześlij z systemu !'.
2. Jeżeli zegar nie jest prawidłowo zainicjalizowany, to zablokowane są wszystkie sekwencje sterujące oraz
drukowanie raportów, za wyjątkiem odsyłania statusu sekwencją LBFSTRQ, ENQ, DLE, kodów BEL,
CAN , LBSETCK (ustawiania zegara) i sekwencji LBSERM (programowanie trybu obsługi błędów).
3. W przypadku prawidłowego działania zegara możliwa jest korekta, ale pod warunkiem, że totalizery są
zerowe (stan po wykonaniu raportu dobowego !).
4. W powyższej sytuacji (zegar zainicjalizowany) data jest ignorowana, ale powinna być wysyłana (dla
zapewnienia jednolitej postaci syntaktyki).
5. Od wersji 39.1 (Thermal), 39.3 (POSNET 3001) i 39.1B (Beetle 20) w przypadku ‘przekłamania’ zegara
drukarki o więcej niż 2 lata od ostatniego zapisu (decyduje informacja zawarta w polu ‘rok’ ) pojawi się
komunikat:
' Błąd zegara RTC, '
' prześlij z systemu !'.

[LBDSP]: Sterowanie wyświetlaczem / szufladą.

ESC P Ps $d <string> ESC \

zależnie od parametru Ps:


Ps = 1 : otwarcie szuflady,
Ps = 2 : wysłanie napisu do wyświetlacza LCD i dodatkowego wyświetlacza VFD, napis <string>
nie może zawierać sekwencji ESC...,
Ps = 3 : przełączenie wyświetlacza LCD operatora w tryb wyświetlania zegara i daty,
Ps = 4 : przełączenie wyświetlacza LCD operatora z powrotem w tryb kasowy.
Ps = 5 : wysłanie napisu tylko do wyświetlacza operatora (nie do wyświetlacza alfanumerycznego
zewnętrznego !!) – obowiązuje od wersji: 39.1 (Th), 39.3 (3001) i 39.1B (Beetle).
UWAGA. Od wersji: 39.1 (Th), 39.3 (3001) i 39.1B (Beetle):
1. Poza trybem transakcji parametr Ps może przybierać wartości 1..5.
W trybie transakcji parametr Ps może przyjmować wartości 1,5 lub 6.
2. Jeżeli wystąpi w trybie transakcji co najmniej jedna sekwencja LBDSP definiująca kaucje >0 (Ps=6) to
sekwencja LBTREXIT będzie zawsze dawać błąd #00 !!
3. Parametr Ps=6 wymaga zastosowania sekwencji w nowym formacie uwzględniającym sumę
kontrolną – patrz sekwencja LBDSPDEP opisana na stronie 79.

[LBSETPTU] : Zmiana stawek PTU.

ESC P Ps $p PTU_A / PTU_B / PTU_C / PTU_D / PTU_E / PTU_F / <check> ESC \

gdzie:
Ps : 1..6 = ilość stawek PTU, bez zwolnionej, brak parametru lub wartość 0 powoduje przyjęcie domyślnie
wartości 4 (zgodność w ‘dół’ z drukarkami POSNET wcześniej produkowanymi w wersji firmware
< 17.1),
PTU_A/.../PTU_F - lista 1..6 stawek PTU (zgodnie z parametrem Ps) w formacie xx.yy ,
<check> : 2 cyfry HEX kodujące bajt kontrolny.
Kod błędu:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 5 : błąd operacji z RTC,
= 6 : błąd operacji z pamięcią fiskalną,
= 8 : wykonanie niemożliwe - niezerowe totalizery,
= 11 : zła ilość wartości PTU, błąd liczby lub próba zdefiniowania takich samych stawek jakie są w pamięci
fiskalnej drukarki .

Str. 74
Drukarka Fiskalna POSNET Thermal i 3001
UWAGA:
1. W przypadku błędu wykonania (błąd zapisu do EPROM) dalsza praca drukarki zostanie zawieszona
2. Ta operacja (jak wszystkie wykonujące trwały zapis w pamięci fiskalnej) wymaga potwierdzenia
z klawiatury po uprzednim sprawdzeniu poprawności daty zegara drukarki.
3. Możliwe jest zdefiniowanie od 1 do 6 stawek PTU (parametr Ps). Dla zgodności z wersjami
wcześniejszymi zaleca się definiowanie 4-ch stawek PTU w drukarce, w szczególnym formacie :
22.0 / 7.0 / 0 / 0
4. Taka definicja jest wprowadzana w procesie produkcji. W takiej sytuacji drukarka zakłada, że są
uaktywnione 3 stawki, ale odpowiedź statusowa LBFSTRS zawiera 4 kwoty co daje zgodność z
wcześniejszymi wersjami.
5. Pojawia się pojęcie „aktywnej stawki PTU”. Parametr Ps sekwencji LBSETPTU powoduje uaktywnienie
1..6 stawek PTU w kolejności A..F.
6. W odpowiedzi statusowej LBFSTRS jest wysyłana taka ilość kwot sprzedaży z grup A..F ile wynosi
liczba aktywnych stawek PTU, z zastrzeżeniem z p. 2.
7. Sprzedaż w stawce „nieaktywnej” jest zablokowana (por. sekwencję LBTRSLN). Na raporcie dobowym
są uwzględnione tylko kwoty sprzedaży w stawkach „aktywnych”.

[LBSETHDR] : Programowanie nagłówka / fiskalizacja.

ESC P Ps $f <string> #255 <check> ESC \

gdzie:
Ps = 0 : wpisanie nagłówka tylko do pamięci RAM, operacja wykorzystywana np. w trybie szkoleniowym,
Ps = 1 : wpisanie nagłówka do pamięci fiskalnej, powoduje nieodwracalną fiskalizację urządzenia !

Programistom dostosowującym swoje oprogramowanie nie wolno umieszczać w aplikacji


sterującej drukarką komendy z parametrem Ps=1 (czyli praktycznie fiskalizację drukarki) !! .
Fiskalizacji drukarki może dokonać tylko i wyłącznie przeszkolony SERWIS posiadający
wydaną przez producenta (POSNET) ważną legitymację serwisanta !!!.

<string> : maksymalnie 217 znaków ASCII, dozwolone są polskie litery (zgodne ze standardem MAZOWIA)
kody CR, LF oraz SO, DC4 (podwójna szerokość druku); ponieważ w obrębie nagłówka mogą
występować dowolne znaki ASCII z obszaru $20..$7F, wybrane znaki sterujące oraz polskie litery,
terminatorem stringu jest w tym przypadku wyjątkowo kod #255 ( $FF ),
<check> : bajt kontrolny (porównaj dalej).
Kod błędu:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 4 : błąd parametru Ps,
= 12 : błędny nagłówek (np. za długi lub zawierający nie dozwolone znaki),
= 13 : próba fiskalizacji sfiskalizowanego urządzenia ,
= 14 : próba przesłania do RAM nagłówka dla urządzenia sfiskalizowanego (o ile drukarkę zafiskalizowano
wpisując do modułu fiskalnego cały nagłówek).
UWAGA:
1. Operacja fiskalizacji wymaga potwierdzenia z klawiatury.
2. Pozostałe informacje konieczne dla pracy kasy, to jest numer unikatowy i początkowe wartości stawek
VAT (22 7 0 0) są wpisywane przez producenta.
3. Operacja fiskalizacji powoduje zerowanie totalizerów, które mogą mieć niezerową wartość po trybie
szkoleniowym.
4. Znakiem początku linii dla drukarki jest w obrębie nagłówka LF lub CR. Jeżeli poszczególne linie
nagłówka będą rozdzielone przez CR_LF, to wystąpi wówczas sytuacja błędna - pojawią się puste linie !
5. Sekwencje sterujące drukarki ESC.. są w obrębie nagłówka ZABRONIONE !
6. Wprowadzono możliwość fiskalizacji drukarki poprzez wpisanie na trwale tylko jednej linii zawierającej
napis : NIP xxx-xxx-xx-xx. Taki sposób fiskalizacji umożliwia umieszczenie pozostałych danych
podatnika w pamięci RAM i ich ewentualną późniejszą zmianę.

Str. 75
Drukarka Fiskalna POSNET Thermal i 3001

[LBSNDMD] : Wyłączenie/ włączenie komunikatu głosowego.


(tylko POSNET 2000 i starsze drukarki DF-301,2)

ESC P Ps #x <check> ESC \

Sekwencja do wyłączania/ włączania komunikatu głosowego „Dziękujemy, zapraszamy”:

Sekwencja do wyłączania komunikatu głosowego:


ESC P 1 #x 95 ESC \

Sekwencja do włączenia komunikatu głosowego:


ESC P 0 #x 94 ESC \

UWAGA: Komunikat głosowy można wyłączyć/włączyć za pomocą jednocześnie wciśniętych klawiszy ‘PL_F2’ na
klawiaturrze kasy POSNET 2000.

Kody błędow:
= 2 : błąd bajtu kontrolnego,
= 4 : błąd parametru Ps.

[LBFEED] : Wysuw papieru.


(Od wersji: 31.1 (Th), 31.3 (3001) i 32.1B (Beetle), 32.2 (POSNET 2000)).

ESC P Ps #l <check> ESC \


Wysuw papieru o Ps = 0..20 linii.
(W drukarce z dwoma mechanizmami działa tylko w odniesieniu do oryginału.)

Kody błędów:
= 2 : błąd bajtu kontrolnego,
= 4 : błąd parametru Ps,

[LBSERM]: Obsługa błędów.


ESC P Ps #e <check> ESC \

- wybór trybu obsługi sytuacji błędnych zależnie od parametru Ps:


Ps = 0 : wystąpienie błędu w trakcie realizacji sekwencji powoduje wyświetlenie komunikatu i zatrzymanie
przetwarzania, aż do naciśnięcia klawisza ‘NIE’
Ps = 1 : wystąpienie błędu nie daje komunikatu i nie zawiesza przetwarzania; rodzaj błędu jest testowany
przy użyciu sekwencji LBFSTRQ (w polu Pe odpowiedzi LBFSTRS), lub sekwencją LBERNRQ

Począwszy od wersji 39.1 (Th), 39.3 (3001), 32.1B (Beetle) i 32.2 (POSNET 2000) także:
Ps = 2 : wystąpienie błędu w trakcie realizacji sekwencji powoduje wyświetlenie komunikatu i zatrzymanie
przetwarzania aż do naciśnięcia klawisza NIE + kod błędu jest po wykonaniu rozkazu automatycznie
wysyłany do interfejsu,
Ps = 3 : wystąpienie błędu nie daje komunikatu i nie zawiesza przetwarzania + kod błędu jest po wykonaniu
rozkazu automatycznie wysyłany do interfejsu.

Automatycznie wysyłana odpowiedź ma format:


[LBERSTS] :
ESC P Pe #Z <c1><c2> ESC \
gdzie:
Pe = kod błędu (0: OK.),
<c1><c2> = dwuznakowy identyfikator sekwencji.
Kody błędow:
= 2 : błąd bajtu kontrolnego,
= 4 : błąd parametru Ps.

Str. 76
Drukarka Fiskalna POSNET Thermal i 3001
UWAGA:
1. Kod błędu jest obsługiwany w takim trybie, jaki był wybrany przed odebraniem tej
sekwencji.
2. Po włączeniu zasilania wybrany jest standardowo tryb pracy z wyświetlaniem
komunikatów o błędach,
3. Przy współpracy z bardziej zaawansowanymi które wykorzystują dialog z drukarką dla
uzyskania potwierdzenia poprawności wykonania poszczególnych operacji, sensowne jest
wysłanie sekwencji LBSERM dla zablokowania komunikatów o błędach.
4. Jako zasadę przyjęto, że niezależnie od wyłączenia komunikatów o błędach, wszystkie
operacje prowadzące do trwałego zapisu danych do pamięci fiskalnej wymagają jednak
"ręcznego" potwierdzenia z klawiatury (przy pomocy klawisza ‘TAK’, wtedy zachodzi też
zatrzymanie przetwarzania) - dotyczy to:
• fiskalizacji,
• raportu dobowego,
• zmiany stawek PTU.

Transakcja.

[LBTRSHDR]: Początek transakcji (wejście w tryb transakcji).

ESC P Pl $h <check> ESC \

lub:
ESC P Pl; Pn $h <linia1> CR <linia2> CR <linia3> CR <check> ESC \

gdzie:
Pl = ilość pozycji sprzedaży = 0..48, jeżeli Pl=0: paragon ON-LINE (linie otrzymywane są drukowane na
bieżąco),
Pn = ilość dodatkowych linii umieszczanych w nagłówku paragonu, do których ma dostęp aplikacja = 0..3,
<linia1>..<linia3> = zawartość tych linii,
<check> = bajt kontrolny.

Kod błędu:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 4 : błąd parametru (zła liczba pozycji),
= 5 : błąd odczytu zegara RTC,
= 6 : błąd operacji z pamięcią fiskalną,
= 15 : błąd w dodatkowych liniach nagłówka (np. za długie opisy),
= 40 : 1. brak w pamięci RAM nagłówka (tylko w trybie fiskalnym gdy do modułu fiskalnego wpisano
tylko NIP).
2. ten błąd pojawia się także w przypadku wystąpienia błędu blokującego tryb fiskalny (ERR, CLR,
FULL).
UWAGA:
1. Opcjonalne dodatkowe 3 linie paragonu są drukowane między nagłówkiem z pamięci fiskalnej a datą i numerem
paragonu.
2. Parametr Pn musi zdefiniować faktycznie wykorzystywaną ilość dodatkowych linii (można pominąć ten
parametr, jeżeli nie korzystamy z tej opcji).
3. Każda linia może zawierać maksymalnie 40 znaków ASCII, z możliwością drukowania polskich liter
i semigrafiki w kodzie MAZOWIA, ale z wyłączeniem jakichkolwiek kodów sterujących.
4. Na końcu każdej linii musi znaleźć się terminator w postaci pojedynczego kodu CR (jedyny dozwolony kod
kontrolny). Ogólne reguły syntaktyki rozkazów nie dopuszczają linii pustych, stąd jeżeli zachodzi potrzeba
uzyskania linii oddzielającej (np. między nagłówkiem z pamięci fiskalnej a linią dodatkowego opisu) należy w
niej umieścić co najmniej jedną spację.
5. Limit ilości linii do 48-miu obowiązuje tylko, gdy paragon jest drukowany w trybie "blokowym" - "Off -
Line" - ze względu na ograniczoną (do 4 KB) długość bufora dla całego paragonu.
6. Jeżeli zachodzi konieczność wydrukowania paragonu dłuższego niż 48 linii należy użyć trybu "On-Line"
(sekwencja LBTRSHDR z parametrem Pl=0).

Str. 77
Drukarka Fiskalna POSNET Thermal i 3001
7. Wprowadzono pojęcie TIMEOUT dla paragonu które oznacza, że w przypadku nie zakończenia drukowania
paragonu w ciągu 15 minut od momentu jego rozpoczęcia drukarka anuluje transakcję wypisując na końcu
komunikat:
‘paragon anulowany !’

[LBTRSLN] : Linia paragonu.

ESC P Pi $l <nazwa> CR <ilość> CR <ptu> / CENA / BRUTTO / <check> ESC \

Lub:

ESC P Pi;Pr $l <nazwa> CR <ilość> CR <ptu>/CENA/BRUTTO/RABAT/ <check> ESC \

gdzie:
- Pi = numer linijki = 0 lub 1...255 , jeżeli =0 to operacja STORNO !
- Pr = rodzaj rabatu = 0: brak
1: rabat kwotowy,
2: rabat procentowy,
3: dopłata kwotowa,
4: dopłata procentowa.
- <nazwa> = string[40], zawierający dowolne znaki drukowalne,
- <ilość> = string[16] w którym Liczba 'ilość' spełnia te same warunki co CENA, z tym, że dla
kompatybilności dopuszczamy w obrębie “ilości” dowolne inne znaki niż cyfry i wyodrębniamy
z tego napisu podciąg będący max. 10-cyfrową liczbą z dowolnie ustawionym punktem dziesiętnym !
- <ptu> = kod stawki PTU = 'A'...'F' lub ' ' (spacja) lub 'Z' (oba ostatnie oznaczenia dla towarów zwolnionych),
- BRUTTO = kwota sprzedaży brutto 10 cyfr max, > 0, po denominacji dozwolony
jest punkt dziesiętny przed dwoma ostatnimi cyframi,
- CENA = format zawierający max. 10 cyfr z dowolnym położeniem przecinka. Format ten jest kontrolowany
i drukowany z kompresją zer nieznaczących przed przecinkiem, natomiast po przecinku
kompresja zer nieznaczących nie jest realizowana (taki format wymagany jest np. w kantorach).
- RABAT = kwota lub procent rabatu / dopłaty, obowiązują następujące ograniczenia: procent musi być z zakresu
0...99.99 %, przy rabacie kwotowym uwzględnienie rabatu nie może prowadzić do ujemnego wyniku,
niespełnienie powyższego daje błąd #20,
- <check> = bajt kontrolny, jw.

UWAGA:
1. numeracja linijek musi być ciągła, również jeżeli jest wykonywana operacja STORNO, np. poprawna jest
sekwencja numerów 1,2,3,4 ale musi być: 1,2,0,4 jeżeli wykonuje się operację STORNO !
2. jeżeli jest drukowany paragon w trybie 'blokowym' (parametr Pl w sekwencji LBTRSHDR jest <>0) to
odebrana musi być zadeklarowana wcześniej liczba linijek !
3. Uwzględnienie rabatu dla pozycji polega na odjęciu od kwoty BRUTTO kwoty rabatu, która jest
przesłana bezpośrednio lub wynika z określonej stopy procentowej.
4. Operacja STORNO musi być kontrolowana przez aplikację - tak abym zgadzała się cena i ilość
usuwanego z listy towaru, ponadto należy uwzględnić ew. rabat przy stornowaniu.
5. Wprowadzono możliwość określenia ceny towaru z dokładnością większą niż 0.01 (1gr) a także
wprowadzono kontrolę iloczynu <cena> * <ilość>, który musi być zgodny z przesłaną wartością linijki
transakcji (z dokładnością ±1%). Zwróćmy uwagę, że w przypadku dużych ilości towarów o małej cenie
jednostkowej warunek uzyskania zgodności może narzucać dokładniejsze określenie ceny.

Kod błędu:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
=4: zły numer linii (błąd parametru Pl),
= 16: błędna nazwa (pusta lub za długa),
= 17: błędne oznaczenie ilości (puste lub za długie),
= 18: błędne oznaczenie stawki PTU (lub brak) ,także próba sprzedaży w stawce nieaktywnej ,
= 19: błąd wartości CENA (syntaktyka, zakres lub brak),

Str. 78
Drukarka Fiskalna POSNET Thermal i 3001
= 20: 1.błąd wartości BRUTTO lub RABAT (syntaktyka, zakres lub brak),
2.błąd niespełnienia warunku ilość x cena = wartość (przekroczenie progu 1%) - drukarka
sprawdza poprawność przesłanych informacji wg algorytmu :
- mnoży cenę przez ‘wyłowioną’ z ilości liczbę ,
- zaokrągla wynik mnożenia do dwóch miejsc po przecinku,
- wynik zaokrąglenia porównuje z wartością (BRUTTO) z dokładnością do 1%.
3. przy rabacie kwotowym uwzględnienie rabatu nie może prowadzić do ujemnego wyniku,
niespełnienie powyższego daje błąd #20,
= 21: sekwencja odebrana przez drukarkę przy wyłączonym trybie transakcji,
= 22: błąd operacji STORNO (np. próba wykonania w trybie 'blokowym'
- OFF-LINE, lub w wyniku jej wykonania suma w danej grupie podatkowej wychodzi ujemna),
lub błąd operacji z rabatem np. wartość towaru po uwzględnieniu rabatu wychodzi ujemna

[LBDSPDEP]: Kaucja pobrana.


(Od wersji: 39.1 (Th), 39.3 (3001) i 39.1B (Beetle)).

ESC P 6 $d <kwota> / <check> ESC \

gdzie: <check> = bajt kontrolny ,


kwota - kwota kaucji,
Wypisanie na wyświetlaczu operatora + tekstowym w linii w formacie:

' ----- kaucja ----- '


'Suma: xxxx.xx',

Wartość 'xxxx.xx' jest kwotą narastającą transakcji po dodaniu wartości <kwota> przesłanej w sekwencji
LBDSPDEP - interpretowanej jako kwota kaucji. Aktualizacja wyświetlacza odpowiada zatem sytuacji jakby
sprzedano dodatkowy towar o nazwie kaucja.

Łączna suma kaucji jest akumulowana i porównywana z wartością przesłaną w sekwencji LBTRXEND
i drukowana na końcu.

Jeżeli kwota ‘kaucja_pobrana’ przesłana w LBTRXEND nie jest zgodna z sumą wartości otrzymanych w
sekwencjach LBDSPDEP to zostanie zgłoszony błąd (#26). Tak więc istnieje możliwość wyświetlenia poprawnej
kwoty transakcji przed jej zamknięciem (także na wyświetlaczu cyfrowym klienta), chociaż wartość kaucji jest
drukowana dopiero za logo (czyli po zamknięciu transakcji).
Kod błędu:
= 4 - błąd parametru,
= 9 - błąd operacji I/O.

[LBTREXIT] : Anulowanie transakcji.

ESC P 0 $e <check> ESC \

- "negatywne" zatwierdzenie transakcji przez serwer, (Cancel) - również anulowanie paragonu w trybie drukowania
paragonu "On-Line", gdzie:
<check> - bajt kontrolny.

UWAGA:
1. Wysłanie sekwencji CAN ESC P 0 $e <check> ESC \ - wyprowadza drukarkę z dowolnego błędnego
stanu do głównej pętli analizy syntaktyki.

Str. 79
Drukarka Fiskalna POSNET Thermal i 3001

[LBTREXIT] : Standardowe zatwierdzenie transakcji.

ESC P 1;Pr $e <kod> CR WPLATA/TOTAL/ <check> ESC \

lub :

ESC P 1;Pr;Pn;Pc $e <kod> CR <linia1> CR <linia2> CR <linia3> CR WPŁATA/TOTAL/<check> ESC \

lub:

ESC P 1;Pr;Pn;Pc;Px;Py $e <kod> CR <linia1> CR <linia2> CR <linia3> CR WPLATA/


TOTAL/RABAT/<check> ESC \
- 3 warianty 'pozytywnego' zatwierdzenia transakcji,

gdzie:
Pr = 0..99 = opcjonalny rabat procentowy dla całej transakcji,
Pn = ilość dodatkowych linii umieszczanych w stopce paragonu, za logo fiskalnym, do których ma dostęp
aplikacja = 0..3
Pc = 0: zachowanie 'dotychczasowe' tzn. zakończenie drukowania i odcięcie paragonu i zakończenie
trybu transakcyjnego,
Pc = 1: zakończenie drukowania paragonu bez odcięcia i zakończenie trybu transakcyjnego,
Pc = 2: wydrukowanie nagłówka nowego paragonu, odcięcie starego i włączenie 'blokowego' trybu
transakcyjnego w specjalny sposób, tzn. od tego momentu urządzenie realizuje tylko następujące
sekwencje: LBTRSHDR, LBTREXIT (tylko anulowanie paragonu !), LBDSP oraz LBFSTRQ (w wersji
biletowej musimy wyłączyć sekwencje LBSTRLN ponieważ MUSI być zdefiniowana część
przewozowa lub określony jej brak, czyli musi wcześniej pojawić się sekwencja LBTRSHDR !
Px = rodzaj rabatu (niezależny od parametru Pr !) = 0: brak,
1: rabat procentowy,
2: dopłata procentowa.
Py = 1 : jeżeli jest sprzedaż tylko w jednej grupie to drukuj skrócone podsumowanie ,
<linia1>..<linia3> = zawartość linii dodatkowych,
<kod> = string[3] - numer terminala (2 cyfry) + kod kasjera (litera),
(po tym parametrze powinien być terminator CR !)
WPŁATA = kwota wpłacona przez klienta, jeżeli = 0 to napisy "gotówka / reszta" nie będą drukowane,
TOTAL = łączna należność dla klienta, dla kontroli poprzednich transferów,
RABAT = rabat lub dopłata procentowa dla całej transakcji, stopa jest zadana z dokładnością do 0.01
jeżeli parametr Px<>0
<check> = bajt kontrolny, jw.
UWAGA:
Jeżeli parametr Px≠0 to wartość parametru Pr (rabat wg ‘starej formuły’) jest ignorowana

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 4 : błąd parametru (Pr,Pn ,Pc, Px lub Py),
= 5 : błąd operacji z zegarem RTC,
= 6 : błąd operacji z pamięcią fiskalną,
= 23: błędna liczba rekordów (linii) paragonu,
= 24: przepełnienie bufora drukarki paragonowej,
= 25: błędny kod terminala/kasjera (zła długość lub format), lub błędna treść dodatkowych linii,
= 26: błąd kwoty WPLATA (syntaktyka; jeżeli różnica WPLATA-TOTAL <=0 to napisy 'gotówka', 'reszta'
nie będą drukowane !),
= 27: błędna suma całkowita TOTAL lub błędna kwota RABAT,
= 28: przepełnienie totalizera (max 2.684.354,55 dla jednej grupy podatkowej),
= 29: żądanie zakończenia (pozytywnego !) trybu transakcji, w momencie kiedy nie został on jeszcze
włączony,

Str. 80
Drukarka Fiskalna POSNET Thermal i 3001
[LBTRXEND] : Zatwierdzenie transakcji z formami płatności.

(Od wersji: 39.1 (Th), 39.3 (3001), 32.1B (Beetle) i 32.2 (POSNET 2000)):

ESC P Pn;Pc;Py;Px;Pg;Pk;Pz;Pb;Po1;Po2;Pr $x <kod> CR <linia1> CR <linia2> CR..<linia5> CR


<nazwa_karty> CR <nazwa_czeku> CR <nazwa_bonu> CR TOTAL / RABAT / WPLATA / KARTA /
CZEK/BON / KAUCJA_POBRANA / KAUCJA_ZWROCONA / RESZTA / <check> ESC \

Z uwagi na dużą liczbę dodatkowych informacji/ opcji wykorzystywanych w stopce paragonu wprowadzamy nowy
rozkaz umożliwiający aplikacji:
• umieszczenie dodatkowych linii w stopce paragonu (0..5 max.)
• zdefiniowanie rabatu dla całej transakcji (z dokładnością do 0.01 %),
• tryb pracy obcinacza (bez obcinania, ew. z wydrukowaniem nagłówka),
• umieszczenie w stopce paragonu informacji o gotówce i innych formach płatności, możliwość przesłania
przez aplikacje kwoty reszty,
• umieszczenie w stopce paragonu pobranej kwoty kaucji mającej ścisły związek z sekwencją LBDSPDEP
(kaucja) opisaną wcześniej.

gdzie:
Pn = ilość dodatkowych linii umieszczanych w stopce paragonu, za logo
fiskalnym, do których ma dostęp aplikacja = 0..5
Pc = 0: zachowanie 'dotychczasowe' tzn. zakończenie drukowania i odciecie paragonu i zakończenie trybu
transakcyjnego,
Pc = 1: zakończenie drukowania paragonu bez odcięcia i zakończenie trybu
transakcyjnego,
Pc = 2: wydrukowanie nagłówka nowego paragonu, odcięcie starego i włączenie 'blokowego' trybu
transakcyjnego w specjalny sposób, tzn. od tego momentu urządzenie realizuje tylko następujące
sekwencje: LBTRSHDR, LBTREXIT (tylko anulowanie paragonu !), LBDSP oraz LBFSTRQ ,
Py = 1 : jeżeli jest sprzedaż tylko w jednej grupie to drukuj skrócone podsumowanie,
Px = rodzaj rabatu = 0: brak,
1: rabat procentowy,
2: dopłata procentowa.
Pg = 0: kwota WPLATA jest ignorowana (zapłata w gotówce nie występuje)
Pg = 1: występuje zapłata w gotówce,
Pk = 0: kwota KARTA jest ignorowana,
Pk = 1: kwota KARTA jest drukowana,
Pz = 0: kwota CZEK jest ignorowana,
Pz = 1: kwota CZEK jest drukowana,
Pb = 0: kwota BON jest ignorowana,
Pb = 1: kwota BON jest drukowana,
Po1= 0: kwota KAUCJA_POBRANA jest ignorowana,
Po1= 1: kwota KAUCJA_POBRANA jest drukowana
Po2= 0: kwota KAUCJA_ZWROCONA jest ignorowana,
Po2= 1: kwota KAUCJA_ZWROCONA jest drukowana
Pr = 0: kwota RESZTA jest ignorowana,
Pr = 1: kwota RESZTA jest drukowana,
oraz:

TOTAL = łączna należność dla klienta, dla kontroli poprzednich


transferów - TA WARTOSC JEST KONTROLOWANA PRZEZ DRUKARKE !!
RABAT = rabat kwotowy lub procentowy dla całej transakcji, kwota lub
stopa jest zadana z dokładnością do 0.01 jeżeli parametr Px<>0
WPLATA,KARTA,CZEK,BON,KAUCJA_ZWROCONA : kwoty dla odpowiednich form
płatności,
KAUCJA_POBRANA : kwota kaucji za opakowania zwrotne, powiększająca
kwotę należności (czyli pomniejszająca sumę form płatności),

Str. 81
Drukarka Fiskalna POSNET Thermal i 3001
<linia1>..<linia5> : string[40] = zawartość linii dodatkowych,
<nazwa_karty>,<nazwa_czeku>,<nazwa_bonu> : string[16] = dodatkowe
określenia form płatności np. <nazwa_karty> = 'VISA'
<kod> = string[3] - numer terminala (2 cyfry) + kod kasjera (litera),
(po tym parametrze powinien być terminator CR !)
<check> = bajt kontrolny, jw.

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 4 : błąd parametru (Pr,Pn lub Ps),
= 5 : błąd operacji z zegarem RTC,
= 6 : błąd operacji z pamięcią fiskalna,
= 23: błędna liczba rekordów (linii) paragonu,
= 24: przepełnienie bufora drukarki,
= 25: błędny kod terminala/kasjera (zła długość lub format), lub
błędna treść dodatkowych linii,
= 26: błąd jednej z kwot WPLATA..RESZTA, ‘kaucja_pobrana’ przesłana w LBTRXEND nie jest zgodna
z sumą wartości otrzymanych w sekwencjach LBDSPDEP,
= 27: błędna suma całkowita TOTAL lub błędna kwota RABAT,
= 28: przepełnienie totalizera,
= 29: zadanie zakończenia (pozytywnego !) trybu transakcji, w momencie
kiedy nie został on jeszcze włączony,

UWAGA:
• W przypadku, gdy brak jest jednego lub więcej parametrów Pg..Po2 zakładamy wartość domyślna = 0.
• Z uwagi na dużą liczbę możliwych kombinacji zakładamy dla uproszczenia, ze zawsze musza występować
wszystkie parametry napisowe: <kod>, <linia1>...<nazwa_bon> oraz kwoty TOTAL...RESZTA,
ewentualnie niektóre z nich 'puste' (tylko znak CR) lub zerowe (kwoty), natomiast ciąg parametrów
numerycznych Pn..Pr określa, które z nich SA ignorowane, a które drukowane.
• Ze wszystkich parametrów numerycznych i napisowych podlegają kontroli lub interpretacji następujące:
• <kod> : musi mięć 3 znaki drukowalne,
• TOTAL : kwota musi być zgodna z obliczona wcześniej przez drukarkę wartością transakcji,
• do określenia kwoty do zapłaty przez klienta (również do wyświetlenia na wyświetlaczu) brane jest pod
uwagę następujące wyrażenie:
SUMA := TOTAL + KAUCJA_POBRANA - KAUCJA_ZWROCONA,
przy czym wartość ta może być ujemna (na paragonie pojawia się wtedy napis 'Do zwrotu' a na wyświetlaczu
wartość ujemna).

[LBCSHREP1]: Rozkaz raportu kasy / zmiany uwzględniającego formy płatności.


(Od wersji: 39.1 (Th), 39.3 (3001), 32.1B (Beetle) i 32.2 (POSNET 2000)).

ESC P Pk;Pc;Pb #f <zmiana> CR <kasjer> CR <nazwa_karty1> CR ..<nazwa_karty8> CR


<nazwa_bonu1> CR..<nazwa_bonu4> CR <poczatek> CR <koniec > CR PRZYCHOD /
SPRZED_GOTOWKA / KARTA1 / .. / KARTA8 / CZEK1 /..../ CZEK4 / BON1 /.. ../ BON4 / WPLATY /
KAUCJA_POBRANA / WYPLATY / KAUCJA_ZWROCONA / STAN_KASY / <ilosc_paragonow> CR
<ilosc_anulow> CR <ilosc_storno> CR <check> ESC \

gdzie:
Pk : ilość rożnych kart kredytowych = 0..8
Pc : ilość rożnych czeków = 0..4,
Pb : ilość rożnych bonów,
<zmiana> = string[8], zawierający dowolne znaki drukowalne, odpowiada-
jacy numerycznemu lub alfanumerycznemu oznaczeniu zmiany,
<kasjer> = string[32], jw., napis zarezerwowany na nazwisko i imię kasjera,
<nazwa_karty1>..<nazwa_karty8>, <nazwa_czeku1>..<nazwa_czeku4>,
<nazwa_bonu1>..<nazwa_bonu4> : string[16] - parametry napisowe przesłane przez aplikacje określające
poszczególne formy płatności,

Str. 82
Drukarka Fiskalna POSNET Thermal i 3001
<poczatek>,<koniec> : string[15] - parametry NAPISOWE określające poczatek i koniec zmiany, zwykle
w formacie 'rr-mm-dd gg:mm'
PRZYCHOD : kwota = łączna sprzedaż w trakcie zmiany,
SPRZED_GOTOWKA : kwota = wartość sprzedaży gotówkowej,
KARTA1..KARTA8 : kwota = wartość sprzedaży dla poszczególnych kart płatności,
CZEK1..CZEK4 : kwota = wart. sprzed. dla różnych rodzajów czeków,
BON1..BON4 : kwota = wart. sprzed. dla różnych rodzajów bonów,
WPLATY : kwota = suma wpłat do kasy w trakcie zmiany,
KAUCJA_POBRANA : kwota = suma kaucji pobranej w trakcie zmiany,
WYPLATY : kwota = suma wypłat z kasy w trakcie zmiany,
KAUCJA_ZWROCONA : kwota = suma kaucji zwróconej w trakcie zmiany,
STAN_KASY : kwota = ilość gotówki w kasie po zakończeniu zmiany,
<ilosc_paragonow> : num[5] = ilość paragonów wydruk. podczas zmiany,
<ilosc_anulow> : num[5] = ilość anulowanych paragonów,
<ilosc_storno> : num[5] = ilość stornowanych pozycji,

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 4 : błąd parametrów,
= 5 : błąd odczytu zegara RTC,
= 33: błąd napisu <zmiana> lub <kasjer>,
= 34: błąd jednej z kwot lub pozostałych napisów,

UWAGA:
1. Przez num[5] rozumiemy ciąg max. 5 cyfr lub spacji.
2. W sekwencji musza występować wszystkie parametry (kwoty i napisy), nie drukowane parametry mogą
być zerowe (kwoty) lub puste (napisy - sam znak CR). Rożne kombinacje wydruków są uzyskiwane
przez rożne kombinacje parametrów Pk;Pc;Pb.
3. Linie zawierające liczby:
PRZYCHOD,SPRZED_GOTOWKA,WPLATY,KAUCJA_POBRANA,WYPLATY,
KAUCJA_ZWROCONA,STAN_KASY,ILOSC_PARAGONOW,ILOSC_ANULOW,
ILOSC_STORNO,
oraz napisy: <poczatek>,<koniec> są drukowane zawsze.

[LBTRSCARD] : Pokwitowanie sprzedaży.


(Od wersji: 39.1 (Th), 39.3 (3001), 32.1B (Beetle) i 32.2 (POSNET 2000)).

ESC P Ps;Pn #g <numer_kasy> CR <numer_kasjera> CR <numer_par> CR<kontrahent> CR <terminal> CR


<nazwa_karty> CR <numer_karty> CR <data_m> CR <data_r> CR <kod_autoryz> CR <kwota> / <check>
ESC \

gdzie:
Ps = 0: linia zawierająca numer kasy / numer kasjera jest drukowana,
Ps = 1: linia jw. nie jest drukowana,
Pn : wybiera opcje drukowania dokumentu
Pn = 0 : drukuj 2 kopie, miedzy jedną a drugą trzeba nacisnąć klawisz,
Pn = 1 : drukuj 2 kopie - jedna po drugiej (użyteczne w wersji z
obcinaczem 'nie docinającym'),
Pn = 2 : drukuj jedna kopie,

<numer_kasy> = string[2],
<numer_kasjera> = string[5],
<numer_par> = num[12],
<kontrahent> = string[15],
<terminal> = num[8],
<nazwa_karty> = string[16],
<numer_karty> = num[20],

Str. 83
Drukarka Fiskalna POSNET Thermal i 3001
<data_m> = num[2],
<data_r> = num[2],
<kod_autoryz> = num[9],

oraz:

<kwota> = wartość transakcji w formacie jak dla wszystkich innych kwot,


<check> = bajt kontrolny,

UWAGA:
5. Wprowadzamy tu nowy typ parametru: num[n] oznaczający n- znakowy ciąg cyfr i lub ew.
spacji.
6. Tak jak w innych sekwencjach sterujących parametry typu 'string' mogą zawierać dowolne
znaki drukowalne.
7. Jeżeli parametr Pn = 0 lub 1, to na pierwszym dokumencie drukowany jest, opis 'Oryginał
dla sprzedawcy' a na drugim opis 'Kopia dla kupującego' Opis jest drukowany
bezpośrednio przed końcowym napisem 'niefiskalny'.

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 4 : błąd parametru Ps,
= 2 : błąd bajtu kontrolnego,
= 5 : błąd odczytu zegara RTC,
(pozostałe kody błędów)
= 41: błąd napisu <numer_kasy> (za długi lub zawierający błędne znaki),
= 42: błąd napisu <numer_kasjera>,
= 43: błąd napisu <numer_par>,
= 44: błąd napisu <kontrahent>,
= 45: błąd napisu <terminal>,
= 46: błąd napisu <nazwa_karty>,
= 47: błąd napisu <numer_karty>,
= 48: błąd napisu <data_m>,
= 49: błąd napisu <data_r>,
= 50: błąd napisu <kod_autoryz>,
= 51: błąd wartości <kwota>,

[LBSTOCARD]: Transakcja uznania (zwrot towaru).


(Od wersji: 39.1 (Th), 39.3 (3001), 32.1B (Beetle) i 32.2 (POSNET 2000)):

ESC P Ps;Pn #h <numer_kasy> CR <numer_kasjera> CR <numer_par> CR <kontrahent> CR <terminal>


CR <nazwa_karty> CR <numer_karty> CR <data_m> CR <data_r> CR <kod_autoryz> CR <kwota> /
<check> ESC \
gdzie:
Ps = 0: linia zawierająca numer kasy / numer kasjera jest drukowana,
Ps = 1: linia jw. nie jest drukowana,
Pn : wybiera opcje drukowania dokumentu
Pn = 0 : drukuj 2 kopie, miedzy jedna a druga trzeba nacisnąć klawisz,
Pn = 1 : drukuj 2 kopie - jedna po drugiej (użyteczne w wersji z
obcinaczem 'niedocinajacym'),
Pn = 2 : drukuj jedna kopie,
<numer_kasy> = string[2],
<numer_kasjera> = string[5],
<numer_par> = num[12],
<kontrahent> = string[15],
<terminal> = num[8],
<nazwa_karty> = string[16],
<numer_karty> = num[20],
<data_m> = num[2],
<data_r> = num[2],

Str. 84
Drukarka Fiskalna POSNET Thermal i 3001
<kod_autoryz> = num[9],
oraz:
<kwota> = wartość transakcji (zwrotu) w formacie jak dla wszystkich innych kwot,
<check> = bajt kontrolny,

UWAGA:
1. Wprowadzamy tu nowy typ parametru: num[n] oznaczający n- znakowy ciąg cyfr i lub ew. spacji.
2. Tak jak w innych sekwencjach sterujących parametry typu 'string' mogą zawierać dowolne znaki drukowalne.
3. Jeżeli parametr Pn = 0 lub 1, to na pierwszym dokumencie drukowany jest, opis 'Oryginał dla sprzedawcy' a
na drugim opis 'Kopia dla kupującego'. Opis jest drukowany bezpośrednio przed końcowym napisem
'niefiskalny'.

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 4 : błąd parametru Ps,
= 2 : błąd bajtu kontrolnego,
= 5 : błąd odczytu zegara RTC,
(pozostałe kody błędów)
= 41: błąd napisu <numer_kasy> (za długi lub zawierający błędne znaki),
= 42: błąd napisu <numer_kasjera>,
= 43: błąd napisu <numer_par>,
= 44: błąd napisu <kontrahent>,
= 45: błąd napisu <terminal>,
= 46: błąd napisu <nazwa_karty>,
= 47: błąd napisu <numer_karty>,
= 48: błąd napisu <data_m>,
= 49: błąd napisu <data_r>,
= 50: błąd napisu <kod_autoryz>,
= 51: błąd wartości <kwota>,

Drukowanie raportów / kontrola bazy danych.

[LBINCCSH] : Wpłata do kasy.

ESC P Ps #i WPŁATA / <check> ESC \

zwiększenie stanu kasy i drukowanie niefiskalnego paragonu wpłaty, gdzie:


Ps = parametr ignorowany,
WPŁATA = kwota wpłacona do kasy,
<check> = bajt kontrolny.

Kod błędu:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 30 : błąd kwoty WPŁATA (syntaktyka),
= 31 : nadmiar dodawania (przekroczenie zakresu gotówki w kasie).

Str. 85
Drukarka Fiskalna POSNET Thermal i 3001

[LBDECCSH]: Wypłata z kasy.

ESC P Ps #d WYPŁATA / <check> ESC \

zmniejszenie stanu kasy i drukowanie niefiskalnego paragonu wypłaty, gdzie:


Ps = parametr ignorowany,
WYPŁATA = kwota wypłacana z kasy,
<check> = bajt kontrolny.

Kod błędu:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 30 : błąd kwoty WYPŁATA (syntaktyka),
= 32 : wartość po odjęciu staje się ujemna (przyjmuje się wówczas stan zerowy kasy !)

[LBCSHSTS]: Stan kasy.

ESC P Ps #t <check> ESC \

drukowanie niefiskalnego raportu o ilości gotówki w kasie, gdzie:


Ps = parametr ignorowany,
<check> = bajt kontrolny.

Kod błędu:
= 1 : nie zainicjalizowany zegar RTC
= 2 : błąd bajtu kontrolnego.

[LBCSHREP] : Raport kasy / zmiany.

ESC P Ps #k <zmiana> CR <kasjer> CR <check> ESC \

gdzie:
Ps = parametr ignorowany,
<zmiana> = string[8], zawierający dowolne znaki drukowalne, odpowiadające numerycznemu lub
alfanumerycznemu oznaczeniu zmiany,
<kasjer> = string[32], jak wyżej, napis zarezerwowany na nazwisko i imię kasjera.
<check> = bajt kontrolny.

Kod błędu:
= 1 : nie zainicjalizowany zegar RTC
= 2 : błąd bajtu kontrolnego,
= 5 : błąd odczytu zegara RTC
= 33 : błąd napisu <zmiana> (np. za długi lub zawierający błędne znaki),
= 34 : błąd napisu <kasjer>.

Str. 86
Drukarka Fiskalna POSNET Thermal i 3001

[LBLOGIN] : Logowanie kasjera.


(Od wersji: 39.1 (Th), 39.3 (3001) i 39.1B (Beetle)).

ESC P Ps #p <kasjer> CR <numer> CR <check> ESC \

- drukowanie dokumentu niefiskalnego

gdzie:
- Ps parametr ignorowany.,
- <kasjer> = string[32], zawierający dowolne znaki drukowalne, nazwisko i imię kasjera,
- <numer> = string[8], jw., napis zarezerwowany na numer kasy,

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 5 : błąd odczytu zegara RTC,
= 33: błąd napisu <numer> (np. za długi lub zawierający błędne znaki),
= 34: błąd napisu <kasjer>,

[LBLOGOUT]: Wylogowanie kasjera.


(Od wersji: 39.1 (Th), 39.3 (3001) i 39.1B (Beetle)).

ESC P Ps #q <kasjer> CR <numer> CR <check> ESC \

- drukowanie dokumentu niefiskalnego.


gdzie:
parametr Ps jest ignorowany.
- <kasjer> = string[32], zawierający dowolne znaki drukowalne, nazwisko i imię kasjera,
- <numer> = string[8], jw., napis zarezerwowany na numer kasy,

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 5 : błąd odczytu zegara RTC,
= 33: błąd napisu <numer> (np. za długi lub zawierający błędne znaki),
= 34: błąd napisu <kasjer>,

[LBOPAK] : Zwrot kaucji.


(Od wersji: 39.1 (Th), 39.3 (3001), 32.1B (Beetle) i 32.2 (POSNET 2000)).

ESC P Ps #w <kaucja> CR <check> ESC \

- drukowanie dokumentu niefiskalnego .


gdzie:
parametr Ps jest ignorowany.
- <kaucja> = string[20], zawierający dowolne znaki drukowalne = nazwa i wartość kaucji,
Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 5 : błąd odczytu zegara RTC,
= 33: błąd napisu <kaucja>
Wyplata z kasy, ale drukowany jest opis operacji 'Zwrot towaru'.

Str. 87
Drukarka Fiskalna POSNET Thermal i 3001
[LBSTOCSH] : Zwrot towaru.
(Od wersji: 39.1 (Th), 39.3 (3001), 32.1B(Beetle) i 32.2(POSNET 2000)).

ESC P #z WYPLATA/<check> ESC \

drukowany jest opis operacji 'Zwrot towaru'.

gdzie:
WYPLATA = kwota wypłacona z kasy,
<check> = bajt kontrolny,
Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 4 : błąd parametru Ps,
= 30: błąd kwoty WYPLATA (syntaktyka),
= 32: wartość po odjęciu staje się ujemna (przyjmuje się wówczas stan
zerowy kasy !)

[LBFSKREP] : Drukowanie raportu okresowego.

ESC P Py1 ; Pm1 ; Pd1 ; Py2 ; Pm2 ; Pd2 ; Pt #o <check> ESC \

gdzie:
Py1, Pm1, Pd1 - data początkowa,
Py2, Pm2, Pd2 - data końcowa.
<check> = bajt kontrolny
Pt =0 (lub brak parametru Pt) : raport pełny (dokument fiskalny)
Pt=1 : podsumowanie sprzedaży (dokument niefiskalny).

Kod błędu:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 3 : zła ilość parametrów,
= 4 : błąd parametrów (wartości dat, obejmuje również sytuacje, gdy data końcowa jest wcześniejsza od
początkowej),
= 6 : błąd operacji z pamięcią fiskalną (fatalny).

UWAGA:
1. Operacja nie wymaga potwierdzenia z klawiatury.

[LBDAYREP]: Drukowanie raportu dobowego.

ESC P #r <check> ESC \ lub ESC P 0 #r <check> ESC \

lub (Od wersji: 33.1 (Th), 31.3 (3001), 31.9A (Thermal-A) i 32.1B (Beetle)):

ESC P 1; Py; Pm: Pd #r <check> ESC \

Gdzie:
- Py; Pm; Pd - data w następującym formacie:
Py = numer roku = 0..99, (dwie najmłodsze cyfry, 1950..2049),
Pm = numer miesiąca = 1..12,
Pd = dzień = 1..31,

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,

Str. 88
Drukarka Fiskalna POSNET Thermal i 3001
= 6 : błąd operacji z pamięcią fiskalna (fatalny),
= 7 : błąd daty (aktualnie ustawiona jest wcześniejsza od daty
ostatniego zapisu) lub w formacie drugim nie ma zgodności
daty w drukarce z data przesłaną,
= 35: zerowy stan totalizerów,
= 36: już istnieje zapis o tej dacie,
= 37: operacja przerwana z klawiatury (przed rozpoczęciem drukowania),

UWAGA: 1. Operacja wymaga potwierdzenia z klawiatury jeżeli nie podano daty


2. Jeżeli wystąpi błąd #36 to można ew. wykonać raport z klawiatury.

[LBDBREP]: Kontrola bazy danych.

ESC P Ps #b [ <nazwa> CR <ptu> / ] <check> ESC \

- sprawdzenie, czy towar o nazwie <nazwa> występuje w wewnętrznej bazie danych i jaką ma tam stawkę PTU.
Drukarka ‘zwraca’ kod w postaci ‘wagi’ stawki (A - najwyższa liczbowo stawka w drukarce, F - najniższa liczbowo
stawka ) w bazie danych drukarki.
Sekwencja występuje w 3 postaciach:
Ps = 0 : początek testu - pola <nazwa> i <ptu> nie występują, (bajt kontrolny jest sprawdzany),
drukowany jest nagłówek testu z napisem 'niefiskalny', tytuł oraz data przeprowadzenia testu,
Ps = 1 : właściwy rekord danych, gdzie:
<nazwa> - nazwa artykułu w bazie - maksymalnie 40 znaków,
<ptu> - oznaczenie stawki PTU: A, B, C, D, E, F, Z lub spacja,
<check> - bajt kontrolny,
Ps = 2 : zakończenie testu (pole danych też nie występuje), drukowany jest komunikat o wyniku testu (ilość
towarów i ilość niezgodności) oraz napis 'niefiskalny'.

Kod błędu:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 4 : błąd parametru / kolejności sekwencji (np. najpierw koniec: Ps=2, a potem dana: Ps=1),
= 38 : błąd nazwy,
= 39 : błąd oznaczenia PTU.

Odczyt statusu.

[LBSENDCK]: Odeślij czas RTC.

ESC P Ps #c ESC \

- żądanie odesłania do systemu informacji o dacie i godzinie zegara RTC drukarki;

gdzie: Ps - parametr ignorowany.

Drukarka odsyła informację:

[LBCLKRS]
ESC P 1#C Py ; Pm ; Pd ; Ph ; Pm ; 0 ESC \

ODESŁANY CZAS RTC - odesłany czas zegara RTC drukarki, gdzie poszczególne parametry oznaczają:
Py, Pm, Pd = data w formacie: 2 ostatnie cyfry roku, miesiąc, dzień,
Ph, Pm, 0 = godzina w formacie: godzina, minuta, sekunda = 0.

Kody błędu:
= 1 : nie zainicjalizowany zegar RTC,
= 5 : błąd odczytu zegara RTC.

Str. 89
Drukarka Fiskalna POSNET Thermal i 3001
UWAGA:
Zalecamy modyfikację aplikacji polegającą na wprowadzeniu odczytu stanu zegara RTC drukarki zawsze
przed wykonaniem raportu dobowego i na początku każdego dnia pracy drukarki, a następnie
porównanie go w aplikacji z zegarem systemowym.

[LBFSTRQ]: Odeślij informacje kasowe.

ESC P Ps #s ESC \

- żądanie odesłania informacji istotnych z punktu widzenia kasowego,

gdzie:
Ps = parametr ignorowany.

Drukarka odsyła informację LBFSTRS.

[LBFSTRS]

ESC P 1#X Pe ; Pm ; Pt ; Px ; Pf ; Pz ; 1 ; Pm ; Pd / PTU_A / PTU_B / PTU_C /PTU_D / PTU_E /


PTU_F / PAR_NUM / TOT_A / TOT_B / TOT_C / TOT_D / TOT_E / TOT_F /
TOT_Z / CASH / NNNNNNNNNN ESC \

ODESŁANA INFORMACJA Z KASY, gdzie poszczególne parametry oznaczają:


Pe = kod błędu wykonania poprzedniej sekwencji (= 0 jeżeli sekwencja została wykonana poprawnie lub nie
została rozpoznana),
Pm = tryb pracy (0 : szkoleniowy, 1 : fiskalny),
Pt = tryb pracy (1 : transakcyjny),
Px = stan znacznika TRF (Transaction Flag =1 po ostatniej poprawnej transakcji, zerowany po poprawnym
rozpoczęciu następnej tj. wykonaniu sekwencji LBTRSHDR),
Pz = ilość zerowań RAM zapisanych w pamięci fiskalnej,
Py, Pm, Pd = data ostatniego zapisu (Py = 2 ostatnie cyfry roku),
PTU_A...PTU_F = stawki podatkowe PTU, w formacie: xx.xx,
PAR_NUM = ilość wydrukowanych paragonów fiskalnych (= <numer następnego> - 1, licznik paragonów
fiskalnych jest zerowany w trakcie fiskalizacji i zerowania RAM),
TOT_A...TOT_Z = stan totalizera kasy, kwoty BRUTTO !,
CASH = stan gotówki w kasie,
NNNNNNNNNN = numer unikatowy.
UWAGA:
1. Błędy nie występują - za wyjątkiem błędu odczytu pamięci fiskalnej, który powoduje zawieszenie pracy
drukarki.
2. W przypadku zdefiniowania w drukarce czterech stawek PTU aplikacje będą działały tak jak w wersjach
wcześniejszych firmware (<17.1). W przypadku gdy liczba stawek zdefiniowanych będzie różna od 4
(można zdefiniować liczbę stawek w zakresie 1..6 - patrz opis komendy LBSETPTU) inaczej działa
funkcja ODEŚLIJ INFORMACJE KASOWE (LBFSTRS) ; drukarka zwraca zawsze tyle stawek ile jest
aktualnie zdefiniowanych w drukarce. Zwracana jest także taka sama liczba totalizerów plus totalizer Z.
Programiści korzystający z funkcji „ODEŚLIJ” w zakresie odczytu rekordu począwszy od pozycji ‘ilość
zerowań RAM’ powinni skorygować analizę zwracanej przez drukarkę informacji . Aplikacja powinna
najpierw stwierdzić ile jest zdefiniowanych stawek w drukarce .

[LBERNRQ] : Żądanie wysłania kodu błędu ostatniego rozkazu.

ESC P Ps #n ESC \

- parametr Ps jest nieistotny,

Str. 90
Drukarka Fiskalna POSNET Thermal i 3001
odpowiedz:

[LBERNRS]:

ESC P 1#E Pe ESC \

UWAGA:
1. Podczas wykonania tego rozkazu nie może wystąpić błąd,
2. Kod błędu Pe nie jest po wykonaniu tego rozkazu modyfikowany w odróżnieniu od rozkazu
LBFSTRQ, którego wykonanie powoduje zerowanie tego kodu.
3. Kod błędu jest kasowany w momencie wykonania każdego rozkazu oprócz LBERNRQ również
rozkazu "nie rozpoznanego", stąd absolutnie niezawodna procedura testowania poprawności
wykonania rozkazu powinna testować również bit CMD odpowiedzi na kod ENQ ! (patrz strona
71).

[LBIDRQ] : Sekwencja odsyłająca typ i wersje oprogramowania.


(Od wersji: 39.1 (Th), 39.3 (3001), 32.1B (Beetle) i 32.2 (POSNET 2000)).

ESC P #v ESC \
odpowiedz:
[LBIDRS]:
ESC P 1#R <typ>/<wersja> < ESC \
gdzie:
<typ> = napis określający typ urządzenia np. 'POSNET Thermal'
<wersja> = numer wersji oprogramowania np. '39.1'

Kody błędu:
= 1 : nie zainicjalizowany zegar RTC.

Str. 91
Drukarka Fiskalna POSNET Thermal i 3001

11.Opis sekwencji drukarki Posnet Thermal-A (apteczna).


Drukarka ‘apteczna’ posiada wszystkie właściwości drukarki „detalicznej” (patrz opis sekwencji zawarty w
poprzednich punktach tego rozdziału), a ponadto jej funkcje zostały rozszerzone stosownie do potrzeb
oprogramowania aplikacyjnego stosowanego w aptekach. Rozszerzenia te obejmują zmodyfikowany format
paragonu fiskalnego oraz możliwość generowania kilku dodatkowych wydruków niefiskalnych.

Nowy format paragonu fiskalnego.

W wyniku uzgodnień w twórcami oprogramowania dla aptek oraz z Ministerstwem Finansów ustalono dodatkowy,
„rozszerzony” format paragonu, w którym każdy artykuł jest opisany w 3 liniach tekstu. Format tego paragonu jest
następujący:
1. Nagłówek.
• zawiera informacje odczytane z pamięci fiskalnej, max 217 znaków, łącznie z kodami sterującymi (mogą to
być LF-y ale również kody ‘wzbogacające’ wydruk np. podwójna szerokość linii), format nagłówka jest
zatem dowolny - ustalony w procesie fiskalizacji drukarki.
2. Data.
• data odczytana z zegara drukarki.

|0123456789012345678901234567890123456789|
|yy-mm-dd www |

(‘www’ - 3-znakowe oznaczenie dnia tygodnia dopisywane przez drukarkę)


3. Opcjonalne linie dodatkowego opisu paragonu (w celu np. wpisania numeru określonego przez aplikację
wiążącego ten paragon z rachunkiem uproszczonym lub fakturą, lub np. dla wpisania zmiany adresu firmy), mogą
być max 3 linie po 40 znaków.
4. Opis paragonu w formie 3 linii:

|0123456789012345678901234567890123456789|
|- Nazwa ---------------------------------------------------|
|- Zniżka/Rp ----------- Cena --------------- PTU -----|
|--- Ilość ----------- Wartość ---------------- Opłata ---|

5. Pozycje sprzedaży.
Może wystąpić ich dowolna ilość (do 255), ponadto mogą pojawić się pozycje „stornowane”.
• linia 1: nazwa - string[40], przesłana przez system (format ustalony przez aplikację):

|0123456789012345678901234567890123456789|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|

• linia 2:
• ZNIŻKA/RP - string[14] - opis recepty przesłany przez system,
• CENA - wynik konwersji wartości numerycznej przesłanej przez system, format taki jak dla wartości
BRUTTO,
• stawka podatkowa pobrana z pamięci fiskalnej na podstawie kodu stawki PTU (pole ‘vv.vv’) oraz kod
stawki: znak ‘A’...’D’ lub ‘Z’ (pole ‘l’)

|0123456789012345678901234567890123456789|
|rrrrrrrrrrrrrr cccccccc,cc (l) vv.vv %|

• linia 3:
• ILOŚĆ - string[12] (w tym wariancie o 4 znaki krótszy), przesłany przez aplikację,

Str. 92
Drukarka Fiskalna POSNET Thermal i 3001
• WARTOŚĆ sprzedaży BRUTTO, przesłana przez system - jest to wynik konwersji posiadający max 10
cyfr + ‘,’ przed pozycja groszy,
• OPŁATA za artykuł (format jw.),

|0123456789012345678901234567890123456789|
|iiiiiiiiiiii wwwwwwww,ww oooooooo,oo|

5.1. Pozycja „stornowana” - pola WARTOŚĆ i OPŁATA ze znakiem ‘-‘, ponadto dodatkowa linia z napisem
„storno” o podwójnej szerokości:

|0123456789012345678901234567890123456789|
| # storno # |

trzecia linia opisu artykułu ma w tym przypadku format:


|0123456789012345678901234567890123456789|
| iiiiiiiiiiii -wwwwwwww,ww -oooooooo,oo|

6. Jedna linia (kreska) oddzielająca (po wszystkich pozycjach sprzedaży):

|-------------------------------------------------------------|

7. Wartości sprzedaży w poszczególnych grupach podatkowych.


• od 1 do 5 linii, zawierających łączne kwoty sprzedaży BRUTTO w grupach
A,B,C,D,Z, oraz stawki podatkowe grup A..D:
|0123456789012345678901234567890123456789|
|Kwota ssssssss,ss PTU vv.vv% pppppppp,pp|
|Kwota ssssssss,ss PTU vv % pppppppp,pp|

(y = ‘A’..’D’) oraz format dla kwoty sprzedaży wolnej od podatku:


|Kwota zw. ssssssss.ss |
UWAGA: drukowane są tylko podsumowania dla tych stawek podatkowych, które
występują w polu 5) (czyli jeżeli odpowiednia kwota jest niezerowa.

• podsumowanie kwot jw. w formacie:

|0123456789012345678901234567890123456789|
|Razem kkkkkkkk,kk VAT vvvvvvvv,vv|

(kwota ‘kkkk..k’ stanowi sumę wartości wszystkich pozycji i jest obliczana przez drukarkę i przesyłana przez
komputer, dla kontroli poprawności danych)
8. Jedna linia (kreska) oddzielająca:
|--------------------------------------------------------------|
9. Kwota należności dla klienta.
• max 10 cyfr (przesłana przez komputer, ale tez skontrolowana lokalnie, jako suma opłat od poszczególnych
pozycji), linia wydrukowana znakami o podwójnej szerokości:

|0123456789012345678901234567890123456789|
|Suma zł uuuuuuuu,uu|

• w przypadku gdy suma opłat jest mniejsza od zera na wydruku otrzymamy:

|0123456789012345678901234567890123456789|
|Zwrot zł uuuuuuuu,uu|

Str. 93
Drukarka Fiskalna POSNET Thermal i 3001
UWAGA:
• w tym formacie paragonu nie uwzględniamy rabatów.

10. Jeżeli reszta obliczona przez drukarkę na podstawie przesłanych przez komputer wartości WPŁATA i TOTAL
jest nieujemna to dodatkowe 2 linie:

|Gotówka wwwwwwww,ww|
|Reszta: wwwwwwww,ww|

11. Stopka paragonu.


• numer paragonu fiskalnego, max 6 cyfr, odczytany z totalizerów terminala, numer terminala + kod kasjera (3
znaki ASCII przesłane przez komputer), oraz czas:
|0123456789012345678901234567890123456789|
|nnnnnn #aaa hh:mm|
12. Logo fiskalne wraz z numerem unikatowym kasy.
Numer unikatowy kasy jest odczytany z pamięci fiskalnej i ma postać 10-u znaków ASCII, 2 litery + 8 cyfr:
|0123456789012345678901234567890123456789|
| lll kk nnnnnnnn |

13. Ewentualne max 3 linie dodatkowe przesłane przez aplikację, zawierające dowolny tekst (z wyłączeniem kodów
sterujących).

Modyfikacje sekwencji sterujących związane z dodatkowym formatem paragonu


fiskalnego.

[LBTRSORG] : Nagłówek „paragonu aptecznego”.

ESC P Pl; Pn $s <check> ESC \


lub:
ESC P Pl; Pn $s <linia1> CR <linia2> CR <linia3> CR <check> ESC \
Dodatkowa sekwencja dla nagłówka „paragonu aptecznego”:

POCZĄTEK TRANSAKCJI (wejście w tryb TRANSAKCJI) - generowania wydruku paragonu


aptecznego, gdzie:
Pl = ilość pozycji sprzedaży = 0..30, jeżeli =0: paragon ‘ON_LINE’ (linie otrzymywane są drukowane
na bieżąco)
Pn = ilość dodatkowych linii umieszczanych w nagłówku paragonu, do których ma dostęp aplikacja =
0..3
<linia1>..<linia3> = zawartość tych linii,
<check> : bajt kontrolny,
Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 4 : błąd parametru (zła liczba linii),
= 5 : błąd odczytu zegara RTC,
= 6 : błąd operacji z pamięcią fiskalną
= 40: błąd w dodatkowych liniach nagłówka (np. za długie opisy)

UWAGA:
• Opcjonalne dodatkowe 3 linie paragonu są drukowane między nagłówkiem z pamięci fiskalnej a datą
i numerem paragonu.
• Parametr Pn musi zdefiniować faktycznie wykorzystywaną ilość dodatkowych linii (można pominąć ten
parametr jeżeli nie korzystamy z tej opcji).

Str. 94
Drukarka Fiskalna POSNET Thermal i 3001
• Każda linia może zawierać max 40 znaków ASCII, z możliwością drukowania polskich liter i semigrafiki w
kodzie MAZOWIA, ale z wyłączeniem jakichkolwiek kodów sterujących.
• Na końcu każdej linii musi znaleźć się terminator w postaci pojedynczego kodu CR (jedyny dozwolony kod
kontrolny). Ogólne reguły syntaktyki rozkazów nie dopuszczają linii pustych, stąd jeżeli zachodzi potrzeba
uzyskania linii oddzielającej (np. między nagłówkiem z pamięci fiskalnej a linią dodatkowego opisu) należy
w niej umieścić co najmniej jedną spację.

[LBTRSART]: Linia paragonu.

ESC P Pi $a <nazwa> CR <ilość> CR <recepta> CR <ptu>/CENA/BRUTTO/OPŁATA/ <check> ESC \


Jest to sekwencja definiująca jeden artykuł paragonu:
• Pi = numer linijki = 0 lub 1...48, jeżeli =0 to operacja STORNO !
• <nazwa> = string[40], zawierający dowolne znaki drukowalne,
• <ilość> = string[12], jw.,
• <recepta> = string[14], jw. (napis drukowany w polu ‘ZNIŻKA/RP’),
• <ptu> = kod stawki PTU = ‘A’...’D’ lub ‘ ‘ lub ‘Z’ (oba ostatnie oznacz. dla towarów zwolnionych),
• BRUTTO = kwota sprzedaży BRUTTO 10 cyfr max, > 0, dozwolony jest punkt dziesiętny przed dwoma
ostatnimi cyframi,
• CENA = cena jednostkowa towaru, format jw.
• OPŁATA = kwota opłaty, format jw.
• <check> = bajt kontrolny,

UWAGA:
• numeracja linijek musi być ciągła, również jeżeli jest wykonywana operacja STORNO, np., poprawna jest
sekwencja numerów 1,2,3,4 ale musi być: 1,2,0,4 jeżeli wykonuje się operację STORNO !
• wykonanie operacji STORNO powoduje w tej wersji kontrolę, czy jest zapamiętana wycena leku o danej
nazwie, jeżeli tak, to odtwarzany jest stan, w którym drukarka oczekuje na sprzedaż tego specyfiku.
• Dopuszczamy przesłanie w polu <opłata> linijki paragonu wartości ujemnej, jeżeli suma opłat z
poszczególnych linijek jest < 0 to w polu podsumowań drukowany jest napis ‘Zwrot zł’, ponadto na obu
wyświetlaczach (LCD i LED) drukowana jest wartość ujemna. Dalsze konsekwencje tego faktu są
następujące:
1. operacja STORNO powoduje zwiększenie sumy opłat jeżeli stornowana pozycja ma ujemna opłatę,
na raporcie dobowym w polu ‘Łączna opłata’ może również się pojawić wartość ujemna (teoretycznie, gdyby
były same zwroty),
2. sposób reprezentacji liczb ujemnych: BCD-10 ogranicza zakres kwot reprezentujących wartości: opłaty dla
pozycji paragonu, sumy opłat dla całego paragonu, sumy opłat dla całej doby do:
- 50.000.000,00 .. +49.999.999,99

Kody błędu:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 4 : zły numer linii (błąd parametru Pi),
(te numery identyczne jak dla sekwencji LBTRSLN)
= 16: błędna nazwa (pusta lub za długa),
= 17: błędne oznaczenie ilości (puste lub za długie),
= 18: błędne oznaczenie stawki PTU (lub brak),
= 19: błąd wartości CENA (syntaktyka, zakres lub brak),
= 20: błąd wartości BRUTTO (syntaktyka, zakres lub brak),
= 21: sekwencja odebrana przez drukarkę przy wyłączonym trybie transakcji,
= 22: błąd operacji STORNO - w wyniku jej wykonania suma w danej grupie podatkowej wychodzi ujemna),

(nowe błędy dla sekwencji LBTRSART)


= 41: błąd napisu <recepta>,
= 42: błąd kwoty OPLATA,

Str. 95
Drukarka Fiskalna POSNET Thermal i 3001
Zmodyfikowana sekwencja zakończenia paragonu LBTREXIT.

[LBTREXIT]: Akceptacja/ anulowanie paragonu.


ESC P 0 $e <check> ESC \

- ‘negatywne’ zatwierdzenie transakcji przez serwer (Cancel) - również anulowanie paragonu w trybie „on-line”
<check> - bajt kontrolny,

UWAGA: - wysłanie sekwencji CAN ESC P 0 $e <check> ESC \ - wyprowadza drukarkę z dowolnego
błędnego stanu do głównej pętli analizy syntaktyki,

ESC P 1 $e <kod> CR WPLATA/TOTAL <check> ESC \


lub:
ESC P 1;0;Pn $e <kod> CR <linia1> CR <linia2> CR <linia3> CR WPLATA/TOTAL/<check> ESC \

lub (zakończenie paragonu „aptecznego”) :

ESC P 1 $e <kod> CR WPLATA/TOTAL/OPŁATA/ <check> ESC \


lub:
ESC P 1;0;Pn $e <kod> CR <linia1> CR <linia2> CR <linia3> CR WPLATA/TOTAL/OPŁATA/ <check>
ESC \
‘pozytywne’ zatwierdzenie transakcji,
gdzie:
Pn = ilość dodatkowych linii umieszczanych w stopce paragonu, za logo
fiskalnym, do których ma dostęp aplikacja = 0..3
<linia1>..<linia3> = zawartość tych linii,
<kod> = string[3] - numer terminala (2 cyfry) + kod kasjera (litera),
(po tym parametrze powinien być terminator CR !)
WPLATA = kwota wpłacona przez klienta, jeżeli = 0 to napisy „gotówka / reszta” nie będą drukowane,
TOTAL = łączna należność dla klienta, rozumiana jako suma pól WARTOŚĆ dla wszystkich pozycji paragonu
(dla kontroli poprzednich transferów),
OPŁATA = łączna kwota, jaką musi zapłacić klient, jest to suma pól OPŁATA dla wszystkich pozycji paragonu,
parametr występuje tylko w sekwencji kończącej paragon „apteczny”,
<check> = bajt kontrolny,
Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 4 : błąd parametru Pn,
= 5 : błąd operacji z zegarem RTC,
= 6 : błąd operacji z pamięcią fiskalną,
= 23: błędna liczba rekordów (linii) paragonu,
= 24: przepełnienie bufora drukarki,
= 25: błędny kod terminala/kasjera (zła długość lub format), lub błędna treść dodatkowych linii,
= 26: błąd kwoty WPLATA (syntaktyka; jeżeli różnica WPLATA-TOTAL <=0 to napisy ‘gotówka’, ‘reszta’ nie
będą drukowane !)
= 27: błędna suma całkowita TOTAL,
= 28: przepełnienie totalizera,

Str. 96
Drukarka Fiskalna POSNET Thermal i 3001
= 29: żądanie zakończenia (pozytywnego !) trybu transakcji, w momencie kiedy nie został on jeszcze włączony,
= 43: błąd kwoty OPŁATA,
= 44: brak w paragonie leku, dla którego była drukowana wcześniej wycena (transakcja nie może być poprawnie
zakończona, ponieważ tablica zapamiętanych wycen leków nie jest pusta)

Formaty dodatkowych (aptecznych) wydruków niefiskalnych.

W opisywanym rozwiązaniu wprowadzono następujące wydruki niefiskalne, o ściśle ustalonym formacie:


• wycena leku (różne warianty),
• raport kasowy (wariant „apteczny”),
• zamówienie na lek recepturowy.

Wycena leku - format wydruku.

Pola oznaczone przez (*) są opcjonalne. Jeżeli dane pole jest związane z parametrem napisowym to jeżeli jest on
pusty lub równy ‘ ‘ (pojedyncza spacja) to cała linia, w której jest drukowany dany parametr nie będzie
drukowana. W przypadku parametru numerycznego (kwota) linia jest pomijana jeżeli od-nośny parametr jest
równy 0 oraz wydruk danej linii został explicite „zablokowany” w sekwencji sterującej (por. opis sekwencji
LBRPDTA na stronie 103).
1.1. Nagłówek.
• zawiera informacje odczytane z pamięci fiskalnej, max 217 znaków, łącznie z kodami sterującymi (mogą
to być LF-y ale również kody ‘wzbogacające’ wydruk np. podwójna szerokość linii), format nagłówka jest
zatem dowolny - ustalony w procesie fiskalizacji drukarki. Nagłówek musi zawierać następujące
informacje:
• nazwa przedsiębiorstwa (apteki),
• adres
• NIP
1.2. Linia zawierająca datę, godzinę oraz numer kolejny wydruku niefiskalnego, w formacie (dane
dopisywane automatycznie przez drukarkę):

|0123456789012345678901234567890123456789|
|yy-mm-dd www hh:mm kkkkkk|

(‘www’ - 3-znakowe oznaczenie dnia tygodnia dopisywane przez drukarkę)


1.3. Tytuł wydruku w formacie:

|0123456789012345678901234567890123456789|
| ## WYCENA LEKU - NIEFISKALNE ## |
|NAZWA: nnnnnnnnnnnnnnnnnnnnnnnnnnnnnn|
|POSTAĆ, DAWKA: pppppppppppppppppppp|
|OPAKOWANIE: oooooooooooooooooooo|
gdzie:
‘nnn..n’ = string[30]: dowolny napis przesłany przez aplikację, (nie zawiera kodów kontrolnych),
‘ppp..p’ = string[20],
‘ooo..o’ = string[20].

1.4. Ilość, cena, wartość, podatek VAT, opłata.

|0123456789012345678901234567890123456789|
|ILOŚĆ: iiiiiiiiii|
|WARTOŚĆ: wwwwwwww.ww|
|CENA: cccccccc.cc|
|VAT vv % : pppppppp,pp|
|OPŁATA: oooooooo.oo|

Str. 97
Drukarka Fiskalna POSNET Thermal i 3001
gdzie:
‘iii..i’ = parametr napisowy: string[20], ‘ww..w’,’cc..c’,’pp..p’,’oo..o’ = wartości przesłane jako parametry
numeryczne (kwoty, dopuszczalne znaki ‘0’..’9’ oraz ‘.’), przy czym parametr ‘ww..w’ oprócz kontroli formalnej
pod-lega również kontroli na zgodność wycen leków z treścią paragonu fiskalnego.
Stopa podatku VAT jest odczytana z pamięci fiskalnej i wybrana na podstawie jednoznakowego parametru (typu
‘char’) przesłanego w sekwencji LBRPDTA (który może być równy ‘A’..’D’ lub ‘Z’ lub ‘ ‘).
1.5. Parametry sprzedaży w formacie:

|0123456789012345678901234567890123456789|
|KASA NR nnnnnnnnnnnnnnnnnnnn|
|PŁATNE: pppppppppp|
|RECEPTA: xxxxxxxxxx|
|REFUNDACJA: rrrrrrrrrr|
|WYDAŁ: wwwwwwwwwwwwwwwwwwwww|
|DATA: dddddddddd| (*)
gdzie:
‘nnn..n’ = string[20]: numer kasy + numer paragonu w systemie, traktowane jako napis,
‘ppp..p’ = string[10]: oznaczenie zniżki np. ‘30%’,’ryczałt’,itp.
‘xxx..x’ = string[10]: oznaczenie rodzaju recepty,
‘rrr..r’ = string[10]: numer refundacji (traktowany jako napis),
‘www..w’ = string[30]: dane osoby wydającej lek,
‘ddd..d’ = string[10]: oznaczenie daty np. w formacie ‘1995-xx-xx’,(wiersz drukowany jeżeli odpowiedni
parametr jest niepusty).
Ciąg linii zawierających opcjonalne parametry numeryczne:
1.6. Ilość lekospisowa (*). Ta linia jest drukowana jeżeli napis (string[10]) odpowiadający temu
parametrowi sekwencji jest niepusty:
|0123456789012345678901234567890123456789|
|ILOŚĆ LEKOSPISOWA: iiiiiiiiii|

1.7. Cena limitowa (*). Linia nie drukowana jeżeli parametr Pcl <> 0.
Drukowana jest wartość ‘kk..k’ przesłana jako parametr numeryczny (kwota).
|0123456789012345678901234567890123456789|
|LIMIT: kkkkkkkk.kk|

1.8. Dopłata ponad cenę limitową (*). Nie drukowana jeżeli parametr Ppl <> 0.
Drukowana jest wartość ‘kk..k’ przesłana jako parametr numeryczny (kwota).
|0123456789012345678901234567890123456789|
|PONAD LIMIT: kkkkkkkk.kk|

1.9. Dopłata 100


% (*). Linia nie drukowana jeżeli parametr Pd100 <> 0.
Drukowana jest wartość ‘kk..k’ przesłana jako parametr numeryczny (kwota).
|0123456789012345678901234567890123456789|
|DOPŁATA (100%): kkkkkkkk.kk|

1.10.Opłata podstawowa (*). Linia nie drukowana jeżeli parametr Pop <> 0.
Drukowana jest wartość ‘kk..k’ przesłana jako parametr numeryczny (kwota).

|0123456789012345678901234567890123456789|
|OPŁATA PODSTAWOWA: kkkkkkkk.kk|

1.11.Refundacja (*). Linia nie drukowana jeżeli parametr Prf <> 0.


Drukowana jest wartość ‘kk..k’ przesłana jako parametr numeryczny (kwota).

|0123456789012345678901234567890123456789|

Str. 98
Drukarka Fiskalna POSNET Thermal i 3001
|REFUNDACJA: kkkkkkkk.kk|

1.12. Opcjonalne dane dodatkowe - blok 0..4 linii. Drukowane są tylko linie zawierające niepuste napisy.
|0123456789012345678901234567890123456789|
|PACJENT: pppppppppppppppppppppppppppppp| (*)
|LEKARZ: llllllllllllllllllllllllllllll| (*)
|REFUNDATOR: rrrrrrrrrrrrrrrrrrrr| (*)
|WOJEWÓDZTWO: wwwwwwww wwwww| (*)

gdzie:
‘ppp..p’ = string[30]: dane pacjenta (np. numer ubezpieczenia, nazwisko i imię),
‘lll..l’ = string[30]: dane lekarza (numer - w postaci napisu),
‘rrr..r’ = string[20]: nazwa organizacji refundującej,
‘www..w’ = string[20]: nazwa województwa.
1.16. Koniec wydruku, format:
|0123456789012345678901234567890123456789|
| ## KONIEC WYCENY LEKU - NIEFISKALNE ## |

Raport kasowy.

2.1. Nagłówek (dane podatnika odczytane z pamięci fiskalnej, jw.).


2.2. Linia zawierająca datę, godzinę oraz numer kolejny wydruku niefiskalnego, w formacie (dane
dopisywane automatycznie przez drukarkę, jw.):

|0123456789012345678901234567890123456789|
|yy-mm-dd www hh:mm kkkkkk|

2.3. Tytuł wydruku w formacie:

|0123456789012345678901234567890123456789|
| ## RAPORT KASOWY - NIEFISKALNE ## |
|OD: dd-mm-rrrr gg:mm |
|DO: dd-mm-rrrr gg:mm |
|KASA NR nnnn kkkkkkkkkkkkkkkkkkkkkkkkkkk|
|PARAGONY: pppppp-qqqqqq|

gdzie:
‘dd-mm-rrrr gg:mm’ = data / godzina przesłana z systemu (jako ciąg parametrów binarnych Pd..Pmn w
sekwencji sterującej
LBAPTREP)
‘nnnn’ = string[4]: numer kasy, dowolny 4-znakowy napis,
‘kk..k’ = string[27] : identyfikacja osoby obsługującej, dowolny napis,
‘pp..p’,’qq..q’ = string[6] = napisy do oznaczenia zakresu numerów paragonów (według systemu
komputerowego).
2.4. Raport VAT - opcjonalny (*). Blok ten nie jest drukowany jeżeli parametr Pv sekwencji LBAPTREP jest
<> 0.
Format:
|0123456789012345678901234567890123456789|
|VAT aa % : aaaaaaaa,aa pppppppp,pp|
|VAT bb % : bbbbbbbb,bb qqqqqqqq,qq|
|VAT cc % : cccccccc,cc rrrrrrrr,rr|

Str. 99
Drukarka Fiskalna POSNET Thermal i 3001
|VAT dd % : dddddddd,dd ssssssss,ss|
|ZW. : zzzzzzzz,zz 0,- |
|RAZEM : xxxxxxxx,xx tttttttt,tt|

gdzie:
‘aa’,’bb’..’dd’ = stopy podatkowe odczytane z modułu ,
‘aaaaaaaa,aa’..’dddddddd,dd’ = kwoty sprzedaży w grupach PTU A..D naliczone przez system
(wartości te nie są przez drukarkę sprawdzane na zgodność z
totalizerami),
‘zzzzzzzz,zz’ = kwota sprzedaży zwolnionej od podatku,
‘pppppppp,pp’..’ssssssss,ss’ = kwoty podatku w poszczególnych grupach podatkowych,
‘xxxxxxxx,xx’ = sprzedaż całkowita (nie jest sprawdzana ani zgodność z danymi z totalizera drukarki
ani poprawność dodawania kwot z ‘aaaaaaaa,aa’..’zzzzzzzz,zz’),
‘tttttttt,tt’ = suma kwot ‘pppppppp,pp’..’ssssssss,ss’ (obliczona przez system, nie jest kontrolowana
przez drukarkę).
2.5. Raport gotówkowy - opcjonalny (*). Blok ten nie jest drukowany jeżeli parametr Pg jest <> 0.
|0123456789012345678901234567890123456789|
|ZALICZKI s zzzzzzzz,zz|
|GOTÓWKA POCZĄTKOWA pppppppp,pp|
|GOTÓWKA KOŃCOWA kkkkkkkk,kk|
gdzie:
s = string[1] - jednoznakowy parametr przesłany przez system, równy ‘ ‘ lub ‘-‘, dla oznaczenia kwoty
ujemnej,
‘zz..z’,’pp..p’,’kk..k’ = wartości 3 kwot przesłane przez system
2.6. Koniec wydruku - linia w formacie:

|0123456789012345678901234567890123456789|
| ## KONIEC RAPORTU - NIEFISKALNE ## |

Zamówienie na lek recepturowy.

3.1. Nagłówek (dane podatnika odczytane z pamięci fiskalnej, jw.).


3.2. Linia zawierająca datę, godzinę oraz numer kolejny wydruku niefiskalnego, w formacie (dane
dopisywane automatycznie przez drukarkę, jw.):

|0123456789012345678901234567890123456789|
|yy-mm-dd www hh:mm kkkkkk|

3.3. Tytuł wydruku w formacie:

|0123456789012345678901234567890123456789|
| ## NIEFISKALNE ## |
| ## LEK RECEPTUROWY - ZAMÓWIENIE ## |

(następna linia wydrukowana znakami o podwójnej szerokości):


|01234567890123456789|
|NUMER: nnnnnnnnnn|
gdzie:
‘nnn..n’ = string[10] - numer zamówienia przesłany z systemu, traktowany jako napis.
3.4. Data przyjęcia zamówienia:

|0123456789012345678901234567890123456789|
|DATA: dd-mm-rrrr |

gdzie:
‘dd-mm-rrrr’ = data przesłana z systemu jako 3 parametry liczbowe Py1,Pm1,Pd1.
3.5. Dane osoby przyjmującej zamówienie:

Str. 100
Drukarka Fiskalna POSNET Thermal i 3001

|0123456789012345678901234567890123456789|
|PRZYJĄŁ: wwwwwwwwwwwwwwwwwwwww|

gdzie:
‘www..w’ = string[30] = napis przesłany z systemu.
3.6. Termin odbioru (*) - opcjonalny:

|0123456789012345678901234567890123456789|
|TERMIN ODBIORU: dd-mm-rrrr |

lub drugi format (bez parametrów):

|TERMIN ODBIORU:............................................|
UWAGA: - data drukowana w tej linii jest wybierana przez 3 parametry numeryczne Py2,Pm2,Pd2: rok (2
ostatnie cyfry), miesiąc (=1..12), dzień (=1..31), różne wartości tych parametrów dają 3
możliwe formaty linii:
• linia pominięta, gdy Py2=Pm2=Pd2=0 (lub brak parametrów),
• format z datą ‘dd..rr’, gdy wszystkie parametry mają poprawny zakres a Py2=0..99,
• format „z kropkami”, gdy Py2 >=100 (Pm2,Pd2: nieistotne).

3.7. Kwota przedpłaty (*). Linia ta nie jest drukowana jeżeli parametr Pks<>0.
Format:
|0123456789012345678901234567890123456789|
|OPŁATA: kkkkkkkk,kk |

gdzie:
‘kk..k’ = wartość kwoty przesłana z systemu w postaci numerycznej.

3.8. Pacjent (*). Linia drukowana jeżeli odnośny parametr jest niepusty.

|0123456789012345678901234567890123456789|
|PACJENT: ppppppppppppppppppppppppppppp| (*)
gdzie:
‘ppp..p’ = string[30]: dane pacjenta (np. numer ubezpieczenia, nazwisko i imię).
3.9. Lekarz (*). Linia drukowana tylko jeżeli odnośny parametr jest niepusty.

|0123456789012345678901234567890123456789|
|LEKARZ: llllllllllllllllllllllllllllll | (*)
gdzie:
‘lll..l’ = string[30]: dane lekarza (numer - w postaci napisu).
3.10. Zakończenie wydruku. Format:

|0123456789012345678901234567890123456789|
| ## KONIEC ZAMÓWIENIA - NIEFISKALNE ## |

Str. 101
Drukarka Fiskalna POSNET Thermal i 3001

Związek między wydrukami niefiskalnymi wycen leków a wydrukiem paragonu fiskalnego.

Drukowanie ciągu wycen leków jest ściśle powiązane ze sprzedażą tych leków na paragonie fiskalnym w następujący
sposób. W dowolnym momencie przy wyłączonym trybie transakcji (!) można wydrukować pewną liczbę takich
wycen - dla zaakceptowania ich przez klienta. Każda wycena jest zapamiętana przez drukarkę (w pamięci nieulotnej
tj. w sposób odporny na wyłączenie zasilania !) w tablicy zawierającej nazwy i wartości (tj. kwoty wchodzące do
obliczenia podatku VAT, a nie ‘opłaty’ !). Pojemność tej tablicy wynosi 20 pozycji co ogranicza maksymalną ilość
wycen drukowanych „pod rząd”. Zapamiętywane są pełne, 40-znakowe nazwy. Jeżeli dana nazwa pojawi się w
wycenie więcej niż jeden raz, to umieszczona w tablicy wycen wartość jest sumą wartości wszystkich wycen
odpowiadających tej nazwie.
Jeżeli wydrukowano chociaż jedną wycenę (tablica jest „niepusta”) to nie ma możliwości poprawnego zakończenia
transakcji bez sprzedaży (umieszczenia na paragonie wszystkich pozycji, dla których były drukowane poprzednio
wyceny. Kontrola ta jest przeprowadzana przez drukarkę zawsze (przy „niepustej” tablicy) niezależnie od rodzaju
paragonu (jedno-, dwulinijkowy lub „apteczny”) oraz trybu drukowania (paragon blokowy / „On-Line”). Podczas
tworzenia (tryb blokowy) lub drukowania (tryb „On-Line”) paragonu każda linijka jest kontrolowana pod kątem
zgodności nazwy z nazwami zawartymi w tablic nazw dla wycen leków. Po wykryciu danej nazwy sprawdzana jest
zgodność wartości. Jeżeli nazwa się zgadza ale wartości są różne zostanie zgłoszony błąd transakcji. W przypadku
stwierdzenia zgodności nazw i wartości dana pozycja jest zaznaczana w tablicy jako „wydrukowana” (ale nie jest
„usuwana” ze względu na możliwość anulowania transakcji). Poprawne zatwierdzenie transakcji może nastąpić
tylko, gdy wszystkie pozycje umieszczone w tablicy „wycen” zostaną wydrukowane / umieszczone na paragonie.
Próba zakończenia transakcji bez spełnienia tego warunku daje błąd transakcji, który powoduje w trybie blokowym
usunięcie całego paragonu i odtworzenie stanu tablicy „wycen” a w trybie „On-Line” skutkuje anulowaniem
transakcji. Zwróćmy uwagę, że „stornowanie” pozycji na paragonie powoduje jej „odtworzenie” w tablicy. Ponadto
zauważmy, że ponieważ identyfikacja wyceny odbywa się na podstawie nazwy - kolejność wycen nie musi
odpowiadać kolejności leków na paragonie. Ponadto na paragonie można umieścić również towary „spoza listy” tj.
takie, dla których nie drukowano wycen.
Ponieważ może zaistnieć sytuacja, kiedy po wydrukowaniu wyceny zrezygnowano ze sprzedaży leku - przewidziano
możliwość usunięcia pozycji z tablicy wycen - przy pomocy sekwencji LBCLRDTA oraz kasowania całej tablicy -
sekwencja LBCLRALL. Operacje takie są odnotowywane w pamięci nieulotnej drukarki i na raporcie dobowym jest
drukowana ilość usuniętych w ten sposób pozycji oraz war-„stornowanych wycen”.
Reasumując: powiązano wydrukowanie wyceny leku z jego sprzedażą. Nie jest możliwe wydrukowanie samej
wyceny bez dokonania sprzedaży. W wyjątkowych sytuacjach można zrezygnować ze sprzedaży, ale fakty takie
zostaną odnotowane na raporcie dobowym. Kontrolowana jest również zgodność wartości leku na paragonie z
wartością podaną na wycenie. Wydrukowanie ciągu wycen poprzedza w tym rozwiązaniu wydrukowanie paragonu
fiskalnego - co jest preferowanym ze względów organizacyjnych rozwiązaniem.

Str. 102
Drukarka Fiskalna POSNET Thermal i 3001

Sekwencje sterujące dla uzyskania dodatkowych aptecznych wydruków niefiskalnych.

We wszystkich podanych niżej sekwencjach obowiązują ogólne zasady syntaktyki dla drukarki „DF-300”. W
szczególności w każdej sekwencji występuje 2-znakowy parametr <check> oznaczający bajt kontrolny sekwencji
(suma znaków modulo 256, zakodowana jako dwa znaki heksadecymalne).

[LBRPDTA]: Wycena leku.

ESC P Pc;Pcl;Ppl;Pd100;Pop;Prf *w <nazwa> CR <postac_dawka> CR <opakowanie> CR <ptu> CR


<ilosc> CR <kasa_nr> CR <platne> CR <recepta> CR <refundacja> CR <wydal> CR <data> CR
<ilosc_lekospis> CR <pacjent> CR <lekarz>CR <refundator> CR <wojewodztwo> CR <wartosc> /
<cena> / <vat> / <oplata> / <limit> / <ponad_limit> / <doplata> / <oplata_podst>/ <refundacja> / <check>
ESC \
Sekwencja powoduje:
• wydrukowanie wydruku niefiskalnego dla wyceny leku,
• dopisanie do tablicy „zapamiętanych wycen” leków danej pozycji - nazwy i wartości (jeżeli dana nazwa już
występuje w tablicy to wartość zapamiętana w tablicy jest inkrementowana o aktualną kwotę przekazana w
sekwencji).

Parametr Pc steruje pracą obcinacza po zakończeniu drukowania:


Pc = 0 : odcięcie paragonu,
Pc = 1 : bez odcięcia.

Parametry Pcl..Prf powodują zablokowanie drukowania wybranych kwot jeżeli dany parametr jest Pcl..Prf <> 0 oraz
dana kwota jest zerowa. Brak parametru lub wartość zerowa powoduje drukowanie linii związanej z daną kwotą,
również jeżeli kwota ta jest zerowa.
Pcl : kwota <limit> (linia ‘LIMIT:...’),
Ppl : kwota <ponad_limit> (linia ‘PONAD LIMIT:...’),
Pd100: kwota <dopłata> (linia ‘DOPŁATA (100%):...’),
Pop : kwota <oplata_podst> (linia ‘OPŁATA PODSTAWOWA:...’),
Prf : kwota <refundacja> (linia ‘REFUNDACJA:...’),
Parametry napisowe sekwencji. Parametry oznaczone jako (*) mogą być puste, wtedy odnośna linia nie jest
drukowana. Jako parametr „pusty” jest również uznawana pojedyncza spacja.
<nazwa> = string[30],
<postac_dawka> = string[20],

<opakowanie> = string[20],

<ptu> = char,

<ilosc> = string[10],

<kasa_nr> = string[20],

<platne> = string[10],

<recepta> = string[10],

<refundacja> = string[10],

Str. 103
Drukarka Fiskalna POSNET Thermal i 3001
<wydal> = string[30],

<data> = string[10] (*),

<ilosc_lekospis> = string[10] (*),

<pacjent> = string[30] (*),

<lekarz> = string[30] (*),

<refundator> = string[20] (*),

<wojewodztwo> = string[20] (*).

Parametry numeryczne sekwencji (kwoty, muszą występować wszystkie nawet jeżeli nie wszystkie są drukowane):
<wartosc>,<cena>,<vat>,<oplata>,<limit>,<ponad_limit>,<doplata>, <oplata_podst>,<refundacja>.

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 3 : zła ilość parametrów (więcej niż 6),
= 4 : błąd parametru (Pc..Prf),
= 5 : błąd odczytu zegara RTC,
= 45: przepełnienie tablicy wycen (zbyt duża liczba wycen wydrukowana),
błędy parametrów napisowych sekwencji:
= 46: błąd pola <nazwa>,
= 47: błąd pola <postac_dawka>,
= 48: błąd pola <opakowanie>,
= 49: błąd pola <ptu>,
= 50: błąd pola <ilosc>,
= 51: błąd pola <kasa_nr>,
= 52: błąd pola <platne>,
= 53: błąd pola <recepta>,
= 54: błąd pola <refundacja>,
= 55: błąd pola <wydal>,
= 56: błąd pola <data>,
= 57: błąd pola <ilosc_lekospis>,
= 58: błąd pola <pacjent>,
= 59: błąd pola <lekarz>,
= 60: błąd pola <refundator>,
= 61: błąd pola <wojewodztwo>,

pozostałe błędy sekwencji:


= 62: błąd jednej z wartości numerycznych <wartosc>...<refundacja> (może być błąd syntaktyki lub brak
jednego z parametrów).

Str. 104
Drukarka Fiskalna POSNET Thermal i 3001

[LBCLRDTA] : Kasowania zapamiętanych danych o wycenie leku („stornowanie wyceny”).

ESC P *c <nazwa> CR <check> ESC \


sekwencja usuwa z tablicy zapamiętanych wycen pozycję identyfikowaną przez nazwę <nazwa> = string[40].

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 63: brak w tablicy zapamiętanych wycen podanej nazwy,

[LBCLRALL] : Kasowanie całej zapamiętanej listy wycen leków.

ESC P *a <check> ESC \

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,

UWAGA: wykonanie sekwencji gdy tablica jest pusta nie powoduje zgłoszenia błędu.

[LBAPTREP] : Raport kasowy w formacie dla aptek.

ESC P Py1; Pm1; Pd1; Ph1; Pmn1; Py2; Pm2; Pd2; Ph2; Pmn2; Pv; Pg *r <kasa> CR <osoba> CR
<par1> CR <par2> CR <brutto_a> / <brutto_b> / <brutto_c> / <brutto_d> / <brutto_z> / <total_brutto> /
<ptu_a> / <ptu_b> / <ptu_c> / <ptu_d> / <total_ptu> / <znak_z> CR <zaliczki> / <got_pocz> / <got_konc>
/ <check> ESC \
Parametry:
Py1,Pm1,Pd1,Ph1,Pmn1 = data / godzina początkowa raportu (linia ‘OD:’),
Py2,Pm2,Pd2,Ph2,Pmn2 = data / godzina końcowa raportu (linia ‘DO:...’),
Py1,Py2 = rok = 0..99 (2 ostatnie cyfry, przy czym 0: 2000),
Pm1,Pm2 = miesiąc = 1..12,
Pd1,Pd2 = dzień = 1..31,
UWAGA: poprawność daty (ilość dni miesiąca) nie jest kontrolowana,
Ph1,Ph2 = godzina = 0..23,
Pmn1,Pmn2 = minuta = 0..59,
Pv <> 0 : blok raportu kwot VAT nie jest drukowany,
Pg <> 0 : blok raportu gotówkowego nie jest drukowany,
UWAGA: brak parametrów Pv,Pg oznacza Pv=Pg=0 (bloki są drukowane),

Parametry napisowe:
<kasa> = string[4] = numer kasy (traktowany jako dowolny napis),
<osoba> = string[27] = identyfikacja osoby obsługującej,
<par1> = string[6] = początkowy nr. paragonu dla raportu,
<par2> = string[6] = końcowy nr. paragonu dla raportu,
<znak_z> = string[1] = ‘ ‘ lub ‘-‘ = znak kwoty drukowanej w linii ‘ZALICZKI...’, musi występować, nawet
jeżeli ten blok nie jest drukowany.

Parametry numeryczne (kwoty). Muszą zawsze występować wszystkie nawet jeżeli blok kwot VAT i/lub blok raportu
gotówkowego nie są drukowane:
<brutto_a>,<brutto_b>,<brutto_c>,<brutto_d> = kwoty sprzedaży w grupach podatkowych A..D,

Str. 105
Drukarka Fiskalna POSNET Thermal i 3001
<brutto_z> = kwota zwolniona od podatku,
<total_brutto> = suma kwot j.w.,
<ptu_a>,<ptu_b>,<ptu_c>,<ptu_d> = kwoty podatku naliczonego od kwot sprzedaży w grupach A..D
<total_ptu> = suma kwot podatku j.w.
Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 3 : zła ilość parametrów (więcej niż 12),
= 4 : błąd parametru (Py1..Pg),
= 5 : błąd odczytu zegara RTC,

błędy parametrów napisowych sekwencji:


= 64: błąd pola <kasa>,
= 65: błąd pola <osoba>,
= 66: błąd pola <par1>,
= 67: błąd pola <par2>,
= 68: błąd pola <znak_z>,

pozostałe błędy sekwencji:


= 69: błąd jednej z wartości numerycznych <brutto_a>...<total_ptu> (może być błąd syntaktyki lub brak jednego z
parametrów).

[LBRPORD] : Zamówienie na lek recepturowy.

ESC P Py1; Pm1; Pd1; Py2; Pm2; Pd2; Pks; Pn *k <numer> CR <osoba> CR <pacjent> CR <lekarz> CR
<opłata> / <check> ESC \

Sekwencja powoduje wydrukowanie zamówienia na lek recepturowy.


Parametry:
Py1,Pm1,Pd1 = data przyjęcia zamówienia (linia 'DATA:....'),
Py2,Pm2,Pd2 = termin odbioru (linia 'TERMIN ODBIORU.....'),
Py1 = rok = 0..99 (2 ostatnie cyfry, przy czym 0: 2000),
Pm1 = miesiąc = 1..12,
Pd1 = dzień = 1..31,
Py2 = rok = 0..99 lub 100 (2 ostatnie cyfry, przy czym 0: 2000),
Pm2 = miesiąc = 1..12 lub 0,
Pd2 = dzień = 1..31 lub 0,
UWAGA: - gdy Py2=Pd2=Pm2=0 to linia 'TERMIN ODBIORU...' nie jest
drukowana.
- gdy Py2=100 to parametry nie są drukowane, a linia jest
uzupełniona kropkami,
- w p.p. na końcu linii jest drukowana data określona przez
parametry Py2, Pm2 i Pd2,
Pks<>0 : kwota przedpłaty nie jest drukowana.
Pn=0..8 = ilosc kopii numerka na lek recepturowy, wartość 0 lub brak
parametru powoduje wydrukowanie jednego egzemplarza.
UWAGA:
Dodatkowy parametr Pn (>1) powoduje wydrukowanie więcej niż jednego zamówienia na lek recepturowy przy
użyciu jednej sekwencji. Ponadto sekwencja w nowej postaci powoduje zwiększenie wartości na wyświetlaczu o
przesłaną kwotę opłaty ( <opłata> - oczywiście wartość ta jest dodawana raz, jeżeli jest drukowana więcej niż jedna
kopia). Zwróćmy uwagę, że ponieważ początek transakcji zeruje wartość na wyświetlaczu prawidłowa sekwencja
działań polega na wydrukowaniu paragonu fiskalnego oraz bezpośrednio po nim numerku (ew. ciągu numerków) na
lek recepturowy. Po wydrukowaniu ostatniego numerka na wyświetlaczu będzie prawidłowa kwota do zapłaty
obejmująca również opłaty za leki recepturowe.

Str. 106
Drukarka Fiskalna POSNET Thermal i 3001
Parametry napisowe:
Parametry oznaczone jako (*) mogą być puste, wtedy odnośna linia nie jest drukowana. Jako parametr "pusty" jest
również uznawana pojedyncza spacja.

<numer> = string[10] = numer zamówienia, traktowany jako napis,


<osoba> = string[30] = dane osoby przyjmującej zamówienie,
<pacjent> = string[30] (*),
<lekarz> = string[30] (*).

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 3 : zła ilość parametrów (więcej niż 7),
= 4 : błąd parametru (Py1..Pks),
= 5 : błąd odczytu zegara RTC,
(błędy parametrów napisowych sekwencji)
= 70: błąd pola <numer>,
= 71: błąd pola <osoba>,
= 72: błąd pola <pacjent>,
= 73: błąd pola <lekarz>,
(inne błędy)
= 74: błąd kwoty <opłata>.

[LBPRNTXT]: Opisu działania leku.

ESC *t <nazwa> CR <opis> #255 <check> ESC \

gdzie:
<nazwa> = napis złożony z max. 30 znaków zakończony CR,
<opis> = napis złożony z max. 2000 znaków ale nie więcej niż 50 linii
zakończony kodem ASCII 255 (dziesiętnie).
<check> = bajt kontrolny dla całej sekwencji.

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 74: błąd pola <nazwa>,
= 75: błąd pola <opis>, przekroczenie dopuszczalnej ilości linii = 50

UWAGA:
Jest zapamiętywany fakt wydrukowania opisu leku o danej nazwie. Fakt ten powoduje konieczność
sprzedaży tego towaru w trakcie następnej transakcji, lub usunięcia tej nazwy z listy przy pomocy sekwencji
LBCLRTXT. Usunięcie nazwy z listy jest odnotowywane w raporcie dobowym. Jest to zatem analogiczna koncepcja
„powiązania” drukowania opisów leków z ich sprzedażą jak dla wycen leków. Sekwencja LBCLRTXT usuwa z listy
nazwę, która pojawiła się w opisie, jeżeli ta sama nazwa pojawiła się w wycenie leku to nie jest ona usuwana.
Sekwencja LBCLRALL usuwa z listy wszystkie nazwy które pojawiły się zarówno w wycenach jak i opisach.
Informacja o usuniętym opisie pojawia się w raporcie dobowym w postaci linii o formacie:

|ILOŚĆ ANULOWANYCH OPISÓW iiiiii|

Str. 107
Drukarka Fiskalna POSNET Thermal i 3001

[LBCLRTXT] : Kasowanie opisu działania leku z tablicy wycen.

ESC P *z <nazwa> CR <check> ESC \

- sekwencja usuwa z tablicy zapamiętanych wycen pozycję identyfikowaną przez nazwę

<nazwa> = string[DL_NAZWY], która została tam wpisana przy użyciu sekwencji LBPRNTXT.
<check> - suma kontrolna.

Kody błędów:
= 1 : nie zainicjalizowany zegar RTC,
= 2 : błąd bajtu kontrolnego,
= 76: brak w tablicy zapamiętanych opisów podanej nazwy,

[LBPRNDIR] : Sekwencja związana z obsługą dodatkowego portu szeregowego.

ESC P Ps;Pm #y <check> ESC \

Ps = 0: wydruki niefiskalne kierowane będą na drukarkę paragonową


Ps = 1: wydruki niefiskalne kierowane będą na drukarkę zewnętrzną

Opcjonalny parametr Pm określa gęstość druku (tylko dla drukarki zewnętrznej):

Pm = 0 (lub brak) : drukuj z aktualnie wybraną gęstością


Pm = 1 : 10 CPI
Pm = 2 : 12 CPI
Pm = 3 : 17 CPI
Pm >=4 : 20 CPI
Pm = 5 : Wybór „slip printera” (TM-290 - przełączenie w tryb 42 kolumn)

UWAGA:
Po odebraniu tej sekwencji wszystkie wydruki generowane przez następujące dalej sekwencje:
LBRPDTA,LBAPTREP,LBRPORD,LBPRNXT będą kierowane na zdefiniowane urządzenie aż do ponownego
odebrania sekwencji LBPRNDIR lub wyłączenia zasilania.

Kody błędów:
= 2 : błąd bajtu kontrolnego,
= 4 : błąd parametru Ps

Str. 108
Drukarka Fiskalna POSNET Thermal i 3001

12.Opis interfejsów drukarek fiskalnych Thermal i 3001

Uwagi ogólne

Drukarki POSNET Thermal i POSNET 3001 wyposażono w interfejs szeregowy RS-232C. Interfejs ten umożliwia
komunikację dwukierunkową, co jest istotne w sytuacji, gdy aplikacja wymaga odczytu statusu drukarki. Interfejs
komunikacyjny korzysta z bufora wejściowego w drukarce - o długości 2048 znaków (kolejka znaków wejściowych,
FIFO).
Stan braku gotowości urządzenia zachodzi w momencie zapełnienia 3/4 pojemności bufora komunikacyjnego tj.
jeżeli znajdzie się w nim 1536 znaków. Wówczas transmisja znaków z komputera do drukarki powinna zostać
wstrzymana, aż do momentu, kiedy procesor drukarki pobierze z bufora odpowiednią ich liczbę - założono, że
drukarka będzie ponownie gotowa do przyjmowania następnych danych, gdy ilość znaków spadnie poniżej 1/4
długości bufora, tj. 512 znaków.
Zastosowano tzw. protokół XON-XOFF. Polega on na tym, że drukarka wysyła znak XOFF (ctrl S, hex 13) w
momencie, gdy bufor wejściowy ulegnie zapełnieniu (w tym przypadku będzie w nim 1536 znaków). W chwili, gdy
ilość znaków w buforze spadnie poniżej określonego progu (512 znaków), drukarka wysyła znak XON (ctrl Q, hex
11). Zastosowanie tego protokołu umożliwia poprawną pracę interfejsu przy wykorzystaniu połączenia za pomocą
jedynie trzech (interfejs napięciowy) lub czterech (pętla prądowa) przewodów. Aby zapewnić poprawną pracę
interfejsu, musi być zrealizowany ten protokół komunikacyjny.
Można również zastosować protokół sprzętowy przy użyciu linii RTS. Linia ta jest ustawiana w stan niski (-12V)
jeżeli drukarka nie jest gotowa do przyjmowania następnych znaków ; w stan wysoki (+12V) w stanie gotowości.
Zwykle trzeba zrealizować połączenie RTS drukarki z CTS komputera. Z uwagi na konieczność zastosowania
specjalnego kabla nie jest to sposób zalecany.

Opis interfejsu szeregowego

Parametry interfejsu szeregowego są ustalone "na stałe" (Tabela 1.):

Tabela 1
PARAMETR WIELKOŚĆ
Szybkość transmisji 1200..19200 bodów
(domyślnie 9600)
Ilość bitów informacyjnych 8
Parzystość Brak
Ilość bitów STOP 1
Protokół komunikacyjny odbiornika XON-XOFF
Protokół komunikacyjny nadajnika Brak

Zwróćmy uwagę na ostatni parametr w powyższej liście, który informuje, że komputer nie ma możliwości
wstrzymania transmisji danych wysyłanych przez drukarkę.

Podłączenie drukarki do komputera przy pomocy interfejsu szeregowego nie przedstawia specjalnych
trudności pod warunkiem, że zostaną spełnione następujące warunki sprzętowe i programowe.

Okablowanie. Sygnały interfejsu

Jak już wspomniano wcześniej, interfejs szeregowy drukarki może pracować jako interfejs napięciowy (wg
standardu RS-232C). W najprostszym przypadku (interfejs napięciowy) wystarczą 3 przewody - dane odbierane
przez drukarkę, dane nadawane przez drukarkę oraz masa sygnałowa. Często popełniany błąd w takim połączeniu to
zastosowanie kabla, w którym przewody sygnałowe nie są skrzyżowane. Ponadto, niektóre programy sterujące
interfejsem wymagają dla poprawnej pracy nadajnika (komputera) zwarcia sygnału RTS z CTS (od strony
komputera), natomiast dla poprawnej pracy odbiornika wymagane jest zwarcie sygnałów DTR z DCD oraz DSR (od
strony komputera). Od strony drukarki żadne zwarcia nie są wymagane.

Str. 109
Drukarka Fiskalna POSNET Thermal i 3001
Istotne jest, że zgodnie z normą V.24 maksymalna długość takiego połączenia (standard napięciowy) nie
może przekraczać (przy szybkości transmisji 9600 bodów) 15 metrów. Chociaż często jest stosowane połączenie
dłuższe (z pozytywnym rezultatem), należy taką praktykę zakwalifikować jako błędną.
Drugim problemem, który pojawia się przy wykorzystaniu interfejsu napięciowego, jest brak izolacji
galwanicznej mas sygnałowych urządzeń. Ponieważ masy sygnałowe urządzeń (komputera i drukarki) są zwarte
z masami ochronnymi (uziemieniami) , wszelkie różnice potencjałów między uziemieniami komputera i drukarki
powodują przepływ (często znacznego !) prądu poprzez połączenie mas sygnałowych urządzeń. Prąd ten powoduje
oczywiście dodatkową różnicę potencjałów, co może zwiększać prawdopodobieństwo przekłamań transmisji.
Ponadto w obwodzie masy sygnałowej mogą pojawiać się w takiej sytuacji zakłócenia impulsowe (związane np.
z załączeniem dodatkowych odbiorników prądu w sieci energetycznej), które dają dodatkowe błędy transmisji.
Problem ten występuje szczególnie drastycznie, gdy oba urządzenia (komputer i drukarka) są zasilane z różnych faz
lub obwodów energetycznych, a połączenia masy ochronnej są realizowane w sieci energetycznej nie poprzez
"prawdziwe" uziemienie, lecz przez tzw. "zerowanie" (co jest najczęściej stosowane w sieciach energetycznych
w budynkach mieszkalnych i biurowych).

Standardowe kable sygnałowe drukarek

Poniżej przedstawiono rysunki standardowych kabli sygnałowych wykorzystywanych przy transmisji z drukarkami
POSNET Thermal i POSNET 3001.

1. Kabel wykorzystujący złącze 25 od strony PC-ta:

Komputer DB-25 DRUKARKA (RJ-45) – KOMP.


PIN Opis Opis PIN
3 RxD RxD 5
2 TxD TxD 4
7 GND GND 2,3,6,7,8
6 – 8 – 20 Zwora 1
4-5 Zworka 2 RTS 1

2. Kabel wykorzystujący złącze 9 od strony PC-ta:

Komputer DB-9 DRUKARKA (RJ-45) – KOMP.


PIN Opis Opis PIN
2 RxD RxD 5
3 TxD TxD 4
5 GND GND 2,3,6,7,8
1–4–6 Zwora 1
7-8 Zworka 2 RTS 1

Uwaga:
1. Złącze oznaczone (opisane) jako RS232 może być wykorzystane do podłączenia dodatkowego
zewnętrznego wyświetlacza alfanumerycznego Typu VFD (duży, czytelny tekst). Wtedy w drukarce
należy przestawić zworkę (dostępną dla serwisu) na pozycję ‘2xRS’. Na wyświetlaczu tym wyświetlane
są dokładnie te same informacje które pojawiają się na wyświetlaczy LCD operatora.
UWAGA: w tym przypadku sygnał RTS nie działa !
2. Połączenie opisane powyżej wymaga zastosowania protokołu transmisji XON-XOFF,
3. Standardowe parametry transmisji: 9600, N, 8, 1
4. Polskie znaki w standardzie MAZOWIA,
5. Sygnał RTS w standardowym kablu dostarczanym z drukarką nie jest podłaczony. W przypadku jego
wykorzystania zworka dostępna dla serwisu (patrz pkt.1) powinna być ustawiona na pozycję
‘1xRS+RTS’ (patrz strony 121 i 123).
Opis sygnałów innych interfejsów dostępnych w drukarkach przedstawiono na stronie 114 (dodatkowy RS232,
złącze szuflady, złącze zewnętrznego zasilacza oraz złącze wyświetlacza klienta).

Str. 110
Drukarka Fiskalna POSNET Thermal i 3001

Wymagania programowe

Ponieważ drukarka może współpracować z bardzo różnymi aplikacjami, napisanymi przy użyciu różnych
systemów programowania (np. dBase, CLIPPER, C itd.), pracujących w różnorodnym środowisku sprzętowym (PC
386,486,Pentium) i programowym (DOS, UNIX, Windows ...) - nie sposób przeanalizować w tym miejscu wszelkich
możliwych problemów, które może stwarzać oprogramowanie komunikacji szeregowej. Z doświadczeń autorów
wynikają jednak następujące wskazówki.

1. W przypadku podłączenia drukarki przez COM1..COM4, oraz komunikacji wyłącznie jednokierunkowej,


w środowisku DOS'a, oprogramowanie nie stwarza większych problemów - można użyć procedur BIOS, lub
napisać własne procedury programujące port i wysyłające do niego znak (np. wzorując się na modułach
dostarczonym przez POSNET : www.posnet.com.pl ), pamiętając tylko o wyborze właściwego adresu portu
COM1..COM4. Zwróćmy ponadto uwagę, że procedury BIOS wymagają zwór na złączu komputera (RTS-CTS -
dla nadajnika, DCD-DSR-DTR dla odbiornika). Wobec braku realizacji protokołu XON-XOFF sposób ten jest
efektywny tylko w specyficznych sytuacjach - gdy aplikacja jest tak napisana, że nie ma możliwości
przepełnienia bufora wejściowego drukarki (o długości 2048 znaków).
2. W przypadku komunikacji dwukierunkowej wykorzystanie procedur BIOS jest w ogólnym przypadku błędne,
ponieważ nie zapewniają one właściwego buforowania znaków odbieranych przez komputer oraz nie realizują
protokołu XON-XOFF.W efekcie, nawet jeżeli uzyskano poprawną pracę aplikacji z tak skonstruowaną
komunikacją podczas prób, nie ma gwarancji, że po przeniesieniu jej na inny sprzęt (lub nieco różniące się
środowisko programowe !) będzie ona nadal działać poprawnie !
3. Właściwe (i zalecane) rozwiązanie procedur komunikacyjnych polega na wykorzystaniu przerwania sprzętowego
do odbierania znaków z interfejsu, realizacji protokołu XON-XOFF w procedurze obsługi przerwania oraz
buforowaniu odbieranych znaków w buforze FIFO (wystarczy tu bufor o długości 256 bajtów). W przypadku
większości współcześnie wykorzystywanych systemów programowania (CLIPPER, C, PASCAL) istnieją gotowe
biblioteki procedur obsługi portów COM1...COM4 spełniające powyższe wymogi.
4. W systemie UNIX procedury obsługi portów COM1..COM4 spełniające powyższe wymogi są wbudowane
w jądro systemu. Należy jednak pamiętać o właściwym skonfigurowaniu portu, w szczególności o włączeniu
protokołu XON-XOFF. Często popełnianym błędem jest ponadto brak blokady opcji XANY (parametr -XANY)
co powoduje nie kontrolowane wznowienie transmisji w wyniku odebrania przez system dowolnego znaku (a
przecież nie musi to być znak XON !).

Str. 111
Drukarka Fiskalna POSNET Thermal i 3001

Dodatkowe złącze RS232C

W wersji aptecznej drukarki


Wprowadzono obsługę dodatkowego portu szeregowego, umożliwiającego podłączenie drukarki szeregowej z
parametrami transmisji 9600/8/N/1 (tylko drukarki ‘apteczne’). Opis złącza można znaleźć na stronie 114.
Drukarka powinna realizować protokół EPSON (np. dla drukarki „Seikosha” SP-2400 jest to tryb standardowy).
Jako dodatkowa drukarka może być też wykorzystany tzw. „slip printer”.
Do dodatkowej drukarki mogą być kierowane wydruki uzyskiwane w wyniku realizacji następujących rozkazów
(dokładny opis sekwencji zawarto w rozdziale ‘VIII’ na stronie 103) :

LBRPDTA : drukowanie wyceny leku,


LBAPTREP: drukowanie raportu kasowego,
LBRPORD : drukowanie numerka na lek recepturowy.
LBPRNXT drukowania opisu działania leku.

Do podłączenia dodatkowego wyświetlacza VFD (Thermal, 3001 i Beetle 20)

Dodatkowe łącze RS232C można wykorzystać także do podłączenia specjalnego zewnętrznego wyświetlacza
VFD uzupełniającego wyświetlacz dla klienta (numeryczny). Wyświetlacz ten wyświetla teksty dokładnie takie
same jakie pojawiają się na wyświetlaczu LCD operatora (patrz rozdział VII, sekwencja LBDSP). Dostęp do tego
wyświetlacza po otwarciu transakcji jest jednak dla programisty ograniczony do sekwencji związanej z
pobieraniem kaucji LBDSPDEP opisanej na stronie 79.

Sygnalizacja stanów drukarki na interfejsie szeregowym

Stan drukarki można odczytać programowo wysyłając do niej pytanie w postaci:

DLE ($10) – odczyt statusu drukarki działający także w trybie OFF-LINE !!!

Daje to możliwość odczytu statusu - np. brak papieru lub sytuacje błędne.
W odpowiedzi na kod DLE ($10) drukarka odsyła jednobajtowy status w formacie (70..77 hex):

7 6 5 4 3 2 1 0
0 1 1 1 0 ONL PE ERR

gdzie:
ONL = 1: stan "On-Line",
PE = 1: stan "Brak Papieru",
ERR = 1: stan "Błąd mechanizmu/ sterownika".

Błędy drukarki

Wystąpienie błędu w trakcie drukowania wykrytego przez sterownik mechanizmu drukującego powoduje,
oprócz przejścia drukarki w stan OFF-LINE i odpowiedniego komunikatu na wyświetlaczu.
Stan ten może wystąpić w wyniku:
• braku papieru (PE=1, ONL=0),
• blokady (zacięcie napędu głowicy) mechanizmu lub otwartej pokrywy drukarki POSNET 3001,
• błędu mechanizmu np. przegrzanie głowicy, awaria zasilacza itp. (ERR=1, ONL=0).

Po usunięciu błędu i naciśnięciu klawisza NIE, jeżeli sterownik stwierdzi, że jego przyczyna została usunięta, to
drukarka przełącza się w tryb ON-LINE i odpowiednie bity stanu (DLE) zostaną wyzerowane (ERR, PE) lub
ustawione (ONL).

Str. 112
Drukarka Fiskalna POSNET Thermal i 3001
Błędy "programowe"

Podczas interpretacji i realizacji rozkazów (sekwencji) sterujących mogą wystąpić różnego rodzaju błędy,
wynikające z różnych przyczyn (przekłamania transmisji, błędy aplikacji, błędny stan drukarki itd.). Standardowy
(tj. ustalony po włączeniu zasilania) sposób obsługi tych błędów jest następujący:

1. Na wyświetlaczu pojawia się komunikat (patrz strona 36):


'Błąd rozkazu: "cc" '
'Kod błędu : xx '.
2. Przetwarzanie (pobieranie znaków z bufora wejściowego) jest wstrzymane aż do naciśnięcia klawisza NIE.

Stan ten nie jest w żaden sposób sygnalizowany na interfejsach, zatem drukarka kontynuuje przyjmowanie
znaków do bufora komunikacyjnego, aż do jego zapełnienia. Często może zatem zachodzić sytuacja, kiedy po
skasowaniu jednego komunikatu o błędzie wystąpi natychmiast następny - ponieważ w buforze drukarki znalazły się
następne sekwencje sterujące, które nie mogły być realizowane wobec wystąpienia wcześniejszego błędu.
Wysłanie sekwencji LBSERM redefiniuje sposób obsługi błędów, blokując wyświetlanie komunikatów - co
umożliwia automatyczny monitoring sytuacji błędnych przez aplikację (przetwarzanie nie jest blokowane !).
Dokładny opis sekwencji LBSERM można znaleźć na stronie 76.

UWAGA:
1. W każdej sytuacji, która prowadzi do blokady przetwarzania znaków przez drukarkę tj. wystąpienie wyżej
wymienione komunikatu lub przejście w stan OFF-LINE (automatyczne lub inicjowane z klawiatury),
drukarka nie może realizować prawidłowo odpowiedzi na żądanie wysłania statusu (kod ENQ lub
sekwencja LBFSTRQ), ale realizuje odczyt statusu DLE.
2. Jeżeli aplikacja oczekuje po wysłaniu każdego rozkazu na odpowiedni status potwierdzający jego
wykonanie - należy mieć na względzie, że w wyniku wystąpienia błędu mechanizmu drukującego
odpowiedź ta może być "zablokowana" na dowolnie długi czas. Ponadto, ponawianie żądania wysłania
statusu co pewien czas spowoduje, po przełączeniu drukarki w stan ON-LINE, wysłanie ciągu wielu
odpowiedzi statusowych (ponieważ odpowiednie kody lub sekwencje sterujące) zostały "zmagazynowane"
w buforze drukarki.

Na stronach 115 i 116 niniejszej instrukcji przedstawiono w formie tabel wykaz wszystkich sekwencji drukarek
POSNET i odpowiadających im kodów błedów. Dodatkowo umieszczono w tabelach numerację stron na których
można znaleźć dokładny opis interesującej nas sekwencji. Ułatwi to pracę w przypadku interwencji dotyczących
‘zgłaszaniem’ przez drukarki błedu na wyświetlaczu LCD.

Str. 113
Drukarka Fiskalna POSNET Thermal i 3001

13.Opis złącz drukarki POSNET Thermal i POSNET 3001


Złącze wejścia RS232C (opisane jako KOMP) typu RJ45 .

PIN NAZWA TYP FUNKCJA


1 RTS Wy Wyjście, przewidziane do sprzętowego handshake'u odbiornika
2 GND Masa sygnałowa.
3 GND Masa sygnałowa.
4 TXD Wy Wyjście danych w standardzie napięciowym.
5 RXD We Wejście danych w standardzie napięciowym.
6 GND Masa sygnałowa.
7 GND Masa sygnałowa.
8 GND Masa sygnałowa.

Złącze opisane jako RS232C.


PIN NAZWA TYP FUNKCJA
1 GND Masa sygnałowa.
2 RXD We Wejście danych w standardzie napięciowym.
3 TXD Wy Wyjście danych w standardzie napięciowym.
4 GND Masa sygnałowa.

Złącze wyjścia wyświetlacza (opisane jako WYŚW.).

PIN NAZWA TYP FUNKCJA


1 VCC Zasilanie
2 VCC Zasilanie
3 VCC Zasilanie
4 CK Zegar
5 TX Wy Wyjście danych
6 RX We Wejście danych
7 GND Masa sygnałowa.
8 GND Masa sygnałowa.

Gniazdo wejściowe zasilania (opisane jako DC).

PIN NAZWA TYP FUNKCJA


1 + Plus zasilania
2 - Minus zasilania

Złącze do podłączenia szuflady (opisane jako SZUFL.)

PIN NAZWA TYP FUNKCJA


1 +SZUF Wy Plus napięcia wyjściowego do zasilania elektromagnesu szuflady
2 +SZUF Wy Plus napięcia wyjściowego do zasilania elektromagnesu szuflady
3 +SZUF Wy Plus napięcia wyjściowego do zasilania elektromagnesu szuflady
4 - SZUF Wy Minus napięcia wyjściowego do zasilania elektromagnesu szuflady
5 - SZUF Wy Minus napięcia wyjściowego do zasilania elektromagnesu szuflady
6 - SZUF Wy Minus napięcia wyjściowego do zasilania elektromagnesu szuflady

Str. 114
Drukarka Fiskalna POSNET Thermal i 3001

14.Kody sekwencji
Litery które mogą pojawić się w pierwszej linii wyświetlacza po znaku $ , # lub * odnoszące się do sekwencji
która spowodowała błąd przedstawiono w tabeli poniżej. Dodatkowo w tabeli podano numer strony na której
znajduje się dokładny opis ‘Kodu błędu’ wyświetlanego w drugiej linii wyświetlacza.

$ Sekwencja Szukaj na stronie:


a linijka paragonu (Apteka) 95
c ustawianie zegara 73
d sterowanie wyświetlaczem/ szufladą 74,79
e anulowanie transakcji/ akceptacja transakcji 80
f programowanie nagłówka/ fiskalizacja 75
h początek transakcji 77
l definiowanie pozycji transakcji (linii paragonu) 78
p zmiana stawek PTU 74
s początek transakcji (Apteka) 94
x zakończenie transakcji z formami płatności 81

# Sekwencja Szukaj na stronie:


b kontrola bazy danych 89
c odczyt zegara drukarki 89
d wypłata z kasy 86
e obsługa błędów 76
f raport kasy (z aplikacji) 82
g pokwitowanie sprzedaży 83
h transakcja uznania (zwrot towaru) 84
i wpłata do kasy 85
k drukowanie raportu kasy/zmiany 86
l wysuw papieru o 1..20 linii 76
n żądanie wysłania kodu błędu ostatniego rozkazu 90
o drukowanie raportu okresowego 88
p zalogowanie kasjera 87
q wylogowanie kasjera 87
r drukowanie raportu dobowego 88
s odeślij informacje kasowe 89
t stan kasy 86
v typ i wersja oprogramowania 91
w zwrot kaucji 87
włączenie/wyłączenie komunikatu słownego
x 76
'Dziękujemy, zapraszamy' (POSNET 2000)
y wydruk na drukarce dodatkowej (Apteka) 108
z zwrot towaru 88

* Sekwencja Szukaj na stronie:


a kasowanie tablicy wycen 105
c usuwanie z tablicy wycen leku 105
k Zamówienie na lek recepturowy 106
r raport kasowy apteczny 105
t opis działania leku 107
z usuwanie opisu działania leku z tablicy wycen 108
w wycena leku 103
UWAGA:
Kod błędu=0 oznacza rozkaz nierozpoznany.

Str. 115
Drukarka Fiskalna POSNET Thermal i 3001
15.Kody błędów drukarek

Drukarki standardowe

Numer błędu (KOD) Opis błędu


0 Rozkaz nierozpoznany.
1 nie zainicjalizowany zegar RTC,
2 błąd bajtu kontrolnego,
3 zła ilość parametrów,
4 błąd danych,
5 błąd wykonania (zapisu) do zegara RTC lub błąd odczytu zegara RTC,
6 błąd odczytu totalizerów, błąd operacji z pamięcią fiskalną,
data wcześniejsza od daty ostatniego zapisu w pamięci fiskalnej (wykonanie
7
niemożliwe !),
8 błąd operacji - niezerowe totalizery !,
9 błąd operacji I/O,
zła ilość wartości PTU, błąd liczby lub próba zdefiniowania takich samych stawek jakie
11
są w pamięci fiskalnej drukarki ,
13 próba fiskalizacji sfiskalizowanego urządzenia ,
próba przesłania do RAM nagłówka dla urządzenia sfiskalizowanego (o ile drukarkę
14
zafiskalizowano wpisując do modułu fiskalnego cały nagłówek).
15 błąd w dodatkowych liniach nagłówka (np. za długie opisy),
16 błędna nazwa (pusta lub za długa),
17 błędne oznaczenie ilości (puste lub za długie),
18 błędne oznaczenie stawki PTU (lub brak) ,także próba sprzedaży w stawce nieaktywnej ,
19 błąd wartości CENA (syntaktyka, zakres lub brak),
- błąd wartości BRUTTO lub RABAT (syntaktyka, zakres lub brak),
- błąd niespełnienia warunku ilość x cena wartość (przekroczenie progu 1%) -
drukarka sprawdza poprawność przesłanych informacji wg algorytmu - mnoży cenę
20 przez ‘wyłowioną’ z ilości liczbę , - zaokrągla wynik mnożenia do dwóch miejsc po
przecinku, wynik zaokrąglenia porównuje z wartością (BRUTTO) z dokładnością
do 1%.
- przy rabacie kwotowym uwzględnienie rabatu nie może prowadzić do ujemnego
wyniku, niespełnienie powyższego daje błąd #20,
21 sekwencja odebrana przez drukarkę przy wyłączonym trybie transakcji,
błąd operacji STORNO (np. próba wykonania w trybie 'blokowym' OFF-LINE, lub w
wyniku jej wykonania suma w danej grupie podatkowej wychodzi ujemna), lub błąd
22
operacji z rabatem np. wartość towaru po uwzględnieniu rabatu wychodzi ujemna.

23 błędna liczba rekordów (linii) paragonu,


24 przepełnienie bufora drukarki,
błędny kod terminala/ kasjera (zła długość lub format), lub błędna treść dodatkowych
25
linii,
błąd kwoty WPLATA (syntaktyka; jeżeli różnica WPLATA-TOTAL <0 to napisy
26 'gotówka', 'reszta' nie będą drukowane !), ‘kaucja_pobrana’ przesłana w LBTRXEND nie
jest zgodna z sumą wartości otrzymanych w sekwencjach LBDSPDEP,
27 błędna suma całkowita TOTAL lub błędna kwota RABAT,
28 przepełnienie totalizera (max 2.684.354,56 dla jednej grupy podatkowej),
żądanie zakończenia (pozytywnego !) trybu transakcji, w momencie kiedy nie został on
29
jeszcze włączony,
30 błąd kwoty WPŁATA (syntaktyka),
31 nadmiar dodawania (przekroczenie zakresu gotówki w kasie).
32 wartość po odjęciu staje się ujemna (przyjmuje się wówczas stan zerowy kasy !),
błąd napisu <zmiana> lub <kasjer> lub <numer> lub <kaucja> (np. za długi lub
33
zawierający błędne znaki),
34 błąd jednej z kwot lub pozostałych napisów,
35 zerowy stan totalizerów,

Str. 116
Drukarka Fiskalna POSNET Thermal i 3001
36 już istnieje zapis o tej dacie,
37 operacja przerwana z klawiatury (przed rozpoczęciem drukowania),
38 błąd nazwy,
39 błąd oznaczenia PTU.
1. brak w pamięci RAM nagłówka (tylko w trybie fiskalnym gdy do modułu fiskalnego
wpisano tylko NIP).
40
2. ten błąd pojawia się także w przypadku wystąpienia błędu blokującego tryb fiskalny
(ERR, CLR, FULL).
41 błąd napisu <numer_kasy> (za długi lub zawierający błędne znaki),
42 błąd napisu <numer_kasjera>,
43 błąd napisu <numer_par>,
44 błąd napisu <kontrahent>,
45 błąd napisu <terminal>,
46 błąd napisu <nazwa_karty>,
47 błąd napisu <numer_karty>,
48 błąd napisu <data_m>,
49 błąd napisu <data_r>,
50 błąd napisu <kod_autoryz>,
51 błąd wartości <kwota>,

Drukarki apteczne

Numer błędu
Opis błędu
(KOD)
1 nie zainicjalizowany zegar RTC,
2 błąd bajtu kontrolnego,
3 zła ilość parametrów,
4 błąd danych,
5 błąd wykonania (zapisu) do zegara RTC lub błąd odczytu zegara RTC,
6 błąd odczytu totalizerów, błąd operacji z pamięcią fiskalną,
7 data wcześniejsza od daty ostatniego zapisu w pamięci fiskalnej (wykonanie niemożliwe !),
8 błąd operacji - niezerowe totalizery !,
9 błąd operacji I/O,
zła ilość wartości PTU, błąd liczby lub próba zdefiniowania takich samych stawek jakie są
11
w pamięci fiskalnej drukarki ,
13 próba fiskalizacji sfiskalizowanego urządzenia ,
próba przesłania do RAM nagłówka dla urządzenia sfiskalizowanego (o ile drukarkę
14
zafiskalizowano wpisując do modułu fiskalnego cały nagłówek).
15 błąd w dodatkowych liniach nagłówka (np. za długie opisy),
16 błędna nazwa (pusta lub za długa),
17 błędne oznaczenie ilości (puste lub za długie),
18 błędne oznaczenie stawki PTU (lub brak) ,także próba sprzedaży w stawce nieaktywnej ,
19 błąd wartości CENA (syntaktyka, zakres lub brak),

Str. 117
Drukarka Fiskalna POSNET Thermal i 3001
- błąd wartości BRUTTO lub RABAT (syntaktyka, zakres lub brak),
- błąd niespełnienia warunku ilość x cena wartość (przekroczenie progu 1%) - drukarka
sprawdza poprawność przesłanych informacji wg algorytmu - mnoży cenę przez
20 ‘wyłowioną’ z ilości liczbę , - zaokrągla wynik mnożenia do dwóch miejsc po przecinku,
wynik zaokrąglenia porównuje z wartością (BRUTTO) z dokładnością do 1%.
- przy rabacie kwotowym uwzględnienie rabatu nie może prowadzić do ujemnego wyniku,
niespełnienie powyższego daje błąd #20,

21 sekwencja odebrana przez drukarkę przy wyłączonym trybie transakcji,


błąd operacji STORNO (np. próba wykonania w trybie 'blokowym' OFF-LINE, lub w
22 wyniku jej wykonania suma w danej grupie podatkowej wychodzi ujemna), lub błąd
operacji z rabatem np. wartość towaru po uwzględnieniu rabatu wychodzi ujemna.
23 błędna liczba rekordów (linii) paragonu,
24 przepełnienie bufora drukarki,
25 błędny kod terminala/ kasjera (zła długość lub format), lub błędna treść dodatkowych linii,
błąd kwoty WPLATA (syntaktyka; jeżeli różnica WPLATA-TOTAL <0 to napisy 'gotówka',
26 'reszta' nie będą drukowane !), ‘kaucja_pobrana’ przesłana w LBTRXEND nie jest zgodna
z sumą wartości otrzymanych w sekwencjach LBDSPDEP,
27 błędna suma całkowita TOTAL lub błędna kwota RABAT,
28 przepełnienie totalizera (max 2.684.354,56 dla jednej grupy podatkowej),
żądanie zakończenia (pozytywnego !) trybu transakcji, w momencie kiedy nie został on
29
jeszcze włączony,
30 błąd kwoty WPŁATA (syntaktyka),
31 nadmiar dodawania (przekroczenie zakresu gotówki w kasie).
32 wartość po odjęciu staje się ujemna (przyjmuje się wówczas stan zerowy kasy !),
błąd napisu <zmiana> lub <kasjer> lub <numer> lub <kaucja> (np. za długi lub
33
zawierający błędne znaki),
34 błąd jednej z kwot lub pozostałych napisów,
35 zerowy stan totalizerów,
36 już istnieje zapis o tej dacie,
37 operacja przerwana z klawiatury (przed rozpoczęciem drukowania),
38 błąd nazwy,
39 błąd oznaczenia PTU.
2. ten błąd pojawia się także w przypadku wystąpienia błędu blokującego tryb
40
fiskalny (ERR, CLR, FULL).
41 błąd napisu recepta,
42 błąd kwoty OPLATA,
43 błąd kwoty OPŁATA,
brak w paragonie leku, dla którego była drukowana wcześniej wycena (transakcja nie może
44
być poprawnie zakończona, ponieważ tablica zapamiętanych wycen leków nie jest pusta)

45 przepełnienie tablicy wycen (zbyt duża liczba wycen wydrukowana),

46 błąd pola <nazwa>,


47 błąd pola <postac_dawka>,

Str. 118
Drukarka Fiskalna POSNET Thermal i 3001
48 błąd pola <opakowanie>,
49 błąd pola <ptu>,
50 błąd pola <ilosc>,
51 błąd pola <kasa_nr>,
52 błąd pola <platne>,
53 błąd pola <recepta>,
54 błąd pola <refundacja>,
55 błąd pola <wydal>,
56 błąd pola <data>,
57 błąd pola <ilosc_lekospis>,
58 błąd pola <pacjent>,
59 błąd pola <lekarz>,
60 błąd pola <refundator>,
61 błąd pola <refundator>,
błąd jednej z wartości numerycznych <wartosc>...<refundacja> (może być błąd syntaktyki
62
lub brak jednego z parametrów).
63 brak w tablicy zapamiętanych wycen podanej nazwy,
64 błąd pola <kasa>,
65 błąd pola <osoba>,
66 błąd pola <par1>,
67 błąd pola <par2>,
68 błąd pola <znak_z>,
Błąd jednej z wartości numerycznych <brutto_a>...<total_ptu> (może być błąd syntaktyki
69
lub brak jednego z parametrów).
70 błąd pola <numer>,
71 błąd pola <osoba>,
72 błąd pola <pacjent>,
73 błąd pola <lekarz>,
74 błąd kwoty <opłata>, <nazwa>,
75 błąd pola <opis>, przekroczenie dopuszczalnej ilości linii = 50
76 brak w tablicy zapamiętanych opisów podanej nazwy,

Str. 119
Drukarka Fiskalna POSNET Thermal i 3001

16. POSNET THERMAL (Funkcje serwisowe)


W celu zainicjowania dostępu do funkcji serwisowych należy włączyć drukarkę przy jednoczesnym wciśnięciu
klawiszy ‘TAK’ i ‘NIE’. Po usłyszeniu krótkiego sygnału należy zwolnić klawisze ; po chwili drukarka ‘zgłosi’ się
komunikatem na wyświetlaczu o treści:

‘Konfiguracja Testy’
‘Informacje (Koniec)’
Zasada wyboru odpowiedniej funkcji jest następująca:
• przy pomocy klawiszy ‘⇐‘ i ‘⇒‘ ustawiamy migający znacznik (kursor) na polu które nas interesuje ;
• naciskając klawisz ‘⇓‘ przechodzimy do ‘podmenu’ interesującej nas funkcji,
• klawisz ‘⇑‘ służy do wychodzenia z obsługi interesującej nas funkcji ;
• niektóre zmiany parametrów wymagają ich zatwierdzenia poprzez naciśniecie klawisza ‘TAK’.

Poniżej opiszemy dokładnie poszczególne funkcje dostępne z klawiatury.

KONFIGURACJA.
1. Szybkość : można zdefiniować prędkość transmisji dla łącza szeregowego RS232C na :
1200 2400 4800 9600 (domyślna) 19200 ,
2. Stawki PTU: dostępne opcje to :
RAM - w trybie szkoleniowym po włączeniu zasilania drukarka jako wiążące przyjmie stawki zdefiniowane w
pamięci RAM ,
FSK - po włączeniu zasilania drukarki drukarka przyjmie stawki zdefiniowane w pamięci fiskalnej (domyślnie
ustawienie).
UWAGA: po fiskalizacji drukarka zawsze jako wiążące przyjmuje stawki zdefiniowane w pamięci fiskalnej.
3. Papier :
• Czułość: A B C D ; podświetlając odpowiednią literę deklarujemy maksymalną czułość papieru (A) lub
niższą (B .. D) w zależności od czułości zastosowanego papieru termicznego. Po ustawieniu czułości
zalecamy wykonanie testu PRN (opcja TESTY opisana poniżej).
• Oszczędność papieru: włączenie sprzętowej oszczędności papieru (TAK) lub jej wyłączenie (NIE).
Sprzętowa oszczędność polega na rozpoczęciu drukowania przez drukarkę nowego nagłówka bezpośrednio
po zakończeniu poprzedniego wydruku.
4. Zegar : opcja umożliwiająca korektę zegara drukarki (czasu) w przypadku gdy są zerowe totalizery. Korekty
dokonujemy za pomocą klawiatury (klawiszami ‘⇐‘ i ‘⇒‘ wybieramy pole do zmiany; klawisze ‘⇓‘ i ‘⇑‘ służą
do ustawienia interesującego nas pola). Po wyjściu z tej opcji drukarka żąda potwierdzenia zmiany zegara
(poprzez zadanie pytania ‘Zapisać zegar (T/N)’). Jeżeli naciśniemy klawisz ‘TAK’ zmiana zegara zostanie
zapamiętana.

Testy.
1. PRN : test mechanizmów drukujących - po potwierdzeniu powstaje specjalny wydruk umożliwiający
wizualną kontrolę poprawności działania mechanizmów (oryginału i kopii). Zalecamy wykonanie tego testu po
zmianie czułości papieru (opisanej powyżej).
2. DSP : test wyświetlacza LED dla klienta. Testowane są wszystkie segmenty wyświetlacza.
3. LED : test diod świecących na klawiaturze (diody GOTOWA, BŁĄD i SIEĆ).
4. FSK : dostępne opcje to:
• Nr.Unikat. wyświetlenie numeru unikatowego drukarki;
• PTU wyświetlenie na wyświetlaczu zdefiniowanych stawek PTU w drukarce. Znak ‘-’
obok stawki oznacza, że zablokowana jest sprzedaż w tej stawce tzn. stawka nie
została zdefiniowana.
• NIP wyświetlenie numeru identyfikacyjnego podatnika w przypadku kiedy drukarka
pracuje w trybie fiskalnym.
• Test ogólny:
• H - liczba rekordów w nagłówku drukarki.
• RDOB - liczba wykonanych raportów dobowych.
• CL - ilość zerowań RAM.
• PT - liczba rekordów ‘ Zmiana stawek PTU’.

Str. 120
Drukarka Fiskalna POSNET Thermal i 3001
• OB - liczba rekordów ‘ODBUDOWA BAZY’.
• ER: - sumaryczna liczba błędnych rekordów w pamięci fiskalnej.
• SZUF - test wyjścia dodatkowego do podłączenia szuflady.
• COM,AUX - test łącza RS232C (KOMP) i dodatkowego łącza wykorzystywanego w
wersji aptecznej drukarki (RS232).

• PE - test mikro wyłączników mechanizmów drukujących oraz czujników


obecności papieru (optyczne) .
• UX - charakterystyczne punkty pomiarowe (napięciowe) w drukarce.
• DC to napięcie zasilające drukarki na złączu DC drukarki (z zasilacza
zewnętrznego).
• T1,T2 - temperatura elementów grzejnych mechanizmów termicznych drukarki
• BT to napięcie wewnętrznej baterii podtrzymującej niektóre układy drukarki po wyłączeniu
zasilania.

Informacje.
Opcja ta umożliwia wykonanie informacyjnego wydruku zawierającego : numer unikatowy, tryb pracy drukarki
(fiskalny lub szkoleniowy) i aktualne stawki PTU.

Fiskalizacja POSNET Thermal.

Drukarki fiskalizujemy przy pomocy programu ‘posnet.exe’ umieszczonego w katalogu ‘VER17_1’ na dyskietce
fiskalnej. Drukarka POSNET THERMAL jest w pełni zgodna z drukarką DF301 (ver.≥17.1).
Drukarki dla aptek (POSNET THERMAL-A) można fiskalizować wg takich samych zasad jak zwykłe drukarki
termiczne czyli traktując je jako wykonane w wersji ≥17.1 .

UWAGA:
Dyskietka fiskalna jest dostępna w internecie na stronie www.posnet.com.pl . Znajduje się na niej także ‘stary’
program (katalog POSNET) który służy do fiskalizacji wersji drukarek < 17.1 (cały nagłówek w pamięci
fiskalnej!),
czyli modeli: DF-300, DF-301 i DF-302.

HEXDUMP.

Po naciśnięciu (jednocześnie) klawiszy R.O. i R.D. możemy przełączyć drukarkę w tzw. tryb hexdump
umożliwiający wydrukowanie przez drukarkę treści komend odbieranych przez drukarkę przez łącze RS232C.
Tryb ten jest przydatny w przypadku ‘kłopotów’ z aplikacją sterującą drukarką (programem użytkownika).

ELEMENTY DOSTĘPNE PO ZDJĘCIU OSŁONKI WEWNĄTRZ DRUKATKI .

gdzie:
J1 - jumper do RESET zegara drukarki (tylko w wersjach ‘przewlekanych’ płyty. W wersji SMD
jumper nie występuje!). RESET wykonujemy zdejmując (przy wyłączonym zasilaniu) zworkę
lub wyjmując na chwilę baterię BT1 (wersja SMD)
J7 - uaktywnia dodatkowe wyjście RS232C (wersja apteczna) w przypadku gdy zworka
jest w pozycji 2xRS. Standardowo zworka ustawiana w pozycji 1xRS+RST
U4 - driver interfejsów szeregowych (w podstawce)
JP6..JP12 - złącza mechanizmów drukujących. Dodatkowe złącza mechanizmów umieszczone są
pod mechanizmami drukującymi.

Str. 121
Drukarka Fiskalna POSNET Thermal i 3001

17.POSNET 3001 (Funkcje serwisowe)


W celu zainicjowania dostępu do funkcji serwisowych należy włączyć drukarkę przy jednoczesnym wciśnięciu
klawiszy ‘TAK’ i ‘NIE’. Po usłyszeniu krótkiego sygnału należy zwolnić klawisze ; po chwili drukarka ‘zgłosi’ się
komunikatem na wyświetlaczu o treści:

‘Konfiguracja Testy’
‘Informacje (Koniec)’
Zasada wyboru odpowiedniej funkcji jest następująca:
• przy pomocy klawiszy ‘⇐‘ i ‘⇒‘ ustawiamy migający znacznik (kursor) na polu które nas interesuje ;
• naciskając klawisz ‘⇓‘ przechodzimy do ‘podmenu’ interesującej nas funkcji,
• klawisz ‘⇑‘ służy do wychodzenia z obsługi interesującej nas funkcji ;
• niektóre zmiany parametrów wymagają ich zatwierdzenia poprzez naciśniecie klawisza ‘TAK’.

Poniżej opiszemy dokładnie poszczególne funkcje dostępne z klawiatury.

KONFIGURACJA.
• Szybkość : można zdefiniować prędkość transmisji dla łącza szeregowego RS232C na :
1200 2400 4800 9600 (domyślna) 19200 ,
• Stawki PTU: dostępne opcje to :
RAM - w trybie szkoleniowym po włączeniu zasilania drukarka jako wiążące przyjmie stawki zdefiniowane w
pamięci RAM ,
FSK - po włączeniu zasilania drukarki drukarka przyjmie stawki zdefiniowane w pamięci fiskalnej (domyślnie
ustawienie). Sprzętowa oszczędność polega na rozpoczęciu drukowania przez drukarkę nowego
nagłówka bezpośrednio po zakończeniu poprzedniego wydruku.
• UWAGA: po fiskalizacji drukarka zawsze jako wiążące przyjmuje stawki zdefiniowane w
pamięci fiskalnej.
• Papier: właczenie (TAK) lub wyłączenie (NIE) trybu oszczędności papieru. Domyślne ustawienie na TAK.
• Zegar : opcja umożliwiająca korektę zegara drukarki (czasu) w przypadku gdy są zerowe totalizery . Korekty
dokonujemy za pomocą klawiatury (klawiszami ‘⇐‘ i ‘⇒‘ wybieramy pole do zmiany; klawisze ‘⇓‘ i ‘⇑‘ służą
do ustawienia interesującego nas pola). Po wyjściu z tej opcji drukarka żąda potwierdzenia zmiany zegara
(poprzez zadanie pytania ‘Zapisać zegar (T/N)’). Jeżeli naciśniemy klawisz ‘TAK’ zmiana zegara zostanie
zapamiętana.

Testy.
• PRN : test mechanizmów drukujących - po potwierdzeniu powstaje specjalny wydruk umożliwiający
wizualną kontrolę poprawności działania mechanizmów (oryginału i kopii). Zalecamy wykonanie tego testu po
zmianie czułości papieru (opisanej powyżej).
• DSP : test wyświetlacza LED dla klienta. Testowane są wszystkie segmenty wyświetlacza.
• LED : test diod świecących na klawiaturze (diody GOTOWA, BŁĄD i SIEĆ).
• FSK : dostępne opcje to:
• Nr.Unikat. wyświetlenie numeru unikatowego drukarki;
• PTU wyświetlenie na wyświetlaczu zdefiniowanych stawek PTU w drukarce. Znak ‘-’
obok stawki oznacza, że zablokowana jest sprzedaż w tej stawce tzn. stawka nie
została zdefiniowana.
• NIP wyświetlenie numeru identyfikacyjnego podatnika w przypadku kiedy drukarka
pracuje w trybie fiskalnym.
• Test ogólny:
• H - liczba rekordów w nagłówku drukarki.
• RDOB - liczba wykonanych raportów dobowych.
• CL - ilość zerowań RAM.
• PT - liczba rekordów ‘ Zmiana stawek PTU’.
• OB - liczba rekordów ‘ODBUDOWA BAZY’.
• ER: - sumaryczna liczba błędnych rekordów w pamięci fiskalnej.
• SZUF - test wyjścia dodatkowego do podłączenia szuflady.

Str. 122
Drukarka Fiskalna POSNET Thermal i 3001
• COM,AUX - test łącza RS232C (KOMP) i dodatkowego łącza wykorzystywanego w
wersji aptecznej drukarki (RS232).

• PE - test mikro wyłączników mechanizmów drukujących oraz czujników


obecności papieru (optyczne) .
• UX - charakterystyczne punkty pomiarowe (napięciowe) w drukarce.
• T temperatura głowicy,
• VC napięcie zasilające układy cyfrowe (5V),
• DC to napięcie zasilające drukarkę (z zewnętrznego zasilacza stabilizowanego 25V).
• BT to napięcie wewnętrznej baterii podtrzymującej niektóre układy drukarki po wyłączeniu
zasilania.

Informacje.
Opcja ta umożliwia wykonanie informacyjnego wydruku zawierającego : numer unikatowy, tryb pracy drukarki
(fiskalny lub szkoleniowy) i aktualne stawki PTU.

Fiskalizacja drukarek POSNET 3001.


Drukarki fiskalizujemy przy pomocy programu ‘posnet.exe’ umieszczonego w katalogu ‘VER17_1’ na dyskietce
fiskalnej. Drukarka POSNET 3001 jest w pełni zgodna z drukarką DF301 (ver.≥17.1).
Dyskietka fiskalna jest dostępna w internecie na stronie www.posnet.com.pl . Znajduje się na niej także ‘stary’
program (katalog POSNET) który służy do fiskalizacji wersji drukarek < 17.1 (cały nagłówek w pamięci
fiskalnej!), czyli modeli: DF-300, DF-301 i DF-302.

UWAGA:
Programem do fiskalizacji drukarek umieszczonym w katalogu ‘ver17_1’ NIE WOLNO FISKALIZOWAĆ
drukarek DF301A (wersja apteczna drukarki DF301) a także drukarek których firmware ma numer mniejszy niż
17.1. Te drukarki fiskalizujemy wg ‘starych’ zasad (cały nagłówek do modułu fiskalnego) programem ‘posnet.exe’
umieszczonym w katalogu ‘posnet’ !.

HEXDUMP

Po naciśnięciu (jednocześnie) klawiszy R.O. i R.D. możemy przełączyć drukarkę w tzw. tryb hexdump
umożliwiający wydrukowanie przez drukarkę treści komend odbieranych przez drukarkę przez łącze RS232C.
Tryb ten jest przydatny w przypadku ‘kłopotów’ z aplikacją sterującą drukarką (programem użytkownika).

ELEMENTY DOSTĘPNE PO ZDJĘCIU OSŁONKI WEWNĄTRZ DRUKARKI

gdzie:
J4 - jumper do resetu zegara drukarki,
J3 - uaktywnia dodatkowe wyjście RS232C (wersja apteczna) w przypadku gdy zworka
jest w pozycji 2xRS. Standardowo zworka ustawiana w pozycji 1xRS+RST
J5 - złącze obcinacza
U2 - driver interfejsów szeregowych (w podstawce)
JP11..JP12 - złącze czujnika papieru i zwijacza kopii
B1 - bezpiecznik

Str. 123
Drukarka Fiskalna POSNET Thermal i 3001

18.Zmiany w drukarkach POSNET Thermal


W celu zwiększenia możliwości serwisowania drukarek termicznych wprowadzono kilka istotnych zmian w
konstrukcji drukarek umożliwiających bez naruszenia głównej plomby zabezpieczającej przed dostępem do wnętrza
drukarki (plastikowa plomba z napisem POSNET lub HOLOGRAM).
Zmiany te umożliwią:
1. Wymianę uszkodzonego mechanizmu drukującego;
2. Wymianę uszkodzonej klawiatury;
3. Wymianę baterii podtrzymującej pamięć RAM lub baterii zegara RTC
(UWAGA: w wersjach SMD istnieje tylko jedna bateria podtrzymująca zegar i pamięć RAM);
4. Dalej zachowany został dostęp do elementów umieszczonych pod osłoną zabezpieczoną plombą
ołowianą serwisu.

Poniżej przedstawiamy rysunek osłony zabezpieczonej plombą ołowianą serwisanta z charakterystyczną ‘wypustką’
uniemożliwiającą odkręcenie mechanizmów drukujących i odkręcenia górnej osłony drukarki:

Poniżej przedstawiamy krótki opis w jaki sposób dokonać wymiany uszkodzonego elementu.

Wymiana baterii

Przed wymianą baterii koniecznie należy wykonać raport dobowy w drukarkach które pracują w trybie
fiskalnym.
Baterie(a) dostępne są pod elementem zwijacza kopii. Aby uzyskać do nich dostęp należy:
1. Odkręcić (po zerwaniu ołowianej plomby serwisanta) dwie śruby mocujące osłonę (patrz rysunek powyżej)
i zdjąć osłonę - umożliwi to dostęp do śrub mocujących górną pokrywę obudowy;
2. Odkręcić cztery śruby mocujące górną pokrywę drukarki;
3. Odłączyć wyświetlacz klienta (LED);
4. Odłączyć wiązki łączące płytę sterownika drukarki z klawiaturą:
- wiązkę LED-ów od strony klawiatury poprzez odłączenie tasiemki wyświetlacza LCD
od płytki z lampkami LED - dopiero wtedy można odczepić płytkę z lampkami poprzez
delikatne zwolnienie zaczepów;
- wiązkę wyświetlacza LCD poprzez wyjęcie złączki umieszczonej na płycie sterownika
drukarki.
5. Poluzować śruby: dwie śruby mocujące mechanizm zwijacza kopii oraz dwie śruby mechanizmu
drukującego kopii (te bliższe mechanizmu zwijacza);
6. Wysunąć blaszaną osłonę spod mechanizmu zwijacza. Uzyskamy dostęp do baterii litowych drukarki.
Bateria pamięci RAM oznaczona jest symbolem BT1, natomiast bateria podtrzymująca zegar drukarki ma
oznaczenie BT2 (w wersji SMD jest jedna bateria oznaczona symbolem BT1).
Przy wymianie baterii należy zachować wyjątkową ostrożność aby nie spowodować zwarć na płycie
sterownika drukarki.
Po wymianie baterii BT2 (zegar RTC) należy przesłać z programu serwisowego datę i czas do zegara drukarki.

Str. 124
Drukarka Fiskalna POSNET Thermal i 3001
Po wymianie baterii BT1 (RAM) także będzie konieczne przesłanie danych do zegara. Ponadto drukarka może
zgłosić komunikat ‘Błąd pamięci NVR’ i próbować naprawić ‘Bazę towarową’. Powstanie wtedy komunikat ‘Błąd
bazy towarowej’ w wyniku którego w module fiskalnym pojawi się komunikat „ODBUDOWA BAZY”. Powyższe
zdarzenia trzeba odnotować w książce serwisowej drukarki. Konieczne będzie także odtworzenie nagłówka w
pamięci RAM (plik nazwa.nag – patrz strona 18).
W wersji SMD płyty głównej po wymianie baterii zajdą oba wymienione wyżej przypadki.

UWAGA: W wersjach SMD, w przypadku konieczności zmiany DATY zegara RTC (np. z powodu jego
przekłamania) należy odłączyć zasilanie zegara RTC, czyli odłączyć (na chwilę) baterię BT1 (przy wyłączonym
zasilaniu drukarki!).

Wymiana mechanizmu drukującego oryginału

Kolejność czynności:

1. Odkręcić (po zerwaniu ołowianej plomby serwisanta) dwie śruby mocujące osłonę (patrz rysunek osłony na
poprzedniej stronie) i zdjąć osłonę - umożliwi to dostęp do śrub mocujących górną pokrywę obudowy;
2. Odkręcić cztery śruby mocujące górną pokrywę drukarki;
3. Odłączyć wyświetlacz klienta (LED);
4. Odłączyć wiązki łączące płytę sterownika drukarki z klawiaturą:
- wiązkę LED-ów od strony klawiatury poprzez odłączenie tasiemki wyświetlacza LCD
od płytki z lampkami LED - dopiero wtedy można odczepić płytkę z lampkami poprzez
delikatne zwolnienie zaczepów;
- wiązkę wyświetlacza LCD poprzez wyjęcie złączki umieszczonej na płycie sterownika
drukarki.
5. Odkręcić dwie śruby mocujące element służący do umieszczenia rolki oryginału i pełniący jednocześnie
rolę ‘łącznika’ między mechanizmem oryginału i kopii;
6. Odłączyć wiązki mechanizmu od płyty sterownika drukarki (3 pod osłonką i dwie z przodu mechanizmu);
7. Odkręcić dwie śruby mocujące mechanizm do konstrukcji drukarki;
8. Wyjąć mechanizm wysuwając go najpierw w kierunku zwijacza;
9. Odkręcić ‘kątowniki’ elementu do umieszczenia rolki oryginału (dwie śruby) i przykręcić do nowego
mechanizmu w taki sam sposób jak były przykręcone poprzednio;
10. Założyć nowy mechanizm i przykręcić śruby mocujące wg opisu powyżej;
11. Podłączyć wiązki klawiatury i umieścić płytkę z lampkami w specjalnych zaczepach;
12. Podłączyć wyświetlacz LED klienta i przykręcić górną pokrywę drukarki przy pomocy 4 śrub.
13. Założyć i zabezpieczyć plombą ołowianą osłonę.

Wymiana mechanizmu drukującego kopii

Kolejność czynności:

1. Odkręcić (po zerwaniu ołowianej plomby serwisanta) dwie śruby mocujące osłonę (patrz rysunek osłony na
poprzedniej stronie) i zdjąć osłonę - umożliwi to dostęp do śrub mocujących górną pokrywę obudowy;
2. Odkręcić cztery śruby mocujące górną pokrywę drukarki;
3. Odłączyć wyświetlacz klienta (LED);
4. Odłączyć wiązki łączące płytę sterownika drukarki z klawiaturą:
- wiązkę LED-ów od strony klawiatury poprzez odłączenie tasiemki wyświetlacza LCD
od płytki z lampkami LED - dopiero wtedy można odczepić płytkę z lampkami poprzez
delikatne zwolnienie zaczepów;
- wiązkę wyświetlacza LCD poprzez wyjęcie złączki umieszczonej na płycie sterownika
drukarki.
5. Odłączyć wiązki mechanizmu od płyty sterownika drukarki (3 pod osłonką);
6. Odkręcić śruby mocujące mechanizm zwijacza (2), odkręcić ‘kątowniki’ elementu do umieszczenia rolki
oryginału (2 ‘poziome’ śruby odkręcić, 2 ‘pionowe’ śruby poluzować), śruby mocujące mechanizm do
konstrukcji (4 sztuki);

Str. 125
Drukarka Fiskalna POSNET Thermal i 3001
7. Wysunąć o ok. 2 cm mechanizm ze zwijaczem tak aby uzyskać dostęp do wiązek mechanizmu
umieszczonych pod jego spodem;
8. Odłączyć odsłonięte wiązki od płyty sterownika;
9. Odkręcić element zwijacza od mechanizmu drukującego (4 ‘pionowe’ śrubki);
10. Zamocować element zwijacza do nowego mechanizmu;
11. Zamontować całość wg opisu powyżej;
12. Podłączyć wiązki klawiatury i umieścić płytkę z lampkami w specjalnych zaczepach;
13. Podłączyć wyświetlacz LED klienta i przykręcić górną pokrywę drukarki przy pomocy 4 śrub.
14. Założyć i zabezpieczyć plombą ołowianą osłonę.

UWAGA:
Mechanizmy drukujące oryginału i kopii różnią się między sobą. Mechanizm kopii posiada dodatkowe kółko
pasowe którego nie posiadają mechanizmy oryginału! Nie jest możliwe więc włożenie w miejsce mechanizmu dla
kopii mechanizmu drukującego oryginału. Zamawiając mechanizm w POSNET należy podać który nas interesuje
(kopia czy oryginał).

Wymiana klawiatury.

Klawiatura w drukarkach POSNET Thermal wykonana została jako element naklejany na górną pokrywę drukarki.
Aby wymienić uszkodzoną klawiaturę na nową należy:

1. Odkręcić (po zerwaniu ołowianej plomby serwisanta) dwie śruby mocujące osłonę (patrz rysunek osłony na
poprzedniej stronie) i zdjąć osłonę - umożliwi to dostęp do śrub mocujących górną pokrywę obudowy;
2. Odkręcić cztery śruby mocujące górną pokrywę drukarki;
3. Odłączyć wyświetlacz klienta (LED);
4. Odłączyć wiązki łączące płytę sterownika drukarki z klawiaturą:
- wiązkę LED-ów od strony klawiatury poprzez odłączenie tasiemki wyświetlacza LCD
od płytki z lampkami LED - dopiero wtedy można odczepić płytkę z lampkami poprzez
delikatne zwolnienie zaczepów;
- wiązkę wyświetlacza LCD poprzez wyjęcie złączki umieszczonej na płycie sterownika
drukarki.
5. Wyjąć wyświetlacz LCD;
6. Usunąć uszkodzoną klawiaturę poprzez jej odklejenie od górnej pokrywy;
7. Przykleić nową klawiaturę do górnej pokrywy w miejscu przewidzianym dla niej;
8. Założyć wyjęty uprzednio wyświetlacz LCD;
9. Podłączyć wiązki klawiatury i umieścić płytkę z lampkami w specjalnych zaczepach;
10. Podłączyć wyświetlacz LED klienta i przykręcić górną pokrywę drukarki przy pomocy 4 śrub.
11. Założyć i zabezpieczyć plombą ołowianą osłonę.

Str. 126
Drukarka Fiskalna POSNET Thermal i 3001

19.Rok 2000 w drukarkach fiskalnych POSNET


Drukarki fiskalne POSNET drukują na swoich dokumentach datę w formacie:

rr – mm – dd

gdzie:
rr – dwie ostatnie cyfry roku (00..99); dla roku 2000 będą to cyfry ‘00’, dla 2001 ‘01’ itd.,
mm – miesiąc (1..12),
dd – dzień miesiąca (1..28/29/30 lub 31).

Ponieważ hasło ‘fiskalizacja’ obowiązuje w Polsce od roku 1993 programista który obsługuje drukarkę może
przewidzieć, że pojawienie się w drukarce liczb w polu ‘rok’ w zakresie 00..49 dotyczy roku 2000-2049, z zakresu
50..99 lat 1950..1999. Należy nadmienić, że rok w zakresie 1950..1993 w drukarce może się pojawić tylko
teoretycznie w przypadku uszkodzenia zegara drukarki. Praktycznie gdy taka sytuacja wystąpi drukarka dzięki
swojemu wewnętrznemu oprogramowaniu zgłosi operatorowi (obsłudze) błąd na wyświetlaczu LCD w postaci:
„Błąd zegara, prześlij z systemu”, natomiast aplikacja sterująca drukarką otrzyma z drukarki ‘błąd numer 01’ w
przypadku wysłania do drukarki dowolnego rozkazu za wyjątkiem sekwencji ‘ustawiania zegara’.
W drukarkach POSNET dostępne są następujące sekwencje mające bezpośredni związek z datą (rr / mm / dd) :
1. Rozkaz wykonania ‘raportu dobowego’,
2. Rozkaz wykonania ‘raportu okresowego’ ,
3. Rozkaz ‘odeślij czas RTC’ z drukarki,
4. Rozkaz ‘odeślij informacje kasowe’ (tzw. długi status),
5. Rozkaz ‘ustawianie zegara RTC’.

Reasumując. Problem roku 2000 może pojawić się w systemie informatycznym tylko w przypadku gdy programista
błędnie napisze (napisał) program w zakresie obsługi drukarki fiskalnej POSNET lub błędnie zinterpretuje odebrane
z drukarki informacje zawierające datę. Wszystkie wyprodukowane do tej pory drukarki (DF-300/1/2, POSNET
Thermal i POSNET 3001) działają na takim samym protokole transmisji, czyli zawsze tak samo interpretują
sekwencje zawierające pole ‘rok’. Dotyczy to także kasy fiskalnej POSNET BEETLE 20 w której umieszczono
drukarkę fiskalną POSNET Thermal oraz kasy POSNET 2000.

Str. 127
Drukarka Fiskalna POSNET Thermal i 3001

20.Nowe konstrukcje drukarek

Drukarka POSNET 3001 w obudowie plastikowej

W drukarce w obudowie metalowej zastosowano mechanizm


drukujący STAR MP 342 znany z drukarki DF-300 oraz DF-301,
natomiast w drukarce w obudowie plastikowej zastosowano
mechanizm drukujący MP232MP-24G-A oraz tasiemkę barwiącą typu
RC200B.
Ze względu na zmianę typu obudowy nastąpiły także istotne
zmiany w konstrukcji płyty głównej drukarki, i co jest z tym
związane serwis ma dostęp do niektórych elementów drukarki po
demontażu mechanizmu drukującego i odkręceniu specjalnej
‘blaszki’ zasłaniającej otwór w konstrukcji. Demontaż mechanizmu drukującego (4 śruby) jest możliwy po usunięciu
plomby ołowianej serwisanta umieszczonej z prawej strony mechanizmu.
Na zdjęciach przedstawiono widok drukarki po odkręceniu mechanizmu drukującego i
rysunek fragmentu płyty głównej drukarki dostępnej dla serwisanta:

RAM RTC

gdzie:
J4 − jumper do resetu zegara drukarki,
J3 − uaktywnia dodatkowe wyjście RS232C do którego można podłączyć
zewnętrzny wyświetlacz alfanumeryczny VFD (w przypadku gdy
zworka jest w pozycji 2xRS). Standardowo zworka ustawiana w
pozycji 1xRS+RST.
U2 − driver interfejsów szeregowych – układ MAX232
B1 − bezpiecznik
U15 − EPROM z programem drukarki (firmware)
BT1 − 3V bateria litowa podtrzymująca pamięć RAM drukarki
BT2 − 3V bateria litowa podtrzymująca zegar RTC

Aby uzyskać dostęp do klawiatury lub wyświetlacza LCD obsługi należy odkręcić 4 śruby mocujące górną część
obudowy do podstawy konstrukcji, odłączyć wyświetlacz klienta i dwie wiązki łączące klawiaturę i wyświetlacz
LCD z płytą drukarki (patrz rysunki poniżej):

LCD KBD

Str. 128
Drukarka Fiskalna POSNET Thermal i 3001
Drukarka POSNET Thermal w technologii SMD

W wersji SMD istnieje tylko jedna bateria litowa podtrzymująca zegar RTC i pamięć RAM drukarki. Dostęp do tej
baterii jest możliwy po odkręceniu górnej pokrywy drukarki i specjalnej blaszki umieszczonej pod elementem
zwijacza kopii.
Na rysunku poniżej przedstawiono widok elementów dostępnych dla serwisu po zdjęciu ‘blaszki’:

Gdzie:
- BT1 – bateria podtrzymująca zegar RTC i pamięć RAM
- J1 punkty pomiarowe umożliwiające pomiar prądu pobieranego z baterii

Drukarki z płytą główną wykonaną w technologii SMD zaopatrzone są w zewnętrzny zasilacz wykonany w technice
impulsowej CO OZNACZA, ŻE ZASILACZY Z POPRZEDNICH WERSJI DRUKAREK NIE WOLNO UŻYWAĆ
DO WERSJI SMD !!! Nowa wersja zasilacza wyposażona jest w wtyczkę typu DC-12B-PT5 (UWAGA: INNA
WTYCZKA NIŻ W WERSJACH WCZEŚNIEJSZYCH !!!).

Str. 129
Drukarka Fiskalna POSNET Thermal i 3001

21.Wykaz podzespołów drukarki fiskalnej POSNET Thermal

Zakres napraw gwarancyjnych:


NAZWA KOD
Dealer Region POSNET
Pakiet sterownika wersja przewlekana P-PKE-DF403-M7 X
Pakiet sterownika wersja SMD P-PKE-DF403-M12 X
Pakiet wyświetlacza LED P-PKE-DF403-D61 X
Pakiet wyświetlacza LCD E-OLX-20X2-WINTEK X
Mechanizm drukujący oryginał M-DDT-FHP6248 X
Mechanizm drukujący kopii M-DDT-FHP6248R X
Klawiatura membranowa P-PKE-DF403-KBD/P X
Zasilacz wersja przewlekana H-DF403-ZASILACZ X
Zasilacz wersja SMD H-DF403-ZASIL-SMD X
Bateria Litowa E-BPL-CR2032 X
Szpula kopii M-MPX-DF403-DFT-70 X
Wałek papieru M-MBT-DF-87P X
Pasek zwijacza P-PKE-DF403-K31 X
Pamięć fiskalna TYLKO POSNET !!! X

Zasady serwisowania są następujące:


1. Dealer firmy POSNET może naprawiać (wymieniać) tylko te podzespoły, które w tabeli
oznaczono symbolem ‘X’
2. Przedstawiciel regionalny ma uprawnienia na wszystkie operacje za wyjątkiem napraw
(wymian) pamięci fiskalnej

W przypadku wątpliwości pytania należy kierować na adres: serwis@posnet.com.pl lub


faksem (0-22 868 68 88 w. 251). Przy zamawianiu podzespołów należy podawać KOD towaru.

Str. 130
Drukarka Fiskalna POSNET Thermal i 3001

22.Wykaz podzespołów drukarki fiskalnej POSNET 3001

Zakres napraw gwarancyjnych:


NAZWA KOD
Dealer Region POSNET
Pakiet sterownika wersja METAL P-PKE-DF3001-M2 X
Mechanizm drukujący wersja METAL M-DDI-MP342FX24VL-A X
Pakiet sterownika wersja PLASTIK P-PKE-DF401-M3 X
Mechanizm drukujący wersja PLASTIK M-DDI-MP232MP24G-A X
Pakiet wyświetlacza LED P-PKE-DF403-D61 X
Pakiet wyświetlacza LCD E-OLX-2-X2-WINTEK X
Klawiatura membranowa wersja METAL P-PKE-DF3001-KBD X
Klawiatura membranowa wersja PLASTIK P-PKE-DF401-KBD/P X
Zasilacz H-DF401-ZASIL X
Szpula kopii M-MPX-ZT10-3-P X
Pasek zwijacza M-MGX-PASEK X
Mikro przełącznik pokrywy E-EMB-83132B X
Bateria Litowa E-BPL-CR2032 X
Silnik zwijacza P-PKE-DF401S1 X
Mikro przełącznik papieru E-EMB-83132D X
Pamięć fiskalna TYLKO POSNET !!! X

Zasady serwisowania są następujące:


1. Dealer firmy POSNET może naprawiać (wymieniać) tylko te podzespoły, które w tabeli
oznaczono symbolem ‘X’
2. Przedstawiciel regionalny ma uprawnienia na wszystkie operacje za wyjątkiem napraw
(wymian) pamięci fiskalnej

W przypadku wątpliwości pytania należy kierować na adres: serwis@posnet.com.pl lub


faksem (0-22 868 68 88 w. 251). Przy zamawianiu podzespołów należy podawać KOD towaru.

Str. 131
Drukarka Fiskalna POSNET Thermal i 3001
PISMA MINISTERSTWA FINANSÓW DOPUSZCZAJĄCE DRUKARKI DO OBROTU

POSNET Thermal

Str. 132
Drukarka Fiskalna POSNET Thermal i 3001

POSNET 3001

Str. 133
Drukarka Fiskalna POSNET Thermal i 3001

POSNET Thermal-A

Str. 134
Drukarka Fiskalna POSNET Thermal i 3001
NOTATKI:

Str. 135

You might also like