Članki

Prilagodljiv organizacijski informacijski sistem

Matjaž Mozetič, ©2011-2012 MATMOZ d.o.o., Vse pravice pridržane

Zgradimo si lasten informacijski sistem

Informacijski sistemi prevzemajo vedno vidnejšo vlogo v borbi za konkurenčno prednost. Iz orodij, ki so sprva služila predvsem za izvajanje ponavljajočih se nalog, kot so obdelava obrazcev ter v obliki poročil izdajanje dokumentov (računov, dobavnic, razglasov, vabil, …) postajajo orodje za usmerjanje in vzdrževanje internih standardov in procedur pri vsakodnevnih dejavnostih organizacije. Stara kmečka modrost nam pravi, da si orodja, ki ga potrebujemo vsak dan, ne izposojamo. OpenERP je najpopularnejši in najbolj splošno razširjen odprtokodni ERP (Enterprise Resource Planning – planiranje poslovnih virov; informacijski sistem ki integrira notranje in zunanje informacije v sklopu celotne organizacije in zajema finančno računovodske aktivnosti, proizvodnjo, CRM, materialno knjigovodstvo, vodenje projektov, … ), CRM (Customer Relationship Management – upravljanje odnosov s strankami) in DMS (Document Management System – sistem upravljanja dokumentov; informacijski sistem za hranjenje in sledljivost tako elektronske kot papirne dokumentacije v skenirani obliki). Uporablja ločeno server in client komponento, kot alternativa ali dopolnilo se lahko uporablja tudi web-client komponenta, ki omogoča dostop do baze preko kateregakoli internetnega brskalnika. Izdan je pod licenco AGPL. Arhitektura je triplastna: podatkovna baza, strežnik in klient. Podatkovna baza je PostgreSQL, plast strežnika je sestavljena v Python. Poslovna funkcionalnost je organizirana v “module” (t.j. mapa s prednastavljeno strukturo ki vsebuje Python kodo in XML datoteke). Modul definira strukturo podatkov, obrazce, poročila, uporabniške menije, procedure, delovni proces itd.

Kaj je OpenERP

Svojo popularnost OpenERP dolguje predvsem inovativni strukturi, ki sistemu omogoča dokajšnjo enostavnost, ekonomičnost in prilagodljivost. Odprta koda pomeni, da ni stroškov licence, stranka ima polno razpoložljivost produkta in ni vezana na določenega dobavitelja za podporo in vzdrževanje. Večjezičnost je predvidena, možni so jeziki po izbiri uporabnika (idealno za podjetja z večjezičnimi zaposlenimi in/ali partnerji). Integriran sistem za prevajanje olajša prevajanje izrazov tako v bazi podatkov kakor tudi samih izrazov ERP. Python, enostaven in vsestransko prilagodljiv programski jezik, omogoča enostavno prilagajanje in spreminjanje in predstavlja pomembno prednost v primerjavi z ostalimi ERP, ki uporabljajo kompleksnejše programske jezike (npr. jedro OpenERP je sestavljeno iz 25000 vrstic kode, primerljivi ERP osnovani v java okolju so sestavljeni iz več kot 100000 vrstic). Sistem je popolnoma modularen. Sestavljen je iz delov (python + XML), ki se dodajajo sistemu preko uporabniku prijaznega grafičnega vmesnika, kar dejansko omogoča rast ERP sistema vzporedno z rastjo poslovnega sistema, ki ga uporablja. „Base“ oz. minimalna namestitev zajema tako le vodenje kontaktov in partnerjev, z dodajanjem modulov (in dodajanje pomeni le nekaj klikov pri izbiri modulov, ki jih želimo dodati) pa jo lahko razširimo na druge funkcionalnosti kot npr. CRM, DMS, MRP (Manufacturing Resource Planning – planiranje proizvodnih virov; zajema poti virov znotraj sestavljenih proizvodnih procesov, sestavnice – BOM – bill of materials, dvosmerna sledljivost po šaržah in serijskih številkah, ipd.), HR (Human Resources – „človeški viri“ oz. delovna sila; modul za vodenje kadrovskih dejavnosti, lahko integriran skupaj z računovodstvom – plačilne liste), Stock (skladišče; materialno knjigovodstvo) ipd. po naših potrebah in/ali željah. Kot baza podatkov se uporablja PostgreSQL, vodilna odprtokodna baza podatkov s podobnimi zmogljivostmi, kot komercialne baze (npr. SQL, Oracle, …).

Ilustracija 1: Primer prijavnega zaslona. Na levi web client prijava z uporabo internetnega brskalnika, na desni client prijava

Objektno relacijsko mapiranje

Jedro strukture OpenERP je uporaba „Object Relational Mapping“ (ORM), kjer OpenERP uporablja objektno programiranje v odnosu do PostgreSQL, ki je klasična relacijska podatkovna baza; torej implementira samodejno mapiranje med OpenERP objekti in tabelami podatkovne baze, kar nam pri implementaciji omogoča delo z aplikacijo ne da bi se obremenjevali oziroma izgubljali čas s strukturo in relacijami podatkovne baze. V OpenERP se opisuje in manipulira podatkovni model s Python razredi (Python classes) in objekti. Naloga ORM je premostitev razlik med Python in relacijsko podatkovno bazo (PostgreSQL) na za razvijalca čimbolj transparenten način ter nam s tem omogoči obstojnost objektov kakršno potrebujemo. OpenERP je sposoben samodejno mapirati objekte in poglede (obrazce za vnos podatkov, ki jih uporabnik vidi) in omogoča enostavno dodajanje ali spreminjanje le-teh. Poglede generiramo lahko samodejno (nekakšen „čarovnik“ za generiranje in nastavljanje pogledov) ali pa definiramo z nastavitveno datoteko v XML (Extensible Markup Language- razširljiv označevalni jezik). Informacija o tem, kateri pogled je pridružen kateremu podatku, je shranjena v podatkovno bazo. Prikaz podatkov uporabniku je nastavljiv po želji. Komunikacija med klient in server komponento poteka preko protokolov XML-RPC, XML-RPC-secure ali NET-RPC. Web client komunicira preko protokolov HTTP ali HTTPS.

Od prvega namiga, sklenitve posla do primopredaje in izdanega računa

Ker je poudarek na modularnosti in so področja, ki jih OpenERP pokriva subjektivna in odvisna od potreb uporabnika ter pravzaprav niso omejena (informacijski sistem, ki raste in se razvija skupaj s poslovnim sistemom), se bom v članku osredotočil predvsem na najpogosteje uporabljene funkcije (ki pa niso nujno prisotne v vaši konfiguraciji, v kolikor jih ne želite oziroma ne potrebujete).

Ilustracija 2: Začetni zaslon po vstopu – web client

V OpenERP obstaja razlika med terminom Partner in terminom Kontakt. Partner je entiteta s katero poslujemo – stranka, dobavitelj, fizična oseba, eden izmed zaposlenih v našem podjetju. Kontakt je oseba, ki dela za partnerja. Vsak partner ima lahko neomejeno število kontaktov. Kontakti imajo lahko isti ali različen „tip naslova“, kar nam omogoča nastavitev različnih tipov dokumentov naslovljenih na različne „tipe naslovov“ oziroma na različne kontakte. Klasični primeri: naslov(i) družbe, naslov(i) za dostavo, naslov za izdajo računa, ipd. Tako se račun izda na tip naslovna „račun“, prevozni list na tip naslova „dostava“ ipd. Koncept partnerja je fleksibilnejši kot pri večini tovrstnih aplikacij, saj je lahko partner istočasno dobavitelj in kupec, in vsi vnosi ki se na tega partnerja nanašajo zajemajo tako rubriko kupcev kakor tudi rubriko dobaviteljev. Tako se izognemo večkratnim vnosom podatkov, ki so pri nekaterih tovrstnih aplikacijah potrebni. Partnerji se lahko tudi kategorizirajo, vsak partner pa je lahko v več kategorijah hkrati (zelo uporabno pri iskanju, filtrih, množičnih sporočanjih…).

Ilustracija 3: Primer zaslona “stranke in kontakti”

„Namig“ predstavlja potencialno stranko, s katero še nismo vzpostavili poslovnega odnosa, a navadno vsebuje informacije pomembne za prihodnje sklenjene posle. Kot namig lahko razumemo razna generična povpraševanja, vizitke potencialnih strank, baze podatkov potencialnih kupcev za določena območja ali sektorje ipd. Ti namigi se kasneje lahko spremenijo (z enostavnim miškinim klikom) v „priložnosti“ ali celo v stranke (posel sklenjen). Seveda se lahko podjetje odloči, da ne bo sledilo namigom (saj za nekatere to predstavlja le dodaten korak) in začnejo sledenje kar od „priložnosti“. Možni so tudi različni pristopi, poudariti želim le, da opcij ne manjka. Prodajni referenti so že vajeni dela s standardnimi e-mail klienti, zato OpenERP dopušča integracijo tega obstoječega znanja z uporabo OpenERP. Lahko ga povežemo z Outlook ali Thunderbird (t.i. vtičniki; plugins), da se omogoči ustvarjanje in/ali odpiranje kontaktov direktno preko e-mail klienta. Sporočila s prilogami lahko celo povežemo z OpenERP, da preprečimo morebitno izgubo podatkov. Oba vtičnika dovoljujeta tudi ustvarjanje „namigov“ osnovanih na izmenjanih sporočilih s stranko. Funkcija e-mail gateway omogoča uporabo OpenERP CRM brez uporabe OpenERP uporabniškega vmesnika. Seveda lahko OpenERP koledar in stike povežemo (sinhroniziramo) tudi s svojim mobilnikom (Android, iPhone).

Ilustracija 4: Začetni zaslon OpenERP klient

O samih funkcijah pravzaprav ni možno razpravljati, ker ne predstavljajo „končnega števila“. Že v osnovnih, javno dostopnih, programskih skladiščih je prisotnih več tisoč že obstoječih modulov (in vsak dodatno razširi obstoječe funkcije sistema), poleg tega pa so tu še nešteta skladišča skupnosti razvijalcev in uporabnikov. Glede CRM tako lahko razširimo funkcionalnost na geolokalizacijo partnerjev, avtomatizirano prodajo in ustvarjanje prodajnih priložnosti, polno sledljivost naročil, razne prodajne in nabavne analize, marketinške kampanje … Sistem pokriva knjigovodstvo in računovodstvo; računi in plačila, osnutek računa – proforma račun, sledenje plačilom (prejetim in izdanim), računovodski sistem na osnovi uradnih kontnih planov, analitičnih kontnih planov (po želji uprave), finančne analize in poročila, davki in prispevki, računovodski dnevniki, nastavljiva računovodska obdobja (letno, mesečno, trimester, quadrimester, …). Analitični kontni plani omogočajo dejansko operativno vodenje, saj lahko konte ustvarimo (in ti so popolnoma neodvisni od fiskalnega dela, služijo za pregled poslovanja s stališča uprave namesto računovodskega, potekajo vzporedno brez potrebe dvojnega knjiženja) glede na gradbišče, poslovne enote, oddelke, projekte, praktično kakor koli želimo. Vodenje človeških virov pokriva vse kadrovsko operativne segmente, od sledenja prisotnosti, delovnega časa, pogodb zaposlenih (stalno ali nestalno), plačilnih list, kadrovanja in razgovorov, blagajniških izdatkov, potnih nalogov, dopustov ….. Projektno vodenje vključuje vse, kar pod tem pojmom pričakujemo, a je hkrati integrirano z ostalimi segmenti (skladišče, delovna sila, analitični konti, geolokacija, …). Pod vodenjem skladišča najdemo popolno materialno knjigovodstvo z operativnimi dodatki, serijske številke artiklov, posameznih proizvodov, polizdelkov, šarž, generiranje šarž, … Prav tako upravlja z nabavo in dobavo, načini dobave in dostave, dostavne službe… Vse skupaj je lahko nadgrajeno z uporabo črtnih kod, ki so lahko večstopenjske (koda proizvajalca, koda dobavitelja, naša koda, …). Sledljivost je dvosmerna (od surovine do končnega izdelka in obratno, oziroma od proizvajalca do končnega kupca in obratno). Vodenje proizvodnih procesov integrira vse zmogljivosti materialnega in operativnega knjigovodstva ter preko proizvodnih listov (oz. sestavnic) omogoča avtomatizacijo „proizvodne birokracije“ vključno z upravljanjem zalog surovin, ki se pri proizvodnem procesu porabljajo, ter zalog polizdelkov in izdelkov kot rezultat teh procesov.

Najpogostejši profili uporabe

DMS (Document Management System – upravljanje dokumentov)

Za centralno shranjevanje dokumentov sistem poskrbi za avtentifikacijo uporabnikov, indeksacijo naloženih dokumentov, ter zaslon za sledenje statistik (novo naložene datoteke, graf razvrstitev datotek po tipu, partnerju, mesečni graf…). Dostop do dokumentov je možen tudi (poleg OpenERP uporabniškega vmesnika) preko protokolov FTP, WebDAV ali SFTP. Ta modul postavi tudi ogrodje za interno Wikipedijo, da lahko dokumentiramo „know-how“ podjetja oziroma postavimo centralno „bazo znanja“ podjetja. Ta profil je lahko hrbtenica podjetniškega portala.

CRM & SRM (Customer & Supplier Relationship Management – upravljanje odnosov s strankami in dobavitelji)

Učinkovito vodenje poslovnih sledi, priložnosti, sestankov, telefonskih klicev oz. Drugih oblik komunikacije. Možno je samodejno obveščanje za stopnjevanje povpraševanja, sprožanje specifičnih metod in drugih dejanj skladno s potrebami (in pravili) podjetja. Uporabnik lahko npr. pošlje email sledilniku povpraševanj, OpenERP pa bo samodejno poskrbel za zahvalno sporočilo, usmeril povpraševanje ustrezni službi (osebi) in poskrbel da bo prihodnja korespondenca končala na pravem mestu. OpenERP vodi ključne naloge, kot so komunikacija, identifikacija, prioritizacija, dodelitev nalog, rešitve nalog in obveščanje. Možna uporaba geolokalizacije za preusmerjanje strank k ustrezni poslovni enoti. Za vodenje reklamacijskih zahtevkov obstaja „modul“, ki integrira poštni strežnik za samodejno ustvarjanje reklamacijskih zahtevkov na osnovi prejete pošte. Ker veliko ljudi že uporablja storitev Google Calendar, je poskrbljeno tudi za izvoz dogodkov iz OpenERP koledarja v Google Calendar, z uporabo Google Maps modula pa nas od lokacije partnerjev na zemljevidu loči le klik.

Ilustracija 5: Lokacije partnerjev z nameščenim Google Maps modulom (funkcionalnost ne zahteva namestitve CRM)

Human Resources (upravljanje človeških virov)

Osnovni modul omogoča upravljanje kadrovskih zadev, pogodb o zaposlitvi, hierarhija zaposlenih, upravljanje po oddelkih. Dodatni moduli razširijo upravljanje še na upravljanje prisotnosti, ocenjevanje kadrov, upravljanje preizkusnih obdobij, dopustov, zdravniških pregledov, plačilne liste (integrirano z računovodskim modulom), ocenjevanje produktivnosti, kadrovanje (sledenje procesa od razpisa delovnega mesta preko intervjujev vse do končne izbire), upravljanje usposobljenosti kadrov, urnikov, izdatkov it blagajne … Praktični primeri:

  • sledenje certificiranja delovne sile in upravljanja izobraževanj osebja (kontrola veljavnosti certifikatov, napotitev na obnavljanje certifikata, …)
  • kontrola prisotnosti in delovnega časa preko magnetnih kartic
  • upravljanje delovnih ur razporejenih po proizvodnih procesih, naročnikih, pogodbah – interna analiza proizvodnih procesov glede na posamezno naročilo – elektronski delovni nalogi (integracija HR, Analytic accounting, MRP, Stock)

Stock (upravljanje skladišča in materialno knjigovodstvo)

Prav kakor v računovodstvu OpenERP upravlja vse glavne operacije z dvostransko primerjavo, kot npr. prejem s strani dobaviteljev, dostava kupcem, dobiček in izguba skladišča, poraba surovin. Premiki blaga iz skladišča se vedno vršijo iz ene lokacije na drugo, zato za potrebe dvostranske primerjave aplikacija pozna različne tipe lokacij:

  • fizične skladiščne lokacije (skladišča – hierarhična)
  • partnerjeve lokacije (skladišča dobavitelja ali kupca – premik iz skladišča dobavitelja v naše fizično skladišče pomeni prejem blaga, premik iz fizičnega v skladišče kupca pa izdajo blaga; tako navadno skladišča dobavitelja prikazujejo negativno količino, skladišča kupca pa pozitivno količino)
  • virtualne „kontra-lokacije“, kot npr. proizvodnja in inventar (v proizvodnji se porabijo surovine in ustvarijo proizvodi; inventar je druga stran dvostranske primerjave za naše skladišče in prikazuje t.i. višek ali manko)

MRP (Manufacturing Resource Planning – upravljanje proizvodnih virov)

Upravljanje proizvodnih procesov – rezultati proizvodnje so: zmanjšanje količine surovine v skladišču, zvečanje količine proizvoda v skladišču, analitični strošek proizvodnega procesa, dodana knjigovodska vrednost skladišča. Proizvodne sestavnice (seznam surovin, ki se porabijo za določen proizvod) so lahko eno ali več stopenjske (proizvod sestavljen iz več polizdelkov, vsak polizdelek pa ima svojo sestavnico). Proizvodne procese lahko damo tudi v podizvajanje ali pa planiramo izvajanje procesov v različnih obratih (vključno s potrebnimi premiki polizdelkov, surovin ter ustrezno spremno dokumentacijo).

Projektni management

Vodenje večstopenjskih projektov, upravljanje nalog na projektih, upravljanje prioritet, dodeljevanje nalog (in upravljanje kooperantov in/ali podizvajalcev), planiranje (fazno, po nalogah, časovno, dolgoročno, kratkoročno …). Vse skupaj integrirano z analitičnimi konti, knjigovodstvom, skladišči, celotnim ERP, produciranje Gantt diagramov ali drugih poročil

Upravljanje dostopa

Upravljanje pristojnosti in privilegijev uporabnikov za različne procese. Določanje vidnih polj za posamezne uporabnike ali skupine uporabnikov, določanje pooblastil (npr. kdo lahko potrdi naročilo, kdo lahko potrdi plačilo, …).

Drugo

Upravljanje prodaje, nabave, marketinga, produktov (vključno katalogov), knjigovodstva, računovodstva, POS terminali, sistemi upravljanja, …

Poslovna raba odprte kode v svetu in pri nas

Glede odprte kode je splošno prisotna napačna razlaga, da je odprta koda brezplačna rešitev brez podpore. Odprta koda (v primeru programske opreme) pomeni le, da ima stranka dostop do izvorne kode izdelka, ki ga je kupila, kar ji omogoči strateško in razvojno možnost, da z izdelkom razpolaga in ga lahko nadaljnje razvija v lastni režiji skladno s svojimi lastnimi potrebami in željami. Če se vrnemo k OpenERP, govorimo o odprtokodnem poslovnem modelu. Skupnost razvijalcev razvoj upravlja preko Launchpad z uporabo Bazaar versioning system, družba OpenERP po obdrži avtorske pravice in določa, kaj bo sprejeto v osnovno programsko kodo in v katero smer naj gre razvoj. OpenERP skupnost je organizirana na forumih, IRC kanalih ter straneh, kjer so programski moduli skupnosti dosegljivi. OpenERP je komercialna odprta koda, obstaja pa tudi vzporedni „fork“ OpenERP z imenom Tryton (programje razvito na osnovi kode OpenERP s strani skupnosti), ki je klasična odprta koda. Sama skupnost je zelo dobro razvita v večini evropskih držav (Francija, Španija, Italija, Nemčija, Velika Britanija, …), a pri nas žal, vsaj v organizirani obliki, ne obstaja. Ker celoten poslovni model OpenERP narekuje, da partnerji (razvijalci, implementatorji) ustvarjajo trg posledično tudi tega v Sloveniji trenutno še ni (vsaj glede same lokalizacije, t.j. npr. kontni plan po slovenskem računovodskem standardu ipd.), kar pa ne pomeni, da sam produkt ni uporaben za slovenska podjetja že v obstoječi obliki, saj je npr. kontni plan razmeroma enostavno prilagoditi slovenskim računovodskim standardom glede na to, da generični plan (ki je startna osnova kontnih planov v OpenERP za države, ki niso že zajete) že v osnovi sledi evropskim računovodskim standardom. V tujini so pripadniki skupnosti navadno organizirani v združenja (podobna zbornicam) ali konzorcije, v njih sodelujejo zelo različni profili: razvijalci, programerji, uporabniki (npr. nekaj računovodskih servisov – dober vir informacij razvijalcem za prilagajanje aktualni zakonodaji), ki niso nujno partnerji v OpenERP poslovnem modelu, so pa definitivno partnerji skupnosti (primer skupnost v Italiji in Španiji). V kolikor se v neki organizaciji (podjetju, družbi, ustanovi) odločimo za implementacijo informacijskega sistema osnovanega na odprti kodi, pomeni da vlagamo v svoja sredstva (in vrednost le-teh) za razliko od najema pri lastniškem licenčnem modelu. Ker imamo dostop do izvorne kode, držimo v svojih rokah tako škarje kot platno za bodoči razvoj svojega informacijskega sistema in nismo vezani na točno določenega dobavitelja. Poznamo primere, ko je ponudnik-dobavitelj nekega sistema propadel ali opustil dejavnost, kar je uporabnika pustilo brez podpore za informacijski sistem, istočasno pa tudi brez možnosti, da bi podporo iskal drugje ali pa sistem vzdrževal z lastnimi kadri, saj ni imel dostopa do izvorne kode (predvsem pa navadno tudi nobene dokumentacije za sam IS). Zato lahko predvidevamo, da iz strateškega in dolgoročnega vidika, odprta koda predstavlja samozadostnost; samozadostnost pa je osnova za vsak strateški razvoj.

Gradbeni material ob gradnji lastnega informacijskega sistema

OpenERP nam nudi platformo na osnovi katere si lahko zgradimo ERP po meri, hkrati pa le-ta ostane fleksibilen in nadgradljiv, kar mu omogoča prilagajanje našim poslovnim procesom tudi v primerih, ko se le-ti spreminjajo in prilagajajo trenutnim potrebam na trgu. Je sistem ki diha, raste in se razvija skupaj z njegovim uporabnikom. Najlažje si ga lahko predstavljamo kot kepo plastelina – oblikujemo jo po svojih željah in vzgibih in ji po potrebi dodajamo material ali spreminjamo obliko. Sama implementacija je lahko interna, z lastnim IT osebjem in infrastrukturo, obstaja pa tudi veliko število ponudnikov tovrstnih storitev znotraj in izven EU. Na vsak način je ena izmed glavnih prednosti ravno svoboda. Nismo vezani na licence in lahko izbiramo vzdrževalce in implementatorje po želji, po načelu iskanja izvajalca. OpenERP je platforma (osnovni material), izvajalce (projektante, izvajalce del, vzdrževalce, …) pa lahko izbiramo in/ali menjamo, v kolikor nismo z njimi zadovoljni ali pa nameravamo projekt sprejeti v lastno režijo po določeni fazi. Tudi iz stališča infrastrukture same je izbira na nas: lahko gostujemo OpenERP strežnik na lastnih strežnikih, fizičnih ali virtualnih, v oblaku ali direktnih, nikakršne ovire pa ni tudi pri prenosu baze iz enega strežnika na drugi (pri kolikor toliko kompetentnem osebju).