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