Průvodce integrací Odoo se SkyPlanner APS pro rozvrhování výroby
Tento průvodce ukazuje partnerům Odoo, vývojářům a vedoucím IT, jak propojit Odoo Manufacturing se SkyPlanner APS. Obchodní přínosy i to, co už umí tlačítko Plan v Odoo, najdete na stránkách Rozvrhování výroby v Odoo a Podporuje Odoo plánování výroby s ohledem na skutečné kapacity strojů a pracovníků?.
Odoo zůstává hlavním zdrojem dat o produktech, kusovnících, operacích, výrobních zakázkách, zásobách a kalkulacích nákladů. SkyPlanner z těchto dat sestavuje rozvrh pomocí svého jádra Arcturus. Propojení s Odoo je obousměrné:
- Do SkyPlanner se přenášejí výrobní zakázky, výrobní příkazy, operace kusovníků, pracoviště a nákupní objednávky.
- Plánovaný začátek a konec i přiřazená pracoviště se zapisují zpět do
mrp.workorder. - Průběh výroby a zaznamenané časy se vracejí do Odoo jako Time Logs.
- Webhooky SkyPlanner odesílají změny rozvrhu ihned, jakmile nastanou.
Tým SkyPlanner během zavádění nakonfiguruje integraci přes standardní externí API Odoo podle vaší verze, hostingu a úprav. Po spuštění ostrého provozu pak zajišťuje její podporu. Tento průvodce je určen partnerům a vývojářům, kteří se chtějí zapojit nebo sami vyvíjet řešení nad zdokumentovaným REST API SkyPlanner (referenční příručka API). Práci s produkty, materiály a nákupními objednávkami popisuje veřejná dokumentace SkyPlanner.
Nultý krok: ověřte tarif a hosting Odoo
Nejprve zjistěte, jaké Odoo zákazník používá. Od toho se odvíjí další postup.
| Prostředí | Externí API | Vlastní moduly | Doporučený postup |
|---|---|---|---|
| Odoo Online, One App Free nebo Standard | Ne | Ne | CSV/XLSX nebo přechod na tarif Custom |
| Odoo Online, tarif Custom | Ano | Ne | Externí API |
| Odoo.sh (tarif Custom) | Ano | Ano | Externí API, volitelně modul |
| Na vlastní infrastruktuře, Community nebo Enterprise | Ano | Ano | Externí API, volitelně modul |
Dokumentace API Odoo uvádí, že přístup k externímu API je „only available on Custom Odoo pricing plans“ (dostupný pouze v tarifech Odoo Custom), nikoli v One App Free nebo Standard. Na stránce s cenami je tarif Standard popsán jako hostovaný na Odoo Online „without custom modules“ (bez vlastních modulů). Ověřte si to při úvodním zjišťování požadavků, ne až v polovině vývoje.
Možnosti integrace Odoo
| Možnost | Verze | Ověřování | Využití při integraci rozvrhování výroby |
|---|---|---|---|
Externí JSON-2 API: POST /json/2/<model>/<method> | Novinka ve verzi 19.0 | Klíč API v Authorization: bearer <key>, volitelná hlavička X-Odoo-Database | Výchozí volba pro nové integrace: search_read pro čtení, write pro zpětný zápis termínů |
Externí XML-RPC / JSON-RPC: /xmlrpc/2, /jsonrpc, služby common, object | Do verze 19.0; plánuje se odstranění | common.authenticate s přihlašovacím jménem a heslem nebo klíčem API, poté execute_kw | Nutné pro zákazníky s verzemi 16.0 až 18.0 |
| Vlastní controllery v modulu | Všechny | Podle konkrétní cesty, např. auth='bearer' | Sdružená data: výrobní zakázka (MO) včetně výrobních příkazů v jediném volání |
| Automatizační pravidla: „Send Webhook Notification“ (Odeslat oznámení webhookem) | V dokumentaci od verze 17.0 | Odchozí požadavek POST na URL | Odesílání při vytvoření nebo úpravě výrobních zakázek a výrobních příkazů |
| Import záznamů (CSV, XLSX) a export | Všechny | Uživatelská relace | Data pro zkušební provoz a jednorázové načtení kmenových dat |
Na odstranění se připravte už teď. Odoo plánuje odstranit XML-RPC a JSON-RPC v Odoo 22 (podzim 2028) a Odoo Online 21.1 (zima 2027). Pro verzi 19.0 stavte na JSON-2. Přístup přes RPC pro starší databáze oddělte do jediného adaptéru, aby při upgradu stačila jediná změna. Vlastních controllerů s @route(type='jsonrpc') se odstranění netýká.
Autentizace
Vytvořte samostatného uživatele pro integraci s oprávněním ke čtení v modulech Manufacturing a Inventory a k zápisu do výrobních příkazů. Jeho klíč vygenerujte v nabídce Preferences > Account Security > New API Key. Ve verzi 19.0 platí klíče nejvýše tři měsíce, takže middleware musí zajišťovat jejich rotaci a upozorňovat na selhání autentizace. Jinak vypršení klíče zastaví synchronizaci, aniž by si toho někdo všiml. REST API na straně SkyPlanner používá JWT, takže middleware uchovává oboje přihlašovací údaje.
Každé volání JSON-2 běží ve vlastní SQL transakci. Zápis rozdělený do několika volání proto není atomický. Zapisujte každý výrobní příkaz samostatně a zaznamenávejte výsledek každého zápisu.
Události
Odoo odesílá změny prostřednictvím automatizačních pravidel. Pravidlo pro mrp.production nebo mrp.workorder se spouštěčem Při vytvoření a úpravě a akcí „Send Webhook Notification“ (Odeslat oznámení webhookem) odešle vybraná pole požadavkem POST na danou URL. Pravidlo vytvořte ve Studio nebo ve vývojářském režimu ve formuláři automatizačních pravidel. Doplňte ho pravidelným dotazováním pomocí search_read podle write_date, abyste zachytili importy i vše, co pravidlu uniklo. V opačném směru webhooky SkyPlanner odesílají změny rozvrhu a stavů hned, jak nastanou.
Názvy polí se mezi verzemi liší. Ve verzi 19.0 každá databáze uvádí své modely, pole a metody na /doc; ve starších verzích volejte fields_get. Mapování sestavujte podle těchto údajů, ne zpaměti.
Mapování dat z Odoo do SkyPlanner
| Model v Odoo | Objekt v SkyPlanner | Směr | Četnost |
|---|---|---|---|
product.product / product.template (default_code, uom_id, qty_available) | Produkt nebo materiál | Odoo → SkyPlanner | Počáteční načtení, poté denně nebo při změně |
mrp.bom (product_tmpl_id, product_qty, produce_delay), mrp.bom.line (product_id, product_qty, operation_id), mrp.bom.byproduct | Produkt s víceúrovňovou strukturou, materiálové požadavky pro jednotlivé operace | Odoo → SkyPlanner | Při změně |
mrp.routing.workcenter (karta Operace: workcenter_id, sequence, time_mode, time_cycle_manual, blocked_by_operation_ids) | Operace včetně pořadí a doby zpracování | Odoo → SkyPlanner | Při změně |
mrp.workcenter (resource_calendar_id, time_efficiency, time_start, time_stop, alternative_workcenter_ids) | Pracoviště, efektivita, příprava a úklid, alternativní pracoviště | Odoo → SkyPlanner, následná správa v SkyPlanner | Počáteční načtení |
mrp.workcenter.capacity (capacity) | Počet kusů na cyklus, časy přípravy a úklidu pro konkrétní produkt | Odoo → SkyPlanner | Počáteční načtení |
resource.calendar, resource.calendar.attendance, resource.calendar.leaves | Směny a nepřítomnosti | Odoo → SkyPlanner | Počáteční načtení, nepřítomnosti při změně |
mrp.production (product_id, product_qty, date_deadline, priority, state, workorder_ids) | Zakázka s termínem dokončení a prioritou | Odoo → SkyPlanner | Webhook při potvrzení a pravidelné dotazování |
mrp.workorder (operation_id, workcenter_id, duration_expected, state) | Operace na pracovišti | Odoo → SkyPlanner | Webhook a pravidelné dotazování |
stock.quant, stock.move (skladové pohyby komponent) | Stav zásob a materiálové požadavky pro rozvrhování podle dostupnosti materiálu | Odoo → SkyPlanner | Pravidelně, např. každých 15 až 60 minut |
purchase.order (partner_id, state), purchase.order.line (product_id, product_qty, date_planned, qty_received) | Nákupní objednávky a očekávaný materiál, dostupný k předpokládanému datu dodání | Odoo → SkyPlanner | Webhook při potvrzení nebo úpravě nákupní objednávky a stejné pravidelné dotazování |
| Plánovaný začátek, konec a pracoviště | mrp.workorder.date_start, date_finished, workcenter_id | SkyPlanner → Odoo | Při změně rozvrhu prostřednictvím webhooku SkyPlanner |
| Mobile Confirmations, časové záznamy | mrp.workcenter.productivity (Time Logs: workcenter_id, workorder_id, date_start, date_end, loss_id) | SkyPlanner → Odoo | Při každém potvrzení |
| Vyrobené množství, dokončení operace | qty_producing na výrobním příkazu, poté button_finish; button_mark_done na výrobní zakázce | SkyPlanner → Odoo, nebo přímo v Odoo Shop Floor | Při každém potvrzení |
Integrační postupy
Nejprve kmenová data.
Načtěte pracoviště a kalendáře, poté produkty, kusovníky a operace, které na pracoviště odkazují. Během 30denní zkušební doby se stejné seznamy načítají z exportů CSV. Nástroj pro import a export v Odoo funguje v každém seznamovém zobrazení.
Synchronizace zakázek.
Načítejte výrobní zakázky ve stavech confirmed a progress včetně jejich výrobních příkazů. Návrhy výrobních zakázek vynechte nebo je berte jako předběžnou poptávku. Podsestavy s vlastním kusovníkem mohou přicházet jako samostatné podřízené výrobní zakázky. Odoo každou výrobní zakázku plánuje samostatně. Namapujte je na dílčí produkty v SkyPlanner, aby byly podsestavy hotové dříve, než začne výroba nadřazeného produktu.
Zpětný zápis rozvrhu.
Při změně rozvrhu spustí webhook SkyPlanner integraci, která zavolá metodu ORM write pro každý dotčený záznam mrp.workorder. V Odoo 19.0 to znamená jeden požadavek JSON-2 na každý výrobní příkaz:
„ POST /json/2/mrp.workorder/write Authorization: bearer <api-key> {"ids": [4711], "vals": {"date_start": "2026-11-03 06:00:00", "date_finished": "2026-11-03 09:30:00", "workcenter_id": 7}} „
JSON-2 přijímá všechny argumenty metody podle názvu spolu s ids a context, takže z write(vals) se stává klíč vals. Ve verzích 16.0 až 18.0 se stejné volání provádí jako execute_kw(db, uid, key, 'mrp.workorder', 'write', [[4711], vals]) přes XML-RPC nebo JSON-RPC. Ve verzi 16.0 se používají klíče date_planned_start a date_planned_finished. Datum a čas se předávají v UTC. Pro správný zápis dodržujte několik pravidel:
- Oba termíny odešlete v jednom volání.
workcenter_idpřidejte jen tehdy, když plánovací algoritmus vybral alternativní stroj.- Zapisujte pouze do polí pro rozvrhování, nikdy neměňte množství ani kusovníky.
Zápisem termínů se posune rezervace pracoviště přímo v Odoo, takže se v plánovacích zobrazeních Odoo zobrazí plán ze SkyPlanner.
Data z výrobního provozu zpět do Odoo. Operátoři zaznamenávají práci v SkyPlanner Mobile Confirmations. Pro každé potvrzení integrace zavolá create na mrp.workcenter.productivity (JSON-2: POST /json/2/mrp.workcenter.productivity/create s vals_list). Vyplní workorder_id, workcenter_id, date_start, date_end a loss_id typu Productive. Odpracovaný čas a náklady se zaúčtují v Odoo.
Po dokončení operace integrace nastaví vyrobené množství a na výrobním příkazu zavolá button_finish. Po dokončení posledního výrobního příkazu je výrobní zakázka připravena na volání button_mark_done. Každé potvrzení se zapíše právě jednou a ID jeho záznamu v Odoo se uloží k časovému záznamu v SkyPlanner. Opakované doručení webhooku tak nikdy nevytvoří druhý záznam Time Logs.
V závodech, které používají aplikaci Enterprise Shop Floor, je směr opačný: SkyPlanner čte stav výrobního příkazu a qty_produced a Autopilot při změnách ve výrobě automaticky přepočítává rozvrh.
Odpovědnost za data. Před spuštěním ostrého provozu sepište pravidla:
| Data | Odpovědný systém |
|---|---|
| Produkty, kusovníky, operace, množství, stav MO | Odoo |
| Pořadí výrobních příkazů, časy zahájení a ukončení, výběr pracoviště | SkyPlanner |
| Matice časů přestaveb, požadavky na nástroje a obsluhu, alternativní zdroje | SkyPlanner |
| Kalendáře pracovišť a Time Off | Jeden systém zvolený při vymezení rozsahu |
| Time Logs, zásoby a kalkulace nákladů | Odoo, které přebírá potvrzení ze SkyPlanner |
U výrobních zakázek (MO), které rozvrhuje SkyPlanner, plánovači přestanou v Odoo používat tlačítka Plan a Unplan. Jinak Odoo vytvoří vlastní rezervace a přepíše termíny ze SkyPlanner.
Obvyklý průběh projektu
Implementace bývá hotová během několika týdnů od zahájení zavádění. Předtím můžete využít 30denní bezplatnou zkušební verzi s exporty vlastních dat z Odoo ve formátu CSV. Samotný projekt zahrnuje:
- Mapování kmenových dat: modely a pole Odoo podle verze (ověřte přes
/docnebofields_get), měrné jednotky a určení systému, ve kterém se budou spravovat kalendáře a Time Off. - Úpravu dat: kalendáře pracovišť, hodnoty Setup Time a Cleanup Time a nastavení délek operací kusovníků na Fixed místo Computed.
- Úvodní načtení: produkty, pracoviště s kalendáři, kusovníky a jejich operace.
- Synchronizace výrobních zakázek a nákupních objednávek: potvrzené a rozpracované výrobní zakázky včetně výrobních příkazů a řádky
purchase.orders očekávanými termíny dodání. - Zpětný zápis rozvrhu: termíny a pracoviště v
mrp.workorder, včetně rotace klíčů API na straně Odoo. - Potvrzování z výrobního provozu: přenos Time Logs a dokončení výrobních příkazů zpět do Odoo.
- Testování souběžně se stávajícím plánem, poté spuštění ostrého provozu.
Úskalí Odoo
- Přejmenovaná pole termínů. Do verze 16.0 obsahovala pole
date_planned_startadate_planned_finishedplánované termíny adate_start/date_finishedskutečné časy. Od verze 17.0 jsou plánované termíny vdate_startadate_finished. Mapování převzaté z projektu pro verzi 16.0 ve verzích 17+ bez upozornění načítá skutečné časy jako plánované. - Termíny výrobních příkazů jsou rezervace. Ve verzi 19.0 se
date_startadate_finishedvmrp.workordervypočítávají ze záznamuresource.calendar.leaves(leave_id) v kalendáři pracoviště. Zápis termínů do výrobního příkazu tuto rezervaci aktualizuje. Nikdy nezapisujte přímo do tabulky nepřítomností. - Zahájené výrobní příkazy blokují zrušení naplánování. Odoo odmítne zrušit naplánování výrobní zakázky, pokud platí „Some work orders have already started“ (Některé výrobní příkazy již byly zahájeny). Při zpětném zápisu vynechte výrobní příkazy ve stavu
progressnebodonea přesouvejte pouze ty, které ještě nezačaly. - Délky operací se mění. Operace s nastavením Computed přebírají délku z posledních výrobních příkazů (ve výchozím nastavení 10), upravenou podle Time Efficiency. Pro zkušební provoz je nastavte na Fixed, nebo počítejte s proměnlivými vstupy. Operace jsou definovány u každého kusovníku zvlášť, bez společných kmenových dat technologických postupů. Každý kusovník je proto nutné upravit samostatně.
- Chybné kalendáře. Každé pracoviště potřebuje kalendář pracovní doby. Vlastní plánovač Odoo hledá volný termín až 700 dní dopředu a poté se zastaví s hlášením „Impossible to plan the workorder“ (výrobní příkaz nelze naplánovat). Kalendáře opravte před prvním načtením dat.
- Měrné jednotky.
mrp.bom.linemá vlastníproduct_uom_id, která se může lišit od skladové jednotky produktu. Před kontrolou dostupnosti materiálu jednotky převeďte.
Kdo konfiguruje integraci s Odoo
Každý závod používá Odoo jinak: má vlastní operace kusovníků, kalendáře pracovišť, alternativní pracoviště i vlastní moduly. Tým SkyPlanner přináší odborné znalosti potřebné ke správnému mapování dat pro toto konkrétní prostředí.
- Tým SkyPlanner integraci nakonfiguruje během zavádění podle vašeho prostředí Odoo a po spuštění ostrého provozu zajišťuje její podporu. Integrace využívá REST API a webhooky SkyPlanner a API JSON-2 nebo RPC v Odoo. To je výchozí postup.
- Zapojit se může i váš partner Odoo. Zná vaše prostředí i vlastní moduly a může stavět na stejném zdokumentovaném REST API. Toto API umožňuje číst a zapisovat zakázky, produkty, materiály, kroky výrobního procesu a časové záznamy. Používá autentizaci JWT a má dokumentaci Swagger/OpenAPI.
- Vaši vlastní vývojáři mohou postupovat stejně, obvykle formou malého middlewaru vedle Odoo nebo modulu na Odoo.sh či na vlastní infrastruktuře. Pro začátek stačí klíč API (návod k integraci) a tým SkyPlanner v případě potřeby pomůže.
Stejný model funguje v ostrém provozu i s jinými ERP systémy. Ve společnosti Laboratory & Allied vytvořil interní IT tým integraci se SAP Business One převážně vlastními silami, s pomocí SkyPlanner. Společnost UTU používá SkyPlanner vedle svého ERP systému NetSuite.
Proč se integrace vyplatí
Právě díky zpětnému zápisu dat má integrace každodenní přínos. Jakmile zpětný zápis funguje:
- Výrobní příkazy v Odoo mají reálné termíny. Arcturus AI během několika sekund sestaví pořadí všech otevřených výrobních zakázek. Vypočtené termíny a vybraná pracoviště se zapíšou do
mrp.workorder, kde je zobrazují plánovací pohledy Odoo. - Nikdo nemusí ručně přeplánovávat. Autopilot při změnách ve výrobě automaticky upraví rozvrh a webhook odešle nové termíny do Odoo.
- Výrobní provoz poskytuje zpětnou vazbu. Obsluha zaznamenává práci na telefonu nebo tabletu pomocí funkcí Mobile Confirmations, Production Timer a Quick Log Mode. Time Logs se odesílají do Odoo pro evidenci zásob a kalkulaci nákladů. Rozvrhování i realizace výroby probíhají v jednom nástroji, a to v edici Community i Enterprise.
- Rozvrh zohledňuje omezení, která Odoo neřeší. Matice časů přestaveb určuje časy přechodu mezi dvojicemi produktů podle jejich pořadí. Nástroje jsou kapacitně omezené výrobní zdroje sdílené mezi stroji a jedna operace může vyžadovat několik operátorů současně. Pokud primární stroj nebo pracovník není dostupný, plánovací algoritmus využije alternativu. Termíny zapsané zpět do
mrp.workordervšechna tato omezení respektují. - Plán se řídí příchodem materiálu. Rozvrhování podle dostupnosti materiálu využívá aktuální stav zásob a otevřené nákupní objednávky v Odoo. Objednané komponenty se považují za dostupné k datu dodání nákupní objednávky a zásoby se aktualizují, když je objednávka označena jako Delivered. U každé operace se kontroluje, co je ve skladu a co je na cestě.
Rozvrh můžete posoudit ještě před zahájením integrace. Spusťte si 30denní bezplatnou zkušební verzi s exporty CSV a zobrazte si vlastní výrobní příkazy z Odoo v Ganttově diagramu. K dispozici máte až 20 pracovišť a nepotřebujete platební kartu. Cena začíná na 199 € měsíčně včetně 5 pracovišť, s měsíční fakturací a možností předplatné kdykoli zrušit. Cenovou nabídku integrace pro vaše procesy a potřeby dostanete předem společně s nabídkou tarifu, takže celkové náklady znáte ještě před zahájením. Prohlédněte si funkce a zkušenosti zákazníků nebo si rezervujte ukázku.
Jak výrobní firmy hodnotí SkyPlanner
2 hušetřené každý týden
„SkyPlanner posunul naše plánování výroby od tabulek v Excelu k optimalizaci výroby v reálném čase.“
Kalle Kalliomäki, specialista dodavatelského řetězce
UTU · Elektrické rozvaděče a spínací zařízení
Plánování výroby šetří každý týden 2 hodiny pracovní doby a nová fronta práce se na linku dostane během několika sekund.
+90%efektivita výroby
„Efektivita výroby vzrostla o 90 %.“
Abdul Rucyinga, vedoucí IT
Laboratory & Allied · Farmaceutická výroba
Efektivita výroby vzrostla o 90 % a vytvoření optimalizovaného plánu na tři měsíce pro všechna pracoviště zabere méně než 30 minut.
1,000sautomaticky rozvržených výrobních příkazů
„Výrobu máme pod kontrolou úplně jinak a náš přehled o kapacitách je na zcela jiné úrovni.“
Hannu Ryynänen, generální ředitel
Mamec · Průmyslová míchadla, čerpadla a technologicky náročná zakázková výroba
Tisíce výrobních příkazů se rozvrhují automaticky a celá firma má přehled o výrobě v reálném čase.
99,2 %včasnost dodávek
„Díky SkyPlanneru máme přehled o úzkých místech a řízení výroby je přehlednější.“
Toni Tuori, vedoucí výroby
Piristeel · Střešní bezpečnostní prvky a okapové systémy
Včasnost dodávek letos dosáhla 99,2 % a rozvrhování šetří až čtyři hodiny práce denně.
Časté dotazy
Funguje integrace v Odoo Online?
V tarifu Custom ano, prostřednictvím externího API. Tarify One App Free a Standard nemají přístup k externímu API a Standard neumožňuje vlastní moduly. U těchto tarifů je proto možné pouze importovat a exportovat soubory CSV/XLSX.
Máme použít JSON-2, nebo XML-RPC?
V Odoo 19.0 a novějších verzích použijte JSON-2. Pro verze 16.0 až 18.0 jsou stále potřeba XML-RPC a JSON-RPC, jejich odstranění je však plánováno v Odoo 22.
Jak se rozvrh dostane zpět do Odoo?
Prostřednictvím metody ORM write na každém mrp.workorder: ve verzi 19.0 voláním POST /json/2/mrp.workorder/write s ids a vals, ve verzích 16.0 až 18.0 voláním execute_kw s write přes XML-RPC nebo JSON-RPC. Zapisují se hodnoty date_start, date_finished (ve verzi 16.0 date_planned_start a date_planned_finished) a při změně také workcenter_id. Odoo současně přesune rezervaci pracoviště, takže jeho plánovací pohledy zobrazují termíny ze SkyPlanner.
Jak se potvrzení od operátorů dostanou do Odoo?
Jako Time Logs: integrace vytváří k výrobnímu příkazu záznamy mrp.workcenter.productivity se začátkem, koncem a důvodem ztráty typu Productive. Po dokončení operace pak zavolá button_finish. Každé potvrzení se zapíše právě jednou, takže opakované pokusy čas nezdvojí.
Kdo se o integraci stará po spuštění ostrého provozu?
Tým SkyPlanneru nastaví integraci během zavádění a poskytuje podporu i po spuštění ostrého provozu, včetně úprav při změnách vašeho nastavení Odoo. Pokud integraci vytváří váš partner nebo vaši vývojáři, vycházejí ze zdokumentovaného REST API a dokumentace SkyPlanneru. Tým jim v případě potřeby pomůže.
Co se stane s výrobními příkazy, které už byly zahájeny?
Při zpětném zápisu je ponechte beze změny. Odoo nedovolí zrušit naplánování MO, pokud je některý výrobní příkaz rozpracovaný nebo dokončený. SkyPlanner načítá jejich stav a průběh a při rozvrhování zbývající práce je respektuje.
Jak dlouho trvá integrace s Odoo?
Implementace bývá dokončena během několika týdnů od zahájení zavádění. Nejprve využijte 30denní zkušební verzi s exporty CSV. Rozvrh si tak ověříte na vlastních datech z Odoo ještě před zahájením prací na propojení přes API.