Preskoči na glavno vsebino

Kusovník - API

Ako v REST API pracovať s kusovníkom?

Avtor: Petr Pech

Pomocou kusovníka je možné vo Flexi nastaviť obsah a štruktúru materiálu, z ktorého sa výrobok či polotovar skladá. Konkrétne princípy a možnosti nastavenia popisuje dokumentácia k nastaveniu v aplikácii ABRA Flexi.

V tejto dokumentácii sa však zameriame na to, ako s kusovníkom pracovať v REST API.

⚠️ Kusovník je dostupný od variantu licencie Premium. V nižších variantoch endpoint /kusovnik nevyužijete.

Založenie kusovníka (POST / PUT)

Kusovník môžeme založiť metódou POST alebo PUT na URL endpoint /kusovnik. Dostupné polia endpointu (resp. evidencie) nájdete v tzv. evidence-liste.

Jeden záznam kusovníka je vždy hlavička kusovníka (výrobok / polotovar) alebo jeden materiál (inak tiež riadok, uzol), ktorý pre hlavičku kusovníka vytvárate.

Na príklade si však ukážeme, ako založiť kusovník pre jednu položku iba s poľami nevyhnutnými pre založenie. Rad polí dostupných v evidencii je totiž nepovinný.

Polia vyplnené nižšie v requeste pre založenie sú povinné.

Príklad

Chceme založiť kusovník pre výrobu predného kolesa, zároveň však aj hlavičku a materiál v ňom obsiahnutý. Všetko teda zahrnieme do jedného requestu.

XML

POST / PUT na https://demo.flexibee.eu/c/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> <!-- Jedná se o hlavičku kusovníku, shodný s otecCenik-->
<otec></otec> <!-- Prázdný, jedná se 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>

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

Získanie kusovníka (GET)

Metódou GET môžeme exportovať všetky vytvorené kusovníky, hlavičky aj jednotlivý materiál v kusovníku obsiahnutý.

Príklad

Chceme získať vyššie založený kusovník, teda kompletný kusovník pre cenníkovú položku s kódom "PŘEDNÍ_KOLO".

Ľubovoľne je možné použiť filtráciu (v URL / query), úroveň detailu alebo iný z podporovaných formátov.

XML

GET na /kusovnik/(otecCenik='code:PŘEDNÍ_KOLO').xml?detail=full

Príklad kompletnej URL adresy:

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

JSON

GET na /kusovnik/(otecCenik='code:PŘEDNÍ_KOLO').json?detail=full

Príklad kompletnej URL adresy:

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

Prepočet cien kusovníka

Hodnotu výrobku (položky, kde je nastavený kusovník) je možné prepočítavať z cien materiálu, popr. služieb (všeobecne položiek, ktoré sú v kusovníku nastavené).

Celý postup je popísaný v našej dokumentácii.

FAQ

Je možné automaticky aktualizovať ceny kusovníka?

Áno, v súčasnosti však iba prostredníctvom API - pravidelným zasielaním POST / PUT na URL adresu uvedenú v dokumentácii pre prepočet cien.

Môžem hromadne založiť viacero kusovníkov naraz?

Áno, všetko vložte do jedného requestu. Štruktúra musí byť rovnaká ako pri príklade pre založenie.

Ako kusovník odstrániť?

Použitím action="delete", tzv. vykonaním akcie. Podrobnosti nájdete v našej dokumentácii.

Ste s tem dobili odgovor na svoje vprašanje?