Objednávka pre výrobu vzniká z existujúcej objednávky vydanej: REST API prejde jej položky, rozloží ich podľa kusovníka na materiál a z neho vytvorí novú objednávku vydanú na vybraného dodávateľa. Aby to fungovalo, musia mať položky materiálu nastavený kusovník a mapovanie skladu.
ℹ️ Služba je dostupná iba nad evidenciou objednávok vydaných. Správanie funkcie v aplikácii popisuje článok Objednávka vydaná.
Zostavenie URL
Objednávanie pre výrobu je v REST API implementované ako virtuálna evidencia objednani s dvomi subevidenciami. Volanie prebieha v dvoch krokoch — najprv si vyžiadate zoznam materiálu, potom ho odošlete späť na tvorbu objednávky.
Adresa | Metódy | Čo robí |
|
| Vráti materiál potrebný pre výrobu tovaru na vyfiltrovaných objednávkach. |
|
| Vytvorí objednávku materiálu od zadaných dodávateľov. |
Podporované výstupné formáty sú XML a JSON, volia sa príponou v URL. Prehľad HTTP metód nájdete vo vývojárskej dokumentácii.
⚠️ Obe subevidencie vyžadujú filter v URL, ktorý identifikuje objekty z evidencie objednavka-vydana — zapisuje sa v okrúhlych zátvorkách medzi názov virtuálnej evidencie a názov subevidencie. Bez filtra vracia API 404 s kódom adresaNeplatnaUrl.
Získanie zoznamu materiálu
Dotaz metódou GET vráti materiál rozložený podľa kusovníka. Pri každej položke zbozi dostanete tieto vlastnosti:
Vlastnosť | Význam |
| Tovar, ktorý sa bude objednávať. |
| Sklad, do ktorého tovar patrí. |
| Už objednané množstvo. |
| Vykryté rezervácie. |
| Množstvo na objednanie. |
| Objednávané množstvo — túto hodnotu je možné pred odoslaním upraviť. |
| Množstvo na sklade. |
| Minimálne množstvo na sklade. |
Na objednávke vydanej s ID 123 máme pripravený na výrobu tovar, ktorý má špecifikovaný kusovník:
GET https://demo.flexibee.eu/c/demo/objednani/(id=123)/pro-vyrobu-zbozi.xml
Odpoveďou je zoznam materiálu:
<?xml version="1.0" ?>
<winstrom>
<zbozi>
<cenik>code:DRÁT</cenik>
<jizObjednano>680.9</jizObjednano>
<jizRezervovano>0.0</jizRezervovano>
<objednano>32.0</objednano>
<objednat>0.0</objednat>
<sklMinimum>0.0</sklMinimum>
<sklad>code:LIBEREC</sklad>
<skladem>49.7</skladem>
</zbozi>
<zbozi>
<cenik>code:STŘED</cenik>
<jizObjednano>0.0</jizObjednano>
<jizRezervovano>0.0</jizRezervovano>
<objednano>1.0</objednano>
<objednat>0.0</objednat>
<sklMinimum>0.0</sklMinimum>
<sklad>code:LIBEREC</sklad>
<skladem>112.0</skladem>
</zbozi>
<zbozi>
<cenik>code:RÁFEK</cenik>
<jizObjednano>0.0</jizObjednano>
<jizRezervovano>0.0</jizRezervovano>
<objednano>1.0</objednano>
<objednat>0.0</objednat>
<sklMinimum>0.0</sklMinimum>
<sklad>code:LIBEREC</sklad>
<skladem>122.0</skladem>
</zbozi>
</winstrom>
Rovnaký dotaz je možné poslať aj v JSON:
GET https://demo.flexibee.eu/c/demo/objednani/(id=123)/pro-vyrobu-zbozi.json
{
"winstrom": {
"zbozi": [
{
"cenik": "code:DRÁT",
"jizObjednano": "685.9",
"jizRezervovano": "0.0",
"objednano": "32.0",
"objednat": "0.0",
"sklMinimum": "0.0",
"sklad": "code:LIBEREC",
"skladem": "49.7"
},
{
"cenik": "code:STŘED",
"jizObjednano": "10.0",
"jizRezervovano": "0.0",
"objednano": "1.0",
"objednat": "0.0",
"sklMinimum": "0.0",
"sklad": "code:LIBEREC",
"skladem": "112.0"
},
{
"cenik": "code:RÁFEK",
"jizObjednano": "10.0",
"jizRezervovano": "0.0",
"objednano": "1.0",
"objednat": "0.0",
"sklMinimum": "0.0",
"sklad": "code:LIBEREC",
"skladem": "122.0"
}
]
}
}
Vytvorenie objednávky pre výrobu
Získaný zoznam materiálu — s prípadne upravenou hodnotou objednat — odošlete späť ako telo požiadavky. Každý element objednaniProVyrobu vytvorí jednu objednávku vydanú a vyžaduje:
Element | Hodnota |
| ID alebo kód objektu z evidencie typ-objednavky-vydane |
| ID alebo kód objektu z evidencie adresar |
| Zoznam elementov |
POST https://demo.flexibee.eu/c/demo/objednani/(id=123)/pro-vyrobu.xml
<?xml version="1.0" ?>
<winstrom>
<objednaniProVyrobu>
<typDokl>code:VYROBA</typDokl>
<dodavatel>code:SIGNA</dodavatel>
<zboziProVyrobu>
<zbozi>
<cenik>code:DRÁT</cenik>
<jizObjednano>680.9</jizObjednano>
<jizRezervovano>0.0</jizRezervovano>
<objednano>32.0</objednano>
<objednat>5.0</objednat>
<sklMinimum>0.0</sklMinimum>
<sklad>code:LIBEREC</sklad>
<skladem>49.7</skladem>
</zbozi>
<zbozi>
<cenik>code:STŘED</cenik>
<jizObjednano>0.0</jizObjednano>
<jizRezervovano>0.0</jizRezervovano>
<objednano>1.0</objednano>
<objednat>10.0</objednat>
<sklMinimum>0.0</sklMinimum>
<sklad>code:LIBEREC</sklad>
<skladem>112.0</skladem>
</zbozi>
</zboziProVyrobu>
</objednaniProVyrobu>
</winstrom>
Pri úspechu vracia API 201 Created s identifikátormi vytvorených objednávok vydaných:
<?xml version="1.0" encoding="utf-8"?>
<winstrom version="1.0">
<success>true</success>
<stats>
<created>1</created>
<updated>0</updated>
<deleted>0</deleted>
<skipped>0</skipped>
<failed>0</failed>
</stats>
<results>
<result>
<id>363</id>
</result>
</results>
</winstrom>
⚠️ Skontrolujte v odpovedi hodnotu created. Položku, pri ktorej nie je možné určiť sklad — napríklad preto, že ste v zbozi vynechali element sklad — služba preskočí, napriek tomu ale vráti 201 Created s created rovným nule a prázdnym elementom results.
Objednanie od viacerých dodávateľov
Element objednaniProVyrobu je možné v jednej požiadavke uviesť viackrát — pre každého dodávateľa vznikne samostatná objednávka:
POST https://demo.flexibee.eu/c/demo/objednani/(id=123)/pro-vyrobu.json
{
"winstrom": {
"@version": "1.0",
"objednaniProVyrobu": [
{
"typDokl": "code:OBV",
"dodavatel": "code:DODAVATEL-A",
"zboziProVyrobu": {
"zbozi": {
"cenik": "5",
"sklad": "4",
"jizObjednano": "0.0",
"jizRezervovano": "0.0",
"objednano": "10.0",
"objednat": "10.0",
"sklMinimum": "0.0",
"skladem": "0.0"
}
}
},
{
"typDokl": "code:OBV",
"dodavatel": "code:DODAVATEL-B",
"zboziProVyrobu": {
"zbozi": {
"cenik": "6",
"sklad": "4",
"jizObjednano": "0.0",
"jizRezervovano": "0.0",
"objednano": "20.0",
"objednat": "20.0",
"sklMinimum": "0.0",
"skladem": "0.0"
}
}
}
]
}
}
Objednanie v baleniach
Namiesto elementu objednat je možné použiť element objednatBaleni a zadať množstvo v baleniach. Balenia sú definované v cenníku pri tovare identifikovanom elementom cenik a v jednej požiadavke je možné skombinovať viac ich druhov. Každé balenie obsahuje:
id— identifikácia balenia v cenníku (hodnoty 1 až 5)mnozMj— objednávané množstvo v baleniach (desatinné číslo)
Ak máme balenie s id 1 po dvoch kusoch a balenie s id 2 po štyroch kusoch, nasledujúci dotaz objedná 10 kusov tovaru:
POST https://demo.flexibee.eu/c/demo/objednani/(id=123)/pro-vyrobu.json
{
"winstrom": {
"@version": "1.0",
"objednaniProVyrobu": {
"typDokl": "code:OBV",
"dodavatel": "code:DODAVATEL-A",
"zboziProVyrobu": {
"zbozi": {
"cenik": "5",
"sklad": "4",
"jizObjednano": "0.0",
"jizRezervovano": "0.0",
"objednano": "10.0",
"objednatBaleni": {
"baleni": [
{
"id": "1",
"mnozMj": "1.0"
},
{
"id": "2",
"mnozMj": "2.0"
}
]
},
"sklMinimum": "0.0",
"skladem": "0.0"
}
}
}
}
}
Na položke vytvorenej objednávky sa uloží počet balení do mnozBaleni a prepočítané množstvo v merných jednotkách do mnozMj.
Neúspešné požiadavky
Situácia | Odpoveď |
Metóda |
|
V URL chýba filter objednávok |
|
Objednávka je už objednaná do výroby, alebo neobsahuje položku tovaru s kusovníkom |
|
Materiál z kusovníka nemá nastavené mapovanie skladu |
|
V tele požiadavky chýba |
|
Preklep v názve elementu, napríklad |
|
Chybová správa vzniká už pri čítaní zoznamu materiálu, nie až pri vytváraní objednávky — kódy obchodGenerNicProHromObj a mapSkladChybi preto uvidíte aj pri dotaze GET na pro-vyrobu-zbozi.
🚨 Subevidencia pro-vyrobu nerešpektuje parameter testovacieho uloženia ?dry-run=true — objednávka vydaná sa vytvorí aj s ním. Volanie si preto neskúšajte „na skúšku" v produkčnej firme.
