Preskoči na glavno vsebino

Prepočítanie cien kusovníka cez REST API

Ako prepočítať kusovník pomocou REST API

Avtor: Petr Pech

Rest API umožňuje prepočítať nákupnú a predajnú cenu kusovníka pomocou akcií prepocti-nakupni-cenu a prepocti-prodejni-cenu.

Prepočet cien kusovníka slúži na úpravu ceny výrobku v prípade, že sa zmenili ceny materiálov, z ktorých sa výrobok skladá. Ide o služby, ktoré fungujú rovnako ako tlačidlá v aplikácii.

Pri samotnej výrobe (resp. príjme výrobku na sklad) sa však cena prijatého výrobku vypočíta automaticky podľa skutočnej ceny spotrebovaného materiálu. Bude teda zodpovedať cene materiálu bez ohľadu na cenu uvedenú v kusovníku.

Pozn.: Akcie sčítavajú iba ceny z jednej úrovne kusovníka. Pokiaľ sa teda kusovník skladá z ďalších kusovníkov, je potrebné najskôr prepočítať tieto kusovníky.

Viac o kusovníku sa dozviete v dokumentácii.

Na vykonanie akcie prepocti-nakupni-cenu a prepocti-prodejni-cenu. musíme poznať konkrétne ID kusovníka alebo je možné využiť filtrovanie a prepočítať kusovníky na rovnakej úrovni.

Príklady použitia

Request zasielame metódou POST na URL:
POST https://demo.flexibee.eu/c/demo/kusovnik.xml (.json)

<winstrom version="1.0">
<kusovnik id="123" action="prepocti-nakupni-cenu" />
</winstrom>

Obdobne možno request zaslať vo formáte JSON a pomocou ID kusovníka:

{
"winstrom": {
"kusovnik": {
"id": "123",
"@action": "prepocti-nakupni-cenu"
}
}
}

Odpoveď ABRA Flexi je potom aktualizácia vybraného záznamu:

 {
"winstrom": {
"@version": "1.0",
"success": "true",
"stats": {
"created": "0",
"updated": "1",
"deleted": "0",
"skipped": "0",
"failed": "0"
},
"results": [
{
"id": "123",
"request-id": "123",
"ref": "/c/demo/kusovnik/123.json"
}
]
}
}

Filtrovanie úrovní pre prepočet

Úroveň kusovníka určuje, akú úroveň kusovníka sa chystáme prepočítať.

Pozn. Prepočítajú sa ceny všetkých kusovníkov, nielen tých, ktoré zodpovedajú filtru – teda pokiaľ nie je obmedzenie na konkrétny kusovník, dôjde k prepočtu cien u všetkých kusovníkov s danou úrovňou.

Akciu možno vyvolať dávkovo nad skupinou kusovníkov pomocou filtra:

<winstrom version="1.0">
<kusovnik filter="hladina eq 1" action="prepocti-nakupni-cenu" />
</winstrom>

Obdobne možno request zaslať vo formáte JSON a pomocou filtrovania:

{
"winstrom": {
"kusovnik": {
"@filter": "hladina eq 1",
"@action": "prepocti-nakupni-cenu"
}
}
}

Neúspešné requesty

1. zadaný/filtrovaný objekt (kusovník) neexistuje

V prípade, že sa objekt nepodarí nájsť/neexistuje, je odpoveď API:

"message": "Nebyl nalezen zaznam s id = 666: cz.winstrom.vo.cen.Kusovnik#1222 [1222]",


2. akcia je nesprávne zapísaná

V prípade, že voláte nesprávnu akciu (preklep alebo chyba v názve):

"message": "Atribut 'action' obsahuje špatnou hodnotu. Pro daný objekt smí obsahovat jen: [delete, prepocti-nakupni-cenu, prepocti-prodejni-cenu] [1]"

3. nesprávne zapísaný filter

Filter nezodpovedá definovaným pravidlám filtrovania, odpoveďou je približná pozícia chyby vo filtri:

<error>Špatný formát WQL dotazu, problém na pozici 11 poblíž textu 'now()'
org.antlr.v4.runtime.misc.ParseCancellationException
org.antlr.v4.runtime.NoViableAltException</error>

4. úroveň neexistuje

V prípade, že prepočítate neexistujúcu úroveň, vráti sa prázdny výsledok

"results": []


Ste s tem dobili odgovor na svoje vprašanje?