bolt | programok | driver sam4s pénztárgéphez

Driver Sam4s Pénztárgéphez

Driver Sam4s Pénztárgéphez
Gyártó: Sam4s

db-ot

Ár (Nettó): 30.000 Forint

Az AC420MDrv.ocx használata

 

 

Az AC420MDrv.ocx használatához szükséges a Sam4s ER-420M típusú pénztárgép kezelési útmutatójának ismerete!

 

 

A Sam4s ER-420M típusú pénztárgép képes arra, hogy a vonalkód olvasóval beolvasott (vagy a pénztárgép billentyűzetén beütött) termékkódot lekérdezze a számítógéptől, és a visszakapott adatok alapján értékesítse a cikket, ill. az értékesítési adatokat továbbítsa a számítógépre is. Sőt, lehetőséget biztosít vevőazonosításra, ezáltal a megfelelő árszint automatikus kiválasztására is!

 

Az értékesítés folyamata

 

1. Az értékesítés a napnyitással kezdődik (eladó bejelentkezés szükséges lehet, ill. szükség esetén kötelezővé tehető).

2. Eladás előtt végezhető vevő-, vagy vevőcsoport (pl.: kisker, nagyker) azonosítás (szükség esetén kötelezővé tehető). Ez történhet vonalkód olvasóval (max. 30 alfanumerikus karakter) vagy a pénztárgép billentyűzetéről (ekkor csak számokat használhatunk).

3. Eladás:

- Mennyiség bevihető billentyűzetről, vagy beolvasható mérlegről (ha szükséges)

- A termék azonosítása a termék kód (max. 14 számjegy, pl.: EAN 8, EAN 13) vonalkód olvasó általi beolvasásával, vagy a billentyűzetről történő bevitellel történhet

(Eladás történhet hagyományos módon az egységár megadásával, és a megfelelő gyűjtőbillentyű megnyomásával.)

4. Utolsó, vagy korábbi tétel sztornója (ha szükséges)

5. Kedvezmény/felár adása tételre vagy részösszegre (ha szükséges)

6. Visszáru funkció alkalmazása (ha szükséges)

7. Fizetés akár többféle fizetőeszközzel

- készpénzzel

- csekkel

- 8-féle hitellel

- 4-féle valutával

A megkezdett nyugta megszakítható.

8. Napi zárás

 

A PLU-k jellemzői

(A 420M modell rendelkezik a 420F minden képességével, beleértve az árucikkek pénztárgépen való tárolásának lehetőségét is. Ezért a PLU-k az itt tárgyalt lekérdező üzemmódban is azonos jellemzőkkel rendelkeznek, mint a hagyományos PLU-kezelés esetén.)

A PLU előre programozott árucikket jelent. Minden PLU rendelkezik egy maximum 14 számjegyből álló azonosító kóddal (ez célszerűen vonalkód, de lehet akár egy egyjegyű gyorskód is, amit a pénztárgép billentyűzetén kell beütni), megnevezéssel, három különböző csoporthoz rendelhető. Státuszában beállítható a működési módja, rendelhető hozzá VTSZ-kód, kapcsolható hozzá egy másik PLU, ill. három különböző ár rendelhető hozzá.

Használata rendkívül megkönnyíti az eladást. Elég csak beolvasni (vagy beütni) a termék kódját és a pénztárgép azonnal el is adja, és kinyomtatja a cikk nevét, árát.

Csoportképzéssel egy csoportba (pl. termékcsoport fogyásának azonosítására, mint tejtermékek, üdítőitalok, kenyér- és péksütemény, műszaki cikkek, stb.) tudjuk gyűjteni az azonos csoporthoz rendelt egyedi PLU-k értékesítési eredményeit. Minden PLU hozzárendelhető egy, két, vagy három különböző csoporthoz is. Alapesetben a pénztárgép 20 csoportot kezel, ezek számát kérésére a szerviz csökkentheti, ill. növelheti.

 

A státuszban beállítható opciók:

1. Előre programozott ár

Ha nincs beállítva, az áraknál megadott értékek maximális árat jelentenek, ekkor természetesen a termék árát minden eladáskor meg kell adni a pénztárgép billentyűzetén.

2. Az előre programozott ár felülírható

Beállítása esetén a kezelési kézikönyvben megadott módon eltérhetünk a beállított ártól.

3. Egytételes cikk

Amennyiben a nyugtán első tételként kerül eladásra, a pénztárgép automatikusan lezárja a nyugtát.

4. Azonosító szám megadása kötelező

A cikk eladása előtt kötelező egy azonosító szám (pl.: gyártási szám) megadása.

5. Tiltott

Beállítása esetén a terméket nem lehet eladni.

6. Mérendő

Értékesítés előtt kötelező a súly megadása

7. Adalékanyag, tartozék

Önállóan, első tételként nem értékesíthető (pl. csomagolóanyag)

8. Kötelező adalékanyag bevitele

A termék eladása után csak adalékanyag értékesíthető (ld. 7. opció)

9. Számláló nem nullázódik mikor PLU Z riport készül – ebben a megoldásban lényegtelen

PLU riport kérésekor megkapjuk cikkenként az eladott darabszámot, és forgalmazott összeget. Ha az opció nincs beállítva, Z riport kérésekor mind a darabszám, mind az összeg nullázódik, ellenkező esetben csak az összeg.

10. Raktárkészletes – ebben a megoldásban ne használja, értéke mindig 0 legyen!

Lehetőség van arra, hogy a pénztárgép maga kezelje a megadott cikkekből a raktárkészletet. A rendelkezésre álló darabszámot, egy erre szolgáló függvénnyel fel tölteni a pénztárgépbe (de előbb a PLU-t kell raktárkészletessé tenni!). A gép minden eladáskor csökkenteni fogja a készletet az eladott mennyiséggel. Csak a rendelkezésre álló készlet erejéig enged értékesíteni! Nem ajánljuk a használatát!

11. ÁFA kör

A jelenleg (2006. január 24.) hatályos törvények szerint az ÁFA körök a következők:

1: 5%            („A” ÁFA kör)

2: 18%          („B” ÁFA kör)

3: 25%          („C” ÁFA kör)

4: AJT          (adójegyes termékek, „D” ÁFA kör)

5: TAM        (tárgyi adómentes termékek, „E” ÁFA kör)

12. Hozzárendelt mennyiségi egység

A pénztárgépben beállított mennyiségi egység sorszáma (1-9). Kötelező az egyikhez hozzárendelni a cikkeket. Csak egyszerűsített számla nyomtatásakor van jelentősége, ekkor kerül nyomtatásra. A mennyiségi egységek programozását a szerviz szakembere végzi, egyeztessen vele!

A VTSZ-kód csak egyszerűsített számlán kerül nyomtatásra.

Egy PLU-hoz hozzákapcsolhatunk egy másikat (pl. a sör és az üveg). Ekkor az egyik eladása maga után vonja a másikat is – a pénztárgép lekérdezi a kapcsolt terméket is, és ugyanannyi darabot ad el belőle.

A megadott árak a státusz 1. opciójától függően fix árat, vagy maximális árat jelentenek. Ha a pénztárgép árszint lehetőségének használata mellet dönt, minden egyes szinthez végre kell hajtani a memóriafoglalás újrafelosztását, valamint a funkcióbillentyűt definiálni szükséges a klaviatúrára. Az ehhez szükséges feladatok elvégzéséhez kérje a szerviz segítségét. E funkció használata esetén ugyanazon PLU három különböző árszinten értékesíthető (például a normál árhoz képest kétféle felárral értékesíti ugyanazon terméket műszaktól, napszaktól, szezontól függően). Alapesetben a pénztárgép csak egy árszintet kezel, az árszintek növelésével csökken a használható PLU-k száma!

 

Rendszerkövetelmények:

min. operációs rendszer

min. processzor

min. RAM

soros port

 

Az adott programozási nyelvnek alkalmasnak kell lennie az ActiveX technológia

használatára. Pl.: Delphi, Visual Basic stb.

 

 

Az ocx-et első használat előtt regisztrálni kell! Ennek legegyszerűbb módja a

„regsvr32 AC420MDrv.ocx” parancs futtatása.

 

Az online számítógépes kapcsolathoz szükséges, csak szerviz által végezhető beállítások

 

  1. Online működés beállítása
  2. soros port programozása számítógéphez
  3. soros port programozása vonalkód olvasóhoz
  4. vevőbillentyű definiálása (igény esetén)
  5. kedvezménybillentyűk programozása (igény esetén)
  6. kötelező vevőazonosítás beállítása (igény esetén)
  7. árszintbillentyűk definiálása (igény esetén)
  8. visszáru-billentyű definiálása (igény esetén)
  9. mennyiségi egységek meghatározása (igény esetén)

A nem kívánt billentyűfunkciók (pl. kedvezmény, megszakítás billentyű) letilthatók.

 

A kommunikáció

 

Az illesztő program, csak azokkal a pénztárgépekkel működik együtt korlátozás nélkül, amelyekhez megvásárolták! Ellenkező esetben a program minden funkciója működik, de egy tétel ára maximum 99 Ft lehet! A mellékelt sam4s.enc fájl tartalmazza a megvásárolt gépekhez tartozó kódokat.

 

Egy számítógép akár több pénztárgépet is kiszolgálhat, de vegyük azt figyelembe, hogy a számítógép esetleges meghibásodása esetén csak hagyományos módon, közvetlenül gyűjtőbe lehet értékesíteni. (A számítógépes kapcsolat nélküli értékesítés adatait a pénztárgép tételesen nem tárolja!) Ezért azt ajánljuk, hogy az egynél több értékesítési hellyel rendelkező üzletekben legalább két számítógép szolgálja ki a pénztárgépeket. Négynél több pénztárgépet ne csatlakoztasson egy számítógéphez!

 

Az osztályból csak egyetlen példányt hozzon létre akkor is, ha több pénztárgépet akar kiszolgálni! Ebben az esetben minden használni kívánt portra hívja meg a PortOpen függvényt.

Az eladás folyamatáról események tájékoztatnak:

Egy termék kódjának beolvasása egy OnPluInquire eseményt generál.

A tényleges értékesítéshez a SendPlu függvényt kell hívni az eseményben kapott kódú termék adataival.

Amennyiben a termék első a nyugtában, előbb egy OnOpenReceipt esemény következik, majd egy OnSell. Minden további termék eladása egy OnSell-t eredményez. (Amennyiben közvetlenül gyűjtőbe értékesítenek, az OnPluInquire természetesen elmarad, de az adatokat ekkor is megkapjuk az eladásról.) Kedvezmény, ill. felár adásakor egy OnModify, fizetéskor egy OnTender érkezik (ebből több is lehet, ha több fizetőeszközzel egyenlítik ki a nyugtát), a nyugta lezárását pedig egy OnCloseReceipt jelzi.

Ha a nyugta megszakad, akkor az OnCloseReceipt elmarad, helyette egy OnCancelReceipt érkezik.

Vevőazonosításkor egy OnCustInquire keletkezik, erre a SendCust függvény hívásával kell válaszolni. A visszakapott vevőnév első 16 karakterét a pénztárgép megjeleníti a kijelzőjén. (Ezt a funkciót a pénztárgép „VEVŐ. AZON.” billentyűjének megnyomásával kell kezdeményezni.) Vevőazonosítást a nyugtán belül többször is lehetséges.

Függvények

(A deklarációk a Delphi szintaktikáját követik, az objektum típusa: AC420.)

 

A Sam4s 420M vezérlőprogramját 2006. 04. 14-én módosítottuk! A módosítások a korábban üzembe helyezett pénztárgépeket is érintik, ezekben is ki fogjuk cserélni a vezérlőprogramot három hónapon belül. Ezzel szükségtelenné vált a port megnyitáskor az adóazonosító szám ellenőrzése, mivel az új programmal működő pénztárgép a plu lekérdezésekor elküldi az adóazonosítóját is. Ha a pénztárgépet ez alapján akarja azonosítani, lehetősége van rá az új OnPluInquireEx esemény kezelésével. Mivel az adóazonosító szám lekérdezése a port nyitásakor különböző problémákkal járt, az Init függvény helyett az azonos paraméterekkel hívható PortOpen függvény használatát javasoljuk. A PortOpen hívása után nem keletkezik OnConnect esemény

function Init(port_num: Byte; baudrate, log_size: Integer; const sn_path: WideString): Integer

Helyette a PortOpen függvény használatát javasoljuk!

A kapcsolat felvételére szolgál. Megnyitja a megadott portot, és ellenőrzi a gépszámot.

Sikeres kapcsolatfelvétel esetén egy OnConnect esemény keletkezik. Ha az esemény nem következik be 1500 ms-on belül, a kapcsolatfelvétel sikertelen volt, a program demo módban fog működni! Ha a kapcsolatfelvétel sikeres volt a pénztárgép kijelzőjén „PC KAPCSOLAT” felirat látható. A „TÖRLÉS” gomb megnyomására a pénztárgép visszaáll eladás módba.

 

A paraméterek jelentése:

port_num: soros port száma (1-16)

baudrate: 9600 v. 19200 (meg kell egyezzen pénztárgépen beállított kommunikációs sebességgel)

log_size: a log fájl mérete KB-ban megadva (max. 500). Ha értéke 0 nem készít logot. A log helye az sn_path-ban megadott útvonal, ezért erre a könyvtárra írási jog szükséges amennyiben logot szeretnénk készíteni! Csak indokolt esetben használjuk, mert lassítja a kommunikációt!

sn_path: a sam4s.enc elérési útvonala (ha lehet egy helyi meghajtóra másoljuk, mert a hálózatra loggolás nagyon lelassíthatja a kommunikációt!)

 


 

 

function PortOpen(port_num: Byte; baudrate, log_size: Integer; const sn_path: WideString): Integer;

Megnyitja a megadott portot.

 

A paraméterek jelentése:

port_num: soros port száma (1-16)

baudrate: 9600 v. 19200 (meg kell egyezzen pénztárgépen beállított kommunikációs sebességgel)

log_size: a log fájl mérete KB-ban megadva (max. 500). Ha értéke 0 nem készít logot. A log helye az sn_path-ban megadott útvonal, ezért erre a könyvtárra írási jog szükséges amennyiben logot szeretnénk készíteni! Csak indokolt esetben használjuk, mert lassítja a kommunikációt!

sn_path: a sam4s.enc elérési útvonala (ha lehet egy helyi meghajtóra másoljuk, mert a hálózatra loggolás nagyon lelassíthatja a kommunikációt!)

 

 

 

procedure PortClose(port_num: Byte)

Bezárja a paraméterben megadott portot.

 

 

function SendPlu(port_num: Byte; const plu_code, desc: WideString; group1,group2,

 group3: Byte; const status, vtsz, link: WideString; price1, price2, price3: Integer): Integer

Az OnPluInquire eseményben lekérdezett termék adatait ezzel a függvénnyel lehet a pénztárgépre továbbítani. Ha az adatok megfelelőek, értékesíti a terméket. Port_num és plu_code paraméterek értéke meg kell egyezzen az esemény azonos nevű paramétereiével. Ha a keresett kódú termék nem található, plu_code paraméter értéke „0” legyen.

 

A paraméterek jelentése:

port_num: soros port száma

plu_code: max. 14 számjegyű termékazonosító kód

desc: max. 24 karakteres megnevezés

group1: 0-99 közötti érték

group2: mint group1

group3: mint group1

stat: max. 12 számjegy, az első tíz 1 v. 0 (igen v. nem); a 11. 1-5; a 12. 1-9 közötti értékkel

vtsz: max. 11 karakter

link: max. 14 számjegyű azonosító kód (ha nincs, értéke legyen „0”)

price1: max. 8 számjegy

price2: mint price1

price3: mint price1

 


 

 

function SendCust(port_num: Byte; const cust_id, cust_desc: WideString): Integer

Az OnCustInquire eseményben lekérdezett vevő adatait ezzel a függvénnyel lehet a pénztárgépre továbbítani. A cust_desc paraméterben megadott vevőnév első 16 karaktere megjelenik a pénztárgép kijelzőjén. A port_num és cust_id paraméterek értéke meg kell egyezzen az esemény azonos nevű paramétereiével. Ha a keresett kódú vevő nem található cust_id paraméter értéke „0” legyen.

 

A paraméterek jelentése:

port_num: soros port száma

cust_id: max. 30 karakteres vevőazonosító

cust_desc: max. 16 karakteres vevőnév

 

 

 

A pénztárgép programozásához szükséges függvények jellemzői:

 

A string paraméterek néhány esetben (ezt a függvények leírásánál külön jelezzük) tulajdonképpen listák, melyben az egyes elemeket az ASCII 255-ös karakter választja el egymástól. Azaz pl. a CurrencyUpload függvény cur_id, desc, stb. paraméterében több kódot, nevet, stb. is megadhatunk ASCII 255-ös karakterrel elválasztva. (Természetesen egy függvény minden paraméterének azonos számú elemet kell tartalmaznia). Így ha mind a négy valuta árfolyamát akarjuk megváltoztatni elég egyszer meghívni a függvényt.

Ha nyitott napnál programozzuk a pénztárgépet nyomtat egy rövid jelentést a papírszalagra. A programozás végén kétszer meg kell nyomni a pénztárgép „TÖRLÉS” billentyűjét!

 

 

function GetStatus(port_num: Byte; var day_open: WordBool): Integer;

A nap nyitott állapot lekérdezésére szolgál. (Bizonyos programozási utasításokat csak zárt napnál hajt végre a pénztárgép.)

 

A paraméterek jelentése:

port_num: soros port száma

day_open: ha „true” a nap nyitva van

 

 

function CurrencyUpload(port_num: Byte; const cur_id, desc, rate, nod: WideString): Integer;

A valuták feltöltésére szolgáló függvény. A pénztárgép négy valutát képes kezelni. A string paraméterek listák.

 

A paraméterek jelentése:

port_num: soros port száma

cur_id: programozandó valuta sorszáma (1-4)

desc: max. 3 karakteres megnevezés

rate: max. 6 számjegyen a váltási arány (beleértve a tizedesjegyeket is)

nod: tizedes jegyek száma (0-7)

(azaz ha a váltási arány 256,23 akkor rate értéke 25623, nod értéke 2 legyen)

 


 

 

function SetClerkOptions(port_num: Byte; entry_code: WordBool; default_clerk: Byte; stay_down: WordBool): Integer;

Az eladókhoz tartozó opciók beállítására. Végrehajtáshoz zárt nap szükséges!

 

A paraméterek jelentése:

port_num: soros port száma

entry_code: ha „true”, az eladóknak kóddal kell bejelentkezniük

default_clerk: ha entry_code értéke „false”, az itt megadott eladót lépteti be az eladó gomb megnyomásakor (1-10)

stay_down: ha „false” minden nyugta után újra be kell jelentkeznie az eladónak

 

 

function ClerkUpload(port_num: Byte; const clerk_id, desc, secret_code, status: WideString): Integer;

Az eladók nevének, kódjának programozására szolgál. A pénztárgép alapállapotban 10 eladót kezel, de akár 99 is allokálható. A végrehajtáshoz zárt nap szükséges! A string paraméterek listák.

 

A paraméterek jelentése:

port_num: soros port száma

clerk_id: eladó sorszáma (1-99, de max. az allokált eladók száma)

desc: max. 12 karakteres megnevezés

secret_code: max. 7 jegyű tikos kód

status: jelenleg nem használt

 

 

 

Események

 

procedure OnConnect(port_num: Byte; const ap_num: WideString; demo_mode: WordBool);

Közvetlenül az Init függvény hívása után keletkezik.

 

A paraméterek jelentése:

port_num: soros port száma

ap_num: a pénztárgép adóazonosító száma

demo_mode: ha „true”, a korábban ismertetett korlátozásokkal működik a program

 

 

procedure OnPluInquire(port_num: Byte; const plu_code: WideString)

Bekövetkezik, ha egy termék kódját vonalkód olvasóval beolvassák, vagy beütik a pénztárgép billentyűzetén. A termék adatait a SendPlu függvénnyel kell a pénztárgépnek küldeni. Figyelem: a pénztárgép a vonalkód vezető 0-it nem küldi el! (A 2.0-ás verziótól az OnPluInquire után keletkezik egy OnPluInquireEx esemény is a korábban ismertetettek miatt az OnConnect esemény kiváltására, de csak az egyiket szabad lekezelni!)

 

A paraméterek jelentése:

port_num: soros port száma

plu_code: a termék azonosító kódja

 

 

procedure OnPluInquireEx(port_num: Byte; const plu_code: WideString; const ap_num: WideString; demo_mode: WordBool);

Bekövetkezik, ha egy termék kódját vonalkód olvasóval beolvassák, vagy beütik a pénztárgép billentyűzetén. A termék adatait a SendPlu függvénnyel kell a pénztárgépnek küldeni.

Figyelem: a pénztárgép a vonalkód vezető 0-it nem küldi el!  (A 2.0-ás verziótól az OnPluInquireEx előtt keletkezik egy OnPluInquire esemény is a korábban ismertetettek miatt, de csak az egyiket szabad lekezelni!)

 

A paraméterek jelentése:

port_num: soros port száma

plu_code: a termék azonosító kódja

ap_num: a pénztárgép adóazonosító száma

demo_mode: ha „true”, a korábban ismertetett korlátozásokkal működik a program

 

 

procedure OnCustInquire(port_num: Byte; const cust_id: WideString)

Bekövetkezik, ha egy vevő kódját vonalkód olvasóval beolvassák, vagy beütik a pénztárgép billentyűzetén. A termék adatait a SendCust függvénnyel kell a pénztárgépnek küldeni.

 

A paraméterek jelentése:

port_num: soros port száma

cust_id: a vevő azonosítója

 

 

procedure OnDayOpen(port_num: Byte; const do_date: WideString; const do_time: WideString; clerk_num: Byte; const ap_num: WideString)

Bekövetkezik, ha napi nyitást végeznek a pénztárgépen.

 

A paraméterek jelentése:

port_num: soros port száma

do_date: dátum ÉÉHHNN formában

do_time: idő ÓÓPP formában

clerk_num: bejelentkezett eladó száma

ap_num: pénztárgép adóazonosító száma

 

 

procedure OnOpenReceipt(port_num: Byte; const or_date: WideString; const or_time: WideString; clerk_num: Byte; receipt_num: Integer; const ap_num: WideString)

A nyugta nyitásakor (az első tétel eladása előtt) következik be.

 

A paraméterek jelentése:

port_num: soros port száma

or_date: dátum ÉÉHHNN formában

or_time: idő ÓÓPP formában

clerk_num: bejelentkezett eladó száma

receipt_num: a megkezdett nyugta száma

ap_num: pénztárgép adóazonosító száma

 

 

 

procedure OnSell(port_num: Byte; tr_type: Byte; item_type: Byte; const item_code: WideString;   unit_price: Integer; total_price: Integer; count: Integer)

Bekövetkezik, ha a pénztárgépen értékesítés történt.

 

A paraméterek jelentése:

port_num: soros port száma

tr_type: tranzakció típusa        

ha 0: eladás

ha 1: sztornó

            ha 2: visszáru

item_type: tétel típusa  

            ha 0: PLU

            ha 1: gyűjtő

item_code: PLU vagy gyűjtő kódja (item_type-tól függően)

unit_price: termék egységára (gyűjtőbe történő eladásnál van jelentősége)

total_price: unit_price*count a pénztárgép által számolt értéke

count: darabszám 100-zal szorozva (pl.: 1,15 esetén 115)

 

 

procedure OnModify(port_num: Byte; m_type: Byte; m_mode: Byte; amount: Integer)

Bekövetkezik, ha engedményt adnak, vagy a felár funkciót használják a pénztárgépen.

 

A paraméterek jelentése:

port_num: soros port száma

m_type: az ármódosítás típusa

            ha 68: kedvezmény

            ha 83: felár

m_mode: az áreltérítés módja

            ha 73: tételre

            ha 83: részösszegre

amount: az ármódosítás értéke

 

 

procedure OnTender(port_num: Byte; t_type: Byte; amount: Integer; huf_value: Integer; change: Integer)

Bekövetkezik, ha fizettetnek a pénztárgépen.

 

A paraméterek jelentése:

port_num: soros port száma

t_type: fizetőeszköz típusa

            ha 48: készpénz

            ha 49: csekk

            ha 50-57: hitel1-hitel8

            ha 65-68: valuta1-valuta4

amount: átadott összeg (ha t_type:65-68, akkor amount értékét 100-zal kell osztani, pl. 110 esetén az átadott érték 1,10!)

huf_value: átadott összeg értéke forintban

change: visszajáró forintban


 

 

procedure OnCloseReceipt(port_num: Byte; const cr_date: WideString; const cr_time: WideString; clerk_num: Byte; receipt_num: Integer; const ap_num: WideString)

A nyugta lezárásakor (ha a fizetéskor megadott összeg eléri vagy meghaladja a  fizetendőt) következik be.

 

A paraméterek jelentése:

port_num: soros port száma

cr_date: dátum ÉÉHHNN formában

cr_time: idő ÓÓPP formában

clerk_num: bejelentkezett eladó száma

receipt_num: a megkezdett nyugta száma

ap_num: pénztárgép adóazonosító száma

 

 

procedure OnCancelReceipt(port_num: Byte; const cl_date: WideString; const cl_time: WideString; clerk_num: Byte; receipt_num: Integer; const ap_num: WideString)

A nyugta megszakításakor következik be.

 

A paraméterek jelentése:

port_num: soros port száma

cl_date: dátum ÉÉHHNN formában

cl_time: idő ÓÓPP formában

clerk_num: bejelentkezett eladó száma

receipt_num: a megkezdett nyugta száma

ap_num: pénztárgép adóazonosító száma

 

 

procedure OnPaidInOut(port_num: Byte; p_type: Byte; cash: Integer; check: Integer;

const pd_date: WideString; const pd_time: WideString; clerk_num: Byte; const ap_num: WideString)

Bekövetkezik, ha Pénz be vagy Pénz ki műveletet végeznek a pénztárgéppel.

 

A paraméterek jelentése:

port_num: soros port száma

p_type: a művelet típusa

            ha 48: Pénz be

            ha 49: Pénz ki

cash: betett/kivett készpénz

check: betett/kivett csekk

pd_date: dátum ÉÉHHNN formában

pd_time: idő ÓÓPP formában

clerk_num: bejelentkezett eladó száma

ap_num: pénztárgép adóazonosító száma

 

 

 

 


 

 

A függvények lehetséges visszatérési értékei:

 

0: Nincs hiba

1: Hiba a port nyitásakor

2. Időtúllépés (a pénztárgép nem válaszol)

3. A megadott port nincs nyitva

4. Paraméter feldolgozási hiba: a paraméterek értéke nem megfelelő

5. Hiba a sam4s.enc fájl olvasásakor

6. Paraméter feldolgozási hiba: feltöltéskor a paraméterekben lévő elemek száma nem egyezik

7. Paraméter feldolgozási hiba: feltöltéskor túl hosszú (legalább) az egyik paraméter

8. Nincs elég eladó allokálva!

9. Négy portnál többet nem lehet megnyitni!

 

 

Programverziók:

 

V 1.0.0:                       2006.02.14.

az első verzió

 

V 2.0.0:                       2006.04.24.

A Sam4s 420M vezérlőprogramja 2006. 04. 14-től módosult.

 

Új függvények:

PortOpen

GetStatus

CurrencyUpload

SetClerkOptions

ClerkUpload

Új esemény:

OnPluInquireEx

Hibajavítás:

az OnCustInquire eseményben a cust_id mindig 30 karakter hosszú volt: javítva

OnPaidInOut eseményben ha p_type=49 (pénz ki) cash ill. check értéke negatív volt: javítva

 

V 2.1.0:                       2006.06.15.

A Visual Basicben készült, és lefordított alkalmazásokban nem voltak események

A program átdolgozásával a probléma megoldódott. Ebből kifolyólag a megnyitható portok száma 4-re lett korlátozva. (A korábbi verziókban nem volt korlát.)

 

V 2.1.1:                       2007.07.05.

A 2.1-es verzióba az átdolgozás során került egy hiba: nem működtek a GetStatus, CurrencyUpload, SetClerkOptions, ClerkUpload függvények. Javítva.