Table of Contents

FISKAL - UPUTSTVO ZA UPOTREBU

SPISAK KOMANDI

Sintaksa:

#FISKAL|#FISKALNI_ISECAK
[<def_artikla>
{<def_artikla>}
[#PLACANJE
<def_placanja>
{<def_placanja>}]]

Opis: Štampanje fiskalnog isečka ili dobijanje informacija o otvorenom isečku. Navode se sve stavke isečka jedna za drugom, storno stavke se navode kao i obične ali sa negativnom količinom. Ako se komanda navede bez parametara vraćaju se informacije o trenutno otvorenom fiskalnom isečku u formatu <podaci_isecka>, tj. broj evidentiranih stavki i trenutna vrednost isečka. Na početku se proverava da li prosleđene stavke mogu biti prihvaćene u konkretnom uređaju. Proveravaju se sledeće stvari:

  1. Za šifru, količinu i cenu da li su u ispravnom formatu i dozvoljenom intervalu.
  2. Da li je vrednost stavke (proizvod količine i cene) u okviru dozvoljenog.
  3. Da li je poreska stopa artikla ispravnog formata i dozvoljena u uređaju. Ako je artikal već definisan u uređaju, da li je njegova poreska stopa jednaka stopi prosleđenog artikla.
  4. Za storno stavke da li postoji prethodna stavka koju je moguće stornirati.
  5. Da li ima dozvoljen broj stavki na isečku.

Ako artikal ne postoji u fiskalnom uređaju, definiše se a ako postoji i ako je to potrebno menja mu se cena. Ako u ovoj prvoj fazi nije bilo grešaka, započinje se štampanje fiskalnog isečka. Ako tokom štampanja isečka dođe do prekida zbog nestanka papira, struje ili druge slične greške, WingsFiskal po otklanjanju uzroka, nastavlja isečak od mesta prekida. Na kraju isečka se opciono može navesti specifikacija plaćanja. Ako se specifikacija plaćanja ne navede, celokupan iznos isečka se plaća gotovinom.

Primer 1:

#FISKAL
131 Cokolada kom10   80.50 Đ
255 Keks     kg1.5  300.00 Đ
#PLACANJE
GOTOVINA 100
CEKOVI   200

Primer 2:

#FISKAL
131 Cokolada kom10   80.50 Đ
255 Keks     kg  1.5  300.00 Đ
255 Keks     kg  -1.5 300.00 Đ

Sintaksa:

#OTVORI_FISKALNI_ISECAK
#PRODAJA
<def_artikla>
{<def_artikla>}
#ZATVORI_FISKALNI_ISECAK
{<def_placanja>}

Opis: Grupa komandi kojom se obavlja evidentiranje fiskalnog isečka, stavku po stavku. Najpre se komandom #OTVORI_FISKALNI_ISECAK započne fiskalni isečak, uzastopnim komandama #PRODAJA se evidentiraju stavke isečka a na kraju se komandom #ZATVORI_FISKALNI_ISECAK fiskalni isečak završava. Kod prosleđenih stavki se proverava ispravnost formata, dozvoljeni interval i broj stavki, ostale provere i funkcionalnost opisanu u komandi FISKALNI_ISECAK ne obezbeđuje drajver već aplikacija koja ga koristi. Na kraju isečka se opciono može navesti specifikacija plaćanja.

Primer:

#OTVORI_FISKALNI_ISECAK
#PRODAJA
131 Cokolada kom10   80.50 Đ
255 Keks     kg  1.5  300.00 Đ
#PRODAJA
255 Keks     kg  -1.5 300.00 Đ
#ZATVORI_FISKALNI_ISECAK
GOTOVINA 100
CEKOVI   200

Sintaksa:

#ARTIKLI|#UPIS_ARTIKALA
<def_artikla>
{<def_artikla>}

Opis: Komanda kojom se definišu artikli u bazi fiskalnog uređaja. Svaki red iza ključne reči sadrži definiciju jednog artikla. Ukoliko je artikal sa zadatom šifrom već definisan, briše se i definiše se novi.

Primer:

#ARTIKLI
211 Cokolada kom 10  123.45 Đ
215 Keks     kg  1.5 300.00 Đ

Sintaksa:

#READ_ARTIKLI|#CITANJE_ARTIKALA
[{<sifra>|PRVI|SLEDECI}]

Opis: Komanda kojom se preuzimaju artikli iz baze fiskalnog uređaja. Mogu se preuzeti svi definisani artikli, samo oni čije šifre su navedene ili sekvencijalno jedan po jedan artikal. Kao rezultat se dobija lista definisanih artikala u obliku <def_artikla>.

Primer 1:

#READ_ARTIKLI
Rezultat:
123 Sok      lit 1  80.00  Đ
211 Cokolada kom 1  123.45 Đ
215 Keks     kg  1  300.00 Đ

Primer 2:

#READ_ARTIKLI
123
211
Rezultat:
123 Sok      lit 1  80.00  Đ
211 Cokolada kom 1  123.45 Đ

Primer 3:

#READ_ARTIKLI
PRVI
SLEDECI
SLEDECI
Rezultat:
123 Sok      lit 1  80.00  Đ
211 Cokolada kom 1  123.45 Đ
215 Keks     kg  1  300.00 Đ

Sintaksa:

#DELETE_ARTIKLI|#BRISANJE_ARTIKALA
<def_artikla>
{<def_artikla>}

Opis: Komanda za brisanje artikala iz baze fiskalnog uređaja. Argumenti komande su definicije artikala koje treba izbrisati u obliku <def_artikla> s tim što je dovoljno navesti samo šifru artikla. Komanda se ne prekida u slučaju neuspešnog brisanja pojedinih artikala, ali se može prekinuti u slučaju gubitka komunikacije sa uređajem.

Primer:

#DELETE_ARTIKLI
411 Cokolada kom 1  123.45 Đ
215 Keks     kg  1  300.00 Đ

Sintaksa:

#DELETE_ALL_ARTIKLI

Opis: Komanda kojom se brišu svi artikli iz baze fiskalnog uređaja.

Primer:

#DELETE_ALL_ARTIKLI2
Sintaksa:
#SET_TAX_AMOUNT|#PORESKE_STOPE
{<def_poreske stope>}

Opis: Komanda definiše iznose prosleđenih poreskih stopa dok izostavljene stope postavlja za zabranjene. Ako se komanda navede bez parametara, preuzimaju se i vraćaju iznosi poreskih stopa iz fiskalnog uređaja.

Primer 1:

#SET_TAX_AMOUNT
G  0.00
Đ 18.00
E  8.00

Primer 2:

#SET_TAX_AMOUNT
Rezultat:
G  0.00
Đ 18.00
E  8.00

Sintaksa:

#Z_REPORT|#Z_IZVESTAJ

Opis: Komanda za štampanje dnevnog fiskalnog izveštaja sa nuliranjem Z-izveštaj).

Primer:

#Z_REPORT

Sintaksa:

#X_REPORT|#X_IZVESTAJ
[1|2]

Opis: Komanda za štampanje preseka stanja (X-izveštaj). Opciono se može zadati parametar 1 ili 2, za osnovni, odnosno prošireni izveštaj.

Primer:

#X_REPORT
9

Sintaksa:

#PERIODIC_REPORT|#PERIODICNI_IZVESTAJ
<datum><t><datum>

Opis: Komanda za štampanje periodičnog fiskalnog izveštaja za zadati vremenski interval.

Primer:

#PERIODIC_REPORT
10105 300105

Sintaksa:

#POR_GRUPE_REPORT, #OPERATERS_REPORT, #ARTIKLI_REPORT

Opis: Razni dodatni izveštaji. POR_GRUPE_REPORT, izveštaj o poreskim stopama u zadatom periodu. Opcioni parametar je vremenski interval, ako se izostavi prikazuju se svi podaci. OPERATERS_REPORT, izveštaj o prodaji po operaterima. ARTIKLI_REPORT, izveštaj po artiklima, ima jedan parametar čija vrednost može biti 0 (samo artikli prodati u toku dana) ili 1 (svi artikli).

Primeri:

#POR_GRUPE_REPORT
010105 300105
#OPERATERS_REPORT
#ARTIKLI_REPORT
0

Sintaksa:

#DIAGNOSE_PRINT

Opis: Štampaju se dijagnostičke informacije o samom fiskalnom uređaju.

Primer:

#DIAGNOSE_PRINT

Sintaksa:

#SET_HEADER|#ZAGLAVLJE
{<string>}

Opis: Komanda definiše zaglavlje (header) u fiskalnim dokumentima. Ako se navede bez parametara, vraća se zaglavlje iz fiskalnog uređaja.

Primer 1:

#SET_HEADER
ABC Komerc
11000 BEOGRAD

Primer 2:

#SET_HEADER

Rezultat:
ABC Komerc
11000 BEOGRAD

Sintaksa:

#SET_FOOTER|#REKLAMNI_BLOK
{<string>}

Opis: Komanda za definisanje reklamnog bloka (futera) na fiskalnim isečcima. Ako se navede bez parametara vraća se reklamni blok iz fiskalnog uređaja.

Primer:

#SET_FOOTER
Hvala na poverenju.
Dodjite nam opet!

Sintaksa:

#OPERATER
<broj_operatera>[<t><lozinka>[<t><naziv>[<t><nova_lozinka>]]]

Opis: Komanda kojom se prijavljuje operater, menjaju naziv i lozinka ili čitaju podaci o operateru. Ako se navede samo broj operatera, komanda vraća podatke o zadatom operateru iz fiskalnog uređaja u obliku <operater2>. Ako se navedu broj i lozinka operatera vrši se prijavljivanje odnosno odabir operatera koji izdaje fiskalne isečke, ovaj podatak se čuva i koristi sve do odabira novog operatera. Naziv i lozinka operatera se mogu promeniti ako se navedu treći (naziv) i po potrebi četvrti parametar (nova lozinka).

Primer 1:

#OPERATER
001 1234 Kasir1

Primer 2:

#OPERATER
001 1234 Kasir1 5678

Primer 3:

#OPERATER
001 1234
#FISKALNI_ISECAK
131 Cokolada kom 10   80.50 Đ

Primer 4:

#OPERATER
001
Rezultat:
001 1234 Kasir1 5 10.00 100.00

Sintaksa:

#DISPLAY|#DISPLEJ
{<string>}

Opis: Komanda za prikazivanje teksta na displeju fiskalnog uređaja. Može imati jedan ili više parametra, u zavisnosti od broja linija na konkretnom uređaju. Ako se parametri izostave, briše se displej fiskalnog uređaja.

Primer:

#DISPLAY
Hvala na poverenju,
Dodjite nam opet!

Sintaksa:

#PRINT|#NEFISKALNI_ISECAK
<string>
{<string>}

Opis: Komanda za štampanje proizvoljnog teksta na fiskalnom uređaju.

Primer:

#PRINT
Hleb         1 kom
Mleko        1 lit
Kisela voda  2 lit

Sintaksa:

#OPEN_DRAWER|#OTVORI_FIOKU
[<broj>]

Opis: Komanda kojom se vrši otvaranje fioke. Ima jedan opcioni parametar koji određuje dužinu impulsa za otvaranje u milisekundama.

Primer:

#OPEN_DRAWER
40

Sintaksa:

#CUT_PAPER

Opis: Komanda koja forsira sečenje papira.

Primer:

#CUT_PAPER

Sintaksa:

#POSLEDNJI_BROJ

Opis: Dobijanje informacija o broju poslednjeg dnevnog fiskalnog izveštaja (Z-izveštaja) i broju poslednjeg fiskalnog isečka.

Primer:

#POSLEDNJI_BROJ
Rezultat:
265181364

Sintaksa:

#NOVAC
[<iznos>]

Opis: Uplata, podizanje i provera stanja novca u blagajni. Opcioni parametar predstavlja iznos pozitivan označava uplatu a negativan podizanje novca. Komanda uvek vraća stanje novca u blagajni.

Primer 1:

#NOVAC
Rezultat:
1500

Primer 2:

#NOVAC
100
#NOVAC
-50
Rezultat:
1600
1550

Sintaksa:

#STATUS

Opis: Određivanje statusa fiskalnog uređaja. Komanda u prvom redu vraća niz koji opisuje trenutni status fiskalnog uređaja a u nastavku opis svakog od statusa.

Primer:

#STATUS
Rezultat:
CJN
CDisplej nije povezan
JOstalo je malo papira
NUređaj je fiskalizovan

Sintaksa:

#UREDJAJ
[<naziv>
<serijski_parametri>]

Opis: Dobijanje i postavljanje informacija o fiskalnom uređaju. Ako se izostave parametri, komanda vraća podatke u formatu <podaci_uredjaja> u više redova:

1.naziv uređaja 2.parametri serijske komunikacije 3.najveća dozvoljena šifra artikla 4.maksimalan dozvoljen broj stavki u uređaju po jednom fiskalnom isečku 5.da li storno stavke ulaze u ukupan broj stavki 6.PIB korisnika 7.IBFM fiskalnog uređaja (jedinstveni broj fiskalne memorije)

Komanda se može koristiti i za odabir fiskalnog uređaja sa kojim se radi i podešavanje raznih parametara.

Primer 1:

#UREDJAJ
Rezultat:
Galeb FP-550
COM1 19200 N 8 1 N
65023
250
0
123456789
AB123456

Primer 2:

#UREDJAJ
Galeb FP-550
COM2 19200 N 8 1 N

Sintaksa:

#PODRZANE_KOMANDE

Opis: Spisak podržanih komandi za trenutni fiskalni uređaj.

Primer:

#PODRZANE_KOMANDE
Rezultat:
FISKAL
Z_REPORT
X_REPORT
DISPLAY
ARTIKLI
READ_ARTIKALI

Sintaksa:

#SET_DELIMITER
[<string>]

Opis: Komanda kojom se menja delimiter. Opcioni parametar je novi karakter za delimiter, ako se parametar izostavi uzima se default delimiter (horizontalni tabulator).

Primer:

#DELIMITER
;

Sintaksa:

#SET_ERR_LEVEL
<p_broj>

Opis: Komanda kojom se podešava željeni error/debug nivo. Parametar se navodi kao celobrojna bitmaska željenih opcija. Moguće opcije su:

1 Generisanje detaljnih оpisa o greškama 2 Pravljenje kopije obrađenog zahteva 4 Logovanje odgovora uređaja

Primer:

#SET_ERR_LEVEL
3

Bitmaska 3 u primeru predstavlja kombinaciju dva parametra, 1 (generisanja detaljnih opisa grešaka) i 2 (pravljenje kopije obrađenog zahteva). Bitmaska 3 je podrazumevana vrednost.

POVRATNE VREDNOSTI

WingsFiskal redom izvršava zadate komande iz zahteva, ukoliko se neka komanda ne izvrši uspešno, prekida se izvršavanje narednih komandi tj. zahteva. Ukoliko fiskalni uređaj ne podržava neku od komandi, WingsFiskal ignoriše komandu i vraća povratnu informaciju kao da je komanda uspešno izvršena. U prvom redu rezultata se vraća vrednost “0” ako je čitav zahtev uspešno izvršen ili ukupan broj grešaka ako ih je bilo. Posle toga dolaze rezultati izvršavanja pojedinačnih komandi, na početku se ispisuje naziv obrađene komanda, slede povratne vrednosti ako ih komanda ima i eventualne greške. Ako je komanda uspešno izvrešena na kraju se ispisuje “OK”. Svaka greška sadrži kod greške, opis greške i detalje greške. Formalna specifikacija rezultata je:

<rezultat> ::=  0|<p_broj>
                {<rezultat_komande>}
<rezultat_komande> ::= <komanda>
     {<povratna_vrednost>|<greska>}
                       [OK]
<povratna_vrednost> ::= <prosireni_string>
<greska> ::= <kod_greske><t><opis_greske>[<t><detalji>]

Primer 1: Komanda #READ_ARTIKLI vraća spisak artikala definisanih u fiskalnom uređaju:

#READ_ARTIKLI
Rezultat:
0
READ_ARTIKLI
345 Cokolada kom  10   150.00 Đ
445 Mleko    lit   2    75.00 Đ
OK

Ukoliko komanda nije u celosti uspešno izvršena, rezultat može biti ovakav:

2
READ_ARTIKLI
345 Cokolada kom  10   150.00 Đ
6 Fiskalni uređaj nije povezan
8 Izvršenje komande nije uspelo

Primer 2:

#SET_FOOTER
Hvala na poverenju.
Dodjite nam opet!
#OPERATER
001 1234
#FISKAL
131 Cokolada kom10   80.50 Đ
255 Keks     kg1.5  300.00 Đ
#PLACANJE
GOTOVINA 100
CEKOVI   200Rezultat:
0
SET_FOOTER
OK
OPERATER
OK
FISKAL
OK
Ukoliko nisu sve komande uspele:
3
SET_FOTER
OK
OPERATER
OK
FISKAL
43Nije prihvaćena stavka računa255 Keks
44Nije uspelo evidentiranje plaćanjaGOTOVINA
41Nije uspelo zatvaranje fiskalnog isečka
0 Bez greške, komanda je uspešno izvršena]
1 Opšta greška
2 Zahtev je prazan
3 Sintaksna greška
4 Nepoznata komanda
6 Fiskalni uređaj nije povezan
7 Neispravan format podataka
8 Izvršenje komande nije uspelo
9 Očekivana je komanda ili parametar
11 Komanda nije dozvoljena (npr. zbog zakonskih odredbi)
12 Fiskalni uređaj je zamenjen
20 Nije uspelo definisanje artikla
21 Neispravna šifra artikla
22 Neispravna količina artikla
23 Neispravna cena artikla
24 Neispravan naziv artikla
25 Neispravna poreska stopa artikla
26 Vrednost stavke ili isečka je prevelika ili premala
27 Nije uspelo brisanje artikla
28 Preveliki broj stavki na isečku
29 Artikal nije pronađen
40 Nije uspelo otvaranje fiskalnog isečka
41 Nije uspelo zatvaranje fiskalnog isečka
42 Nije naveden operater (pre otvaranja fiskalnog isečka)
43 Nije prihvaćena stavka računa
44 Nije uspelo evidentiranje plaćanja
60 Nije uspelo definisanje operatera
70 Nije uspelo podešavanje iznosa poreskih stopa
80 Potrebno je uraditi Z-izveštaj

Komanda #STATUS vraća trenutni status fiskalnog uređaja. Status se definiše stringom u kome svaki karakter opisuje određeno stanje uređaja. Na primer, status CFI označava da displej nije povezan, otvoren je fiskalni isečak i nema više kontrolnog papira.

A Opšta greška, poslednja komanda nije uspela
B Mehanička greška u uređaju
C Displej nije povezan
D Sintaksna greška
E Operacija nije dozvoljena
F Fiskalni isečak je otvoren
G Nefiskalni isečak je otvoren
H Ostalo je malo kontrolnog papira (žurnal papir)
I Nema više kontrolnog papira
J Ostalo je malo papira
K Nema više papira
L Ostalo je manje od 50 mesta u fiskalnoj memoriji
M Fiskalna memorija je puna (više se ne može upisivati u nju)
N Uređaj je fiskalizovan

4. Komunikacija

Komunikacija se odvija preko direktorijuma u koji aplikacija upisuje zahteve a fiskalni drajver ih redom čita i obrađuje. Podrazumevana lokacija ovog direktorijuma je C:\Com, ali se lokacija može promeniti. Zahtevi su datoteke sa ekstenzijom .wng, WingsFiskal prati promene u komunikacionom diru i čim primeti novu datoteku sa ekstenzijom .wng, započinje obradu. Ukoliko postoji više datoteka, sortiraju se po nazivu i obrađuju redom. Povratne vrednosti (rezultate obrade) WingsFiskal snima u Res poddir komunikacionog dira, u fajl sa istim nazivom kao i originalni .wng fajl. Dok traje obrada zahteva, rezultat je otvoren u ekskluzivnom write modu (drugi programi mogu samo čitati sadržaj, ne i pisati), kada se završi obrada rezultat se zatvara a originalni zahtev se briše. Aplikacija kontroliše da li je WingsFiskal završio obradu tako što proverava da li datoteka zahteva postoji ili tako što pokušava da otvori rezultat u ekskluzivnom modu, kada u tome uspe zahtev je obrađen.

FORMALNA DEFINICIJA KOMANDNOG JEZIKA
<broj> ::= 0..9[<broj>]
<p_broj> ::= 1..9[<broj>]
<dec_broj> ::= [<znak>]<broj>[<dec_separator><broj>]
<znak> ::= +|-
<dec_separator> ::= .|,
<string> ::= A..Z|a..z|0..9|!|@|#|$|%...[<string>]
<prosireni_string> ::= <string>[<t><prosireni_string>]
<sifra> ::= <p_broj>
<naziv> ::= <string>
<jm> ::= <string>
<kolicina> ::= <dec_broj>
<cena> ::= <dec_broj>
<porez> ::= 0..8|<lat_stope_win1250>|<cir_stope_win1251>
<lat_stope_win1250> ::= A|G|D|Đ|E|Ž|I|J|K
<cir_stope_win1251> ::= А|Г|Д|Ђ|Е|Ж|И|Ј|К
<iznos> ::= <dec_broj>
<t> ::= Chr(9)
<def_artikla> ::= <sifra><t><naziv><t><jm><t><kolicina><t><cena><t><porez>
<nacin_placanja> ::= GOTOVINA|CEKOVI|KARTICA
<def_placanja> ::= <nacin_placanja><t><iznos>
<podaci_isecka> ::= <p_broj><t><iznos>
<def_poreske_stope> ::= <porez><t><dec_broj>
<datum> ::= <dan><mesec><godina>|<dan>.<mesec>.<godina>
<dan> ::= 01..31
<mesec> ::= 01..12
<godina> ::= 00..99
<operater2> ::= <broj_operatera><t><lozinka><t><naziv><t><broj_isecaka><t>
    <kolicina><t><vrednost>
<broj_operatera> ::= <broj><lozinka> ::= <string>
<nova_lozinka> ::= <string>
<broj_isecaka> ::= <broj>
<vrednost> ::= <dec_broj>
<podaci_uredjaja> ::= <naziv>
                      <serijski_parametri>
                      <maksimalna_sifra>
                      <dozvoljen_broj_stavki>
    <storno_se_broji>
    <pib>
                      <ibfm>
<maksimalna_sifra> ::= <sifra>
<dozvoljen_broj_stavki> ::= <broj>
<storno_se_broji> ::= 0|1
<pib> ::= <p_broj>
<ibfm> ::= <string>
<serijski_parametri> ::= <port><t><brzina><t><parnost><t><bitova_podataka><t>
 <zaustavnih_bitova><t><protok>
<port> ::= COM<p_broj>
<brzina> ::= <p_broj>
<parnost> ::= N|E|O|M|S
<bitova_podataka> ::= 5..8
<zaustavnih_bitova> ::= 1|2
<protok> ::= N|H|S
<program> ::= <komanda>
              {<komanda>}
<komanda> ::= <fiskalni_isecak>|<otvori_fiskalni_isecak>|
  <prodaja>|<zatvori_fiskalni_isecak>|
  <upis_artikala>|<citanje_artikala>|
  <brisanje_artikala>|<brisanje_svih_artikala>|
  <poreske_stope>|<z_izvestaj>|<x_izvestaj>|<periodicni_izvestaj>|
  <por_grupe_izvestaj>|<operateri_izvestaj>|
  <artikli_izvestaj>|<dijagnostika>|
  <zaglavlje>|<reklamni_blok>|<operater>|
              <displej>|<nefiskalni_isecak>|<otvori_fioku>|<iseci_papir>|
  <poslednji_broj>|<novac>|
              <status>|<uredjaj>|<podrzane_komande>|
  <delimiter>|<err_level><fiskalni_isecak> ::= #FISKAL|#FISKALNI_ISECAK
                [<def_artikla>
                {<def_artikla>}
                      [#PLACANJE
                      <def_placanja>
          {<def_placanja>}]]
<otvori_fiskalni_isecak> ::= #OTVORI_FISKALNI_ISECAK
<prodaja> ::= #PRODAJA
  <def_artikla>
  {<def_artikla>}
<zatvori_fiskalni_isecak> ::= #FORCE_FISKAL_CLOSE|#ZATVORI_FISKALNI_ISECAK
{<def_placanja>}
<upis_artikala> ::= #ARTIKLI|#UPIS_ARTIKALA
                    <def_artikla>
                    {<def_artikla>}
<citanje_artikala> ::= #READ_ARTIKLI|#CITANJE_ARTIKALA
                       [{<sifra>|PRVI|SLEDECI}]
<brisanje_artikala> ::= #DELETE_ARTIKLI|#BRISANJE_ARTIKALA
<def_artikla>
                        {<def_artikla>}
<brisanje_svih_artikala> ::= #DELETE_ALL_ARTIKLI
<poreske_stope> ::= #SET_TAX_AMOUNT|#PORESKE_STOPE
                    {<def_poreske_stope>}
<z_izvestaj> ::= #Z_REPORT|#Z_IZVESTAJ
<x_izvestaj> ::= #X_REPORT|#X_IZVESTAJ
                 [1|2]
<periodicni_izvestaj> ::= #PERIODIC_REPORT|#PERIODICNI_IZVESTAJ
                          <datum><t><datum>
<por_grupe_izvestaj> ::= #POR_GRUPE_REPORT
                         [<datum><t><datum>]
<operateri_izvestaj> ::= #OPERATERS_REPORT
<artikli_izvestaj> ::= #ARTIKLI_REPORT
                       0|1
<dijagnostika> ::= #DIAGNOSE_PRINT
<zaglavlje> ::= #SET_HEADER|#ZAGLAVLJE
                {<string>}
<reklamni_blok> ::= #SET_FOOTER|#REKLAMNI_BLOK
                    {<string>}
<operater> ::= #OPERATER
               <broj_operatera>[<t><lozinka>[<t><naziv>[<t><nova_lozinka]]]
<displej> ::= #DISPLAY|#DISPLEJ
              {<string>}<nefiskalni_isecak> ::= #PRINT|#NEFISKALNI_ISECAK
<string>
                        {<string>}
<otvori_fioku> ::= #OPEN_DRAWER|#OTVORI_FIOKU
                   [<broj>]        
<iseci_papir> ::= #CUT_PAPER
<poslednji_broj> ::= #POSLEDNJI_BROJ
<novac> ::= #NOVAC
            [<iznos>]
<status> ::= #STATUS
<uredjaj> ::= #UREDJAJ
              [<naziv>
              <serijski_parametri>]
<podrzane_komande> ::= #PODRZANE_KOMANDE2.