FlexiBee API - EET

Od 1. prosince 2016 se rozjíždí první vlna Elektronické evidence tržeb zkráceně EET. Je možné doklady spadající do EET stále ještě vytvářet přes API a zajistit jejich odeslání ministerstvu financí bez zásahu uživatele? Ano. I podpora pro API je již ve FlexiBee ve verzi 2016.4. doplněna.

Nastavení FlexiBee

FlexiBee je potřeba pro využívání EET nejprve nastavit. Do evidence Certifikátů je potřeba nahrát platný certifikát získaný od Finanční správy ČR. V průvodci je nutné zvolit, že se jedná o EET certifikát a vyplnit označení provozovny, ke které se vztahuje. V nastavení firmy (Autom. operace – EET) si zvolit mód komunikace a pokud máte jen jednu provozovnu tak vyplnit výchozí označení provozovny a limit odpovědi. Zbývající údaje je možné předvyplnit na typech dokladů.

Doklady

Do EET umožňuje FlexiBee odesílat vydané faktury, prodejní kasu a pokladní doklady. Na všechny tyto evidence byla přidána potřebná nová pole. Buď je tedy nutné přednastavit si potřebné údaje v typu dokladu nebo je vyplňovat při importu jednotlivých dokladů.

Seznam polí přidaných kvůli EET

eetTypK – toto pole určuje zda doklad spadá do EET nebo nikoliv a případně v jakém režimu (běžný nebo zjednodušený). Je do něho možné zapisovat a pokud má být doklad odeslán je nutné zvolit jednu z možností eetTyp.anoBezny nebo eetTyp.anoZjednoduseny.

eetProvozovna – toto pole obsahuje označení provozovny ve které byl doklad vystaven. Označení provozovny musí být celočíselné. Podle tohoto pole také dochází k vyhledávání certifikátu pro podpis zprávy.

eetPokladniZarizeni – toto pole obsahuje jednoznačný identifikátor pokladního zařízení na němž byl doklad vystaven. Jedná se o textové pole o délce 20 znaků.

eetDatCasTrzby – také kvůli evidenci datumu a času tržby muselo být do FlexiBee přidáno nové pole.

eetPkp – pole obsahující PKP (podpisový kód pokladníka). Pokud chcete aby doklad odeslalo FlexiBee tak toto pole nevyplňujte. Při 1. pokusu o odeslání do něj FlexiBee zapíše vygenerované PKP. Pokud toto pole vyplníte bude FlexiBee předpokládat, že již první pokus o odeslání proběhl v jiném systému.

eetFik – v tomto poli je uložen FIK (fiskální identifikační kód), který FlexiBee obdrželo od EET. Pokud se má FlexiBee pokoušet o jakékoliv odesílání tak toto pole nevyplňujte. V případě, že ho vyplníte bude k tomuto dokladu FlexiBee přistupovat jako, že je doklad již odeslán.

eetStavK – stav odeslání dokladu do EET je zaznamenám v poli eetStavK. Jedná se o pole jen pro čtení. Má sloužit k rychlému nalezení dokladů, které ještě nebyly do EET odeslány.

Ukázkové XML

EET doklad ve formátu XML tedy vypadá například takto:
<winstrom>
  <pokladni-pohyb>
    <!-- údaje potřebné pro vystavení pokladního dokladu -->
    <id>ext:EET-UKAZKA:1</id>
    <typDokl>code:STANDARD</typDokl>
    <pokladna>code:POKLADNA KČ</pokladna>
    <bezPolozek>true</bezPolozek>
    <sumZklZakl>1000</sumZklZakl>
    <!-- údaje pro správné odeslání dokladu do EET -->
    <eetTypK>eetTyp.anoBezny</eetTypK>
    <eetProvozovna>123</eetProvozovna>
    <eetPokladniZarizeni>pokladna-1</eetPokladniZarizeni>
  </pokladni-pohyb>
</winstrom>

Ukázkový JSON

Samozřejmě všechna pole je možné vyplňovat i při použití JSON formátu.
{
  "winstrom": {
    "pokladni-pohyb": {
      "id": "ext:EET-UKAZKA:1",
      "typDokl": "code:STANDARD",
      "pokladna": "code:POKLADNA KČ",
      "bezPolozek": "true",
      "sumZklZakl": "1000",
      "eetTypK": "eetTyp.anoBezny",
      "eetProvozovna": "123",
      "eetPokladniZarizeni": "pokladna-1"
    }
  }
}

Nebo pokud budou správně nastaveny hodnoty v typech dokladů není nutné nic měnit.

Odeslání dokladu

Založit doklad spadající do EET se podařilo, ale jak ho odeslat?
FlexiBee opět nabízí několik způsobů jak takovýto doklad odeslat strojově bez nutnosti zásahu uživatele.

Action odeslat-eet

První možností je využití action="odeslat-eet". V elementu s touto akcí by neměly být žádné další změny. Touto akcí můžeme vyvolat odeslání jednoho konkrétního dokladu.
Ukázkové XML tedy bude vypadat:
<winstrom>
  <pokladni-pohyb action="odeslat-eet">
    <id>ext:EET-UKAZKA:1</id>
  </pokladni-pohyb>
</winstrom>

V JSON zapíšeme odeslání
{
  "winstrom": {
    "pokladni-pohyb": {
      "@action": "odeslat-eet",
      "id": "ext:EET-UKAZKA:1"
    }
  }
}

Automatické odeslání dokladů serverem

Další možností je nechat FlexiBee najít a odeslat všechny neodeslané doklady z dané evidence.
K provedení této operace je potřeba PUT nebo POST request na URL končící /automaticky-odeslat-neodeslane-eet.
https://demo.flexibee.eu/c/demo/pokladni-pohyb/automaticky-odeslat-neodeslane-eet
Automatické odeslání je možné i u jednotlivých dokladů. URL pak musí navíc obsahovat identifikátor záznamu, který se má odeslat a akci /automaticky-odeslat-eet (/{id}/automaticky-odeslat-eet). Zde je nutné použít PUT request.
https://demo.flexibee.eu/c/demo/pokladni-pohyb/14/automaticky-odeslat-eet
Ani jedna z operací nečeká na výsledek. Pouze oznámí serveru, které doklady se mají odeslat.

Pokud se má čekat na výsledek odesílání je možné použít URL obsahující identifikátor záznamu a končící na /odeslat-eet.
https://demo.flexibee.eu/c/demo/pokladni-pohyb/14/odeslat-eet U tohoto requestu je opět podporována metod PUT i POST.

Generování PDF tiskopisu

Také při generování vybraných tiskopisů se FlexiBee pokusí o odeslání dokladu do EET.
Vybrané tiskopisy jsou:
- oba zjednodušené daňové doklady – dostupné na všech podporovaných evidencích
- faktura - ve vydaných fakturách a na prodejní kase
- pokladní doklad – v pokladně
- prodejka za hotové – v pokladně

Stačí tedy založit správně doklad a pak si požádat o jeho PDF tiskopis.
https://demo.flexibee.eu/c/demo/pokladni-pohyb/865.pdf?report-name=pokDoklad$$SUM

Odeslaný doklad není možné měnit!

Všichni si, ale musí dávat pozor na to, že na dokladu, odeslaném do EET, není možné měnit některá pole. Jedná se o pole, která by mohla ovlivnit odeslanou tržbu. Částky, měna, nově přidaná eet pole a několik dalších. Do odeslaného dokladu není možné přidávat nové položky ani je mazat. Také na položkách jsou některá pole po odeslání nezměnitelná. Například základ a DPH.
Dejte si na to prosím pozor a zkontrolujte si své programy, ať dělají jen to co mají a nemodifikují staré doklady! :-)

Ukázky v tomto článku jsou pro evidenci pokladní pohyb. V případě zbývajících dvou evidencí (faktury vydané a prodejní kasa) je veškerá funkčnost stejná jen je nutné evidenci pokladni-pohyb nahradit jinou.

ABRA FlexiBee, REST API, EET

-
Kája z Norska
Kája z Norska

Jsem programátor, horolezec a tak trochu FlexiBee fanatik :-).
Na CharlieBlogu sepisuji své nápady a poznatky už od roku 2006.