Strom ceníka je hierarchia kategórií, do ktorých sa zaraďujú položky ceníka. Cez REST API ho možno spravovať čítaním aj importom, tento návod ukazuje postup na jednoduchom príklade.
⚠️ Import do stromu ceníka je v stave NOT_DOCUMENTED — podporujeme ho, ale nie je súčasťou oficiálnej dokumentácie a neodporúčame sa naň spoliehať. Nie je plne implementovaný; uzol stromu je napríklad možné identifikovať iba číselným ID, nie kódom.
Evidencia stromu
Strom je popísaný tromi evidenciami:
Evidencia | Čo obsahuje |
Jednotlivé uzly (vetvy) stromu tak, ako ich vidíte v aplikácii po zapnutí stromu — vrátane hladiny, poradia, nadradeného uzla a cesty. | |
Koreň stromu; štandardne jediný záznam | |
Priradenie položiek ceníka do jednotlivých uzlov stromu. |
Na obrázku je vidieť cestu do kategórie Solné mydlá a jej hladinu:
V API je ten istý strom zobrazený takto:
Element otec je predchádzajúci uzol (MYDLA), cesta a hladina zodpovedajú poradiu, ako ho vidíte v aplikácii — počíta sa do nich aj úvodný uzol Strom ceníka. Obe tieto vlastnosti sú iba na čítanie, Flexi ich počíta sama.
Tvorba stromu
Uzol sa zakladá s názvom (nazev), poradím (poradi) a stromom, do ktorého patrí (strom). Poradím určíte, na akej pozícii sa uzol vo svojej kategórii zobrazí; strom je koreň stromu a otec predchádzajúci uzol. Cesta a hladina sa dopočítajú.
POST https://demo.flexibee.eu/c/demo/strom.xml
<winstrom version="1.0">
<strom>
<kod>TELKREM</kod>
<nazev>Tělové krémy</nazev>
<poradi>1</poradi>
<strom>code:STR_CEN</strom>
<otec>code:KREMY</otec>
</strom>
</winstrom>
ℹ️ V elementoch strom a otec možno uzol adresovať kódom (code:…) aj číselným ID. Uzly bez skratky — napríklad systémové Pripojené položky a Nepripojené položky — možno adresovať iba ID.
Priradenie položky ceníka do stromu
Priradenie sa importuje do evidencie strom-cenik. Položku ceníka (idZaznamu) môžete zadať ID aj kódom, uzol (uzel) však len číselným ID, ktoré zistíte dotazom na /strom.xml.
POST https://demo.flexibee.eu/c/demo/strom-cenik.xml
<winstrom version="1.0">
<strom-cenik>
<!-- idZaznamu = ID nebo kód ceníkové položky,
kterou chcete do stromu přiřadit -->
<idZaznamu>code:TELKREM ABC 500</idZaznamu>
<!-- uzel = ID daného uzlu ve stromu,
které zjistíte dotazem na /strom.xml -->
<uzel>4</uzel>
</strom-cenik>
</winstrom>
Po importe sa v uzle s ID 4 zobrazí priradená položka TELKREM ABC 500.
⚠️ Pozor na asymetriu čítania a zápisu: pri čítaní vracia API uzel ako kód (napríklad code:A-I), ale poslať takúto hodnotu späť nemožno — import ju odmietne s 400 a kódom neniKodNeboNemuzeBytID (Entita 'Uzol' neobsahuje kód alebo ho nemožno použiť ako ID). Použite hodnotu z uzel@ref, kde je číselné ID.
Neexistujúcu položku ceníka odmietne API s 400 a kódom formZaznamNenalezen.
Presun vetvy stromu
Na presun vetvy stačí pri existujúcom uzle zmeniť element otec na novú nadradenú kategóriu a poradi na požadovanú pozíciu — napríklad 99, aby sa zaradila na koniec.
<winstrom version="1.0">
<strom>
<id>code:PANSKEKREMY</id>
<poradi>99</poradi>
<otec>code:TELKREMY</otec>
</strom>
</winstrom>
Dôjde k presunu celej kategórie PANSKEKREMY vrátane podkategórií a priradených položiek do kategórie TELKREMY — nie k jej skopírovaniu. Hladina aj cesta sa prepočítajú samy.


