zajmuje sie kasami od lat jak chcesz to masz instrukcje,bibl. ale napewno szkoda zachodu.jest to przeznaczone do pisania programow do paracy z tymi urzadzeniami Komunikacja z drukarkami fiskalnymi: winseria.zip - 32-bitowa biblioteka DLL do obslugi drukarek OMEGA i FP-600 - wersja 2.50 z dnia 10.12.2002 - poziom sekwencji sterujących elzabdr.zip - 32-bitowa biblioteka DLL do obsługi drukarek OMEGA i FP-600 - wersja 1.50 z dnia 14.10.2002 - nie wymaga znajomości sekwencji sterujących fp600.zip - biblioteka do obsługi FP-600 i instrukcja programisty fpserial.zip - przykładowe moduły komunikacyjne w Turbo Pascalu i w Borland C
//****************************************************************************
//* *
//* plik naglowkowy modulu obslugi portow szeregowych *
//* *
//****************************************************************************
extern BazaZmiennychBiosa;
extern TimeoutNadawania;
extern TimeoutOdbierania;
extern BylTimeout;
void InicjujPortSzeregowy(unsigned char NrPortu);
void PoslijNaPortSzeregowy(unsigned char NrPortu, unsigned char BajtZnaku);
unsigned char OdbierzZPortuSzeregowego(unsigned char NrPortu);
void CzyscPortSzeregowy(unsigned char NrPortu);
Rem deklaracje funkcji z biblioteki elzabdr.dll dla Visual Basic-a
Private Declare Function CommunicationInit Lib " elzabdr.dll " (ByVal PortNo As Long, ByVal Speed As Long, ByVal Timeout As Long) As Long
Private Declare Function CommunicationEnd Lib " elzabdr.dll " () As Long
Private Declare Function DailyReport Lib " elzabdr.dll " (ByVal Unconditionally As Long) As Long
Private Declare Function DailyReportNumber Lib " elzabdr.dll " (ByRef Number As Long) As Long
Private Declare Function DeviceName Lib " elzabdr.dll " (ByRef Name As String) As Long
Private Declare Function DllVersion Lib " elzabdr.dll " (ByRef Version As String) As Long
Private Declare Function DllAuthor Lib " elzabdr.dll " (ByRef AuthorName As String) As Long
Private Declare Function ErrMessage Lib " elzabdr.dll " (ByVal ErrNo As Long, ByRef Message As String) As Long
Private Declare Function FillLines Lib " elzabdr.dll " (ByVal Nr As Long, ByVal pLine As String, ByRef pFreelines As Long) As Long
Private Declare Function FillPayment Lib " elzabdr.dll " (ByVal Nr As Long, ByVal PaymentName As String, ByVal Total As Long, ByVal Rest As Long) As Long
Private Declare Function LockedArticlesReport Lib " elzabdr.dll " () As Long
Private Declare Function MonthlyReport Lib " elzabdr.dll " (ByVal Fiscal As Long, ByVal Year As Long, ByVal Month As Long) As Long
Private Declare Function NumberReport Lib " elzabdr.dll " (ByVal Fiscal As Long, ByVal Nr1 As Long, ByVal Nr2 As Long) As Long
Private Declare Function PackageItem Lib " elzabdr.dll " (ByVal Param As Long, ByVal Nr As Long, ByVal Ilosc As Long, ByVal Cena As Long) As Long
Private Declare Function PeriodReport Lib " elzabdr.dll " (ByVal Fiscal As Long, ByVal YY1 As Long, ByVal MM1 As Long, ByVal DD1 As Long, ByVal YY2 As Long, ByVal MM2 As Long, ByVal DD2 As Long) As Long
Private Declare Function PrintResume Lib " elzabdr.dll " () As Long
Private Declare Function PrinterStatusReport Lib " elzabdr.dll " () As Long
Private Declare Function ReadClock Lib " elzabdr.dll " (ByRef CurrentTime As String) As Long
Private Declare Function ReadUniqueNumber Lib " elzabdr.dll " (ByRef Number As String) As Long
Private Declare Function ReadVAT Lib " elzabdr.dll " (ByRef Count As Long, A As Long, B As Long, C As Long, D As Long, E As Long, F As Long, G As Long) As Long
Private Declare Function ReceiptBegin Lib " elzabdr.dll " () As Long
Private Declare Function ReceiptCancel Lib " elzabdr.dll " () As Long
Private Declare Function ReceiptConditions Lib " elzabdr.dll " () As Long 'ok
Private Declare Function ReceiptEnd Lib " elzabdr.dll " (ByVal Disc As Long) As Long
Private Declare Function ReceiptItem Lib " elzabdr.dll " (ByVal Sprzed As Long, ByVal Nazwa As String, ByVal Stawka As Long, ByVal Komunikat As Long, ByVal Ilosc As Long, ByVal MP As Long, ByVal Jedn As String, ByVal Cena As Long, ByRef Wartosc As Long) As Long
Private Declare Function ReceiptNumber Lib " elzabdr.dll " (ByRef Number As Long) As Long
Private Declare Function SetVat Lib " elzabdr.dll " (ByRef Ile As Long, ByVal A As Long, ByVal B As Long, ByVal C As Long, ByVal D As Long, ByVal E As Long, ByVal F As Long, ByVal G As Long) As Long
Private Declare Function WriteLineFeed Lib " elzabdr.dll " (ByVal Ile As Long) As Long
Private Declare Function OpenPort Lib " elzabdr.dll " (ByVal Port As Long,ByVal BaudRate As Long, ByVal STimeout As Long, ByVal RTimeout As Long) As Long
Private Declare Function RSSequence Lib " elzabdr.dll " (ByVal Code As Long, ByVal QBytesToReceive As Long, ByVal QBytesToSend As Long, ByRef InputBuffer As String, ByVal OutputBuffer As String) As Long
Private Declare Function ClosePort Lib " elzabdr.dll " () As Long
1 9600 1
+ towartestowy 1 1 1000 szt. 1
+ towartestowy 1 1 1000 szt. 1
+ towartestowy 1 1 1000 szt. 1
L 1 abcd
L 2 efgh
L 3 ijkl
L 4 mnop
L 5 rstu
L 6 wyzx
R 99
Program przyk?adowy s?u??cy do drukowania paragonu:
Format pliku wej?ciowego
Linia1 : NrPortuSzeregowego (od 1 do 9)
Kolejne linie w formacie:
[+ lub -] [nazwa] [stawka] [ilosc] [cena]
lub
[R] [rabat]
gdzie
+ pozycja sprzedazy
- pozycja korekcyjna
R rabat na ca?y paragon
[nazwa] nazwa towaru; maksymalnie 28 znaków; nazwa musi zawiera?
przynajmniej 10 znaków znacz?cych
(litery, cyfry, kropka, przecinek, uko?niki)
[stawka] stawka podatku od 1 do 7 (uwaga - stawka 5 jest stawk?
zwolnion?)
[ilosc] ilosc (maksymalna ilosc 999999, dla drukarek Omega II generacji
9999999)
[cena] cena jednostkowa towaru
[rabat] rabat na ca?y paragon; od 0 do 99
je?eli pole R nie wyst?puje, przyjmowany jest domy?lny rabat
równy 0
Opis mo?liwo?ci biblioteki elzabdr.dll
Biblioteka elzabdr.dll w wersji 1.40 s?u?y g?ównie do obs?ugi drukarek
ELZAB Omega I i II generacji. W ograniczonym zakresie mo?na z niej
korzysta? do obs?ugi drukarek FP-600. Jest to biblioteka ''statyczna''
(zbiór funkcji, nie korzysta z technologii ActiveX) napisana w Delphi
5.0
Podstawowym zadanie funkcji bibliotecznych jest u?atwienie tworzenia
programów sprzeda?y. W obecnej wersji udost?pnione s? funkcje
umo?liwiaj?ce:
wystawianie paragonu
wystawienie raportu fiskalnego dobowego oraz raportów okresowych
3. obs?ug? b??dów
I Obs?uga b??dów
Ka?da z funkcji zwraca :
- 0 co oznacza, ?e spe?nione s? warunki które sprawdza funkcja
- wi?kszy od zera b?ad wykonania funkcji; aby uzyska? opis b??du nale?y
wywo?a? funkcj?
function ErrMessage(ErrNo : longword; var Message : AnsiString)
longword;
function pErrMessage(ErrNo : longword; Message : PChar) longword;
Wykaz b??dów zwracanych przez funkcje biblioteki:
E_OK = 0;
E_SEND_TIMEOUT = 20;
E_RECV_TIMEOUT = 21;
E_IMPROPER_ANS = 23;
E_NEGATIVE_ACK = 24;
E_INIT_FAIL = 99;
E_PRODUCENT = 100;
E_ZWORA = 101;
E_KONTROLER = 102;
E_AWARIA_DR = 103;
E_UZYTKOWNIK = 104;
E_TYLKO_ODCZYT = 105;
E_WYSWIETLACZ = 106;
E_CMOS = 107;
E_ZALEGLY_R = 108;
E_BRAK_PAPIERU = 109;
E_DOK_DO_DRUK = 110;
E_ZN_DO_DRUK = 111;
E_WYDR_ZATRZ = 112;
E_STAWKI = 113;
E_PORT = 114
E_INSIDE_R = 200;
E_OUTSIDE_R = 201;
E_ZNAKI_ZNACZACE = 202;
E_STAWKA = 203;
E_KOMUNIKAT = 204;
E_ILOSC = 205;
E_MP = 206;
E_JEDN = 207;
E_CENA = 208;
E_WARTOSC = 209;
E_UNIEWAZN = 210;
E_ZERO_PARAG = 211;
E_DPOZA_ZAKR = 212;
E_ROZKAZ_NIED = 213;
E_PPOZA_ZAKR = 214;
E_ZAKRES = 215;
????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????
B??dy nieopisane powy?ej s? b??dami systemowymi.
U?ywane typy danych
Longword - liczba czterobajtowa bez znaku w zakresie 0..4294967295
AnsiString - ?a?cuch którego zako?czeniem jest znak o kodzie 0
PChar -
w wywo?aniach z warto?ci? przekazywan? do funkcji
PChar - wska?nik na ?a?cuch którego zako?czeniem jest znak o kodzie 0
alokowany
przez funkcj? wywo?uj?c?.
w wywo?aniach z warto?ci? zwracan? z funkcji
PChar - wska?nik na bufor danych (tekstowych) o d?ugo?ci nie
mniejszej ni? 255
bajtów, wype?niany przez funkcj? w standardzie
ASCIIZ.
tBuffer = array [1..256] of byte; typ ten jest u?ywany jedynie w funkcji
RSSequence
Uwaga:
Funkcje przekazuj?ce parametry typu AnsiString zosta?y ze wzgl?du na
poprzednie wersje biblioteki. W funkcjach tych wyst?puje problem ze
zwalnianiem zaalokowanej pami?ci (kolejne wywo?ania funkcji zmniejszaja
dost?pn? pami?? o 16 bajtów) co mo?e mie? znaczenie przy ci?g?ej pracy
programu (wielokrotnym wywo?ywaniu funkcji bez zamykania aplikacji).
Problem ten nie wyst?puje w funkcjach z parametrami typu PChar.
II Transmisja
Przed rozpocz?ciem u?ywania funkcji komunikuj?cych si? z drukark?
fiskaln? nale?y ustawi? parametry komunikacji.
function CommunicationInit(NrPortu : longword; Szybkosc : longword;
Timeout : longword) : longword;
NrPortu - od 1 do 4
SzybkoscTrans: 9600 lub 19200 b/s
Timeout - timeout nadawania do i odbierania z drukarki. Zaleca si?
ustawi? 5 sekund
Funkcja otwiera port szeregowy o numerze NrPortu i inicjuje go
parametrami:
szybko?? transmisji: zgodnie z parametrem Szybkosc
parzysto??: even
bity stopu: 1
timeout nadawania do drukarki: zgodnie ze zmienn? Timeout
timeout odbierania z drukarki: zgodnie ze zmienn? Timeout
Nast?pnie sprawdza rodzaj urz?dzenia pod??czonego do portu.
Sprawdza równie? czy jest otwarty paragon i w takim przypadku uniewa?nia
go.
Nale?y j? wykona? raz przed rozpocz?ciem pracy z urz?dzeniem pod??czonym
do okre?lonego portu.
Rodzaj urz?dzenia mo?na odczyta? funkcj? DeviceName.
function CommunicationEnd : longword;
Funkcja zamyka otwarty port szeregowy. Nale?y j? wykona? raz przed
zako?czeniem programu.
III Paragon
function ReceiptConditions : longword;
Sprawdzenie czy spe?nione s? wszystkie warunki konieczne do wystawienia
paragonu.
Funkcja realizuje algorytm zawarty w za??czniku 4 ''Instrukcji
programisty''.
Nie trzeba wywo?ywa? jej przed rozpocz?ciem paragonu.
function ReceiptBegin : longword;
Rozpocz?cie paragonu. Wewn?trz tej funkcji wywo?ywana jest równie?
funkcja ReceiptConditions.
function ReceiptItem(Sprzedaz : longword;Nazwa : AnsiString;Stawka,
Komunikat : longword;Ilosc : longword; MP : longword; Jedn : AnsiString;
Cena : longword; var Wartosc : longword): longword;
function pReceiptItem(Sprzedaz : longword;Nazwa : PChar;Stawka,
Komunikat : longword;Ilosc : longword; MP : longword; Jedn : PChar; Cena
: longword; var Wartosc : longword): longword;
Wydruk pozycji paragonowej.
Parametry :
Sprzedaz 1 - pozycja sprzeda?y
0 - pozycja korekcyjna (ujemna)
Nazwa: nazwa pozycji sprzeda?y; maksymalnie 28 znaków; nazwy d?u?sze s?
obcinane, a nazwy krótsze uzupe?niane spacjami do 28 znaków; nazwa musi
mie? przynajmniej 10 znaków znacz?cych dla drukarek FP-600 i Omega I
generacji lub 5 znaków znacz?cych dla drukarek Omega II generacji .
Znaki znacz?ce to: ma?e i du?e litery, cyfry, przecinek, kropka.
Stawka stawka podatku od 1 do 7 (A=1,B=2, ...G=7)
W zale?no?ci od drukarki dla:
FP-600 5-stawkowej: mo?na u?ywa? stawek od 1 do 4 i 7;
FP-600 7-stawkowej, Omegi I i II generacji: mo?na uzywa? stawek od 1 do
7
Uwaga: stawka 7 jest zawsze stawk? zwolnion? dla drukarek FP-600 i Omega
I generacji.
Dla drukarek Omega II generacji jest to stawka G (która mo?e by?
programowana dowolnie, jednak zaleca si? by w tym miejscu by?a zapisana
stawka zwolniona).
Komunikat: numer dodatkowego komunikatu drukowanego w pozycji
paragonowej
0 (brak komunikatu)
1 - Z RABATEM
2 - PRZECENA
3 - PROMOCJA
4 - Z KAUCJ?
5 - BEZ KAUCJI
6 - CENA #1
7 - CENA #2
Ilosc ilo?? (do 999999, w Omegach II generacji do 9999999)
MP miejsc po przecinku dla ilo?ci
Jedn jednostka miary - max 4 znaki ASCII
Cena cena w groszach
Wartosc - je?eli przekazana jest wartosc 0, to funkcja ReceiptItem sama
obliczy Wartosc;
Wartosc zawsze jest dodatnia, tak?e dla pozycji
korekcyjnej
Warto?? pozycji sprzeda?y zawsze w groszach;
Uwaga:
Wartosc:= (Ilosc / (10MP)) * Cena
Paragon jest automatycznie uniewa?niany je?eli:
w nazwie towaru wyst?puje za ma?o znaków znacz?cych,
podano stawk? poza zakresem,
podano numer komunikatu poza zakresem,
przekroczono maksymaln? ilo??, liczb? miejsc po przecinku lub cen?,
warto?? pozycji jest ró?na do iloczynu ilo?ci przez cen?.
W takim przypadku zwracany numer b??du wskazuje na przyczyn?
uniewa?nienia paragonu.
Paragon mo?e zosta? równie? uniewa?niony z innych powodów, np. próba
sprzeda?y w towaru w stawce niezdefiniowanej w drukarce (rezerwowej).
function PackageItem(Param : longword;Nr :longword ; Ilosc : longword;
Cena : longword): longword;
Sprzeda? lub zwrot opakowania
Param 0 - sprzeda? opakowania
1 - zwrot opakowania
2 - anulowanie sprzeda?y opakowania
3 - anulowanie zwrotu opakowania
Nr - numer opakowania
Ilosc - ilo?? opakowa?
Cena - cena opakowania
Warto?? pozycji obliczana jest automatycznie; maksymalna warto?? pozycji
to 999999999 gr
function CharsInArticleName(N : AnsiString) : longword;
function pCharsInArticleName(N : PChar) : longword;
Wynikiem funkcji jest liczba znaków znacz?cych dla drukarki
wyst?puj?cych w przekazanym ?a?cuchu znakowym N. Aby paragon zosta?
wydrukowany nazwa towaru musi mie? przynajmniej 10 (lub 5 dla drukarek
Omega II generacji) znaków znacz?cych. Funkcja ma znaczenie
informacyjne, poniewa? sprawdzenie to jest równie? wykonywane wewn?trz
funkcji ReceiptItem.
function PrintSubtotal : longword;
Drukowanie podsumy na paragonie (mo?liwe tylko w drukarkach Omega II
generacji).
function OpenDrawer(DrawerNumber : longword) : longword;
Otwarcie szuflady. Dla drukarek Omega funkcja zostanie zako?czona
poprawnie ale szuflada 2 i 3 nie zostanie otwarta.
function ReceiptEnd(Rabat : longword) : longword;
Rabat : rabat procentowy na ca?y paragon; zakres 0 - 99
Funkcja zamyka paragon.
Je?eli przed wywo?aniem funkcji zostan? ustawione p?atno?ci dodatkowe
(funkcja FillPayment) i / lub dodatkowe linie paragonowe (funkcja
FillLines) to zostan? one równie? wydrukowane.
Poprawnie wykonana funkcja ReceiptEnd zeruje zmienne przechowuj?ce
p?atno?ci i dodatkowe linie paragonowe.
function ReceiptCancel : longword;
Uniewa?nienie paragonu. Poprawnie wykonana funkcja ReceiptCancel nie
zeruje zmiennych przechowuj?cych p?atno?ci i dodatkowe linie paragonowe.
function PrintControl(BeforePrinting : byte) : longword;
BeforePrinting 0 - kontrola wydruku w czasie drukowania; funkcja czeka
na zako?czenie
drukowania
- przed drukowaniem; funkcja ko?czy si? je?eli w chwili wywo?ania nie
mo?na rozpocz?? wydruku
Funkcja realizuje algorytm kontroli stanu wydruku zapisany w za??czniku
4 ''Instrukcji programisty''. Kontrola wydruku jest wywo?ywana
wewn?trznie we wszyskich funkcjach wydruku.
function PrintResume : longword;
Wznowienie drukowania przerwanego z powodu braku papieru.
Wznowienie drukowania powinno nast?pi? po ustawieniu przez funkcj?
PrintControl E_WYDR_ZATRZ lub E_DOK_DO_DRUK.
IV Raporty i inne funkcje
function DailyReport(Unconditionally : longword) : longword;
Raport fiskalny dobowy
Unconditionally - parametr istotny w drukarkach Omega I i II generacji;
1 - raport dobowy zostanie wykonany zawsze
kiedy spe?nione s? jego
warunki
0 - raport dobowy zostanie wykonany je?eli
zosta?a wykonana sprzeda?
(by? chocia? jeden paragon po poprzednim
raporcie dobowym)
function PeriodReport(Fiscal : longword; yy1, mm1, dd1, yy2, mm2, dd2 :
longword) : longword;
Wydruk raportów okresowych wed?ug dat - szczegó?owego (fiskalnego) i
skróconego (niefiskalnego, zwanego równie? ??cznym)
Fiscal
1 - raport okresowy szczegó?owy wed?ug dat
0 - raport okresowy skrócony (??czny) wed?ug dat
yy1,dd1, mm1 - rok, miesi?c, dzie? daty pocz?tkowej raportu
yy2,dd2, mm2 - rok, miesi?c, dzie? daty ko?cowej raportu
function LockedArticlesReport : longword;
Wydruk raportu nazw towarów zablokowanych.
function MonthlyReport(Fiscal : longword; Year,Month : longword) :
longword;
Wydruk raportów miesi?cznych:
Fiscal:
1 - raport fiskalny miesi?czny
0 - raport skrócony miesi?czny
Year - rok raportu w formacie yy
Month - miesi?c raportu w formacie mm
function NumberReport(Fiscal : longword; Nr1,Nr2 : longword) : longword;
Wydruk raportów okresowych wed?ug numerów:
Fiscal:
1 - raport fiskalny okresowy
0 - raport skrócony okresowy
Nr1 - numer pocz?tkowego raportu dobowego wchodz?cego w sk?ad raportu
okresowego,
Nr2 - numer ko?cowy raportu dobowego wchodz?cego w sk?ad raportu
okresowego,
function ReceiptNumber(var Numer : longword) : longword;
Odczytanie numeru ostatniego wystawionego paragonu.
Numer - numer paragonu. Uwaga: numer paragonu jest zerowany po ka?dym
raporcie fiskalnym dobowym.
function DailyReportNumber(var Numer : longword) : longword;
Odczytanie numeru ostatniego wydrukowanego raportu dobowego.
Numer - numer raportu dobowego.
function ReadClock(var Time : AnsiString) : longword;
function pReadClock(Time : PChar) : longword;
Odczyt zegara drukarki fiskalnej.
Time - data i czas w fo???????????????????????????? " ????? " ?????
Zapis ilo?ci wierszy do wysuni?cia.
Ile - ilo?? wierszy do wysuni?cia od 1 do 30;
function PrinterStatusReport : longword;
Realizuje wydruk raportu stanu drukarki fiskalnej.
function ReadVAT (var Ile : longword; var A,B,C,D,E,F,G : longword):
longword;
Ile - ilo?? stawek podatkowych odczytanych z drukarki (zale?na od typu
pod??czonej
drukarki):
w drukarkach FP600A i FP-600B pi?ciostawkowych s? to 4 stawki (stawka
ostatnia jest zawsze stawk? zwolnion?),
w drukarkach FP-600A i FP600B siedmiostawkowych oraz Omega I generacji
jest to 6 stawek (stawka ostatnia jest zawsze stawk? zwolnion?),
w drukarkach Omega II generacji, Omega F i nowszych jest to 7 stawek (s?
one w pe?ni definiowalne, jednak nale?y je definiowa? zgodnie z
zaleceniami Ministerstwa Finansów)
A, B, C, D, E, F,G - stawki podatkowe w setnych procenta lub
Warto?? 10000 oznacza stawk? zwolnion?, warto?? 25500 oznacza stawk?
rezerwow?.
Uwaga: w drukarkach FP-600 pi?ciostawkowych mo?liwe jest wprowadzenie i
odczytanie stawek jedynie w ca?ych procentach. Aby zachowa?
kompatybilno?? z pó?niejszymi wersjami drukarek stawki zawsze s?
zwracane w setnych procenta.
function SetVAT (var Ile : longword; A,B,C,D,E,F,G : longword):
longword;
Ile - zwracana ilo?? stawek podatkowych jakie zosta?y zapisane do
drukarki (jak w funkcji ReadVat)
Stawki podatkowe nale?y zawsze podawa? w setnych procenta. Stawk?
rezerwow? nale?y podawa? jako 25500, stawk? zwolnion? jako 10000.
Funkcja nie kontroluje poprawno?ci przekazywanych parametrów, jednak
sprawdza czy stawki zosta?y zapisane do drukarki.
Przyk?adowy zapis stawek podatkowych w drukarce Omega II generacji:
A=22,00%, B=7,00%, C=0,00%, D=REZERWA, E=REZERWA, F=REZERWA, G=ZWOLNIONA
Wynik := SetVat(Ile, 2200,700,0,25500,25500,25500,10000);
W drukarkach FP600 pi?ciostawkowych mo?liwy jest zapis stawek jedynie
ca?kowitych.
Dlatego np. podanie jako parametru funkcji stawki A=1250 spowoduje
zapisanie do drukarki stawki 12%.
function FillPayment(PaymentNo : longword; PaymentName : AnsiString;
Total, Rest : longword): longword;
function pFillPayment(PaymentNo : longword; PaymentName : PChar; Total,
Rest : longword): longword;
Ustawienie p?atno?ci dodatkowych
PaymentNo - numer p?atno?ci od 1 do 4
PaymentName - nazwa p?atno?ci - maksymalnie 13 - znakowa
Total - sumaryczna wp?ata w p?atno?ci
Rest - reszta w p?atno?ci
Function FillLines(Nr : longword; Line : AnsiString;var FreeLines:
longword) : longword;
Function pFillLines(Nr : longword; Line : PChar;var FreeLines: longword)
: longword;
Ustawienie linii dodatkowych do drukowania po logo paragonowym.
Nr - nr linii dodatkowej (od 0 do 15)
Line - tre?? linii dodatkowej
FreeLines - liczba linii które mo?na jeszcze wykorzysta?
function ErasePayments : longword;
Wyzerowanie zmiennych przechowuj?cych p?atno?ci dodatkowe.
Zwraca zawsze 0.
function EraseLines : longword;
Wyzerowanie zmiennych przechowuj?cych dodatkowe linie do wydrukowania.
Zwraca zawsze 0.
function DeviceName(var Name : AnsiString) :longword;
function pDeviceName(Name : PChar) :longword;
Funkcja zwraca nazw? urz?dzenia zidentyfikowanego przez
CommunicationInit
Name - nazwa urz?dzenia
Function DllVersion(var Ver : AnsiString) : longword;
Function pDllVersion(Ver : PChar) : longword;
Funkcja zwraca zawsze 0. W zmiennej Ver zwraca wersj? biblioteki.
function DllAuthor(var Auth : AnsiString) : longword;
function pDllAuthor(Auth : PChar) : longword;
Funkcja zwraca zawsze 0. W zmiennej Auth zwracana jest informacja o
prawach autorskich autora oprogramowania (firmy ELZAB).
function ReadUniqueNumber(var Numer : AnsiString) : longword;
function pReadUniqueNumber(Numer : PChar) : longword;
Funkcja zwraca w zmiennej Numer numer unikatowy drukarki fiskalnej.
function pReadTotal(sTotal : PChar) : longword;
Funkcja zwraca w zmiennej sTotal sumaryczn? sprzeda? brutto we
wszystkich stawkach podatkowych wykonan? od ostatniego raportu dobowego.
Sprzeda? ta jest zwracana w groszach. Funkcja mo?liwa do wykonania tylko
w drukarkach Omega II generacji.
function pReadSelTotal(Rate : PChar; sTotal : PChar) : longword;
Funkcja zwraca w zmiennej sTotal sprzeda? brutto w stawce Rate wykonan?
od ostatniego raportu dobowego. Mo?liwe s? nast?puj?ce warto?ci zmiennej
Rate przekazywane do wn?trza funkcji: `A', `B', `C', `D', `E', `F', `G',
`+' .
Wywo?ania:
pReadSelTotal(`+', sTotal) i pReadTotal(sTotal)
s? równoznaczne.
Funkcja nie rozró?nia czy stawka jest zdefiniowana czy nie. Dla stawek
niezdefiniowanych (rezerwowych) funkcja zwraca b??d E_REZERWA.
Warto?? sprzeda?y brutto w danej stawce podatkowe jest przechowywana w
drukarce jako zmienna 5 - bajtowa.
Funkcja mo?liwa do wykonania tylko w drukarkach Omega II generacji.
V Bezpo?rednia obs?uga drukarki
Korzystaj?c z instrukcji programisty do drukarek fiskalnych oraz
poni?szych funkcji mo?na samodzielnie oprogramowa? funkcje drukarki nie
istniej?ce w tej bibliotece:
function OpenPort(Port:longword; BaudRate:longword;
WriteTimeout,ReadTimeout:longword):longword;
Otwarcie portu szeregowego.
Port: numer portu
BaudRate: 9600 lub 19200
WriteTimeout: timeout zapisu do drukarki; nale?y nale?y ustawi? na 5
sekund
ReadTimeout: timeout odczytu z drukarki; nale?y nale?y ustawi? na 5
sekund
Prawid?owo zako?czona funkcja zwraca warto?? 0.
Warto?ci niezerowe to b??dy.
function RSSequence(ControlCode:longword;
QuantityOfBytesToReceive:longword;
QuantityOfBytessToSend:longword; var
InputBuffer:tBuffer;
OutputBuffer:tBuffer):longword;
Pos?anie sekwencji steruj?cej. Funkcja ta umo?liwia bezpo?redni? obs?ug?
drukarki fiskalnej.
Spis sekwencji steruj?cych znajduje si? w dokumentach o nazwie
''Instrukcja programisty'' dost?pnych na HYPERLINK
ftp://ftp.elzab.com.pl ftp.elzab.com.pl .
Typ tBuffer = array [1..256] of byte
ControlCode - kod steruj?cy (zgodnie z Instrukcj? programisty);
Np. dla odczytu bajtu statusu (ESC, 0x5B) nale?y wys?a? bajt 0x5B
(czyli
dziesi?tnie 91).
QuantityOfBytesToReceive - ilo?? bajtów do odebrania, wliczaj?c w to kod
ACK
QuantityOfBytesToSend - ilo?? bajtów do pos?ania (nie wliczaj?c ESC ani
ControlCode)
InputBuffer - przechowuje dane odebrane z drukarki; odpowied? ACK nie
jest zapisana
OutputBuffer - nale?y wype?ni? danymi wpisywanymi do drukarki
Funkcja zwraca 0 (po poprawnym zako?czeniu) lub:
E_SEND_TIMEOUT,
E_RECV_TIMEOUT,
E_IMPROPER_ANS,
E_NEGATIVE_ACK.
Przyk?ad:
Odczyt numeru unikatowego:
Do drukarki nie s? posy?ane ?adne dodatkowe dane, w zwi?zku z czym
tablicy OutputBuffer nie trzeba wype?nia?.
Wynik:=RSSequence(0x71,12,0,InputBuffer, OutputBuffer)
If wynik=0 then
Begin
//od inputbuffer[0] do inputbuffer[10] zapisany jest numer unikatowy;
poczatkowy bajt 06 // //jest nadpisywany
End
Else
ObsluzBlad(wynik)
Uwaga: w Visual Basic nale?y wywo?a? funkcj? w nast?puj?cy sposób:
Dim wynik As Long
Dim InputBuffer As String * 256
Dim OutputBuffer As String * 256
InputBuffer = String(255, 0)
OutputBuffer = String(255, 0)
Mid(tablOutput, 1, 5) = String(5, Chr( & H30))
wynik = RSSequence( & HFD, 1, 5, InputBuffer, OutputBuffer)
Function ClosePort : longword;
Zamkni?cie portu szeregowego.
Prawid?owo zako?czona funkcja zwraca 0, warto?ci niezerowe to b??dy.
W dalszej kolejno?ci zostan? dodane:
funkcje odczytu sprzeda?y
funkcje drukowania dokumentów niefiskalnych
B??dy i uwagi prosz? zg?asza? na adres: HYPERLINK
mailto:markefka@elzab.com.pl markefka@elzab.com.pl
lub
HYPERLINK mailto:tk@elzab.com.pl tk@elzab.com.pl
//****************************************************************************
//* *
//* modul zawiera funkcje obslugujace porty szeregowe *
//* (inicjowanie, posylanie i odbieranie znakow) *
//* *
//****************************************************************************
#include & lt; dos.h & gt;
//************************************************
const unsigned int BazaZmiennychBiosa = 0x0400;
const unsigned long TimeoutNadawania = 200000;
const unsigned long TimeoutOdbierania = 200000;
unsigned char BylTimeout;
//************************************************
void InicjujPortSzeregowy(unsigned char NrPortu)
// Funkcja inicjuje port szeregowy o numerze NrPortu, parametrami ustawionymi
// w bajcie ParametryTransmisji:
//* wartosc bajtu ParametryTransmisji = 0xFB powoduje ustawienie nastepujacych
// parametrow transmisji:
// - predkosc transmisji 9600 bodow,
// - parzystosc parzysta (even),
// - 1 bit stopu,
// - dlugosc slowa 8 bitow.
{
const unsigned char ParametryTransmisji = 0xFB;
NrPortu--;
asm {
mov DH, 0x00
mov DL, NrPortu
mov AH, 0x00
mov AL, ParametryTransmisji
int 0x14
}
}
//************************************************
void PoslijNaPortSzeregowy(unsigned char NrPortu, unsigned char BajtZnaku)
// Funkcja posyla pojedynczy znak BajtZnaku przez port szeregowy o numerze
// NrPortu:
//* przed poslaniem znaku:
// - sprawdzane jest, czy bufor nadawania portu jest juz pusty,
// - ustawiana jest linia RTS w stan aktywny i nastepuje sprawdzanie, czy
// na linii CTS zostal ustawiony stan aktywny,
//* jesli ktorys z powyzszych warunkow nie jest spelniony, to sprawdzanie jest
// ponawiane, az warunki beda spelnione lub zostanie przekroczony timeout,
//* gdy zostanie przekroczony timeout, ustawiana jest zmienna BylTimeout na
// wartosc 1 (w przeciwnym wypadku ustawiana jest na 0),
//* w przypadku, gdy nie bylo timeouta nastepuje wyslanie znaku BajtZnaku
// (przez wstawienie go do bufora nadawania portu)
{
unsigned int BazaPortu;
unsigned int RejestrStanuTransmisji;
unsigned int RejestrSterowaniaModemem;
unsigned int RejestrStanuModemu;
unsigned long Licznik;
BazaPortu = peek(0,BazaZmiennychBiosa+(NrPortu-1)*2);
RejestrStanuTransmisji = BazaPortu+5;
RejestrSterowaniaModemem = BazaPortu+4;
RejestrStanuModemu = BazaPortu+6;
Licznik = inportb(BazaPortu);
outportb(RejestrSterowaniaModemem,inportb(RejestrSterowaniaModemem)||2);
Licznik = 0;
if (((inportb(RejestrStanuTransmisji) & 0x20) == 0x00) ||
((inportb(RejestrStanuModemu) & 0x10) != 0x10))
{
do
Licznik++;
while (!((((inportb(RejestrStanuTransmisji) & 0x20) == 0x20) & &
((inportb(RejestrStanuModemu) & 0x10) == 0x10)) ||
(Licznik & gt; TimeoutNadawania)));
if (Licznik & gt; TimeoutNadawania)
BylTimeout = 1;
else
BylTimeout = 0;
}
else
BylTimeout = 0;
if (!BylTimeout)
outportb(BazaPortu, BajtZnaku);
}
//************************************************
unsigned char OdbierzZPortuSzeregowego(unsigned char NrPortu)
// Funkcja zwraca pojedynczy znak odebrany z portu szeregowego o numerze
// NrPortu:
//* przed odebraniem znaku sprawdzane jest, czy w buforze odbierania portu
// zostal skompletowany (czeka na odebranie) znak,
//* jesli powyzszy warunek nie jest spelniony, to sprawdzanie jest ponawiane,
// az warunek bedzie spelniony lub zostanie przekroczony timeout,
//* gdy zostanie przekroczony timeout, ustawiana jest zmienna BylTimeout na
// wartosc 1 (w przeciwnym wypadku ustawiana jest na 0),
//* w przypadku, gdy nie bylo timeouta nastepuje odczytanie znaku z bufora,
// w przeciwnym wypadku funkcja zwraca przypadkowy bajt reprezentowany
// przez nie zainicjowana zmienna WartoscPrzypadkowa.
{
unsigned int BazaPortu;
unsigned int RejestrStanuTransmisji;
unsigned long Licznik;
unsigned char Bajt;
unsigned char WartoscPrzypadkowa;
BazaPortu = peek(0,BazaZmiennychBiosa+(NrPortu-1)*2);
RejestrStanuTransmisji = BazaPortu+5;
Licznik = 0;
if ((inportb(RejestrStanuTransmisji) & 0x01) == 0x00)
{
do
Licznik++;
while(!( ((inportb(RejestrStanuTransmisji) & 0x01) == 0x01) ||
(Licznik & gt; TimeoutOdbierania)));
if (Licznik & gt; TimeoutOdbierania)
BylTimeout = 1;
else
BylTimeout = 0;
}
else
BylTimeout = 0;
if (!BylTimeout)
{
Bajt = inportb(BazaPortu);
return(Bajt);
}
else
return(WartoscPrzypadkowa);
}
//************************************************
void CzyscPortSzeregowy(unsigned char NrPortu)
// Procedura czysci bufor odbierania portu szeregowego o numerze NrPortu:
//* sprawdzane jest, czy w buforze odbierania portu jest skompletowany znak,
//* jesli warunek jest spelniony, to nastepuje wyczyszczenie bufora odbierania
// portu (przez odczytanie jego zawartosci).
{
unsigned int BazaPortu;
unsigned int RejestrStanuTransmisji;
unsigned char Bajt;
BazaPortu = peek(0,BazaZmiennychBiosa+(NrPortu-1)*2);
RejestrStanuTransmisji = BazaPortu+5;
if (!((inportb(RejestrStanuTransmisji) & 0x01) == 0x00))
inportb(BazaPortu);
}
#include " extend.h "
/****************************** kody bledow *******************************/
#define mfeOk 0x0000 /* Wykonanie poprawne */
#define mfeImplementation 1
#define mfeApplication (-1)
#define mfeFunction (-2)
#define mfeAssociation (-3)
#define mfeAccess (-4)
#define mfeOk 0x0000 /* Wykonanie poprawne */
#define mfeHardware 0x0101 /* B¥d sprz©towy wewn¥trz cz©ci fiskalnej */
#define mfeReserves1 0x0102 /* Wyczerpane zasoby nieodzyskiwalne */
#define mfeInitialize1 0x0103 /* Modu niezainicjowany */
#define mfeDisplay 0x0201 /* Brak komunikacji z wywietlaczem */
#define mfePrinter 0x0202 /* B¥d komunikacji z drukark¥ */
#define mfeBattery 0x0203 /* Niskie napi©cie baterii */
#define mfeReserves2 0x0204 /* Wyczerpane zasoby odzyskiwalne */
#define mfeFirmware 0x0205 /* B¥d sprz©towy wewn¥trz cz©ci niefiskalnej */
#define mfeInitialize2 0x0206 /* Modu fiskalny nie zainicjowany przez serwisanta */
#define mfeAnyError 0x0301 /* Inny b¥d */
#define mfeNesting 0x0302 /* Niedopuszczalne zagnie¾d¾enie funkcji */
#define mfeOutOfRange 0x0303 /* Przekroczenie zakresu */
#define mfeBadTaxRate 0x0304 /* Za stawka podatkowa */
#define mfeBadSellName 0x0305 /* Towar o podanej nazwie nie mo¾e by sprzedany */
#define mfeBadDefName 0x0306 /* Towar o podanej nazwie nie mo¾e by zdefiniowany */
#define mfeNoClkChng 0x0307 /* Przestawienie zegara niemo¾liwe */
#define mfeReserve2 0x0308 /* */
#define mfeShiftOpen 0x0309 /* Zmiana otwarta */
#define mfeShiftClose 0x030A /* Zmiana zamkni©ta */
#define mfeReceiptOpen 0x030B /* Paragon w druku */
#define mfeReceiptClose 0x030C /* Paragon nie jest w druku */
#define mfeNoMoreShift 0x030D /* Limit zmian wyczerpany */
#define mfeInvFormat 0x030E /* Brak denominacji */
#define mfeHDDErr 0x030F /* B¥d komunikacji z dyskiem */
#define mfeOutOfPaper 0x0310 /* Brak papieru */
// 2. funkcje informacyjne.
// 2.1. Odczyt czasu zegara wewnetrznego MF.
// int mfGetTime( int* hour, int* minute );
CLIPPER cfGetTime (void);
// Parameters
// NUMERIC *hour
// NUMERIC *minute
// return NUMERIC
// 2.2. Odczyt daty zegara wewnetrznego MF.
// int mfGetDate( int* year, int* month, int* day );
CLIPPER cfGetDate (void);
// parameters
// NUMERIC *year
// NUMERIC *month
// NUMERIC *day
// return NUMERIC
// 2.3. Odczyt wersji MF.
// int mfGetVer( int* version, int* subVersion );
CLIPPER cfGetVersi(void);
// parameters
// NUMERIC *version
// NUMERIC *subVerion
// return NUMERIC
// 2.4. Wspolczynnik wolnych zasobow.
// int mfGetCoefficient( int* recCoefficient, int* unRecCoefficient );
CLIPPER cfGetCoefficient (void);
// parameters
// NUMERIC *recCoefficient;
// NUMERIC *unRecCoefficient;
// return NUMERIC
// 2.5. Odczyt numeru ostatniego paragonu.
// int mfGetLastTicketNo( long* lastTicketNo );
CLIPPER cfGetLastTicketNo(void);
// parameters
// NUMERIC *lastTicketNo
// return NUMERIC
// 2.6. Odczyt stawek podatkowych.
// int mfGetTax( int* taxA, int* taxB, int* taxC, int* taxD, int* taxE, int* taxF );
CLIPPER cfGetTaxRate(void);
// parameters
// NUMERIC *taxA
// NUMERIC *taxB
// NUMERIC *taxC
// NUMERIC *taxD
// NUMERIC *taxE
// NUMERIC *taxF
// return NUMERIC
/*********************************************************************/
// 3. Funkcje pomocnicze.
// 3.1. Odczyt maksymalniej liczby zmian w ciagu doby.
// int mfParMaxShiftNo( int* maxShiftNo );
CLIPPER cfParMaxShiftNo (void);
// parameters
// NUMERIC * maxShiftNo
// return NUMERIC
// 3.2. Odczyt rodzaju biblioteki (niefiskalna/fiskalna);.
// int mfParFiscal( int* flag );
CLIPPER cfParFiscal (void);
// parameters
// NUMERIC *flag
// return NUMERIC
// 3.3. Odczyt wersji biblioteki.
// int mfParLibVersion( int* version, int* subVersion );
CLIPPER cfParLibVersion (void);
// parameters
// NUMERIC *version
// NUMERIC *subVersion
// return NUMERIC
// 3.4. Odczyt tresci komunikatu.
// int mfParMessage( int code, char* groupMsg, char* detailMsg );
CLIPPER cfParMessage (void);
// parameters
// NUMERIC code
// CHARACTER *groupMsg
// CHARACTER *detailMsg
// return NUMERIC
// 3.5. Odczyt parametrow danych o towarze.
// int mfParPLU( long* maxCode, int* length, char* setOfChar );
CLIPPER cfParPLU (void);
// parameters
// NUMERIC *maxCode
// NUMERIC *length
// CHARACTER *setOfChar
// return NUMERIC
// 3.6. Odczyt parametrow dotyczacych formatu naglowka na paragonach.
// int mfParHeader ( int* flag, int* maxLines, int* length, char* setOfChar );
CLIPPER cfParHeader ( void );
// parameters
// NUMERIC *flag
// NUMERIC *maxLines
// NUMERIC *length
// CHARACTER *setOfChar
// return NUMERIC
// 3.7. Odczyt danych dotyczacych parametrow wydruku paragonu
// int mfParTicket ( int* discountDecimalPoint, int* flag );
CLIPPER cfParTicket ( void );
// parameters
// NUMERIC *discountDecimalPoint
// NUMERIC *flag
// return NUMERIC
/*********************************************************************/
// 4. Funkcje inicjujace, ustawiajace i definiujace.
// 4.1. Dopuszczenie aplikacji.
// int mfStart( char* ident, int mfPortType, int mfPortNo,
// int column, int emptyLine, char* endLine, char* cutPaper,
// int taxA, int taxB, int taxC, int taxD,
// int sBouds, int sParity, int sStopBits,
// int codePage, char* inithString );
CLIPPER cfStart ( void );
// parameters
// CHARACTER *ident
// NUMERIC mfPortType
// NUMERIC mfPortNo
// NUMERIC column
// NUMERIC emptyLine
// CHARACTER *endLine
// CHARACTER *cutPaper
// NUMERIC taxA, taxB, taxC, taxD
// NUMERIC cBouds, sParity, sStopBits
// NUMERIC codePage
// CHARACTER *inithString
// return NUMERIC
// 4.2. Definicja stopki paragonu.
// int mfParFooter( int* maxLines, int* length, char* setOfChar );
CLIPPER cfParFooter ( void );
// parameters
// NUMERIC *maxLines
// NUMERIC *length
// CHARACTER *setOfChar
// return NUMERIC
// b); FP definiujaca stopke
// int mfDefFooter( char* footer );
CLIPPER cfDefFooter ( void );
// parameters
// CHARACTER * footer
// return NUMERIC
// 4.3. Definicja numeru kasy i kasjera oraz nazwy kasjera
// int mfParPOS( int* maxCashNo, int* maxCashierNo,
// int* lengthName, char* setOfChar );
CLIPPER cfParPOS ( void );
// parameters
// NUMERIC *maxCashNo
// NUMERIC *maxCashierNo
// NUMERIC *lengthName
// CHARACTER *setOfChar
// return NUMERIC
// b); FP definiujaca kasy i kasjera oraz nazwe kasjera
// FP definiujaca numer kasy i kasjera oraz nazwe kasjera
// int mfDefPOS ( int cashNo, int cashierNo, char* cashierName );
CLIPPER cfDefPOS ( void );
// parameters
// NUMERIC cashNo
// NUMERIC cashierNo
// CHARACTER *cashierName
// return NUMERIC
// 4.4. Ustawienie czasu zegara wewnetrznego MF.
// int mfParTime( void );
CLIPPER cfParTime ( void );
// parameters
// none
// return NUMERIC
// int mfDefTime( int hour, int minute );
CLIPPER cfDefTime ( void );
// parameters
// NUMERIC hour
// NUMERIC minute
// return NUMERIC
// 4.5. Ustawienie wewnetrznego licznika paragonow MF.
// int mfParCounter ( void );
CLIPPER cfParCounter ( void );
// parameters
// none
// return NUMERIC
// b);
// int mfDefCounter( long* counter );
CLIPPER cfDefCounter ( void );
// parameters
// NUMERIC *counter
// return NUMERIC
/*********************************************************************/
// 5. Funkcje towarowe.
// 5.1.SFI zwracajace informacje o mozliwosci zaktualizowania bazy towarowej
// a) SFI zwracajaca informacje o mozliwosci czesciowego zaktualizowania
// bazy towarowej
// int mfParDefPLU( void );
CLIPPER cfParDefPLU ( void );
// parameters
// none
// return NUMERIC
// b) SFI zwracajaca informacje o mozliwosci calkowitego zaktualizowania
// bazy towarowej
// int mfParDefAllPLU( void );
CLIPPER cfParDefAllPLU ( void );
// parameters
// none
// return NUMERIC
// 5.2. Rozpoczecie calkowitego ladowania towarow.
// int mfBeDefPLU( void );
CLIPPER cfBeDefPLU (void);
// parameters
// none
// return NUMERIC
// 5.3. Rozpoczecie calkowitego ladowania towarow
// int mfBeDefAllPLU ( void );
CLIPPER cfBeDefAllPLU ( void );
// parameters
// none
// return NUMERIC
// 5.4. Zaladowanie jednego towaru.
// int mfDefPLU( long no, char* name, char taxCode );
CLIPPER cfDefPLU (void);
// parameters
// NUMERIC no
// CHARACTER *name
// CHARACTER taxCode
// return NUMERIC
// 5.5. Zakonczenie ladowania towarow.
// int mfEndDefPLU( void );
CLIPPER cfEndDefPLU (void);
// parameters
// none
// return NUMERIC
/*********************************************************************/
// 6. Funkcje obslugujace paragon fiskalny.
// 6.1. Rozpoczecie doby fiskalnej.
// int mfBeginShift( char* header );
CLIPPER cfBeginShift ( void );
// parameters
// CHARACTER *header
// return NUMERIC
// 6.2. Rozpoczecie wydruku paragonu.
// int mfBeginTicket( void );
CLIPPER cfBeginTicket (void);
// parameters
// NUMERIC total
// return NUMERIC
// 6.3. Wydruk linii paragonu.
// int mfLineTicket( long no, char* name, char taxCode,
// char* unitStr, long price, long quantity, long value );
CLIPPER cfLineTicket (void);
// parameters
// NUMERIC no
// CHARACTER *name
// CHARACTER taxCode
// CHARACTER *unitStr
// NUMERIC price
// NUMERIC quantity
// NUMERIC value
// return NUMERIC
// 6.4. Uniewaznienie linii paragonu.
// int mfStornoLineTicket( long No, char* Name, char TaxCode,
// char* unitStr, long Price, long Quantity, long Value );
CLIPPER cfStornoLineTicket (void);
// parameters
// NUMERIC no
// CHARACTER *name
// CHARACTER taxCode
// CHARACTER *unitStr
// NUMERIC price
// NUMERIC quantity
// NUMERIC value
// return NUMERIC
// 6.5. Uniewaznienie paragonu.
// int mfStornoTicket( void );
CLIPPER cfStornoTicket (void);
// parameters
// none
// return NUMERIC
// 6.6. Zakonczenie wydruku paragonu
// int mfEndTicket( int percentDiscount, long valueDiscount,
// long transactionNo,
// long payment1, const char * paymStr1,
// long payment2, const char * paymStr2,
// long payment3, const char * paymStr3,
// long change, const char * changeStr,
// long pawn, const char * pawnStr,
// const char * tableStr,
// const char * custStr );
CLIPPER cfEndTicket ( void );
// parameters
// NUMERIC percentDiscount
// NUMERIC valueDiscount
// NUMERIC transactionNo
// NUMERIC payment1
// CHARACTER paymStr1
// NUMERIC payment2
// CHARACTER paymStr2
// NUMERIC payment3
// CHARACTER paymStr3
// NUMERIC change
// CHARACTER changeStr
// NUMERIC pawn
// CHARACTER pawnStr
// CHARACTER tableStr
// CHARACTER custStr
// return NUMERIC
// 6.7. Zamkniecie zmiany.
// int mfShiftEnd ( void );
CLIPPER cfShiftEnd ( void );
// parameters
// none
// return NUMERIC
// 6.8. Wydruk linii paragonu aptecznego.
// int mfAptLineTicket( long no, const char *name, char taxCode,
// const char *unit,
// long price, long quantity, long value, long charge,
// const char *payType, const char *recType, long refundation );
CLIPPER cfAptLineTicket ( void );
// parameters
// NUMERIC no
// CHARACTER *name
// CHARACTER taxCode
// CHARACTER *unit
// NUMERIC price
// NUMERIC quantity
// NUMERIC value
// NUMERIC charge
// CHARACTER *payType
// CHARACTER *recType
// NUMERIC refundation
// return NUMERIC
/*********************************************************************/
// 7. Funkcje obslugujace raporty fiskalne.
// 7.1. Rozpoczecie wydruku listy towarow danej stawki podatkowej.
// a); SFI sprawdzajaca czy FP jest wykonalna
// int mfParPrBeTaxCode( void );
CLIPPER cfParPrBeTaxCode (void);
// parameters
// none
// return NUMERIC
// b); FP rozpoczynajaca wydruk towarow z okreslonej stawki podatkowej
// int mfPrBeTaxCode( char taxCode );
CLIPPER cfPrBeTaxCode (void);
// parameters
// CHARACTER taxCode
// return NUMERIC
// 7.2. Rozpoczecie wydruku listy towarow wedlug numeru porzadkowego.
// int mfParPrBeItemNo( void );
CLIPPER cfParPrBeItemNo (void);
// parameters
// none
// return NUMERIC
// b); FP rozpoczynajaca wydruk towarow z okreslonego przedzialu kodow towarow
// int mfPrBeItemNo( long startItem, long* stopItem );
CLIPPER cfPrBeItemNo (void);
// parameters
// NUMERIC *startItem
// NUMERIC *stopItem
// return NUMERIC
// 7.3. Wydruk pojedynczego towaru.
// int mfPrItem( long no, char* name, char taxCode );
CLIPPER cfPrItem (void);
// parameters
// NUMERIC no
// CHARACTER *name
// CHARACTER taxCode
// return NUMERIC
// 7.4. Zakonczenie wydruku listy towarow.
// int mfPrEnd( void );
CLIPPER cfPrEnd (void);
// parameters
// none
// return NUMERIC
// 7.5. Raport okresowy szczegolowy
// int mfPrDetailReport( int startYear, int startMonth, int startDay,
// int stopYear, int stopMonth, int stopDay );
CLIPPER cfPrDetailReport (void);
// parameters
// NUMERIC startYear
// NUMERIC startMonth
// NUMERIC startDay
// NUMERIC stopYear
// NUMERIC stopMonth
// NUMERIC stopDay
// return NUMERIC
// 7.6. Raport okresowy sumaryczny.
// int mfPrGlobalReport( int startYear, int startMonth, int startDay,
// int stopYear, int stopMonth, int stopDay );
CLIPPER cfPrGlobalReport (void);
// parameters
// NUMERIC startYear
// NUMERIC startMonth
// NUMERIC startDay
// NUMERIC stopYear
// NUMERIC stopMonth
// NUMERIC stopDay
// return NUMERIC
// 7.7. Wydruk stanu modulu fiskalnego.
// int mfParPrState( void );
CLIPPER cfParPrState (void);
// parameters
// none
// return NUMERIC
// b); FP drukujaca stan modulu fiskalnego
// int mfPrState( void );
CLIPPER cfPrState (void);
// parameters
// none
// return NUMERIC
// 7.8. SFI sprawdzajaca cz FP jest wykonywalna
// int mfParPrChangeItem ( void );
CLIPPER cfParPrChangeItem ( void );
// parameters
// none
// return NUMERIC
//
// b); FP drukujaca wydruk listy zmian towarow
// int mfPrChangeItem ( void );
CLIPPER cfPrChangeItem ( void );
// parameters
// none
// return NUMERIC
/*********************************************************************/
// 8. Funkcje obsugujce paragon fiskalny
// 8.1. Wydruk kwitu wplaty do kasy KP
// a); SFI okreslajaca czy skojarzona FP jest dostepna w danej DF
// int mfParPayIn ( void );
CLIPPER cfParPayIn ( void );
// parameters
// none
// return NUMERIC
// b); FP drukujaca dokument
// int mfPrPayIn ( char* no, char* personName, char* payInName, char* amount);
CLIPPER cfPrPayIn ( void );
// parameters
// CHARACTER *no
// CHARACTER *personName
// CHARACTER *payInName
// CHARACTER *amount
// return NUMERIC
// 8.2. Wydruk kwitu wyplaty z kasy KW
// a); SFI okreslajaca czy skojarzona FP jest dostepna w danej DF
// int mfParPayOut ( void );
CLIPPER cfParPayOut ( void );
// parameters
// none
// return NUMERIC
// b); FP drukujaca dokument
// int mfPrPayOut ( char* no, char* personName, char* payInName, char* amount);
CLIPPER cfPrPayOut ( void );
// parameters
// CHARACTER *no
// CHARACTER *personName
// CHARACTER *payInName
// CHARACTER *amount
// return NUMERIC
// 8.3. Wydruk kwitu (bonu); zamowienia w kuchni
// a); SFI okreslajaca czy skojarzona FP jest dostepna w danej DF
// int mfParOrder ( void );
CLIPPER cfParOrder ( void );
// parameters
// none
// return NUMERIC
// b); FP rozpoczynajaca wydruk
// int mfBgOrder ( char* title, char* name );
CLIPPER cfBgOrder ( void );
// parameters
// CHARACTER *title
// CHARACTER *name
// return NUMERIC
// c); FP drukujaca jedna linie dokumentu
// int mfLineOrder ( char* name, char* modified, char* quant );
CLIPPER cfLineOrder ( void );
// parameters
// CHARACTER *name
// CHARACTER *modified
// CHARACTER *quant
// return NUMERIC
// d); FP konczaca wydruk
// int mfEndOrder ( void );
CLIPPER cfEndOrder ( void );
// parameters
// none
// return NUMERIC
// 8.4. Wydruk dokumentu zwrotu towarow
// a); SF okreslajaca czy skojarzona FP jest dostepna w danej DF
// int mfParReturn ( void );
CLIPPER cfParReturn ( void );
// parameters
// none
// return NUMERIC
// b); FP rozpoczynajaca wydruk
// int mfBgReturn ( char* no, char* personName, char* value );
CLIPPER cfBgReturn ( void );
// parameters
// CHARACTER *no
// CHARACTER *personName
// CHARACTER *value
// return NUMERIC
// c); FP drukujaca jedna linie dokumentu
// int mfLineReturn ( char* name, char* quant, char* total );
CLIPPER cfLineReturn ( void );
// parameters
// CHARACTER *name
// CHARACTER *quant
// CHARACTER *total
// return NUMERIC
// d); FP konczaca wydruk
// int mfEndReturn ( void );
CLIPPER cfEndReturn ( void );
// parameters
// none
// return NUMERIC
// 8.5. Wydruk raportu rozliczenia kasjera
// a); SFI okreslajaca czy skojarzona FP jest dostepna w danej DF
// int mfParCashierReport ( void );
CLIPPER cfParCashierReport ( void );
// parameters
// none
// return NUMERIC
// b); FP rozpoczynajaca wydruk
// int mfBgCashierReport ( char* no, char* name );
CLIPPER cfBgCashierReport ( void );
// parameters
// CHARACTER *no
// CHARACTER *name
// return NUMERIC
// c); FP drukujaca jedna linie dokumentu
// int mfLineCashierReport(int typeNo, char* name, char* counted,
// char* cash, char* difference);
CLIPPER cfLineCashierReport ( void );
// parameters
// NUMERIC typeNo
// CHARACTER *name
// CHARACTER *counted
// CHARACTER *cash
// CHARACTER *difference
// return NUMERIC
// d); FP konczaca wydruk
// int mfEndCashierReport ( void );
CLIPPER cfEndCashierReport ( void );
// parameters
// none
// return NUMERIC
// 8.6. Wydruk niefiskalnego raportu konca zmiany
// a); SFI okreslajaca czy skojarzona FP jest dostepna w danej DF
// int mfParShiftReport ( void );
CLIPPER cfParShiftReport ( void );
// parameters
// none
// return NUMERIC
// b); FP rozpoczynajaca wydruk
// int mfBgShiftReport ( char* no, char* startDate, char* endDate );
CLIPPER cfBgShiftReport ( void );
// parameters
// CHARACTER *no
// CHARACTER *startDate
// CHARACTER *endDate
// CHARACTER *personName
// return NUMERIC
// c); FP drukujaca jedna linie dokumentu
// int mfLineShiftReport (int typeNo, char* name, char* counted,
// char* cash, char* difference);
CLIPPER cfLineShiftReport ( void );
// parameters
// NUMERIC typeNo
// CHARACTER *name
// CHARACTER *counted
// CHARACTER *cash
// CHARACTER *difference
// return NUMERIC
// d); FP konczaca wydruk
// int mfEndShiftReport ( void );
CLIPPER cfEndShiftReport ( void );
// parameters
// none
// return NUMERIC
// 8.7. Uniewaznienie dokumentu
// int mfPrVoid ( void );
CLIPPER cfPrVoid ( void );
// parameters
// none
// return NUMERIC
/*********************************************************************/
// 9. Funkcje obslugujace szuflade.
// 9.1. Definicja parametrow (rodzaju); szuflady.
// int mfParDrawer( int item, char* name, int* maxNo );
CLIPPER cfParDrawer (void);
// parameters
// NUMERIC item
// CHARACTER *name
// NUMERIC *maxNo
// return NUMERIC
// b); FP definiujaca typ szyflady
// int mfDefDrawer( int item, int portNo );
CLIPPER cfDefDrawer ( void );
// parameters
// NUMERIC item
// NUMERIC portNo
// return NUMERIC
// 9.2. Otwarcie szuflady.
// int mfDrawerOpen( int no );
CLIPPER cfDrawerOpen ( void );
// parameters
// NUMERIC no
// return NUMERIC
// 9.3. Sprawdzenie stanu szuflady.
// int mfDrawerIsOpen( int no, int* flag );
CLIPPER cfDrawerIsOpen (void);
// parameters
// NUMERIC no
// NUMERIC *flag
// return NUMERIC
/*********************************************************************/
// 10. Funkcje obslugujace wyswietlacz.
// 10.1. Definicja parametrow wyswietlacza.
// int mfParFiscDisp( int item, char* name,
// int* column, int* row, char* setOfChar,
// int* numericFlag,
// int* pointFlag );
CLIPPER cfParFiscDisp (void);
// parameters
// NUMERIC item
// CHARACTER *name
// NUMERIC *column
// NUMERIC *row
// CHARACTER *setOfChar
// NUMERIC *numericFlag
// NUMERIC *pointFlag
// return NUMERIC
// b); FP definiujaca wyswietalcz dostepny z listy ( fiskalny lub niestandardowy );
// int mfDefFiscalDisp( int item, int portNo );
CLIPPER cfDefSetFiscalDisp (void);
// parameters
// NUMERIC item
// NUMERIC portNo
// return NUMERIC
// 10.3. Wyswietlenie POZYCJI SPRZEDAZY.
// int mfDispTicketLine( char* Name, long Price, long Quantity, long Value );
CLIPPER cfDispTicketLine (void);
// parameters
// CHARACTER *Name
// NUMERIC Price
// NUMERIC Quantity
// NUMERIC Value
// return NUMERIC
// 10.4. Wyswietlenie SUMY.
// int mfDispSum( char* SumName, long SumValue );
CLIPPER cfDispSum (void);
// parameters
// CHARACTER *sumName
// NUMERIC sumValue
// return NUMERIC
// 10.5. Wyswietlenie PODSUMOWANIA.
// int mfDispSummary( char* payName, long payValue,
// char* remainderName, long remainderValue );
CLIPPER cfDispSummary (void);
// parameters
// CHARACTER *payName
// NUMERIC payValue
// CHARACTER *remainderName
// NUMERIC remainderValue
// return NUMERIC
// 10.6. Wyswietlenie LOGO UZYTKOWNIKA.
// int mfDispConsumerLOGO( char* lineLOGO1, char* LineLOGO2 );
CLIPPER cfDispConsumerLOGO (void);
// parameters
// CHARACTER *lineLOGO1
// CHARACTER *lineLOGO2
// return NUMERIC
/*********************************************************************/
// 11. Funkcje statusowe.
// 11.1. Tryb szkoleniowy / fiskalny.
// int mfStatMode( int* flag );
CLIPPER cfStatMode (void);
// parameters
// NUMERIC *flag
// return NUMERIC
// 11.2. Waluta przed denominacja / po denominacji
// int mfStatDenom ( int* flag );
CLIPPER cfStatDenom ( void );
// parameters
// NUMERIC *flag
// return NUMERIC
// 11.3. Zmiana zamknieta / otwarta.
// int mfStatShift( int* flag );
CLIPPER cfStatShift (void);
// parameters
// NUMERIC *flag
// return NUMERIC
// 11.4. Paragon zamkniety / otwarty.
// int mfStatReceipt( int* flag );
CLIPPER cfStatRecept (void);
// parameters
// NUMERIC *flag
// return NUMERIC
// 11.5. Dokument nie drukowany / drukowany.
// int mfStatDocument( int* flag );
CLIPPER cfStatDocument (void);
// parameters
// NUMERIC * flag
// return NUMERIC
// 11.6. Brak papieru
// int mfStatNoPaper( int *flag );
CLIPPER cfStatNoPaper (void);
// parameters
// NUMERIC * flag
// return NUMERIC
/*********************************************************************/
// 12. Funkcje obslugujace apteczne paragony niefiskalne
// 12.1. Wycena leku
// a)
// int mfWycena1( int numerStacji,
// const char *nazwa, const char *dawka, const char *opakowanie,
// long ilosc, long cena, long wartosc, long oplata,
// const char *PTUstawka, long PTUwartosc );
CLIPPER cfWycena1 (void);
// parameters
// NUMERIC numerStacji
// CHARACTER *nazwa
// CHARACTER *dawka
// CHARACTER *opakowanie
// NUMERIC ilosc
// NUMERIC cena
// NUMERIC wartosc
// NUMERIC oplata
// CHARACTER PTUstawka
// NUMERIC PTUwartosc
// return NUMERIC
// b)
// int mfWycena2( const char *iloscLekospisowa, long limit, long ponadLimit,
// long oplataPodstawowa, long doplata100, long refundacja,
// const char *pacjent, const char *lekarz,
// const char *refundator, const char *wojewodztwo );
CLIPPER cfWycena2 (void);
// parameters
// CHARACTER iloscLekospisowa
// NUMERIC limit
// NUMERIC ponadLimit
// NUMERIC oplataPodstawowa
// NUMERIC doplata100
// NUMERIC refundacja
// CHARACTER *pacjent
// CHARACTER *lekarz
// CHARACTER *refundator
// CHARACTER *wojewodztwo
// return NUMERIC
// c)
// int mfWycena3( const char *platne, const char *recepta,
// int refundacja, const char *wydal,
// int kasa, long transakcja );
CLIPPER cfWycena3 (void);
// parameters
// CHARACTER *platne
// CHARACTER *recepta
// NUMERIC refundacja
// CHARACTER *wydal
// NUMERIC kasa
// NUMERIC transakcja
// return NUMERIC
//d)
CLIPPER cfAnulujWy (void);
// 12.2. Wycena leku - kupon RUM
// a)
// int mfRUMStart( int numerStacji,
// const char *recepta,
// const char *kupon );
CLIPPER cfRUMStart(void);
// b)
// int mfRUMLinia( const char *tekst,
// const char *opakowanie,
// const char *ilosc,
// const char *cena,
// const char *stawka,
// const char *podatek,
// const char *wartosc,
// const char *platne,
// const char *odplatnosc,
// const char *refundacja,
// const char *recepta );
CLIPPER cfRUMLinia(void);
// c)
// int mfRUMStop( const char *odplatnosc,
// const char *refundacja,
// const char *slownie,
// const char *pacjent,
// const char *lekarz,
// const char *refundator,
// const char *wojewodztwo,
// const char *wydal,
// const char *kasa );
CLIPPER cfRUMStop(void);
// 12.3. Wycena leku robionego
// int mfLekStart( int numerStacji,
// const char *recepta,
// const char *odplatnosc,
// const char *nrRecepty );
CLIPPER cfLekStart(void);
// int mfLekLinia( const char *nazwa,
// const char *ilosc,
// const char *wartosc );
CLIPPER cfLekinia(void);
// int mfLekStop( const char *wartoscBrutto,
// const char *wartoscNetto,
// const char *podatek,
// const char *taksaLaborum,
// const char *doZaplaty,
// const char *starychZlotych,
// const char *pacjent,
// const char *lekarz,
// const char *refundator,
// const char *wojewodztwo,
// const char *wydal,
// const char *przyjal,
// const char *wycenil,
// const char *kasa,
// const char *terminOdbioru,
// const char *numerLeku );
CLIPPER cfLekStop(void);
// 12.4 Wydruk dowolnej linii
// int mfDrukuj( const char *formularz, const char *wiersz, const char *argument );
CLIPPER cfDrukuj (void);
/*********************************************************************/
// 13. Funkcje obslugujace faktury
// 13.1 Rozpoczecie faktury
// int mfFaktStart( int wysuw,
// int typ, int napis,
// int linii, int typRamki,
// const char *nrFakt,
// const char *nrOrg,
// const char *miasto,
// const char *dataWyst,
// const char *dataSprz,
// const char *nrParag,
// const char *nrKasy,
// const char *sprzedawca,
// const char *sprzedawcaNIP,
// const char *nabywca,
// const char *nabywcaNIP,
// const char *transport,
// const char *bank,
// const char *platnosc,
// const char *termin,
// long paperInTimeOut,
// long paperOutTimeOut );
CLIPPER cfFaktStar (void);
// 13.2 Wydruk linii faktury
// int mfFaktLinia( const char *nazwa,
// const char *sww,
// const char *jm,
// const char *ilosc,
// const char *cena,
// const char *wartNetto,
// const char *wartBrutto,
// const char *stawka,
// const char *wartPTU,
// const char *wartOpl );
CLIPPER cfFaktLini (void);
// 13.3 Zakonczenie faktury
// int mfFaktKoniec( const char *slownie,
// const char *doZapl,
// const char *nazwaSprz,
// const char *nazwaOdb,
// const char *dopiski,
// const char *wartNettoA,
// const char *wartBruttoA,
// const char *stawkaA,
// const char *wartPTUA,
// const char *wartNettoB,
// const char *wartBruttoB,
// const char *stawkaB,
// const char *wartPTUB,
// const char *wartNettoC,
// const char *wartBruttoC,
// const char *stawkaC,
// const char *wartPTUC,
// const char *wartNettoD,
// const char *wartBruttoD,
// const char *stawkaD,
// const char *wartPTUD,
// const char *wartNettoE,
// const char *wartBruttoE,
// const char *stawkaE,
// const char *wartPTUE,
// const char *wartNettoF,
// const char *wartBruttoF,
// const char *stawkaF,
// const char *wartPTUF,
// const char *wartZwol,
// const char *wartNettoSum,
// const char *wartBruttoSum,
// const char *wartPTUSum );
CLIPPER cfFaktKoni (void);
// 13.4 Anulacja faktury
CLIPPER cfAnulujFa (void);
// parameters
// none
// return NUMERIC
// 13.5 Stan czujnikow papieru
// int mfFaktPaper( int *paperIn, int *paperOut );
CLIPPER cfFaktPape (void);
// parameters
// int *paperIn, int *paperOut
// return NUMERIC
/*********************************************************************/
// Dodatek A - Komunikacja bezposrednia z DF
// int mfAnyCommand( int outputL, char *output, int inputL, char *input, int *resultL, long timeOut );
CLIPPER cfAnyComma (void);
/*********************************************************************/
// Odczyt kodu bledu
// int mfError( void );
CLIPPER cfError ( void );
// parameters
// none
// return NUMERIC
#ifndef __MFBO2_H
#define __MFBO2_H
/****************************************************************************/
#ifndef MFBO_INT
# ifdef __WIN32__
# ifdef __DLL__
# define MFBO_INT int _export
# else
# define MFBO_INT extern " C " int _stdcall
# endif
# else
# ifdef __DLL__
# define MFBO_INT int far pascal _export
# else
# define MFBO_INT int far pascal
# endif
# endif
#endif
#ifndef __MFPARAM
#define __MFPARAM
#endif
#ifndef __MFVPARAM
#define __MFVPARAM void
#endif
/****************************** kody bledow *******************************/
#define mfeOk 0 /* Wykonanie poprawne */
#define mfeImplementation 1
#define mfeApplication (-1)
#define mfeFunction (-2)
#define mfeAssociation (-3)
#define mfeAccess (-4)
#define mfeHardware 0x0101 /* B¥d sprz©towy w cz©ci fiskalnej */
#define mfeReserves1 0x0102 /* Wyczerpane zasoby nieodzyskiwalne */
#define mfeInitialize1 0x0103 /* Modu niezainicjowany */
#define mfeDisplay 0x0201 /* Brak komunikacji z wywietlaczem */
#define mfePrinter 0x0202 /* B¥d komunikacji z drukark¥ */
#define mfeBattery 0x0203 /* Niskie napi©cie baterii */
#define mfeReserves2 0x0204 /* Wyczerpane zasoby odzyskiwalne */
#define mfeFirmware 0x0205 /* B¥d sprz©towy w cz©ci niefiskalnej */
#define mfeInitialize2 0x0206 /* Modu nie zainicjowany przez serwisanta */
#define mfeAnyError 0x0301 /* Inny b¥d */
#define mfeNesting 0x0302 /* Niedopuszczalne zagnie¾d¾enie funkcji */
#define mfeOutOfRange 0x0303 /* Przekroczenie zakresu */
#define mfeBadTaxRate 0x0304 /* Za stawka podatkowa */
#define mfeBadSellName 0x0305 /* Towar nie mo¾e by sprzedany */
#define mfeBadDefName 0x0306 /* Towar nie mo¾e by zdefiniowany */
#define mfeNoClkChng 0x0307 /* Przestawienie zegara niemo¾liwe */
#define mfeReserve2 0x0308 /* Niepoprawny numer seryjny */
#define mfeShiftOpen 0x0309 /* Zmiana otwarta */
#define mfeShiftClose 0x030A /* Zmiana zamkni©ta */
#define mfeReceiptOpen 0x030B /* Paragon w druku */
#define mfeReceiptClose 0x030C /* Paragon nie jest w druku */
#define mfeNoMoreShift 0x030D /* Limit zmian wyczerpany */
#define mfeInvFormat 0x030E /* Brak denominacji */
#define mfeHDDErr 0x030F /* B¥d komunikacji z dyskiem */
#define mfeOutOfPaper 0x0310 /* Brak papieru */
#ifdef __cplusplus
extern " C " {
#endif
/****************************************************************************/
/* 2. Funkcje informacyjne */
/****************************************************************************/
/* 2.1. Odczyt czasu zegara wewnetrznego drukarki fiskalnej */
MFBO_INT mfGetTime( int *hour, int *minute __MFPARAM );
/* 2.2. Odczyt daty zegara wewnetrznego drukarki fiskalnej */
MFBO_INT mfGetDate( int *year, int *month, int *day __MFPARAM );
/* 2.3. Odczyt wersji drukarki fiskalnej */
MFBO_INT mfGetVersion( int *version, int *subVersion __MFPARAM );
/* 2.4. Wspolczynnik wolnych zasobow */
MFBO_INT mfGetCoefficient( int *reCoefficient, int *unCoefficient __MFPARAM );
/* 2.5. Odczyt numeru ostatniego paragonu */
MFBO_INT mfGetLastTicketNo( long *lastTicketNo __MFPARAM );
/* 2.6. Odczyt stawek podatkowych */
MFBO_INT mfGetTax( int *taxA, int *taxB, int *taxC, int *taxD, int *taxE, int *taxF __MFPARAM );
/****************************************************************************/
/* 3. Funkcje informacyjne stale */
/****************************************************************************/
/* 3.1. Odczyt maksymalniej liczby zmian w ciagu doby */
MFBO_INT mfParMaxShiftNo( int *maxShiftNo __MFPARAM );
/* 3.2. Odczyt rodzaju biblioteki (niefiskalna/fiskalna) */
MFBO_INT mfParFiscal( int *flag __MFPARAM );
/* 3.3. Odczyt wersji biblioteki */
MFBO_INT mfParLibVersion( int *version, int *subVersion, char *name __MFPARAM );
/* 3.4. Odczyt tresci komunikatu */
MFBO_INT mfParMessage( int code, char *groupMsg, char *detailMsg __MFPARAM );
/* 3.5. Odczyt parametrow danych o towarze */
MFBO_INT mfParPLU( long *maxCode, int *length, char *setOfChar __MFPARAM );
/* 3.6. Odczyt parametrow dotyczacych formatu naglowka na paragonach */
MFBO_INT mfParHeader( int *flag, int *maxLines, int *length, char *setOfChar __MFPARAM );
/* 3.7. Odczyt danych dotyczacych parametrow wydruku paragonu */
MFBO_INT mfParTicket( int *discountDecimalPoint, int *flag __MFPARAM );
/****************************************************************************/
/* 4. Funkcje inicjujace, ustawiajace i definiujace */
/****************************************************************************/
/* 4.1. Dopuszczenie aplikacji */
MFBO_INT mfStart( const char *ident, int mfPortNo __MFPARAM );
MFBO_INT mfStop( __MFVPARAM );
MFBO_INT mfStart2( const char *ident,
int mfPortType,
int mfPortNo,
int column,
int emptyLine,
const char *endLine,
const char *cutPaper,
int taxA, int taxB, int taxC, int taxD, int taxE, int taxF,
int sBauds, int sParity, int sHandshake,
int codePage,
const char *inithString __MFPARAM );
/* 4.2. Definicja stopki paragonu */
/* a) SFI zwracajaca dane dotyczace formatu stopki drukowanej na paragonach */
MFBO_INT mfParFooter( int *maxLines, int *length, char*setOfChar __MFPARAM );
/* b) FP definiujaca stopke */
MFBO_INT mfDefFooter( const char *footer __MFPARAM );
/* 4.3. Definicja numeru kasy i kasjera oraz nazwy kasjera */
/* a) SFI zwracajaca dopuszczalny zakres parametrow numeracji kasy i kasjera*/
/* oraz nazwy kasjera */
MFBO_INT mfParPOS( int *maxCashNo, int *maxCashierNo,
int *lengthName, char *setOfChar __MFPARAM );
/* b) FP definiujaca numer kasy i kasjera oraz nazwe kasjera */
MFBO_INT mfDefPOS( int cashNo, int cashierNo, const char *cashierName __MFPARAM );
/* 4.4. Ustawienie czasu zegara wewnetrznego drukarki fiskalnej */
/* a) SFI sprawdzajaca czy ustawienie czasu w zegarze jest wykonalne */
/* (w danej chwili) */
MFBO_INT mfParTime( __MFVPARAM );
/* b) FP ustawiajaca czas zegara wewnetrznego drukarki fiskalnej */
MFBO_INT mfDefTime( int hour, int minute __MFPARAM );
/* 4.5. Ustawianie wewnetrznego licznika paragonow */
/* a) SFI sprawdzajaca czy ustawienie licznika paragonow jest wykonalne */
/* (w danej chwili) */
MFBO_INT mfParCounter( __MFVPARAM );
/* b) FP ustawiajaca licznik paragonow */
MFBO_INT mfDefCounter( long *counter __MFPARAM );
/* 4.6. Odczyt i ustawianie definiowanych napisow */
/* a) SFI odczytujaca napis i parametry */
MFBO_INT mfParString( int stringID, char *string, int *maxLen __MFPARAM );
/* b) SFI redefiniujaca napis */
MFBO_INT mfDefString( int stringID, const char *string __MFPARAM );
/****************************************************************************/
/* 5. Funkcje towarowe */
/****************************************************************************/
/* 5.1.SFI zwracajace informacje o mozliwosci zaktualizowania bazy towarowej*/
/* a) SFI zwracajaca informacje o mozliwosci czesciowego zaktualizowania */
/* bazy towarowej */
MFBO_INT mfParDefPLU( __MFVPARAM );
/* b) SFI zwracajaca informacje o mozliwosci calkowitego zaktualizowania */
/* bazy towarowej */
MFBO_INT mfParDefAllPLU( __MFVPARAM );
/* 5.2. Rozpoczecie czesciowego ladowania towarow */
MFBO_INT mfBeDefPLU( __MFVPARAM );
/* 5.3. Rozpoczecie calkowitego ladowania towarow */
MFBO_INT mfBeDefAllPLU( __MFVPARAM );
/* 5.4. Zaladowanie jednego towaru */
MFBO_INT mfDefPLU( long no, const char *name, char taxCode __MFPARAM );
/* 5.5. Zakonczenie ladowania towarow */
MFBO_INT mfEndDefPLU( __MFVPARAM );
/****************************************************************************/
/* 6. Funkcje obslugujace paragon fiskalny */
/****************************************************************************/
/* 6.1. Rozpoczecie zmiany */
MFBO_INT mfBeginShift( const char *header __MFPARAM );
/* 6.2. Rozpoczecie wydruku paragonu */
MFBO_INT mfBeginTicket( long total __MFPARAM );
/* 6.3. Wydruk linii paragonu */
MFBO_INT mfLineTicket( long no, const char *name, char taxCode,
const char *unitStr,
long price, long quantity, long value __MFPARAM );
/* 6.4. Uniewaznienie linii paragonu */
MFBO_INT mfStornoLineTicket( long no, const char *name, char taxCode,
const char *unitStr,
long price, long quantity, long value __MFPARAM );
/* 6.5. Uniewaznienie paragonu */
MFBO_INT mfStornoTicket( __MFVPARAM );
/* 6.6. Zakonczenie wydruku paragonu */
MFBO_INT mfEndTicket( int percentDiscount, long valueDiscount,
long transactionNo,
long payment1, const char * paymStr1,
long payment2, const char * paymStr2,
long payment3, const char * paymStr3,
long change, const char * changeStr,
long pawn, const char * pawnStr,
const char * tableStr,
const char * custStr __MFPARAM );
/* 6.7. Zamkniecie zmiany */
MFBO_INT mfShiftEnd( __MFVPARAM );
/* 6.8. Wydruk linii paragonu aptecznego. */
MFBO_INT mfAptLineTicket( long no, const char *name, char taxCode,
const char *unitStr,
long price, long quantity, long value, long charge,
const char *payType, const char *recType, long refundation __MFPARAM );
/* 6.9. Rozszerzony wydruk linii */
MFBO_INT mfParLineTicketExt( __MFVPARAM );
MFBO_INT mfLineTicketExt( long no, const char *name, char taxCode,
const char *unitStr,
long price, long quantity, long value __MFPARAM );
/* 6.10. Rozszerzony wydruk linii */
MFBO_INT mfParStornoLineTicketExt( __MFVPARAM );
MFBO_INT mfStornoLineTicketExt( long no, const char *name, char taxCode,
const char *unitStr,
long price, long quantity, long value __MFPARAM );
/****************************************************************************/
/* 7. Funkcje obslugujace raporty fiskalne */
/****************************************************************************/
/* 7.1. Rozpoczecie wydruku listy towarow danej stawki podatkowej */
/* a) SFI sprawdzajaca czy FP jest wykonalna */
MFBO_INT mfParPrBeTaxCode( __MFVPARAM );
/* b) FP rozpoczynajaca wydruk towarow z okreslonej stawki podatkowej */
MFBO_INT mfPrBeTaxCode( char taxCode __MFPARAM );
/* 7.2. Rozpoczecie wydruku listy towarow wedlug numeru porzadkowego */
/* a) SFI sprawdzajaca czy FP jest wykonalna */
MFBO_INT mfParPrBeItemNo( __MFVPARAM );
/* b)FP rozpoczynajaca wydruk towarow z okreslonego przedzialu kodow towarow*/
MFBO_INT mfPrBeItemNo( long *startItem, long *stopItem __MFPARAM );
/* 7.3. Wydruk pojedynczego towaru */
MFBO_INT mfPrItem( long no, const char *name, char taxCode __MFPARAM );
/* 7.4. Zakonczenie wydruku listy towarow */
MFBO_INT mfPrEnd( __MFVPARAM );
/* 7.5. Raport okresowy szczegolowy */
MFBO_INT mfPrDetailReport( int startYear, int startMonth, int startDay,
int stopYear, int stopMonth, int stopDay __MFPARAM );
/* 7.6. Raport okresowy sumaryczny */
MFBO_INT mfPrGlobalReport( int startYear, int startMonth, int startDay,
int stopYear, int stopMonth, int stopDay __MFPARAM );
/* 7.7. Wydruk stanu modulu fiskalnego */
/* a) SFI sprawdzajaca czy FP jest wykonalna */
MFBO_INT mfParPrState( __MFVPARAM );
/* b) FP drukujaca stan modulu fiskalnego */
MFBO_INT mfPrState( __MFVPARAM );
/* 7.8. Wydruk listy zmian towarow */
/* a) SFI sprawdzajaca czy FP jest wykonalna */
MFBO_INT mfParPrChangeItem( __MFVPARAM );
/* b) FP drukujaca wydruk listy zmian towarow */
MFBO_INT mfPrChangeItem( __MFVPARAM );
/****************************************************************************/
/* 8. Funkcje obslugujace paragon niefiskalny */
/****************************************************************************/
/* 8.1. Wydruk kwitu wplaty do kasy KP */
/* a) SFI okreslajaca czy skojarzona FP jest dostepna w danej DF */
MFBO_INT mfParPayIn( __MFVPARAM );
/* b) FP drukujaca dokument */
MFBO_INT mfPrPayIn( const char *no, const char *personName,
const char *payInName, const char *amount __MFPARAM );
/* 8.2. Wydruk kwitu wyplaty KW */
/* a) SFI okreslajaca czy skojarzona FP jest dostepna w danej DF */
MFBO_INT mfParPayOut( __MFVPARAM );
/* b) FP drukujaca dokument */
MFBO_INT mfPrPayOut( const char *no, const char *personName,
const char *payOutName, const char *amount __MFPARAM );
/* 8.3. Wydruk kwitu (bonu) zamowienia w kuchni */
/* a) SFI okreslajaca czy skojarzona FP jest dostepna w danej DF */
MFBO_INT mfParOrder( __MFVPARAM );
/* b) FP rozpoczynajaca wydruk */
MFBO_INT mfBgOrder( const char *title, const char *name __MFPARAM );
/* c) FP drukujaca jedna linie dokumentu */
MFBO_INT mfLineOrder( const char *name, const char *modifier, const char *quant __MFPARAM );
/* d) FP konczaca wydruk */
MFBO_INT mfEndOrder( __MFVPARAM );
/* 8.4. Wydruk dokumentu zwrotu towarow */
/* a) SFI okreslajaca czy skojarzona FP jest dostepna w danej DF */
MFBO_INT mfParReturn( __MFVPARAM );
/* b) FP rozpoczynajaca wydruk */
MFBO_INT mfBgReturn( const char *no, const char *personName, const char *value __MFPARAM );
/* c) FP drukujaca jedna linie dokumentu */
MFBO_INT mfLineReturn( const char *name, const char *quant, const char *total __MFPARAM );
/* d) FP konczaca wydruk */
MFBO_INT mfEndReturn( __MFVPARAM );
/* 8.5. Wydruk raportu rozliczenia kasjera */
/* a) SFI okreslajaca czy skojarzona FP jest dostepna w danej DF */
MFBO_INT mfParCashierReport( __MFVPARAM );
/* b) FP rozpoczynajaca wydruk */
MFBO_INT mfBgCashierReport( const char *no, const char *name __MFPARAM );
/* c) FP drukujaca jedna linie dokumentu */
MFBO_INT mfLineCashierReport( int typeNo,
const char *name, const char *counted,
const char *cash, const char *difference __MFPARAM );
/* d) FP konczaca wydruk */
MFBO_INT mfEndCashierReport( __MFVPARAM );
/* 8.6. Wydruk raportu rozliczenia zmiany */
/* a) SFI okreslajaca czy skojarzona FP jest dostepna w danej DF */
MFBO_INT mfParShiftReport( __MFVPARAM );
/* b) FP rozpoczynajaca wydruk */
MFBO_INT mfBgShiftReport( const char *no,
const char *startDate, const char *endDate,
const char *personName __MFPARAM );
/* c) FP drukujaca jedna linie dokumentu */
MFBO_INT mfLineShiftReport( int typeNo,
const char *name, const char *counted,
const char *cash, const char *difference __MFPARAM );
/* d) FP konczaca wydruk */
MFBO_INT mfEndShiftReport( __MFVPARAM );
/* 8.7. Uniewaznienie dokumentu */
MFBO_INT mfPrVoid( __MFVPARAM );
/* 8.8. Wydruk kwitu karty platniczej */
MFBO_INT mfParVISA( __MFVPARAM );
MFBO_INT mfPrVISA( int language,
int signature,
const char *date,
const char *transactionNo,
const char *ticketNo,
const char *salesPointNo,
const char *TID,
const char *UID,
const char *PosID,
const char *cashierName,
const char *cardName,
const char *cardNumber,
const char *expiryDate,
const char *authorizationCode,
const char *salesAmount,
const char *returnAmount,
const char *salesSays1,
const char *salesSays234 __MFPARAM );
MFBO_INT mfKasaWalutowa( const char *nrZezwolenia,
const char *regon,
const char *nrKwitu,
const char *skupWaluty,
const char *kursWaluty,
const char *kwotaWaluty,
const char *gotowka,
const char *reszta,
const char *wyplacono,
const char *kasjer __MFPARAM );
/****************************************************************************/
/* 9. Funkcje obslugujace szuflade */
/****************************************************************************/
/* 9.1. Definicja parametrow (rodzaju) szuflady */
/* a) SFI zwracajaca nazwy zaimplementowanych szuflad */
MFBO_INT mfParDrawer( int item, char *name, int *maxNo __MFPARAM );
/* b) FP definiujaca typ szuflady */
MFBO_INT mfDefDrawer( int item, int portNo __MFPARAM );
/* 9.2. Otwarcie szuflady */
MFBO_INT mfDrawerOpen( int no __MFPARAM );
/* 9.3. Sprawdzenie stanu szuflady (otwarta/zamknieta) */
MFBO_INT mfDrawerIsOpen( int no, int *flag __MFPARAM );
/****************************************************************************/
/* 10. Funkcje obslugujace wyswietlacz */
/****************************************************************************/
/* 10.1. Definicja parametrow (typow) wyswietlacza */
/* a) SFI zwracajaca parametry zaimplementowanych w danej wersji biblioteki */
/* typow wyswietlaczy fiskalnych (dotyczy DF) lub niestandardowych */
/* (dotyczy DNF) */
MFBO_INT mfParFiscDisp( int item,
char *name,
int *column,
int *row,
char *setOfChar,
int *numericFlag,
int *pointFlag __MFPARAM );
/* b) FP definiujaca wyswietlacz dostepny z listy (fiskalny lub niestand. */
MFBO_INT mfDefFiscalDisp( int item, int portNo __MFPARAM );
/* c) FP definiujaca wyswietlacz niedostepny z listy (standardowy-niefisk/) */
MFBO_INT mfDefNFiscalDisp( int portNo,
int row, int column,
const char *setOfChar,
const char *begin0,
const char *begin1, const char *end1,
const char *begin2, const char *end2,
const char *begin3, const char *end3,
int numericFlag, int pointFlag,
int sBounds, int sParity, int sHandshake,
int codePage __MFPARAM );
/* 10.2. Wylaczenie/zalaczenie automatycznej obslugi wyswietlacza */
/* Funkcja usunieta */
/* MFBO_INT mfDispStop( int flag ); */
/* 10.3. Wyswietlenie POZYCJI SPRZEDAZY */
MFBO_INT mfDispTicketLine( const char *name,
long price, long quantity, long value __MFPARAM );
/* 10.4. Wyswietlenie SUMY */
MFBO_INT mfDispSum( const char *sumName, long sumValue __MFPARAM );
/* 10.5. Wyswietlenie PODSUMOWANIA */
MFBO_INT mfDispSummary( const char *payName, long payValue,
const char *remainderName, long remainderValue __MFPARAM );
/* 10.6. Wyswietlenie LOGO UZYTKOWNIKA */
MFBO_INT mfDispConsumerLOGO( const char *lineLOGO1, const char *lineLOGO2 __MFPARAM );
/****************************************************************************/
/* 11. Funkcje statusowe */
/****************************************************************************/
/* 11.1. Tryb szkoleniowy / fiskalny */
MFBO_INT mfStatMode( int *flag __MFPARAM );
/* 11.2. Waluta przed denominacja / po denominacji */
MFBO_INT mfStatDenom( int *flag __MFPARAM );
/* 11.3. Zmiana fiskalna zamknieta / otwarta. */
MFBO_INT mfStatShift( int *flag __MFPARAM );
/* 11.4. Paragon zamkniety / otwarty. */
MFBO_INT mfStatReceipt( int *flag __MFPARAM );
/* 11.5. Dokument nie drukowany / drukowany. */
MFBO_INT mfStatDocument( int *flag __MFPARAM );
/* 11.6. Brak papieru */
MFBO_INT mfStatNoPaper( int *flag __MFPARAM );
/****************************************************************************/
/* 12. Funkcje obslugujace apteczne paragony niefiskalne */
/****************************************************************************/
/* 12.1. Wycena leku */
//a)
MFBO_INT mfWycena1( int numerStacji,
const char *nazwa, const char *dawka,
const char *opakowanie, const char *unit,
long ilosc, long cena, long wartosc, long oplata,
const char *PTUstawka, long PTUwartosc __MFPARAM );
//b)
MFBO_INT mfWycena2( const char *iloscLekospisowa,
long limit, long ponadLimit,
long oplataPodstawowa, long doplata100, long refundacja,
const char *pacjent, const char *lekarz,
const char *refundator, const char *wojewodztwo __MFPARAM );
//c)
MFBO_INT mfWycena3( const char *platne, const char *recepta,
int refundacja, const char *wydal,
int kasa, long transakcja __MFPARAM );
//d)
MFBO_INT mfAnulujWycene( __MFVPARAM );
/* 12.2. Wycena leku - kupon RUM */
// a)
MFBO_INT mfRUMStart( int numerStacji,
const char *recepta,
const char *kupon __MFPARAM );
// b)
MFBO_INT mfRUMLinia( const char *tekst,
const char *opakowanie,
const char *ilosc,
const char *cena,
const char *stawka,
const char *podatek,
const char *wartosc,
const char *platne,
const char *odplatnosc,
const char *refundacja,
const char *recepta __MFPARAM );
// c)
MFBO_INT mfRUMStop( const char *odplatnosc,
const char *refundacja,
const char *slownie,
const char *pacjent,
const char *lekarz,
const char *refundator,
const char *wojewodztwo,
const char *wydal,
const char *kasa __MFPARAM );
/* 12.3. Wycena leku robionego */
MFBO_INT mfLekStart( int numerStacji,
const char *recepta,
const char *odplatnosc,
const char *nrRecepty __MFPARAM );
MFBO_INT mfLekLinia( const char *nazwa,
const char *ilosc,
const char *wartosc __MFPARAM );
MFBO_INT mfLekStop( const char *wartoscBrutto,
const char *wartoscNetto,
const char *podatek,
const char *taksaLaborum,
const char *doZaplaty,
const char *starychZlotych,
const char *pacjent,
const char *lekarz,
const char *refundator,
const char *wojewodztwo,
const char *wydal,
const char *przyjal,
const char *wycenil,
const char *kasa,
const char *terminOdbioru,
const char *numerLeku __MFPARAM );
/* 12.4 Wydruk dowolnej linii */
MFBO_INT mfDrukuj( const char *formularz, const char *wiersz, const char *argument __MFPARAM );
/****************************************************************************/
/* 13. Funkcje obslugujace faktury */
/****************************************************************************/
/* 13.1 Rozpoczecie faktury */
MFBO_INT mfFaktStart( int wysuw,
int typ, int napis,
int linii, int typRamki,
const char *nrFakt,
const char *nrOrg,
const char *miasto,
const char *dataWyst,
const char *dataSprz,
const char *nrParag,
const char *nrKasy,
const char *sprzedawca,
const char *sprzedawcaNIP,
const char *nabywca,
const char *nabywcaNIP,
const char *transport,
const char *bank,
const char *platnosc,
const char *termin,
long paperInTimeOut,
long paperOutTimeOut __MFPARAM );
/* 13.2 Wydruk linii faktury */
MFBO_INT mfFaktLinia( const char *nazwa,
const char *sww,
const char *jm,
const char *ilosc,
const char *cena,
const char *wartNetto,
const char *wartBrutto,
const char *stawka,
const char *wartPTU,
const char *wartOpl __MFPARAM );
/* 13.3 Zakonczenie faktury */
MFBO_INT mfFaktKoniec( const char *slownie,
const char *doZapl,
const char *nazwaSprz,
const char *nazwaOdb,
const char *dopiski,
const char *wartNettoA,
const char *wartBruttoA,
const char *stawkaA,
const char *wartPTUA,
const char *wartNettoB,
const char *wartBruttoB,
const char *stawkaB,
const char *wartPTUB,
const char *wartNettoC,
const char *wartBruttoC,
const char *stawkaC,
const char *wartPTUC,
const char *wartNettoD,
const char *wartBruttoD,
const char *stawkaD,
const char *wartPTUD,
const char *wartNettoE,
const char *wartBruttoE,
const char *stawkaE,
const char *wartPTUE,
const char *wartNettoF,
const char *wartBruttoF,
const char *stawkaF,
const char *wartPTUF,
const char *wartZwol,
const char *wartNettoSum,
const char *wartBruttoSum,
const char *wartPTUSum __MFPARAM );
/* 13.4 Anulacja faktury */
MFBO_INT mfAnulujFakture( __MFVPARAM );
/* 13.5 Stan czujnikow papieru */
MFBO_INT mfFaktPaper( int *paperIn, int *paperOut __MFPARAM );
/* Dodatek A - Komunikacja bezposrednia z DF */
MFBO_INT mfAnyCommand( int outputL, char *output, int inputL, char *input, int *resultL, long timeOut __MFPARAM );
/* Odczyt kodu bledu */
MFBO_INT mfError( __MFVPARAM );
/* Wydruk swobodny */
MFBO_INT mfStatFreePrintEnabled( __MFVPARAM );
MFBO_INT mfFreePrintInit( __MFVPARAM );
MFBO_INT mfFreePrintLine( const char * line __MFPARAM );
MFBO_INT mfFreePrintEnd( __MFVPARAM );
MFBO_INT mfFreePrintVoid( __MFVPARAM );
/* Wydruk dwuwalutowy; exchange rate ma 4 miejsca po przecinku */
MFBO_INT mfSecondCurrency( const char * currencyName, long exchangeRate __MFPARAM );
/* Raport okresowy zmianowy wg numerow zmian */
MFBO_INT mfParNrReport( __MFVPARAM );
MFBO_INT mfPrNrReport( long startNr, long stopNr __MFPARAM );
/* Wysuw papieru */
MFBO_INT mfParFeedLine( __MFVPARAM );
MFBO_INT mfFeedLine( int nrOfLines __MFPARAM );
#ifdef __cplusplus
}
#endif
#endif /* __MFBO_H */
#include & lt; stdio.h & gt;
#include & lt; stdlib.h & gt;
#include & lt; conio.h & gt;
#include & lt; ctype.h & gt;
#include " MFBO.H "
void err( void )
{ char groupMsg[40];
char detailMsg[40];
if ( mfError() != mfeOk )
{
mfParMessage( mfError(), groupMsg, detailMsg );
printf( " %s, %s\n " , groupMsg, detailMsg );
getch();
}
}
void resErr( int res )
{
switch (res)
{
case mfeOk : break;
case mfeImplementation : {
printf( " FUNKCJA NIE JEST ZAIMPLEMENTOWANA DLA TEJ DRUKARKI FISKALNEJ\n " );
getch();
break;
};
case mfeApplication : {
printf( " BLAD APLIKACJI\n " );
exit(0);
}
case mfeFunction : {
printf( " Niepoprawne wywolanie funkcji\n " );
err();
break;
};
case mfeAssociation : {
printf( " FUNKCJA SKOJARZONA NIE JEST ZAIMPLEMENTOWANA DLA TEJ DRUKARKI FISKALNEJ\n " );
getch();
break;
};
case mfeAccess : {
printf( " Funkcja skojarzona nie moze byc wykonana w tej chwili\n " );
err();
break;
}
}
}
int hour;
int minute;
int year;
int month;
int day;
int version;
int subVersion;
char nameLib[256];
long lastTicketNo;
int taxA;
int taxB;
int taxC;
int taxD;
int taxE;
int taxF;
main()
{
char znak;
clrscr();
/* 4.1. Dopuszczenie aplikacji */
resErr( mfStart( " " , 1 /* nr portu szeregowego COMx */ ) );
if ( mfError() != mfeOk )
exit(0);
/* 2.1. Odczyt czasu zegara wewnetrznego DF */
resErr( mfGetTime( & hour, & minute ) );
printf( " \nCzas: %d:%d\n " , hour, minute );
/* 2.2. Odczyt daty zegara wewnetrznego DF */
resErr( mfGetDate( & year, & month, & day ) );
printf( " Data: %d-%d-%d\n " , year, month, day );
/* 2.3. Odczyt wersji DF */
resErr( mfGetVersion( & version, & subVersion ) );
printf( " Wersja: %d.%d\n " , version, subVersion );
/* 2.5. Odczyt numeru ostatniego paragonu */
resErr( mfGetLastTicketNo( & lastTicketNo ) );
printf( " Numer ostatniego paragonu: %ld\n " , (long)lastTicketNo );
/* 2.6. Odczyt stawek podatkowych */
resErr( mfGetTax( & taxA, & taxB, & taxC, & taxD, & taxE, & taxF ) );
printf( " Stawki podatkowe: A=%d%% B=%d%% C=%d%% D=%d%% E=%d%% F=%d%%\n " ,
taxA/100, taxB/100, taxC/100, taxD/100, taxE/100, taxF/100 );
/* 3.3. Odczyt wersji biblioteki */
resErr( mfParLibVersion( & version, & subVersion, nameLib ) );
printf( " Wersja biblioteki: %d.%d; dla modulu fiskalnego: %s\n " , version, subVersion, nameLib );
printf( " \nWydrukowa paragon & lt; T,N & gt; : " );
while( (znak = toupper(getch())) == 0 )
{
}
if( znak == 'T' )
{
printf( " \nParagon w druku ... " );
/* 6.2. Rozpoczecie wydruku paragonu */
resErr( mfBeginTicket( -1 ) );
/* 6.3. Wydruku linii paragonu */
resErr( mfLineTicket(
1, /* numer towaru - ignorowany */
" TOWAR TESTOWY " , /* nazwa towaru */
'A', /* stawka A..G (zwolniony) */
" szt " , /* jednostka miary */
2500, /* cena w groszach: 25.00,- */
1000, /* ilosc (1 szt) */
-1 ) /* wartosc (niech biblioteka sama liczy) */ );
/* 6.6. Zakonczenie paragonu */
resErr( mfEndTicket(
1000, /* rabat procentowy do caej transakcji (10%) */
300, /* rabat kwotowy podany informacyjnie (3.00,-) */
120, /* numer transakcji z aplikacji (informacyjnie) */
1500 , " Czek " , /* pierwsza patnosc 15.00,- */
1000 , " VISA " , /* druga patnosc 10.00,- */
10000, " Got¢wka " , /* trzecia patnosc 100.00,- */
9500, " Got¢wka " , /* reszta w kwocie 95.00,- */
500, " Butelki " , /* dodanie kaucji w kwocie 5.00,- */
" 235 " , /* nr stolika informacyjnie */
" " ) /* nazwisko klienta */ );
}
printf( " \nWydrukowa fakture & lt; T,N & gt; : " );
while( (znak = toupper(getch())) == 0 )
{
}
if( znak == 'T' )
{
printf( " \nFaktura w druku ... " );
resErr( mfFaktStart(
0, /* wysuw - iloæ pustych lini przed drukowaniem */
0, /* typ - typ dokumentu */
0, /* napis - napis okrelaj¹cy */
52, /* linii - iloæ lini na pojedynczej kartce papieru*/
1, /* typRamki - typ ramki nag³ówkowej */
" 1234/97 " , /* nrFakt - numer dokumentu */
" " , /* nrOrg - tu nie u¿ywany */
" Paris " , /* miasto - miasto wystawienia */
" 12011997 " , /* dataWyst - data wystawienia */
" 10011997 " , /* dataSprz - data sprzedarzy */
" 4444 " , /* nrParag - numer paragonu */
" 66 " , /* nrKasy - numer kasy */
" UPOS SYSTEM " , /* sprzedawca nazwa sprzedawcy */
" 555-010-44-31 " , /* sprzedawcaNIP - NIP sprzedawcy */
" John Brown " , /* nabywca nazwa nabywcy */
" 456-233-11-22 " , /* nabywcaNIP - NIP nabywcy */
" " , /* transport - napis rezerwowy - ignorowany */
" PKO BP " , /* bank - nazwa banku i numer konta */
" VISA " , /* platnosc - sposób p³atnoci*/
" " , /* ermin - napis rezerwowy - ignorowany */
30, /* paperInTimeout - czas w sekundach na w³o¿enie papieru */
30 /* paperOutTimeout -czas w sekundach na wyjêcie papieru */
)
);
/* 13.2 Wydruk linii faktury */
resErr( mfFaktLinia(
" COCA-COLA " , /* nazwa - nazwa towaru */
" SWW 1234 " , /* sww - SWW indeks */
" szt " , /* jm - jednostka miary */
" 2.00 " , /* ilosc - iloæ */
" 10.00 " , /* cena - cena */
" 16.39 " , /* wartNetto - wartoæ netto */
" 20.00 " , /* wartBrutto - wartoæ brutto */
" 22 " , /* stawka - stawka podatku */
" 3.61 " , /* wartPTU - wartoæ podatku */
" " /* wartOpl - parametr rezerwowy ignorowany */
) );
/* 13.3 Zakonczenie faktury */
resErr( mfFaktKoniec(
" 20 zlotych " , /* slownie - s³ownie ile do zap³aty */
" 20.00 " , /* doZapl - wartoæ do zap³aty */
" Jan Kowalski " , /* nazwaSprz - nazwa sprzedawcy */
" Wojciech Pych " , /* nazwaOdb nazwa klienta */
" Zapraszamy ponownie " , /* dopiski - dopiski swobodne */
" 16.39 " , " 20.00 " , " 22 " , " 3.61 " ,
" " , " " , " " , " " ,
" " , " " , " " , " " ,
" " , " " , " " , " " ,
" " , " " , " " , " " ,
" " , " " , " " , " " ,
" " ,
" 16.39 " , " 20.00 " , " 3.61 "
) );
}
return 0;
}