Overview

Knihovna plně podporuje VB6. 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.

Pozn. k chybám: na rozdíl od VFP dokáže VB6 zachytit plnohodnotnou COM chybu včetně popisné zprávy přes Err objekt. Doporučený způsob ošetření chyb je tedy On Error + Err.Description, volání GetLastErrorCode() pro získání chybového kódu.

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 Long, 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 Long ID provozovny (1–999999999)
idPokl String ID pokladny, max 20 znaků
isPlayground Boolean True = testovací prostředí, False = ostré prostředí

Vyhodí chybu při nevalidních hodnotách nebo pokud již byl klient inicializován.

Příklad:

Dim objClient As Object
Set objClient = CreateObject("EET2.Client")
objClient.Init "CZ12345678", 3, "KASA-001", False

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:

Dim objClient As Object
Set objClient = CreateObject("EET2.Client")
objClient.Init "CZ12345678", 3, "KASA-001", False
objClient.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 True pokud se jedná o první pokus o zaslání, jinak False

Vrací server vrácený POK nebo případnou chybu.

Příklad:

Dim objClient As Object
Set objClient = CreateObject("EET2.Client")
objClient.Init ...
Dim objTx As Object
Set objTx = CreateObject("EET2.Transaction")
objTx.Init ...
Dim strPok As String
strPok = objClient.Submit(objTx, True)

Ošetření chyb (doporučeno): On Error + Err

Metody knihovny vyhazují standardní COM chybu, kterou VB6 zachytí přes Err objekt včetně popisné zprávy.

Příklad:

On Error Resume Next

Dim objClient As Object
Set objClient = CreateObject("EET2.Client")
' Zavolani Submit() pred Init()
objClient.Submit objTx, True

If Err.Number <> 0 Then
    Debug.Print "Chyba: " & Err.Number & " - " & Err.Description
    ' napr. "Chyba: 200 - Objekt neni inicializovan"
End If

On Error GoTo 0

GetLastErrorCode() As Long

Alternativní/starší způsob zjištění posledního chybového kódu — vrátí kód posledního erroru nebo 0, pokud poslední zavolaná funkce proběhla bez chyby. V běžném VB6 kódu preferujte Err.Number/Err.Description výše.

Příklad:

Dim objClient As Object
Set objClient = CreateObject("EET2.Client")
' Zavolani Submit() pred Init()
objClient.Submit objTx, True
Debug.Print objClient.GetLastErrorCode() ' Vrati 200, tedy error NOT_INITIALIZED

EET2.Transaction

Reprezentuje transakci k odeslání na server.

Pozn.: VB6 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 Date 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 Date, celkTrzba As String)

Inicializace transakce

Parametr Typ Popis
poradCis String Pořadové číslo tržby, max 25 znaků
datTrzby Date 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:

Dim objTx As Object
Set objTx = CreateObject("EET2.Transaction")
' Inicializace platby ID 0001, ktera probehla "prave ted" o castce 150.00,-
objTx.Init "0001", Now, "150.00"

Ošetření chyb: stejně jako u EET2.Client doporučujeme On Error + Err.Number/Err.Description. GetLastErrorCode() zůstává jako alternativa.

Příklad:

On Error Resume Next

Dim objTx As Object
Set objTx = CreateObject("EET2.Transaction")
objTx.Init ...
objTx.EicPoverujiciho = "neplatne EIC"

If Err.Number <> 0 Then
    Debug.Print "Chyba: " & Err.Number & " - " & Err.Description
    ' Vrati kod 3, tedy error INVALID_EIC_POVERUJICIHO
End If

On Error GoTo 0

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,- včetně ošetření případné chyby.

On Error Resume Next

' Vytvoreni & inicializace klienta vcetne nacteni certifikatu
Dim objClient As Object
Set objClient = CreateObject("EET2.Client")
objClient.Init "CZ12345678", 3, "KASA-001", False
objClient.LoadCert "CZ12345678.p12", "tajne_heslo"

' Vytvoreni jednoduche transakce
Dim objTx As Object
Set objTx = CreateObject("EET2.Transaction")
objTx.Init "0556", Now, "323.56"

' Prvni odeslani platby
Dim strPok As String
strPok = objClient.Submit(objTx, True)

If Err.Number <> 0 Then
    Debug.Print "Chyba: " & Err.Number & " - " & Err.Description
Else
    Debug.Print "POK: " & strPok
End If

On Error GoTo 0

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
Dim objClient As Object
Set objClient = CreateObject("EET2.Client")
objClient.Init "CZ12345678", 3, "KASA-001", False
objClient.LoadCert "CZ12345678.p12", "tajne_heslo"

' Vytvoreni jednoduche transakce
Dim objTx As Object
Set objTx = CreateObject("EET2.Transaction")
objTx.Init "0556", Now, "323.56"
objTx.EicPoverujiciho = "CZ00000019"

' Prvni odeslani platby
Dim strPok As String
strPok = objClient.Submit(objTx, True)

Odeslání tržby na testovací server

Jednoduchá ukázka odeslání tržby na testovací server.

' Vytvoreni & inicializace klienta vcetne nacteni certifikatu
Dim objClient As Object
Set objClient = CreateObject("EET2.Client")
objClient.Init "CZ12345678", 3, "KASA-001", True
objClient.LoadCert "CZ12345678.p12", "tajne_heslo"

' Vytvoreni jednoduche transakce
Dim objTx As Object
Set objTx = CreateObject("EET2.Transaction")
objTx.Init "0556", Now, "323.56"

' Prvni odeslani platby
Dim strPok As String
strPok = objClient.Submit(objTx, True)
' i testovaci server vraci potvrzovaci kod POK
Debug.Print strPok