home *** CD-ROM | disk | FTP | other *** search
- 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;
- }
- }
-