ABRA Flexibee – začínáme s REST API (for dummies)

Tento materiál je sepsán pro všechny ty linuxový, co chtějí začít s REST API od ABRA Flexibee. Ukáži Vám ten nejvíc basic základ v BASH a to tak, aby jste po přečtení tohoto článku zvládli to nejvíc potřebné pro svůj život.

Představte si, že chcete zadat vaší účetní, aby Vám vypsala do excelu posledních 100 vydaných faktur po splatnosti a ideálně tak, aby prostě vybrala variabilní symbol, částku, specifický symbol a popis. Ona to může udělat tak, že se jako správná cvičená opička se naloguje do ABRA Flexibee, klikne si na vydané faktury, dá si nějakou sadu filtrů pro výběr požadovaných sloupců a stáhne faktury. A my zhnilí ajtáci uděláme to, že prostě zadáme kouzelný příkaz a ono se to samo stane. <3

Jasně, pokud něco děláme jednou za život, netřeba se REST API zabývat. Pokud ale je náš denní chleba takové volání, pak je jasná úspora času se naučit pracovat s REST API a to i pro běžnou účetní kancelář. I když ono záleží. Je spoustu klientů, kteří někomu proplatí 5 hodin zbytečné manuální práce.

Kořeny z příkazové řádky:

Akce a reakce v ABRA Flexibee vyvoláme zasíláním příkazů v našem podání přes příkazovou řádku tedy v BASHu. Ještě před posláním příkazů je ale potřeba mít ověřeno, že máme aktivního uživatele s názvem API. Pokud ho nemáte, je potřeba jej koupit. Stojí asi 3 tis jednorázově.

v příkazové řádce v Debianích distrech (nejraději máme Ubuntu)  je potřeba čeknout, jestli máme CURL. Pokud ne, pak stahujeme v Ubuntu příkazem

sudo apt-get install curl

Posíláme něco na tvrdo z příkazové řádky:

Posloupnost tvorby příkazů je následující:

  1. Napíšeme na začátku, že budeme používat  curl
  2. Zdáme login a heslo za příkaz
  3. Dle manuálové stránky curl zadáme dle našich potřeb:
    • -k (neotravuj s certifikáty)
    • -L (neřeš jestli je to http nebo https)
    • -f (pri erroru na mě nekřič z příkazové řádky blbosti)
  4. v závorkách uvedeme URL a případně to doplníme o filtry nebo další proměnné
  5. na závěr si zadáme, v jakém výstupním formáto to budeme chtít příkazem -o Neco.pdf

Ukázka dle pokynů z dokumentace:

 curl -u winstrom:winstrom -k -L -f "https://demo.flexibee.eu:5434/c/demo/faktura-vydana/(stavUhrK!='stavUhr.uhrazeno').pdf" -o neuhrazene-faktury.pdf

Ve výše uvedeném příkazu máme nejvíc simple ukázku, jak si stáhneme všechny neuhazené faktury.

Pozor na následující chyby pří psaní filtrů:
1. (stavUhrK!=’stavUhr.uhrazeno’) NENÍ TO STEJNÉ jako (stavUhrK! =’stavUhr.uhrazeno’)
2. (stavUhrK!=’stavUhr.uhrazeno’) NENÍ TO STEJNÉ jako (stavUhrK!=stavUhr.uhrazeno)

Výpis faktur můžeme ještě trochu víc vytunit. Stáhnutí všech faktur uděláme takto:

curl -u winstrom:winstrom -k -L -f "https://demo.flexibee.eu:5434/c/demo/faktura-vydana.pdf" -o vsechny-faktury.pdf

Všimněte si toho malého rozdílu v koncovce:

/faktura-vydana/(filtry).pdf
/faktura-vydana.pdf

Obě vypadá skoro jako totéž, ale není to totéž.  Bacha na to. Každé nám vypisuje něco jiného. Tím prvním filtrujeme záznamy, ten druhý je jako rakovina. Bere vše 😉

Co když budeme chtít, aby se nám stáhlo posledních 5  faktur? Tak za příkaz zadáme limit:

curl -u winstrom:winstrom -k -L -f "https://demo.flexibee.eu:5434/c/demo/faktura-vydana.pdf?limit=5" -o vsechny-faktury-posl-pet.pdf

Agendy, se kterými si s REST API můžeme hrát najdeme na http://demo.flexibee.eu/c/demo/evidence-list

Pak rozpis pro jednotlivé agendy najdeme na /properties, třeba pro banku: https://demo.flexibee.eu/c/demo/banka/properties

Zde vidíme, s čím si můžeme hrát a jaké proměnné jsou akceptovány. Pojďme na něco zábavnějšího.

Třeba budeme chtít vypsat vydané faktury, které jsou ve stavu jiném než uhrazeno s datem splatnosti menším než je  dnešní datum, a ve výpisu chci, aby tam byly jen hodnoty VS a cena. A max 100 posledních záznamů.

Magický příkaz:

curl "https://demo.flexibee.eu:5434/c/demo/faktura-vydana/(stavUhrK%20!=%20'stavUhr.uhrazeno'%20and%20datSplat%20%3C%20now()).xml?detail=custom:sumCelkem,varSym&limit=100" -u winstrom:winstrom -o vydane-faktury.xml

Rozbor filtrace:

  • (stavUhrK%20!=%20’stavUhr.uhrazeno’) nám říká, že filtrujeme všechny doklady, které jsou v jiném stavu než v uhrazeném
  • %20and%20 – je logický operátor. Tedy musí platit obě podmínky, aby příkaz pokračoval a něco vyplivl
  • datSplat%20%3C%20now() – nám říká, že chci vidět všechny doklady co maj menší datum než je dnes. (Tedy nezajímají mě faktury po splatnosti s datum splatnosti v budoucnu)
  • ?detail=custom:sumCelkem,varSym&limit=100 – Tímto dávám najevo, že chci ve výpisu jen celkovou cenu a VS. Víc mě nazajímá… Jo a záznamů ať není víc jak 100.

Tak super. Zvládli jste to nejsnažší. Mně to zabralo cca 2 dny trtkání se a dotazování se podpory na to, co jim v dokumentaci chybělo na vysvětlenou. Snad Vám to urychlí práci a podpoře Flexibee ušetří čas.

Pokud chcete trochu FlexibeeLifeHacky na pokračování, koukněte se na materiály co publikuje Kája XIII (aka z Norska) anebo Víťa Dvořák