Integrationer / ERP / Xero
Guide til Xero-integration med SkyPlanner APS til produktionsplanlægning
Denne guide til Xero-integration viser Xero-rådgivere, konsulenter og IT-teams, hvordan de forbinder Xero med SkyPlanner APS. SkyPlanner udveksler data med Xero i begge retninger via Xero Accounting API og Projects API:
- Kontakter, lagerførte varer med lagerbeholdning, accepterede tilbud og indkøbsordrer med ankomstdatoer overføres til SkyPlanner.
- Den planlagte slutdato skrives tilbage som en note i hvert tilbuds historik.
- Færdige ordrer skrives tilbage som salgsfakturakladder med tilbuddets linjer og reference, og tilbuddet får status Invoiced.
- Registrerede timer på projektarbejde skrives tilbage som tidsregistreringer i Xero Projects.
- Xero-webhooks giver besked om ændringer i kontakter og fakturaer, og SkyPlanner-webhooks sender ændringer i planen, så snart de sker.
Xero er et regnskabsprogram og indeholder derfor hverken styklister, ruter, maskiner eller produktionsordrer. Arbejdsstationer, procestrin, skiftehold og omstillingstider ligger i SkyPlanner. SkyPlanner-teamet konfigurerer integrationen til din Xero-organisation under opstarten og yder support efter idriftsættelsen. Denne guide er til rådgivere og udviklere, der vil deltage eller selv bygge videre på SkyPlanners dokumenterede REST API (API-reference).
Xero Accounting API
Xero er ét cloudprodukt med flere tenants, og alle organisationer bruger samme API. Accounting API er et REST API på https://api.xero.com/api.xro/2.0/, som bruger JSON eller XML. Hvert kald angiver organisationen i headeren Xero-tenant-id. (kilde)
De endpoints, en produktionsplanlægger har brug for:
- Stamdata:
/Contacts(kunder og leverandører),/Items(Code, IsTrackedAsInventory, QuantityOnHand). - Behov:
/Quotes(Status ACCEPTED, LineItems) og, for værksteder der fakturerer først,/Invoicesmed Type ACCREC. - Forsyning:
/PurchaseOrders(DeliveryDate, ExpectedArrivalDate, LineItems med ItemCode). - Tilbageskrivning:
/Quotes/{QuoteID}/History,/Invoices,/Quotesog Projects API påhttps://api.xero.com/projects.xro/2.0/projects/{projectId}/time.
Alle listeendpoints accepterer headeren If-Modified-Since, så hver synkronisering kun læser det, der er ændret. Oprettelser og opdateringer sendes i batches. Der findes intet endpoint til styklister, ruter eller produktionsordrer.
Autentificering, scopes og grænser
Xero bruger OAuth 2.0. En Xero-administrator logger ind én gang, godkender appen og vælger organisationen. Appen anmoder om offline_access for at opretholde forbindelsen med refresh tokens. (kilde)
Xero erstatter brede scopes med mere detaljerede scopes, og nye apps får de detaljerede scopes. En integration til produktionsplanlægning har brug for:
accounting.invoicestil tilbud, fakturaer, indkøbsordrer og vareraccounting.contactstil kunder og leverandøreraccounting.settings.readtil vareindstillingerprojectstil tidsregistreringeroffline_access
Xero begrænser antallet af kald pr. organisation (samtidige, pr. minut og pr. dag) og pr. app. Når en app overskrider grænsen, returnerer Xero HTTP 429 med headeren Retry-After. Den daglige kvote og antallet af tilsluttede organisationer afhænger af appens partnerniveau. Begge dele fremgår af Xeros side om API-grænser. Webhooks, læsninger med If-Modified-Since og skrivninger i batches holder en integration til produktionsplanlægning et godt stykke under grænserne.
Hos SkyPlanner sker autentificeringen til REST API med et API-token i headeren Authorization-Token (SkyPlanner Settings > API). API’et er dokumenteret i Swagger/OpenAPI. Integrationsvejledningen gennemgår de første kald.
Webhooks
“Webhooks allow you to subscribe to certain events that happen in Xero.” (Webhooks lader dig abonnere på bestemte hændelser i Xero.) (kilde) De relevante hændelser for produktionsplanlægning er Contact og Invoice, begge med CREATE og UPDATE.
Sådan fungerer de:
- Én webhook pr. app dækker alle tilsluttede organisationer.
- Hver levering indeholder et events-array med ressource-ID og hændelsestype. Modtageren læser derefter ressourcen.
- Hver levering signeres med headeren
x-xero-signature, som dannes ud fra appens webhook-nøgle. Xero sender en “Intent to receive”-kontrol, før leveringerne begynder. - Xero forsøger igen ved mislykkede leveringer og deaktiverer en webhook, der bliver ved med at fejle. Derfor svarer modtageren hurtigt og udfører arbejdet bagefter.
Tilbud, varer og indkøbsordrer har ingen webhook-hændelser. SkyPlanner læser dem med korte pollingintervaller og If-Modified-Since. Det kræver ét kald pr. entitet, når intet er ændret.
Datamapping
| Xero-objekt (endpoint) | Objekt i SkyPlanner | Retning | Hyppighed |
|---|---|---|---|
Contact, IsCustomer (/Contacts) | Customer (external_identifier, delivery_priority) | Xero → SkyPlanner | Første indlæsning, derefter ved webhook |
Item, med og uden lagerstyring, med QuantityOnHand (/Items) | Produkter og materialer, lagerbeholdning | Xero → SkyPlanner | Første indlæsning, derefter med If-Modified-Since |
Quote, Status ACCEPTED, med LineItems (/Quotes) | Order (external_order_number, delivery_date), opgaver pr. linje | Xero → SkyPlanner | Polling med If-Modified-Since |
Invoice, Type ACCREC (værksteder, der fakturerer først) (/Invoices) | Ordre og opgaver | Xero → SkyPlanner | I realtid via webhook |
PurchaseOrder med ExpectedArrivalDate eller DeliveryDate (/PurchaseOrders) | Indgående materiale (estimated_delivery_date) | Xero → SkyPlanner | Polling med If-Modified-Since |
Note i tilbuddets historik (PUT /Quotes/{QuoteID}/History) | Planlagt slutdato | SkyPlanner → Xero | Ved ændring af planen |
Invoice, Type ACCREC, Status DRAFT, Reference = tilbudsnummer (POST /Invoices) | Færdig ordre | SkyPlanner → Xero | Når ordren er færdig |
Quote med Status INVOICED (POST /Quotes) | Færdig ordre | SkyPlanner → Xero | Når fakturaen oprettes |
Tidsregistrering i Projects (POST /projects/{projectId}/time) | Mobile Confirmations, tidsregistreringer | SkyPlanner → Xero | Efterhånden som arbejdet registreres |
| Findes ikke i Xero | Arbejdsstationer, procestrin, skiftehold, fravær, omstillingstidsmatrix, værktøjer, antal operatører, alternative arbejdsstationer | Vedligeholdes i SkyPlanner | Konfigureres under opstarten |
Integrationsmønstre
1. Første indlæsning af stamdata. Læs kontakter og varer side for side, derefter åbne indkøbsordrer og accepterede tilbud. Opret kunder i SkyPlanner med Xero ContactID som external_identifier, og produkter og materialer med varekoden som nøgle. Opret derefter det, Xero ikke indeholder: arbejdsstationer, procestrin pr. produkt, skiftehold, fravær og omstillingstider. Import fra CSV eller Excel er den hurtigste vej til at oprette procestrin.
2. Ordresynkronisering. Poll tilbud med If-Modified-Since. Når et tilbud får status ACCEPTED, opretter SkyPlanner en ordre med tilbudsnummeret som external_order_number. Værdien i delivery_date hentes fra det felt, dit værksted bruger til den lovede dato. Mappingen fastlægges under opstarten. Hver tilbudslinje bliver til opgaver ud fra produktets procestrin. Indkøbsordrelinjer bliver til indgående materiale på den forventede ankomstdato, så opgaverne venter på leveringen. En fuld læsning af åbne tilbud og indkøbsordrer hver nat fanger det, der måtte være overset.
3. Tilbageskrivning af plan og færdigmelding. Tre kald overfører resultaterne til Xero:
- PUT
/Quotes/{QuoteID}/Historytilføjer en note med den planlagte slutdato. På et accepteret tilbud kan kun kontakt og noter ændres, så datoen gemmes i historiknoten. (kilde) - Når ordren er færdig, opretter POST
/Invoicesen salgsfaktura med Type ACCREC, Status DRAFT, tilbuddets kontakt og linjer samt tilbudsnummeret som Reference. Din bogholder godkender og sender den i Xero. - POST
/Quotesmed QuoteID og Status INVOICED lukker tilbuddet. Skiftet fra Accepted til Invoiced er en gyldig statusændring i Accounting API.
4. Registreringer fra produktionen og projekttid. Operatørerne registrerer arbejde med SkyPlanner Mobile Confirmations, Production Timer eller Quick Log Mode. Fremdriften opdaterer straks planen, og Autopilot omplanlægger resten. Ved projektarbejde overfører SkyPlanner timerne som tidsregistreringer på projektopgaven med Xero-bruger, dato og varighed. (kilde)
5. Dataejerskab og konfliktregler. Skriv dem ned før idriftsættelsen:
| Data | Ejer |
|---|---|
| Kontakter, varer, priser, tilbud, indkøbsordrer, fakturaer, regnskab | Xero |
| Arbejdsstationer, procestrin, skiftehold, fravær, omstillingstidsmatrix, værktøjer, alternative ressourcer | SkyPlanner |
| Opgavernes rækkefølge, start- og sluttidspunkter, arbejdsstation pr. opgave | SkyPlanner |
| Note om planlagt slutdato på tilbuddet | SkyPlanner, skrives til Xero |
| Fakturakladde for færdige ordrer, projekttimer | SkyPlanner opretter, Xero ejer efter godkendelse |
Typiske trin i projektet
Implementeringen er normalt afsluttet inden for uger efter opstarten. Inden da kan I bruge den gratis prøveperiode på 30 dage med jeres egne data fra en CSV-eksport af kontakter, produkter og åbne tilbud fra Xero.
Selve projektet omfatter:
- Forbindelse. En Xero-administrator godkender SkyPlanner og vælger organisationen.
- Grundlag for produktion. Aftal, om accepterede tilbud eller salgsfakturaer skal sætte produktionen i gang.
- Datamapping. Fastlæg mappingtabellen, varekoderne, fakturakontiene, standardindstillingerne for moms og reglerne for dataejerskab.
- Første indlæsning. Kontakter, varer, åbne indkøbsordrer og accepterede tilbud.
- Produktionsmodel. Arbejdsstationer, procestrin for hvert produkt, skiftehold, matrix for omstillingstider, værktøjer og antal operatører i SkyPlanner.
- Synkronisering. Webhooks til kontakter og fakturaer, polling med
If-Modified-Sincefor tilbud, varer og indkøbsordrer samt afstemning hver nat. - Tilbageskrivning. Først tilbudsnoter, derefter fakturakladder og tilbudsstatus og til sidst projekttimer, hvor de bruges.
- Paralleltest og idriftsættelse. Sammenlign datoerne i SkyPlanner med jeres nuværende plan, lad bogholderen kontrollere de første fakturakladder, og slå derefter tilbageskrivning til.
Det skal I tage højde for i en Xero-integration
- Ingen produktionsobjekter i Xero. Vedligehold procestrinnene for hvert produkt i SkyPlanner med Xeros varekode som nøgle. Undgå at ændre varekoderne.
- Tilbud har ingen webhook. Hent dem med korte intervaller via polling med
If-Modified-Since, og hold jer inden for grænserne pr. minut og pr. dag. - Accepterede tilbud er låst. Efter accept kan kun kontaktoplysninger og noter ændres. Derfor læses den lovede dato én gang ved accept, mens den planlagte dato skrives som en note i historikken.
- Lageret følger salgs- og købsfakturaer. Xero ændrer lagerbeholdningen via salgsfakturaer, købsfakturaer og kreditnotaer for lagerførte varer. Aftal med bogholderen, hvordan færdigvarer og forbrugte materialer skal bogføres.
- Projekttimer kræver Xero-brugere. Tidsregistreringer er knyttet til en Xero-bruger. Beslut, hvilke operatører der skal registrere tid i Xero Projects, og behold resten i SkyPlanner.
- Granulære scopes. Anmod om granulære scopes fra starten, da brede scopes er ved at blive udfaset.
- Appens partnerniveau. Partnerniveauet bestemmer, hvor mange organisationer en app kan forbinde, og hvor mange kald den kan foretage om dagen. Vælg niveau ud fra antallet af fabrikker.
Xero-integrationen: Hvem konfigurerer og supporterer den?
Arbejdet omfatter jeres varer, tilbud og indkøbsordrer samt forløbet fra færdigt arbejde til fakturering. Det tilføjer det, Xero ikke indeholder: arbejdsstationer, procestrin, skiftehold, matrix for omstillingstider, værktøjer, antal operatører og alternative ressourcer.
- SkyPlanner-teamet konfigurerer integrationen under opstarten og yder support efter idriftsættelsen. Hvert værksted opsætter varer, tilbud og lager på sin egen måde i Xero. Den viden indgår i opsætningen.
- Jeres Xero-rådgiver eller integrationspartner kan bygge den. SkyPlanner stiller REST API, Swagger/OpenAPI-dokumentation og webhooks til rådighed.
- Jeres egne udviklere kan bygge videre på den med et API-token. Et API-token er nok til at komme i gang, og SkyPlanner-teamet hjælper efter behov. Produktdokumentationen, herunder indkøbsordrer og API’et til produkter og materialer, findes i SkyPlanner-dokumentationen.
SkyPlanner koster fra 199 € pr. måned med 5 arbejdsstationer inkluderet og månedlig fakturering. I får på forhånd et tilbud på integrationen sammen med jeres abonnement, tilpasset jeres proces og behov, så I kender den samlede pris, før I starter. Se priser, funktioner, og hvad Xero selv dækker, i Har Xero produktionsplanlægning? I finder overblikket på Xero-siden og andre systemer under alle integrationer.
Produktionsvirksomheders erfaringer med SkyPlanner
2 hsparet hver uge
“SkyPlanner har flyttet vores produktionsplanlægning fra Excel-regneark til optimering af produktionen i realtid.”
Kalle Kalliomäki, forsyningskædespecialist
UTU · Eltavler og koblingsanlæg
Produktionsplanlægningen sparer 2 timers arbejdstid hver uge, og en ny opgavekø når ud til produktionslinjen på få sekunder.
+90%produktionseffektivitet
“Effektiviteten i produktionen er steget med 90%.”
Abdul Rucyinga, IT-chef
Laboratory & Allied · Lægemiddelproduktion
Produktionseffektiviteten er steget med 90%, og det tager under 30 minutter at lave en optimeret plan for tre måneder på tværs af alle arbejdsstationer.
Færrestop på grund af materialemangel
“Værdien af SkyPlanner for os er, at det er et værktøj, der fungerer i hverdagen, især når vi skal fastlægge leveringsdatoer.”
Tommi Männistö, chef for produktionsplanlægning
Eskomatic · Maskinbearbejdning som underleverandør
Automatisk planlægning af belastningen giver mere præcise leveringsdatoer, og antallet af produktionsstop på grund af materialemangel er faldet markant.
1.000’er afarbejdsordrer planlægges automatisk
“Vi har styr på produktionen på en helt anden måde, og vores forståelse af kapaciteten er på et helt andet niveau.”
Hannu Ryynänen, administrerende direktør
Mamec · Industrielle blandere, pumper og højteknologisk kontraktproduktion
Tusindvis af arbejdsordrer planlægges automatisk, og hele organisationen har overblik over produktionen i realtid.
Ofte stillede spørgsmål
Har Xero et API til produktionsdata?
Xero har Accounting API og Projects API, som begge bruger REST med OAuth 2.0. De dækker kontakter, varer, tilbud, fakturaer, indkøbsordrer og tidsregistreringer. Produktionsdata som arbejdsstationer og procestrin ligger i SkyPlanner.
Kan SkyPlanner skrive data tilbage til Xero?
Ja. SkyPlanner tilføjer den planlagte slutdato i hvert tilbuds historik, opretter en salgsfakturakladde med tilbuddets linjer, når ordren er færdig, ændrer tilbuddets status til Invoiced og overfører projekttimer.
Sender Xero ændringer i realtid?
Xeros webhooks dækker kontakter og fakturaer. Med If-Modified-Since henter SkyPlanner tilbud, varer og indkøbsordrer, der er ændret siden sidste synkronisering, og afstemmer hver nat. Derfor kommer et nyt accepteret tilbud hurtigt med i planen.
Hvor kommer styklister, ruter og maskiner fra, når Xero ikke har dem?
Fra SkyPlanner. I opretter arbejdsstationer, procestrin for hvert produkt, skiftehold og omstillingstider én gang, enten manuelt eller via import fra CSV eller Excel. Hvert produkt knyttes til varekoden i Xero, så nye accepterede tilbud automatisk bliver planlagt.
Kan vi teste SkyPlanner, før vi bygger integrationen?
Ja. Den gratis prøveperiode på 30 dage understøtter op til 20 arbejdsstationer med CSV-import fra Xero, og der kræves intet kreditkort. Start prøveperioden, eller tal med salg for at afklare integrationens omfang.