Teoretický úvod
Při každé snaze o využití FlexiBee API bychom měli vědět, co se snažíme vytvořit.
Ve FlexiBee je převodka tvořena dvěma navzájem provázanými doklady. Prvním dokladem, který vytváříme, je výdejka na sklad, ze kterého budeme zboží vydávat. Druhým dokladem je příjemka, která se generuje pomocí akce vytvořit převodku.
Převodka přes API
Pokud chceme převodku vytvořit přes REST API, budeme postupovat stejně. Nejprve musíme vytvořit výdejku. Tato výdejka ale bude obsahovat několik nastavení navíc oproti běžné výdejce.
Pokud budeme tvořit převodku ručně, zeptá se nás aplikace na který sklad chceme zboží převést. REST API se nás ale na nic nezeptá, takže musíme sklad určit rovnou na výdejce. K tomu slouží pole skladCil. Do něho zadáme sklad, na který chceme zboží převést.
Také musíme vyplnit pole typPohybuSkladK. Do něho vyplníme hodnotu typPohybuSklad.vydejPrevod.
Pokud máme výdejku vytvořenou, spustíme akci dokoncit-prevodku. Tím se vygeneruje a správně naváže příjemka.
Oba dva kroky, jak vytvoření výdejky, tak spuštění akce, mohou být součástí jednoho requestu. Je to výhodné pokud chceme dosáhnout co největší rychlosti. Ale je samozřejmě možné akce rozdělit.
Ukázka XML
<winstrom>
<skladovy-pohyb>
<!-- vytvoření výdejky pro převod -->
<id>ext:PREVODKA:1</id> <!-- doporučuji použít externí identifikátor -->
<typDokl>code:PŘEVODKA</typDokl>
<sklad>code:SKLAD-1</sklad> <!-- sklad, ze kterého vydáváme -->
<typPohybuK>typPohybu.vydej</typPohybuK>
<typPohybuSkladK>typPohybuSklad.vydejPrevod</typPohybuSkladK>
<skladCil>code:SKLAD-2</skladCil> <!-- sklad na který příjmáme -->
<skladovePolozky>
<skladovy-pohyb-polozka>
<cenik>code:A</cenik>
<mnozMj>3</mnozMj>
</skladovy-pohyb-polozka>
<skladovy-pohyb-polozka>
<cenik>code:B</cenik>
<mnozMj>3</mnozMj>
</skladovy-pohyb-polozka>
</skladovePolozky>
</skladovy-pohyb>
<skladovy-pohyb action="dokoncit-prevodku">
<!-- spuštění akce dokoncit-prevodku, vytvoří příjemku -->
<id>ext:PREVODKA:1</id>
</skladovy-pohyb>
</winstrom>
Ukázka JSON
{
"winstrom": {
"skladovy-pohyb": [
{
"id": "ext:PREVODKA:1",
"typDokl": "code:PŘEVODKA",
"sklad": "code:SKLAD-1",
"typPohybuK": "typPohybu.vydej",
"typPohybuSkladK": "typPohybuSklad.vydejPrevod",
"skladCil": "code:SKLAD-2",
"skladovePolozky": {
"skladovy-pohyb-polozka": [
{
"cenik": "code:A",
"mnozMj": "3"
},
{
"cenik": "code:B",
"mnozMj": "3"
}
]
}
},
{
"@action": "dokoncit-prevodku",
"id": "ext:PREVODKA:1"
}
]
}
}
Popis ukázkových příkladů
Máme dva sklady se zkratkami SKLAD-1 a SKLAD-2. Na skladě SKLAD-1 máme zboží A a zboží B.
Na SKLAD-2 chceme převést 3 kusy zboží A a 3 kusy zboží B.
První element skladovy-pohyb vytvoří výdejku pro převod, kterou se požadované zboží vyskladní ze skladu SKLAD-1.
Druhý element skladovy-pohyb spustí akci dokoncit-prevodku, která zajistí vygenerování příjemky na SKLAD-2.
Oba dva skladové pohyby obsahují stejný externí identifikátor díky kterému FlexiBee ví, že má akci dokoncit-prevodku spustit nad právě vytvořenou výdejkou.
Závěr
A je to 🙂.
Musíme si dát pozor jen na to, aby externí identifikátor byl pro každou převodku unikátní.