Přeskočit na hlavní obsah

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?