Jak napojit libovolný e-shop na účetnictví ABRA FlexiBee – část 1. z účetnictví do e-shopu

Pokud je prodej Vašich výrobků nebo služeb závislý na e-shopu, tak jistě dobře znáte ten kolotoč s udržováním stejných dat na dvou místech: v e-shopu a v účetním programu. Ale jestli používáte FlexiBee, máte dobře nakročeno k řešení, které Vám může velmi usnadnit práci, a tím i ušetřit náklady na provoz e-shopu.

Jak tedy napojit systém účetní a prodejní?

Každý provozovatel eshopu by si měl v první řadě rozmyslet jak moc úzkou vazbu má eshop na účetní program mít. V podstatě se dá říct, že existují dvě možnosti jak účetnictví s eshopem propojit. První možnost je synchronizační a druhá online. O tom, kterou možnost zvolit rozhoduje několik faktorů. Jedním z faktorů je zkušenost programátorů. Dalším například to, zda se prodává „jen“ přes eshop nebo i v nějaké kamenné prodejně.

1. Synchronizační propojení eshopu a účetnictví

Tato varianta spočívá v tom, že jednou za určitou dobu (většinou jednou denně) se přenesou data z eshopu do účetnictví a opačně. Do FlexiBee se většinou z eshopu přenáší nové objednávky nebo faktury a záznamy o zákaznících a nazpátek je potřeba přenést aktuální ceník a stav skladu.
Tato varianta je většinou jednodušší na vytvoření a FlexiBee ji doporučuje pokud své účetnictví provozujete v cloudu. Je totiž méně datově náročná a FlexiBee provozované v cloudu je omezováno počtem požadavků za den.

2. Online propojení eshopu a účetnictví

Při použití této varianty propojení se dá říct, že každý požadavek klienta eshopu provádí nějakou sadu dotazů do FlexiBee. Například, pokud se vytváří objednávka, tak kliknutí na tlačítko objednat načte z FlexiBee aktuální sadu forem úhrady a dopravy aby si mohl zákazník vybrat jakou zvolí.
Tato forma propojení má výhodu v tom, že zákazník vždy vidí aktuální data (stavy skladů, dostupné zboží atd.) a v eshopu je udržována jen malá množina dat. Další výhodou může být také to, že FlexiBee přes API umožňuje řešit EET a není tedy nutné hledat samostatné řešení.
Nevýhodou je vysoká datová náročnost tohoto propojení a velké množství dotazů, které jdou do FlexiBee. Tuto variantu FlexiBee nedopručuje pokud máte účetnictví ve veřejném cloudu. Dřív nebo později by se Vám někdo z FlexiBee ozval a požadoval by utlumení provozu z důvodu překračování limitů. Při nesnížení zátěže hrozí o nedostupnost účetnictví.

Graf Load Average By Date
Pokud se rozhodnete pro tuto variantu propojení je dobré mít FlexiBee server nainstalován na stejném serveru jako eshop. Minimalizují se tak časy odezvy. Také server musí být výkonný aby tuto zátěž zvládnul.

Jaká data přenášet z ABRA FlexiBee do e-shopu?

Z FlexiBee v obou případech budeme potřebovat načítat seznam zboží (ceník, strom, přílohy), individuální ceník pro konkrétní skupiny zákazníků, kontakty na zákazníky a skladové karty. Do FlexiBee potřebujeme zapisovat objednávky nebo faktury a nové zákazníky.

Export seznamu zboží

Pokud chcete z FlexiBee do eshopu načítat seznam zboží bude nás zajímat evidence cenik.
Dotaz na tuto evidenci by měl vypadat například takto:

GET /c/{firma}/cenik/(exportNaEshop=true).xml?detail=custom:nazev,kod,skupZboz,sumStavMj,cenaBezna,mj1,cenaZaklBezDph,cenaZaklVcDph,zaruka,mjZarukyK,popis,cenJednotka,eanKod,kratkyPopis,klicSlova,techParam,dodaciLhuta,mjDodaciLhuta&relations=poplatky,prilohy,prislustenstvi,atributy,podobne-zbozi&limit=0

Data z tohoto dotazu budou ve formátu XML, ale je možné použít i JSON. Dotaz vrátí jen zboží, které se má exportovat na eshop (na záznamu v ceníku je zaškrtnuto zaškrtávátko exportovat na eshop). Také je použita úroveň detailu custom. Tato úroveň umožňuje nadefinovat si, které sloupce budou součástí výstupu. Dalším parametrem, který je v dotazu použit je parametr relations, který umožní do výsledku doplnit i navázané záznamy (poplatky, přílohy, příslušenství, podobné zboží a atributy). Posledním parametrem limit=0 dáváme FlexiBee vědět, že chceme všechny záznamy které vyhovují daným pravidlům (filtrace). Tento parametr je velmi důležitý, protože standardně FlexiBee vrací jen první stránku záznamů, která obsahuje 20 položek. Hodnota 0 říká: „chci všechno“. Pokud použijete nějaké číslo (např. 99999 což se dost často stává) tak se dá předpokládat, že postupem času přijde okamžik kdy záznamů bude více než uvedená hranice.
https://demo.flexibee.eu/c/demo/cenik/(exportNaEshop=true).xml
?detail=custom:nazev,kod,skupZboz,sumStavMj,cenaBezna,mj1,cenaZaklBezDph,
cenaZaklVcDph,zaruka,mjZarukyK,popis,cenJednotka,eanKod,kratkyPopis,
klicSlova,techParam,dodaciLhuta,mjDodaciLhuta
&relations=poplatky,prilohy,prislustenstvi,atributy,podobne-zbozi&limit=0

Export příloh pro seznam zboží

V evidenci přílohy je možné ve FlexiBee uchovávat různé obrázky, manuály a podobné dokumenty. Pokud chceme tyto přílohy pro eshop načíst je nejjednodušší cestou dotaz do evidence prilohy.

GET /c/{firma}/priloha/(exportNaEshop=true and cenik is not empty).xml?detail=custom:content,cenik&limit=0

Opět se exportují jen přílohy určené k exportu na eshop a jen takové, které jsou navázány na nějaký záznam z eshopu. Opět je použit detail custom a limit=0.
https://demo.flexibee.eu/c/demo/priloha/(exportNaEshop=true and cenik is not empty).xml
?detail=custom:content,cenik&limit=0

Práce se stromem v ceníku

Z FlexiBee je také možné do eshopu přenášet stromovou strukturu rozdělení produktů. Načtení těchto údajů je nutné provádět dvojicí dotazů.
První dotaz je do evidence strom, abychom získali kompletní stromovou strukturu.

GET /c/{firma}/strom/(strom='code:STR_CEN').xml?detail=full&limit=0

https://demo.flexibee.eu/c/demo/strom/(strom=’code:STR_CEN‘).xml?detail=full&limit=0
Druhým dotazem pak musíme zjistit vazby mezi jednotlivými záznamy v ceníku a uzly stromu.

GET /c/{firma}/strom-cenik.xml?detail=full&limit=0

https://demo.flexibee.eu/c/demo/strom-cenik.xml?detail=full&limit=0
Podle výsledků této dvojice dotazů jsme schopni zrekonstruovat v eshopu kompletní strom z FlexiBee.
U záznamů z evidence strom jsou důležitý především element otec, který určuje jaký uzel je nadřazený uzlu, který právě zpracováváme. Vrchol stromu pak poznáme podle toho, že element otec je prázdný.
Evidence strom-cenik pak obsahuje vazbu mezi záznamem v ceníku a uzlem stromu. Element idZaznamu obsahuje vnitřní identifikátor FlexiBee záznamu v ceníku. Uzel je pak identifikátor uzlu stromu. Nezapomínejte na to, že pokud budete zjišťovat obsah nějakého uzlu je nutné započít i jeho poduzly :-).

Získání prodejních cen

Velmi důležitými daty pro eshop jsou prodejní ceny, za které pak budete zboží prodávat zákazníkům.
Pro jednoduché eshopy bez cenotvorby je možné použít elementy cenaZaklBezDph, cenaZaklVcDph z ceníku. Výhodou je, že není potřeba další dotaz do FlexiBee. Většině eshopů ovšem časem tato varianta přestane stačit.
V případě, že varianta z cenami z ceníku nestačí například pro to že někteří zákazníci, kteří u Vás často nakupují a mají mít tedy zboží levnější nebo chcete na omezenou dobu nějakému zboží přiřadit „akční cenu“ je nutné využít dotaz do evidence individuální ceník.
Tento dotaz zohledňuje komplexní cenotvorbu ve FlexiBee. Je tak možné získat prodejní ceny pro konkrétního zákazníka nebo pro skupinu zákazníků.
FlexiBee doporučuje si definovat omezený počet ceníkových skupin a jednotlivé zákazníky do nich zařazovat, podle toho jaké ceny mají mít. Například vytvořit si ceníkové skupiny GOLD, SILVER, BRONZE a BEZNA. Skupině GOLD pak například nastavit 20% slevu z ceníkových cen atd. Sníží se Vám tak počet dotazů do FlexiBee, kterými získáte ceny pro všechny zákazníky vašeho eshopu, na 4 (počet skupin). Pro online napojení jsou tyto dotazy dobře cachovatelné a není tedy nutné je volat stále znovu a znovu.
Pokud chcete na eshopu mít jiné ceny než v kamenných prodejnách je dobré využít střediska ve FlexiBee. Vytvořte si střediska podle toho jaké máte provozovny a také jedno s označením ESHOP. Tak budete mít možnost nastavit pro eshop jiné ceny než v kamenných prodejnách.

GET /c/{firma}/cenikova-skupina/code:GOLD/individualni-cenik.xml?date=datum výpočtu (výchozí je dnešek) &currency=požadovaná měna (např. EUR) &centre=požadované středisko (zkratka, není povinná)

https://demo.flexibee.eu/c/demo/cenikova-skupina/code:GOLD/individualni-cenik.xml
?date=2017-01-01&currency=EUR&centre=C

Nevýhody zjišťování cen pomocí evidence individuální ceník.
1. načítání je pomalé
Dotaz využívá složité SQL s UNIONY.
Dotaz nestránkujte a cachujte v eshopu, aktualizace cen provádějte v noci nebo v době kdy je eshop málo navštěvovaný.
2. sazba DPH není uvedena číselně
Místo sazby 21% bude výsledek obsahovat jen identifikátor sazby typSzbDph.dphZakl.

Zjištění stavu skladů

Pro zjištění stavu skladů se ve FlexiBee používá evidence skladova-karta. Tato evidence může být doplněna jako relation do ceníku nebo načtena samostatným dotazem.
Pokud chcete stavy skladů načíst rovnou společně s ceníkem použijte dotaz

GET /c/{firma}/cenik.xml?relations=skladKarty

https://demo.flexibee.eu/c/demo/cenik.xml?relations=skladKarty
Z kolence skladových karet je potřeba si pak odfiltrovat ty karty, které již nejsou aktuální (jsou pro jiná účetní období než je aktuální).
Druhou možností jak získat stavy skladů je samostatný dotaz do evidence skladova-karta.

GET /c/{firma}/skladova-karta.xml

https://demo.flexibee.eu/c/demo/skladova-karta.xml
Tento dotaz má tu výhodu, že můžete odfiltrovat skladové karty pro neaktuální účetní období již v dotazu a není tak nutné z FlexiBee tyto neaktuální přenášet.
Zcela jistě nepoužívejte evidenci stav-skladu-k-datu!!! Tento dotaz je složitý přibližně jako individuální ceník a jeho získání je tedy výpočetně velmi náročné (opět se jedná o složité SQL).

Další potřebné číselníky

Pro vytvoření objednávky s největší pravděpodobností budete potřebovat ještě seznamy forem dopravy a úhrady. Tyto je možné získat na adresách

GET /c/{firma}/forma-dopravy.xml?detail=full&limit=0

https://demo.flexibee.eu/c/demo/forma-dopravy.xml?detail=full&limit=0

GET /c/{firma}/forma-uhrady.xml?detail=full&limit=0

https://demo.flexibee.eu/c/demo/forma-uhrady.xml?detail=full&limit=0
Další zajímavou evidencí, jsou atributy u ceníku. Pokud vaše zboží obsahuje informace, které není možné zadat do standardních polí ve FlexiBee je možné využít atributy na ceníku. Příkladem použití může být úhlopříčka u televizorů a monitorů. Atributy je možné doplnit jako relation do načítání ceníku nebo k nim přistupovat dotazem do evidence atribut.

GET /c/{firma}/atribut.xml?detail=full&limit=0

https://demo.flexibee.eu/c/demo/atribut.xml?detail=full&limit=0

Jak přenášet objednávky z e-shopu do ABRA FlexiBee?

Čtěte druhý díl tohoto návodu – jak dostat data z e-shopu účetního programu.

Užitečné odkazy

https://www.flexibee.eu/api/navody/napojeni-internetovy-obchod/
https://www.flexibee.eu/api/dokumentace/casto-kladene-dotazy-pro-api/
https://www.flexibee.eu/api/dokumentace/ref/index/
https://www.flexibee.eu/api/dokumentace/ref/individualni-cenik/
https://www.flexibee.eu/api/dokumentace/ref/realizace-objednavky/
https://www.flexibee.eu/api/dokumentace/ref/uzivatelske-dotazy/