Descarcare si instalare
Pentru a descarca driverul este nevoie sa stiti exact pentru ce sistem de operare il doriti, si in functie de acesta sa-l descarcati de pe prima pagina din sectiunea Descarcari. Este recomandat sa-l descarcati de aici ori de cate ori este nevoie pentru ca in acest mod veti avea tot timpul ultima versiune de driver.
Daca folositi navigatorul Chrome dupa ce se alege directorul unde doriti sa salvati arhiva, exista probabilitatea sa va apara o alerta de securitate, la care trebuie sa alegeti "Pastrati" sau "Keep". Pentru a va asigura ca driverul este sigur dorim sa va informam ca acesta este semnat cu certificat de securitate care a fost dobandit in urma unor verificari ale societatii noastre din partea unor institutii internationale, in cazul nostru Comodo.
Daca folositi navigatorul Internet Exporer sau Firefox nu trebuie decat sa alegeti directorul unde sa salvati arhiva.
Dupa descarcare trebuie sa dezarhivati arhiva, care poate fi cu numele de dxprint.zip in cazul sistemului de operare Windows, dxprint_linux.zip in cazul sistemului de operare Linux sau dxprint_mac.zip pentru sistemul de operare MacOS.
Dezarhivarea pe Windows se poate face prin click dreapta pe arhiva, alegeti "Extract All" si dupa acest pas trebuie sa alegeti unde doriti sa se dezarhiveze. Pentru sistemul de operare Linux se alege meniul de click dreapta si se alege "Extract Here". Pentru sistemul de operare MacOS este necesar sa dati dublu click pe arhiva si aceasta se va dezarhiva automat.
Dupa dezarhivare directorul rezultat va contine driverul cu numele de dxprint.exe (sau dxprint in cazul Linux sau MacOS), fisierul de configurare cu numele de config.json si un director cu numele de bonuri_exemple care contine peste 38 de bonuri care pot fi folosite imediat ca si teste.
Cerintele minime de rulare ale driverului sunt:
Pentru Windows este necesara versiunea Windows XP SP3 sau mai noua.
Pentru Linux este necesar un kernel 2.6.23 sau mai mare (de la Centos 6
inclusiv in sus).
Pentru MacOS este necesara versiunea Snow Leopard 10.6 sau mai noua.
Configurare
Fisierul de configurare este in format JSON, si este foarte usor de modificat. Tot ce aveti nevoie este un editor de text cum ar fi Wordpad (Windows), Text Editor (Linux) sau TextEdit (MacOS).
{
"echipament": {
"tipEchipament": "datecs",
"port": "COM1",
"baudRate": 115200,
"numarOperator": 1,
"parolaOperator": "0001",
"numarLogic": 1,
"connTimeout": 30
},
"rulare": {
"rezident": false,
"directorBonuri": "bonuri",
"ftpServer": "",
"ftpUtilizator": "",
"ftpParola": "",
"ftpDirectorBonuri": "",
"ftpIntervalVerificareInSecunde": 300,
"httpServerActiv": false,
"httpPort": 8090,
"httpUtilizator": "",
"httpParola": "",
"httpPermiteListareDirBonuri": true,
"embedded": false,
"corsActiv": false,
"logLevel": "INFO",
},
"general": {
"directorBonuriExecutate": "executate",
"directorBonuriRaspuns": "raspuns",
"generareFisierCuNrBonFiscal": true,
"directorRapoarteAnaf": "ANAF",
"extensieFisierBon": "inp,bon",
"intervalPastrareBonuriInDirector": 7,
"tiparesteRaportZAutomat": true,
"raspundeCuNrEroareInFisierRaspuns": false,
"transformaCifDinTextPublicitarInFactura": "",
"trimiteRaportZPeEmail": "",
"prevalidareValoareBon": "false",
"ziDinLunaPentruExtragereAutomataFisiereXml": 0,
"trimiteFisiereXmlPeEmail": "",
"httpProxy": "",
"tiparesteRaportPluInainteDeRaportZ": false,
"nrMaximRapoarteZNetrimise": 0,
"nrMaximRapoarteZNetrimiseNotificare": 0,
"mapareModalitatiPlata": [
{
"modalitate": "NUMERAR",
"pozitie": 0
},
{
"modalitate": "CARD",
"pozitie": 1
},
{
"modalitate": "CREDIT",
"pozitie": 2
},
{
"modalitate": "TICHETE_MASA",
"pozitie": 3
},
{
"modalitate": "TICHETE_VALORICE",
"pozitie": 4
},
{
"modalitate": "VOUCHER",
"pozitie": 5
},
{
"modalitate": "PLATA_MODERNA",
"pozitie": 6
},
{
"modalitate": "CARD_AVANS_NUMERAR",
"pozitie": 7
},
{
"modalitate": "ALTE_METODE",
"pozitie": 8
}
]
},
"licenta": "Cumpara licenta de pe www.dxprint.ro",
"versiune": 10
}
Acesta este format din 5 sectiuni principale echipament, rulare, general, licenta si versiune.
a) Sectiunea echipament:
Dupa instalarea adaptorului de la usb la serial in calculator, este recomandat
sa
verificati in
Device Manager(Windows) sau in /dev/ttyXXX (Linux, MacOS) si sa identificati
numarul portului
COM. Dupa identificare acesta trebuie sa fie de forma COM1, COM2,
COMXX pentru
Windows, si sub forma de /dev/ttyACM0, /dev/ttyACM1, /dev/ttyACMX
pentru Linux si
MacOS. Aceasta informatie trebuie introdusa in sectiunea port
din
fisierul de
configurare. Valoare implicita COM1.
Daca doriti sa faceti conectarea pe TCP/IP
atunci trebuie sa
specificati portul sub
forma tcp://ip:port. Exemplu: tcp://192.168.1.23:3999
.
De
obicei casele
care permit conectarea pe retea au setat portul 3999 dar acesta se poate afla
prin comanda
dxprint.exe -sn.
Viteza de comunicatie este de obicei setata in casa de marcat la 115200,
dar daca este
nevoie se
poate modifica direct din sectiunea baudRate
conform cu viteza
setata in casa.
De preferat ca viteza setata in casa sa fie trecuta si in Device Manager la
viteza portului COM
pentru a nu exista discrepante in comunicarea dintre driver si casa de marcat.
Pentru conectarea
prin TCP/IP acest parametru este ignorat. Valoare implicita 115200.
De retinut faptul ca daca echipamentul are setata o viteza mai mica de
57600 exista
probabilitatea ca informatiile trimise sau primite dintre echipament si
driver sa nu fie
receptionate in intregime, ceea ce va rezulta in informatii afisate
eronate sau a
netiparirii bonului fiscal.
Nou
tipEchipament
reprezinta tipul de echipament la care se doreste conectarea.
Acesta este datecs
. Valoarea initiala este datecs.
numarOperator
reprezinta utilizatorul setat in casa de marcat.
Echipamentul fiscal
este programat initial cu numarul de operator 1.
parolaOperator
reprezinta parola utilizatorului setat in casa de
marcat.
Echipamentul fiscal este programat initial cu parola de operator 0001.
connTimeout
reprezinta timpul de asteptare in secunde al driverului
pana cand primeste un raspuns de la echipament. Valoare initiala este de 30
de secunde.
b) Sectiunea rulare:
Driverul are doua modalitati de rulare: rezident si nerezident. Pentru a
rula in
modul rezident
este nevoie sa treceti valoarea true la optiunea rezident
.
In modul rezident
driverul monitorizeaza daca in directorul specificat in optiunea
directorBonuri
exista fisiere de bon noi si pe masura ce acestea sunt adaugate in acest
director driverul le
prelucreaza pe fiecare in parte.
In cazul in care se doreste ca driverul sa lucreze in modul nerezident atunci
acesta asteapta in
momentul in care este lansat numele fisierului de bon dorit pentru tiparire, ca
si exemplu
lansarea in modul nerezident se face sub forma dxprint.exe
<bon.inp>
, <bon.inp>
putand fi un fisier din directorul driverului sau daca este situat in alt
director atunci
apelarea lui se va face prin cale absoluta si anume dxprint.exe
c:\bon.inp
.
Toate optiunile de mai jos sunt valabile doar atunci cand driverul ruleaza in modul rezident (FTP , HTTP) sau in modul embedded (doar HTTP).
ftpServer
reprezinta adresa de conectare a serverului FTP la
care
driverul se
conecteaza pentru a putea prelua bonurile generate in directorul specificat prin
optiunea
ftpDirectorBonuri
. Adresa de conectare trebuie sa fie trecuta sub
forma ip:port
sau hostname:port
. Daca portul de conectare este cel standard 21
atunci adresa de
conectare poate fi trecuta si fara port.
ftpUtilizator
reprezinta utilizatorul pentru conectarea
la serverul
FTP. In cazul
in care serverul permite si conectare Anonymous este obligatoriu sa se specifice
numele de
utilizator ca fiind Anonymous iar la parola trebuie completat orice.
ftpParola
reprezinta parola utilizatorului de server FTP. In
cazul
in care serverul permite si conectare Anonymous este obligatoriu ca acest camp
sa fie completat.
ftpDirectorBonuri
reprezinta directorul din cadrul
serverului FTP
de unde vor fi
extrase bonurile fiscale. Ex: bonuri/generate
, bonuri
.
Driverul va
incerca sa schimbe in momentul conectarii directorul in cel specificat aici.
ftpIntervalVerificareInSecunde
reprezinta intervalul in secunde de
verificare a
bonurilor noi in directorul specificat din cadrul serverului FTP. Valoare minima
60 de secunde.
Pentru mai multe informatii referitoare la modul de lucru cu un director de pe un server FTP gasiti in sectiunea Printare bonuri din director FTP.
httpServerActiv
reprezinta optiunea prin care daca este
true
se va porni un
web server pe portul ales in optiunea httpPort
prin care se pot
printa bonurile
direct printr-un apel POST catre endpointul /bonuri.
httpPort
reprezinta optiunea se poate seta portul pentru serverul
HTTP.
Acest port trebuie sa fie cuprins intre 1024 - 65535.
httpUtilizator
reprezinta numele de utilizator dorit
pentru
protejarea serverului
web prin autentificare de tip Basic Auth.
httpParola
reprezinta parola de utilizator dorit pentru
protejarea
serverului
web. Doar in momentul in care utilizatorul si parola sunt specificate
autentificarea va fi
activa.
httpPermiteListareDirBonuri
reprezinta
optiunea prin care daca este
true
se va putea accesa din interfata web al driverului disponibila
din browser la
adresa http://IP:port
, directoarele de bonuri executate si de
bonuri raspuns
specificate in configuratia driverului.
embedded
reprezinta optiunea prin care daca este
true
se vor putea trimite apeluri web atat pentru vanzare cat si
pentru rapoartele zilnice printr-un webservice HTTP REST JSON. Adresa ip de
lansare al webservice-ului
depinde strict de optiunea httpServerActiv
, si daca aceasta este
activa atunci adresa de ip la care va putea fi accesat va fi adresa de retea
de forma 192.168.1.x, iar daca aceasta este inactiva atunci serviciul web se va
deschide pe adresa de ip 127.0.0.1, iar portul in ambele cazuri se va citi din
optiunea httpPort
. Si in acest mod protejarea webservice-ului se
poate face prin user si parola specificate in optiunile de mai sus.
Pentru mai multe informatii referitoare la modul de integrare cu aplicatii prin websevice JSON gasiti in sectiunea Integrare cu aplicatii prin serviciu web JSON
corsActiv
reprezinta optiunea prin care daca este
true
se vor putea trimite apeluri web din javascript chiar daca requestul
nu este de pe acelasi domain. Afla mai multe despre CORS.
Aceasta optiune este valabila doar atunci cand optiunea embedded
este
activa.
Serverul va trimite urmatoarele headere catre client atunci cand aceasta optiune
este activa:
- Access-Control-Allow-Origin: *
- Access-Control-Allow-Methods: OPTIONS,GET,POST,PUT,DELETE,HEAD
- Access-Control-Allow-Headers: X-Requested-With, Content-Type, Authorization,
Origin,
Accept
logLevel
reprezinta nivelul de logare afisat in consola si in fisierul de
log.
Variantele posibile sunt: DEBUG, INFO sau ERROR.
c) Sectiunea general:
Aceasta sectiune contine variabilele generale de folosire a driverului, ele fiind valabile pentru ambele modurile de rulare (rezident/nerezident).
directorBonuriExecutate
reprezinta directorul in care vor fi
copiate bonurile
executate. Bonul copiat aici nu va contine informatiile de raspuns. Acesta poate
avea cale
relativa de forma "executate"
si asta inseamna ca se va crea un
director cu numele
de executate in directorul unde se afla driverul dxprint.exe, sau cale absoluta
de forma
"c:\\executate"
, si asta inseamna ca bonul va fi copiat in
directorul c:\executate.
De retinut faptul ca pentru calea absoluta este necesara trecerea unui \
suplimentar, de
forma c:\\
in loc de c:\
.
directorBonuriRaspuns
reprezinta directorul in care vor fi generate
fisierele de
raspuns ale bonurilor executate.
Acesta poate avea cale relativa de forma "raspuns"
si asta inseamna
ca se va crea
un director cu numele de raspuns in directorul unde se afla driverul
dxprint.exe, sau cale
absoluta de forma "c:\\raspuns"
, si asta inseamna ca fisierul va fi
generat in
directorul c:\raspuns. De retinut faptul ca pentru calea absoluta este necesara
trecerea unui
\ suplimentar, de forma c:\\
in loc de c:\
.
Fisierul de raspuns
contine informatiile de raspuns exact ca Fprint cu coduri de eroare Er, Ok, Sd
si suplimentar
la sfarsitul fiecarui rand in cazul in care unul din randuri nu este valid se va
trece si
motivul
pentru care bonul a fost respins. Suplimentar in cazul in care avem situatii de
Lipsa hartie sau
Raport Z neefectuat, se va trece pe ultimul rand din fisier acest mesaj de
eroare.
generareFisierCuNrBonFiscal
reprezinta optiunea prin care daca este
true
atunci
in directorul de directorBonuriRaspuns
se va genera suplimentar pe
langa fisierul
de raspuns si un fisier cu extensia .nrb care contine informatii legate de
respectivul bon, cum
ar fi numarul bonului, numarul Z-ului, numele fisierului si data de executie :
OK;Z=38|NR=503|UNIQUE_ID=bon.txt|2018_07_09_17_00_04_312
. De
retinut faptul ca
acest fisier este generat doar atunci cand bonul a fost executat cu succes.
Valoare implicita
true.
directorRapoarteAnaf
reprezinta directorul in care
vor fi extrase
fisierele in
format XML/P7B din echipamentul fiscal, necesare pentru rapoartarea ANAF.
Acesta poate avea cale relativa de forma "anaf"
si asta inseamna ca
se va crea
un director cu numele de "anaf"
in directorul unde se afla driverul
dxprint.exe,
sau cale
absoluta de forma "c:\\anaf"
, si asta inseamna ca fisierul va fi
generat in
directorul c:\anaf. De retinut faptul ca pentru calea absoluta este necesara
trecerea unui
\ suplimentar, de forma c:\\
in loc de c:\
.
Suplimentar
driverul in momentul executiei rapoartelor de extragere a fisierelor pentru anaf
va genera cate
un subdirector pentru fiecare tip de raport. Pentru tipul de raport de extragere
pe baza
numarului Z va genera un director cu numele Z10-20
care reprezinta
practic numerele
Z de inceput - sfarsit trimise in linia de comanda. Pentru tipul de raport de
extragere pe baza
intervalului de timp va genera un director cu numele 09-2018
care
repezinta luna -
an, informatii extrase din data de pornire trimisa in linia de comanda.
extensieFisierBon
reprezinta lista de extensii de fisier bon pe
care driverul le
prelucreaza. Acestea pot fi trecute cu virgula una dupa alta sub forma
inp,bon,txt
si asta inseamna ca driverul va prelucra doar acele fisiere de bon care au
extensia .inp, .bon
sau .txt. Daca un fisier de bon nu are extensia trecuta in aceasta optiune va fi
ignorat atat in
modul rezident cat si in modul nerezident. Valoare implicita inp,bon.
intervalPastrareBonuriInDirector
reprezinta numarul maxim de zile
prin care un
fisier din directoarele definite in directorBonuriExecutate
si
directorBonuriRaspuns
este pastrat. Toate fisierele care sunt mai
vechi de numarul
de zile specificat in aceasta optiune vor fi sterse automat la pornirea
driverului. Numarul de
zile maxim permis este 30. Valoare implicita 7 zile.
tiparesteRaportZAutomat
reprezinta optiunea
prin care daca este
true
in momentul in care se doreste tiparirea unui bon fiscal si au trecut mai mult
de 24 de ore se
va tipari mai intai raportul Z urmat apoi de bonul fiscal dorit pentru tiparire
initial. Valoare
implicita true.
raspundeCuNrEroareInFisierRaspuns
reprezinta optiunea prin care
daca este
true in momentul in care o comanda dintr-un bon fiscal intampina o eroare
in executie se
va inregistra respectiva eroare in fisierul raspuns al bonului si va fi trecuta
sub forma
Er-111024. Pentru integrare aveti nevoie de intreaga lista de erori ce poate fi
descarcata de
aici. Valoare
implicita false.
transformaCifDinTextPublicitarInFactura
reprezinta optiunea prin
care se poate
printa codul fiscal in formatul nou cerut de legislatie chiar daca acesta a fost
trimis prin
text publicitar si anume comanda P. Ca si exemplu, daca aplicatia va
genereaza in
acest moment urmatoarea comanda: P,1,______,_,__;CUI client:
RO123456789;;;;;
veti putea trece in aceasta optiune exact textul CUI client:
iar in
momentul in
care se prevalideaza bonul driverul va sti sa extraga codul fiscal si sa-l
printeze
in formatul nou. Continutul optiunii este case insensitive.
trimiteRaportZPeEmail
reprezinta optiunea prin
care se poate
trimite email cu
raportul Z in momentul in care acesta este lansat si va fi trimis catre adresele
de email
specificate in aceasta optiune. Pot fi trecute mai multe adrese de email cu
virgula una dupa
alta. Ca si exemplu: suport@dxprint.ro,test@test.com
.
Apelul de trimitere raport Z pe email este apel HTTP POST catre
webservice-ul https://www.dxprint.ro, iar acesta dupa validare continut primit va
trimite email mai departe cu informatiile primite de la driver.
De retinut faptul ca aceste informatii sunt trimise in mod securizat, nu sunt
stocate pe serverele noastre sau pe serverele Amazon. Firma noastra foloseste
serviciile Amazon AWS pentru trimiterea tuturor email-urilor.
prevalidareValoareBon
reprezinta optiunea prin care daca este activata
bonul nu
se trimite catre echipament decat atunci cand sumele sunt validate. Avand aceasta
optiune
activa sansele ca bonul sa ramana deschis ca nu s-au trimis sumele de total plata
corect
sunt minime. Valoare implicita false.
ziDinLunaPentruExtragereAutomataFisiereXml
reprezinta ziua din luna in care
se va incerca exportul fisierelor XML din luna precedenta si trimiterea lor catre o
adresa de email daca optiunea trimiteFisiereXmlPeEmail
este completata cu
cel putin o adresa de email. Exportul se face indiferent daca optiunea
trimiteFisiereXmlPeEmail
este completata sau nu. Valoarea acestei optiuni
poate fi intre 0 si 20. Valoarea 0 inseamna ca aceasta optiune este dezactivata.
Intervalul 1 - 20 reprezinta zilele din luna in care se va putea face exportul automat.
In momentul in care optiunea este activa iar exportul de fisiere XML se va lansa,
aceasta procedura va genera in directorul definit in optiunea
directorRapoarteAnaf
o arhiva de forma luna-an.zip,(Ex: 04-19.zip). De
retinut
faptul ca daca avem data de 5 aleasa ca data de export automat a
fisierelor XML iar in data de 5 a lunii nu se deschide casa din varii motive driverul va
incerca in urmatoarele 2 zile adica pe data de 6 si pe data de 7 acelasi lucru de export
automat. In cazul in care pe data de 5 fisierele XML au fost extrase si arhiva a fost
creata atunci driverul nu va mai incerca aceasta procedura de export in urmatoarele 2
zile.
Valoare implicita 0.
trimiteFisiereXmlPeEmail
reprezinta optiunea prin care fisierele XML
exportate automat din echipamentul fiscal se pot trimite catre adresa sau adresele de
email specificate in aceasta optiune. Este necesar ca optiunea
ziDinLunaPentruExtragereAutomataFisiereXml
sa fie activa. Pot fi trecute
mai multe adrese de email cu virgula una dupa alta. Ca si exemplu:
suport@dxprint.ro,test@test.com
.
Apelul de trimitere fisiere XML pe email este apel HTTP POST catre
webservice-ul https://www.dxprint.ro, iar acesta dupa validare continut primit va
trimite email mai departe cu informatiile primite de la driver.
De retinut faptul ca aceste informatii sunt trimise in mod securizat, nu sunt
stocate pe serverele noastre sau pe serverele Amazon. Firma noastra foloseste
serviciile Amazon AWS pentru trimiterea tuturor email-urilor.
httpProxy
reprezinta serverul proxy folosit pentru cele 2 servicii
disponibile in driver de trimitere raport Z pe email si de trimitere fisiere XML
generate automat din echipament fiscal pe email. De obicei se
foloseste atunci cand calculatorul de client unde este instalat driverul are accesul la
internet restrictionat de obicei printr-un proxy. Formatul adresei de proxy
este (http|https)://(hostname:ip):port
.
Apelurile de trimitere raport Z/fisiere XML pe email sunt apeluri http POST catre
webservice-ul https://www.dxprint.ro.
tiparesteRaportPluInainteDeRaportZ
reprezinta optiunea prin care daca este
activata se va tipari raportul de produse Z PLU inainte de raportul Z.
Valoare implicita false.
nrMaximRapoarteZNetrimise
reprezinta numarul de rapoarte Z nesincronizate
cu serverul ANAF. In cazul in care numarul de rapoarte Z nesincronizate depaseste
aceasta optiune driverul se va opri din executie. Daca optiunea este 0 inseamna ca
aceasta
verificare nu se va face.
Valoare implicita 0.
nrMaximRapoarteZNetrimiseNotificare
reprezinta numarul de rapoarte Z
nesincronizate cu serverul ANAF care vor genera o notificare pe email. Daca numarul de
rapoarte Z nesincronizate depasteste aceasta optiune se va genera o notificare pe email
prin care se transmite ca exista un nr de x rapoarte Z nesincronizate.
Aceasta notificare va folosi adresele de email definite in optiunea trimiteRaportZPeEmail.
Aceasta notificare va fi trimisa doar daca driverul ruleaza in modul embedded sau
rezident.
Daca optiunea este 0 inseamna ca aceasta verificare nu se va face.
Valoare implicita 0.
Nou
mapareModalitatiPlata
reprezinta optiunea prin care se pot remapa
modalitatile de plata in momentul in care este tiparit bonul fiscal. Aceasta remapare
ofera o compatibilitate mai mare cu aplicatiile existente.
d) Sectiunea licenta:
Reprezinta licenta de functionare a driverului. Fara aceasta licenta nu se pot
trimite comenzi
catre echipamentul fiscal. Este important ca licenta de functionare sa fie
trecuta pe o singura
linie in locul textului Cumpara licenta de pe www.dxprint.ro, si sa
contina inclusiv cele 2 egaluri de la sfarsitul acesteia.
Va puteti genera licenta de teste sau de integrare direct din contul de
client.
Licenta de teste are o valabilitate de 14 zile. Daca nu va este suficient
acest interval de timp solicitati o licenta noua de test direct pe adresa
de email suport@dxprint.ro.
e) Sectiunea versiune:
Reprezinta versiunea de configuratie pentru driverul de comunicatie, este recomandat sa nu se modifice aceasta valoare.
Printare bonuri din director FTP
In momentul in care driverul ruleaza in mod rezident iar optiunile din cadrul
sectiunii ftp sunt
completate atunci acesta va porni un ticker care o data la intervalul specificat
va incerca sa
se conecteze pe serverul FTP in directorul specificat si de acolo sa extraga
toate fisierele de
comenzi bon care au extensia permisa in lista de extensii din optiunea
extensieFisierBon
. Trebuie specificat faptul ca verificarea se va
face doar dupa
prima extensie, si deci in cazul in care in optiune avem specificate 2 sau mai
multe extensii
sub forma inp,bon,txt
atunci driverul va extrage doar fisierele
care au
extensia .inp
. In cazul in care nu exista extensii specificate
driverul va extrage
fisierele care vor avea extensia .inp
.
In momentul in care in directorul FTP exista fisiere, pentru fiecare fisier se
va incerca
descarcarea acestuia si copierea intr-un fisier cu acelasi nume doar ca i se va
mai alipi si
_FTP_datetime
. In felul acesta in directorul bonurilor executate si
a celor de
raspuns se vor putea identifica rapid fisierele care au venit dintr-un folder
FTP. Dupa ce
fisierul a fost creat si salvat in directorul de bonuri al modului rezident
specificat prin
optiunea directorBonuri
fisierul original din directorul FTP va fi
sters.
Dupa executia bonului acesta va fi copiat in directoarele de bonuri executate si bonuri raspuns iar fisierul de raspuns va contine si data de executie pe langa data de preluare din directorul FTP.
Este recomandat ca intervalul de verificare sa fie unul realist si anume sa fie raportat la numarul de bonuri generate in respectiva perioada. Durata de tiparire a unui bon depinde de numarul de comenzi existente in acesta.
De specificat faptul ca driverul poate fi folosit in acelasi timp si pentru o aplicatie de vanzare locala care genereaza bonurile in acelasi director de bonuri. Faptul ca sunt extrase bonurile dintr-un director FTP nu incurca cu nimic functionarea locala a driverului. In plus se poate folosi in acelasi timp inclusiv cu primirea bonurilor prin protocol HTTP.
Printare bonuri prin web server/HTTP
In momentul in care driverul ruleaza in mod rezident iar optiunea
httpServerActiv
este activa atunci acesta va porni un server web prin care poate primi comenzi
direct prin
protocolul HTTP.
Serverul web creat va avea adresa formata din adresa de IP al calculatorului de
pe care se
ruleaza driverul si portul specificat in optiunea httpPort
. Ca si
exemplu daca
calculatorul de pe care rulati driverul are ip-ul 192.168.1.23, iar portul ales
de dumneavoastra
este 8080, puteti accesa interfata web al driverului direct din browser prin
apelarea adresei
http://192.168.1.23:8080
.
De retinut faptul ca exista o probabilitate foarte mare ca sistemul de operare sa va solicite permisiunea de a accepta conexiuni pe portul specificat de dumneavoastra. Este recomandat sa permiteti acest lucru pentru a putea folosi aceasta functionalitate. Trebuie specificat faptul ca serverul creat nu este unul securizat prin certificat SSL, el fiind gandit pentru retele interne cu mai mult de 2 calculatoare si cu o singur echipament fiscal.
Pentru exemplele de mai jos vom folosi adresa serverului ca fiind
http://192.168.1.23:8080
pentru a fi mai simplu in exemplificare.
Dar trebuie tinut
cont de faptul ca adresa dumneavoastra de IP mai mult ca sigur va fi diferita.
Adresa de IP o puteti afla dupa cum urmeaza:
Wndows: Din Command Prompt apeland comanda ipconfig si in
rezultat trebuie sa
va uitati
dupa sectiunea IPv4 Address.
Linux, Mac: Din Terminal apeland comanda ifconfig si la fel in
rezultat
trebuie sa se
verifice sectiunea inet din cadrul eth0, sau en0 in functie de cate placi de
retea aveti
instalate.
Dupa pornirea driverului cu serverul de http activat puteti verifica ca acesta
functioneaza
apeland interfata web al driverului direct din browser la adresa
http://192.168.1.23:8080. In
pagina afisata o sa aveti toate detaliile pentru a putea printa un bon de pe alt
calculator
din retea sau din alta parte inclusiv sa accesati directoarele de bonuri
executate si bonuri
raspuns daca optiunea httpPermiteListareDirBonuri
este activa.
Pentru a putea un bon prin HTTP aveti nevoie sa trimiteti un apel de tip POST
catre adresa
http://192.168.1.23:8080 iar continutul body-ului trebuie sa fie liniile de
comanda din fisierul
de bon. Daca se doreste specificarea numelui de bon aceasta informatie se poate
trimite
printr-un query param cu numele nume
.
Ca si exemplu avem un bon cu numele specificat bon.inp
care contine
un produs cu
discount de 10% trimite printr-un apel http:
POST http://192.168.1.23:8080/bonuri?nume=bon.inp HTTP/1.1
Content-Type: text/plain; charset=utf-8
Content-Length: 200
S,1,______,_,__;Produs cu denumire 1;10.00;1.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
W,1,______,_,__;ic;Reducere client fidelizare: 10%;
W,1,______,_,__;ic;Va multumim!;
T,1,______,_,__;0;;;;;
In cazul in care aveti si autentificarea activata va trebuie sa trimiteti apelul cu headerul Authorization ca in exemplu de mai jos. Autentificarea este de tip Basic Auth.
POST http://192.168.1.23:8080/bonuri?nume=bon.inp HTTP/1.1
Content-Type: text/plain; charset=utf-8
Authorization: Basic dXNlcjpwYXJvbGE=
Content-Length: 200
S,1,______,_,__;Produs cu denumire 1;10.00;1.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
W,1,______,_,__;ic;Reducere client fidelizare: 10%;
W,1,______,_,__;ic;Va multumim!;
T,1,______,_,__;0;;;;;
Ca si raspuns la apelul de mai sus se va intoarce numele de fisier generat
pentru tiparire. In
aceasta versiune de driver nu exista validare direct in webserver. Comenzile
trimise in body
sunt trimise catre driver si pe baza lor se va construi un fisier de bon care va
fi copiat
in directorul de bonuri specificat prin optiunea directorBonuri
si
executat ca
orice alt bon.
Un raspuns la bonul trimis prin http mai sus va contine in body numele
fisierului generat de
catre server/driver si trimis catre echipamentul fiscal. Totodata la numele
bonului primit va fi
alipit si _HTTP_ip_client_port_client_datetime
pentru a se putea
identifica rapid
in fisierele executate sau de raspuns exact de la ce calculator a fost primit,
prin ce protocol
si la ce data si ora. In cazul exemplulu de mai jos bonul a fost primit de la
calculatorul cu ip
192.168.1.50 in data de 12.09.2018 la ora 13:20:36.
HTTP/1.1 200 OK
Content-Type: text/html
Date: Tue, 11 Sep 2018 10:20:36 GMT
Content-Length: 52
bon_inp_HTTP_192_168_1_50_59936_2018_09_12_13_20_36_124.inp
Daca aveti nevoie de ajutor in implementarea unui client http necesar pentru aceasta procedura va rugam sa ne contactati la adresa de email suport@dxprint.ro.
De specificat faptul ca driverul poate fi folosit in acelasi timp si pentru o aplicatie de vanzare locala care genereaza bonurile in acelasi director de bonuri. Faptul ca sunt primite bonuri si prin protocolul HTTP nu incurca cu nimic functionarea locala a driverului. In plus se poate folosi in acelasi timp inclusiv cu extragerea bonurilor din director FTP.
Integrare cu aplicatii prin web service JSON Nou
Aceasta modalitate de integrare poate fi folosita doar atunci cand driverul ruleaza
in
modul
embedded
. Pe scurt in modul embedded (sau modul de integrare) este
deschis
un
webserver http intern (127.0.0.1) daca optiunea httpServerActiv
este
inactiva
sau local (192.168.1.x) daca optiunea httpServerActiv
este activa in
setari.
Portul acestui webserver este la fel preluat din optiunea httpPort
.
Pentru a putea folosi acest mod este nevoie sa aveti un client http care este
capabil sa
trimita cereri cu content type application/json catre webserverul intern sau local.
In
modul
de lucru embedded intern adica pe 127.0.0.1, webserverul nu poate fi accesat de
niciun
echipament din retea, doar calculatorul care ruleaza driverul are acces la acest
webserver.
Acesta este si lucru recomandat pentru acest mod embedded
.
Ca masura de precautie atunci cand se ruleaza in mod local, puteti stabili un user si
o
parola
de http prin optiunile httpUtilizator
si httpParola
.
Webserverul expune un numar de 15 endpoint-uri JSON necesare pentru a putea comunica
prin
acest mod cu echipamentul fiscal.
Toate erorile intoarse de acest webservice sunt de tipul Error
, obiect
detaliat
in lista de obiecte folosite de webservice.
Acest endpoint trimite catre echipamentul fiscal un bon fiscal/nefiscal.
Metoda | Cale URI | Continut Body | Resp. Success | Resp. Error | Descriere |
---|---|---|---|---|---|
POST | /receipts | Obiect SaleReceipt |
{ "statusCode": 200, "success": true, "content": { "numarBonCurent": "367", "numarRaportZ": "15", "numarTotalBonuriZ": "1" } } |
Obiect Error | Trimite un bon fiscal/nefiscal catre echipamentul fiscal. |
POST | /drawer/open | - |
{ "statusCode": 200, "success": true } |
Obiect Error | Trimite o comanda de deschidere sertar daca acesta este conectat la echipamentul fiscal. |
GET | /receipts/status | - |
{ "statusCode": 200, "success": true, "content": { "currentReceiptNumber": 705, "currentZNumber": 37, "receiptTotalCount": 2, "zReportBlockDatetime": "14-09-19 13:07:50 DST", "isReceiptIssuedAfterZReport": true } } |
Obiect Error | Extrage informatiile cu privire la situatia bonurilor fiscale emise de echipamentul fiscal. |
GET | /receipts/header | - |
{ "statusCode": 200, "success": true, "content": [ { "index": 0, "text": "GESTIONAR.RO SERVICES SRL" }, { "index": 1, "text": "JUDETUL ILFOV, COMUNA STEFANESTII DE JOS" }, { "index": 2, "text": "STR. LIBERTATII NR.4" } ] } |
Obiect Error | Extrage liniile de antet de bon setate in echipamentul fiscal si tiparite pe fiecare bon fiscal. |
GET | /receipts/footer | - |
{ "statusCode": 200, "success": true, "content": [ { "index": 0, "text": "Va multumim!" } ] } |
Obiect Error | Extrage liniile de subsol de bon setate in echipamentul fiscal si tiparite pe fiecare bon fiscal. |
POST | /customer/display | List<CustomerDisplayMessage> |
{ "statusCode": 200, "success": true } |
Obiect Error | Trimite mesaje catre displayul extern atasat de echipamentul fiscal. |
Observatii:
Daca metoda http folosita nu este de tipul specificat in dreptul fiecarui endpoint atunci se va primi un status code de 405 - Method Not Allowed.
Acest endpoint solicita din echipamentul fiscal lista cotelor de tva si a unitatilor de masura inregistrate.
Metoda | Cale URI | Resp. Success | Resp. Error | Descriere |
---|---|---|---|---|
GET | /vats |
{ "statusCode": 200, "success": true, "content": [ { "index": 1, "value": 19 }, { "index": 2, "value": 9 }, { "index": 3, "value": 5 }, { "index": 4, "value": 0 }, { "index": 5, "value": 0 }, { "index": 6, "value": 100.01 }, { "index": 7, "value": 100 } ] } |
Obiect Error | Extrage lista cotelor de tva (index + valoare) din echipamentul fiscal. |
GET | /units |
{ "statusCode": 200, "success": true, "content": [ { "index": 1, "value": "BUC" }, { "index": 2, "value": "KG" }, { "index": 3, "value": "GR" }, { "index": 4, "value": "L" }, { "index": 5, "value": "ML" }, { "index": 6, "value": "M" }, { "index": 7, "value": "MP" }, { "index": 8, "value": "SET" }, { "index": 9, "value": "BAX" }, { "index": 10, "value": "POR" } ] } |
Obiect Error | Extrage lista unitatilor de masura (index + valoare) din echipamentul fiscal. |
Observatii:
Daca metoda de http folosita nu este de tip GET atunci se va primi un status code de 405 - Method Not Allowed.
Acest endpoint poate depune/retrage numerar din echipamentul fiscal.
Metoda | Cale URI | Resp. Success | Resp. Error | Descriere |
---|---|---|---|---|
POST | /money/deposit?amount=:amount |
{ "statusCode": 200, "success": true, "content": { "cashSum": 40.81, "cashIn": 56.26, "cashOut": -32.45 } } |
Obiect Error | Depune o suma de bani specificata prin parametrul
amount care este de tip Decimal si trebuie sa fie mai mare sau egala cu 0. Daca suma de bani este 0 atunci echipamentul nu va printa nimic si se vor intoarce valorile existente din acel moment in echipamentul fiscal. |
POST | /money/withdraw?amount=:amount |
{ "statusCode": 200, "success": true, "content": { "cashSum": 40.81, "cashIn": 56.26, "cashOut": -32.45 } } |
Obiect Error | Retrage o suma de bani specificata prin parametrul
amount care este de tip Decimal si trebuie sa fie mai mare sau egal cu 0. Daca suma de bani este 0 atunci echipamentul nu va printa nimic si se vor intoarce valorile existente din acel moment in echipamentul fiscal. |
Observatii:
Daca metoda de http folosita nu este de tip POST atunci se va primi un status code de 405 - Method Not Allowed.
Acest endpoint poate extrage o serie de rapoarte din echipamentul fiscal.
Metoda | Cale URI | Resp. Success | Resp. Error | Descriere |
---|---|---|---|---|
POST | /reports/x |
{ "statusCode": 200, "success": true } |
Obiect Error | Tipareste un raport X. |
POST | /reports/z |
{ "statusCode": 200, "success": true } |
Obiect Error | Tipareste un raport Z. |
POST | /reports/ecr |
{ "statusCode": 200, "success": true } |
Obiect Error | Tipareste un raport ECR. |
POST | /reports/departments |
{ "statusCode": 200, "success": true } |
Obiect Error | Tipareste un raport pe departamente. |
POST | /reports/items/groups |
{ "statusCode": 200, "success": true } |
Obiect Error | Tipareste un raport pe grupe de produse. |
POST | /reports/plu |
{ "statusCode": 200, "success": true } |
Obiect Error | Tipareste un raport Z pe articole (PLU). |
POST | /reports/operators |
{ "statusCode": 200, "success": true } |
Obiect Error | Tipareste un raport X pe operatori. |
POST |
/reports/detailed/z?from=:from &to=:to
|
{ "statusCode": 200, "success": true } |
Obiect Error | Tipareste un raport detaliat pe numere Z. Parametrii from si to sunt de tip
Integermai mari sau egali cu 0. |
POST |
/reports/summary/z?from=:from &to=:to
|
{ "statusCode": 200, "success": true } |
Obiect Error | Tipareste un raport sumar pe numere Z. Parametrii from si to sunt de tip
Integermai mari sau egali cu 0. |
POST |
/reports/detailed/date?from=:from &to=:to
|
{ "statusCode": 200, "success": true } |
Obiect Error | Tipareste un raport detaliat pe interval de timp. Parametrii from si to sunt de tip
Datecu formatul ZI-LUNA-AN (scurt), ex: 31-12-19. |
POST |
/reports/summary/date?from=:from &to=:to
|
{ "statusCode": 200, "success": true } |
Obiect Error | Tipareste un raport sumar pe interval de timp. Parametrii from si to sunt de tip
Datecu formatul ZI-LUNA-AN (scurt), ex: 31-12-19. |
POST |
/reports/fmz?from=:from &to=:to &sumar=:sumar
|
{ "statusCode": 200, "success": true, "content": [ "linie 1 raport", "linie 2 raport" ] } |
Obiect Error | Listeaza rapoartele Z din memoria fiscala pe interval de timp specificat. Parametrii: from - parametru obligatoriu de tip Date format ZI-LUNA-AN (scurt). Ex: 31-12-23, pentru 31 Decembrie 2023,to - parametru obligatoriu de tip Date format ZI-LUNA-AN (scurt). Ex: 31-12-23, pentru 31 Decembrie 2023,sumar - parametru optional de tip Boolean. Posibile valori: true sau false. Folosit pentru a returna raportul Z in format detaliat sau sumar. |
POST |
/reports/fmd?from=:from &to=:to &tip_actiune=:tip_actiune &tip_actiune=:tip_document
|
{ "statusCode": 200, "success": true, "content": [ { "numarZ": "22", "numarBonFiscal": "1023", "dataRaportZ": "13-08-23 23:59:59 DST", "continutDocument": [ "linie 1 raport", "linie 2 raport" ] }, { "numarZ": "22", "numarBonFiscal": "1024", "dataRaportZ": "20-08-23 12:09:08 DST", "continutDocument": [ "linie 1 raport", "linie 2 raport" ] }, ] } |
Obiect Error | Listeaza raport Z sau bon fiscal din memoria fiscala din intervalul de timp specificat. Parametrii: from - parametru obligatoriu de tip Datetime format dd-MM-YYTHH:mm:ss. Ex: 01-08-23T00:00:00, pentru 1 August 2023 ora 00:00:00,to - parametru obligatoriu de tip Datetime format dd-MM-YYTHH:mm:ss. Ex: 31-08-23T23:59:59, pentru 31 August 2023 ora 23:59:59,tip_actiune - parametru obligatoriu de tip string. Posibile valori: listare sau tiparire.tip_document - parametru optional de tip string. Posibile valori: raportz sau bonfiscal. |
POST |
/reports/fmd/bynumber?z=:z &bf=:bf &tip_actiune=:tip_actiune
|
{ "statusCode": 200, "success": true, "content": { "numarZ": "22", "numarBonFiscal": "1023", "dataRaportZ": "13-08-23 23:59:59 DST", "continutDocument": [ "linie 1 raport", "linie 2 raport" ] } } |
Obiect Error | Listeaza raport Z sau bon fiscal din memoria fiscala din intervalul de timp specificat. Parametrii: z - parametru obligatoriu de tip integer. Reprezinta numarul Z dorit pentru listare/tiparire.bf - parametru optional de tip integer. Reprezinta numarul de bon fiscal pentru listare/tiparire.tip_actiune - parametru obligatoriu de tip string. Posibile valori: listare sau tiparire.* Daca parametrul bf nu este specificat atunci raportul listat/tiparit va fi cel de raport Z. Daca parametrul
este specificat atunci raportul listat/tiparit va fi cel de bon fiscal reprezentat prin combinatia de numar Z si numar bon
fiscal asa cum sunt tiparite si pe bonul fiscal.
|
Observatii:
Daca metoda de http folosita nu este de tip POST atunci se va primi un status code de 405 - Method Not Allowed.
Acest endpoint extrage informatiile despre starea echipamentului fiscal.
Metoda | Cale URI | Resp. Success | Resp. Error | Descriere |
---|---|---|---|---|
GET | /status |
{ "statusCode": 200, "success": true, "content": { "name": "DP-150", "serialNumber": "DB4XXXXXXXXX", "firmwareRevision": "410434", "firmwareDate": "14Feb18", "currentDate": "13-09-19 13:13:13", "isZReportRequired": true, "isFiscalized": true, "isResident": false, "isEmbedded": true, "ecrMode": "Normal", "logicNumber": 1, "baudRate": "115200", "connInterface": "Auto", "firm": { "serialNumber": "DB4XXXXXXXXX", "fiscalNumber": "1234567890", "cif": "CIF: RO123456789", "headerLineOne": "GESTIONAR.RO SERVICES SRL", "headerLineTwo": "JUDETUL ILFOV, COMUNA STEFANESTII DE JOS", "headerLines": [ { "index": 0, "text": "GESTIONAR.RO SERVICES SRL" }, { "index": 1, "text": "JUDETUL ILFOV, COMUNA STEFANESTII DE JOS" }, { "index": 2, "text": "STR. LIBERTATII NR.4" } ], "footerLines": [ { "index": 0, "text": "Va multumim!" } ] }, "vats": [ { "index": 1, "value": 19 }, { "index": 2, "value": 9 }, { "index": 3, "value": 5 }, { "index": 4, "value": 0 }, { "index": 5, "value": 0 }, { "index": 6, "value": 100.01 }, { "index": 7, "value": 100 } ], "units": [], "isDemoLicence": true, "demoLicenceDetail": { "serie": "DB4XXXXXXXXX", "expirare": "2020-09-13 13:13:13" }, "currentLicence": "Cumpara licenta de pe www.dxprint.ro", "driverVersion": "1.0.14 / 13.09.2019" } } |
Obiect Error | Intoarce informatiile despre echipamentul fiscal si a driverului folosit. |
GET | /status/network |
{ "statusCode": 200, "success": true, "content": { "macAddress": "68AAD2190145", "dhcpActive": true, "ipAddress": "", "netmask": "", "gateway": "", "primaryDns": "", "secondaryDns": "", "lanPort": "3999" } } |
Obiect Error | Intoarce informatiile de retea folosite de echipamentul fiscal. |
GET | /status/lastsync |
{ "statusCode": 200, "success": true, "content": { "lastSyncDate": "2023-04-03T13:58:12Z", "lastSyncZNum": 78, "lastSyncState": "TRIMIS", "lastSyncErrorCode": "0" } } |
Obiect Error | Intoarce informatiile de la ultima sincronizare cu serverele ANAF. |
Observatii:
Daca metoda de http folosita nu este de tip GET atunci se va primi un status code de 405 - Method Not Allowed.
Obiectele folosite pentru comunicare sunt detaliate mai jos:
Nume camp | Tip camp | Valoare initiala | Obligatoriu | JSON |
---|---|---|---|---|
FiscalCode | String | NULL | Nu | fiscalCode |
IsNonFiscalReceipt | Boolean | False | Nu | isNonFiscalReceipt |
Discount | Discount | NULL | Nu | discount |
HeaderComments | List<Comment> | NULL | Nu | headerComments |
Products | List<Product> | NULL | Da | products |
Payments | List<Payment> | NULL | Da | payments |
FooterComments | List<Comment> | NULL | Nu | footerComments |
Barcodes | List<Barcode> | NULL | Nu | barcodes |
Observatii:
Daca campul IsNonFiscalReceipt
este
true atunci bonul va fi considerat nefiscal iar singurele
obiecte
ce vor fi luate in considerare si procesate sunt
FiscalCode
,
HeaderComments
,FooterComments
si
Barcodes
.
Daca campul fiscalCode
este completat iar bonul este
nefiscal
atunci valoarea trimisa in acest camp va fi trecuta pe bon ca un
comentariu centrat si ingrosat.
Exemplu:
Bon fiscal care trimite codul fiscal, dar si o lista de 4 produse, din care primele 2 au un discount procentual aplicat pe ele de 15% si respectiv 25%. Incasarea se face integral prin NUMERAR iar la sfarsit avem 2 comentarii fara niciun stil aplicat.
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Reducere client fidelizare: 10%", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ], "footerComments": [ { "message": "Profita de reduceri in magazin online:", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "barcodes": [ { "barcode": "www.dxprint.ro", "barcodeType": "QRCode" } ] }
Nume camp | Tip camp | Valoare initiala | Obligatoriu | JSON |
---|---|---|---|---|
Name | String | NULL | Da | name |
Quantity | Decimal | NULL | Da | quantity |
Price | Decimal | NULL | Da | price |
Department | Integer | 0 | Nu | department |
Vat | String | NULL | Da | vat |
Unit | String | buc | Nu | unit |
Discount | Discount | NULL | Nu | discount |
IsSubtotalDiscount | Boolean | False | Nu | isSubtotalDiscount |
Comments | List<Comment> | NULL | Nu | comments |
Barcodes | List<Barcode> | NULL | Nu | barcodes |
Observatii:
Campul vat
este de tip String deoarece se poate
trece
in
el atat valoarea cotei de tva 5%, 9%, 19%, dar se poate trece in el
si
indexul cotei din echipament de forma 1, 2, 4, etc.
Daca exista definit discount in cadrul unui produs si campul
IsSubtotalDiscount
este true atunci discountul
se va
comporta ca un discount de subtotal si se va aplica tuturor
produselor
din
lista de produse pana la acest produs inclusiv.
Comentariile trecute in cadrul produsului vor fi comentarii trecute
dupa
produs atunci cand este tiparit bonul fiscal.
Codurile de bara trecute in cadrul produsului se vor tipari dupa
comentarii
daca acestea exista.
Regulile de validare sunt aceleasi ca in cadrul Comenzii
de vanzare.
Exemplu:
Un produs cu comentarii stilizate, cota tva trecuta ca valoare procentuala si discount procentual de 10%.
{ "name": "Produs cu denumire 1", "quantity": 3.000, "price": 15.00, "department": 1, "vat": "19%", "unit": "kg", "comments": [ { "message": "Reducere client fidelizare: 10%", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false }
Nume camp | Tip camp | Valoare initiala | Obligatoriu | JSON |
---|---|---|---|---|
DiscountType | String | NULL | Da | discountType |
Amount | Decimal | NULL | Da | amount |
Observatii:
Campul DiscountType
poate avea urmatoarele valori,
acestea
fiind
case sensitive):
- PercentDiscount
- ValueDiscount
- PercentIncrease
- ValueIncrease
Exemplu:
Discount procentual de 25%.
{ "discountType": "PercentDiscount", "amount": 25 }
Nume camp | Tip camp | Valoare initiala | Obligatoriu | JSON |
---|---|---|---|---|
PaymentType | String | NULL | Da | paymentType |
Amount | Decimal | NULL | Da | amount |
Observatii:
Campul Amount
daca este 0 va fi considerat ca incasare
integrala
pe suma bonului respectiv.
Campul PaymentType
poate avea urmatoarele valori,
acestea
fiind
case sensitive:
- Cash
- Card
- Credit
- MealTicket
- ValueTicket
- Voucher
- Modern
- CardAvansNumerar
- Other
Exemplu:
Incasare multipla cu 25 lei Cash iar restul pe tipul de plata Card.
[ { "paymentType": "Cash", "amount": 25.00 }, { "paymentType": "Card", "amount": 0.00 } ]
Nume camp | Tip camp | Valoare initiala | Obligatoriu | JSON |
---|---|---|---|---|
Message | String | NULL | Da | message |
Bold | Boolean | false | Nu | bold |
Italic | Boolean | false | Nu | italic |
Underline | Boolean | false | Nu | underline |
DoubleSize | Boolean | false | Nu | doubleSize |
Align | Integer | 0 | Nu | align |
Observatii:
Campul Message
poate fi gol dar trebuie sa fie existent.
Daca nu
contine nimic atunci pe bon se va tipari o linie noua.
Campul Align
poate avea urmatoarele valori:
- 0 - Stanga
- 1 - Centru
- 2 - Dreapta
Exemplu:
Comentariu cu stil ingrosat si aliniat centru.
{ "message": "Reducere client fidelizare: 10%", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 }
Nume camp | Tip camp | Valoare initiala | Obligatoriu | JSON |
---|---|---|---|---|
Barcode | String | NULL | Da | barcode |
BarcodeType | String | NULL | Da | barcodeType |
BarcodeSize | Integer | 3 | Nu | barcodeSize |
Observatii:
Campul BarcodeSize
poate avea valori intre 1 si 8 si
este
luata
in considerare doar la tipul de cod de bare QRCode.
Campul BarcodeType
poate avea urmatoarele valori,
acestea
fiind
case sensitive:
- Ean8
- Ean13
- Code128
- QRCode
Exemplu:
O lista cu fiecare tip de cod de bare intr-un singur bon.
[ { "barcode": "90311017", "barcodeType": "Ean8" }, { "barcode": "9780201379624", "barcodeType": "Ean13" }, { "barcode": "codprodus1", "barcodeType": "Code128" }, { "barcode": "www.dxprint.ro", "barcodeType": "QRCode", "barcodeSize": 7 } ]
Nume camp | Tip camp | Valoare initiala | Obligatoriu | JSON |
---|---|---|---|---|
StatusCode | Integer | NULL | Da | statusCode |
Success | Boolean | NULL | Da | success |
ErrorMessages | List<ErrorMessage> | NULL | Da | errorMessages |
Observatii:
Campul Success
specifica daca validarea si executia
bonului
a
decurs cu succes.
Campul StatusCode
este acelasi status intors de
webservice.
Toate apelurile intorc 200 pentru executiile cu succes iar 400
pentru
cele
cu probleme.
Exemplu:
Eroare care reprezinta un produs care are cota de tva specificata incorect.
{ "statusCode": 400, "success": false, "errorMessages": [ { "message": "TVA_INCORECT", "errorCode": "-1005" } ] }
Nume camp | Tip camp | Valoare initiala | Obligatoriu | JSON |
---|---|---|---|---|
Message | String | NULL | Nu | message |
ErrorCode | String | NULL | Da | errorCode |
Observatii:
Campul ErrorCode
reprezinta codul de eroare intors de
echipamentul fiscal. Lista de erori intoarse o puteti gasi aici.
Exemplu:
Eroare pentru o cota de tva specificata incorect.
{ "message": "TVA_INCORECT", "errorCode": "-1005" }
Nume camp | Tip camp | Valoare initiala | Obligatoriu | JSON |
---|---|---|---|---|
Location | Integer | NULL | Da | location |
Message | String | NULL | Nu | message |
Observatii:
Campul Location
reprezinta pozitia textului pe display-ul
extern.
0 - Trimite comanda de curatare a display-ului.
1 - Afiseaza pe prima linie (Top) de display.
2 - Afiseaza pe ultima linie (Bottom) de display.
Campul Message
poate avea intre 1 si 20 de caractere. Daca
location = 0 atunci mesajul nu este obligatoriu.
Exemplu:
Pentru a scrie un text pe prima linie de afisaj extern se face un CLEAR (adica location = 0) si apoi se trimite location = 1 si mesajul dorit.
[ { "location": 0 }, { "location": 1, "message": "Mesaj prima linie" } ]
Licentiere
Pentru a functiona driverul are nevoie de o licenta valida. Aceasta poate fi cumparata online direct de pe site in sectiunea Cumpara licenta, sau de la partenerii nostri. Licentierea se face pe baza seriei de echipament fiscal si se plateste o singura data indiferent daca casa a fost refiscalizata pe alta societate.
Va puteti genera licenta de teste sau de integrare direct din contul de client. Licenta de teste are o valabilitate de 14 zile. Daca nu va este suficient acest interval de timp solicitati o licenta noua de test direct pe adresa de email suport@dxprint.ro.
Comenzi din linia de comanda
Pentru a putea vedea lista de comenzi este nevoie sa rulati driverul din linie de comanda sub forma dxprint.exe -h. In momentul lansarii o sa aveti urmatoarea lista de optiuni:
-X Tipareste raportul X, Ex. dxprint.exe -X
(Windows),
./dxprint
-X
(Linux, MacOS)
-Z Tipareste raportul Z, Ex. dxprint.exe -Z
(Windows),
./dxprint
-Z
(Linux, MacOS)
-D Tipareste raportul zilnic pe departamente, Ex. dxprint.exe
-D
(Windows), ./dxprint
-D
(Linux, MacOS)
-p Tipareste raportul Z pe articole (PLU) Ex.
dxprint.exe -p
(Windows),
./dxprint -p
(Linux, MacOS)
-o Tipareste raportul X pe operatori Ex.
dxprint.exe -o
(Windows),
./dxprint -o
(Linux, MacOS)
-d=<valoare> Depunere de numerar in casa, Ex. dxprint.exe
-d=12.34
(Windows), ./dxprint -d=5
(Linux, MacOS)
-r=<valoare> Retragere de numerar din casa, Ex.
dxprint.exe -r=56
(Windows), ./dxprint -r=45.67
(Linux, MacOS)
-t Afisare data curenta setata pe echipamentul fiscal, Ex.
dxprint.exe
-t
(Windows), ./dxprint -t
(Linux, MacOS)
-c Seteaza data curenta pe echipamentul fiscal pe baza datei din
calculatorul curent,
Ex. dxprint.exe -t
(Windows), ./dxprint -t
(Linux,
MacOS)
-xd=<data_inceput,data_sfarsit> Exporta raportul XML necesar
pentru ANAF dupa
data (format ZI-LUNA-AN_SCURT),
exporta raportul XML pentru intervalul 1 noiembrie 2018 - 1 decembrie 2018.
Aceste fisiere vor
fi salvate in directorul
Ex. dxprint.exe
-xd=01-11-18,01-12-18directorRapoarteAnaf
setat in fisierul de
configurare.
-xz=<Z_inceput,Z_sfarsit> Exporta raportul XML necesar pentru
ANAF dupa
numerele
Z, Ex. dxprint.exe -xz=10,23
exporta raportul XML pentru Z-urile de la 10 la numarul 23. Aceste fisiere vor
fi salvate in directorul directorRapoarteAnaf
setat in fisierul de
configurare.
-xm Exporta raportul XML necesar pentru
ANAF pentru luna precedenta. Aceste fisiere vor
fi salvate in directorul directorRapoarteAnaf
setat in fisierul de
configurare.
-n Tipareste un bon nefiscal de test, Ex. dxprint.exe -n
(Windows),
./dxprint -n
(Linux, MacOS)
-nm Tipareste un bon nefiscal de test cu linii multiple delimitate
prin virgula,
Ex. dxprint.exe -nm="linie1 pentru tiparit,linie2 pentru tiparit"
(Windows),
./dxprint -nm="linie1 pentru tiparit,linie2 pentru tiparit"
(Linux,
MacOS)
-s Tipareste informatiile de echipament (serie, fiscalizare, antet,
cote tva), Ex.
dxprint.exe -s
(Windows),
./dxprint -s
(Linux, MacOS). Aceasta comanda se poate lansa si fara
licenta, ea
fiind special conceputa sa puteti vedea seria de echipament pentru a licentia
driverul si sa
testati ca exista comunicare intre driver si echipament fiscal.
-sn Tipareste informatiile de retea ale echipamentului (mac,adresa
ip, port, gateway,
dhcp), Ex.
dxprint.exe -sn
(Windows),
./dxprint -sn
(Linux, MacOS). Aceasta comanda se poate lansa si
fara licenta, ea
fiind special conceputa sa puteti vedea informatiile de echipament si sa testati
ca exista
comunicare intre driver si echipament fiscal.
-ds trimite comanda de deschidere sertar daca acesta este conectat la echipamentul fiscal.
-tva Salveaza cotele de tva specificate in linia de comanda.
Ex. dxprint.exe -tva=19,9,5,0
- salveaza cotele dupa cum urmeaza, pozitia
1 = 19%, pozitia 2 = 9%, pozitia 3 =
5% si pozitia 4 = 0%,
Ex. dxprint.exe -tva=19,5
- va inregistra pe primele doua pozitii cotele 19
si
respectiv 5 iar pe urmatoarele 2 va inregistra valoarea 0.
-licence Solicita o licenta trial de 14 zile pentru a testa acest driver.
Tot procesul este automatizat si necesita doar conexiune la internet.
Ex. dxprint.exe -licence
-syncstatus Tipareste informatiile ultimei sincronizari cu serverul ANAF,
Ex. dxprint.exe -syncstatus
(Windows),
./dxprint -syncstatus
(Linux, MacOS)
Nou
-fmz Afiseaza rapoartele Z din memoria fiscala.
Ex. dxprint.exe -fmz=01-09-23,01-12-23
(Windows) - Afiseaza rapoartele Z asa cum se regasesc in memoria fiscala in intervalul 1 Septembre 2023 - 1 Decembrie 2023,
./dxprint -fmz=01-09-23,01-12-23
(Linux, MacOS)
Nou
-fmd Afiseaza documentele Z si bonurile fiscale din memoria fiscala a echipamentului.
Ex. dxprint.exe fmd=01-11-23T00:00:00,01-12-23T23:59:59 -{tip_actiune} -{tip_document}
(Windows),
./dxprint fmd=01-11-23T00:00:00,01-12-23T23:59:59 -{tip_actiune} -{tip_document}
(Linux, MacOS)
-{tip_actiune} - {tip_actiune} poate avea una din cele doua valori: listare
sau tiparire
-{tip_document} - {tip_document} poate avea una din cele doua valori: raportz
sau bonfiscal
Pentru a lista toate rapoartele Z din memoria fiscala din intervalul 01.08.2023 - 31.08.2023 trebuie sa lansam comanda:
./dxprint fmd=01-08-23T00:00:00,31-08-23T23:59:59 -listare -raportz
Pentru a lista toate bonurile fiscale din memoria fiscala din intervalul 01.08.2023 - 31.08.2023 trebuie sa lansam comanda:
./dxprint fmd=01-08-23T00:00:00,31-08-23T23:59:59 -listare -bonfiscal
Pentru a tipari aceste rapoarte pe echipamentul fiscal trebuie specificat tipul de actiune sa fie -tiparire
in loc de -listare
.
Formatul datei solicitata de acest raport este dd-MM-YY
THH:mm:ss
. Ex: 01-12-23T23:59:59 reprezinta data de 1 Decembrie 2023 ora 23:59:59.
-v Afiseaza versiunea de driver, Ex. dxprint.exe -v
(Windows),
./dxprint -v
(Linux, MacOS)
Rapoarte XML pentru ANAF
Pentru a exporta rapoartele XML din echipamentul fiscal este nevoie sa rulati driverul din linie de comanda cu urmatoarele optiuni:
-xd=<data_inceput,data_sfarsit> Exporta raportul XML necesar
pentru ANAF dupa
data (format ZI-LUNA-AN_SCURT),
exporta raportul XML pentru intervalul 1 noiembrie 2018 - 1 decembrie 2018.
Aceste fisiere vor
fi salvate in directorul
Ex. dxprint.exe
-xd=01-11-18,01-12-18directorRapoarteAnaf
setat in fisierul de
configurare.
-xz=<Z_inceput,Z_sfarsit> Exporta raportul XML necesar pentru
ANAF dupa
numerele
Z, Ex. dxprint.exe -xz=10,23
exporta raportul XML pentru Z-urile de la 10 la numarul 23. Aceste fisiere vor
fi salvate in directorul directorRapoarteAnaf
setat in fisierul de
configurare.
Nou
-xm Exporta raportul XML necesar pentru
ANAF pentru luna precedenta. Aceste fisiere vor
fi salvate in directorul directorRapoarteAnaf
setat in fisierul de
configurare.
Raportare probleme
Pentru a raporta eventuale probleme avem rugamintea sa ne trimiteti pe email la
adresa
suport@dxprint.ro. Va rugam sa ne
specificati si versiunea de driver folosita, informatie care poate fi aflata prin
comanda dxprint.exe -v
.
Probleme cunoscute:
In momentul in care se doreste conectarea pe portul COM iar echipamentul
nu este setat in
modul
de
calculator, sau este oprit, sau nu este conectat corect, acesta
va genera eroarea :
Problema deschidere port serial: The system cannot find the file specified.
In momentul in care se doreste conectarea prin modul TCP/IP iar echipamentul nu este setat in modul de calculator, sau este oprit, sau nu este conectat corect, acesta va genera o eroare (timeout) dupa un timp de asteptare de 20 de secunde.
Linux: In momentul in care se doreste conectarea pentru prima data pe
portul COM se va
genera mesajul:
Problema deschidere port serial: open /dev/ttyACM0: permission denied.
In acest caz trebuie rulata comanda sudo chmod a+rw /dev/ttyACMX,
unde X este numarul
portului alocat de sistemul de operare, sau daca nu doriti sa oferiti acces la
toti utilizatorii
pe
acest port puteti rula usermod -a -G dialout <user>, unde <user>
este
utilizatorul
la care doriti sa-i permiteti accesul.
In cazul in care echipamentul fiscal ramane fara hartie sau intampina o problema
chiar atunci
cand urma sau era in timpul tiparirii unui bon, driverul va astepta timp de 120
de secunde
pentru a se remedia problema. De cele mai ulte ori se intampla ca bonul sa se
opreasca din cauza
lipsei de hartie, informatie mentionata in raspunsul driverului. Acesta va
genera un mesaj de
forma:
Lipsa hartie! Va rugam schimbati rola! Urmatoarea incercare de tiparire va fi peste
5 secunde!
In cazul in care aplicatia utilitara DxPrintApp se lanseaza pe un sistem de operare care are restrictionat prin firewall accesul la internet exista probabilitatea ca aceasta sa fie lansata cu intarziere din cauza verificarii valabilitatii certificatului de code signing cu serverele Comodo. Aceasta problema a fost intalnita pe Windows 8, 10.
In cazul in care aveti nevoie de mai multe informatii cu privire la o eroare
avem rugamintea sa
verificati si fisierul dxprint.log
existent in directorul
driverului. Acesta
contine informatii
suplimentare cu privire la comenzile trimise si la erorile receptionate.
Actualizare la versiune noua
Pentru a putea actualiza driverul este nevoie sa descarcati versiunea noua pentru sistemul dumneavoastra de operare in format arhivat (.zip) disponibila in prima pagina la sectiunea Descarca.
Va recomandam ca din directorul rezultat dupa dezarhivare sa copiati doar executabilul
dxprint.exe(Windows) sau dxprint (Linux/MacOS) in directorul
dumneavoastra existent de driver pentru a putea face actualizarea. La mesajul daca
doriti sa rescrieti fisierul alegeti Yes (Da).
Atentie: Versiunea existenta de driver nu trebuie sa ruleze in momentul in care
faceti aceasta operatiune.
Daca versiunea noua de driver contine modificari la structura fisierului de configuratie
(config.json
) acesta va actualiza automat la prima lansare fisierul de
configuratie existent iar optiunile noi adaugate le veti regasi cu valorile initiale.
Daca driverul ruleaza pe sistemul de operare Windows va recomandam sa actualizati si aplicatia existenta in arhiva de driver DxPrintApp.exe. Aceasta aplicatie primeste actualizari cu fiecare actualizare de driver.
Formatul fisierelor de comanda
Urmatoarele comenzi de FPrint sunt compatibile si interpretabile de DxPrint:
S (vanzare), T (total), D (copie bon), P (text publicitar), C
(discount/majorare), H
(blocare tastatura), F (deblocare tastatura), I (retragere/depunere bani), X
(raport X), Z
(raport Z)
.
Legislatia actuala nu permite copie bon fiscal, comanda fiind pastrata doar
pentru
compatibilitate.
Exista o lista de 2 comenzi care nu exista in driverul FPrint, si anume:
V (afisaj client), K (cod fiscal afisat pe bon)
Suplimentar driverul permite:
a) Transmiterea in comanda de vanzare a unitatii de masura (buc, kg, etc).
b) Transmiterea in comanda de vanzare a cotei tva de forma 19%, pentru
compatibilitate se poate
transmite si pozitia cotei iar driverul va identifica automat ce cota tva este
pe pozitia
respectiva.
c) Codul fiscal se poate trimite prin comanda separata K
, iar in
acel moment bonul
fiscal va fi tiparit conform noii legislatii.
Printare bon nefiscal Nou
Se permite printarea bonurilor nefiscale in toate cele 3 moduri disponibile (rezident, nerezident si embedded).
Singura restrictie a acestui mod este faptul ca in bonul nefiscal sunt permise doar 3 comenzi si anume:
- Comanda de text publicitar
- Comanda de text publicitar cu diverse stiluri
- Comanda de tiparire cod de bare
Mai sunt permise si comenzile de Discount si de tiparire Cod fiscal
doar
ca acestea sunt ignorate.
In cazul in care intr-un bon nefiscal se regasesc comenzile de total sau de
subtotal atunci bonul nu va fi tiparit si va fi marcat ca eronat.
In sectiunea de Exemple bon veti regasi cateva exemple de bonuri nefiscale.
Comanda de vanzare
S,nr_logic,______,_,__;denumire;pret;cantitate;departament;grupa;tva;0;0;um;
Exemple:
S,1,______,_,__;Produs vanzare cu unitate de masura
specificata;19.45;3.905;1;1;19%;0;0;kg;
S,1,______,_,__;Produs vanzare cu cota tva
specificata;12.00;1.000;1;1;9%;0;0;buc;
S,1,______,_,__;Produs vanzare cu pozitie
tva;12.00;1.000;1;1;2;0;0;buc;
S,1,______,_,__;Produs vanzare fara unitate de masura
specificata;19.45;3.905;1;1;19%;0;0;
S Reprezinta comanda de vanzare
nr_logic Reprezinta numarul logic al echipamentului, si se poate
modifica din
fisierul de configurare optiunea numarLogic
. Valoare intre 1 - 99.
denumire Reprezinta denumirea produsului. Setul de caractere permis de echipament este ISO-8859-2. Poate avea un maxim de 72 de caractere.
pret Reprezinta pretul produsului. Acesta poate fi trecut cu pana la maxim 2 zecimale si poate avea valoare negativa pentru operatiunile de anulare.
cantitate Reprezinta cantitatea produsului. Aceasta poate fi trecuta cu pana la maxim 3 zecimale.
departament Reprezinta departamentul produsului. Valoare intre 0 - 99. 0 insemnand ca nu are departament specificat.
grupa Reprezinta grupa produsului. Valoare intre 1 - 99. Aceasta valoare este ignorata la procesarea comenzii.
tva Reprezinta tva-ul produsului. Acesta poate fi trecut ca pozitie (1 - 99) sau ca valoare sub forma de 19%, 5%, 9%. Daca procentul este prezent se va considera ca este trecuta valoarea si se va incerca identificarea cotei trimise cu lista de cote existente in echipamentul fiscal. Daca se trimite pozitia aceasta la fel se va identifica cu pozitiile existente in echipamentul fiscal si se va trimite valoarea de tva specificat prin pozitie sau valoare. Lista de cote tva si pozitii existente in echipamentul fiscal se poate afla prin comanda: dxprint.exe -s.
um Reprezinta unitatea de masura a produsului. Daca nu este
specificata atunci
driverul va trimite unitatea de masura BUC
. In cazul in care se
trimite o unitate
de masura mai mare de 6 caractere, la echipament se vor trimite doar primele 6
caractere.
Comanda de discount
C,nr_logic,______,_,__;tip_discount;valoare;;;;
Exemple:
C,1,______,_,__;0;15.00;;;;
//majorare procentuala de 15%
C,1,______,_,__;1;10.00;;;;
//reducere procentuala de 10%
C,1,______,_,__;2;10.00;;;;
//majorare valorica de 10 lei
C,1,______,_,__;3;5.00;;;;
//reducere valorica de 5 lei
C Reprezinta comanda de discount
nr_logic Reprezinta numarul logic al echipamentului, si se poate
modifica din
fisierul de configurare optiunea numarLogic
. Valoare intre 1 - 99.
tip_discount Reprezinta tipul de actiune. Acesta poate fi:
0
- Majorare procentuala
1
- Reducere procentuala
2
- Majorare valorica
3
- Reducere valorica
valoare Reprezinta procentul/valoarea de reducere/majorare. Acesta poate fi trecut cu pana la maxim 2 zecimale.
Atentie:
Daca comanda de discount apare
dupa comanda de
subtotal L
atunci se va
acorda reducere/majorare la toata valoarea bonului.
In caz contrar se va acorda reducere/majorare la produsul anterior comenzii de
discount.
Comanda de subtotal
L,nr_logic,______,_,__;
Exemple:
L,1,______,_,__;
L Reprezinta comanda de subtotal.
nr_logic Reprezinta numarul logic al echipamentului, si se poate
modifica din
fisierul de configurare optiunea numarLogic
. Valoare intre 1 - 99.
Comanda de total
T,nr_logic,______,_,__;tip_plata;valoare;;;;
Exemple:
T,1,______,_,__;1;5.65;;;;
//Plata prin CARD in valoare de 5.65 lei
T,1,______,_,__;4;5.35;;;;
//Plata prin TICHETE VALORICE in valoare de 5.35 lei
T,1,______,_,__;0;;;;;
//Plata prin NUMERAR cu total calculat automat
T,1,______,_,__;0;25.87;;;;
//Plata prin NUMERAR in valoare de 25.87 lei
T Reprezinta comanda de total.
nr_logic Reprezinta numarul logic al echipamentului, si se poate
modifica din
fisierul de configurare optiunea numarLogic
. Valoare intre 1 - 99.
tip_plata Reprezinta modalitatea de plata acceptata. Acesta poate fi:
0
- Numerar
1
- Card
2
- Credit
3
- Tichete masa
4
- Tichete valorice
5
- Voucher
6
- Plata moderna
7
- Card + avans numerar
8
- Alte metode de plata
valoare Reprezinta valoarea de plata. Aceasta poate fi trecuta cu
pana la maxim 2
zecimale.
Daca aceasta nu este specificata se va calcula automat totalul de
plata.
Daca modalitatea de plata este 7 - Card + avans numerar, valoarea introdusa
trebuie sa fie mai
mare decat valoarea totala a bonului.
Comanda de raport X si Z
tip_raport,nr_logic,______,_,__;;;;;;;
Exemple:
X,1,______,_,__;;;;;;;
Z,1,______,_,__;;;;;;;
tip_raport Reprezinta tipul de raport dorit. Acesta poate fi:
X
- Raport X
Z
- Raport Z
nr_logic Reprezinta numarul logic al echipamentului, si se poate
modifica din
fisierul de configurare optiunea numarLogic
. Valoare intre 1 - 99.
Atentie:
In momentul in care aceste
rapoarte sunt
executate se va genera in directorul driverului si fisier suplimentar cu
totalurile din ziua
respectiva intr-un format usor de inteles.
Comanda de raport verificare
R,nr_logic,______,_,__;tip_raport;tip_afisare;data/nr
Z inceput;data/nr Z sfarsit;
Exemple:
R,1,______,_,__;6;0;01-12-18;31-12-18;
//Raport detaliat pentru perioada 01.12.2018 - 31.12.2018
R,1,______,_,__;1;0;100;200;;;
//Raport detaliat pentru intervalul Z 100 - 200.
R,1,______,_,__;2;0;;;
//Raport ECR
R,1,______,_,__;3;0;;;
//Raport de verificare pe departamente
R,1,______,_,__;4;0;;;
//Raport de verificare pe grupe de produse
R,1,______,_,__;5;0;01-12-18;14-12-18;
//Raport sumar pentru perioada 01.12.2018 - 14.12.2018
R,1,______,_,__;0;0;20;40;
//Raport sumar pentru intervalul Z 20 - 40
R Reprezinta comanda de raport.
nr_logic Reprezinta numarul logic al echipamentului, si se poate
modifica din
fisierul de configurare optiunea numarLogic
. Valoare intre 1 - 99.
tip_raport Reprezinta tipul de raport acceptat. Acesta poate fi:
0
- Raport sumar pe numere Z
1
- Raport detaliat pe numere Z
2
- Raport ECR
3
- Raport pe departamente
4
- Raport grupe produse
5
- Raport sumar pe perioada
6
- Raport detaliat pe perioada
tip_afisare Reprezinta modalitatea de afisare a raportului. Acesta poate fi 0 pentru tiparire pe echipamentul fiscal sau 1 pentru export in fisier extern. In acest moment doar tiparirea este functionala, adica parametrul 0.
data/nr Z inceput Reprezinta data de inceput in format scurt
(zi-luna-an_scurt, Ex:
01-12-18) daca tipul de raport este 5
sau 6
, sau
numarul Z de inceput
daca tipul de raport este 0
sau 1
. Pentru restul de
rapoarte acest
parametru este ignorat. Pentru numarul Z valoarea minima admisa este 0.
data/nr Z sfarsit Reprezinta data de sfarsit in format scurt
(zi-luna-an_scurt, Ex:
31-12-18) daca tipul de raport este 5
sau 6
, sau
numarul Z de sfarsit
daca tipul de raport este 0
sau 1
. Pentru restul de
rapoarte acest
parametru este ignorat. Atat pentru data cat si pentru numarul Z valoarea
trebuie sa fie mai
mare decat parametrul data/nr Z inceput.
Comanda de retragere/depunere numerar
I,nr_logic,______,_,__;tip_actiune;valoare;;;;
Exemple:
I,1,______,_,__;0;12.56;;;;
//Depunere in valoare de 12.56 lei in sertar
I,1,______,_,__;1;5.89;;;;
//Retragere in valoare de 5.89 lei din sertar
I Reprezinta comanda de retragere/depunere numerar.
nr_logic Reprezinta numarul logic al echipamentului, si se poate
modifica din
fisierul de configurare optiunea numarLogic
. Valoare intre 1 - 99.
tip_actiune Reprezinta tipul de actiune dorit. Acesta poate fi:
0
- Depunere bani in sertar
1
- retragere bani din sertar
valoare Reprezinta valoarea retrasa sau depusa. Trebuie sa fie trecuta cu 2 zecimale.
Comanda de tiparire Cod fiscal
K,nr_logic,______,_,__;cod_fiscal;
Exemple:
K,1,______,_,__;RO123456789;
K,1,______,_,__;987654321;
K Reprezinta comanda de tiparire cod fiscal pe bon.
nr_logic Reprezinta numarul logic al echipamentului, si se poate
modifica din
fisierul de configurare optiunea numarLogic
. Valoare intre 1 - 99.
cod_fiscal Reprezinta codul fiscal dorit pentru tiparire pe bonul fiscal.
Comanda de afisaj client
V,nr_logic,______,_,__;tip_actiune;text;
Exemple:
V,1,______,_,__;0;CLEAR;
V,1,______,_,__;1;AFISARE PE LINIA DE SUS;
V,1,______,_,__;2;AFISARE PE LINIA DE JOS;
V Reprezinta comanda de afisare pe afisaj extern.
nr_logic Reprezinta numarul logic al echipamentului, si se poate
modifica din
fisierul de configurare optiunea numarLogic
. Valoare intre 1 - 99.
tip_actiune Reprezinta tipul de actiune dorit. Acesta poate fi:
0
- Sterge afisajul
1
- Tipareste textul pe linia de sus a afisajului
2
- Tipareste textul pe linia de jos a afisajului
text Reprezinta textul dorit pentru afisare. Setul de caractere permis de echipament este ISO-8859-2. Maxim 20 de caractere.
Comanda de text publicitar
P,nr_logic,______,_,__;text;;;;;
P,1,______,_,__;Operator: Ion Popescu;;;;;
P,1,______,_,__;Va multumim!;;;;;
P,1,______,_,__;Discount card fidelizare 20%;;;;;
P Reprezinta comanda de tiparire text publicitar pe bon.
nr_logic Reprezinta numarul logic al echipamentului, si se poate
modifica din
fisierul de configurare optiunea numarLogic
. Valoare intre 1 - 99.
text Reprezinta textul dorit pentru afisare. Setul de caractere permis de echipament este ISO-8859-2. Maxim 42 de caractere.
Comanda de text publicitar cu diverse stiluri
W,nr_logic,______,_,__;tip_afisare;text;
W,1,______,_,__;b;Operator: Ion Popescu;
//Text ingrosatW,1,______,_,__;bu;Va multumim!;
//Text ingrosat si subliniatW,1,______,_,__;;Discount card fidelizare 20%;
//Text fara nici un fel de stilW,1,______,_,__;idc;Discount 20%;
//Text italic, de marime dubla care este centrat pe bonW,1,______,_,__;bur;Tranzactie #1234;
//Text ingrosat, subliniat cu aliniere dreaptaW,1,______,_,__;biudc;Text publicitar cu toate stilurile de text;
//Text ingrosat, italic, subliniat cu marime dubla si cu aliniere centrataW Reprezinta comanda de tiparire text publicitar cu diverse stiluri pe bon.
nr_logic Reprezinta numarul logic al echipamentului, si se poate
modifica din
fisierul de configurare optiunea numarLogic
. Valoare intre 1 - 99.
tip_afisare Reprezinta tipul de afisare dorit. Se pot folosi mai
multe stiluri in
aceeasi comanda. Acesta poate fi:
b
- Ingrosat
i
- Italic
u
- Subliniat
d
- Marime dubla text
l
- Aliniere stanga (implicit)
c
- Aliniere centru
r
- Aliniere dreapta
text Reprezinta textul dorit pentru afisare. Setul de caractere permis de echipament este ISO-8859-2. Maxim 42 de caractere.
Comanda de tiparire cod de bare
Q,nr_logic,______,_,__;tip_codbare;codbare;marime;
Q,1,______,_,__;1;12345670;
//Cod de bare de tipul EAN8Q,1,______,_,__;2;1234567890128;
//Cod de bare de tipul EAN13Q,1,______,_,__;3;dxprint-1234565;
//Cod de bare de tipul Code128Q,1,______,_,__;4;www.dxprint.ro;
//Cod de bare de tipul QRCode fara sa fie specificat parametrul de marimeQ,1,______,_,__;4;www.dxprint.ro;5;
//Cod de bare de tipul QRCode cu marimea de 5Q Reprezinta comanda de tiparire a unui cod de bare pe bonul fiscal.
nr_logic Reprezinta numarul logic al echipamentului, si se poate
modifica din
fisierul de configurare optiunea numarLogic
. Valoare intre 1 - 99.
tip_codbare Reprezinta tipul de cod de bare dorit. Acesta poate
fi:
1
- EAN8
2
- EAN13
3
- Code128
4
- QRCode
codbare Reprezinta codul de bare pentru afisare. Marimea maxima
variaza in functie de
tipul de cod de bare dorit. Aceasta poate fi: 8 caractere numerice pentru
EAN8
, 13 caractere numerice pentru EAN13
, intre
3 si 31
de caractere alfanumerice pentru Code128
, si intre 3 si 279
caractere
alfanumerice pentru QRCode
.
marime Reprezinta marimea codului de bare QRCode. Aceasta poate fi intre 1 si 8, 1 reprezentand cea mai mica, iar 8 cea mai mare. Daca nu se specifica marimea are o valoare implicita de 3. Pentru restul codurilor de bare acest parametru poate fi trecut doar ca va fi ignorat.
Configurare driver in SAGA
Pentru a putea tipari bonuri fiscale din aplicatia Saga C cu driverul DxPrint este nevoie sa urmati indicatiile de mai jos:
Din meniul Administrare
trebuie ales submeniul Configurare
societati
.
In fereastra deschisa se va alege societatea dorita si din sectiunea Casa
de marcat
se va selecta optiunea DATECSPRINTER exact ca in chenarul verde din poza
de mai jos.
Selectia driverului si a modalitatilor de plata se va face din meniul
Operatii
submeniul Iesiri
. In fereastra deschisa se alege un bon existent
sau se va face un
bon nou iar dupa finalizarea acestuia se va apasa pe butonul Tiparire bon
fiscal
.
Fereastra deschisa in urma apasarii butonului va arata exact ca in poza de mai
jos. Se alege
sectiunea de Configurare
si vor fi completate informatiile de mai
jos:
Program interfata
trebuie sa fie selectata optiunea
DxPrint
iar Modul
rezident nu trebuie sa fie bifat. In cazul in care aveti o versiune de
Saga mai veche puteti alege din meniu optiunea FiscalWire.
Cale fisier de interfata cu programul de tiparire
trebuie aleasa
calea
executabilului dxprint.exe. In imaginea de mai jos driverul a fost dezarhivat in
C:\DXPRINT.
Indice modalitate de incasare
trebuie sa fie exact ca in imagine si
anume:
Indice 0 - Cash
Indice 4 - Tichete
Indice 1 - Card
Indice cota de TVA
trebuie sa coincida cu lista si pozitia cotelor
de tva existente
in echipament. Aceasta informatie se poate afla prin comanda dxprint.exe
-s.
Pentru tiparirea codului fiscal de client pe bonul fiscal este nevoie sa se
adauge valoarea
CF: in fisierul de configuratie config.json la optiunea
transformaCifDinTextPublicitarInFactura
, Ex: "transformaCifDinTextPublicitarInFactura":
"CF:"
.
Exemple de bon
Aceste exemple le regasiti si in arhiva driverului in directorul bonuri_exemple.
Bon cu reducere produs individual si comentarii suplimentare:
Acest bon contine atat codul fiscal al firmei cat si reduceri procentuale per produs cat si text publicitar. Se incaseaza toata suma prin numerar.
K,1,______,_,__;RO78344513;
S,1,______,_,__;Produs de test1;12.12;2.000;2;1;2;0;0;
C,1,______,_,__;1;15.00;;;;
S,1,______,_,__;Produs de test2;175.23;3.000;1;1;1;0;0;
C,1,______,_,__;1;25.00;;;;
P,1,______,_,__;PROMO 2+1;;;;
S,1,______,_,__;Produs de test3;10.24;1.000;1;1;1;0;0;
S,1,______,_,__;Produs de test4;195.00;2.000;1;1;1;0;0;
P,1,______,_,__;VA MULTUMIM!;;;;
P,1,______,_,__;Casier: Ion Popescu;;;;
T,1,______,_,__;0;;;;;
{ "fiscalCode": "RO78344513", "isNonFiscalReceipt": false, "products": [ { "name": "Produs de test1", "quantity": 2, "price": 12.12, "department": 2, "vat": "2", "discount": { "discountType": "PercentDiscount", "amount": 15 }, "isSubtotalDiscount": false }, { "name": "Produs de test2", "quantity": 3, "price": 175.23, "department": 1, "vat": "1", "comments": [ { "message": "PROMO 2+1" } ], "discount": { "discountType": "PercentDiscount", "amount": 25 }, "isSubtotalDiscount": false }, { "name": "Produs de test3", "quantity": 1, "price": 10.24, "department": 1, "vat": "1", "isSubtotalDiscount": false }, { "name": "Produs de test4", "quantity": 2, "price": 195, "department": 1, "vat": "1", "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ], "footerComments": [ { "message": "VA MULTUMIM!" }, { "message": "Casier: Ion Popescu" } ] }
Bon cu discount pe toate produsele:
Acest bon contine 2 produse la care li se aplica un discount de 15% pe intregul bon. Se incaseaza toata suma prin numerar.
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
P,1,______,_,__;Bon cu disc. pe intregul bon;;;;
L,1,______,_,__;
C,1,______,_,__;1;15.00;;;;
T,1,______,_,__;0;;;;;
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Bon cu disc. pe intregul bon" } ], "discount": { "discountType": "PercentDiscount", "amount": 15 }, "isSubtotalDiscount": true } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ] }
Bon cu discount individual produse:
Acest bon contine 2 produse la care li se aplica un discount individual de 10% si respectiv 5%. Se incaseaza toata suma prin numerar.
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
C,1,______,_,__;1;5.00;;;;
T,1,______,_,__;0;;;;;
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "discount": { "discountType": "PercentDiscount", "amount": 5 }, "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ] }
Bon cu discount la un singur produs si incasare cu multiple tipuri de plata:
Acest bon contine 3 produse din care doar unul are un discount de 10% procentual, iar incasarea se face prin CARD suma de 50 de lei iar numerar restul ramas de plata.
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
P,1,______,_,__;Bon cu discount doar la un produs si incasare
multipla;;;;
S,1,______,_,__;produs cu denumire
2;5.00;20.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
S,1,______,_,__;Produs cu denumire
3;10.00;2.000;1;1;1;0;0;buc;
T,1,______,_,__;1;5.00;;;;
T,1,______,_,__;0;;;;;
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Bon cu discount doar la un produs si incasare multipla" } ], "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false }, { "name": "Produs cu denumire 3", "quantity": 2, "price": 10, "department": 1, "vat": "1", "unit": "buc", "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Card", "amount": 5 }, { "paymentType": "Cash", "amount": 0 } ] }
Bon cu discount valoric la un singur produs:
Acest bon contine 3 produse din care doar unul are un discount valoric de 5 lei. Se incaseaza toata suma prin numerar.
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;BUC;
S,1,______,_,__;Produs cu denumire
1;10.00;3.453;1;1;1;0;0;KG;
S,1,______,_,__;produs cu denumire
2;10.00;2.000;1;1;1;0;0;buc;
C,1,______,_,__;3;5.00;;;;
T,1,______,_,__;0;;;;;
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "BUC", "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 3.453, "price": 10, "department": 1, "vat": "1", "unit": "KG", "isSubtotalDiscount": false }, { "name": "Produs cu denumire 3", "quantity": 2, "price": 10, "department": 1, "vat": "1", "unit": "BUC", "discount": { "discountType": "ValueDiscount", "amount": 5 }, "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ] }
Bon cu mai multe produse si tipuri de plata:
Acest bon contine 5 produse si care se incaseaza dupa cum urmeaza: CARD - 0.50 lei, TICHETE MASA - 0.50 lei iar restul prin NUMERAR. Suplimentar contine si codul fiscal dar si un comentariu cu numele operatorului.
K,1,______,_,__;RO123456789;
S,1,______,_,__;Articol 1;1.00;1.000;1;1;1;0;0;buc;
S,1,______,_,__;Articol 2;1.00;1.000;1;1;1;0;0;
S,1,______,_,__;Articol 3;1.00;1.000;1;1;19%;0;0;
S,1,______,_,__;Articol 4;1.00;1.000;1;1;9%;0;0;
S,1,______,_,__;Articol 5;1.00;1.000;1;1;1;0;0;
P,1,______,_,__;Operator: Ion Popescu;;;;
T,1,______,_,__;1;0.50;;;;
T,1,______,_,__;2;0.50;;;;
T,1,______,_,__;0;
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;19%;0;0;buc;
S,1,______,_,__;produs cu denumire 2;5.00;2.000;1;1;19%;0;0;buc;
P,1,______,_,__;Bon cu multiple tipuri de plata;;;;
T,1,______,_,__;1;5.65;;;;
T,1,______,_,__;3;5.35;;;;
T,1,______,_,__;0;;;;;
{ "fiscalCode": "RO123456789", "isNonFiscalReceipt": false, "products": [ { "name": "Articol 1", "quantity": 1, "price": 1, "department": 1, "vat": "1", "unit": "buc", "isSubtotalDiscount": false }, { "name": "Articol 2", "quantity": 1, "price": 1, "department": 1, "vat": "1", "isSubtotalDiscount": false }, { "name": "Articol 3", "quantity": 1, "price": 1, "department": 1, "vat": "19%", "isSubtotalDiscount": false }, { "name": "Articol 4", "quantity": 1, "price": 1, "department": 1, "vat": "9%", "isSubtotalDiscount": false }, { "name": "Articol 5", "quantity": 1, "price": 1, "department": 1, "vat": "1", "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Card", "amount": 0.5 }, { "paymentType": "Credit", "amount": 0.5 }, { "paymentType": "Cash", "amount": 0 } ], "footerComments": [ { "message": "Operator: Ion Popescu" } ] }
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "19%", "unit": "buc", "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "19%", "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Card", "amount": 5.65 }, { "paymentType": "MealTicket", "amount": 5.35 }, { "paymentType": "Cash", "amount": 0 } ], "footerComments": [ { "message": "Bon cu multiple tipuri de plata" } ] }
Bon cu un produs redus complet:
Acest bon contine 3 produse din care doar unul are un discount procentual de 100%. Se incaseaza toata suma prin numerar.
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;BUC;
S,1,______,_,__;Produs cu denumire
1;10.00;3.453;1;1;1;0;0;KG;
S,1,______,_,__;produs cu denumire
2;10.00;2.000;1;1;1;0;0;buc;
C,1,______,_,__;1;100.00;;;;
T,1,______,_,__;0;;;;;
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "BUC", "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 3.453, "price": 10, "department": 1, "vat": "1", "unit": "KG", "isSubtotalDiscount": false }, { "name": "Produs cu denumire 3", "quantity": 2, "price": 10, "department": 1, "vat": "1", "unit": "buc", "discount": { "discountType": "PercentDiscount", "amount": 100 }, "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ] }
Bon cu text publicitar:
Acest bon contine 2 produse si 2 comentarii la inceput si sfarsit de bon. Se incaseaza toata suma prin numerar.
P,1,______,_,__;Inceput bon test;;;;
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
S,1,______,_,__;produs cu denumire
2;0.99;2.000;1;1;1;0;0;buc;
P,1,______,_,__;Sfarsit de bon test;;;;
T,1,______,_,__;0;;;;;
{ "isNonFiscalReceipt": false, "headerComments": [ { "message": "Inceput bon test" } ], "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 0.99, "department": 1, "vat": "1", "unit": "buc", "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ], "footerComments": [ { "message": "Sfarsit de bon test" } ] }
Bon nefiscal:
Acest bon nefiscal contine cateva comentarii si un cod de bare QRCode cu un cod promotional.
P,1,______,_,__;Multumim pentru cumparaturi!;;;;
P,1,______,_,__;Intra pe site si ai o surpriza!;;;;
P,1,______,_,__;Codul promotional:;;;;
Q,1,______,_,__;4;Cod122345XYZ;
P,1,______,_,__;Multumim pentru cumparaturi!;;;;
W,1,______,_,__;bc;Profita de reduceri in magazin online:;
Q,1,______,_,__;4;www.dxprint.ro;
Bon cu produse care au cotele tva definite explicit:
Acest bon contine 2 produse care au cotele tva definite ca si valoare procentuala. Se incaseaza toata suma prin numerar.
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;19%;0;0;buc;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;5%;0;0;buc;
P,1,______,_,__;Produse cu cote tva diferite;;;;
T,1,______,_,__;0;;;;;
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "19%", "unit": "buc", "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "5%", "unit": "buc", "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ], "footerComments": [ { "message": "Produse cu cote tva diferite" } ] }
Bon cu afisaj client:
Acest bon contine comenzile de tiparire pe cele 2 linii ale afisajului extern.
V,1,______,_,__;0;CLEAR;
V,1,______,_,__;1;Vanzare finalizata;
V,1,______,_,__;2;Va multumim!;
Introducere numerar:
Acest bon contine comanda de introducere numerar in sertar.
I,1,______,_,__;0;12.34;;;;
Retragere numerar:
Acest bon contine comanda de retragere numerar din sertar.
I,1,______,_,__;1;12.34;;;;
Raport X:
Acest bon contine comanda de lansare raport X.
X,1,______,_,__;;;;;;;
Raport Z:
Acest bon contine comanda de lansare raport Z.
Z,1,______,_,__;;;;;;;
Raport zilnic ECR:
Acest bon contine comanda de lansare a raportului zilnic ECR.
R,1,______,_,__;2;0;;;
Raport zilnic pe departamente:
Acest bon contine comanda de lansare a raportului zilnic pe departamente.
R,1,______,_,__;3;0;;;
Raport sumar pe o perioada de timp:
Acest bon contine comanda de lansare a raportului sumar pe intervalul de timp 1 septembrie 2018 - 10 septembrie 2018.
R,1,______,_,__;5;0;01-09-18;10-09-18;
Raport detaliat pe o perioada de timp:
Acest bon contine comanda de lansare a raportului detaliat pe intervalul de timp 1 septembrie 2018 - 10 septembrie 2018.
R,1,______,_,__;6;0;01-09-18;10-09-18;
Raport sumar pe numere Z:
Acest bon contine comanda de lansare a raportului sumar pe numere Z cuprinse intre 1 si 10.
R,1,______,_,__;0;0;1;10;;;
Raport detaliat pe numere Z:
Acest bon contine comanda de lansare a raportului detaliat pe numere Z cuprinse intre 20 si 30.
R,1,______,_,__;1;0;20;30;;;
Bon cu text publicitar cu diferite stiluri:
Acest bon contine 2 produse care au comentarii cu stilurile italic, aliniere centru si aliniere dreapta.
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
W,1,______,_,__;ir;Reducere client fidelizare: 10%;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
W,1,______,_,__;ic;Reducere disp. la mai mult de 5 produse;
W,1,______,_,__;ic;Va multumim!;
T,1,______,_,__;0;;;;;
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
W,1,______,_,__;bc;Reducere client fidelizare: 10%;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
W,1,______,_,__;bc;Reducere client fidelizare: 10%;
W,1,______,_,__;bc;Va multumim!;
T,1,______,_,__;0;;;;;
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
W,1,______,_,__;bdc;Promotie activa: -10%;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
C,1,______,_,__;1;20.00;;;;
W,1,______,_,__;bdc;Promotie activa: -20%;
T,1,______,_,__;0;;;;;
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Reducere client fidelizare: 10%", "bold": false, "italic": true, "underline": false, "doubleSize": false, "align": 2 } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Reducere disp. la mai mult de 5 produse", "bold": false, "italic": true, "underline": false, "doubleSize": false, "align": 1 }, { "message": "Va multumim!", "bold": false, "italic": true, "underline": false, "doubleSize": false, "align": 1 } ], "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ] }
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Reducere client fidelizare: 10%", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Reducere client fidelizare: 10%", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 }, { "message": "Va multumim!", "bold": false, "italic": true, "underline": false, "doubleSize": false, "align": 1 } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ] }
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Promotie activa: -10%", "bold": true, "italic": false, "underline": false, "doubleSize": true, "align": 1 } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Promotie activa: -20%", "bold": true, "italic": false, "underline": false, "doubleSize": true, "align": 1 } ], "discount": { "discountType": "PercentDiscount", "amount": 20 }, "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ] }
Bon cu produse care au cod de bare EAN8
:
Bon cu 2 produse care au discount de 10% si care suplimentar
dupa fiecare
produs au un cod de bare EAN8
tiparit.
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
Q,1,______,_,__;1;90311017;
W,1,______,_,__;bc;Reducere client fidelizare: 10%;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
Q,1,______,_,__;1;98746576;
W,1,______,_,__;bc;Reducere client fidelizare: 10%;
T,1,______,_,__;0;;;;;
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
Q,1,______,_,__;1;64538624;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
Q,1,______,_,__;1;90864827;
T,1,______,_,__;0;;;;;
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Reducere client fidelizare: 10%", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "barcodes": [ { "barcode": "90311017", "barcodeType": "Ean8" } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Reducere client fidelizare: 10%", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "barcodes": [ { "barcode": "98746576", "barcodeType": "Ean8" } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ] }
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "barcodes": [ { "barcode": "64538624", "barcodeType": "Ean8" } ], "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "barcodes": [ { "barcode": "90864827", "barcodeType": "Ean8" } ], "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ] }
Bon cu produse care au cod de bare EAN13
:
Bon cu 2 produse care au discount de 10% si care suplimentar
dupa fiecare
produs au un cod de bare EAN13
tiparit.
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
Q,1,______,_,__;2;9780201379624;
W,1,______,_,__;bc;Reducere client fidelizare: 10%;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
Q,1,______,_,__;2;9874583923428;
W,1,______,_,__;bc;Reducere client fidelizare: 10%;
T,1,______,_,__;0;;;;;
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
Q,1,______,_,__;2;3758493457029;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
Q,1,______,_,__;2;8645839201727;
T,1,______,_,__;0;;;;;
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Reducere client fidelizare: 10%", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "barcodes": [ { "barcode": "9780201379624", "barcodeType": "Ean13" } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Reducere client fidelizare: 10%", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "barcodes": [ { "barcode": "9874583923428", "barcodeType": "Ean13" } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ] }
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "barcodes": [ { "barcode": "3758493457029", "barcodeType": "Ean13" } ], "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "barcodes": [ { "barcode": "8645839201727", "barcodeType": "Ean13" } ], "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ] }
Bon cu produse care au cod de bare Code128
:
Bon cu 2 produse care au discount de 10% si care suplimentar
dupa fiecare produs au un cod de bare Code128
.
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
Q,1,______,_,__;3;codprodus1;
W,1,______,_,__;bc;Reducere client fidelizare: 10%;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
Q,1,______,_,__;3;9874-tr-sm;
W,1,______,_,__;c;Tranzactie #:;
Q,1,______,_,__;3;250990;
T,1,______,_,__;0;;;;;
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
Q,1,______,_,__;3;bl-123;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
Q,1,______,_,__;3;cod0989-sm;
W,1,______,_,__;c;Tranzactie #:;
Q,1,______,_,__;3;19997678;
T,1,______,_,__;0;;;;;
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Reducere client fidelizare: 10%", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "barcodes": [ { "barcode": "codprodus1", "barcodeType": "Code128" } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "barcodes": [ { "barcode": "9874-tr-sm", "barcodeType": "Code128" } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ], "footerComments": [ { "message": "Tranzactie #:", "bold": false, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "barcodes": [ { "barcode": "250990", "barcodeType": "Code128" } ] }
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "barcodes": [ { "barcode": "bl-123", "barcodeType": "Code128", "barcodeSize": 0 } ], "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "barcodes": [ { "barcode": "cod0989-sm", "barcodeType": "Code128" } ], "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ], "footerComments": [ { "message": "Tranzactie #:", "bold": false, "italic": false, "underline": false, "doubleSize": false, "align": 0 } ], "barcodes": [ { "barcode": "19997678", "barcodeType": "Code128" } ] }
Bon cu produse si cod de bare QRCode
:
Bon cu 2 produse care au discount si care suplimentar contine
la
sfarsit o adresa de internet in format de cod de bare QRCode
de
marime standard.
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
W,1,______,_,__;bc;Reducere client fidelizare: 10%;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
W,1,______,_,__;bc;Profita de reduceri in magazin online:;
Q,1,______,_,__;4;www.dxprint.ro;
T,1,______,_,__;0;;;;;
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
W,1,______,_,__;ic;Profita de reduceri in magazin online:;
Q,1,______,_,__;4;www.dxprint.ro;
T,1,______,_,__;0;;;;;
S,1,______,_,__;Produs cu denumire
1;10.00;1.000;1;1;1;0;0;buc;
C,1,______,_,__;1;10.00;;;;
W,1,______,_,__;bc;Reducere client fidelizare: 10%;
S,1,______,_,__;produs cu denumire
2;5.00;2.000;1;1;1;0;0;buc;
W,1,______,_,__;bc;Profita de reduceri in magazin online:;
Q,1,______,_,__;4;www.dxprint.ro;7;
T,1,______,_,__;0;;;;;
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Reducere client fidelizare: 10%", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ], "footerComments": [ { "message": "Profita de reduceri in magazin online:", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "barcodes": [ { "barcode": "www.dxprint.ro", "barcodeType": "QRCode" } ] }
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ], "footerComments": [ { "message": "Profita de reduceri in magazin online:", "bold": false, "italic": true, "underline": false, "doubleSize": false, "align": 1 } ], "barcodes": [ { "barcode": "www.dxprint.ro", "barcodeType": "QRCode" } ] }
{ "isNonFiscalReceipt": false, "products": [ { "name": "Produs cu denumire 1", "quantity": 1, "price": 10, "department": 1, "vat": "1", "unit": "buc", "comments": [ { "message": "Reducere client fidelizare: 10%", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "discount": { "discountType": "PercentDiscount", "amount": 10 }, "isSubtotalDiscount": false }, { "name": "Produs cu denumire 2", "quantity": 2, "price": 5, "department": 1, "vat": "1", "unit": "buc", "isSubtotalDiscount": false } ], "payments": [ { "paymentType": "Cash", "amount": 0 } ], "footerComments": [ { "message": "Profita de reduceri in magazin online:", "bold": true, "italic": false, "underline": false, "doubleSize": false, "align": 1 } ], "barcodes": [ { "barcode": "www.dxprint.ro", "barcodeType": "QRCode", "barcodeSize": 7 } ] }
Bon nefiscal:
Acest exemplu este pentru un bon nefiscal trimis catre echipamentul fiscal. Acesta are un singur comentariu cu 2 stiluri active bold si underline.
{ "fiscalCode":"RO123456789", "isNonFiscalReceipt": true, "headerComments": [ { "message": "Bon nefiscal nr.: 2045", "bold": true, "italic": false, "underline": true, "doubleSize": false, "align": 1 } ] }