Miten ERP-järjestelmät toimivat: Moduulit, datavirta ja taustalla oleva pääkirja
Yksi liiketapahtuma seurattuna ERP-järjestelmän läpi moduulista toiseen todellisine kirjanpitovienteineen sekä selitys sille, miksi pääkirja on totuuden lähde, johon kaikki muu perustuu.
ERP- eli toiminnanohjausjärjestelmä toimii tallentamalla jokaisen liiketoimintatapahtuman kerran yhteen tietokantaan, jolloin jokainen moduuli voi lukea ja kirjoittaa tätä yhteistä tietuetta. Lähetetty tilaus on täsmälleen sama tietue riippumatta siitä, tarkasteleeko sitä varasto, myyntitiimi vai kirjanpitäjä. Moduuli, joka pitää koko järjestelmän linjassa, on pääkirja (general ledger): jokainen rahamääräinen tapahtuma päätyy sinne tasapainotettuna kirjanpitovientinä, ja kaikki raportit muodostetaan näistä vienneistä.
Tässä artikkelissa seurataan yhtä myyntitapahtumaa moduulien läpi, esitetään sen synnyttämät kirjanpitoviennit ja selitetään, miksi ERP-integraatiossa on kyse tapahtumista ja pääkirjasta eikä niinkään käyttöliittymistä.
Yhteinen tietokanta
Ennen ERP-järjestelmiä jokainen osasto käytti omaa ohjelmaansa. Varastosaldot sijaitsivat varastojärjestelmässä, laskut laskutusohjelmassa ja kirjanpito erillisessä taloushallinnon paketissa. Kuukauden vaihde kului näiden kolmen täsmäyttämiseen. Artikkelissa Mitä ERP-ohjelmisto tarkoittaa käsitellään tuoteryhmää laajemmin. Sen toimintamekanismi perustuu yhteen ainoaan tietomalliin, jossa:
- kumppanitietuetta (partner) käyttävät sekä myynti, hankinta että pääkirjanpito,
- nimiketietue (item) sisältää varastosaldon, FIFO-kustannuserät, myyntihinnan ja myyntitilin,
- asiakirja (tilaus, lasku, hyvityslasku, ostotilaus, tuotantotilaus) viittaa kumppaneihin ja nimikkeisiin ja tuottaa täsmälleen yhden joukon kirjanpitovientejä,
- kirjanpitovienti viittaa sen synnyttäneeseen asiakirjaan, minkä ansiosta raportin jokainen luku voidaan jäljittää alkuperäiseen tapahtumaan.
Kun tiedot ovat yhteisiä, moduulien välillä ei ole mitään täsmäytettävää. Jäljelle jää ulkopuolisen maailman täsmäytys: tiliotteet ja veroilmoitukset.
Moduulikartta
| Moduuli | Kirjoittaa | Lukee |
|---|---|---|
| Myynti | Tilaukset, laskut, hyvityslaskut | Kumppanit, nimikkeet, hinnat, alv-säännöt |
| Hankinta | Ostotilaukset, ostolaskut | Kumppanit, nimikkeet, kulutilit |
| Varasto | Varastotapahtumat, FIFO-kustannuserät, inventaariot | Nimikkeet, varastot |
| Tuotanto | Tuotantotilaukset, komponenttien kulutus, valmiit tuotteet | Osaluettelot, varasto |
| Pankki | Tuodut tapahtumat, maksujen täsmäytykset | Avoimet laskut, pankkitilit |
| Palkat | Palkka-ajot, sivukulut, ilmoitukset | Työntekijät, sopimukset, verotaulukot |
| Käyttöomaisuus | Käyttöomaisuusrekisteri, poistoajot | Käyttöomaisuusryhmät, taloudelliset pitoajat |
| Verotus | Arvonlisäveroilmoitukset, EU-yhteenvetoilmoitukset, Intrastat, e-laskut | Annetut ja kirjatut asiakirjat |
| Pääkirja | Kirjanpitoviennit, kausilukot | Kaikki edellä mainitut |
| Raportointi | Ei mitään | Pääkirja ja pääkirjan apukirjanpidot |
Jokainen rivi kahta viimeistä lukuun ottamatta päättyy kirjoitukseen pääkirjaan. Tämä on suunnittelusääntö, joka erottaa ERP-järjestelmän joukosta irrallisia työkaluja.
Läpikäyty datavirta
Alla olevassa esimerkissä käytetään Nordletin rajapintoja (API) ja sen mukana toimitettavan liettualaisen tilikartan oletustilejä. Mikä tahansa ERP tekee samat vaiheet; tilikoodit ja rajapintojen nimet saattavat poiketa toisistaan.
1. Tilaus
Verkkokauppa luo tilauksen kutsulla POST /v1/ecommerce/orders/create: mukana on kumppani, nimikerivit määreineen sekä toimitusmaa. Pääkirjaan ei kirjata vielä mitään. Tilaus on sitoumus, ei liiketapahtuma.
2. Varauksen teko
Kutsu orders/reserve varaa tuotteet, jotta samaa erää ei voida myydä toistamiseen. Vieläkään ei synny kirjanpitovientiä: varatut tuotteet ovat edelleen yrityksen omaisuutta.
3. Toimitus
Kutsu orders/fulfill kirjaa tavaroiden poistumisen varastosta. Yhden tietokantatapahtuman aikana tapahtuu kaksi asiaa:
- Varasto vähennetään FIFO-kustannuksella: kunkin nimikkeen vanhimpia kustannuseriä käytetään ensin, mikä vastaa FIFO-varaston arvostus -sanastosivulla kuvattua menetelmää.
- Näiden yksiköiden hankintameno kirjataan kirjanpitovientinä: debit myytyjen suoritteiden hankintameno, kredit varasto.
| Tili | Debit | Kredit |
|---|---|---|
| 6000 Myytyjen suoritteiden hankintameno | 600,00 | |
| 2040 Varasto | 600,00 |
Toimitus luo tilaukselle myös luonnoslavun (draft invoice) ja määrittää toimitusmaan perusteella sovellettavan arvonlisäverokäsittelyn EU:n arvonlisäveromoottorin avulla.
4. Laskun lähettäminen
Laskun lähettäminen on hetki, jolloin kertaluonteisen myynnin tuotto tuloutetaan. Asiakirja saa aukottoman juoksevan numeronsa, ja järjestelmään syntyy tasapainotettu vienti: bruttosumma myyntisaamisiin, arvonlisävero myyntialv-tiliin ja nettosumma myyntitileille.
Esimerkiksi 1 000 euron nettomyynnille 21 prosentin Liettuan arvonlisäverolla:
| Tili | Debit | Kredit |
|---|---|---|
| 2410 Myyntisaamiset | 1 210,00 | |
| 5000 Tuotemyynti | 1 000,00 | |
| 4492 Suoritettava arvonlisävero | 210,00 |
Jos rivillä käytetään muuta kuin kertaluonteista tuloutustapaa, nettosumma ohjataan siirtovelkoihin ja tuloutusmoottori jaksottaa sen aikataulun mukaisesti. Saamisten ja arvonlisäveron kirjaukset eivät muutu.
Lasku voidaan nyt lähettää PDF-tiedostona, Peppol BIS 3.0 -verkkolaskuna tai yrityksen maan edellyttämässä kansallisessa verkkolaskumuodossa.
5. Pankkitäsmäytys
Kahden viikon kuluttua tilille saapuu 1 210 euroa. Suoritus saapuu PSD2-pankkiyhteyden kautta tai camt.053-tiliotetuonnilla. Pankkimoduuli pisteyttää avoimet laskut summan, viitenumeron, vastapuolen nimen ja IBAN-numeron perusteella, ja kutsu bank/transactions/match kirjaa suorituksen:
| Tili | Debit | Kredit |
|---|---|---|
| 2710 Pankkitili | 1 210,00 | |
| 2410 Myyntisaamiset | 1 210,00 |
Laskun tilaksi päivittyy maksettu, ja järjestelmä lähettää sale_invoice.paid -verkkokoukun (webhook). Maksun täsmäytys -artikkeli selittää täsmäytyslogiikkaa tarkemmin. Jos suoritus saapuu toisessa valuutassa, toteutunut kurssiero kirjataan samassa vaiheessa tuotto- tai kulutilille.
6. Arvonlisäveroilmoitus
Kuukauden vaihteessa tietoja ei näppäillä uudelleen. Arvonlisäveroilmoitus lasketaan suoraan annetuista ja kirjatuista asiakirjoista: declarations/eu/vat-return/compute kansallista ilmoitusta varten (Liettuassa FR0600) ja declarations/eu/oss/compute yhteisön sisäisen unionin järjestelmän mukaiselle kuluttajamyynnille. Edellä kuvattu myynti ohjautuu kotimaisen ilmoituksen verollisten myyntien kohtaan, koska sen verokoodina on domestic.
7. Kausilukko
Kun ilmoitus on annettu, kutsu ledger/periods/lock sulkee kuukauden. Tämän jälkeen kaikki kyseiselle kaudelle päivätetyt kirjaukset, mukaan lukien myöhäinen pankkitäsmäytys tai uudelleen yritetty rajapintakutsu, hylätään HTTP 409 -virheellä. Lukitus käynnistää myös kauden loppuun mennessä erääntyvän siirtotulojen tuloutuksen, jotta kuukautta ei voida sulkea siten, että ansaittua tuloa on vielä velkatilillä.
Miksi pääkirja on totuuden lähde
Jokainen edellä mainittu moduuli ylläpitää apukirjanpitoa (subledger): myyntisaamisia asiakastoimittajittain, ostovelkoja toimittajittain, varastoa nimikkeettä ja käyttöomaisuutta omaisuuserittäin. Pääkirja sisältää kokonaissummat, joiden on täsmättävä näiden apukirjanpitojen kanssa. Artikkelissa Apukirjanpito vs. pääkirja käsitellään näiden suhdetta. Käytännön tasolla tämä tarkoittaa sitä, että pääkirjasta ja apukirjanpidosta muodostettujen raporttien on annettava sama luku, ja ERP varmistaa tämän tuottamalla molemmat samoista kirjanpitovienneistä.
Pääkirjan luotettavuus kirjanpidon tietolähteenä perustuu kolmeen ominaisuuteen:
- Tasapainopakko. Nordletin tietokanta hylkää viennit, joiden debit- ja kredit-puolet eivät täsmää. Moduulin virhe ei voi luoda epätasapainoista kirjausta.
- Historia on vain lisättävissä (append-only). Kirjattua vientiä ei koskaan muokata jälkikäteen. Virhe korjataan oikaisukirjauksella ja uudella viennillä, jotka molemmat linkitetään alkuperäiseen tapahtumaan. Muuttumaton pääkirja -artikkeli selittää, miksi tilintarkastajat vaativat tätä.
- Kaudet suljetaan. Lukittua kuukautta ei voi muuttaa, joten viranomaisille ilmoitetut luvut säyvät järjestelmässä muuttumattomina.
Integraatio: tapahtumat ja idempotenttisuus yön yli -ajojen sijaan
Vanhemmat ERP-integraatiot perustuivat yöllä vaihdettuihin tiedostoihin: tilausten vientiin, tuontiin ja virhelokien tarkistamiseen aamulla. Nykyaikaiset toiminnanohjausjärjestelmät tarjoavat rajapinnan (API), jolloin integraatio rakentuu kahden periaatteen varaan:
Tapahtumat ulospäin. Kun jokin muuttuu, ERP ilmoittaa siitä. Nordlet kirjoittaa jokaisen verkkokoukkutapahtuman (webhook) tapahtumajonoon (outbox) samassa tietokantatapahtumassa muutoksen kanssa, minkä ansiosta peruutettu asiakirja ei koskaan lähetä ilmoitusta eikä mikään tapahtuma katoa. Toimitukset allekirjoitetaan HMAC-SHA256-tiivisteellä, ja epäonnistuneet toimitukset yritetään uudelleen eksponentiaalisella viiveellä. Järjestelmäsi reagoi tapahtumaan `sale_invoice.paid sen sijaan, että se kyselisi viiden minuutin välein, onko jokin lasku maksettu.
Turvalliset uudelleenyritykset sisäänpäin. Verkot katkeavat, eikä uudelleen lähetetty pyyntö saa luoda toista laskua. Nordlet hyväksyy Idempotency-Key -otsikon (header) jokaisessa tilaa muuttavassa kutsussa: sama avain samalla sisällöllä palauttaa tallennetun vastauksen, sama avain eri sisällöllä hylätään, ja avaimet vanhenevat 24 tunnin kuluttua. Idempotenttisuus -sanastosivu ja rajapintaopas kuvaavat tarkkaa toimintaa.
Koska jokainen toiminto on muotoa POST /v1/{module}/{resource}/{action} ja sovellus käyttää samoja rajapintoja, integraatio voi suorittaa koko edellä kuvatun prosessin ilman, että kenenkään tarvitsee avata käyttöliittymää. Artikkelissa Pilvialan taloushallinnon rajapinnan integrointi SaaS-alustaan käydään läpi tällaisen toteutus.
Mitä raportointi lukee
Raportit eivät tallenna lukuja. Ne ovat kyselyitä pääkirjaan ja apukirjanpitoihin tiettynä ajankohtana:
- Tase, tuloslaskelma ja kassavirtalaskelma lukevat kirjanpitoviennit tileittäin ja kausittain.
- Myyntisaamisten ikärakenne lukee avoimet saatavat ja ostotvelat eräpäivän mukaan.
- Varastosaldo ja -liikkeet lukevat varaston apukirjanpitoa ja sen FIFO-eriä.
- Arvonlisäveron yhteenveto lukee annettujen ja kirjattujen asiakirjojen alv-rivejä.
- Kustannuspaikkaraportit lukevat kunkin kirjanpitorivin kustannuspaikkadimension.
Nordletissa raportti luodaan tausta-ajona XLSX-, PDF- tai JSON-muodossa, ja tiedoston valmistumisesta lähtetetään verkkokoukku. Konserniluvut saadaan konsolidoinnista, jossa yhdistetään useiden yhtiöiden pääkirjat omistusosuuksien painotuksella ja valuuttamuunnoksilla.
Mihin tämä kaatuu käytännössä
Suurimmat ERP-ongelmat johtuvat yhteisen tietueen periaatteen laiminlyönnistä eivätkä ohjelmistoista itsestään. Tyypillisiä tilanteita:
- Rinnakkainen taulukkolaskenta asioille, joita ERP "ei osaa", minkä seurauksena luvut eivät enää täsmää kirjanpidon kanssa.
- Manuaaliset kirjanpitoviennit, joilla korjataan moduulin tuotosta sen sijaan, että korjattaisiin itse asiakirjaa, mikä katkaisee ketjun raportista alkuperäiseen tapahtumaan.
- Integraatiot, jotka kirjaavat saldoja asiakirjojen sijaan, jolloin pääkirjassa on summia, joita kukaan ei osaa selittää.
- Avoimet kaudet, joita pidetään lukitsemattomina kuukausia, jolloin viime neljänneksen viralliset luvut alkavat elää.
Artikkelissa Miksi ERP-käyttöönotot epäonnistuvat käsitellään näiden toimintatapojen syntymistä käyttöönoton aikana, ja Realistiset ERP-käyttöönoton aikataulut osoittaa, missä vaiheessa projektia ongelmat yleensä ilmenevät.
FAQ
Mikä on ERP-järjestelmän ydin?
Pääkirjanpito ja sitä ympäröivä yhteinen tietomalli. Jokainen moduuli kirjoittaa asiakirjoja, jotka synnyttävät tasapainotettuja kirjanpitovientejä, ja jokainen raportti johdetaan näistä vienneistä.
Miten data virtaa ERP-järjestelmän läpi?
Tapahtuma kirjataan kerran asiakirjana (tilaus, lasku, varastotapahtuma, palkka-ajo). Asiakirja tuottaa kirjanpitoviennit pääkirjaan ja tapahtumat vastaavaan apukirjanpitoon. Raportit ja veroilmoitukset lasketaan suoraan näistä tietueista. Mitään tietoja ei kopioida moduulien välillä.
Mitä eroa on moduulilla ja integraatiolla?
Moduuli kirjoittaa samaan tietokantaan ja samaan pääkirjaan kuin muu järjestelmä. Integraatio on ulkoinen ohjelma, joka kutsuu ERP-järjestelmän rajapintaa. API-lähtöisessä ERP:ssä ero on pieni, koska integraatio käyttää samoja päätepisteitä kuin omat moduulit.
Kirjaako ERP kirjanpitoviennit automaattisesti?
Kyllä. Laskun lähettäminen, tilauksen toimittaminen, maksun täsmäytys, palkanlaskenta ja käyttöomaisuuden poistot synnyttävät kukin omat kirjanpitovientinsä ilman, että kenenkään tarvitsee muodostaa debit- ja kredit-kirjauksia käsin. Käytettävät tilit määräytyvät yrityskohtaisesti säädettävien kirjaussääntöjen mukaan.
Miksi ERP-järjestelmät lukitsevat kirjanpitokaudet?
Jotta kaudelta ilmoitettuja tai raportoituja lukuja ei voi muuttaa jälkikäteen. Lukittu kausi hylkää uudet kirjaukset, mikä suojaa tilintarkastusketjua ja pakottaa tekemään korjaukset nykyiselle kaudelle, jossa ne ovat näkyvissä.