Přeskočit na hlavní obsah
Všechny sbírkyDokumentace REST APIPokročilé příkazy
Tvorba objednávky pro výrobu pomocí REST API
Tvorba objednávky pro výrobu pomocí REST API

Jak vytvořit objednávku vydanou pro výrobu přes REST API Flexi?

Ota Rádl avatar
Autor: Ota Rádl
Aktualizováno před více než 2 lety

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ávat

      • sklad - sklad do kterého zboží patří

      • jizObjednano - již objednané množství

      • jizRezervovano - vykryté rezervace

      • objednano - množství k objednání

      • objednat - objednávané množství (tuto hodnotu lze před odesláním upravit)

      • skladem - množství skladem

      • sklMinimum - 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:

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.

Dostali jste odpověď na svou otázku?