Pokročilé funkce FlexiBee REST API Ladislav Thon
[email protected]
Obsah ● Dotazování ○ ○ ○ ○ ○ ○ ○ ○
Navázané objekty a kolekce Úrovně detailu XPath Stránkování, řazení Filtrování (WQL) Hromadné čtení Našeptávání Uložené dotazy
Obsah ● ● ● ● ● ● ● ● ● ●
Zkušební uložení (dry run) Smazání a storno Hromadné úpravy Řízení transakcí Původ importu Sledování změn Import dokladů Odesílání dokladů e-mailem Přílohy Sumace
Dotazování
Navázané objekty a kolekce ● ?relations= ○ ○ ○ ○ ○
polozky vazby prilohy sklad-karty *
● ?includes= ○ /winstrom/faktura-vydana/firma ○ /faktura-vydana/firma
Úrovně detailu ● ?detail=id ● ?detail=summary ○ výchozí pro seznam záznamů
● ?detail=full ○ výchozí pro detail záznamu
● ?detail=custom:kod,nazev ● ?detail=custom:kod,polozky(nazev,cena) ○ ID vždy
● ?detail=custom:...&includes=...
XPath ● ?xpath=... ● http://www.kosek.cz/xml/xslt/xpath.html
Stránkování, řazení ● ?limit=100 ● ?limit=0 ● ?start=100&limit=100 (Ext JS) ○ ?p=2&s=100 (jQuery FlexBox)
● ?add-row-count=true ● ?order=nazev ○ ○ ○ ○
?order=nazev@A ?order=nazev@D ?order=kod&order=nazev ?sort=nazev&dir=ASC|DESC (Ext JS)
Filtrování (WQL) ● /c/firma/adresar/(nazev like 'Firma') ● vlastnost operátor hodnota ● and, or, not, ( ) ● operátory: ○ ○ ○ ○ ○
=, <>, <, <=, >, >=, in, between [and] [not] like, begins [with], ends [with] in subtree [nonrecursive] (jen pro ceník) is true, is false is [not] null, is [not] empty
Filtrování (WQL) ● vlastnosti: ○ nazev ○ firma.nazev (bez negativních operátorů)
● hodnoty: ○ ○ ○ ○ ○ ○ ○
-1, 10, 5.8, -10.0 "abc", 'def' true, false 2011-11-01 2011-11-01T12:30:00 now(), me() ID: 1, "code:FIRMA", 'ext:SYS:123'
Filtrování (WQL) ● štítky ○ stitky = 'code:VIP' ○ stitky = 'code:VIP' or stitky = 'code:DULEZITE'
● strom ceníku ○ ○ ○ ○
.../cenik/(in subtree 3) .../cenik/(id in subtree 3) .../cenik/(in subtree 7 nonrecursive) .../skladova-karta/(cenik in subtree 3)
Hromadné čtení PUT|POST /c/firma/faktura-vydana/get.xml Content-Type: application/xml <winstrom>
1 code:2 ext:SYS:3
Našeptávání ● .../adresar.json?q=firma&mode=suggest { "results": [ { "id": 399, "name": "FIRMA: Firma" } ], "total": 1, "query": "firma" }
● pro webové aplikace (jQuery FlexBox, Ext JS)
Uložené dotazy ● SQL ● /c/firma/uzivatelsky-dotaz ● /c/firma/uzivatelsky-dotaz/call.xml (.json) ○ ?date=2012-01-01 ○ ?firma=code:FIRMA1&firma=code:FIRMA2
Úpravy a další
Zkušební uložení (dry run) ● ?dry-run=true <winstrom version="1.0"> <success>true <stats>...
...
Zkušební uložení (dry run) ● ?dry-run=true <winstrom version="1.0"> <success>false <stats>...
<errors>...
Smazání a storno ● Smazání záznamu
...
● Storno dokladu
...
Hromadné úpravy ● WQL <winstrom>
...
● žádné
Řízení transakcí ● obvykle jedno XML = jedna transakce <winstrom atomic="false"> ... ... <polozkyFaktury>...
● jeden top-level element = jedna transakce
Původ importu <winstrom source="Migrace 2012"> ... ... <polozkyFaktury>...
Sledování změn ● /c/firma/changes ● /c/firma/changes/enable|disable
Sledování změn <winstrom globalVersion="42"> 1 1 code:VF1-0001/2012 ext:SYS:13 3 (none)
Sledování změn ● ?since=123 ● ?count=500 ● ?evidence=faktura-vydana ○ ?evidence=faktura-vydana&evidence=faktura-prijata
● ?add-global-version=true <winstrom globalVersion="42"> ...
Import dokladů ● FlexiBee umí počítat ○ nezadané částky se dopočítají z těch zadaných ○ u položkového dokladu se sčítají částky položek
● a kontrolovat ○ 1 + 1 nesmí být 3
● částka tuz, částka měn a kurz musí souhlasit ○ ○ ○ ○
měn = 2599, kurz = 0.0038 tuz = 2599 * 0.0038 = 9.8762 = 9.88 9.88 / 0.0038 = 2600 proto přepočteme kurz na 0.003801 (chtělo by to ještě víc desetinných míst, ale nemáme...)
Odesílání dokladů e-mailem ● .../faktura-vydana/1/odeslani-dokladu ○ ○ ○ ○ ○
[email protected][email protected] [email protected][email protected] ?subject=Doklad ABC tělo požadavku = text e-mailu (v naší šabloně) přílohy: PDF, příp. ISDOC
Přílohy ● ?relations=prilohy ● /c/firma/adresar/12/prilohy ● /c/firma/adresar/12/prilohy/75/content ● /c/firma/adresar/12/prilohy/75/thumbnail ● PUT /c/firma/adresar/12/prilohy/new/a.jpg ○ Content-Type: image/jpeg
● /c/firma/nastaveni/1/logo (podpis-razitko)
Sumace ● /c/firma/faktura-vydana/$sum ○ jen pro doklady
● /c/firma/faktura-vydana/(...)/$sum
Q&A