Tato funkce slouží pro vydání objednávky do výroby. Kdy z přijaté objednávky vytvoříme vydanou objednávku a z té vytvoříme objednávku do výroby. Pro používání této volby je třeba mít správně nastaven kusovník a mapování skladu pro položky materiálu.
Tato funkce je využitelná pouze pro evidenci objednávek vydaných. Obecnou dokumentaci k funkci naleznete v dokumentaci aplikace.
Sestavení URL a URL parametry
Přes REST API lze z existující objednávky vydané vytvořit objednávku pro výrobu pomocí virtuální evidence objednani
a jejích subevidencí:
pro-vyrobu-zbozi
vrátí materiály potřebné pro výrobu zboží v daných objednávkách
je dostupná na adrese
/c/{ID firmy}/objednani/pro-vyrobu-zbozi
volá se metodou GET a vyžaduje filter v URL, který identifikuje objekty z evidence objednavka-vydana
vrací zboží s následujícími vlastnostmi:
cenik
- zboží které se bude objednávatsklad
- sklad do kterého zboží patříjizObjednano
- již objednané množstvíjizRezervovano
- vykryté rezervaceobjednano
- množství k objednáníobjednat
- objednávané množství (tuto hodnotu lze před odesláním upravit)skladem
- množství sklademsklMinimum
- minimální množství na skladě
pro-vyrobu
vytvoří objednávku zboží od zadaných dodavatelů
je dostupná na adrese
/c/{ID firmy}/objednani/pro-vyrobu
volá se metodami POST nebo PUT a vyžaduje zadat:
typDokl
- id nebo kód objektu z evidence typ-objednavky-vydanedodavatel
- id nebo kód objektu z evidence adresarzboziProVyrobu
- seznam zboží získaného z evidenceobjednani/pro-vyrobu-zbozi
vyžaduje filter v URL, který identifikuje objekty z evidence objednavka-vydana
Vytvoření objednávky pro výrobu s použitím balení
Namísto elementu objednat
je možné použít element objednatBaleni
, ve kterém lze specifikovat množství v baleních. Je možné použít jeden nebo více druhů balení, která jsou definována v ceníku identifikovaném elementem cenik
. Každé balení musí obsahovat:
id
- identifikace balení (hodnoty 1 až 5)mnozMj
- objednávané množství v baleních (desetinné číslo)
Způsob volání
Lze využít HTTP metodu: GET
nebo POST
/PUT
, podporované výstupní formáty jsou XML
nebo JSON
.
Endpoint pro volání služby obsahuje název virtuální evidence objednani
a název její subevidence pro-vyrobu-zbozi
nebo pro-vyrobu
:
Získání zboží
https://localhost:5434/c/{ID firmy}/objednani/(fitrace objednávek)/pro-vyrobu-zbozi.xml (.json).
Vytvoření objednávky
https://localhost:5434/c/{ID firmy}/objednani/(fitrace objednávek)/pro-vyrobu.xml (.json).
Příklady použití
Jak jsme uvedli, volání se skládá z dvou kroku. V prvním kroku získáme materiál pro výrobu zboží na vybrané objednávce. V dalším kroku tento seznam zašleme na tvorbu objednávky do výroby s uvedeným seznamem materiálů.
1. získání seznamu materiálů v XML, na vydané objednávce s ID = 123 máme připravené k výrobě zboží KOLO, které má specifikovaný kusovník:
GET https://localhost:5434/c/firma_s_r_o_/objednani/(id=123)/pro-vyrobu-zbozi.xml
Odpověď API je seznam materiálů dle kusovníku včetně výše specifikovaný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é volání lze realizovat pomocí JSON:
GET https://localhost:5434/c/firma_s_r_o_/objednani/(id=123)/pro-vyrobu-zbozi.json
Odpověď API je seznam materiálů dle kusovníku včetně výše specifikovaných polí ve formátu 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ý seznam materiálů s případnou úpravou pole objednat předáme jako tělo požadavku na tvorbu objednávky do výroby:
POST https://localhost:5434/c/firma_s_r_o_/objednani/(id=123)/pro-vyrobu.xml
Tělo požadavku:
<?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 případě úspěšného vytvoření s návratovým kódem 201 Created a identifikátory vytvořených objednávek 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>
4. objednání materiálů je možné i na více dodavatelů a také je podporován formát JSON:
POST https://localhost:5434/c/firma_s_r_o_/objednani/(id=123)/pro-vyrobu.json
Tělo požadavku:
{
"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. objednání balení v JSON. Máme-li např. balení s id
1 po dvou kusech a balení s id
2 po čtyřech kusech, můžeme následujícím dotazem objednat 10 kusů zboží.
POST https://localhost:5434/c/firma_s_r_o_/objednani/(id=123)/pro-vyrobu.json
Tělo požadavku:
{
"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úspěšné requesty
1. Nesprávné použití HTTP metod, například zaslání metody GET na subevidenci pro-vyrobu
:
Odpověď API je 405 Method not Allowed "success": "false"
2. Pokud je objednávka vydaná již objednána do výroby nebo objednávka neobsahuje položku zboží, která má kusovník API o této skutečnosti informuje zprávou:
"message": "Nebyly nalezeny žádné položky vhodné pro objednání."
3. špatné zaslání položky materiálu do výroby, která nemá správně nastaven kusovník či mapování skladu.
"message": "Pro položku ceníku 'HRUŠKA' není nastaveno mapování skladů."
4. syntaktická chyba v zápisu těla požadavku na výrobu. Například překlep v elementu dodavatel
apod.:
"message": "unexpected element (uri:\"\", local:\"doddavatel\"). Expected elements are <{}zboziProVyrobu>,<{}dodavatel>,<{}typDokl>"
Potřebujete poradit?
V případě dotazů k aplikaci nás kontaktujte na podporaflexi@abra.eu případně prostřednictvím chat okna v pravém dolním rohu.