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