Ansluter med ERP & MES-system som

Integrationer / ERP / Odoo

Integrera Odoo med SkyPlanner APS för produktionsplanering

Den här guiden visar Odoo-partner, utvecklare och IT-ansvariga hur Odoo Manufacturing ansluts till SkyPlanner APS. Läs om affärsnyttan och vad Odoos Plan-knapp redan gör på sidan om produktionsplanering i Odoo och i Har Odoo finplanering?.

Gantt-schema i SkyPlanner APS med operationer planerade på olika produktionsgrupper och en orderlista nedanför.

Odoo är fortsatt det styrande systemet för produkter, stycklistor, operationer, produktionsorder, lager och kostnadskalkylering. SkyPlanner använder dessa data för att skapa produktionsplanen med sin Arcturus-motor. Integrationen med Odoo går i båda riktningarna:

  • Produktionsorder, tillverkningsorder, stycklisteoperationer, produktionsgrupper och inköpsorder hämtas in.
  • Planerade start- och sluttider samt produktionsgrupper skrivs tillbaka till mrp.workorder.
  • Produktionsstatus och registrerad tid skickas tillbaka som Odoo Time Logs.
  • SkyPlanners webhooks skickar ändringar i produktionsplanen så snart de sker.

Under införandet konfigurerar SkyPlanner-teamet integrationen via Odoos externa standard-API och anpassar den till er version, driftmiljö och era anpassningar. Teamet ger också support efter driftstart. Guiden vänder sig till partner och utvecklare som vill medverka eller själva bygga vidare på SkyPlanners dokumenterade REST API (API-referens). Hanteringen av produkter, material och inköpsorder beskrivs i den offentliga SkyPlanner-dokumentationen.

Steg noll: kontrollera Odoo-abonnemang och driftmiljö

Ta först reda på vilken Odoo-lösning kunden använder. Det avgör hur integrationen kan genomföras.

MiljöExternt APIEgna modulerPraktiskt tillvägagångssätt
Odoo Online, One App Free eller StandardNejNejCSV/XLSX eller byte till Custom-abonnemanget
Odoo Online, Custom-abonnemangJaNejExternt API
Odoo.sh (Custom-abonnemang)JaJaExternt API, valfri modul
Lokal drift, Community eller EnterpriseJaJaExternt API, valfri modul

I Odoos API-dokumentation står det att extern API-åtkomst är ”only available on Custom Odoo pricing plans” (endast tillgänglig med Odoos Custom-abonnemang), inte med One App Free eller Standard. På prissidan beskrivs Standard som en lösning som körs på Odoo Online ”without custom modules” (utan egna moduler). Red ut detta under kartläggningen, inte halvvägs in i utvecklingen.

Integrationsalternativ i Odoo

AlternativVersionerAutentiseringRoll i integrationen för produktionsplanering
Externt JSON-2 API: POST /json/2/<model>/<method>Nytt i 19.0API-nyckel i Authorization: bearer <key>, valfritt HTTP-huvud X-Odoo-DatabaseStandardval för nya integrationer: search_read för läsning, write för att skriva tillbaka datum
Externt XML-RPC / JSON-RPC: /xmlrpc/2, /jsonrpc, tjänsterna common, objectTill och med 19.0; ska tas bortcommon.authenticate med användarnamn och lösenord eller API-nyckel, därefter execute_kwKrävs för kunder med 16.0 till 18.0
Anpassade controllers i en modulAllaPer route, t.ex. auth='bearer'Kombinerade datapaket: en MO med tillhörande tillverkningsorder i ett enda anrop
Automatiseringsregler: ”Send Webhook Notification” (skicka webhook-avisering)I dokumentationen från 17.0Utgående POST till en URLSkickar data när MO:er och tillverkningsorder skapas eller ändras
Import av poster (CSV, XLSX) och exportAllaAnvändarsessionTestdata och engångsinläsning av grunddata

Planera redan nu för att stödet tas bort. Odoo har planerat att ta bort XML-RPC och JSON-RPC i Odoo 22 (hösten 2028) och Odoo Online 21.1 (vintern 2027). Bygg på JSON-2 för 19.0 och samla RPC-kommunikationen för äldre databaser bakom en enda adapter. Då kräver en uppgradering bara en ändring. Anpassade controllers med @route(type='jsonrpc') påverkas inte.

Autentisering

Skapa en särskild integrationsanvändare med läsbehörighet till Manufacturing och Inventory och skrivbehörighet till tillverkningsorder. Generera användarens nyckel under Preferences > Account Security > New API Key. I 19.0 gäller nycklar i högst tre månader, så mellanprogramvaran behöver hantera nyckelrotation och larma vid autentiseringsfel. Utan dessa funktioner stoppar en utgången nyckel synkroniseringen utan att det märks. På SkyPlanner-sidan använder REST API JWT, så mellanprogramvaran lagrar båda systemens autentiseringsuppgifter.

Varje JSON-2-anrop körs i en egen SQL-transaktion. En skrivning som fördelas på flera anrop är därför inte atomär. Skriv per tillverkningsorder och logga varje resultat.

Händelser

Odoo skickar ändringar via automatiseringsregler. En regel på mrp.production eller mrp.workorder med utlösaren On create and edit och åtgärden ”Send Webhook Notification” (skicka webhook-avisering) skickar ett POST-anrop med de valda fälten till en URL. Skapa regeln i Studio eller i utvecklarläget via formuläret Automation Rules. Komplettera med schemalagd avfrågning med search_read på write_date för att fånga upp importer och sådant som regeln har missat. I andra riktningen skickar SkyPlanners webhooks ändringar i planering och status så snart de sker.

Fältnamnen skiljer sig mellan versionerna. I 19.0 listar varje databas sina modeller, fält och metoder på /doc. I äldre versioner anropar du fields_get. Utgå från den informationen när du mappar, inte från minnet.

Datamappning: från Odoo till SkyPlanner

Modell i OdooObjekt i SkyPlannerRiktningFrekvens
product.product / product.template (default_code, uom_id, qty_available)Produkt eller materialOdoo → SkyPlannerFörsta inläsning, därefter dagligen eller vid ändring
mrp.bom (product_tmpl_id, product_qty, produce_delay), mrp.bom.line (product_id, product_qty, operation_id), mrp.bom.byproductProdukt med flera strukturnivåer, materialbehov per stegOdoo → SkyPlannerVid ändring
mrp.routing.workcenter (fliken Operations: workcenter_id, sequence, time_mode, time_cycle_manual, blocked_by_operation_ids)Processteg med ordningsföljd och körtidOdoo → SkyPlannerVid ändring
mrp.workcenter (resource_calendar_id, time_efficiency, time_start, time_stop, alternative_workcenter_ids)Produktionsgrupp, effektivitet, ställ- och avröjningstid, alternativa produktionsgrupperOdoo → SkyPlanner, underhålls därefter i SkyPlannerFörsta inläsning
mrp.workcenter.capacity (capacity)Antal per cykel, produktspecifika ställ- och avröjningstiderOdoo → SkyPlannerFörsta inläsning
resource.calendar, resource.calendar.attendance, resource.calendar.leavesSkift och frånvaroOdoo → SkyPlannerFörsta inläsning, frånvaro vid ändring
mrp.production (product_id, product_qty, date_deadline, priority, state, workorder_ids)Order med färdigdatum och prioritetOdoo → SkyPlannerWebhook vid bekräftelse, kompletterat med avfrågning
mrp.workorder (operation_id, workcenter_id, duration_expected, state)Operation i en produktionsgruppOdoo → SkyPlannerWebhook, kompletterat med avfrågning
stock.quant, stock.move (lagertransaktioner för komponenter)Lagersaldo och materialbehov för materialstyrd produktionsplaneringOdoo → SkyPlannerSchemalagt, t.ex. med 15 till 60 minuters intervall
purchase.order (partner_id, state), purchase.order.line (product_id, product_qty, date_planned, qty_received)Inköpsorder och inkommande material, tillgängligt på förväntat leveransdatumOdoo → SkyPlannerWebhook när inköpsordern bekräftas eller ändras, kompletterat med samma schemalagda avfrågning
Planerad start- och sluttid samt produktionsgruppmrp.workorder.date_start, date_finished, workcenter_idSkyPlanner → OdooNär planeringen ändras, via en webhook från SkyPlanner
Mobile Confirmations, tidregistreringarmrp.workcenter.productivity (Time Logs: workcenter_id, workorder_id, date_start, date_end, loss_id)SkyPlanner → OdooVid varje återrapportering
Producerat antal, färdig operationqty_producing på tillverkningsordern, därefter button_finish; button_mark_done på MO:nSkyPlanner → Odoo, eller registrering i Odoo Shop FloorVid varje återrapportering

Integrationsmönster

Grunddata först.

Läs in produktionsgrupper och kalendrar först, därefter produkter, stycklistor och operationer som refererar till produktionsgrupperna. Under provperioden på 30 dagar läses samma listor in som CSV-exporter. Odoos verktyg för import och export fungerar i alla listvyer.

Ordersynkronisering.

Läs in MO:er med status confirmed och progress tillsammans med deras tillverkningsorder. Utelämna MO:er i utkaststatus eller behandla dem som preliminära behov. Undermontage med egen stycklista kan komma in som separata underordnade MO:er, och Odoo planerar varje MO för sig. Mappa dem till delprodukter i SkyPlanner så att undermontagen blir klara innan den överordnade produkten börjar tillverkas.

Återskrivning av produktionsplanen.

När planeringen ändras utlöser en webhook från SkyPlanner integrationen, som anropar ORM-metoden write på varje berörd mrp.workorder. I Odoo 19.0 innebär det ett JSON-2-anrop per tillverkningsorder:

” 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 tar emot varje metodargument med namn, tillsammans med ids och context. Argumentet i write(vals) skickas alltså under nyckeln vals. I 16.0 till 18.0 körs samma anrop som execute_kw(db, uid, key, 'mrp.workorder', 'write', [[4711], vals]) via XML-RPC eller JSON-RPC. I 16.0 heter nycklarna date_planned_start och date_planned_finished. Datum och tider skickas i UTC. Följ några enkla regler för att skriva tillbaka rätt:

  • Skicka båda datumen i samma anrop.
  • Ta bara med workcenter_id när motorn har valt en alternativ maskin.
  • Skriv endast till planeringsfält, aldrig till kvantiteter eller stycklistor.

När datumen skrivs flyttas Odoos egen bokning av produktionsgruppen, så att Odoos planeringsvyer visar SkyPlanners plan.

Återrapportering från produktionsgolvet till Odoo. Operatörerna registrerar arbete i SkyPlanner Mobile Confirmations. För varje återrapportering anropar integrationen create på mrp.workcenter.productivity (JSON-2: POST /json/2/mrp.workcenter.productivity/create med vals_list). Den fyller i workorder_id, workcenter_id, date_start, date_end och ett loss_id av typen Productive. Arbetstid och kostnader bokförs då i Odoo.

När en operation är klar anger integrationen producerat antal och anropar button_finish på tillverkningsordern. Efter den sista tillverkningsordern är MO:n redo för button_mark_done. Varje återrapportering registreras en enda gång, och dess post-id i Odoo sparas tillsammans med tidregistreringen i SkyPlanner. Därför skapar ett nytt försök med samma webhook aldrig en extra Time Log.

För fabriker som använder appen Enterprise Shop Floor går flödet åt andra hållet: SkyPlanner läser tillverkningsorderns status och qty_produced, och Autopilot planerar om automatiskt när produktionen förändras.

Dataägarskap. Dokumentera reglerna före driftstart:

DataÄgare
Produkter, stycklistor, operationer, kvantiteter, produktionsorderns statusOdoo
Tillverkningsordrarnas ordningsföljd, start- och sluttider, val av produktionsgruppSkyPlanner
Ställtidsmatris, verktygs- och operatörskrav, alternativa resurserSkyPlanner
Produktionsgruppernas kalendrar och Time OffEtt system, som väljs under kartläggningen
Time Logs, lager och kostnadskalkyleringOdoo, med underlag från återrapportering i SkyPlanner

Planerarna slutar använda Plan och Unplan i Odoo för de produktionsorder som SkyPlanner planerar. Annars bokar Odoo egna tidsluckor som skriver över SkyPlanners datum.

Vanliga projektsteg

Implementeringen är normalt klar inom några veckor efter att införandet har startat. Innan dess kan ni använda CSV-exporter av era egna Odoo-data under den kostnadsfria provperioden på 30 dagar. Själva projektet omfattar:

  1. Mappning av grunddata: Odoos modeller och fält per version (kontrollera /doc eller fields_get), måttenheter samt vilket system som underhåller kalendrar och Time Off.
  2. Datastädning: produktionsgruppernas kalendrar, Setup Time och Cleanup Time samt Fixed i stället för Computed för tidsåtgången i stycklisteoperationer.
  3. Första inläsning: produkter, produktionsgrupper med kalendrar samt stycklistor och deras operationer.
  4. Synkronisering av order och inköpsorder: bekräftade och pågående MO:er med tillhörande tillverkningsorder samt rader i purchase.order med förväntade ankomstdatum.
  5. Återskrivning av planeringen: datum och produktionsgrupper på mrp.workorder, med rotation av API-nycklar på Odoo-sidan.
  6. Återrapportering från produktionen: Time Logs och färdigrapportering av tillverkningsorder tillbaka till Odoo.
  7. Testning parallellt med den nuvarande planen, därefter driftstart.

Fallgropar i Odoo

  • Datumfält med nya namn. Till och med 16.0 innehöll date_planned_start och date_planned_finished planerade tider, medan date_start/date_finished innehöll faktiskt utfall. Från 17.0 är date_start och date_finished de planerade tiderna. En mappning kopierad från ett 16.0-projekt läser i 17+ faktiskt utfall som planerade tider utan att ge någon varning.
  • Tillverkningsorderns tider är bokningar. I 19.0 beräknas date_start och date_finished på mrp.workorder utifrån en post i resource.calendar.leaves (leave_id) i produktionsgruppens kalender. När tiderna skrivs till tillverkningsordern uppdateras den bokningen. Skriv aldrig direkt i frånvarotabellen.
  • Påbörjade tillverkningsorder blockerar Unplan. Odoo vägrar att ta bort planeringen för en MO när ”Some work orders have already started” (vissa tillverkningsorder har redan påbörjats). Hoppa över tillverkningsorder med status progress eller done vid återskrivning och flytta bara sådant som inte har påbörjats.
  • Tidsåtgången förändras. Operationer med inställningen Computed hämtar sin tidsåtgång från de senaste tillverkningsordrarna (10 som standard), justerad med Time Efficiency. Välj Fixed under provperioden eller acceptera att indata förändras. Operationerna ligger på respektive stycklista, utan gemensamma grunddata för operationsföljder, så varje stycklista behöver städas separat.
  • Kalendrar som inte fungerar. Varje produktionsgrupp behöver en arbetstidskalender. Odoos egen planerare söker upp till 700 dagar framåt och stoppar sedan med ”Impossible to plan the workorder” (det går inte att planera tillverkningsordern). Rätta till kalendrarna före den första inläsningen.
  • Måttenheter. mrp.bom.line har ett eget product_uom_id, som kan skilja sig från produktens lagerenhet. Räkna om enheterna innan materialtillgången kontrolleras.

Vem konfigurerar Odoo-integrationen?

Varje fabrik använder Odoo på sitt sätt, med egna stycklisteoperationer, kalendrar för produktionsgrupper, alternativa produktionsgrupper och egna moduler. SkyPlanner-teamets expertis ligger i att få mappningen rätt för just den miljön.

  1. SkyPlanner-teamet konfigurerar integrationen för er Odoo-miljö under införandet och ger support efter driftstart. Integrationen använder SkyPlanners REST API och webhooks samt Odoos JSON-2- eller RPC-API. Det här är standardalternativet.
  2. Er Odoo-partner kan medverka. Partnern känner till er miljö och era egna moduler och kan bygga vidare på samma dokumenterade REST API. API:et läser och skriver order, produkter, material, processteg och tidsregistreringar, med JWT-autentisering och Swagger/OpenAPI-dokumentation.
  3. Era egna utvecklare kan göra samma sak, vanligtvis med en liten mellanprogramvara vid sidan av Odoo eller som en modul på Odoo.sh eller i lokal drift. En API-nyckel räcker för att komma igång (integrationsguide), och SkyPlanner-teamet hjälper till vid behov.

Samma modell används i produktion med andra ERP-system. Hos Laboratory & Allied byggde det interna IT-teamet integrationen med SAP Business One till stor del på egen hand, med hjälp från SkyPlanner. UTU använder SkyPlanner vid sidan av sitt ERP-system NetSuite.

Därför lönar sig integrationen

Det är återskrivningen som gör integrationen värdefull i vardagen. När den är igång:

  • Tillverkningsorder i Odoo får tider att arbeta efter. Arcturus AI ordnar alla öppna MO:er i körordning på sekunder. Motorns tider och val av produktionsgrupp skrivs till mrp.workorder och visas i Odoos planeringsvyer.
  • Ingen behöver planera om manuellt. Autopilot planerar om automatiskt när produktionen förändras, och webhooken skickar de nya datumen till Odoo.
  • Återrapportering direkt från produktionsgolvet. Operatörerna registrerar arbete på mobil eller surfplatta med Mobile Confirmations, Production Timer och Quick Log Mode. Time Logs skickas till Odoo som underlag för lager och kostnadskalkylering. Planering och utförande hanteras i ett verktyg, både med Community och Enterprise.
  • Planeringen tar hänsyn till begränsningar som Odoo inte hanterar. En ställtidsmatris anger sekvensberoende omställningstider för varje produktpar. Verktyg är begränsade resurser som delas mellan maskiner, och en operation kan kräva flera operatörer samtidigt. Motorn väljer alternativa maskiner eller annan personal när förstahandsvalet inte är tillgängligt. Tiderna som skrivs tillbaka till mrp.workorder tar hänsyn till alla dessa begränsningar.
  • Materialets ankomst styr planen. Lagersaldo och öppna inköpsorder i Odoo ger underlag för materialstyrd planering. Beställda komponenter räknas som tillgängliga på inköpsorderns leveransdatum, och lagret uppdateras när inköpsordern markeras som Delivered. Varje operation kontrolleras mot vad som finns i lagret och vad som är på väg in.

Ni kan utvärdera produktionsplanen innan något integrationsarbete påbörjas. Starta den kostnadsfria provperioden på 30 dagar med CSV-exporter och se era egna tillverkningsorder från Odoo i Gantt-schemat, med upp till 20 arbetsstationer och utan kreditkort. Priset börjar på 199 € per månad med 5 arbetsstationer inkluderade. Fakturering sker månadsvis och ni kan säga upp när som helst. Ni får en offert på integrationen i förväg, anpassad till er process och era behov, tillsammans med abonnemanget. Då ser ni hela kostnaden innan ni börjar. Se funktioner och kunder eller boka en demo.

Tillverkningsföretag om SkyPlanner

Kalle Kalliomäki, specialist på försörjningskedjor hos UTU, i elcentralstillverkningen i Ulvila

2 hsparade varje vecka

”SkyPlanner har tagit vår produktionsplanering från Excel-kalkylblad till produktionsoptimering i realtid.”

Kalle Kalliomäki, specialist på försörjningskedjor
UTU · Elcentraler och ställverk

Produktionsplaneringen sparar 2 timmars arbetstid varje vecka, och en ny arbetskö når produktionslinjen på några sekunder.

Läs UTU:s omdöme

Operatörer i renrumsdräkter vid en flaskfyllningslinje i Laboratory & Allieds läkemedelsfabrik i Nairobi

+90%produktionseffektivitet

”Effektiviteten i produktionen har ökat med 90%.”

Abdul Rucyinga, IT-chef
Laboratory & Allied · Läkemedelstillverkning

Produktionseffektiviteten har ökat med 90%, och det tar under 30 minuter att skapa en optimerad plan för tre månader som omfattar alla arbetsstationer.

Läs Laboratory & Allieds omdöme

Hannu Ryynänen, vd för Mamec, i företagets produktionshall i Lojo

1 000-talstillverkningsorder planeras automatiskt

”Vi har kontroll över produktionen på ett annat sätt, och vår förståelse för kapaciteten är på en helt annan nivå.”

Hannu Ryynänen, vd
Mamec · Industriella blandare, pumpar och högteknologisk legotillverkning

Tusentals tillverkningsorder planeras automatiskt, och hela organisationen får en realtidsbild av produktionen.

Läs Mamecs omdöme

Flygfoto över Piristeels fabrik för taksäkerhetsprodukter i Kauhava

99,2%leveransprecision

”SkyPlanner har gjort det lättare att se flaskhalsar och gjort produktionsstyrningen tydligare.”

Toni Tuori, produktionschef
Piristeel · Taksäkerhet och takavvattningssystem

Leveransprecisionen nådde 99,2% i år, och produktionsplaneringen sparar upp till fyra timmars arbetstid per dag.

Läs Piristeels omdöme

Vanliga frågor

Fungerar integrationen med Odoo Online?

Ja, med abonnemanget Custom, via det externa API:et. One App Free och Standard saknar åtkomst till det externa API:et, och Standard körs utan anpassade moduler. Med dessa abonnemang är därför endast import och export via CSV/XLSX möjlig.

Ska vi använda JSON-2 eller XML-RPC?

Använd JSON-2 i Odoo 19.0 och senare. XML-RPC och JSON-RPC behövs fortfarande för 16.0 till 18.0, men planen är att ta bort dem i Odoo 22.

Hur förs produktionsplanen tillbaka till Odoo?

Via ORM-metoden write på varje mrp.workorder: POST /json/2/mrp.workorder/write med ids och vals i 19.0, eller execute_kw med write via XML-RPC eller JSON-RPC i 16.0 till 18.0. Värdena är date_start, date_finished (date_planned_start och date_planned_finished i 16.0) samt workcenter_id om produktionsgruppen har ändrats. Odoo flyttar samtidigt bokningen i produktionsgruppen, så att Odoos planeringsvyer visar SkyPlanners tider.

Hur kommer operatörernas återrapportering in i Odoo?

Som Time Logs: integrationen skapar poster i mrp.workcenter.productivity kopplade till tillverkningsordern, med start- och sluttid samt förlustorsaken Productive. Därefter anropar den button_finish när operationen är klar. Varje återrapportering registreras en enda gång, så nya försök ger ingen dubbelregistrering av tid.

Vem underhåller integrationen efter driftsättningen?

SkyPlanner-teamet konfigurerar integrationen under uppstarten och ger support efter driftsättningen, även när integrationen behöver ändras för att ni ändrar er Odoo-konfiguration. Om er partner eller era utvecklare bygger integrationen utgår de från det dokumenterade REST API:et och SkyPlanners dokumentation. Teamet hjälper till vid behov.

Vad händer med tillverkningsorder som redan har påbörjats?

Lämna dem oförändrade när data skrivs tillbaka. Odoo tillåter inte att en MO avplaneras när en tillverkningsorder pågår eller är klar. SkyPlanner läser av deras status och hur långt arbetet har kommit och planerar det återstående arbetet runt dem.

Hur lång tid tar integrationen med Odoo?

Implementeringen är normalt klar inom några veckor från uppstarten. Börja med att använda CSV-exporter under provperioden på 30 dagar. Då har produktionsplanen testats med era egna Odoo-data innan API-arbetet börjar.