Táto funkcia slúži na vydanie objednávky do výroby. Z prijatej objednávky vytvoríme vydanú objednávku a z tej vytvoríme objednávku do výroby. Pre používanie tejto možnosti je potrebné mať správne nastavený kusovník a mapovanie skladu pre položky materiálu.
Táto funkcia je využiteľná iba pre evidenciu vydaných objednávok. Všeobecnú dokumentáciu k funkcii nájdete v dokumentácii aplikácie.
Zostavenie URL a URL parametre
Cez REST API možno z existujúcej vydanej objednávky vytvoriť objednávku pre výrobu pomocou virtuálnej evidencie objednani a jej subevidencií:
pro-vyrobu-zbozivráti materiály potrebné pre výrobu tovaru v daných objednávkach
je dostupná na adrese
/c/{ID firmy}/objednani/pro-vyrobu-zbozivolá sa metódou GET a vyžaduje filter v URL, ktorý identifikuje objekty z evidencie objednavka-vydana
vracia tovar s nasledujúcimi vlastnosťami:
cenik- tovar, ktorý sa bude objednávaťsklad- sklad, do ktorého tovar patríjizObjednano- už objednané množstvojizRezervovano- kryté rezervácieobjednano- množstvo na objednanieobjednat- objednávané množstvo (túto hodnotu možno pred odoslaním upraviť)skladem- množstvo na skladesklMinimum- minimálne množstvo na sklade
pro-vyrobuvytvorí objednávku tovaru od zadaných dodávateľov
je dostupná na adrese
/c/{ID firmy}/objednani/pro-vyrobuvolá sa metódami POST alebo PUT a vyžaduje zadať:
typDokl- id alebo kód objektu z evidencie typ-objednavky-vydanedodavatel- id alebo kód objektu z evidencie adresarzboziProVyrobu- zoznam tovaru získaného z evidencieobjednani/pro-vyrobu-zbozivyžaduje filter v URL, ktorý identifikuje objekty z evidencie objednavka-vydana
Vytvorenie objednávky pre výrobu s použitím balení
Namiesto elementu objednat je možné použiť element objednatBaleni, v ktorom možno špecifikovať množstvo v baleniach. Je možné použiť jedno alebo viac druhov balení, ktoré sú definované v cenníku identifikovanom elementom cenik. Každé balenie musí obsahovať:
id- identifikácia balenia (hodnoty 1 až 5)mnozMj- objednávané množstvo v baleniach (desatinné číslo)
Spôsob volania
Možno využiť HTTP metódu: GET alebo POST/PUT, podporované výstupné formáty sú XML alebo JSON.
Endpoint pre volanie služby obsahuje názov virtuálnej evidencie objednani a názov jej subevidencie pro-vyrobu-zbozi alebo pro-vyrobu:
Získanie tovaru
https://localhost:5434/c/{ID firmy}/objednani/(fitrace objednávek)/pro-vyrobu-zbozi.xml (.json).
Vytvorenie objednávky
https://localhost:5434/c/{ID firmy}/objednani/(fitrace objednávek)/pro-vyrobu.xml (.json).
Príklady použitia
Ako sme uviedli, volanie sa skladá z dvoch krokov. V prvom kroku získame materiál pre výrobu tovaru na vybranej objednávke. V ďalšom kroku tento zoznam zašleme na vytvorenie objednávky do výroby s uvedeným zoznamom materiálov.
1. získanie zoznamu materiálov v XML, na vydanej objednávke s ID = 123 máme pripravený na výrobu tovar KOLO, ktorý má špecifikovaný kusovník:
GET https://localhost:5434/c/firma_s_r_o_/objednani/(id=123)/pro-vyrobu-zbozi.xml
Odpoveď API je zoznam materiálov podľa kusovníka vrátane vyššie špecifikovaných polí:
<?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>
2. obdobné volanie možno realizovať pomocou JSON:
GET https://localhost:5434/c/firma_s_r_o_/objednani/(id=123)/pro-vyrobu-zbozi.json
Odpoveď API je zoznam materiálov podľa kusovníka vrátane vyššie špecifikovaných polí vo formáte 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"
}
]
}
}
3. získaný zoznam materiálov s prípadnou úpravou poľa objednat odovzdáme ako telo požiadavky na vytvorenie objednávky do výroby:
POST https://localhost:5434/c/firma_s_r_o_/objednani/(id=123)/pro-vyrobu.xml
Telo požiadavky:
<?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>
<zbozi>
<cenik>code:RÁFEK</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>122.0</skladem>
</zbozi>
</zboziProVyrobu>
</objednaniProVyrobu>
</winstrom>
V prípade úspešného vytvorenia s návratovým kódom 201 Created a identifikátormi vytvorených vydaných objednávok:
<?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>
4. objednanie materiálov je možné aj pre viacerých dodávateľov a taktiež je podporovaný formát JSON:
POST https://localhost:5434/c/firma_s_r_o_/objednani/(id=123)/pro-vyrobu.json
Telo požiadavky:
{
"winstrom": {
"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"
}
}
}
],
"_version": "1.0"
}
}
5. objednanie balení v JSON. Ak máme napríklad balenie s id 1 po dvoch kusoch a balenie s id 2 po štyroch kusoch, môžeme nasledujúcim dotazom objednať 10 kusov tovaru.
POST https://localhost:5434/c/firma_s_r_o_/objednani/(id=123)/pro-vyrobu.json
Telo požiadavky:
{
"winstrom": {
"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"
}
}
},
"@version": "1.0"
}
}
Neúspešné requesty
1. Nesprávne použitie HTTP metód, napríklad zaslanie metódy GET na subevidenciu pro-vyrobu:
Odpoveď API je 405 Method not Allowed "success": "false"
2. Ak je vydaná objednávka už objednaná do výroby alebo objednávka neobsahuje položku tovaru, ktorá má kusovník, API o tejto skutočnosti informuje správou:
"message": "Nebyly nalezeny žádné položky vhodné pro objednání."
3. Chybné zaslanie položky materiálu do výroby, ktorá nemá správne nastavený kusovník alebo mapovanie skladu.
"message": "Pro položku ceníku 'HRUŠKA' není nastaveno mapování skladů."
4. syntaktická chyba v zápise tela požiadavky na výrobu. Napríklad preklep v elemente dodavatel apod.:
"message": "unexpected element (uri:\"\", local:\"doddavatel\"). Expected elements are <{}zboziProVyrobu>,<{}dodavatel>,<{}typDokl>"
Potrebujete poradiť?
V prípade otázok k aplikácii nás kontaktujte na podporaflexi@abra.eu prípadne prostredníctvom okna chatu v pravom dolnom rohu.
