Přeskočit na hlavní obsah

Přepočítání cen kusovníku přes REST API

Jak přepočítat kusovník pomocí REST API

Autor: Petr Pech

REST API umožňuje přepočítat nákupní a prodejní cenu kusovníku pomocí akcí prepocti-nakupni-cenu a prepocti-prodejni-cenu. Slouží k úpravě ceny výrobku ve chvíli, kdy se změnily ceny materiálů, ze kterých se výrobek skládá. Jde o stejné služby, jaké v aplikaci obsluhují tato tlačítka:

Přepočet sečte ceny materiálu vynásobené jeho množstvím a výsledek zapíše nadřazené ceníkové položce — do nakupCena, respektive cenaZakl. Samotná evidence kusovnik žádné ceny nedrží.

⚠️ Akce sčítají pouze ceny z jedné úrovně kusovníku. Skládá-li se kusovník z dalších kusovníků, přepočítejte nejprve je — postupujte tedy od nejnižší hladiny nahoru.

ℹ️ Při samotné výrobě, tedy při příjmu výrobku na sklad, se cena přijatého výrobku spočítá sama podle skutečné ceny spotřebovaného materiálu — bez ohledu na cenu uvedenou v kusovníku. Více o kusovníku najdete v popisu evidence.


Přepočet konkrétního kusovníku

Akce se vyvolává importem přes atribut action; požadavek posíláte metodou POST nebo PUT:

POST https://demo.flexibee.eu/c/demo/kusovnik.xml
<winstrom version="1.0">
<kusovnik id="123" action="prepocti-nakupni-cenu"/>
</winstrom>

Totéž v JSON — název akce se zapisuje jako @action:

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

Odpovědí je standardní výsledek importu s 201 Created a identifikátorem přepočítaného kusovníku:

{
"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"
}
]
}
}


Přepočet celé hladiny

Hladina kusovníku (hladina) určuje úroveň, kterou se chystáte přepočítat. Místo ID použijte atribut filter a akce se provede nad všemi kusovníky, které filtru odpovídají:

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

A stejný dotaz v JSON:

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

Počet skutečně přepočítaných záznamů si přečtěte z updated v odpovědi — filtr na hladinu zpravidla zasáhne desítky kusovníků.


Neúspěšné požadavky

Situace

Odpověď

Zadaný kusovník neexistuje

400, idNotFoundNebyl nalezen zaznam s ID = 666: cz.winstrom.vo.cen.Kusovnik#666 [666]

Překlep v názvu akce

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

Filtr nedodržuje pravidla filtrace

400Špatný formát WQL dotazu, problém na pozici 20 poblíž textu 'x', případně konkrétnější kód, například wqlVlastnostNeniCislo

Filtrovaná hladina neobsahuje žádný kusovník

201 s updated rovným nule a prázdným results


Související

Dostali jste odpověď na svou otázku?