home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 September / PCWK996.iso / polskie / orhmet / dfdisk / sprzedaz.sam < prev   
Text File  |  1996-03-01  |  6KB  |  181 lines

  1. ORHMET Warszawa
  2. 02-466 Warszawa
  3. ul. Stajena 1/3
  4. tel. 23-93-85
  5.      23-89-03
  6.  
  7. Ten plik zawiera przykladowy program w przykladowym jezyku ( C ),
  8. ktory z wykorzystaniem blibliotek rlibc/clipface
  9. realizuje sprzedaz.
  10.  
  11. Sprzedaz mozna rozwiazac na 2 sposoby:
  12.  
  13. 1 Po zarejestrowaniu wszystkich pozycji ktore maja znalezc sie na fakturze
  14.   wysylamy je "hurtem" do drukarki i drukujemy paragon.
  15.  
  16. // Zakladam ze w tabeli pozycje sa nazwy informacje o towarach:
  17. // pozycje[i,NAZWA] - nazwa
  18. // pozycje[i,IND_PTU] - indeks PTU ( dopuszczalne 'A','B','C,'D','Z',' ' )
  19. // pozycje[i,CENA] - cena jednej pozycji format: 999999.99
  20. // pozycje[i,ILOSC] - ilosc towaru format 9 znakow , na poczatku powinna byc 
  21. //                    legalna liczba potem moze byc swobodny tekst np:
  22. //                    "2 szt", "45.5 dkg", "5.5 kg" itp.
  23. // pozycje[i,RABAT] - rabat na ten towar format: 999, wyrazony w 1/10 procenta,
  24. //                    wiec rabat 10.5 bedzie: "105"
  25.  
  26. // ilosc_towarow - ilosc towarow w tablicy pozycje
  27. //                 UWAGA! Istnieje arbitralne obraniczenie ilosci pozycji
  28. //                 na paragonie - w obecnej wersji programu jest to 70.
  29. //
  30. // id_rozkazu - identyfikator rozkazu, dla celow zidentyfikowania bledu
  31.  
  32. // Rozpoczynamy transakcje:
  33. kod_zwr = DFStartTran();
  34. if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
  35. {
  36.   // cos zle 
  37.   exit;
  38. }
  39.  
  40. for(i=0;i<ilosc_towarow;i++)
  41. {
  42.   kod_zwr = DFAdd( pozycje[i,NAZWA], 
  43.                    pozycje[i,IND_PTU],
  44.                    pozycje[i,ILOSC],
  45.                    pozycje[i,CENA],
  46.                    pozycje[i,RABAT] ) 
  47.   if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
  48.   {
  49.     // cos zle 
  50.     exit;
  51.   }
  52. }
  53.  
  54. // kwota - kwota do zaplaty odsylana przez drukarke, mozna wykorzystac
  55. //         do kontroli poprawnosci zrealizowanych rejestracji
  56.  
  57. kod_zwr = DFFinish( kwota );
  58. if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
  59. {
  60.   // cos zle 
  61.   exit;
  62. }
  63.  
  64. // zapytaj sie uzytkownika czy drukowac paragon?
  65.  
  66. if ( askuser() ) // TAK
  67. {
  68.   // forma - forma zaplaty: 'G'otowka/'C'zek/'K'redyt
  69.   // kwota_zapl - kwota zaplacona format: 999999.99 
  70.   // kwota_reszty - kwota reszty format: 999999.99  
  71.   kod_zwr = DFPrParf( forma, kwota_zapl, kwota_reszty );
  72.   if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
  73.   {
  74.     // cos zle 
  75.     exit;
  76.   }
  77. }
  78. else // NIE
  79. {
  80.   kod_zwr = DFCancelTran( );
  81.   if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
  82.   {
  83.     // cos zle 
  84.     exit;
  85.   }
  86. }
  87.  
  88.  
  89. 2 W trakcie rejestrowania w programie applikacyjnym towarow ktore maja
  90.   znalezc sie na fakturze rejestrujemy je w drukarce a po zatwierdzeniu 
  91.   fatury drukujemy paragon.
  92.   UWAGA! Z punktu widzenia drukarki fiskalnej ORHMET DF-1 ten tryb tworzenia
  93.          paragonu jest dokladnie identyczny jak opisany powyzej co implikuje
  94.          istnienie ograniczenia 70 pozycji na paragonie.
  95.  
  96.   Zalety:
  97.     - Na wyswietlaczu dla klienta na biezaco pokazuja sie wartosci poszczegolnych
  98.       towarow,
  99.   Wady:
  100.     - Utrudnione usuwanie/modyfikowanie parametrow sprzedawanych towarow z 
  101.       tworzonego paragonu
  102.  
  103. // id_rozkazu - identyfikator rozkazu, dla celow zidentyfikowania bledu
  104.  
  105. // Rozpoczynamy transakcje:
  106. // UWAGA! w ty, przypadku istotne jest, ze w drukarce wystepuje mechanizm
  107. // kontroli maksymalnego czasu transakcji ( trzeba o tym pamietac, i jezeli
  108. // wystapi jakos sobie z tym poradzic )
  109. //
  110. kod_zwr = DFStartTran();
  111. if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
  112. {
  113.   // cos zle 
  114.   exit;
  115. }
  116.  
  117. // Nastepny blok powtarzaj dla kazdej rejestrowanej pozycji sprzedazy
  118. //   gdzie:
  119. // pozycja[NAZWA] - nazwa
  120. // pozycja[IND_PTU] - indeks PTU ( dopuszczalne 'A','B','C,'D','Z',' ' )
  121. // pozycja[CENA] - cena jednej pozycji format: 999999.99
  122. // pozycja[ILOSC] - ilosc towaru format 9 znakow , na poczatku powinna byc 
  123. //                    legalna liczba potem moze byc swobodny tekst np:
  124. //                    "2 szt", "45.5 dkg", "5.5 kg" itp.
  125. // pozycja[RABAT] - rabat na ten towar format: 999, wyrazony w 1/10 procenta,
  126. //                    wiec rabat 10.5 bedzie: "105"
  127. //
  128. // W przypadku gdy w programie aplikacyjnym modyfikujemy parametry jakiejs
  129. // rejestracji to do drukarki musimu wyslac polecenie anulowania tej pozycji
  130. // i zarejestrowac ja jeszcze raz, co oczywiscie spowoduje inna kolejnosc.
  131. // Anulowanie wykonuje sie za pomoca funkcji: DFCross( nazwa ) gdzie nazwa jest
  132. // 18 zankowym cigiem znakow. Drukarka anuluje TYLKO PIERWSZA rejestracje na 
  133. // tego towaru ( jezeli bylo wiecej niz 1 ).
  134. // 
  135. {
  136.   kod_zwr = DFAdd( pozycja[NAZWA], 
  137.                    pozycja[IND_PTU],
  138.                    pozycja[ILOSC],
  139.                    pozycja[CENA],
  140.                    pozycja[RABAT] ) 
  141.   if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
  142.   {
  143.     // cos zle 
  144.     exit;
  145.   }
  146. }
  147.  
  148. // kwota - kwota do zaplaty odsylana przez drukarke, mozna wykorzystac
  149. //         do kontroli poprawnosci zrealizowanych rejestracji
  150.  
  151. kod_zwr = DFFinish( kwota );
  152. if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
  153. {
  154.   // cos zle 
  155.   exit;
  156. }
  157.  
  158. // zapytaj sie uzytkownika czy drukowac paragon?
  159.  
  160. if ( askuser() ) // TAK
  161. {
  162.   // forma - forma zaplaty: 'G'otowka/'C'zek/'K'redyt
  163.   // kwota_zapl - kwota zaplacona format: 999999.99 
  164.   // kwota_reszty - kwota reszty format: 999999.99  
  165.   kod_zwr = DFPrParf( forma, kwota_zapl, kwota_reszty );
  166.   if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
  167.   {
  168.     // cos zle 
  169.     exit;
  170.   }
  171. }
  172. else // NIE
  173. {
  174.   kod_zwr = DFCancelTran( );
  175.   if ( !kod_zwr_ok( kod_zwr, id_rozkazu ) )
  176.   {
  177.     // cos zle 
  178.     exit;
  179.   }
  180. }
  181.