home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1996 September
/
PCWK996.iso
/
polskie
/
orhmet
/
dfdisk
/
sprzedaz.sam
< prev
Wrap
Text File
|
1996-03-01
|
6KB
|
181 lines
ORHMET Warszawa
02-466 Warszawa
ul. Stajena 1/3
tel. 23-93-85
23-89-03
Ten plik zawiera przykladowy program w przykladowym jezyku ( C ),
ktory z wykorzystaniem blibliotek rlibc/clipface
realizuje sprzedaz.
Sprzedaz mozna rozwiazac na 2 sposoby:
1 Po zarejestrowaniu wszystkich pozycji ktore maja znalezc sie na fakturze
wysylamy je "hurtem" do drukarki i drukujemy paragon.
// Zakladam ze w tabeli pozycje sa nazwy informacje o towarach:
// pozycje[i,NAZWA] - nazwa
// pozycje[i,IND_PTU] - indeks PTU ( dopuszczalne 'A','B','C,'D','Z',' ' )
// pozycje[i,CENA] - cena jednej pozycji format: 999999.99
// pozycje[i,ILOSC] - ilosc towaru format 9 znakow , na poczatku powinna byc
// legalna liczba potem moze byc swobodny tekst np:
// "2 szt", "45.5 dkg", "5.5 kg" itp.
// pozycje[i,RABAT] - rabat na ten towar format: 999, wyrazony w 1/10 procenta,
// wiec rabat 10.5 bedzie: "105"
// ilosc_towarow - ilosc towarow w tablicy pozycje
// UWAGA! Istnieje arbitralne obraniczenie ilosci pozycji
// na paragonie - w obecnej wersji programu jest to 70.
//
// id_rozkazu - identyfikator rozkazu, dla celow zidentyfikowania bledu
// Rozpoczynamy transakcje:
kod_zwr = DFStartTran();
if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
{
// cos zle
exit;
}
for(i=0;i<ilosc_towarow;i++)
{
kod_zwr = DFAdd( pozycje[i,NAZWA],
pozycje[i,IND_PTU],
pozycje[i,ILOSC],
pozycje[i,CENA],
pozycje[i,RABAT] )
if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
{
// cos zle
exit;
}
}
// kwota - kwota do zaplaty odsylana przez drukarke, mozna wykorzystac
// do kontroli poprawnosci zrealizowanych rejestracji
kod_zwr = DFFinish( kwota );
if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
{
// cos zle
exit;
}
// zapytaj sie uzytkownika czy drukowac paragon?
if ( askuser() ) // TAK
{
// forma - forma zaplaty: 'G'otowka/'C'zek/'K'redyt
// kwota_zapl - kwota zaplacona format: 999999.99
// kwota_reszty - kwota reszty format: 999999.99
kod_zwr = DFPrParf( forma, kwota_zapl, kwota_reszty );
if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
{
// cos zle
exit;
}
}
else // NIE
{
kod_zwr = DFCancelTran( );
if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
{
// cos zle
exit;
}
}
2 W trakcie rejestrowania w programie applikacyjnym towarow ktore maja
znalezc sie na fakturze rejestrujemy je w drukarce a po zatwierdzeniu
fatury drukujemy paragon.
UWAGA! Z punktu widzenia drukarki fiskalnej ORHMET DF-1 ten tryb tworzenia
paragonu jest dokladnie identyczny jak opisany powyzej co implikuje
istnienie ograniczenia 70 pozycji na paragonie.
Zalety:
- Na wyswietlaczu dla klienta na biezaco pokazuja sie wartosci poszczegolnych
towarow,
Wady:
- Utrudnione usuwanie/modyfikowanie parametrow sprzedawanych towarow z
tworzonego paragonu
// id_rozkazu - identyfikator rozkazu, dla celow zidentyfikowania bledu
// Rozpoczynamy transakcje:
// UWAGA! w ty, przypadku istotne jest, ze w drukarce wystepuje mechanizm
// kontroli maksymalnego czasu transakcji ( trzeba o tym pamietac, i jezeli
// wystapi jakos sobie z tym poradzic )
//
kod_zwr = DFStartTran();
if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
{
// cos zle
exit;
}
// Nastepny blok powtarzaj dla kazdej rejestrowanej pozycji sprzedazy
// gdzie:
// pozycja[NAZWA] - nazwa
// pozycja[IND_PTU] - indeks PTU ( dopuszczalne 'A','B','C,'D','Z',' ' )
// pozycja[CENA] - cena jednej pozycji format: 999999.99
// pozycja[ILOSC] - ilosc towaru format 9 znakow , na poczatku powinna byc
// legalna liczba potem moze byc swobodny tekst np:
// "2 szt", "45.5 dkg", "5.5 kg" itp.
// pozycja[RABAT] - rabat na ten towar format: 999, wyrazony w 1/10 procenta,
// wiec rabat 10.5 bedzie: "105"
//
// W przypadku gdy w programie aplikacyjnym modyfikujemy parametry jakiejs
// rejestracji to do drukarki musimu wyslac polecenie anulowania tej pozycji
// i zarejestrowac ja jeszcze raz, co oczywiscie spowoduje inna kolejnosc.
// Anulowanie wykonuje sie za pomoca funkcji: DFCross( nazwa ) gdzie nazwa jest
// 18 zankowym cigiem znakow. Drukarka anuluje TYLKO PIERWSZA rejestracje na
// tego towaru ( jezeli bylo wiecej niz 1 ).
//
{
kod_zwr = DFAdd( pozycja[NAZWA],
pozycja[IND_PTU],
pozycja[ILOSC],
pozycja[CENA],
pozycja[RABAT] )
if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
{
// cos zle
exit;
}
}
// kwota - kwota do zaplaty odsylana przez drukarke, mozna wykorzystac
// do kontroli poprawnosci zrealizowanych rejestracji
kod_zwr = DFFinish( kwota );
if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
{
// cos zle
exit;
}
// zapytaj sie uzytkownika czy drukowac paragon?
if ( askuser() ) // TAK
{
// forma - forma zaplaty: 'G'otowka/'C'zek/'K'redyt
// kwota_zapl - kwota zaplacona format: 999999.99
// kwota_reszty - kwota reszty format: 999999.99
kod_zwr = DFPrParf( forma, kwota_zapl, kwota_reszty );
if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
{
// cos zle
exit;
}
}
else // NIE
{
kod_zwr = DFCancelTran( );
if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
{
// cos zle
exit;
}
}