Overview
Knihovna plně podporuje VFP9. Názvy vlastností jsou odvozeny od oficiálních názvů používaných Finanční správou ČR dostupných zde na straně 21. Bližší popis chybových kódů vracených serverem je dostupý zde na straně 30.
EET2.Client
Reprezentace EET klienta = pokladny.
Vlastnosti
| Vlastnost | Typ | Popis |
|---|---|---|
| EicPoplatnika | String | EIČ Poplatníka, formát CZ + 8-10 číslic |
| IdJednotky | Integer | ID Provozovny (1–999999999) |
| IdPokl | String | ID Pokladny, max 20 znaků |
| Endpoint | String | Nastavená URL adresu serveru (playground/ostré prostředí) |
| CertPath | String | Lokální cesta k aktuálně používanému .p12 certifikátu |
Metody
Init(eicPopl AS String, idJednotky AS Integer, idPokl AS String, isPlayground AS Boolean)
Inicializace klienta před použitím
| Parametr | Typ | Popis |
|---|---|---|
| eicPopl | String | EIČ poplatníka, formát CZ + 8-10 číslic |
| idJednotky | Integer | ID provozovny (1–999999999) |
| idPokl | String | ID pokladny, max 20 znaků |
| isPlayground | Boolean | .T. = testovací prostředí, .F. = ostré prostředí |
Vyhodí chybu při nevalidních hodnotách nebo pokud již byl klient inicializován.
Příklad:
loClient = CREATEOBJECT("EET2.Client")
loClient.Init("CZ12345678", 3, "KASA-001", .F.)
LoadCert(pkcs12Path AS String, password AS String)
Načte podpisový certifikát (.p12). Musí být zavoláno před odesíláním dat.
| Parametr | Typ | Popis |
|---|---|---|
| pkcs12Path | String | Cesta k .p12 souboru |
| password | String | Heslo od .p12 certifikátu |
Vyhodí chybu pokud je certifikát neplatný nebo heslo není správné.
Příklad:
loClient = CREATEOBJECT("EET2.Client")
loClient.Init("CZ12345678", 3, "KASA-001", .F.)
loClient.LoadCert("CZ12345678.p12", "tajne_heslo")
Submit(transakce AS Object, prvniZaslani AS Boolean) AS String
Odešle transakci na server a vrátí potvrzovací kód POK
| Parametr | Typ | Popis |
|---|---|---|
| transakce | Object | Objekt typu EET2.Transaction reprezentující odesílanou transakci |
| prvniZaslani | Boolean | .T. pokud se jedná o první pokus o zaslání, jinak .F. |
Vrací server vrácený POK nebo případnou chybu.
Příklad:
loClient = CREATEOBJECT("EET2.Client")
loClient.Init(...)
loTx = CREATEOBJECT("EET2.Transaction")
loTx.Init(...)
lsPok = loClient.Submit(transakce, .T.)
GetLastErrorCode() AS Integer
Vrátí kód posledního erroru nebo 0, pokud poslední zavolaná funkce proběhla bez chyby
Příklad:
loClient = CREATEOBJECT("EET2.Client")
* Zavolani Submit() pred Init()
loClient.Submit(loTx, .T.)
? loClient.GetLastErrorCode() * Vrati 200, tedy error NOT_INITIALIZED
EET2.Transaction
Reprezentuje transakci k odeslání na server.
Pozn.: VFP automaticky převede číselné hodnoty na String, ovšem z důvodů odlišností ve formátování podle regionálního nastavení je lepší předávat hodnoty jako String explicitně.
Vlastnosti
| Vlastnost | Typ | Popis |
|---|---|---|
| CelkTrzba | String | Celková částka tržby |
| PoradCis | String | Pořadové číslo tržby |
| DatTrzby | Datetime | Datum a čas uskutečnění tržby |
| EicPoverujiciho | String | EIČ pověřujícího poplatníka |
| PovereniVicePopl | Boolean | Pověření více poplatníků |
| UrcenoCerpZuct | String | Celková částka určená k následnému čerpání |
| CerpZuct | String | Celková částka plateb, které jsou následným čerpáním |
Metody
Init(poradCis AS String, datTrzby AS Datetime, celkTrzba AS String)
Inicializace transakce
| Parametr | Typ | Popis |
|---|---|---|
| poradCis | String | Pořadové číslo tržby, max 25 znaků |
| datTrzby | Datetime | Datum tržby |
| celkTrzba | String | Celková částka tržby |
Vyhodí chybu při nevalidních hodnotách nebo pokud již byla transakce inicializována.
Příklad:
loTx = CREATEOBJECT("EET2.Transaction")
* Inicializace platby ID 0001, ktera probehla "prave ted" o castce 150.00,-
loTx.Init("0001", DATETIME(), "150.00")
GetLastErrorCode() AS Integer
Vrátí kód posledního erroru nebo 0, pokud poslední zavolaná funkce proběhla bez chyby
Příklad:
loTx = CREATEOBJECT("EE2.Transaction")
loTx.Init(...)
loTx.EicPoverujiciho = "neplatne EIC" * Vrati kod 3, tedy error INVALID_EIC_POVERUJICIHO
EET2_E Errory
| Kód | Označení chyby | Popis | Poznámka |
|---|---|---|---|
| 1 | INVALID_EIC_POPL | eic_popl neplňuje formát CZ + 8-10 číslic | |
| 2 | INVALID_ID_POKL | id_pokl není validní: musí být 1-20 znaků | |
| 3 | INVALID_EIC_POVERUJICIHO | eic_poverujiciho nesplňuje formát CZ + 8-10 číslic | |
| 4 | INVALID_ID_JEDNOTKY | id_jednotky je mimo rozsah (musí být 1-999999999) | |
| 5 | INVALID_PORAD_CIS | porad_cis není validní: musí být 1-25 znaků (0-9a-zA-Z) | |
| 6 | CERT_NOT_LOADED | certifikat není načten | |
| 10 | INVALID_PKCS12 | nelze načíst .p12 soubor | |
| 11 | WRONG_CERT_PASSWORD | špatné .p12 heslo | |
| 12 | NO_PRIVATE_KEY | nenalezen soukromý klíč v .p12 souboru | .p12 soubor je pravděpodobně nevalidní |
| 13 | NO_CERTIFICATE | nenalezen certifikát v .p12 souboru | .p12 soubor je pravděpodobně nevalidní |
| 14 | INVALID_PRIVATE_KEY | nelze načíst soukromý klíč | .p12 soubor je pravděpodobně nevalidní |
| 30 | TRANSPORT_FAILED | nepodařilo se odeslat zprávu | |
| 31 | CERT_FILE_READ_FAILED | chyba při čtení souboru | |
| 50 | SERVER_TEMPORARY | dočasná technická chyba zpracovaní, odešlete prosím datovou zprávu později (kód -1) | Chyba je na straně vzdáleného serveru |
| 52 | SERVER_INVALID_XML | kódování XML není platné (kód 2) | |
| 53 | SERVER_SCHEMA_INVALID | XML zpráva nevyhověla kontrole XML schématu (kód 3) | |
| 54 | SERVER_INVALID_SIGNATURE | neplatný podpis SOAP zprávy (kód 4) | |
| 56 | SERVER_INVALID_EIC | EIČ poplatníka má chybnou strukturu (kód 6) | tento error nastane také pokud se EIČ poplatníka neshoduje s EIČ v certifikátu |
| 57 | SERVER_MESSAGE_TOO_LARGE | datová zpráva je příliš velká (kód 7) | |
| 58 | SERVER_PROCESSING_FAILED | datová zprýva nebyla zpracována kvůli technické chybě nebo chybě dat (kód 8) | |
| 59 | SERVER_UNKNOWN | neznámý nebo rezervovaný chybový kód | |
| 60 | RESPONSE_PARSE_FAILED | nelze zparsovat Odpoved | |
| 61 | RESPONSE_UNEXPECTED | odpověď neobsahuje pole Potvrzeni nebo Chyba | |
| 90 | INVALID_ARGUMENT | neplatný nebo prázdný vstupní parametr | |
| 91 | INVALID_DECIMAL | hodnota není platné desetinné číslo | |
| 92 | INVALID_DATETIME | hodnota není platné datum/čas (očekáván formát RFC3339) | |
| 93 | NULL_HANDLE | neplatný nebo null handle objektu (objekt není platný nebo je null) | |
| 94 | NO_POK | server nevrátil potvrzovací kód POK | |
| 200 | NOT_INITIALIZED | Objekt není inicializován | |
| 201 | TRANSACTION_IS_NULL | Objekt transakce je nevalidní nebo je null | |
| 202 | ALREADY_INITIALIZED | Objekt byl již inicializován | |
| 203 | INTERNAL_INVALID_DATETIME_CODE | nelze zprasovat interní dat_trzby | interní error ke kterému by nemělo dojít |
| 204 | NOT_VARIANT_DATETIME_CODE | nelze zparsovat interní dat_trzby do VARIANT DATE | interní error ke kterému by nemělo dojít |
Ukázky
Odeslání jednoduché platby
Celý proces odeslání jednoduché platby o částce 323.56,- Pozn.: tato ukázka NEŘEŠÍ možné chyby vzniklé na straně serveru
* Vytvoreni & inicializace klienta vcetne nacteni certifikatu
loClient = CREATEOBJECT("EET2.Client")
loClient.Init("CZ12345678", 3, "KASA-001", .F.)
loClient.LoadCert("CZ12345678.p12", "tajne_heslo")
* Vytvoreni jednoduche transakce
loTx = CREATEOBJECT("EET2.Transaction")
loTx.Init("0556", DATETIME(), "323.56")
* Prvni odeslani platby
lcPok = loClient.Submit(loTx, .T.)
Evidence platby v pověření jiného poplatníka
Ukázka odeslání tržby, která plyne jinému poplatníkovi než evidujícímu. V ukázce má evidující poplatník EIČ CZ12345678 a poplatník, kterému tržba plyne CZ00000019.
* Vytvoreni & inicializace klienta vcetne nacteni certifikatu
loClient = CREATEOBJECT("EET2.Client")
loClient.Init("CZ12345678", 3, "KASA-001", .F.)
loClient.LoadCert("CZ12345678.p12", "tajne_heslo")
* Vytvoreni jednoduche transakce
loTx = CREATEOBJECT("EET2.Transaction")
loTx.Init("0556", DATETIME(), "323.56")
loTx.EicPoverujiciho = "CZ00000019"
* Prvni odeslani platby
lcPok = loClient.Submit(loTx, .T.)
Odeslání tržby na testovací server
Jednoduchá ukázka odeslání tržby na testovací server.
* Vytvoreni & inicializace klienta vcetne nacteni certifikatu
loClient = CREATEOBJECT("EET2.Client")
loClient.Init("CZ12345678", 3, "KASA-001", .T.)
loClient.LoadCert("CZ12345678.p12", "tajne_heslo")
* Vytvoreni jednoduche transakce
loTx = CREATEOBJECT("EET2.Transaction")
loTx.Init("0556", DATETIME(), "323.56")
* Prvni odeslani platby
lcPok = loClient.Submit(loTx, .T.)
* i testovaci server vraci potvrzovaci kod POK
? lcPok