Přeskočit na hlavní obsah

Kusovník - API

Jak v REST API pracovat s kusovníkem?

Autor: Petr Pech

Kusovníkem se ve Flexi nastavuje obsah a struktura materiálu, ze kterého se výrobek či polotovar skládá. Principy a možnosti nastavení v aplikaci popisuje článek Kusovník; tady se podíváme na to, jak s ním pracovat v REST API.

⚠️ Kusovník je dostupný od varianty licence Premium. V nižších variantách endpoint /kusovnik nevyužijete.


Založení kusovníku

Kusovník se zakládá metodou POST nebo PUT na endpoint /kusovnik. Úplný seznam vlastností najdete v popisu evidence.

Jeden záznam kusovníku je vždy buď hlavička (výrobek či polotovar), nebo jeden materiál — tedy řádek, uzel — který pro hlavičku vytváříte. Strukturu si popisujete sami, Flexi ji nedopočítává:

Vlastnost

Význam

mnoz

Množství, které se do nadřazeného výrobku spotřebuje.

hladina

Úroveň v kusovníku — hlavička má 1, materiál pod ní 2 a tak dál.

poradi

Pořadí řádku v rámci jeho hladiny.

cesta

Cesta uzlu ve struktuře, například 1/2/.

otecCenik

Ceníková položka výrobku, ke kterému celý kusovník patří — stejná na hlavičce i na všech řádcích.

cenik

Ceníková položka daného řádku. U hlavičky je shodná s otecCenik.

otec

Nadřazený řádek kusovníku. U hlavičky zůstává prázdný.

Ostatní vlastnosti evidence — například nazev — jsou nepovinné.

Příklad

Chceme založit kusovník pro výrobu předního kola, a to včetně hlavičky i materiálu, který obsahuje. Vše proto zahrneme do jednoho požadavku a jednotlivé řádky mezi sebou provážeme externími identifikátory ext:, protože číselná ID zatím neznáme.

POST https://demo.flexibee.eu/c/demo/kusovnik.xml
<winstrom version="1.0">
<kusovnik>
<id>ext:KUS:1</id>
<mnoz>1.0</mnoz>
<hladina>1</hladina>
<poradi>1</poradi>
<cesta>1/</cesta>
<otecCenik>code:PŘEDNÍ_KOLO</otecCenik>
<cenik>code:PŘEDNÍ_KOLO</cenik> <!-- Hlavička kusovníku, shodná s otecCenik -->
<otec></otec> <!-- Prázdný, jde o hlavičku -->
</kusovnik>
<kusovnik>
<id>ext:KUS:2</id>
<mnoz>1.0</mnoz>
<hladina>2</hladina>
<poradi>1</poradi>
<cesta>1/1/</cesta>
<otecCenik>code:PŘEDNÍ_KOLO</otecCenik>
<cenik>code:RÁFEK</cenik>
<otec>ext:KUS:1</otec>
</kusovnik>
<kusovnik>
<id>ext:KUS:3</id>
<mnoz>32.0</mnoz>
<hladina>2</hladina>
<poradi>2</poradi>
<cesta>1/2/</cesta>
<otecCenik>code:PŘEDNÍ_KOLO</otecCenik>
<cenik>code:DRÁTY</cenik>
<otec>ext:KUS:1</otec>
</kusovnik>
<kusovnik>
<id>ext:KUS:4</id>
<mnoz>1.0</mnoz>
<hladina>2</hladina>
<poradi>3</poradi>
<cesta>1/3/</cesta>
<otecCenik>code:PŘEDNÍ_KOLO</otecCenik>
<cenik>code:STŘED</cenik>
<otec>ext:KUS:1</otec>
</kusovnik>
</winstrom>

Totéž v JSON:

{
"winstrom":{
"@version":"1.0",
"kusovnik":[
{
"id":"ext:KUS:1",
"mnoz":"1.0",
"hladina":"1",
"poradi":"1",
"cesta":"1/",
"otecCenik":"code:PŘEDNÍ_KOLO",
"cenik":"code:PŘEDNÍ_KOLO",
"otec":""
},
{
"id":"ext:KUS:2",
"mnoz":"1.0",
"hladina":"2",
"poradi":"1",
"cesta":"1/1/",
"otecCenik":"code:PŘEDNÍ_KOLO",
"cenik":"code:RÁFEK",
"otec":"ext:KUS:1"
},
{
"id":"ext:KUS:3",
"mnoz":"32.0",
"hladina":"2",
"poradi":"2",
"cesta":"1/2/",
"otecCenik":"code:PŘEDNÍ_KOLO",
"cenik":"code:DRÁTY",
"otec":"ext:KUS:1"
},
{
"id":"ext:KUS:4",
"mnoz":"1.0",
"hladina":"2",
"poradi":"3",
"cesta":"1/3/",
"otecCenik":"code:PŘEDNÍ_KOLO",
"cenik":"code:STŘED",
"otec":"ext:KUS:1"
}
]
}
}

Odpovědí je 201 Created se čtyřmi vytvořenými záznamy.


Získání kusovníku

Metodou GET vyexportujete všechny vytvořené kusovníky — hlavičky i jednotlivý materiál v nich obsažený. Použít lze filtraci v URL i přes query, úroveň detailu i libovolný z podporovaných formátů.

Příklad

Chceme získat celý kusovník ceníkové položky s kódem PŘEDNÍ_KOLO — filtrujeme tedy podle otecCenik:

GET https://demo.flexibee.eu/c/demo/kusovnik/(otecCenik='code:PŘEDNÍ_KOLO').xml?detail=full
GET https://demo.flexibee.eu/c/demo/kusovnik/(otecCenik='code:PŘEDNÍ_KOLO').json?detail=full


Odstranění kusovníku

Řádek i celou hlavičku odstraníte akcí action="delete":

<winstrom version="1.0">
<kusovnik id="123" action="delete"/>
</winstrom>


Přepočet cen kusovníku

Hodnotu výrobku, tedy položky, u níž je kusovník nastaven, lze přepočítat z cen materiálu a služeb, které kusovník obsahuje. Celý postup popisuje článek Přepočítání cen kusovníku přes REST API.


FAQ

Lze automaticky aktualizovat ceny kusovníku?

Ano, v současné době však pouze přes API — pravidelným zasíláním POST nebo PUT na adresu pro přepočet cen.

Mohu hromadně založit více kusovníků naráz?

Ano, vložte je všechny do jednoho požadavku. Struktura musí být stejná jako v příkladu výše.

Jak zjistím ID řádků, které jsem právě vytvořil?

Odpověď na import obsahuje u každého záznamu id a request-id — tedy váš ext: identifikátor. Podle něj si čísla spárujete.


Související

Dostali jste odpověď na svou otázku?