Hogyan működnek az ERP-rendszerek: modulok, adatáramlás és a háttérben meghúzódó főkönyv
Egyetlen tranzakció végigkövetése az ERP minden modulján, a konkrét könyvelési tételekkel, valamint annak magyarázata, hogy miért a főkönyv az a forrás, amelyből minden egyéb olvas.
Egy ERP-rendszer úgy működik, hogy minden üzleti eseményt egyszer rögzít egyetlen adatbázisban, és hagyja, hogy az egyes modulok olvassák és írják ezt a megosztott rekordot. Egy kiszállított megrendelés ugyanaz a rekord, függetlenül attól, hogy a raktár, az értékesítési csapat vagy a könyvelő nézi. Az a modul, amely az egész rendszert hitelesen tartja, a főkönyv: minden pénzértékkel bíró esemény egyensúlyban lévő könyvelési tételként végződik benne, és minden riport ezekből a tételekből származik.
Ez a cikk végigkövet egy eladást a modulokon keresztül, bemutatja az általa generált könyvelési tételeket, és elmagyarázza, hogy az ERP-vel való integráció miért az eseményekről és a főkönyvről szól a képernyők helyett.
A közös adatbázis
Az ERP megjelenése előtt minden departament a saját programját futtatta. A készlet egy raktárkezelő rendszerben, a számlák egy számlázóban, a könyvelés pedig egy könyvelőprogramban élt. A hónap vége a hármas egyeztetésével telt. Mi az az ERP szoftver? bemutatja a kategóriát; az a mechanizmus, ami működőképessé teszi, egyetlen adatmodell, amelyben:
- egy partner rekordot használ az értékesítés, a beszerzés és a főkönyv egyaránt,
- egy cikk rekord tartalmazza a készletmennyiséget, a FIFO-költségrétegeket, az eladási árat és az árbevételi számlát,
- egy bizonylat (megrendelés, számla, helyesbítő számla, beszerzés, gyártási rendelés) hivatkozik partnerekre és cikkekre, és pontosan egy könyvelési tételcsoportot hoz létre,
- egy könyvelési tétel hivatkozik az azt létrehozó bizonylatra, így a riportban szereplő minden szám visszavezethető.
Ha a rekordok közösek, nincs mit egyeztetni a modulok között. Ami egyeztetésre marad, az a külvilág: a bankkivonatok és az adóbevallások.
A modulok térképe
| Modul | Ír | Olvas |
|---|---|---|
| Értékesítés | Megrendelések, számlák, helyesbítő számlák | Partnerek, cikkek, árak, áfaszabályok |
| Beszerzés | Beszerzési megrendelések, szállítói számlák | Partnerek, cikkek, költségszámlák |
| Készlet | Készletmozgások, FIFO-költségrétegek, leltárak | Cikkek, raktárak |
| Gyártás | Gyártási rendelések, anyagfelhasználás, késztermékek | Anyagjegyzékek, készlet |
| Bank | Importált tranzakciók, fizetési párosítások | Nyitott számlák, bankszámlák |
| Bérszámfejtés | Bérszámfejtési futtatások, járulékok, bevallások | Alkalmazottak, szerződések, adótáblák |
| Eszközök | Tárgyi eszköz nyilvántartás, értékcsökkenési futtatások | Eszközcsoportok, hasznos élettartamok |
| Adó | Áfabevallások, összesítő jelentések, Intrastat, e-számlák | Kiállított és rögzített bizonylatok |
| Főkönyv | Könyvelési tételek, időszakzárolások | Minden fenti |
| Riportolás | Semmit | A főkönyv és az analitikák |
Az utolsó kettő kivételével minden sor a főkönyvbe történő írással végződik. Ez az a tervezési szabály, amely megkülönbözteti az ERP-t a összekapcsolt eszközök halmazától.
Egy működő adatfolyam
Az alábbi példa a Nordlet végpontjait és a mellékelt litván számlatükör alapértelmezett számláit használja. Bármely ERP ugyanazokat a lépéseket hajtja végre; a számlakódok és a végpontok nevei eltérnek.
1. Megrendelés
Egy webshop megrendelést ad le a POST /v1/ecommerce/orders/create címen: egy partner, tételek cikkekkel és mennyiségekkel, valamint egy szállítási ország. Még semmi sem könyvelődik a főkönyvbe. A megrendelés elköteleződés, nem pedig tranzakció.
2. Készletfoglalás
Az orders/reserve félreteszi a mennyiségeket, így egy második megrendelés nem tudja eladni ugyanazokat az egységeket. Még mindig nincs könyvelési tétel: a lefoglalt készlet továbbra is a tulajdonunkban van.
3. Teljesítés
Az orders/fulfill rögzíti a raktárat elhagyó árut. Két dolog történik egyetlen adatbázis-tranzakcióban:
- A készlet felhasználása FIFO-költségen történik: az egyes cikkek legrégebbi költségrétegeit használják fel először, ami a FIFO készletértékelés szószedetben leírt módszer.
- Ezen egységek költsége könyvelési tételként kerül bejegyzésre: tartozik az eladott áruk beszerzési értéke, követel a készlet.
| Számla | Tartozik | Követel |
|---|---|---|
| 6000 Eladott áruk beszerzési értéke | 600,00 | |
| 2040 Készlet | 600,00 |
A teljesítés létrehoz egy tervezet számlát is a megrendeléshez, és meghatározza az áfakezelést a szállítási ország alapján az EU áfa motor használatával.
4. Számlakibocsátás
A számla kibocsátása az a pillanat, amikor az árbevétel elszámolásra kerül egy adott időponthoz kötött értékesítés esetén. A bizonylat megkapja a hézagmentes sorszámát, és egy egyensúlyban lévő tétel könyvelődik: a bruttó összeg a követelésekbe, az áfa a fizetendő áfa számlára, a nettó pedig az árbevételbe.
Egy 1 000 eurós nettó eladás esetén 21%-os litván áfával:
| Számla | Tartozik | Követel |
|---|---|---|
| 2410 Vevők követelései | 1 210,00 | |
| 5000 Áruk értékesítésének árbevétele | 1 000,00 | |
| 4492 Fizetendő áfa | 210,00 |
Ha egy tétel az időponthoz kötöttnél eltérő elszámolási móddal rendelkezik, a nettó összeg a halasztott bevételek közé kerül, és az árbevétel-elismerési motor ütemezetten oldja fel. A követelések és az áfa könyvelése nem változik.
A számla mostantól elküldhető PDF-ben, Peppol BIS 3.0 e-számlaként vagy a vállalat országának megfelelő nemzeti e-számlázási formátumban.
5. Banki egyeztetés
Két héttel később megérkezik 1 210 euró. A mozgás PSD2 banki hírcsatornán vagy camt.053 kivonat importon keresztül érkezik. A banki modul összeget, közleményt, partnernevet és IBAN-számot alapján pontozza a jelölt számlákat, és a bank/transactions/match bekönyveli a kiegyenlítést:
| Számla | Tartozik | Követel |
|---|---|---|
| 2710 Bank | 1 210,00 | |
| 2410 Vevők követelései | 1 210,00 |
A számla állapota fizetettre változik, és a rendszer kibocsát egy sale_invoice.paid webhookot. A fizetési egyeztetés bejegyzés részletesebben elmagyarázza az illesztési logikát. Egy másik pénznemben történő fizetés ugyanebben a lépésben bekönyveri a realizált árfolyamkülönbözetet a nyereség vagy veszteség számlára.
6. Áfabevallás
A hónap végén semmit sem kell újra beírni. Az áfabevallást a kiállított és rögzített bizonylatok alapján kell kiszámítani: a declarations/eu/vat-return/compute a belföldi bevalláshoz (Litvániában FR0600), a declarations/eu/oss/compute pedig az Unió szerinti szabályzat hatálya alá tartozó határokon átnyúló fogyasztói értékesítésekhez. A fenti eladás a belföldi bevallás normál kulcsú sorába kerül, mivel az áfakulcsa domestic.
7. Időszak zárolása
A bevallás benyújtása után a ledger/periods/lock lezárja a hónapot. Ezt követően az erre a dátumra eső könyveléseket, beleértve a késői banki egyeztetést vagy az újrapróbált API-hívást, a rendszer HTTP 409-ces hibával elutasítja. A zárolás elindítja az időszak végéig esedékes halasztott bevételek elszámolását is, így a hónap nem zárható le úgy, hogy a passzívák között maradt megszerzett bevétel.
Miért a főkönyv a nyilvántartási rendszer?
A fenti modulok mindegyike fenntart egy analitikát: vevők szerint a követeléseket, szállítók szerint a kötelezettségeket, cikkenként a készletet, eszközönként az eszközöket. A főkönyv tartalmazza azokat a végösszegeket, amelyekkel ezeknek az analitikáknak egyezniük kell. Az analitika és főkönyv kapcsolata ismerteti a viszonyt; a gyakorlati szempont az, hogy a főkönyvből és az analitikából készült riportnak ugyanazt a számot kell adnia, és egy ERP ezt úgy garantálja, hogy mindkettőt ugyanazokból a könyvelési tételekből állítja elő.
Három tulajdonság teszi a főkönyvet hiteles nyilvántartássá:
- Az egyensúly kényszerített. A Nordletben az adatbázis visszautasítja az olyan tételeket, amelyek tartozik oldala nem egyezik meg a követel oldalával. Egy modulban lévő hiba nem hoz létre féloldalas könyvelést.
- A előzmények csak hozzáfűzhetőek (append-only). A lekönyvelt tételt soha nem szerkesztik. A hibát sztornóval és új tétellel javítják, mindkettő az eredetihez kapcsolódik. Az inkromuptibilis (módosíthatatlan) főkönyv bejegyzés elmagyarázza, hogy a könyvvizsgálatok miért ragaszkodnak ehhez.
- Az időszakok lezáródnak. Egy lezárt hónap nem változhat, így a beadott számok maradnak a rendszerben.
Integráció: események és idempotencia, nem pedig éjszakai kötegelt futtatások
A régebbi ERP-integrációk éjszaka cserélt fájlokon alapultak: exportáld a megrendeléseket, importáld őket, nézd meg a hibanaplót reggel. A modern ERP-k API-t biztosítanak, és az integráció két elv betartásává válik.
Kimenő események. Ha valami megváltozik, az ERP értesíti Önt. A Nordlet minden webhook eseményt beír egy üzenetsorba (outbox) ugyanabban az adatbázis-tranzakcióban, mint a változást, így a visszagörgetett bizonylat soha nem bocsát ki eseményt, és egyetlen esemény sem vész el. A kézbesítéseket HMAC-SHA256 aláírással látják el, és exponenciális várakozással próbálják újra. Az Ön rendszere a sale_invoice.paid eseményre reagál ahelyett, hogy öpercenként kérdezné, hogy bármit kifizettek-e.
Biztonságos bemenő újrapróbálások. A hálózatok megszakadhatnak, és egy újrapróbált kérés nem hozhat létre második számlát. A Nordlet minden módosító híváson elfogad egy Idempotency-Key fejlécet: ugyanaz a kulcs ugyanazzal a tartalommal a tárolt választ adja vissza, ugyanaz a kulcs eltérő tartalommal elutasításra kerül, és a kulcsok 24 óra elteltével lejárnak. Az idempotencia szószedet és az API konvenciók leírják a pontos viselkedést.
Mivel minden művelet egy POST /v1/{module}/{resource}/{action hívás, és az alkalmazás ugyanazokat a végpontokat használja, az integráció le tudja futtatni a fenti teljes folyamatot anélkül, hogy bárki megnyitna egy képernyőt. Hogyan integtráljunk felhőalapú könyvelési API-t egy SaaS platformba végigvezeti egy ilyen fejlesztést.
Mit olvas a riportolás?
A riportok nem tárolnak számokat. Ezek lekérdezések a főkönyvből és az analitikákból egy adott időpontban:
- Főkönyvi kivonat, mérleg, eredménykimutatás, cash flow könyvelési tételeket olvasnak számla és időszak szerint.
- Lejárati statisztika (debt aging) nyitott vevőket és szállítókat olvas esedékesség szerint.
- Készletegyenleg és -mozgás a készletanalitikát és annak FIFO-rétegeit olvassa.
- Áfa-összesítő a kiállított és rögzített bizonylatok áfasorait olvassa.
- Költséghely-riportok az egyes könyvelési sorokon lévő költséghely-dimenziót olvassák.
A Nordletben a riport a háttérben generálódik XLSX, PDF vagy JSON formátumban, és egy webhook fut le, amikor a fájl elkészült. A konszolidált számok a konszolidációból származnak, amely több vállalat főkönyvét egyesíti tulajdoni hányaddal súlyozva és valutakonverzióval.
Ahol ez a gyakorlatban eltörik
A legtöbb ERP-probléma a közös rekord elvének megsértéséből fakad, nem pedig a szoftverből. Gyakori esetek:
- Párhuzamos táblázat valami olyasmire, amit az ERP „nem tud”, ami aztán eltér a könyvektől.
- Kézi könyvelési tételek a modul kimenetének javítására a bizonylat helyesbítése helyett, ami megszakítja a jelentéstől a forrásig vezető nyomvonalat.
- Egyenlegeket író integrációk bizonylatok helyett, így a főkönyvben olyan végösszegek szerepelnek, amelyeket senki sem tud megmagyarázni.
- Nyitva hagyott időszakok, amelyeket hónapokig nem zárnak le, így az előző negyedév benyújtott adatai elcsúsznak.
Miért buknak el az ERP-bevezetések bemutatja, hogyan alakulnak ki ezek a szokások a bevezetés során, és a reális ERP-bevezetési ütemtervek mutatják meg, hogy a projekt mely pontján szoktak előfordulni.
FAQ
Mi az alapja egy ERP-rendszernek?
A főkönyv és a köré épülő közös adatmodell. Minden modul olyan bizonylatokat ír, amelyek egyensúlyban lévő könyvelési tételeket hoznak létre, és minden riport ezekből a tételekből származik.
Hogyan áramlanak az adatok egy ERP-n keresztül?
Az eseményeket egyszer bizonylatként rögzítik (megrendelés, számla, mozgás, bérszámfejtés). A bizonylat könyvelési tételeket hoz létre a főkönyvben és mozgásokat a vonatkozó analitikában. A riportok és áfabevallások ezekből a rekordokból kerülnek kiszámításra. Semmit sem másolnak át a modulok között.
Mi a különbség a modul és az integráció között?
Egy modul ugyanabba az adatbázisba és ugyanabba a főkönyvbe ír, mint a rendszer többi része. Az integráció egy külső program, amely meghívja az ERP API-ját. Egy API-első ERP esetében a különbség kicsi, mivel az integráció ugyanazokat a végpontokat használja, mint a modulok.
Könyvel az ERP automatikusan gazdasági eseményeket?
Igen. Számla kibocsátása, megrendelés teljesítése, fizetés egyeztetése, bérszámfejtés futtatása vagy tárgyi eszköz értékcsökkenésének elszámolása mind könyvelési tételt hoz létre anélkül, hogy valakinek tartozik-követel párokat kellene összeállítania. A felhasznált számlák vállalatonként módosítható könyvelési szabályokból származnak.
Miért zárolják az ERP-k a könyvelési időszakokat?
Azért, hogy az adott időszakra vonatkozóan jelentett vagy benyújtott adatok utólag ne változhassanak meg. A zárolt időszak elutasítja az új könyveléseket, ami védi a audit nyomvonalat (audit trail), és a helyesbítéseket az aktuális időszakba kényszeríti, ahol láthatóvá válnak.